diff --git a/CHANGELOG-WIP.md b/CHANGELOG-WIP.md
index eb7246d73b2..560cc8dfdc5 100644
--- a/CHANGELOG-WIP.md
+++ b/CHANGELOG-WIP.md
@@ -4,6 +4,7 @@
 - Element index checkboxes no longer have a lag when deselected, except within element selection modals. ([#14896](https://github.com/craftcms/cms/issues/14896))
 - Improved mobile styling. ([#14910](https://github.com/craftcms/cms/pull/14910))
 - Improved the look of slideouts.
+- Table views within element index pages are no longer scrolled directly. ([#14927](https://github.com/craftcms/cms/pull/14927))
 
 ### Extensibility
 - Added the `waitForDoubleClicks` setting to `Garnish.Select`, `Craft.BaseElementIndex`, and `Craft.BaseElementIndexView`.
diff --git a/src/web/assets/cp/dist/cp.js b/src/web/assets/cp/dist/cp.js
index c2246be99b7..514acb070dc 100644
--- a/src/web/assets/cp/dist/cp.js
+++ b/src/web/assets/cp/dist/cp.js
@@ -1,3 +1,3 @@
 /*! For license information please see cp.js.LICENSE.txt */
-(function(){var __webpack_modules__={463:function(){Craft.Accordion=Garnish.Base.extend({$trigger:null,targetSelector:null,_$target:null,init:function(t){var e=this;this.$trigger=$(t),this.$trigger.data("accordion")&&(console.warn("Double-instantiating an accordion trigger on an element"),this.$trigger.data("accordion").destroy()),this.$trigger.data("accordion",this),this.targetSelector=this.$trigger.attr("aria-controls")?"#".concat(this.$trigger.attr("aria-controls")):null,this.targetSelector&&(this._$target=$(this.targetSelector)),this.addListener(this.$trigger,"click","onTriggerClick"),this.addListener(this.$trigger,"keypress",(function(t){var n=t.keyCode;n!==Garnish.SPACE_KEY&&n!==Garnish.RETURN_KEY||(t.preventDefault(),e.onTriggerClick())}))},onTriggerClick:function(){"true"===this.$trigger.attr("aria-expanded")?this.hideTarget(this._$target):this.showTarget(this._$target)},showTarget:function(t){var e=this;if(t&&t.length){this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),this.$trigger.removeClass("collapsed").addClass("expanded").attr("aria-expanded","true");for(var n=0;n<t.length;n++)!function(t){"SPAN"!==t.prop("nodeName")&&(t.height("auto"),e.showTarget._targetHeight=t.height(),t.css({height:e.showTarget._currentHeight,overflow:"hidden"}),t.velocity("stop"),t.velocity({height:e.showTarget._targetHeight},Garnish.getUserPreferredAnimationDuration("fast"),(function(){t.css({height:"",overflow:""})})))}(t.eq(n));delete this.showTarget._targetHeight,delete this.showTarget._currentHeight,Garnish.$win.trigger("resize")}},hideTarget:function(t){if(t&&t.length){this.$trigger.removeClass("expanded").addClass("collapsed").attr("aria-expanded","false");for(var e=0;e<t.length;e++)!function(t){t.hasClass("hidden")||("SPAN"===t.prop("nodeName")?t.addClass("hidden"):(t.css("overflow","hidden"),t.velocity("stop"),t.velocity({height:0},Garnish.getUserPreferredAnimationDuration("fast"),(function(){t.addClass("hidden")}))))}(t.eq(e))}},destroy:function(){this.$trigger.removeData("accordion"),this.base()}})},7452:function(){Craft.AdminTable=Garnish.Base.extend({settings:null,totalItems:null,sorter:null,$noItems:null,$table:null,$tbody:null,$deleteBtns:null,init:function(t){var e=this;this.setSettings(t,Craft.AdminTable.defaults),this.settings.allowDeleteAll||(this.settings.minItems=1),this.$noItems=$(this.settings.noItemsSelector),this.$table=$(this.settings.tableSelector),this.$tbody=this.$table.children("tbody"),this.totalItems=this.$tbody.children().length,this.settings.sortable&&(this.sorter=new Craft.DataTableSorter(this.$table,{onSortChange:this.reorderItems.bind(this)})),this.$deleteBtns=this.$table.find(".delete:not(.disabled)"),this.addListener(this.$deleteBtns,"click","handleDeleteBtnClick"),this.addListener(this.$deleteBtns,"keydown",(function(t){t.keyCode!==Garnish.SPACE_KEY&&t.keyCode!==Garnish.RETURN_KEY||(t.preventDefault(),e.handleDeleteBtnClick(t))})),this.updateUI()},addRow:function(t){if(!(this.settings.maxItems&&this.totalItems>=this.settings.maxItems)){var e=$(t).appendTo(this.$tbody),n=e.find(".delete");this.settings.sortable&&this.sorter.addItems(e),this.$deleteBtns=this.$deleteBtns.add(n),this.addListener(n,"click","handleDeleteBtnClick"),this.totalItems++,this.updateUI()}},reorderItems:function(){var t=this;if(this.settings.sortable){for(var e=[],n=0;n<this.sorter.$items.length;n++){var i=$(this.sorter.$items[n]).attr(this.settings.idAttribute);e.push(i)}var r={ids:JSON.stringify(e)};Craft.sendActionRequest("POST",this.settings.reorderAction,{data:r}).then((function(n){t.onReorderItems(e),Craft.cp.displaySuccess(Craft.t("app",t.settings.reorderSuccessMessage))})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app",t.settings.reorderFailMessage))}))}},handleDeleteBtnClick:function(t){if(!(this.settings.minItems&&this.totalItems<=this.settings.minItems)){var e=$(t.target).closest("tr");this.confirmDeleteItem(e)&&this.deleteItem(e)}},confirmDeleteItem:function(t){if(!this.settings.confirmDeleteMessage)return!0;var e=this.getItemName(t);return confirm(Craft.t("app",this.settings.confirmDeleteMessage,{name:e}))},deleteItem:function(t){var e=this,n={id:this.getItemId(t)};Craft.sendActionRequest("POST",this.settings.deleteAction,{data:n}).then((function(n){return e.handleDeleteItemSuccess(n.data,t)})).catch((function(n){var i=n.response;return e.handleDeleteItemFailure(i.data,t)}))},handleDeleteItemFailure:function(t,e){this.getItemId(e);var n=this.getItemName(e);Craft.cp.displayError(Craft.t("app",this.settings.deleteFailMessage,{name:n}))},handleDeleteItemSuccess:function(t,e){var n=this.getItemId(e),i=this.getItemName(e);this.sorter&&this.sorter.removeItems(e),e.remove(),this.totalItems--,this.updateUI(),this.onDeleteItem(n),this.settings.deleteSuccessMessage&&Craft.cp.displaySuccess(Craft.t("app",this.settings.deleteSuccessMessage,{name:i}))},onReorderItems:function(t){this.settings.onReorderItems(t)},onDeleteItem:function(t){this.settings.onDeleteItem(t)},getItemId:function(t){return t.attr(this.settings.idAttribute)},getItemName:function(t){return Craft.escapeHtml(t.attr(this.settings.nameAttribute))},updateUI:function(){if(0===this.totalItems?(this.$table.hide(),this.$noItems.removeClass("hidden")):(this.$table.show(),this.$noItems.addClass("hidden")),this.settings.sortable){var t=this.$table.find(".move");1===this.totalItems?t.addClass("disabled"):t.removeClass("disabled")}this.settings.minItems&&this.totalItems<=this.settings.minItems?this.$deleteBtns.addClass("disabled"):this.$deleteBtns.removeClass("disabled"),this.settings.newItemBtnSelector&&(this.settings.maxItems&&this.totalItems>=this.settings.maxItems?$(this.settings.newItemBtnSelector).addClass("hidden"):$(this.settings.newItemBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noItemsSelector:null,newItemBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minItems:0,maxItems:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("app","New order saved."),reorderFailMessage:Craft.t("app","Couldn’t save new order."),confirmDeleteMessage:Craft.t("app","Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("app","“{name}” deleted."),deleteFailMessage:Craft.t("app","Couldn’t delete “{name}”."),onReorderItems:$.noop,onDeleteItem:$.noop}})},6872:function(){Craft.AssetImageEditor=Garnish.Modal.extend({$body:null,$footer:null,$imageTools:null,$buttons:null,$cancelBtn:null,$replaceBtn:null,$saveBtn:null,$focalPointBtn:null,$editorContainer:null,$straighten:null,$croppingCanvas:null,$spinner:null,$constraintContainer:null,$constraintRadioInputs:null,$customConstraints:null,canvas:null,image:null,viewport:null,focalPoint:null,grid:null,croppingCanvas:null,clipper:null,croppingRectangle:null,cropperHandles:null,cropperGrid:null,croppingShade:null,imageStraightenAngle:0,viewportRotation:0,originalWidth:0,originalHeight:0,imageVerticeCoords:null,zoomRatio:1,animationInProgress:!1,currentView:"",assetId:null,cacheBust:null,draggingCropper:!1,scalingCropper:!1,draggingFocal:!1,previousMouseX:0,previousMouseY:0,shiftKeyHeld:!1,editorHeight:0,editorWidth:0,cropperState:!1,scaleFactor:1,flipData:{},focalPointState:!1,maxImageSize:null,lastLoadedDimensions:null,imageIsLoading:!1,mouseMoveEvent:null,croppingConstraint:!1,constraintOrientation:"landscape",showingCustomConstraint:!1,saving:!1,renderImage:null,renderCropper:null,_queue:null,init:function(t,e){var n=this;this._queue=new Craft.Queue,this.cacheBust=Date.now(),this.setSettings(e,Craft.AssetImageEditor.defaults),null===this.settings.allowDegreeFractions&&(this.settings.allowDegreeFractions=Craft.isImagick),Garnish.prefersReducedMotion()&&(this.settings.animationDuration=1),this.assetId=t,this.flipData={x:0,y:0},this.$container=$('<form class="modal fitted imageeditor"></form>').appendTo(Garnish.$bod),this.$body=$('<div class="body"></div>').appendTo(this.$container),this.$footer=$('<div class="footer"/>').appendTo(this.$container),this.base(this.$container,this.settings),this.$buttons=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn cancel",text:Craft.t("app","Cancel")}).appendTo(this.$buttons),this.settings.allowSavingAsNew&&(this.$saveBtn=Craft.ui.createButton({class:"save copy",label:Craft.t("app","Save as a new asset"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$saveBtn,"activate",this.saveImage)),this.$replaceBtn=Craft.ui.createSubmitButton({class:"save replace",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$replaceBtn,"activate",this.saveImage),this.addListener(this.$cancelBtn,"activate",this.hide),this.removeListener(this.$shade,"click"),this.maxImageSize=this.getMaxImageSize(),Craft.sendActionRequest("POST","assets/image-editor",{data:{assetId:t}}).then((function(t){return n.loadEditor(t.data)}))},getMaxImageSize:function(){var t=Garnish.$doc.get(0).documentElement.clientWidth,e=Garnish.$doc.get(0).documentElement.clientHeight;return Math.max(e,t)*(window.devicePixelRatio>1?2:1)},loadEditor:function(t){var e=this;t.html||Craft.cp.displayError(Craft.t("app","Could not load the image editor.")),this.$body.html(t.html),this.$tabs=$(".tabs li",this.$body),this.$viewsContainer=$(".views",this.$body),this.$views=$("> div",this.$viewsContainer),this.$imageTools=$(".image-container .image-tools",this.$body),this.$editorContainer=$(".image-container .image",this.$body),this.$constraintContainer=$(".constraint-group",this.$body),this.$constraintRadioInputs=$('[name="constraint"]',this.$constraintContainer),this.$focalPointBtn=$(".focal-point",this.$body),this.editorHeight=this.$editorContainer.innerHeight(),this.editorWidth=this.$editorContainer.innerWidth(),this._showSpinner(),this.updateSizeAndPosition(),$customConstraintWrapper=this.$constraintRadioInputs.filter('[value="custom"]').parent(),this.$customConstraints=$("<div/>",{class:"constraint custom hidden","data-constraint":"custom"}).append($("<input/>",{type:"text",class:"custom-constraint-w",size:3,value:1,"aria-label":Craft.t("app","Width unit")})).append($("<span/>",{class:"custom-constraint-spacer",text:"x","aria-hidden":"true"})).append($("<input/>",{type:"text",class:"custom-constraint-h",size:3,value:1,"aria-label":Craft.t("app","Height unit")})).appendTo($customConstraintWrapper),this.$constraintRadioInputs.filter((function(){var t=$(this).val();return/^\d*\.\d+$/.test(t)})).addClass("flip"),this.canvas=new fabric.StaticCanvas("image-canvas"),this.$croppingCanvas=$("#cropping-canvas",this.$editorContainer),this.$croppingCanvas.width(this.editorWidth),this.$croppingCanvas.height(this.editorHeight),this.canvas.enableRetinaScaling=!0,this.renderImage=function(){Garnish.requestAnimationFrame(e.canvas.renderAll.bind(e.canvas))};var n=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});fabric.Image.fromURL(n,(function(n){e.image=n,e.image.set({originX:"center",originY:"center",left:e.editorWidth/2,top:e.editorHeight/2}),e.canvas.add(e.image),e.originalHeight=e.image.getHeight(),e.originalWidth=e.image.getWidth(),e.zoomRatio=1,e.lastLoadedDimensions=e.getScaledImageDimensions(),e._setFittedImageVerticeCoordinates(),e._repositionEditorElements();var i={imageDimensions:e.getScaledImageDimensions(),offsetX:0,offsetY:0},r=!1;if(t.focalPoint){var a=t.focalPoint,s=i.imageDimensions.width*a.x,o=i.imageDimensions.height*a.y;i.offsetX=s-i.imageDimensions.width/2,i.offsetY=o-i.imageDimensions.height/2,r=!0}e.storeFocalPointState(i),r&&e._createFocalPoint(),e._createViewport(),e.storeCropperState(),e._addControlListeners(),e.addListener(e.$croppingCanvas,"mousemove,touchmove",e._handleMouseMove),e.addListener(e.$croppingCanvas,"mousedown,touchstart",e._handleMouseDown),e.addListener(e.$croppingCanvas,"mouseup,touchend",e._handleMouseUp),e.addListener(e.$croppingCanvas,"mouseout,touchcancel",e._handleMouseOut),e._hideSpinner(),e.renderImage(),e.$tabs.first().trigger("click")}))},_reloadImage:function(){var t=this;if(!this.imageIsLoading){this.imageIsLoading=!0,this.maxImageSize=this.getMaxImageSize();var e=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});this.image.setSrc(e,(function(e){t.originalHeight=e.getHeight(),t.originalWidth=e.getWidth(),t.lastLoadedDimensions={width:t.originalHeight,height:t.originalWidth},t.updateSizeAndPosition(),t.renderImage(),t.imageIsLoading=!1}))}},updateSizeAndPosition:function(){if(this.$container){var t=window.innerWidth,e=window.innerHeight;this.$container.css({width:t,"min-width":t,left:0,height:e,"min-height":e,top:0}),this.$body.css({height:e-(this.$footer.outerHeight()-1)}),t<e?this.$container.addClass("vertical"):this.$container.removeClass("vertical"),this.$editorContainer&&this.image&&this._repositionEditorElements()}},_repositionEditorElements:function(){var t={width:this.editorWidth,height:this.editorHeight};this.editorHeight=this.$editorContainer.innerHeight(),this.editorWidth=this.$editorContainer.innerWidth(),this.canvas.setDimensions({width:this.editorWidth,height:this.editorHeight});var e=this.getScaledImageDimensions();if("crop"===this.currentView){this.zoomRatio=this.getZoomToFitRatio(this.getScaledImageDimensions());var n=this._getBoundingRectangle(this.imageVerticeCoords);this._setFittedImageVerticeCoordinates(),this._repositionCropper(n)}else this.zoomRatio=this.getZoomToCoverRatio(this.getScaledImageDimensions())*this.scaleFactor;this._repositionImage(t),this._repositionViewport(),this._repositionFocalPoint(t),this._zoomImage(),this.renderImage(),(e.width/this.lastLoadedDimensions.width>1.5||e.height/this.lastLoadedDimensions.height>1.5)&&this._reloadImage()},_repositionImage:function(t){this.image.set({left:this.image.left-(t.width-this.editorWidth)/2,top:this.image.top-(t.height-this.editorHeight)/2})},_createViewport:function(){this.viewport=new fabric.Rect({width:this.image.width,height:this.image.height,fill:"rgba(127,0,0,1)",originX:"center",originY:"center",globalCompositeOperation:"destination-in",left:this.image.left,top:this.image.top}),this.canvas.add(this.viewport),this.renderImage()},_createFocalPoint:function(){var t=this.focalPointState,e=this.getScaledImageDimensions().width/t.imageDimensions.width,n=t.offsetX*e*this.zoomRatio*this.scaleFactor,i=t.offsetY*e*this.zoomRatio*this.scaleFactor;n+=this.image.left,i+=this.image.top;var r=0,a=0;this.viewport&&0===t.offsetX&&0===t.offsetY&&("crop"!==this.currentView?(r=this.viewport.left-this.image.left,a=this.viewport.top-this.image.top):(r=this.clipper.left-this.image.left,a=this.clipper.top-this.image.top),n+=r,i+=a,t.offsetX+=r/(e*this.zoomRatio*this.scaleFactor),t.offsetY+=a/(e*this.zoomRatio*this.scaleFactor)),this.focalPoint=new fabric.Group([new fabric.Circle({radius:8,fill:"rgba(0,0,0,0.5)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"}),new fabric.Circle({radius:1,fill:"rgba(255,255,255,0)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"})],{originX:"center",originY:"center",left:n,top:i}),this.storeFocalPointState(t),this.canvas.add(this.focalPoint)},toggleFocalPoint:function(){this.focalPoint?(this.canvas.remove(this.focalPoint),this.focalPoint=null,this.$focalPointBtn.attr("aria-pressed","false")):(this._createFocalPoint(),this.$focalPointBtn.attr("aria-pressed","true")),this.renderImage()},_repositionViewport:function(){if(this.viewport){var t={left:this.editorWidth/2,top:this.editorHeight/2};if("crop"===this.currentView)t.width=this.editorWidth,t.height=this.editorHeight;else if(this.cropperState){var e=this.cropperState,n=this.getScaledImageDimensions().width/e.imageDimensions.width;t.width=e.width*n*this.zoomRatio,t.height=e.height*n*this.zoomRatio,this.image.set({left:this.editorWidth/2-e.offsetX*n,top:this.editorHeight/2-e.offsetY*n})}else $.extend(t,this.getScaledImageDimensions());this.viewport.set(t)}},_repositionFocalPoint:function(t){if(this.focalPoint){var e=this.focalPoint.left-this.editorWidth/2,n=this.focalPoint.top-this.editorHeight/2,i=this.image.width,r=this.getScaledImageDimensions().width*this.zoomRatio/i/this.scaleFactor;e-=(t.width-this.editorWidth)/2,n-=(t.height-this.editorHeight)/2,e*=r,n*=r,this.focalPoint.set({left:this.editorWidth/2+e,top:this.editorHeight/2+n})}},hasOrientationChanged:function(){return this.viewportRotation%180!=0},getScaledImageDimensions:function(){return void 0===this.getScaledImageDimensions._&&(this.getScaledImageDimensions._={}),this.getScaledImageDimensions._.imageRatio=this.originalHeight/this.originalWidth,this.getScaledImageDimensions._.editorRatio=this.editorHeight/this.editorWidth,this.getScaledImageDimensions._.dimensions={},this.getScaledImageDimensions._.imageRatio>this.getScaledImageDimensions._.editorRatio?(this.getScaledImageDimensions._.dimensions.height=Math.min(this.editorHeight,this.originalHeight),this.getScaledImageDimensions._.dimensions.width=Math.round(this.originalWidth/(this.originalHeight/this.getScaledImageDimensions._.dimensions.height))):(this.getScaledImageDimensions._.dimensions.width=Math.min(this.editorWidth,this.originalWidth),this.getScaledImageDimensions._.dimensions.height=Math.round(this.originalHeight*(this.getScaledImageDimensions._.dimensions.width/this.originalWidth))),this.getScaledImageDimensions._.dimensions},_zoomImage:function(){void 0===this._zoomImage._&&(this._zoomImage._={}),this._zoomImage._.imageDimensions=this.getScaledImageDimensions(),this.image.set({width:this._zoomImage._.imageDimensions.width*this.zoomRatio,height:this._zoomImage._.imageDimensions.height*this.zoomRatio})},_getPrevTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e>0?e-1:this.$tabs.length-1,this.$tabs.eq(t)},_getNextTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e<this.$tabs.length-1?e+1:0,this.$tabs.eq(t)},_getActiveTab:function(){return this.$tabs.filter('[aria-selected="true"]')},_getActiveTabIndex:function(){var t=this._getActiveTab();if(t.length)return t.index()},_addControlListeners:function(){var t=this;this.addListener(this.$tabs,"click",this._handleTabClick),this.addListener(this.$tabs,"keydown",(function(e){switch(e.keyCode){case Garnish.LEFT_KEY:case Garnish.UP_KEY:e.preventDefault();var n=t._getPrevTab();t.activateTab(n);break;case Garnish.RIGHT_KEY:case Garnish.DOWN_KEY:e.preventDefault();var i=t._getNextTab();t.activateTab(i)}})),this.addListener(this.$focalPointBtn,"click",this.toggleFocalPoint),this.addListener($(".rotate-left"),"click",(function(){this.rotateImage(-90)})),this.addListener($(".rotate-right"),"click",(function(){this.rotateImage(90)})),this.addListener($(".flip-vertical"),"click",(function(){this.flipImage("y")})),this.addListener($(".flip-horizontal"),"click",(function(){this.flipImage("x")})),this.straighteningInput=new Craft.SlideRuleInput("slide-rule",{onStart:function(){t._showGrid()},onChange:function(e){t.straighten(e)},onEnd:function(){t._hideGrid(),t._cleanupFocalPointAfterStraighten()}}),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.SHIFT_KEY&&(this.shiftKeyHeld=!0)})),this.addListener(Garnish.$doc,"keyup",(function(t){t.keyCode===Garnish.SHIFT_KEY&&(this.shiftKeyHeld=!1)})),this.addListener(this.$constraintRadioInputs,"change",this._handleConstraintChange),this.addListener($(".orientation input",this.$container),"click",this._handleOrientationClick),this.addListener($(".constraint-group .custom input",this.$container),"keyup",this._applyCustomConstraint)},_handleConstraintClick:function(t){var e=$(t.currentTarget).data("constraint"),n=$(t.currentTarget);if(n.siblings().removeClass("active"),n.addClass("active"),"custom"==e)return this._showCustomConstraint(),void this._applyCustomConstraint();this._hideCustomConstraint(),this.setCroppingConstraint(e),this.enforceCroppingConstraint()},_handleConstraintChange:function(t){var e=$(t.target).val();if("custom"==e)return this._showCustomConstraint(),void this._applyCustomConstraint();this._hideCustomConstraint(),this.setCroppingConstraint(e),this.enforceCroppingConstraint()},_handleOrientationClick:function(t){if(t.currentTarget.value!==this.constraintOrientation){this.constraintOrientation=t.currentTarget.value;for(var e=$(".flip",this.$constraintContainer),n=0;n<e.length;n++){var i=$(e[n]),r='label[for="'+i.attr("id")+'"]',a=$(r,this.$constraintContainer);i.val(1/i.val()),a.html(a.text().split(":").reverse().join(":").replace(/\s/g,""))}e.filter(":checked").trigger("change")}},_applyCustomConstraint:function(){var t=this._getCustomConstraint();t.w>0&&t.h>0&&(this.setCroppingConstraint(t.w/t.h),this.enforceCroppingConstraint())},_getCustomConstraint:function(){var t=parseFloat($(".custom-constraint-w").val()),e=parseFloat($(".custom-constraint-h").val());return{w:isNaN(t)?0:t,h:isNaN(e)?0:e}},_setCustomConstraint:function(t,e){$(".custom-constraint-w").val(parseFloat(t)),$(".custom-constraint-h").val(parseFloat(e))},_hideCustomConstraint:function(){this.showingCustomConstraint=!1,this.$customConstraints.addClass("hidden"),$(".orientation",this.$container).removeClass("hidden")},_showCustomConstraint:function(){this.showingCustomConstraint||(this.showingCustomConstraint=!0,this.$customConstraints.removeClass("hidden"),$(".orientation",this.$container).addClass("hidden"))},_handleTabClick:function(t){if(!this.animationInProgress){var e=$(t.currentTarget);this.activateTab(e)}},activateTab:function(t){var e=$(t).data("view");this.$tabs.removeClass("selected").attr({"aria-selected":"false",tabindex:"-1"}),$(t).addClass("selected").attr({"aria-selected":"true",tabindex:"0"}).trigger("focus"),this.showView(e)},showView:function(t){var e=this;this.currentView!==t&&(this.$views.addClass("hidden"),this.$views.filter('[data-view="'+t+'"]').removeClass("hidden"),"rotate"===t?this.enableSlider():this.disableSlider(),this.updateSizeAndPosition(),"crop"===this.currentView&&"crop"!==t?this._queue.push((function(){return new Promise((function(t,n){e.disableCropMode(),t()}))})):"crop"!==this.currentView&&"crop"===t&&this._queue.push((function(){return new Promise((function(t,n){e.enableCropMode(),t()}))})),this.currentView=t)},storeCropperState:function(t){void 0===this.storeCropperState._&&(this.storeCropperState._={}),t?this.cropperState=t:this.clipper?(this.storeCropperState._.zoomFactor=1/this.zoomRatio,this.cropperState={offsetX:(this.clipper.left-this.image.left)*this.storeCropperState._.zoomFactor,offsetY:(this.clipper.top-this.image.top)*this.storeCropperState._.zoomFactor,height:this.clipper.height*this.storeCropperState._.zoomFactor,width:this.clipper.width*this.storeCropperState._.zoomFactor,imageDimensions:this.getScaledImageDimensions()}):(this.storeCropperState._.dimensions=this.getScaledImageDimensions(),this.cropperState={offsetX:0,offsetY:0,height:this.storeCropperState._.dimensions.height,width:this.storeCropperState._.dimensions.width,imageDimensions:this.storeCropperState._.dimensions})},storeFocalPointState:function(t){void 0===this.storeFocalPointState._&&(this.storeFocalPointState._={}),t?this.focalPointState=t:this.focalPoint&&(this.storeFocalPointState._.zoomFactor=1/this.zoomRatio,this.focalPointState={offsetX:(this.focalPoint.left-this.image.left)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,offsetY:(this.focalPoint.top-this.image.top)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,imageDimensions:this.getScaledImageDimensions()})},rotateImage:function(t){var e=this;if(!this.animationInProgress){if(90!==t&&-90!==t)return!1;this.animationInProgress=!0,this.viewportRotation+=t,this.viewportRotation=parseInt((this.viewportRotation+360)%360,10);var n,i=this.image.angle+t,r=this.getScaledImageDimensions();n=this.hasOrientationChanged()?this.getZoomToCoverRatio({height:r.width,width:r.height}):this.getZoomToCoverRatio(r),this.zoomRatio>n&&(n=this.zoomRatio);var a={angle:90===t?"+=90":"-=90"},s={angle:i,width:r.width*n,height:r.height*n},o=1;this.scaleFactor<1?(o=1/this.scaleFactor,this.scaleFactor=1):(this.viewport.width>this.editorHeight?o=this.editorHeight/this.viewport.width:this.viewport.height>this.editorWidth&&(o=this.editorWidth/this.viewport.height),this.scaleFactor=o),o<1&&(s.width*=o,s.height*=o);var l=this.cropperState,c=l.offsetX,h=l.offsetY,u=t*(Math.PI/180),d=c*Math.cos(u)-h*Math.sin(u),f=c*Math.sin(u)+h*Math.cos(u),p=r.width/l.imageDimensions.width,g=d*p*this.zoomRatio*this.scaleFactor,m=f*p*this.zoomRatio*this.scaleFactor;s.left=this.editorWidth/2-g,s.top=this.editorHeight/2-m,l.offsetX=d,l.offsetY=f;var v=l.width;l.width=l.height,l.height=v,this.storeCropperState(l),this.focalPoint&&this.canvas.remove(this.focalPoint),this.viewport.animate(a,{duration:this.settings.animationDuration,onComplete:function(){var t=e.viewport.height*o;e.viewport.height=e.viewport.width*o,e.viewport.width=t,e.viewport.set({angle:0})}}),this.image.animate(s,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){var n=parseFloat((e.image.angle+360)%360);e.image.set({angle:n}),e.animationInProgress=!1,e.focalPoint?(e._adjustFocalPointByAngle(t),e.straighten(e.straighteningInput),e.canvas.add(e.focalPoint)):e._resetFocalPointPosition()}})}},flipImage:function(t){var e=this;if(!this.animationInProgress){this.animationInProgress=!0,this.hasOrientationChanged()&&(t="y"===t?"x":"y"),this.focalPoint?this.canvas.remove(this.focalPoint):this._resetFocalPointPosition();var n={x:this.editorWidth/2,y:this.editorHeight/2};this.straighteningInput.setValue(-this.imageStraightenAngle),this.imageStraightenAngle=-this.imageStraightenAngle;var i,r,a={angle:this.viewportRotation+this.imageStraightenAngle},s=this.cropperState,o=this.focalPointState;"y"===t&&this.hasOrientationChanged()||"y"!==t&&!this.hasOrientationChanged()?(s.offsetX=-s.offsetX,o.offsetX=-o.offsetX,r=this.image.left-n.x,a.left=n.x-r):(s.offsetY=-s.offsetY,o.offsetY=-o.offsetY,i=this.image.top-n.y,a.top=n.y-i),"y"===t?(a.scaleY=-1*this.image.scaleY,this.flipData.y=1-this.flipData.y):(a.scaleX=-1*this.image.scaleX,this.flipData.x=1-this.flipData.x),this.storeCropperState(s),this.storeFocalPointState(o),this.image.animate(a,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){e.animationInProgress=!1,e.focalPoint&&(e._adjustFocalPointByAngle(0),e.canvas.add(e.focalPoint))}})}},straighten:function(t){if(!this.animationInProgress){this.animationInProgress=!0;var e=this.image.angle;this.imageStraightenAngle=(this.settings.allowDegreeFractions?parseFloat(t.value):Math.round(parseFloat(t.value)))%360,this.image.set({angle:this.viewportRotation+this.imageStraightenAngle}),this.zoomRatio=this.getZoomToCoverRatio(this.getScaledImageDimensions())*this.scaleFactor,this._zoomImage(),this.cropperState&&this._adjustEditorElementsOnStraighten(e),this.renderImage(),this.animationInProgress=!1}},_adjustEditorElementsOnStraighten:function(t){var e,n,i,r,a,s=this.getScaledImageDimensions(),o=this.image.angle-t,l=this.cropperState,c=this.zoomRatio,h=1;do{var u=l.offsetX,d=l.offsetY,f=o*(Math.PI/180);i=u*Math.cos(f)-d*Math.sin(f),r=u*Math.sin(f)+d*Math.cos(f),e=i*c*(a=s.width/l.imageDimensions.width),n=r*c*a;var p=this.getImageVerticeCoords(c),g={width:this.viewport.width,height:this.viewport.height,left:this.editorWidth/2-this.viewport.width/2+e,top:this.editorHeight/2-this.viewport.height/2+n};c*=h=this._getZoomRatioToFitRectangle(g,p)}while(1!==h);this.image.set({left:this.editorWidth/2-e,top:this.editorHeight/2-n}),l.offsetX=i,l.offsetY=r,l.width=this.viewport.width/c/a,l.height=this.viewport.height/c/a,this.storeCropperState(l),this.zoomRatio=c,this.focalPoint?(this._adjustFocalPointByAngle(o),this._isCenterInside(this.focalPoint,this.viewport)?this.focalPoint.set({opacity:1}):this.focalPoint.set({opacity:0})):0!==o&&this._resetFocalPointPosition(),this._zoomImage()},_cleanupFocalPointAfterStraighten:function(){if(this.focalPoint&&!this._isCenterInside(this.focalPoint,this.viewport)){this.focalPoint.set({opacity:1});var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t),this.toggleFocalPoint()}},_resetFocalPointPosition:function(){var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t)},_isCenterInside:function(t,e){return t.left>e.left-e.width/2&&t.top>e.top-e.height/2&&t.left<e.left+e.width/2&&t.top<e.top+e.height/2},_adjustFocalPointByAngle:function(t){var e=t*(Math.PI/180),n=this.focalPointState,i=n.offsetX,r=n.offsetY,a=i*Math.cos(e)-r*Math.sin(e),s=i*Math.sin(e)+r*Math.cos(e),o=this.getScaledImageDimensions().width/n.imageDimensions.width,l=a*o*this.zoomRatio,c=s*o*this.zoomRatio;this.focalPoint.left=this.image.left+l,this.focalPoint.top=this.image.top+c,n.offsetX=a,n.offsetY=s,this.storeFocalPointState(n)},_getZoomRatioToFitRectangle:function(t,e){for(var n,i,r=this._getRectangleVertices(t),a=0;a<r.length&&(n=r[a],this.arePointsInsideRectangle([n],e));a++)n=!1;if(n){var s=this._getEdgeCrossed(e,n),o={x:t.left+t.width/2,y:t.top+t.height/2},l=Math.abs((s[1].y-s[0].y)*n.x-(s[1].x-s[0].x)*n.y+s[1].x*s[0].y-s[1].y*s[0].x)/Math.sqrt(Math.pow(s[1].y-s[0].y,2)+Math.pow(s[1].x-s[0].x,2)),c=Math.abs((s[1].y-s[0].y)*o.x-(s[1].x-s[0].x)*o.y+s[1].x*s[0].y-s[1].y*s[0].x)/Math.sqrt(Math.pow(s[1].y-s[0].y,2)+Math.pow(s[1].x-s[0].x,2));i=(l+c)/c}else i=1;return i},saveImage:function(t){var e=this,n=$(t.currentTarget);if(this.saving)return!1;this.saving=!0,n.addClass("loading");var i=n.hasClass("replace"),r={assetId:this.assetId,viewportRotation:this.viewportRotation,imageRotation:this.imageStraightenAngle,replace:i?1:0};if(this.cropperState){var a={};a.height=this.cropperState.height,a.width=this.cropperState.width,a.offsetX=this.cropperState.offsetX,a.offsetY=this.cropperState.offsetY,r.imageDimensions=this.cropperState.imageDimensions,r.cropData=a}else r.imageDimensions=this.getScaledImageDimensions();this.focalPoint&&(r.focalPoint=this.focalPointState),r.flipData=this.flipData,r.zoom=this.zoomRatio,Craft.sendActionRequest("POST","assets/save-image",{data:r}).then((function(t){var n=t.data;e.onSave(n),i&&Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:e.assetId}),e.hide(),Craft.cp.runQueue(),Craft.Preview.refresh()})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})).finally((function(){e.$buttons.find(".btn").removeClass("loading"),e.saving=!1}))},getZoomToCoverRatio:function(t){var e=Math.abs(this.imageStraightenAngle)*(Math.PI/180),n=Math.sin(e)*t.height+Math.cos(e)*t.width,i=Math.sin(e)*t.width+Math.cos(e)*t.height;return Math.max(n/t.width,i/t.height)},getZoomToFitRatio:function(t){var e=this._getImageBoundingBox(t),n=1;if(e.height>this.editorHeight||e.width>this.editorWidth){var i=this.editorHeight/e.height,r=this.editorWidth/e.width;n=Math.min(r,i)}return n},getCombinedZoomRatio:function(t){return this.getZoomToCoverRatio(t)/this.getZoomToFitRatio(t)},_showGrid:function(){if(!this.grid){var t,e={strokeWidth:1,stroke:"rgba(255,255,255,0.5)"},n=this.viewport.width,i=this.viewport.height,r=n/9,a=i/9,s=[new fabric.Rect({strokeWidth:2,stroke:"rgba(255,255,255,1)",originX:"center",originY:"center",width:n,height:i,left:n/2,top:i/2,fill:"rgba(255,255,255,0)"})];for(t=1;t<=8;t++)s.push(new fabric.Line([t*r,0,t*r,i],e));for(t=1;t<=8;t++)s.push(new fabric.Line([0,t*a,n,t*a],e));this.grid=new fabric.Group(s,{left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",angle:this.viewport.angle}),this.canvas.add(this.grid),this.renderImage()}},_hideGrid:function(){this.canvas.remove(this.grid),this.grid=null,this.renderImage()},onFadeOut:function(){this.destroy()},show:function(){this.base(),Garnish.$bod.addClass("no-scroll")},hide:function(){this.removeAllListeners(),this.straighteningInput.removeAllListeners(),Garnish.$bod.removeClass("no-scroll"),this.base()},onSave:function(t){this.settings.onSave(t),this.trigger("save")},enableSlider:function(){this.$imageTools.removeClass("hidden")},disableSlider:function(){this.$imageTools.addClass("hidden")},enableCropMode:function(){var t=this,e=this.getScaledImageDimensions();this.zoomRatio=this.getZoomToFitRatio(e);var n={width:this.editorWidth,height:this.editorHeight},i={width:e.width*this.zoomRatio,height:e.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2};this._editorModeTransition((function(){t._setFittedImageVerticeCoordinates();var e=t.cropperState,n=t.getScaledImageDimensions(),i=n.width/e.imageDimensions.width,r={left:t.image.left+e.offsetX*i*t.zoomRatio,top:t.image.top+e.offsetY*i*t.zoomRatio,width:e.width*i*t.zoomRatio,height:e.height*i*t.zoomRatio};t._showCropper(r),t.focalPoint&&(i=n.width/t.focalPointState.imageDimensions.width,t.focalPoint.left=t.image.left+t.focalPointState.offsetX*i*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*i*t.zoomRatio,t.canvas.add(t.focalPoint))}),i,n)},disableCropMode:function(){var t=this,e={};this._hideCropper();var n=this.getScaledImageDimensions(),i=this.getZoomToCoverRatio(n)*this.scaleFactor,r=i/this.zoomRatio;this.zoomRatio=i;var a={width:n.width*this.zoomRatio,height:n.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2},s=(this.clipper.left-this.image.left)*r,o=(this.clipper.top-this.image.top)*r;a.left=this.editorWidth/2-s,a.top=this.editorHeight/2-o,e.height=this.clipper.height*r,e.width=this.clipper.width*r,(!this.focalPoint||this.focalPoint&&!this._isCenterInside(this.focalPoint,this.clipper))&&(this.focalPoint&&this.toggleFocalPoint(),this._resetFocalPointPosition()),this._editorModeTransition((function(){if(t.focalPoint){var e=t.getScaledImageDimensions().width/t.focalPointState.imageDimensions.width;t.focalPoint.left=t.image.left+t.focalPointState.offsetX*e*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*e*t.zoomRatio,t.canvas.add(t.focalPoint)}}),a,e)},_editorModeTransition:function(t,e,n){var i=this;this._queue.pause(),this.animationInProgress||(this.animationInProgress=!0,this.focalPoint&&(this.canvas.remove(this.focalPoint),this.renderImage()),this.image.animate(e,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){t(),i.animationInProgress=!1,i.renderImage(),i._queue.resume()}}),this.viewport.animate(n,{duration:this.settings.animationDuration}))},_showSpinner:function(){this.$spinner||(this.$spinner=$('<div class="spinner big spinner-absolute"/>')),this.$spinner.appendTo(this.$container.find(".image"))},_hideSpinner:function(){this.$spinner.remove()},_showCropper:function(t){this._setupCropperLayer(t),this._redrawCropperElements(),this.renderCropper()},_hideCropper:function(){this.clipper&&(this.croppingCanvas.remove(this.clipper),this.croppingCanvas.remove(this.croppingShade),this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle),this.croppingCanvas=null,this.renderCropper=null)},_setupCropperLayer:function(t){var e=this;this.croppingCanvas=new fabric.StaticCanvas("cropping-canvas",{backgroundColor:"rgba(0,0,0,0)",hoverCursor:"default",selection:!1}),this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight}),this.renderCropper=function(){return Garnish.requestAnimationFrame(e.croppingCanvas.renderAll.bind(e.croppingCanvas))},$("#cropping-canvas",this.$editorContainer).css({position:"absolute",top:0,left:0}),this.croppingShade=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:this.editorWidth,height:this.editorHeight,fill:"rgba(0,0,0,0.7)"});var n=this.getScaledImageDimensions(),i=0===this.imageStraightenAngle?1:1.2*this.getCombinedZoomRatio(n),r=n.width/i,a=n.height/i;if(this.hasOrientationChanged()){var s=a;a=r,r=s}this.clipper=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:r,height:a,stroke:"black",fill:"rgba(128,0,0,1)",strokeWidth:0}),t&&this.clipper.set(t),this.clipper.globalCompositeOperation="destination-out",this.croppingCanvas.add(this.croppingShade),this.croppingCanvas.add(this.clipper)},_redrawCropperElements:function(){void 0===this._redrawCropperElements._&&(this._redrawCropperElements._={}),this.cropperHandles&&(this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle)),this._redrawCropperElements._.lineOptions={strokeWidth:4,stroke:"rgb(255,255,255)",fill:!1},this._redrawCropperElements._.gridOptions={strokeWidth:2,stroke:"rgba(255,255,255,0.5)"},this._redrawCropperElements._.pathGroup=[new fabric.Path("M 0,10 L 0,0 L 10,0",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width-8)+",0 L "+(this.clipper.width+4)+",0 L "+(this.clipper.width+4)+",10",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width+4)+","+(this.clipper.height-8)+" L"+(this.clipper.width+4)+","+(this.clipper.height+4)+" L "+(this.clipper.width-8)+","+(this.clipper.height+4),this._redrawCropperElements._.lineOptions),new fabric.Path("M 10,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height-8),this._redrawCropperElements._.lineOptions)],this.cropperHandles=new fabric.Group(this._redrawCropperElements._.pathGroup,{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this.croppingRectangle=new fabric.Rect({left:this.clipper.left,top:this.clipper.top,width:this.clipper.width,height:this.clipper.height,fill:"rgba(0,0,0,0)",stroke:"rgba(255,255,255,0.8)",strokeWidth:2,originX:"center",originY:"center"}),this.cropperGrid=new fabric.Group([new fabric.Line([.33*this.clipper.width,0,.33*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([.66*this.clipper.width,0,.66*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.33*this.clipper.height,this.clipper.width,.33*this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.66*this.clipper.height,this.clipper.width,.66*this.clipper.height],this._redrawCropperElements._.gridOptions)],{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this._redrawCropperElements._.cropTextTop=this.croppingRectangle.top+this.clipper.height/2+12,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0)",this._redrawCropperElements._.cropTextTop+12>this.editorHeight-2&&(this._redrawCropperElements._.cropTextTop-=24,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0.5)"),this.croppingCanvas.add(this.cropperHandles),this.croppingCanvas.add(this.cropperGrid),this.croppingCanvas.add(this.croppingRectangle)},_repositionCropper:function(t){if(this.croppingCanvas){var e=this.clipper.left-this.croppingCanvas.width/2,n=this.clipper.top-this.croppingCanvas.height/2;this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight});var i=this._getBoundingRectangle(this.imageVerticeCoords).width/t.width;this.clipper.width=Math.round(this.clipper.width*i),this.clipper.height=Math.round(this.clipper.height*i),this.clipper.left=this.editorWidth/2+e*i,this.clipper.top=this.editorHeight/2+n*i,this.croppingShade.set({width:this.editorWidth,height:this.editorHeight,left:this.editorWidth/2,top:this.editorHeight/2}),this._redrawCropperElements(),this.renderCropper()}},_getBoundingRectangle:function(t){return{width:Math.max(t.a.x,t.b.x,t.c.x,t.d.x)-Math.min(t.a.x,t.b.x,t.c.x,t.d.x),height:Math.max(t.a.y,t.b.y,t.c.y,t.d.y)-Math.min(t.a.y,t.b.y,t.c.y,t.d.y)}},_handleMouseDown:function(t){var e=this.focalPoint&&this._isMouseOver(t,this.focalPoint),n=this.croppingCanvas&&this._isMouseOver(t,this.clipper),i=this.croppingCanvas&&this._cropperHandleHitTest(t);(i||n||e)&&(this.previousMouseX=t.pageX,this.previousMouseY=t.pageY,e?this.draggingFocal=!0:i?this.scalingCropper=i:n&&(this.draggingCropper=!0))},_handleMouseMove:function(t){null!==this.mouseMoveEvent&&Garnish.requestAnimationFrame(this._handleMouseMoveInternal.bind(this)),this.mouseMoveEvent=t},_handleMouseMoveInternal:function(){null!==this.mouseMoveEvent&&(this.focalPoint&&this.draggingFocal?(this._handleFocalDrag(this.mouseMoveEvent),this.storeFocalPointState(),this.renderImage()):this.draggingCropper||this.scalingCropper?(this.draggingCropper?this._handleCropperDrag(this.mouseMoveEvent):this._handleCropperResize(this.mouseMoveEvent),this._redrawCropperElements(),this.storeCropperState(),this.renderCropper()):this._setMouseCursor(this.mouseMoveEvent),this.previousMouseX=this.mouseMoveEvent.pageX,this.previousMouseY=this.mouseMoveEvent.pageY,this.mouseMoveEvent=null)},_handleMouseUp:function(){this.draggingCropper=!1,this.scalingCropper=!1,this.draggingFocal=!1},_handleMouseOut:function(t){this._handleMouseUp(t),this.mouseMoveEvent=t,this._handleMouseMoveInternal()},_handleCropperDrag:function(t){if(void 0===this._handleCropperDrag._&&(this._handleCropperDrag._={}),this._handleCropperDrag._.deltaX=t.pageX-this.previousMouseX,this._handleCropperDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleCropperDrag._.deltaX&&0===this._handleCropperDrag._.deltaY)return!1;if(this._handleCropperDrag._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.deltaX,this._handleCropperDrag._.deltaY),!this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)){for(this._handleCropperDrag._.dxi=0,this._handleCropperDrag._.dyi=0,this._handleCropperDrag._.xStep=this._handleCropperDrag._.deltaX>0?-1:1,this._handleCropperDrag._.yStep=this._handleCropperDrag._.deltaY>0?-1:1,this._handleCropperDrag._.furthest=0,this._handleCropperDrag._.furthestDeltas={},this._handleCropperDrag._.dxi=Math.min(Math.abs(this._handleCropperDrag._.deltaX),10);this._handleCropperDrag._.dxi>=0;this._handleCropperDrag._.dxi--)for(this._handleCropperDrag._.dyi=Math.min(Math.abs(this._handleCropperDrag._.deltaY),10);this._handleCropperDrag._.dyi>=0;this._handleCropperDrag._.dyi--)this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)),this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)&&this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi>this._handleCropperDrag._.furthest&&(this._handleCropperDrag._.furthest=this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi,this._handleCropperDrag._.furthestDeltas={x:this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),y:this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)});if(0==this._handleCropperDrag._.furthest)return;this._handleCropperDrag._.deltaX=this._handleCropperDrag._.furthestDeltas.x,this._handleCropperDrag._.deltaY=this._handleCropperDrag._.furthestDeltas.y}this.clipper.set({left:this.clipper.left+this._handleCropperDrag._.deltaX,top:this.clipper.top+this._handleCropperDrag._.deltaY})},_handleFocalDrag:function(t){if(void 0===this._handleFocalDrag._&&(this._handleFocalDrag._={}),this.focalPoint){if(this._handleFocalDrag._.deltaX=t.pageX-this.previousMouseX,this._handleFocalDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleFocalDrag._.deltaX&&0===this._handleFocalDrag._.deltaY)return;if(this._handleFocalDrag._.newX=this.focalPoint.left+this._handleFocalDrag._.deltaX,this._handleFocalDrag._.newY=this.focalPoint.top+this._handleFocalDrag._.deltaY,"crop"===this.currentView){if(!this.arePointsInsideRectangle([{x:this._handleFocalDrag._.newX,y:this._handleFocalDrag._.newY}],this.imageVerticeCoords))return}else if(!(this.viewport.left-this.viewport.width/2-this._handleFocalDrag._.newX<0&&this.viewport.left+this.viewport.width/2-this._handleFocalDrag._.newX>0&&this.viewport.top-this.viewport.height/2-this._handleFocalDrag._.newY<0&&this.viewport.top+this.viewport.height/2-this._handleFocalDrag._.newY>0))return;this.focalPoint.set({left:this.focalPoint.left+this._handleFocalDrag._.deltaX,top:this.focalPoint.top+this._handleFocalDrag._.deltaY})}},setCroppingConstraint:function(t){switch(this.updateSizeAndPosition(),t){case"none":this.croppingConstraint=!1;break;case"original":this.croppingConstraint=this.originalWidth/this.originalHeight;break;case"current":this.croppingConstraint=this.clipper.width/this.clipper.height;break;case"custom":break;default:this.croppingConstraint=parseFloat(t)}},enforceCroppingConstraint:function(){var t=this;void 0===this.enforceCroppingConstraint._&&(this.enforceCroppingConstraint._={}),!this.animationInProgress&&this.croppingConstraint&&(this.animationInProgress=!0,this.enforceCroppingConstraint._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this.clipper.width>this.clipper.height*this.croppingConstraint?(this.enforceCroppingConstraint._.previousHeight=this.enforceCroppingConstraint._.rectangle.height,this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.top-=(this.enforceCroppingConstraint._.rectangle.height-this.enforceCroppingConstraint._.previousHeight)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.height=this.enforceCroppingConstraint._.rectangle.width/this.croppingConstraint)):(this.enforceCroppingConstraint._.previousWidth=this.enforceCroppingConstraint._.rectangle.width,this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.left-=(this.enforceCroppingConstraint._.rectangle.width-this.enforceCroppingConstraint._.previousWidth)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.width=this.enforceCroppingConstraint._.rectangle.height*this.croppingConstraint)),this.enforceCroppingConstraint._.properties={height:this.enforceCroppingConstraint._.rectangle.height,width:this.enforceCroppingConstraint._.rectangle.width},this.clipper.animate(this.enforceCroppingConstraint._.properties,{onChange:function(){t._redrawCropperElements(),t.croppingCanvas.renderAll()},duration:this.settings.animationDuration,onComplete:function(){t._redrawCropperElements(),t.animationInProgress=!1,t.renderCropper(),t.storeCropperState()}}))},_handleCropperResize:function(t){void 0===this._handleCropperResize._&&(this._handleCropperResize._={}),this._handleCropperResize._.deltaX=t.pageX-this.previousMouseX,this._handleCropperResize._.deltaY=t.pageY-this.previousMouseY,"b"!==this.scalingCropper&&"t"!==this.scalingCropper||(this._handleCropperResize._.deltaX=0),"l"!==this.scalingCropper&&"r"!==this.scalingCropper||(this._handleCropperResize._.deltaY=0),0===this._handleCropperResize._.deltaX&&0===this._handleCropperResize._.deltaY||(this._handleCropperResize._.startingRectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperResize._.rectangle=this._calculateNewCropperSizeByDeltas(this._handleCropperResize._.startingRectangle,this._handleCropperResize._.deltaX,this._handleCropperResize._.deltaY,this.scalingCropper),this._handleCropperResize._.rectangle.height<30||this._handleCropperResize._.rectangle.width<30||this.arePointsInsideRectangle(this._getRectangleVertices(this._handleCropperResize._.rectangle),this.imageVerticeCoords)&&(this.clipper.set({top:this._handleCropperResize._.rectangle.top+this._handleCropperResize._.rectangle.height/2,left:this._handleCropperResize._.rectangle.left+this._handleCropperResize._.rectangle.width/2,width:this._handleCropperResize._.rectangle.width,height:this._handleCropperResize._.rectangle.height}),this._redrawCropperElements()))},_calculateNewCropperSizeByDeltas:function(t,e,n,i){if(void 0===this._calculateNewCropperSizeByDeltas._&&(this._calculateNewCropperSizeByDeltas._={}),this._calculateNewCropperSizeByDeltas._.topDelta=0,this._calculateNewCropperSizeByDeltas._.leftDelta=0,this._calculateNewCropperSizeByDeltas._.rectangle=t,this._calculateNewCropperSizeByDeltas._.deltaX=e,this._calculateNewCropperSizeByDeltas._.deltaY=n,this.croppingConstraint){switch(this._calculateNewCropperSizeByDeltas._.change=0,i){case"t":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaY;break;case"b":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"r":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"l":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"br":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX}switch(this.croppingConstraint>1?(this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this.croppingConstraint):(this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this.croppingConstraint),this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX,i){case"t":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"b":this._calculateNewCropperSizeByDeltas._.rectangle.left+=-this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"r":this._calculateNewCropperSizeByDeltas._.rectangle.top+=-this._calculateNewCropperSizeByDeltas._.deltaY/2;break;case"l":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY/2,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"tl":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX}}else!this.shiftKeyHeld||"tl"!==i&&"tr"!==i&&"bl"!==i&&"br"!==i||(this._calculateNewCropperSizeByDeltas._.ratio,Math.abs(e)>Math.abs(n)?(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaY*="tr"===i||"bl"===i?-1:1):(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaX*="tr"===i||"bl"===i?-1:1)),i.match(/t/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.top+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.height-=this._calculateNewCropperSizeByDeltas._.deltaY),i.match(/b/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY),i.match(/r/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX),i.match(/l/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.left+=this._calculateNewCropperSizeByDeltas._.deltaX,this._calculateNewCropperSizeByDeltas._.rectangle.width-=this._calculateNewCropperSizeByDeltas._.deltaX);return this._calculateNewCropperSizeByDeltas._.rectangle.top=this._calculateNewCropperSizeByDeltas._.rectangle.top,this._calculateNewCropperSizeByDeltas._.rectangle.left=this._calculateNewCropperSizeByDeltas._.rectangle.left,this._calculateNewCropperSizeByDeltas._.rectangle.width=this._calculateNewCropperSizeByDeltas._.rectangle.width,this._calculateNewCropperSizeByDeltas._.rectangle.height=this._calculateNewCropperSizeByDeltas._.rectangle.height,this._calculateNewCropperSizeByDeltas._.rectangle},_setMouseCursor:function(t){void 0===this._setMouseCursor._&&(this._setMouseCursor._={}),Garnish.isMobileBrowser(!0)||(this._setMouseCursor._.cursor="default",this._setMouseCursor._.handle=this.croppingCanvas&&this._cropperHandleHitTest(t),this.focalPoint&&this._isMouseOver(t,this.focalPoint)?this._setMouseCursor._.cursor="pointer":this._setMouseCursor._.handle?"t"===this._setMouseCursor._.handle||"b"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ns-resize":"l"===this._setMouseCursor._.handle||"r"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ew-resize":"tl"===this._setMouseCursor._.handle||"br"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="nwse-resize":"bl"!==this._setMouseCursor._.handle&&"tr"!==this._setMouseCursor._.handle||(this._setMouseCursor._.cursor="nesw-resize"):this.croppingCanvas&&this._isMouseOver(t,this.clipper)&&(this._setMouseCursor._.cursor="move"),$(".body").css("cursor",this._setMouseCursor._.cursor))},_cropperHandleHitTest:function(t){if(void 0===this._cropperHandleHitTest._&&(this._cropperHandleHitTest._={}),this._cropperHandleHitTest._.parentOffset=this.$croppingCanvas.offset(),this._cropperHandleHitTest._.mouseX=t.pageX-this._cropperHandleHitTest._.parentOffset.left,this._cropperHandleHitTest._.mouseY=t.pageY-this._cropperHandleHitTest._.parentOffset.top,this._cropperHandleHitTest._.lb=this.clipper.left-this.clipper.width/2,this._cropperHandleHitTest._.rb=this._cropperHandleHitTest._.lb+this.clipper.width,this._cropperHandleHitTest._.tb=this.clipper.top-this.clipper.height/2,this._cropperHandleHitTest._.bb=this._cropperHandleHitTest._.tb+this.clipper.height,this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb-3){if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-3)return"tl";if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+3&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-10)return"bl"}if(this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.rb-13&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb+3){if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-3)return"tr";if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+2&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-10)return"br"}return this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.lb+3&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb-3&&this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb-10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb+10?"l":this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb+1&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.rb-5&&this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb-10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb+10?"r":this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+4&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-2&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb-10?"t":this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+2&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-4&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb-10&&"b"},_isMouseOver:function(t,e){return void 0===this._isMouseOver._&&(this._isMouseOver._={}),this._isMouseOver._.parentOffset=this.$croppingCanvas.offset(),this._isMouseOver._.mouseX=t.pageX-this._isMouseOver._.parentOffset.left,this._isMouseOver._.mouseY=t.pageY-this._isMouseOver._.parentOffset.top,this._isMouseOver._.lb=e.left-e.width/2,this._isMouseOver._.rb=this._isMouseOver._.lb+e.width,this._isMouseOver._.tb=e.top-e.height/2,this._isMouseOver._.bb=this._isMouseOver._.tb+e.height,this._isMouseOver._.mouseX>=this._isMouseOver._.lb&&this._isMouseOver._.mouseX<=this._isMouseOver._.rb&&this._isMouseOver._.mouseY>=this._isMouseOver._.tb&&this._isMouseOver._.mouseY<=this._isMouseOver._.bb},_getRectangleVertices:function(t,e,n){return void 0===this._getRectangleVertices._&&(this._getRectangleVertices._={}),void 0===e&&(e=0),void 0===n&&(n=0),this._getRectangleVertices._.topLeft={x:t.left+e,y:t.top+n},this._getRectangleVertices._.topRight={x:this._getRectangleVertices._.topLeft.x+t.width,y:this._getRectangleVertices._.topLeft.y},this._getRectangleVertices._.bottomRight={x:this._getRectangleVertices._.topRight.x,y:this._getRectangleVertices._.topRight.y+t.height},this._getRectangleVertices._.bottomLeft={x:this._getRectangleVertices._.topLeft.x,y:this._getRectangleVertices._.bottomRight.y},[this._getRectangleVertices._.topLeft,this._getRectangleVertices._.topRight,this._getRectangleVertices._.bottomRight,this._getRectangleVertices._.bottomLeft]},_setFittedImageVerticeCoordinates:function(){this.imageVerticeCoords=this.getImageVerticeCoords("fit")},getImageVerticeCoords:function(t){var e,n=-1*((this.hasOrientationChanged()?90:0)+this.imageStraightenAngle)*(Math.PI/180),i=this.getScaledImageDimensions();e="number"==typeof t?t:"cover"===t?this.getZoomToCoverRatio(i):this.getZoomToFitRatio(i);var r=i.height*e,a=i.width*e,s=Math.cos(n)*r,o=Math.sin(n)*a,l=Math.cos(n)*a,c=Math.sin(n)*r,h=(this.editorHeight-(s+o))/2,u=(this.editorWidth-(c+l))/2;return{a:{x:u+l,y:h},b:{x:this.editorWidth-u,y:h+s},c:{x:u+c,y:this.editorHeight-h},d:{x:u,y:h+o}}},_debug:function(t){this.canvas.remove(this.debugger),this.debugger=t,this.canvas.add(this.debugger)},arePointsInsideRectangle:function(t,e){for(void 0===this.arePointsInsideRectangle._&&(this.arePointsInsideRectangle._={}),this.arePointsInsideRectangle._.ab=this._getVector(e.a,e.b),this.arePointsInsideRectangle._.bc=this._getVector(e.b,e.c),this.arePointsInsideRectangle._.scalarAbAb=this._getScalarProduct(this.arePointsInsideRectangle._.ab,this.arePointsInsideRectangle._.ab),this.arePointsInsideRectangle._.scalarBcBc=this._getScalarProduct(this.arePointsInsideRectangle._.bc,this.arePointsInsideRectangle._.bc),this.arePointsInsideRectangle._.i=0;this.arePointsInsideRectangle._.i<t.length;this.arePointsInsideRectangle._.i++)if(this.arePointsInsideRectangle._.point=t[this.arePointsInsideRectangle._.i],this.arePointsInsideRectangle._.ap=this._getVector(e.a,this.arePointsInsideRectangle._.point),this.arePointsInsideRectangle._.bp=this._getVector(e.b,this.arePointsInsideRectangle._.point),this.arePointsInsideRectangle._.scalarAbAp=this._getScalarProduct(this.arePointsInsideRectangle._.ab,this.arePointsInsideRectangle._.ap),this.arePointsInsideRectangle._.scalarBcBp=this._getScalarProduct(this.arePointsInsideRectangle._.bc,this.arePointsInsideRectangle._.bp),this.arePointsInsideRectangle._.projectsOnAB=0<=this.arePointsInsideRectangle._.scalarAbAp&&this.arePointsInsideRectangle._.scalarAbAp<=this.arePointsInsideRectangle._.scalarAbAb,this.arePointsInsideRectangle._.projectsOnBC=0<=this.arePointsInsideRectangle._.scalarBcBp&&this.arePointsInsideRectangle._.scalarBcBp<=this.arePointsInsideRectangle._.scalarBcBc,!this.arePointsInsideRectangle._.projectsOnAB||!this.arePointsInsideRectangle._.projectsOnBC)return!1;return!0},_getVector:function(t,e){return{x:e.x-t.x,y:e.y-t.y}},_getScalarProduct:function(t,e){return t.x*e.x+t.y*e.y},_getVectorMagnitude:function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},_getAngleBetweenVectors:function(t,e){return Math.round(180*Math.acos(Math.min(1,this._getScalarProduct(t,e)/(this._getVectorMagnitude(t)*this._getVectorMagnitude(e))))/Math.PI*100)/100},_getEdgeCrossed:function(t,e){for(var n=[[t.a,t.b],[t.b,t.c],[t.c,t.d],[t.d,t.a]],i={x:this.editorWidth/2,y:this.editorHeight/2},r=180,a=null,s=0;s<n.length;s++){var o=n[s],l=this._getVector(o[0],i),c=this._getVector(o[0],o[1]),h=this._getVector(o[0],e),u=Math.abs(this._getAngleBetweenVectors(l,h)-(this._getAngleBetweenVectors(l,c)+this._getAngleBetweenVectors(c,h)));u<r&&(r=u,a=o)}return a},_getImageBoundingBox:function(t){var e={},n=Math.abs(this.imageStraightenAngle)*(Math.PI/180),i=t.height/t.width;if(e.height=t.width*(Math.sin(n)+Math.cos(n)*i),e.width=t.width*(Math.cos(n)+Math.sin(n)*i),this.hasOrientationChanged()){var r=e.width;e.width=e.height,e.height=r}return e}},{defaults:{animationDuration:100,allowSavingAsNew:!0,onSave:$.noop,allowDegreeFractions:null}})},2495:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(){"use strict";n=function(){return i};var e,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},i}function i(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function r(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var s=t.apply(e,n);function o(t){i(s,r,a,o,l,"next",t)}function l(t){i(s,r,a,o,l,"throw",t)}o(void 0)}))}}function a(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}var s,o;Craft.AssetIndex=Craft.BaseElementIndex.extend({$includeSubfoldersContainer:null,$includeSubfoldersCheckbox:null,showingIncludeSubfoldersCheckbox:!1,$uploadButton:null,$uploadInput:null,$progressBar:null,uploader:null,promptHandler:null,progressBar:null,currentFolderId:null,$listedFolders:null,itemDrag:null,_uploadTotalFiles:0,_uploadFileProgress:{},_currentUploaderSettings:{},_includeSubfolders:null,init:function(t,e,n){var i=this;if(n=Object.assign({},Craft.AssetIndex.defaults,n),this.setSettings(n,Craft.BaseElementIndex.defaults),"index"===this.settings.context){var r=Craft.getQueryParams();void 0!==r.includeSubfolders&&(this._includeSubfolders=!!parseInt(r.includeSubfolders))}this.base(t,e,this.settings),"index"===this.settings.context?(this.itemDrag=new Garnish.DragDrop(a(a(a(a(a(a(a({activeDropTargetClass:"sel",minMouseDist:10,hideDraggee:!1,moveHelperToCursor:!0},"activeDropTargetClass","active-drop-target"),"handle",(function(t){return $(t).closest("tr,li")})),"filter",(function(){var t=i.itemDrag.$targetItem.closest("tr,li");return i.view.elementSelect.selectItem(t),i._findDraggableItems(i.view.getSelectedElements())})),"helper",(function(t,e){return $('<div class="offset-drag-helper"/>').append(t).css({opacity:Math.max(.9-.05*e,0),width:"",height:""})})),"dropTargets",(function(){var t=$(i.$visibleSources.toArray().filter((function(t){return Garnish.hasAttr(t,"data-folder-id")&&Garnish.hasAttr(t,"data-can-move-peer-files-to")})));if(i.sourcePath.length<=1)t=t.not(i.$source);else for(var e=0;e<i.sourcePath.length-1;e++){var n=i.sourcePath[e];n.folderId&&(t=t.add(n.$btn))}return i.$listedFolders&&(t=t.add(i.$listedFolders.filter("[data-folder-id]").closest("tr,li")).not(i.view.getSelectedElements())),t})),"onDragStart",(function(){Garnish.$bod.addClass("dragging"),i.itemDrag.$draggee.closest("tr,li").addClass("draggee")})),"onDragStop",(function(){Garnish.$bod.removeClass("dragging");var t=i.itemDrag.$draggee,e=i._targetFolderId(i.itemDrag.$activeDropTarget);if(!e)return t.closest("tr,li").removeClass("draggee"),void i.itemDrag.returnHelpersToDraggees();i.itemDrag.fadeOutHelpers();var n=t.filter("[data-is-folder]"),r=t.not(n),a=n.toArray().map((function(t){return parseInt($(t).data("folder-id"))})),s=r.toArray().map((function(t){return parseInt($(t).data("id"))})),o=new Craft.AssetMover;o.moveFolders(a,e).then((function(n){o.moveAssets(s,e).then((function(e){var i=n+e;i?(Craft.cp.displayNotice(Craft.t("app","{totalItems, plural, =1{Item} other{Items}} moved.",{totalItems:i})),Craft.elementIndex.updateElements(!0)):t.closest("tr,li").removeClass("draggee")}))}))}))),this.addListener(Garnish.$win,"resize,scroll","_positionProgressBar")):(this.addListener(this.$main,"scroll","_positionProgressBar"),this.settings.modal&&this.settings.modal.on("updateSizeAndPosition",this._positionProgressBar.bind(this)))},_findDraggableItems:function(t){return $(t.toArray().map((function(t){return $(t).find(".element:first")[0]})).filter((function(t){return t&&Garnish.hasAttr(t,"data-movable")})))},_targetFolderId:function(t){if(!t||!t.length)return!1;if(t.is(this.$visibleSources))return t.data("folder-id");for(var e=0;e<this.sourcePath.length-1;e++){var n=this.sourcePath[e];if(t.is(n.$btn))return n.folderId}return t.find(".element:first").data("folder-id")||!1},afterInit:function(){this.settings.foldersOnly||this.initForFiles(),this.base()},initForFiles:function(){this.promptHandler=new Craft.PromptHandler,this.progressBar=new Craft.ProgressBar(this.$main,!1)},createUploadInputs:function(){var t,e,n=this;null===(t=this.$uploadButton)||void 0===t||t.remove(),null===(e=this.$uploadInput)||void 0===e||e.remove(),this.$uploadButton=$("<button/>",{type:"button",class:"btn submit","data-icon":"upload",style:"position: relative; overflow: hidden;","aria-label":Craft.t("app","Upload files"),text:Craft.t("app","Upload files")}),this.addButton(this.$uploadButton),this.$uploadInput=$('<input type="file" multiple="multiple" name="assets-upload" />').hide().insertBefore(this.$uploadButton),this.$uploadButton.on("click",(function(){n.$uploadButton.hasClass("disabled")||n.isIndexBusy||n.$uploadButton.parent().find("input[name=assets-upload]").trigger("click")}))},onSelectSource:function(){if(!this.settings.foldersOnly){this.currentFolderId=this.currentFolderId||this.$source.data("folder-id");var t=this.$source.data("fs-type");if(this.createUploadInputs(),this.currentFolderId&&Garnish.hasAttr(this.$source,"data-can-upload")){var e,n;null===(e=this.uploader)||void 0===e||e.destroy(),this.$uploadButton.removeClass("disabled");var i={fileInput:this.$uploadInput,dropZone:this.$container,events:{fileuploadstart:this._onUploadStart.bind(this),fileuploadprogressall:this._onUploadProgress.bind(this),fileuploaddone:this._onUploadSuccess.bind(this),fileuploadalways:this._onUploadAlways.bind(this),fileuploadfail:this._onUploadFailure.bind(this)}};null!==(n=this.settings)&&void 0!==n&&null!==(n=n.criteria)&&void 0!==n&&n.kind&&(i.allowedKinds=this.settings.criteria.kind),this._currentUploaderSettings=i,this.uploader=Craft.createUploader(t,this.$uploadButton,i),this.uploader.setParams({folderId:this.currentFolderId})}else this.$uploadButton.addClass("disabled")}this.base()},onSourcePathChange:function(){var t=this.sourcePath.length?this.sourcePath[this.sourcePath.length-1]:null;if(this.currentFolderId=null==t?void 0:t.folderId,!this.settings.foldersOnly&&this.currentFolderId){var e;null===(e=this.uploader)||void 0===e||e.setParams({folderId:this.currentFolderId});var n="index"===this.context&&!!t.canMoveSubItems;this.settings.selectable=this.settings.selectable||n,this.settings.multiSelect=this.settings.multiSelect||n}this.base()},startSearching:function(){if(!this.settings.hideSidebar&&this.sourcePath.length&&this.sourcePath[this.sourcePath.length-1].hasChildren){if(null===this.$includeSubfoldersContainer){var t="includeSubfolders-"+Math.floor(1e9*Math.random());this.$includeSubfoldersContainer=$('<div style="margin-bottom: -25px; opacity: 0;"/>').insertAfter(this.$search);var e=$('<div style="padding-top: 5px;"/>').appendTo(this.$includeSubfoldersContainer);this.$includeSubfoldersCheckbox=$('<input type="checkbox" id="'+t+'" class="checkbox"/>').appendTo(e),$('<label class="light smalltext" for="'+t+'"/>').text(" "+Craft.t("app","Search in subfolders")).appendTo(e),this.addListener(this.$includeSubfoldersCheckbox,"change",(function(){this.setSelecetedSourceState("includeSubfolders",this.$includeSubfoldersCheckbox.prop("checked")),this.updateElements()}))}else this.$includeSubfoldersContainer.velocity("stop").removeClass("hidden");var n;null!==this._includeSubfolders?(n=this._includeSubfolders,this._includeSubfolders=null):n=this.getSelectedSourceState("includeSubfolders",!1),this.$includeSubfoldersCheckbox.prop("checked",n),this.$includeSubfoldersContainer.velocity({marginBottom:0,opacity:1},"fast"),this.showingIncludeSubfoldersCheckbox=!0}this.base()},stopSearching:function(){var t=this;this.showingIncludeSubfoldersCheckbox&&(this.$includeSubfoldersContainer.velocity("stop"),this.$includeSubfoldersContainer.velocity({marginBottom:-25,opacity:0},{duration:"fast",complete:function(){t.$includeSubfoldersContainer.addClass("hidden")}}),this.showingIncludeSubfoldersCheckbox=!1),this.base()},getViewSettings:function(){var t={};return"index"===this.settings.context&&(t.canSelectElement=function(){return!0}),t},getViewParams:function(){var t=Object.assign(this.base(),{showFolders:this.settings.showFolders&&!this.trashed,foldersOnly:this.settings.foldersOnly});return this.showingIncludeSubfoldersCheckbox&&this.$includeSubfoldersCheckbox.prop("checked")&&(t.criteria.includeSubfolders=!0),t},_onUploadStart:function(){this.setIndexBusy(),this._positionProgressBar(),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar(),this.promptHandler.resetPrompts()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e=t instanceof CustomEvent?t.detail:e;var n=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(n)},_onUploadSuccess:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t instanceof CustomEvent?t.detail:e.result;this.selectElementAfterUpdate(n.assetId),n.conflict&&(n.prompt={message:Craft.t("app",n.conflict,{file:n.filename}),choices:[{value:"keepBoth",title:Craft.t("app","Keep both")},{value:"replace",title:Craft.t("app","Replace it")}],modalSettings:{hideOnEsc:!1,hideOnShadeClick:!1}},this.promptHandler.addPrompt(n)),Craft.cp.runQueue()},_onUploadAlways:function(){this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.setIndexAvailable(),this.promptHandler.getPromptCount()?this.promptHandler.showBatchPrompts(this._uploadFollowup.bind(this)):this._updateAfterUpload())},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=(t instanceof CustomEvent?t.detail:null==i||null===(e=i.jqXHR)||void 0===e?void 0:e.responseJSON)||{},a=r.message,s=r.filename,o=r.errors;s=s||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var l=o?Object.values(o).flat():[];a||(a=l.length?l.join("\n"):s?Craft.t("app","Upload failed for “{filename}”.",{filename:s}):Craft.t("app","Upload failed.")),Craft.cp.displayError(a)},_updateAfterUpload:function(){"index"!==this.settings.context&&(this.clearSearch(),this.setSelectedSortAttribute("dateCreated","desc")),this.updateElements()},_uploadFollowup:function(t){var e=this;this.setIndexBusy(),this.progressBar.resetProgressBar(),this.promptHandler.resetPrompts(),this.progressBar.setItemCount(t.length),this.progressBar.showProgressBar(),function t(n,i,r){var a={},s=null,o=e.uploader.settings,l=o.replaceAction,c=o.deleteAction,h=function(){i++,e.progressBar.incrementProcessedItemCount(1),e.progressBar.updateProgressBar(),i===n.length?r():t(n,i,r)},u=function(t){t.assetId&&e.selectElementAfterUpdate(t.assetId),h()};"replace"===n[i].choice?(s=l,a.sourceAssetId=n[i].assetId,n[i].conflictingAssetId?a.assetId=n[i].conflictingAssetId:a.targetFilename=n[i].filename):"cancel"===n[i].choice&&(s=c,a.assetId=n[i].assetId),s?Craft.sendActionRequest("POST",s,{data:a}).then((function(t){return u(t.data)})).catch((function(t){return function(t){Craft.cp.displayError(t.message),h()}(t.response.data)})):u({assetId:n[i].assetId})}(t,0,(function(){e.progressBar.hideProgressBar(),e.setIndexAvailable(),e._updateAfterUpload()}))},onUpdateElements:function(){var t=this;this._onUpdateElements(!1,this.view.getAllElements()),this.view.on("appendElements",(function(e){t._onUpdateElements(!0,e.newElements)})),this.base()},_onUpdateElements:function(t,e){var n=this;this.removeListener(this.$elements,"keydown"),this.addListener(this.$elements,"keydown",this._onKeyDown.bind(this)),this.view.elementSelect&&this.view.elementSelect.on("focusItem",this._onElementFocus.bind(this)),this.$listedFolders=e.find(".element[data-is-folder][data-folder-name]");for(var i=function(){var t=n.$listedFolders.eq(r),i=t.find(".label"),a=i.find(".label-link"),s=parseInt(t.data("folder-id")),o=t.data("folder-name"),l=Craft.t("app","{name} folder",{name:o});if(n.settings.disabledFolderIds.includes(s))return i.attr("aria-label",l),e.has(t).addClass("disabled"),1;var c=t.data("source-path");c&&(a.attr({href:Craft.getCpUrl(c[c.length-1].uri),role:"button","aria-label":l}),n.addListener(a,"activate",(function(t){n.sourcePath=c,n.clearSearch(!1),n.updateElements().then((function(){var t=n.$elements.find(":focusable:not(.selectallcontainer)")[0];t&&t.focus()}))})))},r=0;r<this.$listedFolders.length;r++)i();if(this.itemDrag){var a=this.sourcePath[this.sourcePath.length-1],s=!!(a&&a.folderId&&a.canMoveSubItems);s&&t||this.itemDrag.removeAllItems(),s&&this.itemDrag.addItems(this._findDraggableItems(e))}},_onKeyDown:function(t){if(t.keyCode===Garnish.SPACE_KEY&&t.shiftKey){if(Craft.PreviewFileModal.openInstance)Craft.PreviewFileModal.openInstance.selfDestruct();else if(this.view.elementSelect){var e=this.view.elementSelect.$focusedItem.find(".element");e.length&&this._loadPreview(e)}return t.stopPropagation(),!1}},_onElementFocus:function(t){var e=$(t.item).find(".element");Craft.PreviewFileModal.openInstance&&e.length&&this._loadPreview(e)},_loadPreview:function(t){var e={};t.data("image-width")&&(e.startingWidth=t.data("image-width"),e.startingHeight=t.data("image-height")),new Craft.PreviewFileModal(t.data("id"),this.view.elementSelect,e)},getSourcePathLabel:function(){return Craft.t("app","Volume path")},getSourcePathActionLabel:function(){return Craft.t("app","Folder actions")},getSourcePathActions:function(){var t=this,e=[],n=this.sourcePath[this.sourcePath.length-1];return n.canCreate&&e.push({label:Craft.t("app","New subfolder"),onSelect:function(){t._createSubfolder()}}),"index"===this.settings.context&&n.canRename&&(e.push({label:Craft.t("app","Rename folder"),onSelect:function(){t._renameFolder()}}),n.canMove&&this.getMoveTargetSourceKeys(!0).length&&e.push({label:Craft.t("app","Move folder"),onSelect:function(){t._moveFolder()}}),n.canDelete&&e.push({label:Craft.t("app","Delete folder"),destructive:!0,onSelect:function(){t.deleteCurrentFolder()}})),e},_createSubfolder:function(){var t=this,e=this.sourcePath[this.sourcePath.length-1],n=prompt(Craft.t("app","Enter the name of the folder"));if(n){var i={parentId:e.folderId,folderName:n};this.setIndexBusy(),Craft.sendActionRequest("POST","assets/create-folder",{data:i}).then((function(e){t.setIndexAvailable(),Craft.cp.displayNotice(Craft.t("app","Folder created.")),t.updateElements(!0)})).catch((function(e){var n=e.response;t.setIndexAvailable(),Craft.cp.displayError(n.data.message)}))}},deleteCurrentFolder:(o=r(n().mark((function t(){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deleteFolder(this.sourcePath[this.sourcePath.length-1]);case 2:if(!t.sent){t.next=5;break}this.sourcePath=this.sourcePath.slice(0,this.sourcePath.length-1),this.updateElements();case 5:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)}),deleteFolder:(s=r(n().mark((function t(e){var i;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(confirm(Craft.t("app","Really delete folder “{folder}”?",{folder:e.label}))){t.next=2;break}return t.abrupt("return",!1);case 2:return this.setIndexBusy(),t.prev=3,t.next=6,Craft.sendActionRequest("POST","assets/delete-folder",{data:{folderId:e.folderId}});case 6:t.next=12;break;case 8:return t.prev=8,t.t0=t.catch(3),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(i=t.t0.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.message),t.abrupt("return",!1);case 12:return t.prev=12,this.setIndexAvailable(),t.finish(12);case 15:return Craft.cp.displayNotice(Craft.t("app","Folder deleted.")),t.abrupt("return",!0);case 17:case"end":return t.stop()}}),t,this,[[3,8,12,15]])}))),function(t){return s.apply(this,arguments)}),_renameFolder:function(){var t=this,e=this.sourcePath[this.sourcePath.length-1],n=prompt(Craft.t("app","Rename folder"),e.label);n&&n!==e.label&&(this.setIndexBusy(),Craft.sendActionRequest("POST","assets/rename-folder",{data:{folderId:e.folderId,newName:n}}).then((function(e){Craft.cp.displayNotice(Craft.t("app","Folder renamed."));var n=t.sourcePath.slice();n[n.length-1].label=e.data.newName,n[n.length-1].uri=n[n.length-2].uri+"/".concat(e.data.newName),t.sourcePath=n})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})).finally((function(){t.setIndexAvailable()})))},getMoveTargetSourceKeys:function(t){var e=t?"data-can-move-peer-files-to":"data-can-move-to";return this.$sources.toArray().filter((function(t){var n=$(t).data("volume-handle");return n&&"temp"!==n&&Garnish.hasAttr(t,e)})).map((function(t){return $(t).data("key")}))},_moveFolder:function(){var t=this,n=this.sourcePath[this.sourcePath.length-1],i=this.sourcePath[this.sourcePath.length-2],r=[n.folderId];i&&r.push(i.folderId),new Craft.VolumeFolderSelectorModal({sources:this.getMoveTargetSourceKeys(!0),showTitle:!0,modalTitle:Craft.t("app","Move to"),selectBtnLabel:Craft.t("app","Move"),disabledFolderIds:r,indexSettings:{defaultSource:this.sourceKey,defaultSourcePath:this.sourcePath.slice(0,this.sourcePath.length-1)},onSelect:function(i){var r,a,s=(r=i,a=1,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(r,a)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];t.$sourcePathActionsBtn.focus(),(new Craft.AssetMover).moveFolders([n.folderId],s.folderId).then((function(e){e&&(Craft.cp.displayNotice(Craft.t("app","{totalItems, plural, =1{Item} other{Items}} moved.",{totalItems:e})),t.sourcePath=t.sourcePath.slice(0,t.sourcePath.length-1),t.clearSearch(!1),t.updateElements())}))}})},_positionProgressBar:function(){this.progressBar||(this.progressBar=new Craft.ProgressBar(this.$main,!0));var t=$(),e=0,n=0;"index"===this.settings.context?(t=this.progressBar.$progressBar.closest("#content"),e=Garnish.$win.scrollTop()):(t=this.progressBar.$progressBar.closest(".main"),e=this.$main.scrollTop());var i=e-t.offset().top,r=Garnish.$win.height();n=t.height()>r?r/2-6+i:t.height()/2-6,"index"!==this.settings.context&&(n=e+(t.height()/2-6)),this.progressBar.$progressBar.css({top:n})}},{defaults:{showFolders:!0,foldersOnly:!1,disabledFolderIds:[]}}),Craft.registerElementIndexClass("craft\\elements\\Asset",Craft.AssetIndex)},1016:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=e(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.AssetMover=Garnish.Base.extend({moveAssets:function(t,e){var n=t.map((function(t){return{for:"asset",action:"assets/move-asset",params:{assetId:t,folderId:e}}}));return this._batchMoveRequests(n,{conflictChoices:[{value:"keepBoth",title:Craft.t("app","Keep both")},{value:"replace",title:Craft.t("app","Replace it")}],handleConflictChoice:function(t){var e={folderId:t.request.params.folderId,assetId:t.assetId};switch(t.choice){case"replace":e.force=!0;break;case"keepBoth":e.filename=t.suggestedFilename}return{action:"assets/move-asset",params:e}}})},moveFolders:function(t,i){var r=this;return new Promise((function(a,s){var o=[],l=[],c=t.map((function(t){return{for:"folder",action:"assets/move-folder",params:{folderId:t,parentId:i},onSuccess:function(i){var r;i.transferList.length&&o.push.apply(o,function(t){if(Array.isArray(t))return n(t)}(r=i.transferList)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||e(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l.push(t)}}}));r._batchMoveRequests(c,{conflictChoices:[{value:"replace",title:Craft.t("app","Replace the folder (all existing files will be deleted)")},{value:"merge",title:Craft.t("app","Merge the folder (any conflicting files will be replaced)")}],handleConflictChoice:function(t){var e={folderId:t.folderId,parentId:t.parentId};switch(t.choice){case"replace":e.force=!0;break;case"merge":e.merge=!0}return{action:"assets/move-folder",params:e}}}).then((function(t){r._processTransferList(o).then((function(){r._deleteFolders(l).then((function(){a(t)}))}))})).catch(s)}))},_processTransferList:function(t){return this._batchRequests(t.map((function(t){return{action:"assets/move-asset",params:t}})))},_deleteFolders:function(t){return this._batchRequests(t.map((function(t){return{action:"assets/delete-folder",params:{folderId:t}}})))},_batchMoveRequests:function(e,n){var i=this;return new Promise((function(r){var a=0;i._batchRequests(e).then((function(e){Craft.elementIndex.promptHandler.resetPrompts();var s,o=t(e);try{for(o.s();!(s=o.n()).done;){var l=s.value;l.success&&a++,l.conflict&&Craft.elementIndex.promptHandler.addPrompt(Object.assign({},l,{prompt:{message:l.conflict,choices:n.conflictChoices}})),l.error&&Craft.cp.displayError(l.error)}}catch(t){o.e(t)}finally{o.f()}Craft.elementIndex.promptHandler.getPromptCount()?Craft.elementIndex.promptHandler.showBatchPrompts((function(e){Craft.elementIndex.promptHandler.resetPrompts();var s,o=[],l=t(e);try{for(l.s();!(s=l.n()).done;){var c=s.value;if("cancel"!==c.choice&&n.handleConflictChoice){var h=n.handleConflictChoice(c);c.request&&c.request.onSuccess&&(h.onSuccess=c.request.onSuccess),o.push(h)}}}catch(t){l.e(t)}finally{l.f()}i._batchMoveRequests(o,n).then((function(t){r(a+t)}))})):r(a)}))}))},_batchRequests:function(e){return new Promise((function(n){if(e.length){Craft.elementIndex.setIndexBusy(),Craft.elementIndex._positionProgressBar(),Craft.elementIndex.progressBar.resetProgressBar(),Craft.elementIndex.progressBar.setItemCount(e.length),Craft.elementIndex.progressBar.showProgressBar();var i,r=[],a=e.length,s=t(e);try{var o=function(){var t=i.value;Craft.sendActionRequest("POST",t.action,{data:t.params}).then((function(e){r.push(Object.assign({success:!0},e.data,{request:t})),t.onSuccess&&t.onSuccess(e.data)})).catch((function(e){e.response&&e.response.data&&r.push(Object.assign({success:!1},e.response.data,{request:t}))})).finally((function(){0==--a?(Craft.elementIndex.setIndexAvailable(),Craft.elementIndex.progressBar.hideProgressBar(),Craft.cp.runQueue(),n(r)):(Craft.elementIndex.progressBar.incrementProcessedItemCount(1),Craft.elementIndex.progressBar.updateProgressBar())}))};for(s.s();!(i=s.n()).done;)o()}catch(t){s.e(t)}finally{s.f()}}else n([])}))}})},5077:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.AssetSelectInput=Craft.BaseElementSelectInput.extend({$uploadBtn:null,uploader:null,progressBar:null,openPreviewTimeout:null,init:function(){this.base.apply(this,arguments),this.settings.canUpload&&this._attachUploader(),this.updateAddElementsBtn(),this.addListener(this.$elementsContainer,"keydown",this._onKeyDown.bind(this)),this.elementSelect.on("focusItem",this._onElementFocus.bind(this))},elementSelectSettings:function(){return Object.assign(this.base(),{makeFocusable:!0})},_onKeyDown:function(t){if(t.keyCode===Garnish.SPACE_KEY&&t.shiftKey)return this.openPreview(),t.stopPropagation(),!1},clearOpenPreviewTimeout:function(){this.openPreviewTimeout&&(clearTimeout(this.openPreviewTimeout),this.openPreviewTimeout=null)},openPreview:function(t){Craft.PreviewFileModal.openInstance?Craft.PreviewFileModal.openInstance.selfDestruct():(t||(t=this.$elements.filter(":focus").add(this.$elements.has(":focus"))),t.length&&this._loadPreview(t))},_onElementFocus:function(t){var e=$(t.item);Craft.PreviewFileModal.openInstance&&e.length&&this._loadPreview(e)},_loadPreview:function(t){var e={minGutter:50};t.data("image-width")&&(e.startingWidth=t.data("image-width"),e.startingHeight=t.data("image-height")),new Craft.PreviewFileModal(t.data("id"),this.elementSelect,e)},_attachUploader:function(){var t=this;this.progressBar=new Craft.ProgressBar($('<div class="progress-shade"></div>').appendTo(this.$container)),this.$addElementBtn&&(this.$uploadBtn=$("<button/>",{type:"button",class:"btn dashed","data-icon":"upload","aria-label":1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files"),"aria-describedby":this.settings.describedBy,text:1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files")}).insertAfter(this.$addElementBtn),this.$fileInput=$("<input/>",{type:"file",class:"hidden",multiple:1!=this.settings.limit}).insertAfter(this.$uploadBtn),Garnish.$win.trigger("resize"));var e={dropZone:this.$container,fileInput:this.$fileInput};void 0!==this.settings.criteria.kind&&(e.allowedKinds=this.settings.criteria.kind),e.canAddMoreFiles=this.canAddMoreFiles.bind(this),e.events={},e.events.fileuploadstart=this._onUploadStart.bind(this),e.events.fileuploadprogressall=this._onUploadProgress.bind(this),e.events.fileuploaddone=this._onUploadComplete.bind(this),e.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(this.settings.fsType,this.$container,e);var n={fieldId:this.settings.fieldId};this.settings.sourceElementId&&(n.elementId=this.settings.sourceElementId),this.settings.criteria.siteId&&(n.siteId=this.settings.criteria.siteId),this.uploader.setParams(n),this.$uploadBtn&&this.$uploadBtn.on("click",(function(e){t.$uploadBtn.next("input[type=file]").trigger("click")}))},enableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.removeClass("hidden"),this.base()},disableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.addClass("hidden"),this.base()},selectUploadedFile:function(t){if(this.canAddMoreElements()){var e=t.$element;e.appendTo(this.$elementsContainer);var n=-(e.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,n+"px");var i={};i["margin-"+Craft.left]=0,this.$addElementBtn.velocity(i,"fast"),this.addElements(e),delete this.modal}},_onUploadStart:function(){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e=t instanceof CustomEvent?t.detail:e;var n=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(n)},_onUploadComplete:function(t){var i=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=t instanceof CustomEvent?t.detail:r.result;Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:"craft\\elements\\Asset",id:a.assetId,siteId:this.settings.criteria.siteId,instances:[{context:"field",ui:["list","large"].includes(this.settings.viewMode)?"chip":"card",size:"large"===this.settings.viewMode?"large":"small"}]}]}}).then(function(){var t,r=(t=e().mark((function t(n){var r,s;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=n.data,s=Craft.getElementInfo(r.elements[a.assetId][0]),i.selectElements([s]),t.next=5,Craft.appendHeadHtml(r.headHtml);case 5:return t.next=7,Craft.appendBodyHtml(r.bodyHtml);case 7:i.uploader.isLastUpload()&&(i.progressBar.hideProgressBar(),i.$container.removeClass("uploading"),i.$container.trigger("change"));case 8:case"end":return t.stop()}}),t)})),function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}()).catch((function(t){if(!t||!t.response)throw Craft.cp.displayError(),t;Craft.cp.displayError(response.data.message)})),Craft.cp.runQueue()},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=(t instanceof CustomEvent?t.detail:null==i||null===(e=i.jqXHR)||void 0===e?void 0:e.responseJSON)||{},a=r.message,s=r.filename,o=r.errors;s=s||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var l=o?Object.values(o).flat():[];a||(a=l.length?l.join("\n"):s?Craft.t("app","Upload failed for “{filename}”.",{filename:s}):Craft.t("app","Upload failed.")),Craft.cp.displayError(a),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")},canAddMoreFiles:function(t){return!this.settings.limit||this.$elements.length+t<this.settings.limit}})},4606:function(){Craft.AssetSelectorModal=Craft.BaseElementSelectorModal.extend({$selectTransformBtn:null,_selectedTransform:null,init:function(t,e){e=$.extend({},Craft.AssetSelectorModal.defaults,e),this.base(t,e),e.transforms.length&&this.createSelectTransformButton(e.transforms)},createSelectTransformButton:function(t){if(t&&t.length){var e=$('<div class="btngroup"/>').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(e),this.$selectTransformBtn=$("<button/>",{type:"button",class:"btn menubtn disabled",text:Craft.t("app","Select transform")}).appendTo(e);for(var n=$('<div class="menu" data-align="right"></div>').insertAfter(this.$selectTransformBtn),i=$("<ul></ul>").appendTo(n),r=0;r<t.length;r++)$('<li><a data-transform="'+t[r].handle+'">'+t[r].name+"</a></li>").appendTo(i);var a=new Garnish.MenuBtn(this.$selectTransformBtn,{onOptionSelect:this.onSelectTransform.bind(this)});a.disable(),this.$selectTransformBtn.data("menuButton",a)}},onSelectionChange:function(t){var e=!1;this.elementIndex.getSelectedElements().length&&this.settings.transforms.length&&(e=!0);var n=null;this.$selectTransformBtn&&(n=this.$selectTransformBtn.data("menuButton")),e?(n&&n.enable(),this.$selectTransformBtn.removeClass("disabled")):this.$selectTransformBtn&&(n&&n.disable(),this.$selectTransformBtn.addClass("disabled")),this.base()},onSelectTransform:function(t){var e=$(t).data("transform");this.selectImagesWithTransform(e)},selectImagesWithTransform:function(t){var e=this;void 0===Craft.AssetSelectorModal.transformUrls[t]&&(Craft.AssetSelectorModal.transformUrls[t]={});for(var n=this.elementIndex.getSelectedElements(),i=[],r=0;r<n.length;r++){var a=$(n[r]),s=Craft.getElementInfo(a).id;void 0===Craft.AssetSelectorModal.transformUrls[t][s]&&i.push(s)}i.length?(this.showFooterSpinner(),this.fetchMissingTransformUrls(i,t,(function(){e.hideFooterSpinner(),e.selectImagesWithTransform(t)}))):(this._selectedTransform=t,this.selectElements(),this._selectedTransform=null)},fetchMissingTransformUrls:function(t,e,n){var i=this,r=t.pop(),a={assetId:r,handle:e};Craft.sendActionRequest("POST","assets/generate-transform",{data:a}).then((function(t){Craft.AssetSelectorModal.transformUrls[e][r]=t.data.url||!1})).catch((function(){Craft.AssetSelectorModal.transformUrls[e][r]=!1})).finally((function(){t.length?i.fetchMissingTransformUrls(t,e,n):n()}))},getElementInfo:function(t){var e=this.base(t);if(this._selectedTransform)for(var n=0;n<e.length;n++){var i=e[n].id;void 0!==Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i]&&!1!==Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i]&&(e[n].url=Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i])}return e},onSelect:function(t){this.settings.onSelect(t,this._selectedTransform)}},{defaults:{canSelectImageTransforms:!1,transforms:[]},transformUrls:{}}),Craft.registerElementSelectorModalClass("craft\\elements\\Asset",Craft.AssetSelectorModal)},8391:function(){Craft.AssetsFieldSettings=Garnish.Base.extend({$useSingleFolderInput:null,$sourceInputs:null,$defaultUploadLocationSelect:null,$defaultUploadLocationOptions:null,init:function(t,e,n){var i=this;this.$useSingleFolderInput=$("#".concat(t)),this.$sourceInputs=$("#".concat(e," input")),this.$defaultUploadLocationSelect=$("#".concat(n)),this.$defaultUploadLocationOptions=this.$defaultUploadLocationSelect.children("option"),this.updateDefaultUploadLocationSelect(),Garnish.requestAnimationFrame((function(){i.addListener(i.$useSingleFolderInput,"change","updateDefaultUploadLocationSelect"),i.addListener(i.$sourceInputs,"change","updateDefaultUploadLocationSelect")}))},updateDefaultUploadLocationSelect:function(){if(!this.$useSingleFolderInput.prop("checked")){for(var t,e=this.$defaultUploadLocationSelect.val(),n=0;n<this.$sourceInputs.length;n++){var i=this.$sourceInputs.eq(n),r=i.val(),a=i.prop("checked");if("*"===r){if(a)return void this.$defaultUploadLocationOptions.prop("disabled",!1)}else this.getOption(r).prop("disabled",!a),a&&!t&&(t=r)}var s=this.getOption(e);(!s.length||s.prop("disabled")&&t)&&this.$defaultUploadLocationSelect.val(t)}},getOption:function(t){return this.$defaultUploadLocationOptions.filter('[value="'.concat(t,'"]'))}})},9222:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}Craft.AuthManager=Garnish.Base.extend({remainingSessionTime:null,checkRemainingSessionTimer:null,showLoginModalTimer:null,decrementLogoutWarningInterval:null,showingLogoutWarningModal:!1,showingLoginModal:!1,logoutWarningModal:null,loginModal:null,$logoutWarningPara:null,$passwordInput:null,$loginBtn:null,loginBtn:null,init:function(){Craft.username&&this.updateRemainingSessionTime(Craft.remainingSessionTime,!1)},setCheckRemainingSessionTimer:function(t){this.checkRemainingSessionTimer&&clearTimeout(this.checkRemainingSessionTimer),this.checkRemainingSessionTimer=setTimeout(this.checkRemainingSessionTime.bind(this),1e3*t)},checkRemainingSessionTime:function(t){var n=this;return i(e().mark((function i(){var r,a,s;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Craft.getActionUrl("users/session-info",t?null:"dontExtendSession=1"),e.prev=1,e.next=4,Craft.sendActionRequest("GET",r);case 4:a=e.sent,s=a.data,void 0!==Craft.csrfTokenValue&&(Craft.csrfTokenValue=s.csrfTokenValue),n.updateRemainingSessionTime(s.timeout,s.isGuest),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),n.updateRemainingSessionTime(-1,!1);case 13:case"end":return e.stop()}}),i,null,[[1,10]])})))()},updateRemainingSessionTime:function(t,e){if(this.remainingSessionTime=parseInt(t),-1!==this.remainingSessionTime&&this.remainingSessionTime<Craft.AuthManager.minSafeSessionTime)if(!e||this.remainingSessionTime){this.showingLogoutWarningModal||this.showLogoutWarningModal();var n=Math.min(Craft.AuthManager.checkInterval,this.remainingSessionTime);this.setCheckRemainingSessionTimer(Math.max(1,n))}else this.showingLoginModal||(this.hideLogoutWarningModal(),this.showLoginModal()),this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);else this.hideLogoutWarningModal(),this.hideLoginModal(),-1!==this.remainingSessionTime&&this.remainingSessionTime<Craft.AuthManager.minSafeSessionTime+Craft.AuthManager.checkInterval?this.setCheckRemainingSessionTimer(this.remainingSessionTime-Craft.AuthManager.minSafeSessionTime+1):this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval)},showLogoutWarningModal:function(){var t;if(this.showingLoginModal?(this.hideLoginModal(!0),t=!0):t=!1,this.showingLogoutWarningModal=!0,!this.logoutWarningModal){var e=$('<form id="logoutwarningmodal" class="modal alert fitted"/>'),n=$('<div class="body"/>').appendTo(e),i=$('<div class="buttons right"/>').appendTo(n),r=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Sign out now")}).appendTo(i),a=$("<button/>",{type:"submit",class:"btn submit",text:Craft.t("app","Keep me signed in")}).appendTo(i);this.$logoutWarningPara=$("<p/>").prependTo(n),this.logoutWarningModal=new Garnish.Modal(e,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark logoutwarningmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){a.trigger("focus")}),100)}}),this.addListener(r,"activate","logout"),this.addListener(e,"submit","renewSession")}t?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(this.decrementLogoutWarning.bind(this),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("app","Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.remainingSessionTime)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.remainingSessionTime>0&&(this.remainingSessionTime--,this.updateLogoutWarningMessage()),0===this.remainingSessionTime&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(t){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(t?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var t=this;return i(e().mark((function n(){var r,a,s;return e().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t.showingLoginModal){n.next=2;break}return n.abrupt("return");case 2:return t.showingLoginModal=!0,t.loginModal&&t.loginModal.destroy(),n.next=6,Craft.sendActionRequest("POST","users/login-modal",{data:{email:Craft.userEmail}});case 6:r=n.sent,a=r.data,s=$(a.html),t.loginModal=new Garnish.Modal(s,{closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark blurred login-modal-shade",onFadeIn:function(){var n=i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Craft.initUiElements(s),new Craft.LoginForm(s.find(".login-container"),{showPasskeyBtn:Craft.userHasPasskeys,onLogin:function(){t.loginModal.hide()}}),e.next=4,Craft.appendHeadHtml(a.headHtml);case 4:return e.next=6,Craft.appendBodyHtml(a.bodyHtml);case 6:case"end":return e.stop()}}),n)})));return function(){return n.apply(this,arguments)}}(),onFadeOut:function(){var e;null===(e=t.loginModal)||void 0===e||e.destroy(),t.loginModal=null},onHide:function(){t.showingLoginModal=!1}});case 10:case"end":return n.stop()}}),n)})))()},hideLoginModal:function(t){this.loginModal&&(t?this.loginModal.quickHide():this.loginModal.hide(),this.loginModal.destroy(),this.loginModal=null)},logout:function(){$.get({url:Craft.getActionUrl("users/logout"),dataType:"json",success:function(){Craft.redirectTo("")}})},renewSession:function(t){t&&t.preventDefault(),this.hideLogoutWarningModal(),this.checkRemainingSessionTime(!0)},closeModal:function(){this.loginBtn.successEvent(),this.hideLoginModal(),this.checkRemainingSessionTime()}},{checkInterval:60,minSafeSessionTime:120})},5774:function(){function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function e(e){for(var i=1;i<arguments.length;i++){var r=null!=arguments[i]?arguments[i]:{};i%2?t(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t,e,n){var i;return i=function(t,e){if("object"!=o(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=o(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(e),(e="symbol"==o(i)?i:String(i))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){"use strict";i=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(t,e,n){t[e]=n.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",h=s.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,s=Object.create(r.prototype),o=new A(i||[]);return a(s,"_invoke",{value:E(t,n,o)}),s}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==n&&r.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function n(i,a,s,l){var c=f(t[i],t,a);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==o(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,s,l)}),(function(t){n("throw",t,s,l)})):e.resolve(u).then((function(t){h.value=t,s(h)}),(function(t){return n("throw",t,s,l)}))}l(c.arg)}var i;a(this,"_invoke",{value:function(t,r){function a(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(a,a):a()}})}function E(e,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(e,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,L(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var n=e[l];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,a=function n(){for(;++i<e.length;)if(r.call(e,i))return n.value=e[i],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(o(e)+" is not iterable")}return $.prototype=C,a(x,"constructor",{value:C,configurable:!0}),a(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},e.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=M,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function i(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:M(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),b}},e}function r(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var s=t.apply(e,n);function o(t){r(s,i,a,o,l,"next",t)}function l(t){r(s,i,a,o,l,"throw",t)}o(void 0)}))}}function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function l(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=c(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function c(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var u,d,f,p,g,m,v;Craft.BaseElementIndex=Garnish.Base.extend({initialized:!1,elementType:null,idPrefix:null,instanceState:null,_sourceStates:null,sourceStatesStorageKey:null,searchTimeout:null,sourceSelect:null,sourceNav:null,$container:null,$main:null,isIndexBusy:!1,$sidebar:null,showingSidebar:null,hasImplicitSource:!1,sourceKey:null,rootSourceKey:null,sourceViewModes:null,$source:null,$rootSource:null,sourcesByKey:null,$visibleSources:null,$sourceActionsContainer:null,$sourceActionsBtn:null,$toolbar:null,toolbarOffset:null,$srStatusContainer:null,$searchContainer:null,$search:null,$filterBtn:null,searching:!1,searchText:null,sortByScore:null,trashed:!1,drafts:!1,$clearSearchBtn:null,$statusMenuBtn:null,$statusMenuContainer:null,statusMenu:null,status:null,$siteMenuBtn:null,siteMenu:null,siteId:null,sourcePaths:null,$sourcePathOuterContainer:null,$sourcePathInnerContainer:null,$sourcePathOverflowBtnContainer:null,$sourcePathActionsBtn:null,$elements:null,$updateSpinner:null,$viewModeBtnContainer:null,viewModeBtns:null,_viewParams:null,_previousViewParams:null,_viewMode:null,view:null,_autoSelectElements:null,$countSpinner:null,$countContainer:null,$actionsContainer:null,$actionMenuBtn:null,page:1,resultSet:null,totalResults:null,totalUnfilteredResults:null,$exportBtn:null,actions:null,actionsHeadHtml:null,actionsBodyHtml:null,$selectAllContainer:null,$selectAllCheckbox:null,showingActionTriggers:!1,exporters:null,exportersByType:null,triggers:null,_$triggers:null,_cancelToken:null,viewMenus:null,activeViewMenu:null,filterHuds:null,_activeElement:null,inlineEditing:!1,nestedInputNamespace:null,get viewMode(){return"structure"!==this._viewMode||this.canSort?this.validateViewMode(this._viewMode):this.validateViewMode(null)},set viewMode(t){this._viewMode=t?this.validateViewMode(t):null},get paginated(){return!(!this.isAdministrative||"structure"===this.viewMode)},get selectable(){return!(!this.actions&&!this.settings.selectable||this.inlineEditing)},get multiSelect(){return!!(this.actions||this.settings.selectable&&this.settings.multiSelect)},get sortable(){return this.settings.sortable&&this.canSort&&!this.inlineEditing},get canSort(){return this.isAdministrative&&!this.status&&!this.trashed&&!this.drafts&&!this.searching&&!this.hasActiveFilter},get isAdministrative(){return["index","embedded-index"].includes(this.settings.context)},get hasActiveFilter(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&this.filterHuds[this.siteId][this.sourceKey].isActive},get baseCriteria(){var t={};if(this.$source&&Object.assign(t,this.$source.data("criteria")),this.settings.criteria&&Object.assign(t,this.settings.criteria),this.sourcePath.length){var e=this.sourcePath[this.sourcePath.length-1];e.criteria&&Object.assign(t,e.criteria)}return t},get sourceStates(){return this.hasImplicitSource?{__IMP__:this.instanceState.source||{}}:this._sourceStates},set sourceStates(t){this.hasImplicitSource?this.setInstanceState("source",t.__IMP__||{}):(this._sourceStates=t,Craft.setLocalStorage(this.sourceStatesStorageKey,this.sourceStates))},init:function(t,e,n){var i=this;this.elementType=t,this.$container=e,this.setSettings(n,Craft.BaseElementIndex.defaults),this.$container.data("elementIndex",this),this.nestedInputNamespace="elementindex-".concat(Math.floor(1e5*Math.random())),this.sourcePaths={},this.idPrefix=Craft.randomString(10),this.$main=this.$container.find(".main"),this.$toolbar=this.$container.find(this.settings.toolbarSelector),this.$statusMenuBtn=this.$toolbar.find(".statusmenubtn:first"),this.$statusMenuContainer=this.$statusMenuBtn.parent(),this.$siteMenuBtn=this.$container.find(".sitemenubtn:first"),this.$searchContainer=this.$toolbar.find(".search-container:first"),this.$search=this.$searchContainer.children("input:first"),this.$filterBtn=this.$searchContainer.children(".filter-btn:first"),this.$clearSearchBtn=this.$searchContainer.children(".clear-btn:first"),this.$sidebar=this.$container.find(".sidebar:first"),this.$sourceActionsContainer=this.$sidebar.find("#".concat(this.namespaceId("source-actions"))),this.$sourceActionsContainer=this.$sidebar.find("#source-actions"),this.$srStatusContainer=this.$container.find("[data-status-message]"),this.$elements=this.$container.find(".elements:first"),this.$updateSpinner=this.$elements.find(".spinner"),this.$updateSpinner.length||(this.$updateSpinner=$("<div/>",{class:"update-spinner spinner spinner-absolute"}).appendTo(this.$elements)),this.$countSpinner=this.$container.find("#".concat(this.namespaceId("count-spinner"))),this.$countContainer=this.$container.find("#".concat(this.namespaceId("count-container"))),this.$actionsContainer=this.$container.find("#".concat(this.namespaceId("actions-container"))),this.$exportBtn=this.$container.find("#".concat(this.namespaceId("export-btn"))),this.settings.hideSidebar&&(this.$sidebar.hide(),$(".body, .content",this.$container).removeClass("has-sidebar"));var r=this.findSources();if(1===r.length&&"__IMP__"===r.data("key")&&(this.hasImplicitSource=!0),this.instanceState=this.getDefaultInstanceState(),this.settings.storageKey&&$.extend(this.instanceState,Craft.getLocalStorage(this.settings.storageKey),{}),this.hasImplicitSource||(this._sourceStates={},this.sourceStatesStorageKey="BaseElementIndex."+this.elementType+"."+this.settings.context,Object.assign(this._sourceStates,Craft.getLocalStorage(this.sourceStatesStorageKey,{}))),this.initSources(r)){if(this.$statusMenuBtn.length&&(this.statusMenu=this.$statusMenuBtn.menubtn().data("menubtn").menu,this.statusMenu.on("optionselect",this._handleStatusChange.bind(this))),this.$siteMenuBtn.length){this.siteMenu=this.$siteMenuBtn.menubtn().data("menubtn").menu;var a=this.siteMenu.$options.filter(".sel:first");if(a.length||(a=this.siteMenu.$options.first()),a.length?this._setSite(a.data("site-id")):this.settings.criteria={id:"0"},this.siteMenu.on("optionselect",this._handleSiteChange.bind(this)),this.siteId){var s=this.settings.defaultSiteId||Craft.cp.getSiteId();if(s&&s!=this.siteId){var o=this.siteMenu.$options.filter('[data-site-id="'+s+'"]:first');o.length&&o.trigger("click")}}}else this.settings.criteria&&this.settings.criteria.siteId&&"*"!==this.settings.criteria.siteId?this._setSite(this.settings.criteria.siteId):this._setSite(Craft.siteId);this.settings.criteria&&this.settings.criteria.siteId&&delete this.settings.criteria.siteId,this.addListener(this.$search,"input",(function(){!i.searching&&i.$search.val()?i.startSearching():i.searching&&!i.$search.val()&&i.stopSearching(),i.searchTimeout&&clearTimeout(i.searchTimeout),i.searchTimeout=setTimeout(i.updateElementsIfSearchTextChanged.bind(i),500)})),this.addListener(this.$search,"keypress",(function(t){t.keyCode===Garnish.RETURN_KEY&&(t.preventDefault(),i.searchTimeout&&clearTimeout(i.searchTimeout),i.updateElementsIfSearchTextChanged())})),this.addListener(this.$clearSearchBtn,"click",(function(){i.clearSearch(!0),Garnish.isMobileBrowser(!0)||i.$search.trigger("focus")})),"embedded-index"===this.settings.context||Garnish.isMobileBrowser(!0)||!1!==Craft.disableAutofocus||this.$search.trigger("focus"),this.viewMenus={},this.filterHuds={},this.addListener(this.$filterBtn,"click","showFilterHud");var l,c="index"===this.settings.context?Craft.getQueryParams():{};if(c.status){var h;switch(c.status){case"trashed":h="[data-trashed]";break;case"drafts":h="[data-drafts]";break;default:h='[data-status="'.concat(c.status,'"]')}var u=this.statusMenu.$options.filter(h);u.length?this.statusMenu.selectOption(u[0]):Craft.setQueryParam("status",null)}this.addListener(this.$exportBtn,"click","_showExportHud"),this.initialized=!0,this.afterInit(),l="index"===this.settings.context?void 0!==c.sourcePathStep?c.sourcePathStep:this.getSelectedSourceState("sourcePathStep"):this.instanceState.sourcePathStep||null,this.selectDefaultSource();var d=this.getDefaultSourcePath();d&&1!=d.length||!l?(d&&(this.sourcePath=d),this.afterSetInitialSource(c)):this.loadSourcePathByKey(l).then((function(t){if(t){var e=i.sourceKey.split("/").slice(-1)[0],n=t.findIndex((function(t){return t.key===e}));-1!==n&&(i.sourcePath=t.slice(n))}i.afterSetInitialSource(c)}))}},afterInit:function(){this.onAfterInit()},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.settings.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.settings.namespace)},loadSourcePathByKey:function(t){var e=this;return new Promise((function(n,i){if(t!==e.sourceKey){var r=e.getViewParams();r.stepKey=t,Craft.sendActionRequest("POST","element-indexes/source-path",{data:r}).then((function(t){var e=t.data;n(e.sourcePath)})).catch(i)}else n([])}))},afterSetInitialSource:function(t){if("index"===this.settings.context&&this.addListener(Garnish.$win,"resize","handleResize"),this.handleResize(),t.search&&(this.startSearching(),this.searchText=t.search),t.filters&&this.createFilterHud({showOnInit:!1,serialized:t.filters}),t.sort){var e=t.sort.lastIndexOf("-");if(-1!==e){var n=t.sort.substring(0,e),i=t.sort.substring(e+1);this.setSelectedSortAttribute(n,i)}}this.setPage(Craft.pageNum),this.updateElements(!0)},handleResize:function(){this.sourcePath.length&&this.settings.showSourcePath&&this._updateSourcePathVisibility()},_createCancelToken:function(){return this._cancelToken=axios.CancelToken.source(),this._cancelToken.token},_cancelRequests:function(){this._cancelToken&&this._cancelToken.cancel()},getSourceContainer:function(){return this.$sidebar.find("nav > ul")},getSourceLabel:function(){return this.$source.data("label")},getItemLabel:function(){return Craft.elementTypeNames[this.elementType]?Craft.elementTypeNames[this.elementType][2]:this.settings.elementTypeName.toLowerCase()},getItemsLabel:function(){return Craft.elementTypeNames[this.elementType]?Craft.elementTypeNames[this.elementType][3]:this.settings.elementTypePluralName.toLowerCase()},getFirstItemNumber:function(t){return Math.min(this.settings.batchSize*(this.page-1)+1,t)},getLastItemNumber:function(t,e){return Math.min(t+(this.settings.batchSize-1),e)},get $sources(){if(this.sourceNav)return this.sourceNav.$items},getSite:function(){var t=this;if(this.siteId)return Craft.sites.find((function(e){return e.id==t.siteId}))},initSources:function(t){if(void 0===t&&(t=this.findSources()),0===t.length)return!1;this.sourceNav||(this.sourceNav=new b(this.$sidebar.find("nav"),{onSelectionChange:this._handleSourceSelectionChange.bind(this)})),this.sourcesByKey={};for(var e=0;e<t.length;e++)this.initSource($(t[e]));return!0},findSources:function(){return this._getSourcesInList(this.getSourceContainer(),!0)},selectDefaultSource:function(){var t,e;return"index"===this.settings.context&&(t=Craft.getQueryParam("source")),t||(t=this.getDefaultSourceKey()),t&&(e=this.getSourceByKey(t),-1===this.$visibleSources.index(e)&&(e=null)),t&&e||(e=this.$visibleSources.first()),this.selectSource(e)},refreshSources:function(){var t=this;this.sourceNav.removeAllItems(),this.setIndexBusy(),Craft.sendActionRequest("POST",this.settings.refreshSourcesAction,{data:{context:this.settings.context,elementType:this.elementType}}).then((function(e){t.setIndexAvailable(),t.getSourceContainer().replaceWith(e.data.html),t.initSources(),t.selectDefaultSource()})).catch((function(e){axios.isCancel(e)||(t.setIndexAvailable(),Craft.cp.displayError(Craft.t("app","A server error occurred.")))}))},initSource:function(t){this.sourceNav.addItems(t),this.initSourceToggle(t),this.sourcesByKey[t.data("key")]=t,t.data("hasNestedSources")&&-1!==this.instanceState.expandedSources.indexOf(t.data("key"))&&this._expandSource(t)},initSourceToggle:function(t){this.deinitSourceToggle(t);var e=this._getSourceToggle(t);e.length?(this.addListener(t,"dblclick","_handleSourceDblClick"),this.addListener(e,"click","_handleSourceToggleClick"),t.data("hasNestedSources",!0)):t.data("hasNestedSources",!1)},deinitSource:function(t){this.sourceNav.removeItems(t),this.deinitSourceToggle(t),delete this.sourcesByKey[t.data("key")]},deinitSourceToggle:function(t){t.data("hasNestedSources")&&(this.removeListener(t,"dblclick"),this.removeListener(this._getSourceToggle(t),"click")),t.removeData("hasNestedSources")},getDefaultInstanceState:function(){var t={selectedSource:null,expandedSources:[]};return this.hasImplicitSource&&(t.source={}),t},getDefaultSourceKey:function(){var t;if(this.settings.preferStoredSource&&this.instanceState.selectedSource)return this.settings.defaultSource=null,this.settings.defaultSourcePath=null,this.instanceState.selectedSource;var e=null;if(this.settings.defaultSource){var n,i=null,r=!1,a=l(this.settings.defaultSource.split("/"));try{for(a.s();!(n=a.n()).done;){var s=n.value;i&&(this._expandSource(i),r=!0);var o=(null!==e?"".concat(e,"/"):"")+s,c=this.getSourceByKey(o);if(!c){i&&this._collapseSource(i);break}i=c,e=o}}catch(t){a.e(t)}finally{a.f()}r&&this._setSite(this.siteId)}return e||(this.settings.defaultSource=null,this.settings.defaultSourcePath=null),null!==(t=e)&&void 0!==t?t:this.instanceState.selectedSource},getDefaultSourcePath:function(){return null!==this.settings.defaultSourcePath&&void 0!==this.settings.defaultSourcePath[0]&&!0===this.settings.defaultSourcePath[0].canView?this.settings.defaultSourcePath:null},getDefaultExpandedSources:function(){return this.instanceState.expandedSources},get sourcePath(){return this.sourcePaths[this.sourceKey]||[]},set sourcePath(t){var e=this;if(this.sourcePaths[this.sourceKey]=t&&t.length?t:null,this.$sourcePathOuterContainer&&(this.$sourcePathOuterContainer.remove(),this.$sourcePathOuterContainer=null,this.$sourcePathInnerContainer=null,this.$sourcePathOverflowBtnContainer=null,this.$sourcePathActionsBtn=null),this.sourcePaths[this.sourceKey]&&this.settings.showSourcePath){var n=this.getSourcePathActions();this.$sourcePathOuterContainer=$("<div/>",{class:"source-path"}).insertBefore(this.$elements),this.$sourcePathInnerContainer=$("<div/>",{class:"chevron-btns"}).appendTo(this.$sourcePathOuterContainer);var i,r,a,s=$("<nav/>",{"aria-label":this.getSourcePathLabel()}).appendTo(this.$sourcePathInnerContainer),o=$("<ol/>").appendTo(s);if(t.length>1){this.$sourcePathOverflowBtnContainer=$("<li/>",{class:"first-step hidden"}).appendTo(o),r="menu"+Math.floor(1e6*Math.random()),i=$("<button/>",{type:"button",class:"btn",title:Craft.t("app","More items"),"aria-label":Craft.t("app","More items"),"data-disclosure-trigger":!0,"aria-controls":r}).append($("<span/>",{class:"btn-body"}).append($("<span/>",{class:"label"}).append($("<span/>",{"data-icon":"ellipsis","aria-hidden":"true"})))).append($("<span/>",{class:"chevron-right"})).appendTo(this.$sourcePathOverflowBtnContainer);var l=$("<div/>",{id:r,class:"menu menu--disclosure"}).appendTo(this.$sourcePathOverflowBtnContainer);a=$("<ul/>").appendTo(l),i.disclosureMenu()}for(var c=0;c<t.length;c++)!function(r){var s=t[r];a&&r<t.length-1&&(s.$overflowLi=$("<li/>",{class:"hidden"}).appendTo(a),$("<a/>",{class:"flex flex-nowrap",href:"#",type:"button",role:"button",html:s.icon?'<span data-icon="'.concat(s.icon,'" aria-hidden="true"></span><span>').concat(s.label,"</span>"):s.label}).appendTo(s.$overflowLi).on("click",(function(t){t.preventDefault(),i.data("trigger").hide(),e.selectSourcePathStep(r)})));var l=0===r,c=r===t.length-1;s.$li=$("<li/>").appendTo(o),l&&s.$li.addClass("first-step"),s.$btn=$("<a/>",{href:s.uri?Craft.getCpUrl(s.uri):"#",class:"btn",role:"button"}),s.icon&&s.$btn.attr("aria-label",s.label);var h=$("<span/>",{class:"btn-body"}).appendTo(s.$btn);s.$label=$("<span/>",{class:"label",html:s.icon?'<span data-icon="'.concat(s.icon,'" aria-hidden="true"></span>'):s.label}).appendTo(h),s.$btn.append($('<span class="chevron-left"/>')),c&&n.length?s.$btn.addClass("has-action-menu"):s.$btn.append($('<span class="chevron-right"/>')),c&&s.$btn.addClass("current-step").attr("aria-current","page"),s.$btn.appendTo(s.$li),e.addListener(s.$btn,"activate",(function(){e.selectSourcePathStep(r)}))}(c);if(n&&n.length){var h=this.getSourcePathActionLabel(),u="menu"+Math.floor(1e6*Math.random());this.$sourcePathActionsBtn=$("<button/>",{type:"button",class:"btn current-step",title:h,"aria-label":h,"data-disclosure-trigger":!0,"aria-controls":u}).append($("<span/>",{class:"btn-body"}).append($("<span/>",{class:"label"}))).append($("<span/>",{class:"chevron-right"})).appendTo(this.$sourcePathInnerContainer);var d=[n.filter((function(t){return!t.destructive&&!t.administrative})),n.filter((function(t){return t.destructive&&!t.administrative})),n.filter((function(t){return t.administrative}))].filter((function(t){return t.length})),f=$("<div/>",{id:u,class:"menu menu--disclosure"}).appendTo(this.$sourcePathInnerContainer);d.forEach((function(t,n){0!==n&&$("<hr/>").appendTo(f),e._buildSourcePathActionList(t).appendTo(f)})),this.$sourcePathActionsBtn.disclosureMenu(),this._updateSourcePathVisibility()}"index"===this.settings.context&&void 0!==t[t.length-1].uri&&"undefined"!=typeof history&&history.replaceState({},"",Craft.getCpUrl(t[t.length-1].uri))}var p=(this.sourcePaths[this.sourceKey]?this.sourcePaths[this.sourceKey][this.sourcePaths[this.sourceKey].length-1].key:null)||null;"index"===this.settings.context?this.setSelecetedSourceState("sourcePathStep",p):this.setInstanceState("sourcePathStep",p),this.onSourcePathChange()},getSourcePathLabel:function(){return""},getSourcePathActions:function(){return[]},getSourcePathActionLabel:function(){return""},_updateSourcePathVisibility:function(){var t=this.sourcePath[0],e=this.sourcePath[this.sourcePath.length-1];this.$sourcePathOverflowBtnContainer&&(this.$sourcePathOverflowBtnContainer.addClass("hidden"),t.$li.addClass("first-step"));var n,i=l(this.sourcePath);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.$overflowLi&&r.$overflowLi.addClass("hidden"),r.$li.removeClass("hidden")}}catch(t){i.e(t)}finally{i.f()}e.$label.css("width",""),e.$btn.removeAttr("title");var a=this._checkSourcePathOverage();if(a){if(this.$sourcePathOverflowBtnContainer){this.$sourcePathOverflowBtnContainer.removeClass("hidden"),t.$li.removeClass("first-step");for(var s=0;s<this.sourcePath.length-1;s++){var o=this.sourcePath[s];if(o.$overflowLi.removeClass("hidden"),o.$li.addClass("hidden"),!(a=this._checkSourcePathOverage()))return}}if(!e.icon){var c=e.$label[0].getBoundingClientRect().width;e.$label.width(Math.floor(c-a)),e.$btn.attr("title",e.label)}}},_checkSourcePathOverage:function(){var t=this.$sourcePathOuterContainer[0].getBoundingClientRect().width,e=this.$sourcePathInnerContainer[0].getBoundingClientRect().width;return Math.max(e-t,0)},_buildSourcePathActionList:function(t){var e=this,n=$("<ul/>");return t.forEach((function(t){var i=$("<a/>",{href:"#",type:"button",role:"button","aria-label":t.label,text:t.label}).on("click",(function(n){n.preventDefault(),e.$sourcePathActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&i.addClass("error"),$("<li/>").append(i).appendTo(n)})),n},onSourcePathChange:function(){this.settings.onSourcePathChange(),this.trigger("sourcePathChange")},selectSourcePathStep:function(t){this.sourcePath=this.sourcePath.slice(0,t+1),this.sourcePath[t].$btn.focus(),this.clearSearch(!1),this.updateElements()},startSearching:function(){this.$clearSearchBtn.removeClass("hidden"),this.searching=!0,this.sortByScore=!0},clearSearch:function(t){this.searching&&(this.$search.val(""),this.searchTimeout&&clearTimeout(this.searchTimeout),this.stopSearching(),t?this.updateElementsIfSearchTextChanged():this.searchText=null)},stopSearching:function(){this.$clearSearchBtn.addClass("hidden"),this.searching=!1,this.sortByScore=!1},setInstanceState:function(t,e){"object"===o(t)?$.extend(this.instanceState,t):this.instanceState[t]=e,this.storeInstanceState()},storeInstanceState:function(){this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.instanceState)},getSourceState:function(t,e,n){if(!t)return null;if(void 0===this.sourceStates[t]){var i=t.lastIndexOf("/");if(-1!==i)return this.getSourceState(t.substring(0,i),e,n)}var r=this.sourceStates[t]||{};return void 0===e?Object.assign({},r):void 0!==r[e]?r[e]:void 0!==n?n:null},getSelectedSourceState:function(t,e){return this.getSourceState(this.instanceState.selectedSource,t,e)},setSelecetedSourceState:function(t,e){var n=this.getSelectedSourceState();if(null==n&&(n=[]),"object"===o(t))for(var i in t)t.hasOwnProperty(i)&&(null!==t[i]?n[i]=t[i]:delete n[i]);else null!==e?n[t]=e:delete n[t];var r="*";null!=this.instanceState.selectedSource&&(r=this.instanceState.selectedSource);var a=this.sourceStates;a[r]=n,this.sourceStates=a},storeSortAttributeAndDirection:function(){},setPage:function(t){if(this.isAdministrative){t=Math.max(t,1),this.page=t;var e=Craft.getPageUrl(this.page);history.replaceState({},"",e)}},_resetCount:function(){this.resultSet=null,this.totalResults=null,this.totalUnfilteredResults=null},updateSourceMenu:function(){var t=this;if(this.$sourceActionsContainer.length){this.$sourceActionsBtn&&(this.$sourceActionsBtn.data("trigger").destroy(),this.$sourceActionsContainer.empty(),$("#".concat(this.namespaceId("source-actions-menu"))).remove(),this.$sourceActionsBtn=null);var e=this.getSourceActions();if(e.length){var n=[e.filter((function(t){return!t.destructive&&!t.administrative})),e.filter((function(t){return t.destructive&&!t.administrative})),e.filter((function(t){return t.administrative}))].filter((function(t){return t.length}));this.$sourceActionsBtn=$("<button/>",{type:"button",class:"btn action-btn hairline",title:Craft.t("app","Source settings"),"aria-label":Craft.t("app","Source settings"),"aria-controls":"source-actions-menu"}).appendTo(this.$sourceActionsContainer);var i=$("<div/>",{id:"source-actions-menu",class:"menu menu--disclosure"}).appendTo(this.$sourceActionsContainer);n.forEach((function(e,n){0!==n&&$("<hr/>").appendTo(i),t._buildActionList(e).appendTo(i)})),this.$sourceActionsBtn.disclosureMenu()}}},_buildActionList:function(t){var e=this,n=$("<ul/>");return t.forEach((function(t){var i=$("<button/>",{type:"button",class:"menu-item",text:t.label}).on("click",(function(){e.$sourceActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&i.addClass("error"),$("<li/>").append(i).appendTo(n)})),n},getSourceActions:function(){var t=this,e=[];return Craft.userIsAdmin&&Craft.allowAdminChanges&&e.push({label:Craft.t("app","Customize sources"),administrative:!0,onSelect:function(){t.createCustomizeSourcesModal()}}),e},updateViewMenu:function(){if(!this.activeViewMenu||this.activeViewMenu!==this.viewMenus[this.sourceKey]){if(this.activeViewMenu&&this.activeViewMenu.hideTrigger(),!this.viewMenus[this.sourceKey]){if(!this.getViewModesForSource().find((function(t){return"table"===t.mode}))&&this.settings.sortable)return;this.viewMenus[this.sourceKey]=new y(this,this.$source)}this.activeViewMenu=this.viewMenus[this.sourceKey],this.activeViewMenu.showTrigger()}},getViewSettings:function(){return{}},getViewParams:function(){var t=Object.assign({status:null,drafts:!!this.settings.canHaveDrafts&&null,draftOf:!(!this.settings.canHaveDrafts||!this.drafts)&&null,savedDraftsOnly:!0},this.baseCriteria,{siteId:this.siteId}),e={offset:this.settings.batchSize*(this.page-1),limit:this.settings.batchSize,search:this.searching?this.searchText:null};this.settings.canHaveDrafts&&this.drafts&&(e.drafts=!0),this.trashed&&(e.trashed=!0),!this.$statusMenuContainer.hasClass("hidden")&&this.status&&(e.status=this.status);var n={context:this.settings.context,elementType:this.elementType,canHaveDrafts:this.settings.canHaveDrafts,source:this.instanceState.selectedSource,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,baseCriteria:t,criteria:e,disabledElementIds:this.settings.disabledElementIds,viewState:$.extend({},this.getSelectedSourceState()),paginated:this.paginated,selectable:this.selectable,sortable:this.sortable};if(n.viewState.showHeaderColumn=this.settings.showHeaderColumn,n.viewState.inlineEditing=this.inlineEditing,n.viewState.nestedInputNamespace=this.nestedInputNamespace,n.viewState.mode=this.viewMode,"structure"===this.viewMode)n.viewState.mode="table",n.viewState.order="structure",n.viewState.sort="asc",void 0===this.instanceState.collapsedElementIds&&(this.instanceState.collapsedElementIds=[]),n.collapsedElementIds=this.instanceState.collapsedElementIds;else if(!this.sortable&&!this.inlineEditing){var i=s(this.getSortAttributeAndDirection(),2),r=i[0],a=i[1];n.viewState.order=r,n.viewState.sort=a}return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&(this.filterHuds[this.siteId][this.sourceKey].conditionConfig||this.filterHuds[this.siteId][this.sourceKey].serialized)&&(n.filterConfig=this.filterHuds[this.siteId][this.sourceKey].conditionConfig,n.filters=this.filterHuds[this.siteId][this.sourceKey].serialized),this.hasImplicitSource&&void 0===n.viewState.tableColumns&&(n.viewState.tableColumns=this.getDefaultTableColumns()),this.trigger("registerViewParams",{params:n}),n},updateElements:function(t,e){var n=this;return new Promise((function(e,i){n.initialized?(n.onBeforeUpdateElements(),n._cancelRequests(),n.setIndexBusy(),n.view&&n.view.disable(),!0!==t&&(n.setPage(1),n._resetCount()),n._previousViewParams=n._viewParams,n._viewParams=n.getViewParams(),Craft.sendActionRequest("POST",n.settings.updateElementsAction,{data:n._viewParams,cancelToken:n._createCancelToken()}).then((function(t){if(n.setIndexAvailable(),"index"===n.settings.context){if(Craft.cp.fixedHeader){var i=Craft.cp.$headerContainer.height(),r=n.$main.offset().top-i;r<Garnish.$scrollContainer.scrollTop()&&Garnish.$scrollContainer.scrollTop(r)}}else n.$main.scrollTop(0);if(n._updateView(n._viewParams,t.data),n.criteriaHasChanged()&&!n.sourceHasChanged()){var a=n.getItemLabel(),s=n.getItemsLabel();n._countResults().then((function(t){var e;if(n.paginated){var i=n.getFirstItemNumber(t);e=Craft.t("app","Showing {first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}",{first:i,last:n.getLastItemNumber(i,t),total:t,item:a,items:s})}else e=Craft.t("app","Showing {total, number} {total, plural, =1{{item}} other{{items}}}",{total:t,item:a,items:s});n.updateLiveRegion(e)}))}else n.updateLiveRegion(n.getSortMessage());e()})).catch((function(t){axios.isCancel(t)||(n.setIndexAvailable(),Craft.cp.displayError(Craft.t("app","A server error occurred."))),i(t)}))):i("The element index isn’t initialized yet.")}))},criteriaHasChanged:function(){return!!this._previousViewParams&&!Craft.compare(this._viewParams.criteria,this._previousViewParams.criteria)},sourceHasChanged:function(){return!!this._previousViewParams&&this._viewParams.source!==this._previousViewParams.source},sortHasChanged:function(){return!!this._previousViewParams&&(this._viewParams.viewState.order!==this._previousViewParams.viewState.order||this._viewParams.viewState.sort!==this._previousViewParams.viewState.sort)},updateElementsIfSearchTextChanged:function(){this.searchText!==(this.searchText=this.searching?this.$search.val():null)&&("index"===this.settings.context&&Craft.setQueryParam("search",this.$search.val()),this.updateElements())},getSortMessage:function(){var t=this.getSelectedSortAttribute(),e="asc"===this.getSelectedSortDirection()?Craft.t("app","Ascending"):Craft.t("app","Descending"),n=this.getSortLabel(t);if(t||e||n)return Craft.t("app","{name} sorted by {attribute}, {direction}",{name:this.getSourceLabel(),attribute:n,direction:e})},updateLiveRegion:function(t){var e=this;t&&(this.$srStatusContainer.empty().text(t),setTimeout((function(){var n=e.$srStatusContainer.text();t===n&&e.$srStatusContainer.empty()}),5e3))},showActionTriggers:function(){this.showingActionTriggers||(this._$triggers?this._$triggers.appendTo(this.$actionsContainer):this._createTriggers(),this.showingActionTriggers=!0)},submitAction:(v=a(i().mark((function t(e,n,r){var a,s,o,l,c;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==(a=this.view.getSelectedElementIds()).length){t.next=3;break}return t.abrupt("return",!1);case 3:if("string"==typeof e&&(e=this._findAction(e)),!e.confirm||confirm(e.confirm)){t.next=6;break}return t.abrupt("return",!1);case 6:if(!r){t.next=9;break}return t.next=9,r();case 9:if(this._cancelRequests(),s=this.getViewParams(),n=n?Craft.expandPostArray(n):{},o=$.extend(s,e.settings||{},n,{elementAction:e.type,elementIds:a}),this.setIndexBusy(),this._autoSelectElements=a,!e.download){t.next=25;break}return Craft.csrfTokenName&&(o[Craft.csrfTokenName]=Craft.csrfTokenValue),t.prev=17,t.next=20,Craft.downloadFromUrl("POST",Craft.getActionUrl(this.settings.submitActionsAction),o);case 20:return t.prev=20,this.setIndexAvailable(),t.finish(20);case 23:t.next=42;break;case 25:return t.prev=25,t.next=28,Craft.sendActionRequest("POST",this.settings.submitActionsAction,{data:o,cancelToken:this._createCancelToken()});case 28:l=t.sent,this._resetCount(),this._updateView(s,l.data),void 0!==l.data.badgeCounts&&this._updateBadgeCounts(l.data.badgeCounts),l.data.message&&Craft.cp.displaySuccess(l.data.message),this.afterAction(e,o),t.next=39;break;case 36:t.prev=36,t.t0=t.catch(25),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(c=t.t0.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.message);case 39:return t.prev=39,this.setIndexAvailable(),t.finish(39);case 42:case"end":return t.stop()}}),t,this,[[17,,20,23],[25,36,39,42]])}))),function(t,e,n){return v.apply(this,arguments)}),_findAction:function(t){for(var e=0;e<this.actions.length;e++)if(this.actions[e].type===t)return this.actions[e];throw"Invalid element action: ".concat(t)},afterAction:function(t,e){Craft.cp.runQueue(),this.onAfterAction(t,e)},hideActionTriggers:function(){this.showingActionTriggers&&(this._$triggers.detach(),this.showingActionTriggers=!1)},updateSelectAllCheckbox:function(){if(this.$selectAllCheckbox){var t=this.view.getSelectedElements().length;0!==t?t===this.view.getEnabledElements().length?(this.$selectAllCheckbox.removeClass("indeterminate"),this.$selectAllCheckbox.addClass("checked"),this.$selectAllCheckbox.attr("aria-checked","true")):(this.$selectAllCheckbox.addClass("indeterminate"),this.$selectAllCheckbox.removeClass("checked"),this.$selectAllCheckbox.attr("aria-checked","mixed")):(this.$selectAllCheckbox.removeClass("indeterminate checked"),this.$selectAllCheckbox.attr("aria-checked","false"))}},updateActionTriggers:function(){this.actions&&(0!==this.view.getSelectedElements().length?this.showActionTriggers():this.hideActionTriggers())},getSelectedElements:function(){return this.view?this.view.getSelectedElements():$()},getSelectedElementIds:function(){return this.view?this.view.getSelectedElementIds():[]},setStatus:function(t){var e=this.statusMenu.$options.filter('a[data-status="'+t+'"]:first');e.length&&this.statusMenu.selectOption(e[0])},getSelectedSortAttribute:function(t){if(t=t||this.$source){var e=this.getSourceState(t.data("key"),"order");if(this.getSortOption(e,t))return e}return this.getDefaultSort()[0]},getSelectedSortDirection:function(t){if(t=t||this.$source){var e=this.getSourceState(t.data("key"),"sort");if(["asc","desc"].includes(e))return e}return this.getDefaultSort()[1]},setSortAttribute:function(t){this.setSelectedSortAttribute(t)},setSelectedSortAttribute:function(t,e){if("score"!==t){this.sortByScore=!1;var n=this.getSortOption(t);if(n){e||(e=n.defaultDir);var i=[],r=[t],a=this.getSelectedSourceState("order");a&&a!==t&&(i.push([a,this.getSelectedSourceState("sort")]),r.push(a));for(var o=this.getSelectedSourceState("orderHistory",[]),l=0;l<o.length;l++){var c=s(o[l],1)[0];if(!c||r.includes(c))break;i.push(o[l]),r.push(c)}this.setSelecetedSourceState({order:t,sort:e,orderHistory:i}),"index"===this.settings.context&&Craft.setQueryParam("sort","".concat(t,"-").concat(e))}else console.warn("Invalid sort option: ".concat(t))}else this.sortByScore=!0},setSortDirection:function(t){this.setSelectedSortDirection(t)},setSelectedSortDirection:function(t){this.setSelectedSortAttribute(this.getSelectedSortAttribute(),t)},getSortAttributeAndDirection:function(){return this.searching&&this.sortByScore?["score","desc"]:[this.getSelectedSortAttribute(),this.getSelectedSortDirection()]},getSortLabel:function(t){var e=this.getSortOption(t);return e?e.label:null},getSelectedViewMode:function(){return this.validateViewMode(this.getSelectedSourceState("mode")||null)},getSourceLevel:function(t){return t.parentsUntil("nav","ul.nested").length+1},getParentSource:function(t){var e=t.parent().parent().siblings("a");return e.length?e:null},getRootSource:function(t){for(var e;e=this.getParentSource(t);)t=e;return t},getSourceByKey:function(t){return this.sourcesByKey[t]||null},selectSource:function(t){var e=$(t);if(!this.sourcesByKey||!Object.keys(this.sourcesByKey).length)return!1;if(this.$source&&this.$source[0]&&this.$source[0]===e[0]&&e.data("key")===this.sourceKey)return!1;if(this.hideActionTriggers(),this.$source=e,this.$rootSource=this.getRootSource(e),this.sourceKey=e.data("key"),this.rootSourceKey=this.$rootSource.data("key"),this.setInstanceState("selectedSource",this.sourceKey),this.sourceNav.selectItem(e),Craft.cp.updateContentHeading(),this.searching&&(this.searchText=null,this.$search.val(""),"index"===this.settings.context&&Craft.setQueryParam("search",null),this.stopSearching()),this.$statusMenuBtn.length&&(void 0!==this.baseCriteria.status?this.$statusMenuContainer.addClass("hidden"):this.$statusMenuContainer.removeClass("hidden"),this.trashed)){var n=this.statusMenu.$options.first();this.setStatus(n.data("status"))}if(this.$viewModeBtnContainer&&this.$viewModeBtnContainer.remove(),this.viewModeBtns={},this.viewMode=null,this.sourceViewModes=this.getViewModesForSource(),this.sourceViewModes.length>1){this.$viewModeBtnContainer=$('<section class="btngroup btngroup--exclusive"/>').attr("aria-label",Craft.t("app","View")).insertAfter(this.$searchContainer);for(var i=0;i<this.sourceViewModes.length;i++){var r=this.sourceViewModes[i],a=$("<button/>",{type:"button",class:"btn"+(void 0!==r.className?" ".concat(r.className):""),"data-view":r.mode,"data-icon":r.icon,"aria-label":r.title,"aria-pressed":"false",title:r.title}).appendTo(this.$viewModeBtnContainer);this.viewModeBtns[r.mode]=a,this.addListener(a,"click",{mode:r.mode},(function(t){this.selectViewMode(t.data.mode),this.updateElements()}))}}var s=this.getSelectedSourceState("mode");if("table"===s&&"structure"===this.getSourceState(e.data("key"),"order")&&(s="structure"),s&&this.doesSourceHaveViewMode(s)||(s=this.viewMode&&this.doesSourceHaveViewMode(this.viewMode)?this.viewMode:this.sourceViewModes[0].mode),this.selectViewMode(s),this.updateSourceMenu(),this.updateViewMenu(),!this.filterHudExists()&&this.$source.data("default-filter")?this.createFilterHud({showOnInit:!1,conditionConfig:this.$source.data("default-filter")}):this.updateFilterBtn(),this.onSelectSource(),this.sourcePath=this.sourcePaths[this.sourceKey]||this.$source.data("default-source-path"),"index"===this.settings.context){var o=Craft.getQueryParams();o.source=this.sourceKey,Craft.setUrl(Craft.getUrl(Craft.path,o))}return!0},selectSourceByKey:function(t){var e=this.getSourceByKey(t);return!!e&&this.selectSource(e)},getSourceData:function(t,e){if(t||(t=this.$source),t){var n=t.data(e);if(void 0===n){var i=this.getParentSource(t);if(i)return this.getSourceData(i,e)}return n}},getSortOptions:function(t){var e=this.getSourceData(t,"sort-opts")||[];return e.length||e.push({label:Craft.t("app","Title"),attr:"title",defaultDir:"asc"}),e},getSortOption:function(t,e){return this.getSortOptions(e).find((function(e){return e.attr===t}))||null},getDefaultSort:function(t){var e=this.getSourceData(t,"default-sort");if(e){"string"==typeof e&&(e=[e]);var n=this.getSortOption(e[0],t);if(n)return e[1]||(e[1]=n.defaultDir),e}var i=this.getSortOptions(t);return[i[0].attr,i[0].defaultDir]},getTableColumnOptions:function(t){return this.getSourceData(t,"table-col-opts")||[]},getTableColumnOption:function(t,e){return this.getTableColumnOptions(e).find((function(e){return e.attr===t}))||null},getDefaultTableColumns:function(t){return this.getSourceData(t,"default-table-cols")||[]},getSelectedTableColumns:function(t){var e=this;if(t||(t=this.$source),t){var n=this.getSourceState(t.data("key"),"tableColumns");if(n)return n.filter((function(n){return!!e.getTableColumnOption(n,t)}))}return this.getDefaultTableColumns(t)},setSelectedTableColumns:function(t){this.setSelecetedSourceState({tableColumns:t}),this.activeViewMenu&&this.activeViewMenu.updateTableColumnField()},getViewModesForSource:function(){var t=this,e=[];return Garnish.isMobileBrowser(!0)||(Garnish.hasAttr(this.$source,"data-has-structure")&&e.push({mode:"structure",title:Craft.t("app","Display in a structured table"),icon:"rtl"===Craft.orientation?"structurertl":"structure"}),e.push({mode:"table",title:Craft.t("app","Display in a table"),icon:"list"})),this.$source&&Garnish.hasAttr(this.$source,"data-has-thumbs")&&e.push({mode:"thumbs",title:Craft.t("app","Display as thumbnails"),icon:"grid"}),e.push({mode:"cards",title:Craft.t("app","Display as cards"),icon:"element-cards"}),this.settings.allowedViewModes?e.filter((function(e){return t.settings.allowedViewModes.includes(e.mode)})):e},doesSourceHaveViewMode:function(t){if(!this.sourceViewModes)return!1;for(var e=0;e<this.sourceViewModes.length;e++)if(this.sourceViewModes[e].mode===t)return!0;return!1},validateViewMode:function(t){return t&&this.doesSourceHaveViewMode(t)?t:this.sourceViewModes&&this.sourceViewModes.length?this.sourceViewModes[0].mode:this.doesSourceHaveViewMode("table")?"table":"cards"},selectViewMode:function(t,e){e||this.doesSourceHaveViewMode(t)||(t=this.sourceViewModes[0].mode),t!==this._viewMode&&(this._viewMode&&void 0!==this.viewModeBtns[this._viewMode]&&this.viewModeBtns[this._viewMode].removeClass("active").attr("aria-pressed","false"),this._viewMode=t,this.setSelecetedSourceState("mode",this._viewMode),void 0!==this.viewModeBtns[this._viewMode]&&this.viewModeBtns[this._viewMode].addClass("active").attr("aria-pressed","true"))},createView:function(t,e){return new(this.getViewClass(t))(this,this.$elements,e)},getViewClass:function(t){switch(t){case"table":case"structure":return Craft.TableElementIndexView;case"cards":return Craft.CardsElementIndexView;case"thumbs":return Craft.ThumbsElementIndexView;default:throw'View mode "'.concat(t,'" not supported.')}},rememberDisabledElementId:function(t){-1===$.inArray(t,this.settings.disabledElementIds)&&this.settings.disabledElementIds.push(t)},forgetDisabledElementId:function(t){var e=$.inArray(t,this.settings.disabledElementIds);-1!==e&&this.settings.disabledElementIds.splice(e,1)},enableElements:function(t){t.removeClass("disabled").parents(".disabled").removeClass("disabled");for(var e=0;e<t.length;e++){var n=$(t[e]).data("id");this.forgetDisabledElementId(n)}this.onEnableElements(t)},disableElements:function(t){t.removeClass("sel").addClass("disabled");for(var e=0;e<t.length;e++){var n=$(t[e]).data("id");this.rememberDisabledElementId(n)}this.onDisableElements(t)},getElementById:function(t){return this.view.getElementById(t)},enableElementsById:function(t){t=$.makeArray(t);for(var e=0;e<t.length;e++){var n=t[e],i=this.getElementById(n);i&&i.length?this.enableElements(i):this.forgetDisabledElementId(n)}},disableElementsById:function(t){t=$.makeArray(t);for(var e=0;e<t.length;e++){var n=t[e],i=this.getElementById(n);i&&i.length?this.disableElements(i):this.rememberDisabledElementId(n)}},selectElementAfterUpdate:function(t){null===this._autoSelectElements&&(this._autoSelectElements=[]),this._autoSelectElements.push(t)},addButton:function(t){this.getButtonContainer().append(t)},isShowingSidebar:function(){return null===this.showingSidebar&&(this.showingSidebar=this.$sidebar.length&&!this.$sidebar.hasClass("hidden")),this.showingSidebar},getButtonContainer:function(){if(this.settings.buttonContainer)return $(this.settings.buttonContainer);var t=$("#".concat(this.namespaceId("action-buttons")));return t.length||(t=$("<div/>",{id:this.namespaceId("action-buttons")}).appendTo($("#".concat(this.namespaceId("header"))))),t},setIndexBusy:function(){this.$elements.addClass("busy"),this.$updateSpinner.appendTo(this.$elements),this.isIndexBusy=!0,document.activeElement&&this.$elements[0].contains(document.activeElement)&&(this._activeElement=document.activeElement,document.activeElement.blur());var t=this.$elements.height(),e=window.innerHeight,n=$(document).scrollTop();if("modal"==this.settings.context&&(e=this.$elements.parents(".modal").height(),n=this.$elements.scrollParent().scrollTop()),t>e){var i=Math.floor(n+e/2)-100;i=Math.floor(i/t*100),document.documentElement.style.setProperty("--elements-busy-top-position",i+"%")}this.updateLiveRegion(Craft.t("app","Loading"))},setIndexAvailable:function(){this.$elements.removeClass("busy"),this.$updateSpinner.remove(),this.isIndexBusy=!1,this._activeElement&&(document.activeElement&&document.activeElement!==document.body||(document.body.contains(this._activeElement)?this._activeElement.focus():this._activeElement.id&&$("#".concat(this._activeElement.id)).focus()),this._activeElement=null)},createCustomizeSourcesModal:function(){var t=new Craft.CustomizeSourcesModal(this,{hideOnEsc:!1,hideOnShadeClick:!1,onHide:function(){t.destroy()}});return t},disable:function(){this.sourceNav&&this.sourceNav.disable(),this.view&&this.view.disable(),this.base()},enable:function(){this.sourceNav&&this.sourceNav.enable(),this.view&&this.view.enable(),this.base()},onAfterInit:function(){this.settings.onAfterInit(),this.trigger("afterInit")},onSelectSource:function(){this.settings.onSelectSource(this.sourceKey),this.trigger("selectSource",{sourceKey:this.sourceKey})},onSelectSite:function(){this.settings.onSelectSite(this.siteId),this.trigger("selectSite",{siteId:this.siteId})},onBeforeUpdateElements:function(){this.settings.onBeforeUpdateElements(),this.trigger("beforeUpdateElements")},onUpdateElements:function(){this.settings.onUpdateElements(),this.trigger("updateElements")},onCountResults:function(){this.settings.onCountResults(this.totalResults,this.totalUnfilteredResults),this.trigger("countResults",{total:this.totalResults,totalUnfiltered:this.totalUnfilteredResults})},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},onEnableElements:function(t){this.settings.onEnableElements(t),this.trigger("enableElements",{elements:t})},onDisableElements:function(t){this.settings.onDisableElements(t),this.trigger("disableElements",{elements:t})},onAfterAction:function(t,e){this.settings.onAfterAction(t,e),this.trigger("afterAction",{action:t,params:e})},_handleSourceSelectionChange:function(t){this.sourceNav.$selectedItem?this.selectSource(this.sourceNav.$selectedItem)&&this.updateElements():this.sourceNav.selectItem(this.$visibleSources.first())},_handleActionTriggerSubmit:function(t){t.preventDefault();var e=$(t.currentTarget);e.hasClass("disabled")||e.data("custom-handler")||this._submitActionInternal(e.data("action"),e.data("trigger")&&e.data("trigger").data("trigger"),Garnish.getPostData(e))},_handleMenuActionTriggerSubmit:function(t){var e=$(t.option);e.hasClass("disabled")||e.data("custom-handler")||this._submitActionInternal(e.data("action"),e.data("trigger"))},_submitActionInternal:(m=a(i().mark((function t(e,n,r){var s,o=this;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=this.getSelectedElements(),t.next=3,this.submitAction(e,r,a(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n){t.next=3;break}return t.next=3,n.settings.beforeActivate(s,o);case 3:case"end":return t.stop()}}),t)}))));case 3:if(!n){t.next=6;break}return t.next=6,n.settings.afterActivate(s,this);case 6:case"end":return t.stop()}}),t,this)}))),function(t,e,n){return m.apply(this,arguments)}),_handleStatusChange:function(t){this.statusMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$statusMenuBtn.html(e.html()),this.trashed=!1,this.drafts=!1,this.status=null;var n=null;Garnish.hasAttr(e,"data-trashed")?(this.trashed=!0,n="trashed"):Garnish.hasAttr(e,"data-drafts")?(this.drafts=!0,n="drafts"):this.status=n=e.data("status")||null,"index"===this.settings.context&&Craft.setQueryParam("status",n),this.updateElements()},_handleSiteChange:function(t){this.siteMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$siteMenuBtn.html(e.html()),this._setSite(e.data("site-id")),this.initialized&&this.updateElements(),this.onSelectSite()},_setSite:function(t){var e=null===this.siteId;this.siteId=t,this.updateSourceVisibility(),!this.initialized||e||this.$source&&this.$source.length||!this.$visibleSources.length||this.selectSource(this.$visibleSources[0]);for(var n,i=this.getSourceContainer().children(".heading"),r=0;r<i.length;r++)0!==(n=i.eq(r)).has("> ul > li:not(.hidden)").length?n.removeClass("hidden"):n.addClass("hidden");this.initialized&&("index"===this.settings.context&&Craft.cp.setSiteId(t),this.updateFilterBtn())},updateSourceVisibility:function(){var t=this;this.$visibleSources=$();for(var e=0;e<this.$sources.length;e++){var n=this.$sources.eq(e);Garnish.hasAttr(n,"data-disabled")||void 0!==n.data("sites")&&!n.data("sites").toString().split(",").some((function(e){if(e==t.siteId)return!0;if(e!=parseInt(e)){var n=Craft.sites.find((function(e){return e.id==t.siteId}));if(n&&e==n.uid)return!0}return!1}))?(n.parent().addClass("hidden"),this.$source&&this.$source.get(0)===n.get(0)&&(this.$source=null,this.$rootSource=null,this.sourceKey=null,this.rootSourceKey=null)):(n.parent().removeClass("hidden"),this.$visibleSources=this.$visibleSources.add(n))}},_handleSelectionChange:function(){this.updateSelectAllCheckbox(),this.updateActionTriggers(),this.onSelectionChange()},_handleSourceDblClick:function(t){this._toggleSource($(t.currentTarget)),t.stopPropagation()},_handleSourceToggleClick:function(t){this._toggleSource($(t.currentTarget).prev("a")),t.stopPropagation()},_getSourcesInList:function(t,e){var n=t.find("> li:not(.heading) > a");return e&&(n=n.add(t.find("> li.heading > ul > li > a"))),n},_getChildSources:function(t){var e=t.siblings("ul");return this._getSourcesInList(e)},_getSourceToggle:function(t){return t.siblings(".toggle")},_toggleSource:function(t){t.parent("li").hasClass("expanded")?this._collapseSource(t):this._expandSource(t)},_expandSource:function(t){t.next(".toggle").attr({"aria-expanded":"true"}),t.parent("li").addClass("expanded");for(var e=this._getChildSources(t),n=0;n<e.length;n++)this.initSource($(e[n])),this.$visibleSources&&(this.$visibleSources=this.$visibleSources.add(e[n]));var i=t.data("key");-1===this.instanceState.expandedSources.indexOf(i)&&(this.instanceState.expandedSources.push(i),this.storeInstanceState())},_collapseSource:function(t){t.next(".toggle").attr({"aria-expanded":"false","aria-label":Craft.t("app","Show nested sources")}),t.parent("li").removeClass("expanded");for(var e=this._getChildSources(t),n=0;n<e.length;n++)this.deinitSource($(e[n])),this.$visibleSources=this.$visibleSources.not(e[n]);var i=this.instanceState.expandedSources.indexOf(t.data("key"));-1!==i&&(this.instanceState.expandedSources.splice(i,1),this.storeInstanceState())},_updateView:function(t,e){var n=this;return a(i().mark((function r(){var a,s,o,c,h,u,d;return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.actions){if(n.hideActionTriggers(),n.triggers){a=l(n.triggers);try{for(a.s();!(s=a.n()).done;)s.value.destroy()}catch(t){a.e(t)}finally{a.f()}}n.actions=n.actionsHeadHtml=n.actionsBodyHtml=n.triggers=n._$triggers=n.$actionMenuBtn=null}return n.$countContainer.length&&(n.$countSpinner.removeClass("hidden"),n.$countContainer.html(""),n._countResults().then((function(t){n.$countSpinner.addClass("hidden");var e=n.getItemLabel(),i=n.getItemsLabel();if(n.paginated){var r=n.getFirstItemNumber(t),a=n.getLastItemNumber(r,t),s=Craft.t("app","{first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}",{first:r,last:a,total:t,item:e,items:i}),o=$('<div class="flex pagination"/>').appendTo(n.$countContainer),l=Math.max(Math.ceil(t/n.settings.batchSize),1),c=$("<nav/>",{class:"flex","aria-label":Craft.t("app","{element} pagination",{element:e})}).appendTo(o),h=$("<button/>",{type:"button",role:"button",class:"page-link prev-page"+(n.page>1?"":" disabled"),disabled:1===n.page,title:Craft.t("app","Previous Page")}).appendTo(c),u=$("<button/>",{type:"button",role:"button",class:"page-link next-page"+(n.page<l?"":" disabled"),disabled:n.page===l,title:Craft.t("app","Next Page")}).appendTo(c);$("<div/>",{class:"page-info",text:s}).appendTo(o),n.page>1&&n.addListener(h,"click",(function(){this.removeListener(h,"click"),this.removeListener(u,"click"),this.setPage(this.page-1),this.updateElements(!0)})),n.page<l&&n.addListener(u,"click",(function(){this.removeListener(h,"click"),this.removeListener(u,"click"),this.setPage(this.page+1),this.updateElements(!0)}))}else{var d=Craft.t("app","{total, number} {total, plural, =1{{item}} other{{items}}}",{total:t,item:e,items:i});n.$countContainer.text(d)}})).catch((function(){n.$countSpinner.addClass("hidden")}))),n.$elements.html(e.html),i.next=5,Craft.appendHeadHtml(e.headHtml);case 5:return i.next=7,Craft.appendBodyHtml(e.bodyHtml);case 7:if(n.$selectAllContainer=n.$elements.find(".selectallcontainer:first"),n.multiSelect||e.actions&&e.actions.length){if(n.$selectAllContainer.length){if(e.actions&&e.actions.length&&(n.actions=e.actions,n.actionsHeadHtml=e.actionsHeadHtml,n.actionsBodyHtml=e.actionsBodyHtml),n.settings.actions&&n.settings.actions.length){n.actions||(n.actions=[]),o=l(n.settings.actions);try{for(o.s();!(c=o.n()).done;)h=c.value,(h=Object.assign({},h)).bodyHtml&&(n.actionsBodyHtml+=h.bodyHtml,delete h.bodyHtml),n.actions.push(h)}catch(t){o.e(t)}finally{o.f()}}n.$selectAllCheckbox=$('<div class="checkbox"/>').prependTo(n.$selectAllContainer).attr({role:"checkbox",tabindex:"0","aria-checked":"false","aria-label":Craft.t("app","Select all")}),n.addListener(n.$selectAllContainer,"click",(function(){0===this.view.getSelectedElements().length?this.view.selectAllElements():this.view.deselectAllElements()})),n.addListener(n.$selectAllCheckbox,"keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(t.preventDefault(),$(t.currentTarget).trigger("click"))}))}}else"TH"!==n.$selectAllContainer.prop("nodeName")&&(n.$selectAllContainer.siblings().length||n.$selectAllContainer.parent(".header").remove(),n.$selectAllContainer.remove());if(n.exporters=e.exporters,n.exportersByType=Craft.index(n.exporters||[],(function(t){return t.type})),n.exporters&&n.exporters.length?n.$exportBtn.removeClass("hidden"):n.$exportBtn.addClass("hidden"),u=Object.assign({context:n.settings.context,batchSize:n.isAdministrative||"structure"===n.viewMode?n.settings.batchSize:null,params:t,selectable:n.selectable,multiSelect:n.multiSelect,canSelectElement:n.settings.canSelectElement,checkboxMode:n.selectable,waitForDoubleClicks:n.settings.waitForDoubleClicks,sortable:n.sortable,onSelectionChange:n._handleSelectionChange.bind(n),onSortChange:n.settings.onSortChange},n.getViewSettings()),n.view&&(n.view.destroy(),delete n.view),n.view=n.createView(n.getSelectedViewMode(),u),n._autoSelectElements){if(n.selectable)for(d=0;d<n._autoSelectElements.length;d++)n.view.selectElementById(n._autoSelectElements[d]);n._autoSelectElements=null}n.onUpdateElements();case 17:case"end":return i.stop()}}),r)})))()},_updateBadgeCounts:function(t){for(var e in t)if(t.hasOwnProperty(e)){var n=this.getSourceByKey(e);if(n){var i=n.children(".badge");null!==t[e]?(i.length||(i=$('<span class="badge"/>').appendTo(n)),i.text(t[e])):i&&i.remove()}}},_countResults:function(){var t=this;return new Promise((function(e,n){if(null!==t.totalResults)e(t.totalResults,t.totalUnfilteredResults),t.onCountResults();else{var i=t.getViewParams();delete i.baseCriteria.offset,delete i.baseCriteria.limit,null===t.resultSet&&(t.resultSet=Math.floor(1e8*Math.random())),i.resultSet=t.resultSet,Craft.sendActionRequest("POST",t.settings.countElementsAction,{data:i,cancelToken:t._createCancelToken()}).then((function(i){i.data.resultSet==t.resultSet?(t.totalResults=i.data.total,t.totalUnfilteredResults=i.data.unfilteredTotal,e(t.totalResults,t.totalUnfilteredResults),t.onCountResults()):n()})).catch(n)}}))},_createTriggers:(g=a(i().mark((function t(){var e,n,r,a,s,o,l,c,h,u,d;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(this.triggers=[],this._$triggers=$(),e=[],n=[],r=0;r<this.actions.length;r++)(a=this.actions[r]).trigger?((s=$("<div/>",{id:"".concat(this.namespaceId(a.type),"-actiontrigger")}).append(a.trigger)).find(".btn").addClass("secondary"),a.settings||(a.settings={}),$.extend(a.settings,Craft.expandPostArray(Garnish.getPostData(s))),s.find("[name]").removeAttr("name"),o="element-action-form-".concat(Math.floor(1e6*Math.random())),l=$("<form/>",{id:o,method:"post",action:"",class:"hidden",data:{action:a}}).appendTo(Garnish.$bod),s.find("button[type=submit],input[type=submit],.formsubmit").addClass("formsubmit").attr("data-form",o),l.data("trigger",s),this.addListener(l,"submit","_handleActionTriggerSubmit"),this._$triggers=this._$triggers.add(s)):a.destructive?n.push(a):e.push(a);return(e.length||n.length)&&(c=$("<form/>"),this.$actionMenuBtn=$("<button/>",{type:"button",class:"btn secondary menubtn","data-icon":"settings",title:Craft.t("app","Actions")}).appendTo(c),h=$('<ul class="menu"/>').appendTo(c),u=this._createMenuTriggerList(e,!1),d=this._createMenuTriggerList(n,!0),u&&u.appendTo(h),u&&d&&$("<hr/>").appendTo(h),d&&d.appendTo(h),this._$triggers=this._$triggers.add(c)),this._$triggers.appendTo(this.$actionsContainer),this.isAdministrative&&(Craft.currentElementIndex=this),t.next=10,Craft.appendHeadHtml(this.actionsHeadHtml);case 10:return t.next=12,Craft.appendBodyHtml(this.actionsBodyHtml);case 12:Craft.initUiElements(this._$triggers),this.$actionMenuBtn&&this.$actionMenuBtn.data("menubtn").on("optionSelect",this._handleMenuActionTriggerSubmit.bind(this));case 14:case"end":return t.stop()}}),t,this)}))),function(){return g.apply(this,arguments)}),_showExportHud:function(){var t=this;this.$exportBtn.addClass("active"),this.$exportBtn.attr("aria-expanded","true");for(var e=$("<form/>",{class:"export-form"}),n=[],i=0;i<this.exporters.length;i++)n.push({label:this.exporters[i].name,value:this.exporters[i].type});var r=Craft.ui.createSelectField({label:Craft.t("app","Export Type"),options:n,class:"fullwidth"}).appendTo(e),a=Craft.ui.createSelectField({label:Craft.t("app","Format"),options:[{label:"CSV",value:"csv"},{label:"JSON",value:"json"},{label:"XML",value:"xml"}],class:"fullwidth"}).appendTo(e),s=r.find("select");this.addListener(s,"change",(function(){var e=s.val();t.exportersByType[e].formattable?a.removeClass("hidden"):a.addClass("hidden")})),s.trigger("change");var o=this.view.getSelectedElementIds();if(!o.length)var l=Craft.ui.createTextField({label:Craft.t("app","Limit"),placeholder:Craft.t("app","No limit"),type:"number",min:1}).appendTo(e);var c=Craft.ui.createSubmitButton({class:"fullwidth",label:Craft.t("app","Export"),spinner:!0}).appendTo(e),h=new Garnish.MultiFunctionBtn(c);new Garnish.HUD(this.$exportBtn,e).on("hide",(function(){t.$exportBtn.removeClass("active"),t.$exportBtn.attr("aria-expanded","false")}));var u=!1;this.addListener(e,"submit",(function(t){if(t.preventDefault(),!u){u=!0,h.busyEvent();var e=this.getViewParams();if(delete e.baseCriteria.offset,delete e.baseCriteria.limit,delete e.collapsedElementIds,e.type=r.find("select").val(),e.format=a.find("select").val(),o.length)e.criteria.id=o;else{var n=parseInt(l.find("input").val());n&&!isNaN(n)&&(e.criteria.limit=n)}Craft.csrfTokenValue&&(e[Craft.csrfTokenName]=Craft.csrfTokenValue),Craft.downloadFromUrl("POST",Craft.getActionUrl("element-indexes/export"),e).catch((function(t){axios.isCancel(t)||Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){u=!1,h.successEvent()}))}}))},_createMenuTriggerList:function(t,e){if(t&&t.length){var n,i=$("<ul/>"),r=l(t);try{for(r.s();!(n=r.n()).done;){var a=n.value;$("<li/>").append($("<a/>",{id:"".concat(this.namespaceId(a.type),"-actiontrigger"),class:e?"error":null,data:{action:a},text:a.name})).appendTo(i)}}catch(t){r.e(t)}finally{r.f()}return i}},filterHudExists:function(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]},showFilterHud:function(){this.filterHudExists()?this.filterHuds[this.siteId][this.sourceKey].show():this.createFilterHud()},createFilterHud:function(t){this.filterHuds[this.siteId]||(this.filterHuds[this.siteId]={}),this.filterHuds[this.siteId][this.sourceKey]=new C(this,this.sourceKey,this.siteId,t),this.updateFilterBtn()},updateFilterBtn:function(){this.$filterBtn.removeClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",null),this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]?(this.$filterBtn.attr("aria-controls",this.filterHuds[this.siteId][this.sourceKey].id).attr("aria-expanded",this.filterHuds[this.siteId][this.sourceKey].showing?"true":"false"),this.hasActiveFilter&&(this.$filterBtn.addClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",this.filterHuds[this.siteId][this.sourceKey].serialized))):this.$filterBtn.attr("aria-controls",null)}},{defaults:{context:"index",namespace:null,modal:null,storageKey:null,condition:null,referenceElementId:null,referenceElementSiteId:null,allowedViewModes:null,showHeaderColumn:!0,criteria:null,batchSize:100,disabledElementIds:[],selectable:!1,multiSelect:!1,waitForDoubleClicks:!1,canSelectElement:null,canDuplicateElements:function(t){return!0},onBeforeDuplicateElements:(p=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return p.apply(this,arguments)}),onDuplicateElements:(f=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return f.apply(this,arguments)}),canDeleteElements:function(t){return!0},onBeforeDeleteElements:(d=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return d.apply(this,arguments)}),onDeleteElements:(u=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return u.apply(this,arguments)}),sortable:!1,inlineEditable:null,actions:null,buttonContainer:null,hideSidebar:!1,toolbarSelector:".toolbar:first",refreshSourcesAction:"element-indexes/get-source-tree-html",updateElementsAction:"element-indexes/get-elements",countElementsAction:"element-indexes/count-elements",submitActionsAction:"element-indexes/perform-action",defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,canHaveDrafts:!1,elementTypeName:Craft.t("app","Element"),elementTypePluralName:Craft.t("app","Elements"),onAfterInit:$.noop,onSelectSource:$.noop,onSelectSite:$.noop,onBeforeUpdateElements:$.noop,onUpdateElements:$.noop,onCountResults:$.noop,onSelectionChange:$.noop,onSourcePathChange:$.noop,onEnableElements:$.noop,onDisableElements:$.noop,onAfterAction:$.noop,onSortChange:$.noop}});var b=Garnish.Base.extend({$container:null,$items:null,$selectedItem:null,init:function(t,e){this.$container=$(t);var n=this.$container.find("[data-source-item]");this.setSettings(e,b.defaults),this.$items=$(),this.addItems(n)},addItems:function(t){for(var e=$(t),n=0;n<e.length;n++){var i=e[n];this.addListener(i,"click",this.handleClick.bind(this)),this.addListener(i,"keydown",this.handleKeypress.bind(this))}this.$items=this.$items.add(e)},removeAllItems:function(){for(var t=0;t<this.$items.length;t++)this._deinitItem(this.$items[t]);this.$items=$(),this.$selectedItem=$()},handleKeypress:function(t){var e=t.keyCode;e!==Garnish.RETURN_KEY&&e!==Garnish.SPACE_KEY||(t.preventDefault(),this.selectItem(t.target))},handleClick:function(t){var e=this.getClosestItem(t.target);this.selectItem(e)},getClosestItem:function(t){return $(t).closest("[data-source-item]")},selectItem:function(t){if(0!==t.length){var e=$(t);this.deselectAll(),this.$selectedItem=e.attr("aria-current","true").addClass(this.settings.selectedClass),this.onSelectionChange()}},deselectAll:function(){this.$items.attr("aria-current","false").removeClass(this.settings.selectedClass),this.onSelectionChange()},removeItems:function(t){t=$.makeArray(t);for(var e=!1,n=!1,i=0;i<t.length;i++){var r=t[i],a=$.inArray(r,this.$items);-1!==a&&(this._deinitItem(r),this.$items.splice(a,1),e=!0,$(r).is(this.$selectedItem)&&(n=!0,this.$selectedItem=null))}e&&n&&($(t).removeClass(this.settings.selectedClass),this.onSelectionChange())},onSelectionChange:function(){this.callbackFrame&&(Garnish.cancelAnimationFrame(this.callbackFrame),this.callbackFrame=null),this.callbackFrame=Garnish.requestAnimationFrame(function(){this.callbackFrame=null,this.trigger("selectionChange"),this.settings.onSelectionChange()}.bind(this))},_deinitItem:function(t){var e=$(t);this.removeAllListeners(e)}},{defaults:{selectedClass:"sel",onSelectionChange:$.noop}}),y=Garnish.Base.extend({elementIndex:null,$source:null,sourceKey:null,menu:null,id:null,$trigger:null,$container:null,$sortField:null,$sortAttributeSelect:null,$sortDirectionPicker:null,sortDirectionListbox:null,$tableColumnsField:null,$tableColumnsContainer:null,$revertContainer:null,$revertBtn:null,$closeBtn:null,init:function(t,e){var n=this;this.elementIndex=t,this.$source=e,this.sourceKey=e.data("key"),this.id="view-menu-".concat(Math.floor(1e9*Math.random())),this.$trigger=$("<button/>",{type:"button",class:"btn menubtn hidden",text:Craft.t("app","View"),"aria-label":Craft.t("app","View settings"),"aria-controls":this.id,"data-icon":"sliders"}).appendTo(this.elementIndex.$toolbar),this.$container=$("<div/>",{id:this.id,class:"menu menu--disclosure element-index-view-menu","data-align":"right"}).appendTo(Garnish.$bod),this._buildMenu(),this.addListener(this.$container,"mousedown",(function(t){t.stopPropagation()})),this.menu=new Garnish.DisclosureMenu(this.$trigger),this.menu.on("show",(function(){n.$trigger.addClass("active"),n.updateSortField(),n.updateTableFieldVisibility()})),this.menu.on("hide",(function(){n.$trigger.removeClass("active"),setTimeout((function(){n.tidyTableColumnField()}),Garnish.FX_DURATION)}))},showTrigger:function(){this.$trigger.removeClass("hidden")},hideTrigger:function(){this.$trigger.data("trigger").hide(),this.$trigger.addClass("hidden"),this.menu.hide()},updateTableFieldVisibility:function(){"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode?(this.$tableColumnsContainer&&this.$tableColumnsContainer.closest(".table-columns-field").addClass("hidden"),this.$revertBtn&&this.$revertBtn.addClass("hidden")):(this.$tableColumnsContainer&&this.$tableColumnsContainer.closest(".table-columns-field").removeClass("hidden"),this.$revertBtn&&this.$revertBtn.removeClass("hidden"))},updateSortField:function(){if(!this.elementIndex.settings.sortable){this.$sortField&&("structure"===this.elementIndex.viewMode?(this.$sortField.addClass("hidden"),this.$tableColumnsField&&this.$tableColumnsField.addClass("first-child")):(this.$sortField.removeClass("hidden"),this.$tableColumnsField&&this.$tableColumnsField.removeClass("first-child")));var t=s(this.elementIndex.getSortAttributeAndDirection(),2),e=t[0],n=t[1],i=this.$sortAttributeSelect.children('option[value="score"]');this.elementIndex.searching?i.length||this.$sortAttributeSelect.prepend($("<option/>",{value:"score",text:Craft.t("app","Score")})):i.length&&i.remove(),this.$sortAttributeSelect.val(e),this.sortDirectionListbox.select("asc"===n?0:1),"score"===e?(this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled")):(this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled"))}},updateTableColumnField:function(){var t=this;if(this.$tableColumnsContainer){var e,n,i=this.elementIndex.getSelectedTableColumns();i.forEach((function(i){var r=t.$tableColumnsContainer.find('input[value="'.concat(i,'"]'));r.prop("checked")||r.prop("checked",!0);var a=r.parent();e&&a.index()<n&&a.insertAfter(e),e=a,n=a.index()}));for(var r=this._getTableColumnCheckboxes(),a=0;a<r.length;a++){var s=r.eq(a);s.prop("checked")&&!i.includes(s.val())&&s.prop("checked",!1)}}},tidyTableColumnField:function(){if(this.$tableColumnsContainer){var t=this.elementIndex.getTableColumnOptions(this.$source).map((function(t){return t.attr})).reduce((function(t,i,r){return e(e({},t),{},n({},i,r))}),{});this.$tableColumnsContainer.children().sort((function(e,n){var i=$(e).children('input[type="checkbox"]')[0],r=$(n).children('input[type="checkbox"]')[0];return i.checked&&r.checked?0:i.checked||r.checked?i.checked?-1:1:t[i.value]<t[r.value]?-1:1})).appendTo(this.$tableColumnsContainer)}},revert:function(){this.elementIndex.setSelecetedSourceState({order:null,sort:null,tableColumns:null}),this.updateSortField(),this.updateTableColumnField(),this.tidyTableColumnField(),this.$revertBtn.remove(),this.$revertBtn=null,this.$closeBtn.focus(),this.elementIndex.updateElements()},_buildMenu:function(){var t=this,e=$('<div class="meta"/>').appendTo(this.$container);this.elementIndex.settings.sortable||(this.$sortField=this._createSortField().appendTo(e)),Garnish.isMobileBrowser(!0)||(this.$tableColumnsField=this._createTableColumnsField().appendTo(e)),this.updateSortField(),this.$sortAttributeSelect&&this.$sortAttributeSelect.focus();var n=$("<div/>",{class:"flex menu-footer"}).appendTo(this.$container);this.$revertContainer=$("<div/>",{class:"flex-grow"}).appendTo(n),(this.elementIndex.getSelectedSourceState("order")||this.elementIndex.getSelectedSourceState("sort")||this.elementIndex.getSelectedSourceState("tableColumns"))&&this._createRevertBtn(),"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode&&this.$revertBtn&&this.$revertBtn.addClass("hidden"),this.$closeBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close")}).appendTo(n).on("click",(function(){t.menu.hide()}))},_createSortField:function(){var t=this,e=$('<div class="flex"/>'),n=this.elementIndex.getSortOptions(this.$source).sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1})).reduce((function(t,e){return t[e.attr.startsWith("field:")?1:0].push(e),t}),[[],[]]);n[1].length&&n[1].unshift({optgroup:Craft.t("app","Fields")});var i=Craft.ui.createSelect({options:n.flat().map((function(t){return t.optgroup?t:{label:Craft.escapeHtml(t.label),value:t.attr}}))}).addClass("fullwidth").appendTo($('<div class="flex-grow"/>').appendTo(e));this.$sortAttributeSelect=i.children("select").attr({"aria-label":Craft.t("app","Sort attribute")}),this.$sortDirectionPicker=$("<section/>",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(e),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(e){e.data("dir")!==t.elementIndex.getSelectedSortDirection()&&(t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),e.data("dir")),t.elementIndex.sortByScore||t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn())}}),this.$sortAttributeSelect.on("change",(function(){t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),null,!1),t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn()}));var r=Craft.ui.createField(e,{label:Craft.t("app","Sort by"),fieldset:!0});return r.addClass("sort-field"),r},_getTableColumnCheckboxes:function(){return this.$tableColumnsContainer?this.$tableColumnsContainer.find('input[type="checkbox"]'):$()},_createTableColumnsField:function(){var t=this,e=this.elementIndex.getTableColumnOptions(this.$source).sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1}));if(!e.length)return $();this.$tableColumnsContainer=Craft.ui.createCheckboxSelect({options:e.map((function(t){return{label:t.label,value:t.attr}})),sortable:!0}),this.updateTableColumnField(),this.tidyTableColumnField(),this.$tableColumnsContainer.data("dragSort").on("sortChange",(function(){t._onTableColumnChange()})),this._getTableColumnCheckboxes().on("change",(function(e){t._onTableColumnChange()}));var n=Craft.ui.createField(this.$tableColumnsContainer,{label:Craft.t("app","Table Columns"),fieldset:!0});return n.addClass("table-columns-field"),"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode&&n.addClass("hidden"),n},_onTableColumnChange:function(){for(var t=[],e=this._getTableColumnCheckboxes().filter(":checked"),n=0;n<e.length;n++)t.push(e.eq(n).val());Craft.compare(t,this.elementIndex.getSelectedTableColumns(this.$source))||(this.elementIndex.setSelectedTableColumns(t,!1),this.elementIndex.updateElements(),this._createRevertBtn())},_createRevertBtn:function(){var t=this;this.$revertBtn||(this.$revertBtn=$("<button/>",{type:"button",class:"light",text:Craft.t("app","Use defaults")}).appendTo(this.$revertContainer).on("click",(function(){t.revert()})))},destroy:function(){this.menu.destroy(),delete this.menu,this.base()}}),C=Garnish.HUD.extend({elementIndex:null,sourceKey:null,siteId:null,id:null,loading:!0,conditionConfig:null,serialized:null,$clearBtn:null,cleared:!1,get isActive(){return this.showing||this.conditionConfig||this.serialized},init:function(t,e,n,r){var s=this;this.elementIndex=t,this.sourceKey=e,this.siteId=n,this.id="filter-".concat(Math.floor(1e9*Math.random())),r&&(r.conditionConfig?(this.conditionConfig=r.conditionConfig,delete r.conditionConfig):r.serialized&&(this.serialized=r.serialized,delete r.serialized));var o=$("<div/>").append($("<div/>",{class:"spinner"})).append($("<div/>",{text:Craft.t("app","Loading"),class:"visually-hidden","aria-role":"alert"}));this.base(this.elementIndex.$filterBtn,o,Object.assign({hudClass:"hud element-filter-hud loading"},r)),this.$hud.attr({id:this.id,"aria-live":"polite","aria-busy":"false"}),this.$tip.remove(),this.$tip=null,this.$body.on("submit",(function(t){t.preventDefault(),s.hide()})),Craft.sendActionRequest("POST","element-indexes/filter-hud",{data:{elementType:this.elementIndex.elementType,source:this.sourceKey,condition:this.elementIndex.settings.condition,conditionConfig:this.conditionConfig,serialized:this.serialized,id:"".concat(this.id,"-filters")}}).then(function(){var t=a(i().mark((function t(e){var n;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s.loading=!1,s.$hud.removeClass("loading"),o.remove(),s.$main.append(e.data.hudHtml),t.next=6,Craft.appendHeadHtml(e.data.headHtml);case 6:return t.next=8,Craft.appendBodyHtml(e.data.bodyHtml);case 8:n=$("<div/>",{class:"flex flex-nowrap"}).appendTo(s.$main),$("<div/>",{class:"flex-grow"}).appendTo(n),s.$clearBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(n),$("<button/>",{type:"submit",class:"btn secondary",text:Craft.t("app","Apply")}).appendTo(n),s.$clearBtn.on("click",(function(){s.clear()})),s.$hud.find(".condition-container").on("htmx:beforeRequest",(function(){s.setBusy()})),s.$hud.find(".condition-container").on("htmx:load",(function(){s.setReady(),s.updateSizeAndPosition(!0)})),s.setFocus(),s.conditionConfig&&(s.conditionConfig=null,s.serialized=s.serialize());case 17:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})),this.$hud.css("position","fixed"),this.addListener(Garnish.$win,"scroll,resize",(function(){s.updateSizeAndPosition(!0)}))},addListener:function(t,e,n,i){t===this.$main&&"resize"===e||this.base(t,e,n,i)},setBusy:function(){this.$hud.attr("aria-busy","true"),$("<div/>",{class:"visually-hidden",text:Craft.t("app","Loading")}).insertAfter(this.$main.find(".htmx-indicator"))},setReady:function(){this.$hud.attr("aria-busy","false")},setFocus:function(){Garnish.setFocusWithin(this.$main)},clear:function(){this.cleared=!0,this.hide()},updateSizeAndPositionInternal:function(){var t,e=this.elementIndex.$searchContainer[0].getBoundingClientRect(),n=Garnish.$win.height(),i=n-e.bottom;this.$body.height()>i&&(t=n-e.bottom-10),this.$hud.css({width:this.elementIndex.$searchContainer.outerWidth()-2,top:e.top+this.elementIndex.$searchContainer.outerHeight(),left:e.left+1,height:t?"".concat(t,"px"):"unset",overflowY:t?"scroll":"unset"})},onShow:function(){this.base(),this.$clearBtn&&this.$clearBtn.text(Craft.t("app","Clear")),this.elementIndex.updateFilterBtn(),this.setFocus()},onHide:function(){this.base(),this.serialized!==(this.serialized=this.serialize())&&this.elementIndex.updateElements(),this.cleared?this.destroy():(this.$hud.detach(),this.$shade.detach()),this.elementIndex.updateFilterBtn(),this.elementIndex.$filterBtn.focus()},hasRules:function(){return 0!==this.$main.has(".condition-rule").length},serialize:function(){return!this.cleared&&this.hasRules()?this.$body.serialize():null},destroy:function(){this.base(),delete this.elementIndex.filterHuds[this.siteId][this.sourceKey]}})},8495:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.BaseElementIndexView=Garnish.Base.extend({$container:null,$loadingMoreSpinner:null,$elementContainer:null,$scroller:null,elementIndex:null,elementSelect:null,loadingMore:!1,_totalVisible:null,_morePending:null,_handleEnableElements:null,_handleDisableElements:null,get thumbLoader(){return console.warn("Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t,e,n){var i=this;this.elementIndex=t,this.$container=$(e),this.setSettings(n,Craft.BaseElementIndexView.defaults),this.$loadingMoreSpinner=$('<div class="centeralign hidden"><div class="spinner loadingmore"></div></div>').insertAfter(this.$container),this.$elementContainer=this.getElementContainer();var r=this.$elementContainer.children();this.setTotalVisible(r.length),this.setMorePending(this.elementIndex.settings.batchSize&&r.length==this.elementIndex.settings.batchSize),Craft.cp.elementThumbLoader.load(r),this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.$elementContainer,this.filterSelectableElements(r),{multi:this.settings.multiSelect,vertical:this.isVerticalList(),filter:function(t){return!$(t).closest("a[href],.toggle,.btn,[role=button]").length},checkboxMode:this.settings.checkboxMode,waitForDoubleClicks:this.settings.waitForDoubleClicks,onSelectionChange:this.onSelectionChange.bind(this)}),this._handleEnableElements=function(t){i.elementSelect.addItems(i.filterSelectableElements($(t.elements)))},this._handleDisableElements=function(t){i.elementSelect.removeItems(t.elements)},this.elementIndex.on("enableElements",this._handleEnableElements),this.elementIndex.on("disableElements",this._handleDisableElements)),this.elementIndex.isAdministrative&&(this._handleElementEditing=function(t){if(!$(t.target).closest("a[href],button,[role=button]").length){var e,n=$(t.target);if(n.hasClass("element"))e=n;else if(!(e=n.closest(".element")).length)return;Garnish.hasAttr(e,"data-editable")&&!e.closest(".elementselect").length&&Craft.createElementEditor(e.data("type"),e)}},this.elementIndex.trashed||this.addListener(this.$elementContainer,"dblclick,taphold",this._handleElementEditing)),this.afterInit(),!this.elementIndex.paginated&&this.elementIndex.settings.batchSize&&("index"===this.settings.context?this.$scroller=Garnish.$scrollContainer:this.$scroller=this.elementIndex.$main,this.$scroller.scrollTop(0),this.addListener(this.$scroller,"scroll","maybeLoadMore"),this.maybeLoadMore())},filterSelectableElements:function(t){for(var e=[],n=0;n<t.length;n++){var i=t.eq(n);i.hasClass("disabled")?i.find(".checkbox").attr({tabindex:"-1","aria-checked":"true"}):this.canSelectElement(i)?e.push(i[0]):i.find(".checkbox").remove()}return $(e)},canSelectElement:function(t){return this.settings.canSelectElement?this.settings.canSelectElement(t):!!t.data("id")},getElementContainer:function(){return this.$container},afterInit:function(){},getAllElements:function(){return this.$elementContainer.children()},getEnabledElements:function(){return this.$elementContainer.children(":not(.disabled)")},getElementById:function(t){var e=this.$elementContainer.children('[data-id="'+t+'"]:first');return e.length?e:null},getSelectedElements:function(){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.$selectedItems},getSelectedElementIds:function(){var t;try{t=this.getSelectedElements()}catch(t){}var e=[];if(t)for(var n=0;n<t.length;n++){var i=t.eq(n).data("id");i&&e.push(i)}return e},selectElement:function(t){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.selectItem(t,!0),!0},selectElementById:function(t){if(!this.elementSelect)throw"This view is not selectable.";var e=this.getElementById(t);return!!e&&(this.elementSelect.selectItem(e,!0),!0)},selectAllElements:function(){this.elementSelect.selectAll()},deselectAllElements:function(){this.elementSelect.deselectAll()},getElementCheckbox:function(t){return $(t).find('[role="checkbox"]')},isVerticalList:function(){return!1},getTotalVisible:function(){return this._totalVisible},setTotalVisible:function(t){this._totalVisible=t},getMorePending:function(){return this._morePending},setMorePending:function(t){this._morePending=t},maybeLoadMore:function(){this.canLoadMore()&&this.loadMore()},canLoadMore:function(){return!(!this.getMorePending()||!this.elementIndex.settings.batchSize)&&(this.$scroller[0]===Garnish.$win[0]?Garnish.$win.innerHeight()+Garnish.$win.scrollTop()>=this.$container.offset().top+this.$container.height():this.$scroller.prop("scrollHeight")-this.$scroller.scrollTop()<=this.$scroller.outerHeight()+15)},loadMore:function(){var t=this;this.getMorePending()&&!this.loadingMore&&this.elementIndex.settings.batchSize&&(this.loadingMore=!0,this.$loadingMoreSpinner.removeClass("hidden"),this.removeListener(this.$scroller,"scroll"),Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:this.getLoadMoreParams()}).then(function(){var i,r=(i=e().mark((function n(i){var r;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden"),t.isAdministrative&&(Craft.currentElementIndex=t),r=$(i.data.html),t.appendElements(r),e.next=7,Craft.appendHeadHtml(i.data.headHtml);case 7:return e.next=9,Craft.appendBodyHtml(i.data.bodyHtml);case 9:t.elementSelect&&(t.elementSelect.addItems(t.filterSelectableElements(r)),t.elementIndex.updateActionTriggers()),t.setTotalVisible(t.getTotalVisible()+r.length),t.setMorePending(r.length==t.elementIndex.settings.batchSize),t.addListener(t.$scroller,"scroll","maybeLoadMore"),t.maybeLoadMore();case 14:case"end":return e.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(r,a){var s=i.apply(t,e);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}()).catch((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden")})))},getLoadMoreParams:function(){var t=$.extend(!0,{},this.settings.params);return t.criteria.offset=this.getTotalVisible(),t},appendElements:function(t){t.appendTo(this.$elementContainer),Craft.cp.elementThumbLoader.load(t),this.onAppendElements(t)},onAppendElements:function(t){this.settings.onAppendElements(t),this.trigger("appendElements",{newElements:t})},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},disable:function(){this.elementSelect&&this.elementSelect.disable()},enable:function(){this.elementSelect&&this.elementSelect.enable()},destroy:function(){this.$loadingMoreSpinner.remove(),this.elementSelect&&(this.elementIndex.off("enableElements",this._handleEnableElements),this.elementIndex.off("disableElements",this._handleDisableElements),this.elementSelect.destroy(),delete this.elementSelect),this.base()}},{defaults:{context:"index",batchSize:null,params:null,selectable:!1,multiSelect:!1,canSelectElement:null,checkboxMode:!1,waitForDoubleClicks:!1,sortable:!1,loadMoreElementsAction:"element-indexes/get-more-elements",onAppendElements:$.noop,onSelectionChange:$.noop,onSortChange:$.noop}})},5970:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||n(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return i(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function r(){"use strict";r=function(){return n};var e,n={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function a(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function s(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(t){a(s,i,r,o,l,"next",t)}function l(t){a(s,i,r,o,l,"throw",t)}o(void 0)}))}}var o,l,c;Craft.BaseElementSelectInput=Garnish.Base.extend({elementSelect:null,elementSort:null,modal:null,elementEditor:null,modalFirstOpen:!0,$container:null,$form:null,$elementsContainer:null,$elements:null,$addElementBtn:null,$spinner:null,_initialized:!1,get thumbLoader(){return console.warn("Craft.BaseElementSelectInput::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t){var e=this;if(!$.isPlainObject(t)){for(var n={},i=["id","name","elementType","sources","criteria","sourceElementId","limit","modalStorageKey","fieldId"],r=0;r<i.length&&void 0!==arguments[r];r++)n[i[r]]=arguments[r];t=n}this.setSettings(t,Craft.BaseElementSelectInput.defaults),this.settings.modalStorageKey&&(this.modalStorageKey="BaseElementSelectInput."+this.settings.modalStorageKey),(1==this.settings.limit||this.settings.maintainHierarchy)&&(this.settings.sortable=!1),this.$container=this.getContainer(),this.$form=this.$container.closest("form"),this.$container.data("elementSelect",this),this.$elementsContainer=this.getElementsContainer(),this.$addElementBtn=this.getAddElementsBtn(),this.$spinner=this.getSpinner(),this.initElementSelect(),this.initElementSort(),this.resetElements(),this.$addElementBtn.length&&this.addListener(this.$addElementBtn,"activate","showModal"),Garnish.requestAnimationFrame((function(){e._initialized=!0})),this.elementSelect&&this.addListener(Garnish.$win,"mousedown",(function(t){e.$container.is(t.target)||e.$container.find(t.target).length||e.elementSelect.deselectAll()}))},get totalSelected(){return this.$elements.length},getContainer:function(){return $("#"+this.settings.id)},getElementsContainer:function(){return this.$container.children(".elements")},getElements:function(){return this.$elementsContainer.hasClass("structure")?this.$elementsContainer.find("> li .row .element"):this.$elementsContainer.find("> li > .element")},getAddElementsBtn:function(){return this.$container.find(".btn.add:first")},getSpinner:function(){return this.$container.find(".spinner")},initElementSelect:function(){this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.elementSelectSettings()))},elementSelectSettings:function(){return{multi:this.settings.sortable,filter:function(t){return!$(t).closest("a[href],button,[role=button]").length},makeFocusable:!1}},initElementSort:function(){var t=this;this.settings.sortable&&(this.elementSort=new Garnish.DragSort({container:this.$elementsContainer,filter:this.settings.selectable?function(){return t.elementSort.$targetItem.children(".element").hasClass("sel")?t.elementSelect.getSelectedItems().parent("li"):t.elementSort.$targetItem}:null,ignoreHandleSelector:".delete",handle:function(){switch(t.settings.viewMode){case"list":case"large":return"> .element > .chip-content > .chip-actions > .move";case"cards":return"> .element > .card-actions-container > .card-actions > .move";default:return null}}(),axis:this.getElementSortAxis(),collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onSortChange()}}))},getElementSortAxis:function(){return["list"].includes(this.settings.viewMode)&&!this.getElementsContainer().hasClass("inline-chips")?"y":null},canAddMoreElements:function(){return!this.settings.limit||this.$elements.length<this.settings.limit},updateAddElementsBtn:function(){this.canAddMoreElements()?this.enableAddElementsBtn():this.disableAddElementsBtn()},enableAddElementsBtn:function(){this.$addElementBtn.length&&this.$addElementBtn.removeClass("hidden"),this.updateButtonContainer()},disableAddElementsBtn:function(){this.$addElementBtn.length&&this.$addElementBtn.addClass("hidden"),this.updateButtonContainer()},showSpinner:function(){this.$spinner&&this.$spinner.removeClass("hidden"),this.updateButtonContainer()},hideSpinner:function(){this.$spinner&&this.$spinner.addClass("hidden"),this.updateButtonContainer()},updateButtonContainer:function(){var t=this.$addElementBtn.length&&this.$addElementBtn.parent(".flex");null!=t&&t.length&&(t.children(":not(.hidden)").length?t.removeClass("hidden"):t.addClass("hidden"))},focusNextLogicalElement:function(){this.canAddMoreElements()?this.$addElementBtn.length&&this.$addElementBtn.get(0).focus():this.focusLastRemoveBtn()},focusLastRemoveBtn:function(){var t=this.$container.find(".delete");t.length&&t.last()[0].focus()},resetElements:function(){null!==this.$elements?this.removeElements(this.$elements):this.$elements=$(),this.addElements(this.getElements())},addElements:function(t){for(var e=this,n=function(){var n=t.eq(i),r=e.defineElementActions(n);if(r.length){Craft.addActionsToChip(n,r);var a=n.find("> .chip-content > .chip-actions .action-btn, > .card-actions-container > .card-actions .action-btn").data("disclosureMenu"),s=a.$container.find("[data-move-forward]")[0],o=a.$container.find("[data-move-backward]")[0];a.on("show",(function(){var t=n.parent(),e=t.prev(),i=t.next();s&&a.toggleItem(s,e.length),o&&a.toggleItem(o,i.length)}))}e.settings.sortable&&$("<button/>",{type:"button",class:"move icon",title:Craft.t("app","Reorder"),"aria-label":Craft.t("app","Reorder"),"aria-describedby":n.find(".label").attr("id")}).appendTo(n.find("> .chip-content > .chip-actions, > .card-actions-container > .card-actions"))},i=0;i<t.length;i++)n();Craft.cp.elementThumbLoader.load(t),this.settings.selectable&&this.elementSelect.addItems(t),this.settings.sortable&&this.elementSort.addItems(t.parent("li")),this.settings.editable&&(this._handleShowElementEditor=function(t){if("taphold"!==t.type||"BUTTON"!==t.target.nodeName){var n=$(t.currentTarget);!Garnish.hasAttr(n,"data-editable")||n.hasClass("disabled")||n.hasClass("loading")||(e.elementEditor=e.createElementEditor(n))}},this.addListener(t,"dblclick",this._handleShowElementEditor),$.isTouchCapable()&&this.addListener(t,"taphold",this._handleShowElementEditor)),t.on("keydown",(function(t){if([Garnish.BACKSPACE_KEY,Garnish.DELETE_KEY].includes(t.keyCode)){t.stopPropagation(),t.preventDefault();for(var n=e.elementSelect.getSelectedItems(),i=0;i<n.length;i++)e.removeElement(n.eq(i))}})),this.$elements=this.$elements.add(t),this.updateAddElementsBtn(),this.onAddElements(),this.onSortChange()},defineElementActions:function(t){var e=this,n=[];if(this.settings.sortable){var i=this.getElementSortAxis();n.push({icon:"y"===i?"arrow-up":"ltr"===Craft.orientation?"arrow-left":"arrow-right",label:"y"===i?Craft.t("app","Move up"):Craft.t("app","Move forward"),callback:function(){e.moveElementForward(t)},attributes:{"data-move-forward":!0}}),n.push({icon:"y"===i?"arrow-down":"ltr"===Craft.orientation?"arrow-right":"arrow-left",label:"y"===i?Craft.t("app","Move down"):Craft.t("app","Move backward"),callback:function(){e.moveElementBackward(t)},attributes:{"data-move-backward":!0}})}return n.push({icon:"remove",label:Craft.t("app","Remove"),callback:function(){e.removeElement(t)},destructive:!0}),n},createElementEditor:function(t,e){return e=Object.assign({elementSelectInput:this,prevalidate:this.settings.prevalidate},e),Craft.createElementEditor(this.settings.elementType,t,e)},replaceElement:function(t,e){var n=this;return new Promise((function(i,a){var o=n.$elements.filter('[data-id="'.concat(t,'"]'));o.length?(n.showSpinner(),n.settings.criteria.siteId,n.settings.viewMode,Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:n.settings.elementType,id:e,siteId:n.settings.criteria.siteId,instances:[{context:"field",ui:["list","large"].includes(n.settings.viewMode)?"chip":"card",size:"large"===n.settings.viewMode?"large":"small",showActionMenu:n.settings.showActionMenu}]}]}}).then(function(){var t=s(r().mark((function t(a){var s,l;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=a.data,n.removeElement(o),l=Craft.getElementInfo(s.elements[e][0]),n.selectElements([l]).then(i),t.next=6,Craft.appendHeadHtml(s.headHtml);case 6:return t.next=8,Craft.appendBodyHtml(s.bodyHtml);case 8:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){var e,n;Craft.cp.displayError(null==t||null===(e=t.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.message),a(null==t||null===(n=t.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.message)})).finally((function(){n.hideSpinner()}))):a("No element selected with an ID of ".concat(t,"."))}))},onSortChange:function(){var t;null===(t=this.elementSelect)||void 0===t||t.resetItemOrder(),this.$elements=$().add(this.$elements)},moveElementForward:function(t){var e=t.closest("li"),n=e.prev();n.length&&(e.insertBefore(n),this.onSortChange())},moveElementBackward:function(t){var e=t.closest("li"),n=e.next();n.length&&(e.insertAfter(n),this.onSortChange())},removeElements:function(t){var e,n;if(this.settings.selectable&&this.elementSelect.removeItems(t),this.modal){for(var i=[],r=0;r<t.length;r++){var a=t.eq(r).data("id");a&&i.push(a)}i.length&&this.modal.elementIndex.enableElementsById(i)}if(t.children("input").prop("disabled",!0),this.settings.selectable){var s=this.$elements.index(t.last());n=this.$elements.eq(s+1)}null!==(e=n)&&void 0!==e&&e.length?n.focus():this.focusNextLogicalElement(),this.$elements=this.$elements.not(t),this.updateAddElementsBtn(),this.onSortChange(),this.onRemoveElements()},removeElement:function(t){if(this.settings.maintainHierarchy){var e=t.add(t.parent().siblings("ul").find(".element"));$("[name]",e).removeAttr("name"),this.removeElements(e);for(var n=0;n<e.length;n++)this._animateStructureElementAway(e,n)}else $("[name]",t).removeAttr("name"),this.removeElements(t),this.animateElementAway(t,(function(){t.parent("li").remove()}))},animateElementAway:function(t,e){t.css("z-index",0);var n={opacity:-1};n["margin-"+Craft.left]=-(t.outerWidth()+parseInt(t.css("margin-"+Craft.right))),(["list","cards"].includes(this.settings.viewMode)||0===this.$elements.length)&&(n["margin-bottom"]=-(t.outerHeight()+parseInt(t.css("margin-bottom")))),t.velocity(n,Craft.BaseElementSelectInput.REMOVE_FX_DURATION,(function(){e&&e()}))},showModal:function(){this.canAddMoreElements()&&(this.modal?this.modal.show():(this.modal=this.createModal(),this.modalFirstOpen=!1))},createModal:function(){return Craft.createElementSelectorModal(this.settings.elementType,this.getModalSettings())},getModalSettings:function(){var t=$.extend({closeOtherModals:!1,storageKey:this.modalStorageKey,sources:this.settings.sources,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:Object.assign({},this.settings.criteria),multiSelect:1!=this.settings.limit,hideOnSelect:!1,showSiteMenu:this.settings.showSiteMenu,disabledElementIds:this.getDisabledElementIds(),onSelect:this.onModalSelect.bind(this),onHide:this.onModalHide.bind(this),triggerElement:this.$addElementBtn,modalTitle:Craft.t("app","Choose")},this.settings.modalSettings);return this.modalFirstOpen||(t.preferStoredSource=!0),t},getSelectedElementIds:function(){for(var t=[],e=0;e<this.$elements.length;e++)t.push(this.$elements.eq(e).data("id"));return t},getDisabledElementIds:function(){var t,e=this.getSelectedElementIds();return!this.settings.allowSelfRelations&&this.settings.sourceElementId&&e.push(this.settings.sourceElementId),this.settings.disabledElementIds&&e.push.apply(e,function(t){if(Array.isArray(t))return i(t)}(t=this.settings.disabledElementIds)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),e},onModalSelect:(c=s(r().mark((function t(n){var i,a,s,o,l,c,h,u,d=this;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner(),i=function(){switch(d.settings.viewMode){case"large":return["chip","large"];case"cards":return["card",null];default:return["chip","small"]}}(),a=e(i,2),s=a[0],o=a[1],t.next=7,Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:this.settings.elementType,id:n.map((function(t){return t.id})),siteId:n[0].siteId,instances:[{context:"field",ui:s,size:o,showActionMenu:this.settings.showActionMenu}]}]}});case 7:for(l=t.sent,c=l.data,h=0;h<n.length;h++)void 0!==c.elements[n[h].id]&&(n[h].$modalElement=n[h].$element,n[h].$element=$(c.elements[n[h].id][0]));if(!this.settings.maintainHierarchy){t.next=15;break}return t.next=13,this.selectStructuredElements(n);case 13:t.next=19;break;case 15:return this.settings.limit&&(u=this.settings.limit-this.$elements.length,n.length>u&&(n=n.slice(0,u))),t.next=18,this.selectElements(n);case 18:this.updateDisabledElementsInModal();case 19:return this.modal.enable(),this.modal.enableCancelBtn(),this.modal.enableSelectBtn(),this.modal.hideFooterSpinner(),this.modal.hide(),t.next=26,Craft.appendHeadHtml(c.headHtml);case 26:return t.next=28,Craft.appendBodyHtml(c.bodyHtml);case 28:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)}),onModalHide:function(){var t=this;this.modal&&this.settings.condition&&this.settings.referenceElementId&&(this.modal.destroy(),this.modal=null),this.canAddMoreElements()||setTimeout((function(){t.focusNextLogicalElement()}),200)},selectElements:(l=s(r().mark((function t(e){var n,i,a,s;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(n=0;n<e.length;n++)i=e[n],a=this.createNewElement(i),this.appendElement(a),this.addElements(a),(s=i.$modalElement||i.$element)&&s.parent().length&&this.animateElementIntoPlace(s,a),i.$element=a;this.onSelectElements(e);case 2:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)}),selectStructuredElements:(o=s(r().mark((function t(e){var n,i,a,s,o,l,c,h,u,d;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(n=this.getSelectedElementIds(),i=0;i<e.length;i++)n.push(e[i].id);return a={elementIds:n,siteId:e[0].siteId,containerId:this.settings.id,name:this.settings.name,branchLimit:this.settings.branchLimit,selectionLabel:this.settings.selectionLabel,elementType:this.settings.elementType},t.next=5,Craft.sendActionRequest("POST","relational-fields/structured-input-html",{data:a});case 5:for(s=t.sent,o=$(s.data.html),l=o.children(".elements"),this.$elementsContainer.replaceWith(l),this.$elementsContainer=l,this.resetElements(),c=[],h=0;h<e.length;h++)u=e[h],(d=this.getElementById(u.id))&&(this.animateElementIntoPlace(u.$element,d),c.push(u));this.updateDisabledElementsInModal(),this.onSelectElements(c);case 14:case"end":return t.stop()}}),t,this)}))),function(t){return o.apply(this,arguments)}),createNewElement:function(t){var e=t.$element.clone();return Craft.t("app","Remove {label}",{label:Craft.escapeHtml(t.label)}),Craft.setElementSize(e,"large"===this.settings.viewMode?"large":"small"),e.addClass("removable").append($("<input/>",{type:"hidden",name:this.settings.name+(this.settings.single?"":"[]"),value:t.id})),e},appendElement:function(t){$("<li/>").append(t).appendTo(this.$elementsContainer)},animateElementIntoPlace:function(t,e){var n=t.offset(),i=e.offset(),r=e.clone().appendTo(Garnish.$bod).width(e.width());e.css("visibility","hidden"),r.css({position:"absolute",zIndex:1e4,top:n.top,left:n.left});var a={top:i.top,left:i.left};r.velocity(a,Craft.BaseElementSelectInput.ADD_FX_DURATION,(function(){r.remove(),e.css("visibility","visible")}))},updateDisabledElementsInModal:function(){this.modal.elementIndex&&this.modal.elementIndex.disableElementsById(this.getDisabledElementIds())},getElementById:function(t){for(var e=0;e<this.$elements.length;e++){var n=this.$elements.eq(e);if(n.data("id")==t)return n}},onSelectElements:function(t){this.trigger("selectElements",{elements:t}),this.settings.onSelectElements(t),this.$container.trigger("change")},onAddElements:function(){this.trigger("addElements"),this.settings.onAddElements(),this.$container.trigger("change")},onRemoveElements:function(){this.trigger("removeElements"),this.settings.onRemoveElements(),this.$container.trigger("change")},_animateStructureElementAway:function(t,e){var n,i=this;e===t.length-1&&(n=function(){var e=t.first().parent().parent(),n=e.parent();n[0]===i.$elementsContainer[0]||e.siblings().length?e.remove():n.remove()});var r=function(){i.animateElementAway(t.eq(e),n)};0===e?r():setTimeout(r,100*e)}},{ADD_FX_DURATION:200,REMOVE_FX_DURATION:200,defaults:{id:null,name:null,fieldId:null,elementType:null,sources:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:{},allowSelfRelations:!1,sourceElementId:null,disabledElementIds:null,viewMode:"list",single:!1,maintainHierarchy:!1,branchLimit:null,limit:null,showSiteMenu:!1,modalStorageKey:null,modalSettings:{},onAddElements:$.noop,onSelectElements:$.noop,onRemoveElements:$.noop,sortable:!0,selectable:!0,showActionMenu:!0,editable:!0,prevalidate:!1,editorSettings:{}}})},4993:function(){Craft.BaseElementSelectorModal=Garnish.Modal.extend({elementType:null,elementIndex:null,supportSidebarToggleView:!1,$body:null,$content:null,$footer:null,$selectBtn:null,$sidebar:null,$sources:null,$sourceToggles:null,$sidebarToggleBtn:null,$sidebarCloseBtn:null,$mainHeading:null,$main:null,$search:null,$elements:null,$tbody:null,$primaryButtons:null,$secondaryButtons:null,$cancelBtn:null,init:function(t,e){this.elementType=t,this.setSettings(e,Craft.BaseElementSelectorModal.defaults);var n="elementSelectorModalHeading-"+Date.now(),i=$("<div/>",{class:"modal elementselectormodal","aria-labelledby":n}).appendTo(Garnish.$bod),r=$("<div/>",{class:this.settings.showTitle?"header":"visually-hidden"}).appendTo(i);$("<h1/>",{id:n,text:this.settings.modalTitle}).appendTo(r);var a=$("<div/>",{class:"body"}).append($("<div/>",{class:"spinner big"})).appendTo(i);this.$footer=$("<div/>",{class:"footer"}).appendTo(i),this.settings.fullscreen&&(i.addClass("fullscreen"),this.settings.minGutter=0),this.base(i,this.settings),this.$secondaryButtons=$('<div class="buttons left secondary-buttons"/>').appendTo(this.$footer),this.$primaryButtons=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$primaryButtons),this.$selectBtn=Craft.ui.createSubmitButton({class:"disabled",label:this.settings.selectBtnLabel,spinner:!0}).attr("aria-disabled","true").appendTo(this.$primaryButtons),this.$body=a,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},updateModalBottomPadding:function(){var t=this.$footer.outerHeight();t!==parseInt(this.$container.css("padding-bottom"))&&this.$container.css("padding-bottom",t)},updateSidebarView:function(){this.supportSidebarToggleView&&(this.sidebarShouldBeHidden()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView())},sidebarShouldBeHidden:function(){return this.$container.outerWidth()<550},resetView:function(){this.$mainHeader&&this.$mainHeader.remove(),this.$sidebarHeader&&this.$sidebarHeader.remove(),this.$sidebarToggleBtn=null,this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden")},buildSidebarToggleView:function(){var t=this;!this.$sidebarToggleBtn&&this.sidebarShouldBeHidden()&&(this.$sidebarHeader=$('<div class="sidebar-header"/>').prependTo(this.$sidebar),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sidebarHeader),this.$mainHeader=$('<div class="main-header"/>').prependTo(this.$main),this.$mainHeading=$('<h2 class="main-heading">'.concat(this.getActiveSourceName(),"</h2>")).appendTo(this.$mainHeader),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$mainHeader),this.$sidebar.attr("id","modal-sidebar"),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar()})))},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar();var e=Garnish.getFocusedElement();$.contains(t.$sidebar.get(0),e.get(0))&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$sidebarToggleBtn&&(this.sidebarIsOpen()&&(Garnish.uiLayerManager.removeLayer(),this.$sidebar.addClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","false")),this.$body.removeClass("has-sidebar"),this.$content.removeClass("has-sidebar"))},getActiveSourceName:function(){return this.$sidebar.find(".sel").text()},onFadeIn:function(){this.elementIndex?(this.updateModalBottomPadding(),Garnish.isMobileBrowser(!0)||this.elementIndex.$search.trigger("focus")):this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},onSelectSource:function(){this.updateHeading(),this.updateModalBottomPadding()},updateHeading:function(){this.$mainHeading&&this.$mainHeading.text(this.getActiveSourceName())},updateSelectBtnState:function(){this.$selectBtn&&(this.hasSelection()?this.enableSelectBtn():this.disableSelectBtn())},hasSelection:function(){return this.elementIndex&&this.elementIndex.getSelectedElements().length},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled").attr("aria-disabled","false")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled").attr("aria-disabled","true")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$selectBtn.addClass("loading")},hideFooterSpinner:function(){this.$selectBtn.removeClass("loading")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.hasSelection()){this.elementIndex.view&&this.elementIndex.view.elementSelect&&this.elementIndex.view.elementSelect.clearMouseUpTimeout();var t=this.elementIndex.getSelectedElements(),e=this.getElementInfo(t);this.onSelect(e),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(t){for(var e=[],n=0;n<t.length;n++){var i=$(t[n]),r=Craft.getElementInfo(i);e.push(r)}return e},onShow:function(){this.updateSelectBtnState(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addListener(Garnish.$win,"resize",this.updateModalBottomPadding),this.updateModalBottomPadding(),this.updateSidebarView(),this.base()},onHide:function(){this.closeSidebar(),this.base()},onSelect:function(t){this.settings.onSelect(t)},disable:function(){this.elementIndex&&this.elementIndex.disable(),this.base()},enable:function(){this.elementIndex&&this.elementIndex.enable(),this.base()},getElementIndexParams:function(){var t={context:"modal",elementType:this.elementType,sources:this.settings.sources};return null!==this.settings.showSiteMenu&&"auto"!==this.settings.showSiteMenu&&(t.showSiteMenu=this.settings.showSiteMenu?"1":"0"),t},_createElementIndex:function(){var t=this;Craft.sendActionRequest("POST",this.settings.bodyAction,{data:this.getElementIndexParams()}).then((function(e){t.$body.html(e.data.html),t.$body.has(".sidebar:not(.hidden)").length&&(t.$body.addClass("has-sidebar"),t.supportSidebarToggleView=!0),t.elementIndex=Craft.createElementIndex(t.elementType,t.$body,t.getIndexSettings()),t.$main=t.elementIndex.$main,t.$sidebar=t.elementIndex.$sidebar,t.$content=t.$body.find(".content"),t.updateSidebarView(),t.updateModalBottomPadding(),t.addListener(t.elementIndex.$elements,"doubletap",(function(t,e){e.firstTap.target===e.secondTap.target&&this.selectElements()})),t.on("updateSizeAndPosition",(function(){t.elementIndex.handleResize()})),t.updateSelectBtnState()}))},getIndexSettings:function(){var t=this;return Object.assign({context:"modal",modal:this,storageKey:this.settings.storageKey,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:Object.assign({},this.settings.criteria),disabledElementIds:this.settings.disabledElementIds,selectable:!0,multiSelect:this.settings.multiSelect,waitForDoubleClicks:!0,buttonContainer:this.$secondaryButtons,onSelectionChange:function(){t.elementIndex&&t.onSelectionChange()},onSourcePathChange:function(){t.elementIndex&&t.onSelectionChange()},onSelectSource:this.onSelectSource.bind(this),hideSidebar:this.settings.hideSidebar,defaultSiteId:this.settings.defaultSiteId,defaultSource:this.settings.defaultSource,defaultSourcePath:this.settings.defaultSourcePath,preferStoredSource:this.settings.preferStoredSource,showSourcePath:this.settings.showSourcePath},this.settings.indexSettings)}},{defaults:{fullscreen:!1,resizable:!0,storageKey:null,sources:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:null,multiSelect:!1,showSiteMenu:null,disabledElementIds:[],disableElementsOnSelect:!1,hideOnSelect:!0,modalTitle:Craft.t("app","Select element"),showTitle:!1,selectBtnLabel:Craft.t("app","Select"),onCancel:$.noop,onSelect:$.noop,hideSidebar:!1,defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,bodyAction:"element-selector-modals/body",indexSettings:{}}})},8843:function(){Craft.BaseInputGenerator=Garnish.Base.extend({$source:null,$target:null,$form:null,settings:null,listening:null,timeout:null,init:function(t,e,n){this.$source=$(t),this.$target=$(e),this.$form=this.$source.closest("form"),this.setSettings(n,Craft.BaseInputGenerator.defaults),this.setSettings(n),this.startListening()},setNewSource:function(t){var e=this.listening;this.stopListening(),this.$source=$(t),e&&this.startListening()},startListening:function(){this.listening||(this.listening=!0,this.addListener(this.$source,"input","onSourceTextChange"),this.addListener(this.$target,"input","onTargetTextChange"),this.addListener(this.$form,"submit","onFormSubmit"))},stopListening:function(){this.listening&&(this.listening=!1,this.timeout&&clearTimeout(this.timeout),this.removeAllListeners(this.$source),this.removeAllListeners(this.$target),this.removeAllListeners(this.$form))},onSourceTextChange:function(){this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.updateTarget.bind(this),250)},onTargetTextChange:function(){this.$target.get(0)===document.activeElement&&this.stopListening()},onFormSubmit:function(){this.timeout&&clearTimeout(this.timeout),this.updateTarget()},updateTarget:function(){if(this.$target.is(":visible")||0!=this.settings.updateWhenHidden){var t=this.$source.val();if(void 0!==t){var e=this.generateTargetValue(t);this.$target.val(e);for(var n=0;n<this.$target.length;n++)this.$target[n].dispatchEvent(new InputEvent("input",{inputType:"insertText"})),this.$target[n].dispatchEvent(new Event("input"));this.$target.is(":focus")&&Craft.selectFullValue(this.$target)}}},generateTargetValue:function(t){return t}},{defaults:{updateWhenHidden:!1}})},4918:function(){Craft.BaseUploader=Garnish.Base.extend({allowedKinds:null,$element:null,$fileInput:null,settings:null,fsType:null,formData:{},events:{},_rejectedFiles:{},_extensionList:null,_inProgressCounter:0,init:function(t,e){this._rejectedFiles={size:[],type:[],limit:[]},this.$element=t,this.settings=$.extend({},Craft.BaseUploader.defaults,e),this.formData=this.settings.formData,this.$fileInput=this.settings.fileInput||t,this.events=this.settings.events,this.settings.url||(this.settings.url=this.settings.replace?Craft.getActionUrl(this.settings.replaceAction):Craft.getActionUrl(this.settings.createAction)),this.settings.allowedKinds&&this.settings.allowedKinds.length&&("string"==typeof this.settings.allowedKinds&&(this.settings.allowedKinds=[this.settings.allowedKinds]),this.allowedKinds=this.settings.allowedKinds,delete this.settings.allowedKinds)},setParams:function(t){void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t[Craft.csrfTokenName]=Craft.csrfTokenValue),this.formData=t},getInProgress:function(){return this._inProgressCounter},isLastUpload:function(){return this.getInProgress()<2},processErrorMessages:function(){var t;this._rejectedFiles.type.length&&(t=1===this._rejectedFiles.type.length?"The file {files} could not be uploaded. The allowed file kinds are: {kinds}.":"The files {files} could not be uploaded. The allowed file kinds are: {kinds}.",t=Craft.t("app",t,{files:this._rejectedFiles.type.join(", "),kinds:this.allowedKinds.join(", ")}),this._rejectedFiles.type=[],Craft.cp.displayError(t)),this._rejectedFiles.size.length&&(t=1===this._rejectedFiles.size.length?"The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.":"The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.",t=Craft.t("app",t,{files:this._rejectedFiles.size.join(", "),size:this.humanFileSize(this.settings.maxFileSize)}),this._rejectedFiles.size=[],Craft.cp.displayError(t)),this._rejectedFiles.limit.length&&(t=1===this._rejectedFiles.limit.length?"The file {files} could not be uploaded, because the field limit has been reached.":"The files {files} could not be uploaded, because the field limit has been reached.",t=Craft.t("app",t,{files:this._rejectedFiles.limit.join(", ")}),this._rejectedFiles.limit=[],Craft.cp.displayError(t))},humanFileSize:function(t){var e=1024;if(t<e)return t+" B";var n=-1;do{t/=e,++n}while(t>=e);return t.toFixed(1)+" "+["kB","MB","GB","TB","PB","EB","ZB","YB"][n]},_createExtensionList:function(){this._extensionList=[];for(var t=0;t<this.allowedKinds.length;t++){var e=this.allowedKinds[t];if(void 0!==Craft.fileKinds[e])for(var n=0;n<Craft.fileKinds[e].extensions.length;n++){var i=Craft.fileKinds[e].extensions[n];this._extensionList.push(i)}}},destroy:$.noop},{defaults:{dropZone:null,pasteZone:null,fileInput:null,maxFileSize:Craft.maxUploadSize,allowedKinds:null,events:{},formData:{},canAddMoreFiles:null,headers:{Accept:"application/json;q=0.9,*/*;q=0.8"},paramName:"assets-upload",url:null,createAction:null,replaceAction:null,deleteAction:null,replace:!1}})},525:function(){function t(){"use strict";t=function(){return n};var e,n={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function n(i,s,o,l){var c=f(t[i],t,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==r(u)&&a.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,o,l)}),(function(t){n("throw",t,o,l)})):e.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return n("throw",t,o,l)}))}l(c.arg)}var i;s(this,"_invoke",{value:function(t,r){function a(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[l];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function n(){for(;++i<t.length;)if(a.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return s.next=s}}throw new TypeError(r(t)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function e(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function n(t){return function(){var n=this,i=arguments;return new Promise((function(r,a){var s=t.apply(n,i);function o(t){e(s,r,a,o,l,"next",t)}function l(t){e(s,r,a,o,l,"throw",t)}o(void 0)}))}}function i(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=a(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw s}}}}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CP=Garnish.Base.extend({elementThumbLoader:null,authManager:null,$nav:null,$navToggle:null,$globalSidebar:null,$globalContainer:null,$mainContainer:null,$pageContainer:null,$alerts:null,$crumbs:null,$crumbList:null,$crumbItems:null,$crumbMenuTriggerItem:null,$crumbMenu:null,$crumbMenuList:null,$crumbMenuItems:null,$notificationContainer:null,$main:null,$primaryForm:null,$headerContainer:null,$header:null,$mainContent:null,$details:null,$sidebarContainer:null,$sidebarToggle:null,$sidebar:null,$contentContainer:null,$edition:null,$confirmUnloadForms:null,$deltaForms:null,$collapsibleTables:null,isMobile:null,fixedHeader:!1,tabManager:null,enableQueue:!0,totalJobs:0,jobInfo:null,displayedJobInfo:null,displayedJobInfoUnchanged:1,trackJobProgressTimeout:null,trackingJobProgress:!1,jobProgressCancelToken:null,jobProgressIcon:null,checkingForUpdates:!1,forcingRefreshOnUpdatesCheck:!1,includingDetailsOnUpdatesCheck:!1,checkForUpdatesCallbacks:null,checkForUpdatesFailureCallbacks:null,resizeTimeout:null,init:function(){var t=this;this.elementThumbLoader=new Craft.ElementThumbLoader,0!==Craft.remainingSessionTime&&(this.authManager=new Craft.AuthManager),this.$nav=$("#nav"),this.$navToggle=$("#primary-nav-toggle"),this.$globalSidebar=$("#global-sidebar"),this.$globalContainer=$("#global-container"),this.$mainContainer=$("#main-container"),this.$pageContainer=$("#page-container"),this.$alerts=$("#alerts"),this.$crumbs=$("#crumbs"),this.$crumbList=$("#crumb-list"),this.$crumbItems=this.$crumbList.children("li"),this.$notificationContainer=$("#notifications"),this.$main=$("#main"),this.$primaryForm=$("#main-form"),this.$headerContainer=$("#header-container"),this.$header=$("#header"),this.$mainContent=$("#main-content"),this.$details=$("#details"),this.$sidebarContainer=$("#sidebar-container"),this.$sidebarToggle=$("#sidebar-toggle"),this.$sidebar=$("#sidebar"),this.$contentContainer=$("#content-container"),this.$collapsibleTables=$("table.collapsible"),this.isMobile=Garnish.isMobileBrowser(),this.updateContentHeading();for(var e=this.$details.find(".meta > .field > .instructions"),n=0;n<e.length;n++){var i=e.eq(n),r=i.siblings(".heading").children("label");$("<span/>",{class:"info",html:i.children().html()}).appendTo(r),i.remove()}if(!this.isMobile&&this.$header.length&&(this.addListener(Garnish.$win,"scroll","updateFixedHeader"),this.updateFixedHeader()),Garnish.$doc.ready((function(){t.addListener(Garnish.$win,"resize",(function(e){if(e.target===window){t.handleWindowResize(),clearTimeout(t.resizeTimeout);var n=t;t.resizeTimeout=setTimeout((function(){n.setSidebarNavAttributes()}),100)}})),t.handleWindowResize(),t.setSidebarNavAttributes(),Garnish.requestAnimationFrame(t.initSpecialForms.bind(t))})),this.$alerts.length&&this.initAlerts(),this.addListener(this.$navToggle,"click","toggleNav"),this.addListener(this.$sidebarToggle,"click","toggleSidebar"),this.$primaryForm.length||(this.$primaryForm=$("form[data-saveshortcut]:first")),this.$primaryForm.length&&Garnish.hasAttr(this.$primaryForm,"data-saveshortcut")){var s=[],o=this.$primaryForm.data("actions");if(void 0===o)s.push([{keyCode:Garnish.S_KEY,ctrl:!0},{redirect:this.$primaryForm.data("saveshortcut-redirect"),retainScroll:Garnish.hasAttr(this.$primaryForm,"saveshortcut-scroll")}]);else for(var l=0;l<o.length;l++){var c=o[l];c.shortcut&&s.push([{keyCode:Garnish.S_KEY,ctrl:!0,shift:!!c.shift},{action:c.action,redirect:c.redirect,confirm:c.confirm,params:c.params,data:c.data,retainScroll:c.retainScroll}])}for(var h=function(e){Garnish.uiLayerManager.registerShortcut(s[e][0],(function(){t.submitPrimaryForm(s[e][1])}))},u=0;u<s.length;u++)h(u)}if(this.initTabs(),this.tabManager&&window.LOCATION_HASH){var d=this.tabManager.$tabs.filter('[href="#'.concat(window.LOCATION_HASH,'"]'));d.length&&this.tabManager.selectTab(d)}var f=Craft.getLocalStorage("scrollY");if(void 0!==f&&(Craft.removeLocalStorage("scrollY"),Garnish.$doc.ready((function(){Garnish.requestAnimationFrame((function(){window.scrollTo(0,f)}))}))),$.isTouchCapable()&&(this.$mainContainer.on("focus","input, textarea, .focusable-input",this._handleInputFocus.bind(this)),this.$mainContainer.on("blur","input, textarea, .focusable-input",this._handleInputBlur.bind(this))),Craft.announcements.length){var p,g,m=$("#announcements-btn").removeClass("hidden"),v=Craft.announcements.some((function(t){return t.unread}));v&&(p=$("<span/>",{class:"visually-hidden",html:Craft.t("app","Unread messages")}),m.addClass("unread").append(p)),this.addListener(m,"click",(function(){if(g)g.show();else{var t="";Craft.announcements.forEach((function(e){t+='<div class="announcement '.concat(e.unread?"unread":"",'" role="listitem">')+'<div class="announcement__header">'+'<h3 class="announcement__heading h2">'.concat(e.heading,"</h3>")+'<div class="announcement-label-container">'+'<div class="announcement-icon" aria-hidden="true">'.concat(e.icon,"</div>")+'<div class="announcement-label">'.concat(e.label,"</div>")+"</div></div>"+"<p>".concat(e.body,"</p>")+"</div>"})),g=new Garnish.HUD(m,'<h2 class="visually-hidden">'.concat(Craft.t("app","Announcements"),'</h2><div id="announcements" role="list">').concat(t,"</div>"),{onShow:function(){m.addClass("active")},onHide:function(){m.removeClass("active")}}),$("a",g.$main).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")})),v&&(m.removeClass("unread"),p.remove(),Craft.sendActionRequest("POST","users/mark-announcements-as-read",{data:{ids:Craft.announcements.map((function(t){return t.id}))}}))}}))}var b=document.getElementById("footer");b&&new IntersectionObserver((function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||a(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,1)[0];e.target.classList.toggle("stuck",e.intersectionRatio<1)}),{rootMargin:"0px 0px -1px 0px",threshold:[1]}).observe(b),this.elementThumbLoader.load(this.$pageContainer)},get $contentHeader(){var t=$("#content-header");return t.length?t:$("<header/>",{id:"content-header",class:"pane-header"}).prependTo($("#content"))},get $noticeContainer(){var t=$("#content-notice");return t.length?t:$('<div id="content-notice"/>').attr("role","status").prependTo(this.$contentHeader)},initSpecialForms:function(){var t=this;if(this.$confirmUnloadForms=$("form[data-confirm-unload]"),this.$deltaForms=$("form[data-delta]"),this.$confirmUnloadForms.length){for(var e=this.$confirmUnloadForms.add(this.$deltaForms),n=function(){var n=e.eq(i);if(!n.data("initialSerializedValue")){var r=n.data("serializer")||function(){return n.serialize()};n.data("initialSerializedValue",r())}t.addListener(n,"submit",(function(t){if(Garnish.hasAttr(n,"data-confirm-unload")&&this.removeListener(Garnish.$win,"beforeunload"),Garnish.hasAttr(n,"data-delta")){t.preventDefault();var e=n.data("serializer")||function(){return n.serialize()},i=Craft.findDeltaData(n.data("initialSerializedValue"),e(),n.data("delta-names"),null,n.data("initial-delta-values"),n.data("modified-delta-names"));Craft.createForm(i).appendTo(Garnish.$bod).submit()}}))},i=0;i<e.length;i++)n();this.addListener(Garnish.$win,"beforeunload",(function(t){var e=!1;if(void 0!==Craft.livePreview&&Craft.livePreview.inPreviewMode)e=!0;else for(var n=0;n<this.$confirmUnloadForms.length;n++){var i,r=this.$confirmUnloadForms.eq(n);if(i="function"==typeof r.data("serializer")?r.data("serializer")():r.serialize(),r.data("initialSerializedValue")!==i){e=!0;break}}if(e){var a=Craft.t("app","Any changes will be lost if you leave this page.");return t?t.originalEvent.returnValue=a:window.event.returnValue=a,a}}))}},_handleInputFocus:function(){this.updateFixedHeader()},_handleInputBlur:function(){this.updateFixedHeader()},submitPrimaryForm:function(t){this.trigger("beforeSaveShortcut"),"object"===r(t)&&$.isPlainObject(t)||(t={}),t.redirect||(t.redirect=this.$primaryForm.data("saveshortcut-redirect")),t.data||(t.data={}),t.data.saveShortcut=!0,Craft.submitForm(this.$primaryForm,t)},updateSidebarMenuLabel:function(){this.updateContentHeading()},updateContentHeading:function(){var t=this.$sidebar.find("a.sel:first"),e=t.children(".label");$("#content-heading").text(e.length?e.text():t.text()),Garnish.$bod.removeClass("showing-sidebar")},toggleNav:function(){var t=this.navIsExpanded();null!==t&&(t?(this.disableGlobalSidebar(),this.$navToggle.focus(),this.$navToggle.attr("aria-expanded","false"),Garnish.$bod.removeClass("showing-nav")):(this.enableGlobalSidebar(),this.$globalSidebar.find(":focusable")[0].focus(),this.$navToggle.attr("aria-expanded","true"),Garnish.$bod.addClass("showing-nav")))},enableGlobalSidebar:function(){this.$globalSidebar.attr("aria-hidden","false"),this.$globalSidebar.find(":focusable").attr("tabindex","0")},disableGlobalSidebar:function(){this.$globalSidebar.attr("aria-hidden","true"),this.$globalSidebar.find(":focusable").attr("tabindex","-1")},setSidebarNavAttributes:function(){var t=this.navIsExpanded();null!==t&&(t?this.enableGlobalSidebar():this.disableGlobalSidebar())},navIsExpanded:function(){if(!this.$globalSidebar[0])return null;var t=getComputedStyle(this.$globalSidebar[0]).getPropertyValue("--is-always-visible").trim();return"true"===this.$navToggle.attr("aria-expanded")||"true"===t},toggleSidebar:function(){var t="true"===this.$sidebarToggle.attr("aria-expanded")?"false":"true";this.$sidebarToggle.attr("aria-expanded",t),Garnish.$bod.toggleClass("showing-sidebar")},initTabs:function(){this.tabManager&&(this.tabManager.destroy(),this.tabManager=null);var t=$("#tabs");t.length&&(this.tabManager=new Craft.Tabs(t),this.tabManager.on("selectTab",(function(t){var e=t.$tab.attr("href");if(e&&"#"===e.charAt(0)&&$(e).removeClass("hidden"),Garnish.$win.trigger("resize"),Garnish.$doc.trigger("scroll"),e&&"#"===e.charAt(0)){var n,r=i(document.querySelectorAll("#site-crumb-menu a[href], #context-menu a[href]"));try{for(r.s();!(n=r.n()).done;){var a=n.value;a.href=a.href.match(/^[^#]*/)[0]+e}}catch(t){r.e(t)}finally{r.f()}}"undefined"!=typeof history&&Garnish.requestAnimationFrame((function(){history.replaceState(void 0,void 0,e)}))})),this.tabManager.on("deselectTab",(function(t){var e=t.$tab.attr("href");e&&"#"===e.charAt(0)&&$(t.$tab.attr("href")).addClass("hidden")})))},updateTabs:function(t){if(t){var e=$(t).attr("id","tabs");this.tabManager?this.tabManager.$container.replaceWith(e):e.appendTo(this.$contentHeader),this.initTabs()}else this.tabManager&&(this.tabManager.$container.siblings().length?this.tabManager.$container.remove():this.tabManager.$container.parent().remove(),this.tabManager.destroy(),this.tabManager=null)},get $tabsContainer(){return this.tabManager?this.tabManager.$container:void 0},get $tabsList(){return this.tabManager?this.tabManager.$tablist:void 0},get $tabs(){return this.tabManager?this.tabManager.$tablist.find("> a"):void 0},get $selectedTab(){return this.tabManager?this.tabManager.$selectedTab:void 0},get selectedTabIndex(){return this.tabManager?this.tabManager.$tabs.index(this.tabManager.$selectedTab):void 0},get $focusableTab(){return this.tabManager?this.tabManager.$focusableTab:void 0},selectTab:function(t){this.tabManager&&this.tabManager.selectTab(t)},deselectTab:function(){this.tabManager&&this.tabManager.deselectTab()},handleBreadcrumbVisibility:function(){if(this.$crumbItems.length){this.$crumbMenuItems&&(this.$crumbItems.css("max-width",""),this.$crumbMenuItems.insertAfter(this.$crumbMenuTriggerItem),this.$crumbMenuTriggerItem.detach(),this.$crumbMenuItems=null);for(var t=Math.ceil(this.$crumbs[0].getBoundingClientRect().width-this.$navToggle[0].getBoundingClientRect().width),e=[],n=0;n<this.$crumbItems.length;n++){var i=this.$crumbItems.eq(n);e[n]=i[0].getBoundingClientRect().width}if(e.reduce((function(t,e){return t+e}),0)>t){if(this.$crumbMenuTriggerItem)this.$crumbMenuTriggerItem.prependTo(this.$crumbList);else{this.$crumbMenuTriggerItem=$("<li/>",{class:"crumb"}).prependTo(this.$crumbList);var r=$("<div/>",{class:"crumb-label"}).appendTo(this.$crumbMenuTriggerItem),a=$("<button/>",{id:"crumb-menu-trigger","data-icon":"ellipsis","data-disclosure-trigger":"true","aria-controls":"crumb-menu","aria-haspopup":"true","aria-label":Craft.t("app","More…"),title:Craft.t("app","More…")}).appendTo(r);this.$crumbMenu=$("<div/>",{id:"crumb-menu",class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(r),this.$crumbMenuList=$("<ul/>").appendTo(this.$crumbMenu),a.disclosureMenu()}for(var s=this.$crumbMenuTriggerItem[0].getBoundingClientRect().width,o=this.$crumbItems.length-1;o>=0;o--){if(s+e[o]>t){this.$crumbMenuItems=this.$crumbItems.slice(0,o+1),this.$crumbMenuItems.appendTo(this.$crumbMenuList);break}s+=e[o]}}}},handleWindowResize:function(){this.updateResponsiveTables(),this.handleBreadcrumbVisibility()},updateResponsiveTables:function(){for(this.updateResponsiveTables._i=0;this.updateResponsiveTables._i<this.$collapsibleTables.length;this.updateResponsiveTables._i++)this.updateResponsiveTables._$table=this.$collapsibleTables.eq(this.updateResponsiveTables._i),this.updateResponsiveTables._containerWidth=this.updateResponsiveTables._$table.parent().width(),this.updateResponsiveTables._check=!1,this.updateResponsiveTables._containerWidth>0&&(void 0===this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._check=!0:(this.updateResponsiveTables._isCollapsed=this.updateResponsiveTables._$table.hasClass("collapsed"),this.updateResponsiveTables._containerWidth>this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._isCollapsed&&(this.updateResponsiveTables._$table.removeClass("collapsed"),this.updateResponsiveTables._check=!0):this.updateResponsiveTables._isCollapsed||(this.updateResponsiveTables._check=!0)),this.updateResponsiveTables._check&&this.updateResponsiveTables._$table.width()-30>this.updateResponsiveTables._containerWidth&&this.updateResponsiveTables._$table.addClass("collapsed"),this.updateResponsiveTables._$table.data("lastContainerWidth",this.updateResponsiveTables._containerWidth))},updateFixedHeader:function(){if(!this.isMobile)if(this.$main.length&&this.$headerContainer[0].getBoundingClientRect().top<0){var t=this.$headerContainer.height(),e=this.$header.width();this.fixedHeader||(this.$contentContainer.css("min-height","calc(100vh - "+(t+14+48-1)+"px)"),this.$headerContainer.height(t),this.$header.width(e),Garnish.$bod.addClass("fixed-header"),this.fixedHeader=!0),this._setFixedTopPos(this.$sidebar,t),this._setFixedTopPos(this.$details,t)}else this.fixedHeader&&(this.$headerContainer.height("auto"),this.$header.width("auto"),Garnish.$bod.removeClass("fixed-header"),this.$contentContainer.css("min-height",""),this.$sidebar.removeClass("fixed").css("top",""),this.$details.removeClass("fixed").css("top",""),this.fixedHeader=!1)},_setFixedTopPos:function(t,e){t.length&&this.$contentContainer.length&&(t.outerHeight()>=this.$contentContainer.outerHeight()?t.removeClass("fixed").css("top",""):t.addClass("fixed").css("top",Math.min(e+14,Math.max(this.$mainContent[0].getBoundingClientRect().top,document.documentElement.clientHeight-t.outerHeight()))+"px"))},displayNotification:function(t,e,n){var i=new Craft.CP.Notification(t,e,n);return this.trigger("displayNotification",{notificationType:t,message:e,notification:i}),i},displayNotice:function(t,e){return this.displayNotification("notice",t,Object.assign({icon:"info",iconLabel:Craft.t("app","Notice")},e))},displaySuccess:function(t,e){return this.displayNotification("success",t,Object.assign({icon:"check",iconLabel:Craft.t("app","Success")},e))},displayError:function(t,e){return t&&"object"!==r(t)||(e=t,t=Craft.t("app","A server error occurred.")),this.displayNotification("error",t,Object.assign({icon:"alert",iconLabel:Craft.t("app","Error")},e))},fetchAlerts:function(){return Craft.queue.push((function(){return new Promise((function(t,e){var n={path:Craft.path};Craft.sendActionRequest("POST","app/get-cp-alerts",{data:n}).then((function(e){var n=e.data;t(n.alerts)})).catch(e)}))}))},displayAlerts:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.$alerts.remove(),Array.isArray(t)&&t.length){this.$alerts=$('<ul id="alerts"/>').prependTo(this.$pageContainer);var n,r=i(t);try{for(r.s();!(n=r.n()).done;){var a=n.value;$.isPlainObject(a)||(a={content:a,showIcon:!0});var s=a.content;a.showIcon&&(s='<span data-icon="alert" aria-label="'.concat(Craft.t("app","Error"),'"></span> ').concat(s)),$("<li>".concat(s,"</li>")).appendTo(this.$alerts)}}catch(t){r.e(t)}finally{r.f()}if(e){var o=this.$alerts.outerHeight();this.$alerts.css("margin-top",-o).velocity({"margin-top":0},"fast")}this.initAlerts()}},initAlerts:function(){for(var e=this,i=this.$alerts.find('a[class^="shun:"]'),r=0;r<i.length;r++)this.addListener(i[r],"click",(function(t){t.preventDefault(),Craft.queue.push((function(){return new Promise((function(n,i){var r=$(t.currentTarget),a={message:r.prop("className").substring(5)};Craft.sendActionRequest("POST","app/shun-cp-alert",{data:a}).then((function(){r.parent().remove(),n()})).catch((function(t){var n=t.response;e.displayError(n.data.message),i()}))}))}))}));var a=this.$alerts.find(".resolvable-alert-buttons");if(a.length){var s=Craft.ui.createButton({label:Craft.t("app","Refresh"),spinner:!0}).appendTo(a);s.on("click",n(t().mark((function n(){var i;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s.addClass("loading"),t.prev=1,t.next=4,Craft.sendApiRequest("GET","ping");case 4:return t.next=6,e.fetchAlerts();case 6:i=t.sent,e.displayAlerts(i,!1);case 8:return t.prev=8,s.removeClass("loading"),t.finish(8);case 11:case"end":return t.stop()}}),n,null,[[1,,8,11]])}))))}},updateContext:function(t,e){var n=document.querySelector("#context-menu-container > span");n&&(n.textContent=t);var i=document.querySelector("#context-menu a.sel");if(i){i.querySelector(".menu-item-label").textContent=t;var r=i.querySelector(".menu-item-description");e?(r||((r=document.createElement("div")).className="menu-item-description smalltext light",i.append(r)),r.textContent=e):r&&r.remove()}},showSiteCrumbMenuItem:function(t){var e=document.querySelector('#site-crumb-menu a[data-site-id="'.concat(t,'"]'));if(e){var n=e.closest("li");n.classList.remove("hidden");var i=n.closest(".menu-group");i&&i.classList.remove("hidden")}},setSiteCrumbMenuItemStatus:function(t,e){var n=document.querySelector('#site-crumb-menu a[data-site-id="'.concat(t,'"]'));if(n){var i=n.querySelector(".status");e?(i||(i=document.createElement("div"),n.prepend(i)),i.className="status ".concat(e)):i&&i.remove()}},checkForUpdates:function(t,e,n,r){var a=this;if("function"==typeof e&&(r=n,n=e,e=!1),this.checkingForUpdates&&(!0===t&&!this.forcingRefreshOnUpdatesCheck||!0===e&&!this.includingDetailsOnUpdatesCheck)){var s=n,o=r;n=function(){a.checkForUpdates(t,e,s,o)}}"function"==typeof n&&(Array.isArray(this.checkForUpdatesCallbacks)||(this.checkForUpdatesCallbacks=[]),this.checkForUpdatesCallbacks.push(n)),"function"==typeof r&&(Array.isArray(this.checkForUpdatesFailureCallbacks)||(this.checkForUpdatesFailureCallbacks=[]),this.checkForUpdatesFailureCallbacks.push(r)),this.checkingForUpdates||(this.checkingForUpdates=!0,this.forcingRefreshOnUpdatesCheck=!0===t,this.includingDetailsOnUpdatesCheck=!0===e,this._checkForUpdates(t,e).then((function(t){if(a.updateUtilitiesBadge(),a.checkingForUpdates=!1,Array.isArray(a.checkForUpdatesCallbacks)){var e=a.checkForUpdatesCallbacks;a.checkForUpdatesCallbacks=null;var n,r=i(e);try{for(r.s();!(n=r.n()).done;)(0,n.value)(t)}catch(t){r.e(t)}finally{r.f()}}a.trigger("checkForUpdates",{updateInfo:t})})).catch((function(){if(a.checkingForUpdates=!1,Array.isArray(a.checkForUpdatesFailureCallbacks)){var t=a.checkForUpdatesFailureCallbacks;a.checkForUpdatesFailureCallbacks=null;var e,n=i(t);try{for(n.s();!(e=n.n()).done;)(0,e.value)()}catch(t){n.e(t)}finally{n.f()}}})))},_checkForUpdates:function(t,e){var n=this;return new Promise((function(i,r){t?n._getUpdates(e).then(i).catch(r):n._checkForCachedUpdates(e).then((function(t){t.cached?i(t):n._getUpdates(e).then((function(t){i(t)})).catch(r)})).catch(r)}))},_checkForCachedUpdates:function(t){return new Promise((function(e,n){var i={onlyIfCached:!0,includeDetails:t};Craft.sendActionRequest("POST","app/check-for-updates",{data:i}).then((function(t){var n=t.data;e(n)})).catch((function(){e({cached:!1})}))}))},_getUpdates:function(t){var e=this;return new Promise((function(n,i){Craft.sendApiRequest("GET","updates").then((function(r){e._cacheUpdates(r,t).then((function(t){n(t)})).catch(i)})).catch(i)}))},_cacheUpdates:function(t,e){return new Promise((function(n,i){var r={updates:t,includeDetails:e};Craft.sendActionRequest("POST","app/cache-updates",{data:r}).then((function(t){var e=t.data;n(e)})).catch(i)}))},updateUtilitiesBadge:function(){var t=$("#nav-utilities").find("> a:not(.sel)");t.length&&Craft.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","app/get-utilities-badge-count").then((function(n){var i=n.data,r=t.children(".sidebar-action__badge");i.badgeCount&&!r.length&&(r=$('<span class="sidebar-action__badge"><span class="badge" aria-hidden="true"></span><span class="visually-hidden" data-notification></span></span>').appendTo(t));var a=r.children(".badge"),s=r.children("[data-notification]");i.badgeCount?(a.text(i.badgeCount),s.text(Craft.t("app","{num, number} {num, plural, =1{notification} other{notifications}}",{num:i.badgeCount}))):r.length&&r.remove(),e()})).catch(n)}))}))},runQueue:function(){var t=this;this.enableQueue&&(Craft.runQueueAutomatically?Craft.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","queue/run").then((function(){t.trackJobProgress(!1,!0),e()})).catch(n)}))})):this.trackJobProgress(!1,!0))},trackJobProgress:function(t,e){this.trackJobProgressTimeout&&!e||!this.enableQueue||(this.cancelJobTracking(),t?(!0===t&&(t=this.getNextJobDelay()),this.trackJobProgressTimeout=setTimeout(this._trackJobProgressInternal.bind(this),t)):this._trackJobProgressInternal())},getNextJobDelay:function(){return Math.min(6e4,500*this.displayedJobInfoUnchanged)},_trackJobProgressInternal:function(){var e=this;this.trackingJobProgress=!0,Craft.queue.push(n(t().mark((function n(){var i,r;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.trackingJobProgress){t.next=2;break}return t.abrupt("return");case 2:return Craft.broadcaster&&Craft.broadcaster.postMessage({event:"beforeTrackJobProgress"}),e.jobProgressCancelToken=axios.CancelToken.source(),t.prev=4,t.next=7,Craft.sendActionRequest("POST","queue/get-job-info?limit=50&dontExtendSession=1",{cancelToken:e.jobProgressCancelToken.token});case 7:r=t.sent,i=r.data,t.next=15;break;case 11:if(t.prev=11,t.t0=t.catch(4),!e.trackingJobProgress){t.next=15;break}throw t.t0;case 15:return t.prev=15,e.trackingJobProgress=!1,e.trackJobProgressTimeout=null,e.jobProgressCancelToken=null,t.finish(15);case 20:e.setJobData(i),e.jobInfo.length&&e.trackJobProgress(!0),Craft.broadcaster&&Craft.broadcaster.postMessage({event:"trackJobProgress",jobData:i});case 23:case"end":return t.stop()}}),n,null,[[4,11,15,20]])}))))},setJobData:function(t){this.totalJobs=t.total,this.setJobInfo(t.jobs)},setJobInfo:function(t){if(this.enableQueue){this.jobInfo=t;var e=this.displayedJobInfo;this.displayedJobInfo=this.getDisplayedJobInfo(),e&&this.displayedJobInfo&&e.id===this.displayedJobInfo.id&&e.progress===this.displayedJobInfo.progress&&e.progressLabel===this.displayedJobInfo.progressLabel&&e.status===this.displayedJobInfo.status?this.displayedJobInfoUnchanged++:this.displayedJobInfoUnchanged=1,this.updateJobIcon(),this.trigger("setJobInfo")}},cancelJobTracking:function(){this.trackingJobProgress=!1,this.trackJobProgressTimeout&&(clearTimeout(this.trackJobProgressTimeout),this.trackJobProgressTimeout=null),this.jobProgressCancelToken&&this.jobProgressCancelToken.cancel()},getDisplayedJobInfo:function(){if(!this.enableQueue)return null;for(var t=[Craft.CP.JOB_STATUS_RESERVED,Craft.CP.JOB_STATUS_FAILED,Craft.CP.JOB_STATUS_WAITING],e=0;e<t.length;e++)for(var n=0;n<this.jobInfo.length;n++)if(this.jobInfo[n].status===t[e]&&(t[e]!==Craft.CP.JOB_STATUS_WAITING||!this.jobInfo[n].delay))return this.jobInfo[n];return null},updateJobIcon:function(){this.enableQueue&&this.$nav.length&&(this.displayedJobInfo?(this.jobProgressIcon||(this.jobProgressIcon=new o),this.displayedJobInfo.status===Craft.CP.JOB_STATUS_RESERVED||this.displayedJobInfo.status===Craft.CP.JOB_STATUS_WAITING?(this.jobProgressIcon.hideFailMode(),this.jobProgressIcon.setDescription(this.displayedJobInfo.description,this.displayedJobInfo.progressLabel),this.jobProgressIcon.setProgress(this.displayedJobInfo.progress)):this.displayedJobInfo.status===Craft.CP.JOB_STATUS_FAILED&&this.jobProgressIcon.showFailMode(Craft.t("app","Failed"))):this.jobProgressIcon&&(this.jobProgressIcon.hideFailMode(),this.jobProgressIcon.complete(),delete this.jobProgressIcon))},getSiteId:function(){var t=Craft.getLocalStorage("BaseElementIndex.siteId");if(void 0!==t){Craft.removeLocalStorage("BaseElementIndex.siteId");try{this.setSiteId(t)}catch(t){}}return Craft.siteId},setSiteId:function(t){var e=Craft.sites.find((function(e){return e.id===t}));if(!e)throw"Invalid site ID: ".concat(t);Craft.siteId=t,Craft.actionUrl=Craft.getUrl(Craft.actionUrl,{site:e.handle}),Craft.baseCpUrl=Craft.getUrl(Craft.baseCpUrl,{site:e.handle}),Craft.baseUrl=Craft.getUrl(Craft.baseUrl,{site:e.handle});var n=Craft.getUrl(document.location.href,{site:e.handle});history.replaceState({},"",n);var r,a=i(document.body.classList);try{for(a.s();!(r=a.n()).done;){var s=r.value;s.match(/^site--/)&&document.body.classList.remove(s)}}catch(t){a.e(t)}finally{a.f()}document.body.classList.add("site--".concat(e.handle)),$("a").each((function(){this.hostname.length&&this.hostname===location.hostname&&-1!==this.href.indexOf(Craft.cpTrigger)&&(this.href=Craft.getUrl(this.href,{site:e.handle}))}))}},{notificationDuration:5e3,JOB_STATUS_WAITING:1,JOB_STATUS_RESERVED:2,JOB_STATUS_DONE:3,JOB_STATUS_FAILED:4}),Craft.CP.Notification=Garnish.Base.extend({type:null,message:null,settings:null,closing:!1,closeTimeout:null,_preventDelayedClose:!1,$container:null,$closeBtn:null,originalActiveElement:null,init:function(t,e,n){var i=this;this.type=t,this.message=e,this.settings=n||{},this.$container=$("<div/>",{class:"notification","data-type":this.type}).appendTo(Craft.cp.$notificationContainer);var r=$('<div class="notification-body"/>').appendTo(this.$container);if(this.settings.icon){var a=$("<span/>",{class:"notification-icon","data-icon":this.settings.icon}).appendTo(r);this.settings.iconLabel?a.attr({"aria-label":this.settings.iconLabel,role:"img"}):a.attr("aria-hidden","true")}var s=$('<div class="notification-main"/>').appendTo(r);$("<div/>",{class:"notification-message",text:this.message}).appendTo(s);var o=$("<div/>").appendTo(this.$container);this.$closeBtn=$("<button/>",{type:"button",class:"notification-close-btn","aria-label":Craft.t("app","Close"),"data-icon":"remove"}).appendTo(o),this.settings.details&&$('<div class="notification-details"/>').append(this.settings.details).appendTo(s).find("button,input").length&&(this.originalActiveElement=document.activeElement,this.$container.attr("tabindex","-1").focus(),this.addListener(this.$container,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&i.close()}))),this.$container.css({opacity:0,"margin-bottom":this._negMargin()}).velocity({opacity:1,"margin-bottom":0},{duration:"fast"}),Craft.initUiElements(this.$container),this.addListener(this.$closeBtn,"click","close"),Craft.notificationDuration&&this._initDelayedClose()},_initDelayedClose:function(){var t=this;this._preventDelayedClose||(Craft.isVisible()?(this.delayedClose(),this.$container.on("keypress keyup change focus click mousedown mouseup",(function(e){e.target!=t.$closeBtn[0]&&(t.$container.off("keypress keyup change focus click mousedown mouseup"),t.preventDelayedClose())}))):Garnish.$doc.one("visibilitychange",(function(){t._initDelayedClose()})))},_negMargin:function(){return"-".concat(this.$container.outerHeight()+12,"px")},close:function(){var t=this;this.closing||(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.closing=!0,this.originalActiveElement&&document.activeElement&&(document.activeElement===this.$container[0]||$.contains(this.$container[0],document.activeElement))&&$(this.originalActiveElement).focus(),this.$container.velocity({opacity:0,"margin-bottom":this._negMargin()},{duration:"fast",complete:function(){t.destroy()}}))},delayedClose:function(){var t=this;this.closeTimeout=setTimeout((function(){t.close()}),Craft.notificationDuration),this.$container.one("mouseover",(function(){clearTimeout(t.closeTimeout),t.closeTimeout=null,t.$container.on("mouseout",(function(e){e.target==t.$container[0]&&(t.$container.off("mouseout"),t.delayedClose())}))}))},preventDelayedClose:function(){this._preventDelayedClose=!0,this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.$container.off("mouseover mouseout")},destroy:function(){this.$container.remove(),this.base()}}),Garnish.$scrollContainer=Garnish.$win,Craft.cp=new Craft.CP;var o=Garnish.Base.extend({$li:null,$a:null,$label:null,$progressLabel:null,progress:null,failMode:!1,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){this.$li=$("<li/>",{class:"nav-item nav-item--job"}).appendTo(Craft.cp.$nav.children("ul")),this.$a=$("<a/>",{id:"job-icon",class:"sidebar-action sidebar-action--job",href:Craft.canAccessQueueManager?Craft.getUrl("utilities/queue-manager"):null}).appendTo(this.$li);var t=$('<span class="sidebar-action__prefix"/>');this.$canvasContainer=$('<span class="nav-icon"/>').appendTo(t),t.appendTo(this.$a);var e=$('<span class="sidebar-action__label">');e.appendTo(this.$a),this.$label=$('<span class="label"/>').appendTo(e),this.$progressLabel=$('<span class="progress-label"/>').appendTo(e).hide();var n=window.devicePixelRatio>1?2:1;this._canvasSize=18*n,this._arcPos=this._canvasSize/2,this._arcRadius=7*n,this._lineWidth=3*n,this._$bgCanvas=this._createCanvas("bg",this.$li.css("background-color")),this._$staticCanvas=this._createCanvas("static",this.$li.css("color")),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)},setDescription:function(t,e){this.$a.attr("title",t),this.$label.text(t),e?this.$progressLabel.text(e).show():this.$progressLabel.hide()},setProgress:function(t){0==t?(this._$staticCanvas.hide(),this._$hoverCanvas.hide()):(this._$staticCanvas.show(),this._$hoverCanvas.show(),this.progress&&t>this.progress?this._animateArc(0,t/100):this._setArc(0,t/100)),this.progress=t},complete:function(){var t=this;this._animateArc(0,1,(function(){t._$bgCanvas.velocity("fadeOut"),t._animateArc(1,1,(function(){t.$li.remove(),t.destroy()}))}))},showFailMode:function(t){this.failMode||(this.failMode=!0,this.progress=null,this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show(),this.setDescription(t))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide())},_createCanvas:function(t,e){var n=$('<canvas id="job-icon-'+t+'" width="'+this._canvasSize+'" height="'+this._canvasSize+'"/>').appendTo(this.$canvasContainer),i=n[0].getContext("2d");return i.strokeStyle=e,i.lineWidth=this._lineWidth,i.lineCap="round",n},_setArc:function(t,e){this._arcStartPos=t,this._arcEndPos=e,this._drawArc(this._staticCtx,t,e),this._drawArc(this._hoverCtx,t,e)},_drawArc:function(t,e,n){t.clearRect(0,0,this._canvasSize,this._canvasSize),t.beginPath(),t.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*e)*Math.PI,(1.5+2*n)*Math.PI),t.stroke(),t.closePath()},_animateArc:function(t,e,n){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(t-this._arcStartPos)/10,this._arcEndStepSize=(e-this._arcEndPos)/10,this._arcAnimateCallback=n,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(this._takeNextArcStep.bind(this),50):this._arcAnimateCallback&&this._arcAnimateCallback()}})},313:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CardsElementIndexView=Craft.BaseElementIndexView.extend({cardSort:null,afterInit:function(){var e=this;this.settings.sortable&&(this.cardSort=new Garnish.DragSort(this.getAllElements(),{container:this.$elementContainer,filter:this.settings.selectable?function(){return e.cardSort.$targetItem.children(".element").hasClass("sel")?e.elementSelect.getSelectedItems().parent("li"):e.cardSort.$targetItem}:null,ignoreHandleSelector:null,handle:"> .element > .card-actions-container > .card-actions > .move",collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,helper:function(t){return t.children().outerHeight(e.cardSort.$draggee.height()),t},onInsertionPointChange:function(){var n,i=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(e.cardSort.helpers);try{for(i.s();!(n=i.n()).done;)n.value.children().outerHeight(e.cardSort.$draggee.height())}catch(t){i.e(t)}finally{i.f()}},onSortChange:function(){e.settings.selectable&&e.elementSelect.resetItemOrder(),e.settings.onSortChange(e.cardSort.$draggee)}}))},getElementContainer:function(){return this.$container.find("> .card-grid")}})},3778:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CategoryIndex=Craft.BaseElementIndex.extend({editableGroups:null,$newCategoryBtnGroup:null,$newCategoryBtn:null,init:function(t,e,n){this.editableGroups=[],this.on("selectSource",this.updateButton.bind(this)),this.on("selectSite",this.updateButton.bind(this)),this.base(t,e,n)},afterInit:function(){var t=this;this.editableGroups=Craft.editableCategoryGroups.filter((function(e){return!!t.getSourceByKey("group:".concat(e.uid))})),this.base()},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultGroupHandle)for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("handle")===defaultGroupHandle)return e.data("key")}return this.base()},updateButton:function(){var e=this;if(this.$source){var n=this.$source.data("handle");if(this.editableGroups.length){this.$newCategoryBtnGroup&&this.$newCategoryBtnGroup.remove();var i,r=this.editableGroups.find((function(t){return t.handle===n}));this.$newCategoryBtnGroup=$('<div class="btngroup submit" data-wrapper/>');var a="new-category-menu-"+Craft.randomString(10);if(r){var s="index"===this.settings.context?Craft.t("app","New {type}",{type:Craft.t("app","category")}):Craft.t("app","New {group} category",{group:r.name}),o="index"===this.settings.context?Craft.t("app","New category in the {group} category group",{group:r.name}):s,l="index"===this.settings.context?"link":null;this.$newCategoryBtn=Craft.ui.createButton({label:s,ariaLabel:o,spinner:!0,role:l}).addClass("submit add icon").appendTo(this.$newCategoryBtnGroup),this.addListener(this.$newCategoryBtn,"click mousedown",(function(t){"index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)?window.open(Craft.getUrl("categories/".concat(r.handle,"/new"))):"click"===t.type&&e._createCategory(r.id)})),this.editableGroups.length>1&&(i=$("<button/>",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":a,"data-disclosure-trigger":"","aria-label":Craft.t("app","New category, choose a category group")}).appendTo(this.$newCategoryBtnGroup))}else this.$newCategoryBtn=i=Craft.ui.createButton({label:Craft.t("app","New {type}",{type:Craft.t("app","category")}),ariaLabel:Craft.t("app","New category, choose a category group"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",a).attr("data-disclosure-trigger","").appendTo(this.$newCategoryBtnGroup);if(this.addButton(this.$newCategoryBtnGroup),i){var c,h=$("<div/>",{id:a,class:"menu menu--disclosure"}).appendTo(this.$newCategoryBtnGroup),u=$("<ul/>").appendTo(h),d=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.editableGroups);try{var f=function(){var t=c.value,n="index"===e.settings.context?"link":"button";if("index"===e.settings.context||t!==r){var a=$("<li/>").appendTo(u),s=$("<a/>",{role:"button"===n?"button":null,href:"#",type:"button"===n?"button":null,text:Craft.t("app","New {group} category",{group:t.name})}).appendTo(a);e.addListener(s,"click",(function(){i.data("trigger").hide(),e._createCategory(t.id)})),"button"===n&&e.addListener(s,"keydown",(function(n){n.keyCode===Garnish.SPACE_KEY&&(n.preventDefault(),i.data("trigger").hide(),e._createCategory(t.id))}))}};for(d.s();!(c=d.n()).done;)f()}catch(t){d.e(t)}finally{d.f()}new Garnish.DisclosureMenu(i)}}if("index"===this.settings.context){var p="categories";n&&(p+="/"+n),Craft.setPath(p)}}},_createCategory:function(t){var e=this;if(this.$newCategoryBtn.hasClass("loading"))console.warn("New category creation already in progress.");else{var n=this.editableGroups.find((function(e){return e.id===t}));if(!n)throw"Invalid category group ID: ".concat(t);this.$newCategoryBtn.addClass("loading"),Craft.sendActionRequest("POST","elements/create",{data:{elementType:this.elementType,siteId:this.siteId,groupId:t}}).then((function(t){"index"===e.settings.context?document.location.href=Craft.getUrl(t.data.cpEditUrl,{fresh:1}):Craft.createElementEditor(e.elementType,{siteId:e.siteId,elementId:t.data.element.id,draftId:t.data.element.draftId,params:{fresh:1}}).on("submit",(function(){var i="group:".concat(n.uid);e.sourceKey!==i&&e.selectSourceByKey(i),e.clearSearch(),e.selectElementAfterUpdate(t.data.element.id),e.updateElements()}))})).finally((function(){e.$newCategoryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Category",Craft.CategoryIndex)},6617:function(){Craft.CategorySelectInput=Craft.BaseElementSelectInput.extend({setSettings:function(){this.base.apply(this,arguments),this.settings.sortable=!1},getModalSettings:function(){var t=this.base();return t.hideOnSelect=!1,t},getElements:function(){return this.$elementsContainer.find(".element")},onModalSelect:function(t){var e=this;this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner();for(var n=this.getSelectedElementIds(),i=0;i<t.length;i++)n.push(t[i].id);var r={categoryIds:n,siteId:t[0].siteId,id:this.settings.id,name:this.settings.name,branchLimit:this.settings.branchLimit,selectionLabel:this.settings.selectionLabel},a=function(){e.modal.enable(),e.modal.enableCancelBtn(),e.modal.enableSelectBtn(),e.modal.hideFooterSpinner()};Craft.sendActionRequest("POST","categories/input-html",{data:r}).then((function(n){a();var i=$(n.data.html).children(".elements");e.$elementsContainer.replaceWith(i),e.$elementsContainer=i,e.resetElements();for(var r=[],s=0;s<t.length;s++){var o=t[s],l=e.getElementById(o.id);l&&(e.animateElementIntoPlace(o.$element,l),r.push(o))}e.updateDisabledElementsInModal(),e.modal.hide(),e.onSelectElements(r)})).catch((function(t){t.response,a()}))},removeElement:function(t){var e=t.add(t.parent().siblings("ul").find(".element"));this.removeElements(e);for(var n=0;n<e.length;n++)this._animateCategoryAway(e,n)},_animateCategoryAway:function(t,e){var n,i=this;e===t.length-1&&(n=function(){var e=t.first().parent().parent(),n=e.parent();n[0]===i.$elementsContainer[0]||e.siblings().length?e.remove():n.remove()});var r=function(){i.animateElementAway(t.eq(e),n)};0===e?r():setTimeout(r,100*e)}})},3352:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.ColorInput=Garnish.Base.extend({$container:null,$input:null,$colorContainer:null,$colorPreview:null,$colorInput:null,init:function(t,e){this.setSettings(e,Craft.ColorInput.defaults),this.$container=$(t),this.$input=this.$container.find(".color-input"),this.$colorContainer=this.$container.children(".color"),this.$colorPreview=this.$colorContainer.children(".color-preview"),this.createColorInput(),this.handleTextChange(),this.addListener(this.$input,"input","handleTextChange")},createColorInput:function(){var e,n=document.createElement("input");if(n.setAttribute("type","color"),"color"===n.type){if(this.$colorContainer.removeClass("static"),this.$colorInput=$(n).addClass("color-preview-input").attr({"aria-controls":this.$input.attr("id"),"aria-label":Craft.t("app","Color picker")}).appendTo(this.$colorPreview),null!==(e=this.settings.presets)&&void 0!==e&&e.length){var i="listbox-".concat(Math.floor(1e6*Math.random()));this.$colorInput.attr("list",i);var r,a=$("<datalist/>",{id:i}).insertAfter(this.$colorInput),s=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.settings.presets);try{for(s.s();!(r=s.n()).done;){var o=r.value;$("<option/>").text(o).appendTo(a)}}catch(t){s.e(t)}finally{s.f()}}this.addListener(this.$colorInput,"click",(function(t){t.stopPropagation()})),this.addListener(this.$colorContainer,"click",(function(){this.$colorInput.trigger("click")})),this.addListener(this.$colorInput,"input","updateColor")}},updateColor:function(){this.$input.val(this.$colorInput.val()),this.handleTextChange()},handleTextChange:function(){var t=this.$input.val();t!==(t=t.trim())&&this.$input.val(t),t.length&&"#"===t[0]&&(t=t.substring(1),this.$input.val(t)),t.length?(3===t.length&&(t=t[0].repeat(2)+t[1].repeat(2)+t[2].repeat(2)),t.match(/^[0-9a-f]{6}$/i)?(this.$colorPreview.css("background-color","#".concat(t)),this.$colorInput&&this.$colorInput.val("#".concat(t))):this.$colorPreview.css("background-color","")):this.$colorPreview.css("background-color","")}},{defaults:{presets:[]},_browserSupportsColorInputs:null,doesBrowserSupportColorInputs:function(){return Craft.ColorInput._browserSupportsColorInputs,Craft.ColorInput._browserSupportsColorInputs}})},3048:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.ComponentSelectInput=Garnish.Base.extend({componentSelect:null,componentSort:null,$container:null,$form:null,$list:null,$components:null,$addBtn:null,$createBtn:null,_initialized:!1,init:function(t){var e=this;this.setSettings(t,Craft.ComponentSelectInput.defaults),1===this.settings.limit&&(this.settings.sortable=!1),this.$container=$("#".concat(this.settings.id)),this.$form=this.$container.closest("form"),this.$container.data("componentSelect",this),this.$list=this.$container.children("ul"),this.$addBtn=this.$container.find(".add-btn:first"),this.$createBtn=this.$container.find(".create-btn:first"),this.initComponentSelect(),this.initComponentSort(),this.resetComponents(),this.$addBtn.length&&this.addListener(this.getOptions(),"activate",(function(t){var n=$(t.currentTarget);e.addComponent(n.data("type"),n.data("id"))})),this.$createBtn.length&&this.settings.createAction&&this.addListener(this.$createBtn,"activate",(function(){var t=new Craft.CpScreenSlideout(e.settings.createAction);t.on("submit",(function(t){var n=t.response.data;e.addComponent(n.modelClass,n.modelId,!0)})),t.on("close",(function(){e.$createBtn.focus()}))})),this.componentSelect&&this.addListener(Garnish.$win,"mousedown",(function(t){e.$container.is(t.target)||e.$container.find(t.target).length||e.componentSelect.deselectAll()})),this._initialized=!0},get totalSelected(){return this.$components.length},getComponents:function(){return this.$list.find(".chip")},getOptions:function(){return this.$addBtn.length?this.$addBtn.disclosureMenu().data("disclosureMenu").$container.find("button"):$()},getOption:function(t){return this.getOptions().filter('[data-id="'.concat(t,'"]'))},showOption:function(t){this.getOption(t).parent("li").removeClass("hidden")},hideOption:function(t){this.getOption(t).parent("li").addClass("hidden")},initComponentSelect:function(){this.settings.selectable&&(this.componentSelect=new Garnish.Select({multi:this.settings.sortable,filter:function(t){return!$(t).closest("a[href],button,[role=button]").length},makeFocusable:!1}))},initComponentSort:function(){var t=this;this.settings.sortable&&(this.componentSort=new Garnish.DragSort({container:this.$list,filter:this.settings.selectable?function(){return t.componentSort.$targetItem.children(".chip").hasClass("sel")?t.componentSelect.getSelectedItems().parent("li"):t.componentSort.$targetItem}:null,ignoreHandleSelector:".delete",handle:"> .chip > .chip-content > .chip-actions > .move",axis:this.getComponentSortAxis(),collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onChange()}}))},getComponentSortAxis:function(){return this.$list.hasClass("inline-chips")?null:"y"},canAddMoreComponents:function(){return!this.settings.limit||this.$components.length<this.settings.limit},updateButtons:function(){this.canAddMoreComponents()?(this.$addBtn.length&&(this.getOptions().parent(":not(.hidden)").length?this.$addBtn.removeClass("hidden"):this.$addBtn.addClass("hidden")),this.$createBtn.length&&this.$createBtn.removeClass("hidden")):(this.$addBtn.length&&this.$addBtn.addClass("hidden"),this.$createBtn.length&&this.$createBtn.addClass("hidden"));var t=this.$addBtn.length&&this.$addBtn.parent(".flex");t&&t.length&&(t.children(":not(.hidden)").length?t.removeClass("hidden"):t.addClass("hidden"))},focusNextLogicalElement:function(){this.canAddMoreComponents()?this.$addBtn.length&&this.$addBtn.get(0).focus():this.focusLastRemoveBtn()},focusLastRemoveBtn:function(){var t=this.$container.find(".delete");t.length&&t.last()[0].focus()},resetComponents:function(){null!==this.$components?this.removeComponents(this.$components):this.$components=$(),this.addComponents(this.getComponents())},addComponents:function(t){for(var e=this,n=function(){var n=t.eq(i),r=e.defineComponentActions(n);Craft.addActionsToChip(n,r);var a=n.find("> .chip-content > .chip-actions .action-btn").disclosureMenu().data("disclosureMenu"),s=a.$container.find("[data-move-forward]")[0],o=a.$container.find("[data-move-backward]")[0];a.on("show",(function(){var t=n.parent(),e=t.prev(),i=t.next();s&&a.toggleItem(s,e.length),o&&a.toggleItem(o,i.length)})),e.settings.sortable&&$("<button/>",{type:"button",class:"move icon",title:Craft.t("app","Reorder"),"aria-label":Craft.t("app","Reorder"),"aria-describedby":n.find(".label").attr("id")}).appendTo(n.find(".chip-actions")),e.addListener(n,"dblclick,taphold",(function(t){"taphold"===t.type&&"BUTTON"===t.target.nodeName||a.$container.find("[data-edit-action]").click()})),e.hideOption(n.data("id"))},i=0;i<t.length;i++)n();this.settings.selectable&&this.componentSelect.addItems(t),this.settings.sortable&&this.componentSort.addItems(t.parent("li")),t.on("keydown",(function(t){if([Garnish.BACKSPACE_KEY,Garnish.DELETE_KEY].includes(t.keyCode)){t.stopPropagation(),t.preventDefault();for(var n=e.componentSelect.getSelectedItems(),i=0;i<n.length;i++)e.removeComponent(n.eq(i))}})),this.$components=this.$components.add(t),this.onChange()},defineComponentActions:function(t){var e=this,n=[];if(this.settings.sortable){var i=this.getComponentSortAxis();n.push({icon:"y"===i?"arrow-up":"ltr"===Craft.orientation?"arrow-left":"arrow-right",label:"y"===i?Craft.t("app","Move up"):Craft.t("app","Move forward"),callback:function(){e.moveComponentForward(t)},attributes:{"data-move-forward":!0}}),n.push({icon:"y"===i?"arrow-down":"ltr"===Craft.orientation?"arrow-right":"arrow-left",label:"y"===i?Craft.t("app","Move down"):Craft.t("app","Move backward"),callback:function(){e.moveComponentBackward(t)},attributes:{"data-move-backward":!0}})}return n.push({icon:"remove",label:Craft.t("app","Remove"),callback:function(){e.removeComponent(t)},destructive:!0}),n},onChange:function(){var t;null===(t=this.componentSelect)||void 0===t||t.resetItemOrder(),this.$components=$().add(this.$components),this.updateButtons(),this._initialized&&this.trigger("change")},moveComponentForward:function(t){var e=t.closest("li"),n=e.prev();n.length&&(e.insertBefore(n),this.onChange())},moveComponentBackward:function(t){var e=t.closest("li"),n=e.next();n.length&&(e.insertAfter(n),this.onChange())},removeComponents:function(t){this.settings.selectable&&this.componentSelect.removeItems(t),t.children("input").prop("disabled",!0);for(var e=0;e<t.length;e++)this.showOption(t.eq(e).data("id"));var n;if(this.settings.selectable){var i=this.$components.index(t.last());n=this.$components.eq(i+1)}n.length?n.focus():this.focusNextLogicalElement(),this.$components=this.$components.not(t),this.onChange()},removeComponent:function(t){$("[name]",t).removeAttr("name"),this.removeComponents(t),this.animateComponentAway(t,(function(){t.parent("li").remove()}))},animateComponentAway:function(t,e){t.css("z-index",0);var n={opacity:-1};n["margin-"+Craft.left]=-(t.outerWidth()+parseInt(t.css("margin-"+Craft.right))),n["margin-bottom"]=-(t.outerHeight()+parseInt(t.css("margin-bottom"))),t.velocity(n,Craft.ComponentSelectInput.REMOVE_FX_DURATION,(function(){e&&e()}))},getSelectedComponentIds:function(){for(var t=[],e=0;e<this.$components.length;e++)t.push(this.$components.eq(e).data("id"));return t},addComponent:function(t,i){var r,a=arguments,s=this;return(r=e().mark((function n(){var r,o,l,c,h,u,d;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>2&&void 0!==a[2]&&a[2],o=s.$addBtn.length?s.$addBtn.disclosureMenu().data("disclosureMenu"):null,e.next=4,Craft.sendActionRequest("POST","app/render-components",{data:{components:[{type:t,id:i,instances:[{showActionMenu:s.settings.showActionMenu,inputName:s.settings.name}]}],withMenuItems:r,menuId:null==o?void 0:o.$container.attr("id")}});case 4:return l=e.sent,c=l.data,(h=s.canAddMoreComponents())&&(u=$(c.components[t][i][0]),$("<li/>").append(u).appendTo(s.$list),s.addComponents(u)),r&&o&&(d=$(c.menuItems[t][i]),o.addItem(d),h&&o.hideItem(d.children()[0]),s.addListener(d.find("button"),"activate",(function(){s.addComponent(t,i)}))),e.next=11,Craft.appendHeadHtml(c.headHtml);case 11:return e.next=13,Craft.appendBodyHtml(c.bodyHtml);case 13:case"end":return e.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(i,a){var s=r.apply(t,e);function o(t){n(s,i,a,o,l,"next",t)}function l(t){n(s,i,a,o,l,"throw",t)}o(void 0)}))})()}},{REMOVE_FX_DURATION:200,defaults:{id:null,name:null,limit:null,sortable:!0,selectable:!0,showActionMenu:!0,createAction:null}})},1157:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CpModal=Garnish.Modal.extend({action:null,namespace:null,showingLoadSpinner:!1,$loadSpinner:null,$container:null,$body:null,$content:null,$sidebar:null,$footer:null,$cancelBtn:null,$saveBtn:null,showingSidebar:!1,cancelToken:null,ignoreFailedRequest:!1,fieldsWithErrors:null,init:function(t,e){var n=this;this.action=t,this.setSettings(e,Craft.CpModal.defaults),this.fieldsWithErrors=[],this.$body=$("<div/>",{class:"cpmodal-body"}),this.$content=$("<div/>",{class:"cpmodal-content"}).appendTo(this.$body),this.$footer=$("<div/>",{class:"cpmodal-footer hidden"}),$("<div/>",{class:"flex-grow"}).appendTo(this.$footer);var i=$("<div/>",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$loadSpinner=$("<div/>",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).prependTo(i),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(i),this.settings.showSubmitButton&&(this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(i)),this.$container=$("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes);var r=this.$body.add(this.$footer);this.$container.append(r),this.base(this.$container,{autoShow:!1}),this.$container.data("cpModal",this),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){n.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){n.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!n.showingSidebar||e.closest(n.$sidebarBtn).length||e.closest(n.$sidebar).length||n.hideSidebar()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var n=this;return new Promise((function(t,i){n.trigger("beforeLoad"),n.showLoadSpinner(),n.cancelToken&&(n.ignoreFailedRequest=!0,n.cancelToken.cancel()),n.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",n.action,$.extend({params:Object.assign({},n.getParams(),n.settings.params),cancelToken:n.cancelToken.token,headers:{"X-Craft-Container-Id":n.$container.attr("id")}},n.settings.requestOptions)).then((function(r){n.update(r.data).then((function(){!1!==e&&(n.$container.data("delta-names",r.data.deltaNames),n.$container.data("initial-delta-values",r.data.initialDeltaValues),n.$container.data("initialSerializedValue",n.$container.serialize())),t()})).catch((function(t){i(t)}))})).catch((function(t){n.ignoreFailedRequest||(Craft.cp.displayError(),i(t)),n.ignoreFailedRequest=!1})).finally((function(){n.hideLoadSpinner(),n.show(),n.cancelToken=null}))}))},getParams:function(){return{}},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1},update:function(t){var e=this;return new Promise((function(n){e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame((function(){Craft.appendHeadHtml(t.headHtml),Craft.appendBodyHtml(t.bodyHtml),Craft.initUiElements(e.$content),Craft.cp.elementThumbLoader.load($(e.$content)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),n(),e.trigger("load")}))}))},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),e.modelClass&&e.modelId&&Craft.refreshComponentInstances(e.modelClass,e.modelId),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors)},showErrors:function(e){var n=this;this.clearErrors(),Object.entries(e).forEach((function(e){var i,r,a=(r=2,function(t){if(Array.isArray(t))return t}(i=e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(i,r)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(i,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=a[0],o=a[1],l=n.$container.find('[data-attribute="'.concat(s,'"]'));l&&(Craft.ui.addErrorsToField(l,o),n.fieldsWithErrors.push(l))})),this.updateSizeAndPosition()},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){var t=this,e=this.$container.data("initialSerializedValue");return void 0!==e&&e!==(this.$container.data("serializer")||function(){return t.$container.serialize()})()},closeMeMaybe:function(){this.visible&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("close"),this.destroy()}},{defaults:{params:{},containerElement:"form",containerAttributes:{id:"cp-modal-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cpmodal modal fitted"},requestOptions:{},closeOnSubmit:!0,showSubmitButton:!0}})},8167:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function i(){"use strict";i=function(){return n};var e,n={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function r(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var s=t.apply(e,n);function o(t){r(s,i,a,o,l,"next",t)}function l(t){r(s,i,a,o,l,"throw",t)}o(void 0)}))}}Craft.CpScreenSlideout=Craft.Slideout.extend({action:null,namespace:null,showingLoadSpinner:!1,hasTabs:!1,hasCpLink:!1,hasSidebar:!1,$header:null,$toolbar:null,$tabContainer:null,$loadSpinner:null,$actionBtn:null,$editLink:null,$sidebarBtn:null,$body:null,$content:null,$sidebar:null,$footer:null,$noticeContainer:null,$cancelBtn:null,$saveBtn:null,tabManager:null,showingSidebar:!1,cancelToken:null,ignoreFailedRequest:!1,fieldsWithErrors:null,init:function(t,e){var n=this;this.action=t,this.setSettings(e,Craft.CpScreenSlideout.defaults),this.fieldsWithErrors=[],this.$header=$("<header/>",{class:"pane-header"}),this.$toolbar=$("<div/>",{class:"so-toolbar"}).appendTo(this.$header),this.$tabContainer=$("<div/>",{class:"pane-tabs"}).appendTo(this.$toolbar),this.$loadSpinner=$("<div/>",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).appendTo(this.$toolbar),this.$editLink=$("<a/>",{target:"_blank",class:"btn header-btn hidden",title:Craft.t("app","Open in a new tab"),"aria-label":Craft.t("app","Open in a new tab"),"data-icon":"external"}).appendTo(this.$toolbar),this.$sidebarBtn=$("<button/>",{type:"button",class:"btn header-btn hidden sidebar-btn",title:Craft.t("app","Show sidebar"),"aria-label":Craft.t("app","Show sidebar"),"data-icon":"sidebar-".concat(Garnish.ltr?"right":"left"),"aria-expanded":"false"}).appendTo(this.$toolbar),this.addListener(this.$sidebarBtn,"click",(function(t){t.preventDefault(),n.showingSidebar?n.hideSidebar():n.showSidebar()})),this.$body=$("<div/>",{class:"so-body"}),this.$content=$("<div/>",{class:"so-content"}).appendTo(this.$body),this.$sidebar=$("<div/>",{class:"so-sidebar details hidden"}).appendTo(this.$body),this.$footer=$("<div/>",{class:"so-footer hidden"}),this.$noticeContainer=$("<div/>",{class:"so-notice"}).appendTo(this.$footer),$("<div/>",{class:"flex-grow"}).appendTo(this.$footer);var i=$("<div/>",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(i),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(i);var r=this.$header.add(this.$body).add(this.$footer);this.base(r,{containerElement:"form",containerAttributes:{id:"cp-screen-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cp-screen"},closeOnEsc:!1,closeOnShadeClick:!1}),this.$container.data("cpScreen",this),this.on("beforeClose",(function(){n.hideSidebarIfOverlapping()})),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){n.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){n.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!n.showingSidebar||e.closest(n.$sidebarBtn).length||e.closest(n.$sidebar).length||n.hideSidebarIfOverlapping()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var n=this;return new Promise((function(t,i){n.trigger("beforeLoad"),n.showLoadSpinner(),n.cancelToken&&(n.ignoreFailedRequest=!0,n.cancelToken.cancel()),n.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",n.action,$.extend({params:Object.assign({},n.getParams(),n.settings.params),cancelToken:n.cancelToken.token,headers:{"X-Craft-Container-Id":n.$container.attr("id")}},n.settings.requestOptions)).then((function(r){n.update(r.data).then((function(){!1!==e&&(n.$container.data("delta-names",r.data.deltaNames),n.$container.data("initial-delta-values",r.data.initialDeltaValues),n.$container.data("initialSerializedValue",n.$container.serialize())),t()})).catch((function(t){i(t)}))})).catch((function(t){n.ignoreFailedRequest||(Craft.cp.displayError(),i(t)),n.ignoreFailedRequest=!1})).finally((function(){n.hideLoadSpinner(),n.cancelToken=null}))}))},getParams:function(){return{}},updateHeaderVisibility:function(){var t=this.settings.showHeader||this.hasTabs||this.hasCpLink||this.showingLoadSpinner;t||this.hasSidebar?this.$header.removeClass("hidden"):this.$header.addClass("hidden"),t?this.$header.addClass("so-visible"):this.$header.removeClass("so-visible")},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0,this.updateHeaderVisibility()},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1,this.updateHeaderVisibility()},update:function(t){var e=this;return new Promise((function(n){if(e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),e.updateTabs(t.tabs),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),t.editUrl?(e.$editLink.removeClass("hidden").attr("href",t.editUrl),e.hasCpLink=!0):(e.$editLink.addClass("hidden"),e.hasCpLink=!1),t.actionMenu){var r=Craft.namespaceId("action-menu-label",e.namespace),s=Craft.namespaceId("action-menu",e.namespace);$("<label/>",{id:r,class:"visually-hidden",text:Craft.t("app","Actions")}).insertBefore(e.$editLink),e.$actionBtn=$("<button/>",{class:"btn action-btn header-btn",type:"button",title:Craft.t("app","Actions"),"aria-controls":s,"aria-describedby":r,"data-disclosure-trigger":"true"}).insertBefore(e.$editLink),$(t.actionMenu).insertBefore(e.$editLink),e.$actionBtn.disclosureMenu()}else e.$actionBtn=null;t.sidebar?(e.$sidebarBtn.removeClass("hidden"),e.$sidebar.html(t.sidebar),e.$sidebar.find("a").each((function(){this.hostname.length&&void 0===$(this).attr("target")&&$(this).attr("target","_blank")})),e.hasSidebar=!0,e.$container.width()>700?e.showSidebar():e.hideSidebar()):(e.hideSidebar(),e.$sidebarBtn.addClass("hidden"),e.$sidebar.addClass("hidden").html(""),e.hasSidebar=!1),t.notice?e.$noticeContainer.html(t.notice):e.$noticeContainer.empty(),e.updateHeaderVisibility(),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame(a(i().mark((function r(){return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return Craft.initUiElements(e.$content),i.next=3,Craft.appendHeadHtml(t.headHtml);case 3:return i.next=5,Craft.appendBodyHtml(t.bodyHtml);case 5:Craft.cp.elementThumbLoader.load($(e.$content)),t.sidebar&&(Craft.initUiElements(e.$sidebar),Craft.cp.elementThumbLoader.load(e.$sidebar)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),n(),e.trigger("load");case 10:case"end":return i.stop()}}),r)}))))}))},updateTabs:function(t){var e=this;if(this.tabManager&&(this.tabManager.destroy(),this.tabManager=null,this.$tabContainer.html("")),this.hasTabs=!!t,this.hasTabs){var n=$(t);this.$tabContainer.replaceWith(n),this.$tabContainer=n,this.tabManager=new Craft.Tabs(this.$tabContainer),this.tabManager.on("deselectTab",(function(t){$(t.$tab.attr("href")).addClass("hidden")})),this.tabManager.on("selectTab",(function(t){$(t.$tab.attr("href")).removeClass("hidden"),Garnish.$win.trigger("resize"),e.$body.trigger("scroll")}))}},showSidebar:function(){var t=this;this.showingSidebar||(this.$container.addClass("showing-sidebar"),this.$body.scrollTop(0).addClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).removeClass("hidden"),this.$sidebar[0].offsetWidth,this.$sidebar.css(this._openedSidebarStyles()),Garnish.isMobileBrowser()||this.$sidebar.one("transitionend.so",(function(){Craft.setFocusWithin(t.$sidebar)})),Craft.trapFocusWithin(this.$sidebar),this.$sidebarBtn.addClass("active").attr({"aria-expanded":"true"}),Garnish.$win.trigger("resize"),this.$sidebar.trigger("scroll"),Garnish.uiLayerManager.addLayer({bubble:!0}),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(e){t.hideSidebarIfOverlapping()||e.bubbleShortcut()})),this.showingSidebar=!0)},hideSidebar:function(){var t=this;this.showingSidebar&&(this.$container.removeClass("showing-sidebar"),this.$body.removeClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).one("transitionend.so",(function(){t.$sidebar.addClass("hidden"),t.$sidebarBtn.focus()})),this.$sidebarBtn.removeClass("active").attr({"aria-expanded":"false"}),Garnish.uiLayerManager.removeLayer(),this.showingSidebar=!1)},hideSidebarIfOverlapping:function(){return!(!this.showingSidebar||"absolute"!==this.$sidebar.css("position")||(this.hideSidebar(),0))},_openedSidebarStyles:function(){return n({},Garnish.ltr?"right":"left","0")},_closedSidebarStyles:function(){return n({},Garnish.ltr?"right":"left","-350px")},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){var e=this;t.preventDefault(),setTimeout((function(){e.submit()}),1)},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),this.$container.data("delta-names"),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),e.modelClass&&e.modelId&&Craft.refreshComponentInstances(e.modelClass,e.modelId),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors),e.errorSummary&&this.showErrorSummary(e.errorSummary,Object.keys(e.errors||{}).length)},showErrorSummary:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(Craft.ui.clearErrorSummary(this.$body),null!==this.tabManager){var n=this.tabManager.$tabs,i=n.filter(".error"),r=this.$content;n.each((function(n,a){var s=$(a).data("id"),o=r.find("#"+s);if(o.length>0){var l=o.data("layout-tab"),c=$(t),h=c.find("ul.errors li").length,u="";c.find("ul.errors li").each((function(t,e){var n=$(e).find("a").data("layout-tab");void 0!==n&&n!==l&&($(e).remove(),h--)})),h>0?(u=Craft.t("app","Found {num, number} {num, plural, =1{error} other{errors}} in this tab.",{num:h}),i.length-1>0&&(u+='<span class="visually-hidden">'+Craft.t("app","{total, number} {total, plural, =1{error} other{errors}} found in {num, number} {num, plural, =1{tab} other{tabs}}.",{total:e,num:i.length})+"</span>")):u=Craft.t("app","Found errors in other tabs."),c.find("h2").html(u),c.prependTo(o),Craft.ui.setFocusOnErrorSummary(o)}}))}else $(t).prependTo(this.$content),Craft.ui.setFocusOnErrorSummary(this.$content)},showErrors:function(t){var n,i=this;this.clearErrors();var r=(null===(n=this.tabManager)||void 0===n?void 0:n.menu)||[],a='<span data-icon="alert"><span class="visually-hidden">'+Craft.t("app","This tab contains errors")+"</span>\n</span>";Object.entries(t).forEach((function(t){var n=function(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,2),s=n[0],o=n[1],l=i.$container.find('[data-error-key="'.concat(s,'"]'));if(l){Craft.ui.addErrorsToField(l,o),i.fieldsWithErrors.push(l);var c=Craft.ui.findTabAnchorForField(l,i.$container);if(c.length>0){0==i.tabManager.$menuBtn.hasClass("error")&&(i.tabManager.$menuBtn.addClass("error"),i.tabManager.$menuBtn.append('<span data-icon="alert"></span>'));for(var h=0;h<c.length;h++){var u=$(c[h]);if(0==u.hasClass("error")&&(u.addClass("error"),u.find(".tab-label").append(a),r.length)){var d=r.find("[data-id="+u.data("id")+"]");d.length>0&&0==d.hasClass("error")&&(d.addClass("error"),d.append(a))}}}}}))},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){var t=this,e=this.$container.data("initialSerializedValue");return void 0!==e&&e!==(this.$container.data("serializer")||function(){return t.$container.serialize()})()},closeMeMaybe:function(){this.isOpen&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.showingSidebar&&this.hideSidebar(),this.base(),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel())}},{defaults:{params:{},requestOptions:{},showHeader:null,closeOnSubmit:!0}})},9922:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){this.trigger=this.querySelector('button[type="button"]'),this.trigger?(this.target=document.getElementById(this.trigger.getAttribute("aria-controls")),this.target?(this.trigger.getAttribute("aria-expanded")||this.trigger.setAttribute("aria-expanded","false"),this.trigger.addEventListener("click",this.toggle.bind(this)),this.expanded="true"===this.trigger.getAttribute("aria-expanded"),this.expanded?this.open():this.close()):console.error("No target with id ".concat(this.trigger.getAttribute("aria-controls")," found for disclosure. "),this.trigger)):console.error("craft-disclosure elements must include a button",this)}},{key:"disconnectedCallback",value:function(){this.open(),this.trigger.removeEventListener("click",this.toggle.bind(this))}},{key:"toggle",value:function(){this.expanded?this.close():this.open()}},{key:"open",value:function(){this.trigger.setAttribute("aria-expanded","true"),this.expanded=!0,this.target.dataset.state="expanded",this.dispatchEvent(new CustomEvent("open"))}},{key:"close",value:function(){this.trigger.setAttribute("aria-expanded","false"),this.expanded=!1,this.target.dataset.state="collapsed",this.dispatchEvent(new CustomEvent("close"))}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-disclosure",o)},6959:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){var t=this;this.labelLink=this.querySelector(".label-link"),this.tooltip=null,this.labelLink?(this.$tabs=$("#tabs"),this.$tabs.length&&this.$tabs.data("tabs")&&this.$tabs.data("tabs").on("selectTab",(function(){t.update()})),this.update(),$((function(){t.update()}))):console.warn("No label link found in craft-element-label.")}},{key:"update",value:function(){this.desiredWidth=this.calculateWidth(this.innerText),this.hasOverflow=this.desiredWidth>this.scrollWidth,this.hasOverflow&&(this.tooltip=this.querySelector("craft-tooltip"),this.tooltip||this.createTooltip())}},{key:"createTooltip",value:function(){this.tooltip=document.createElement("craft-tooltip"),this.tooltip.setAttribute("aria-hidden","true"),this.tooltip.innerText=this.innerText;var t=this.querySelector(".context-label");t&&(this.tooltip.innerText=this.tooltip.innerText.replace(t.innerText," (".concat(t.innerText,")"))),this.labelLink.appendChild(this.tooltip)}},{key:"disconnectedCallback",value:function(){var t,e;null===(t=this.tooltip)||void 0===t||t.remove(),null===(e=this.$tabs.data("tabs"))||void 0===e||e.off("selectTab")}},{key:"calculateWidth",value:function(t){var e=document.createElement("span");Object.assign(e.style,{position:"absolute",visibility:"hidden",whiteSpace:"nowrap",fontFamily:"inherit"}),e.innerHTML=t,this.appendChild(e);var n=e.clientWidth;return this.removeChild(e),n}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-element-label",o)},147:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){this.trigger=this.querySelector("#sidebar-trigger"),this.trigger&&(this.trigger.addEventListener("open",this.expand.bind(this)),this.trigger.addEventListener("close",this.collapse.bind(this))),this.items=this.querySelectorAll(".sidebar-action")}},{key:"disconnectedCallback",value:function(){this.trigger&&(this.trigger.removeEventListener("open",this.expand.bind(this)),this.trigger.removeEventListener("close",this.collapse.bind(this))),this.expand()}},{key:"createTooltips",value:function(){this.items&&this.items.forEach((function(t){var e,n=document.createElement("craft-tooltip");n.setAttribute("placement","right"),n.innerText=null===(e=t.querySelector(".label"))||void 0===e?void 0:e.innerText,t.append(n)}))}},{key:"destroyTooltips",value:function(){this.items&&this.items.forEach((function(t){var e=t.querySelector("craft-tooltip");null==e||e.remove()}))}},{key:"expand",value:function(){document.body.setAttribute("data-sidebar","expanded"),Craft.setCookie("sidebar","expanded"),this.destroyTooltips()}},{key:"collapse",value:function(){document.body.setAttribute("data-sidebar","collapsed"),Craft.setCookie("sidebar","collapsed"),this.createTooltips()}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-global-sidebar",o)},691:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function a(){"use strict";a=function(){return n};var e,n={},i=Object.prototype,r=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&r.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(a,s,o,l){var c=f(e[a],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&r.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var a;s(this,"_invoke",{value:function(t,e){function r(){return new n((function(n,r){i(t,e,n,r)}))}return a=a?a.then(r,r):r()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var a=-1,s=function t(){for(;++a<n.length;)if(r.call(n,a))return t.value=n[a],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function s(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){s(a,i,r,o,l,"next",t)}function l(t){s(a,i,r,o,l,"throw",t)}o(void 0)}))}}var l,c,h,u,d;Craft.CustomizeSourcesModal=Garnish.Modal.extend({elementIndex:null,$elementIndexSourcesContainer:null,$sidebar:null,$sidebarToggleBtn:null,$sourcesContainer:null,$sourcesHeader:null,$sourcesHeading:null,$sourceSettingsContainer:null,$sourceSettingsHeader:null,$addSourceMenu:null,addSourceMenu:null,$footer:null,$footerBtnContainer:null,$saveBtn:null,$cancelBtn:null,$loadingSpinner:null,sourceSort:null,sources:null,selectedSource:null,elementTypeName:null,baseSortOptions:null,availableTableAttributes:null,customFieldAttributes:null,conditionBuilderHtml:null,conditionBuilderJs:null,userGroups:null,init:function(t,e){var n=this;this.base(),this.setSettings(e,{resizable:!0}),this.elementIndex=t,this.$elementIndexSourcesContainer=this.elementIndex.$sidebar.children("nav").children("ul");var i=$('<form class="modal customize-sources-modal"/>').appendTo(Garnish.$bod);this.$sidebar=$('<div class="cs-sidebar block-types"/>').appendTo(i).attr({role:"navigation","aria-label":Craft.t("app","Source")}),this.$sourcesContainer=$('<div class="sources">').appendTo(this.$sidebar),this.$sourceSettingsContainer=$('<div class="source-settings">').appendTo(i),this.$footer=$('<div class="footer"/>').appendTo(i),this.$footerBtnContainer=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$footerBtnContainer),this.$saveBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$footerBtnContainer),this.$loadingSpinner=$('<div class="spinner"/>').appendTo(this.$sourceSettingsContainer),this.setContainer(i),this.show(),Craft.sendActionRequest("POST","element-index-settings/get-customize-sources-modal-data",{data:{elementType:this.elementIndex.elementType}}).then((function(t){n.$saveBtn.removeClass("disabled"),n.buildModal(t.data)})).finally((function(){n.$loadingSpinner.remove(),Garnish.setFocusWithin(n.$sidebar)})),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:(l=o(a().mark((function t(e){var n,i,r,s,o,l,c,h=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.baseSortOptions=e.baseSortOptions,this.defaultSortOptions=e.defaultSortOptions,this.availableTableAttributes=e.availableTableAttributes,this.customFieldAttributes=e.customFieldAttributes,this.elementTypeName=e.elementTypeName,this.conditionBuilderHtml=e.conditionBuilderHtml,this.conditionBuilderJs=e.conditionBuilderJs,this.sites=e.sites,this.userGroups=e.userGroups,!e.headHtml){t.next=12;break}return t.next=12,Craft.appendHeadHtml(e.headHtml);case 12:if(!e.bodyHtml){t.next=15;break}return t.next=15,Craft.appendBodyHtml(e.bodyHtml);case 15:for(this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y"}),this.sources=[],n=0;n<e.sources.length;n++)this.sources.push(this.addSource(e.sources[n]));this.selectedSource||void 0===this.sources[0]||this.sources[0].select(),i=$('<div class="buttons left" data-wrapper/>').appendTo(this.$footer),r=$("<button/>",{type:"button",class:"btn menubtn add icon","aria-label":Craft.t("app","Add…"),"aria-controls":"add-source-menu",title:Craft.t("app","Add…"),"data-disclosure-trigger":""}).appendTo(i),this.$addSourceMenu=$("<div/>",{id:"add-source-menu",class:"menu menu--disclosure"}).appendTo(i),s=function(t){var e=h.addSource(t,!0);Garnish.scrollContainerToElement(h.$sidebar,e.$item),e.select(),h.addSourceMenu.hide()},o=$("<button/>",{type:"button",class:"menu-item",text:Craft.t("app","New heading")}).on("click",(function(){s({type:"heading"}),h.focusLabelInput()})),l=$("<button/>",{type:"button",class:"menu-item",text:Craft.t("app","New custom source"),"data-type":"custom"}).on("click",(function(){var t=h.baseSortOptions.slice(0);t.push(h.defaultSortOptions),s({type:"custom",key:"custom:".concat(Craft.uuid()),sortOptions:t,defaultSort:[t[0].attr,t[1].defaultDir],tableAttributes:[],availableTableAttributes:[]}),h.focusLabelInput()})),c=$("<ul/>").append($("<li/>").append(o)).appendTo(this.$addSourceMenu),e.conditionBuilderHtml&&$("<li/>").append(l).appendTo(c),Craft.useMobileStyles()&&this.buildSidebarToggleView(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addSourceMenu=new Garnish.DisclosureMenu(r);case 30:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)}),focusLabelInput:function(){this.selectedSource.$labelInput.trigger("focus")},getSourceName:function(){return this.selectedSource?this.selectedSource.sourceData.label:this.sources[0].sourceData.label},updateSidebarView:function(){Craft.useMobileStyles()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView()},resetView:function(){this.$sourceSettingsHeader&&this.$sourceSettingsHeader.remove(),this.$sourcesHeader&&this.$sourcesHeader.remove(),this.$sidebarToggleBtn=null,this.$container.removeClass("sidebar-hidden")},updateHeading:function(){this.$sourcesHeading&&this.$sourcesHeading.text(this.getSourceName())},buildSidebarToggleView:function(){var t=this;this.$sourcesHeader=$('<div class="sources-header"/>').addClass("sidebar-header").prependTo(this.$sourcesContainer),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sourcesHeader),this.$sourcesHeading=$('<h1 class="main-heading"/>').text(this.getSourceName()),this.$sourceSettingsHeader=$('<div class="source-settings-header"/>').addClass("main-header").append(this.$sourcesHeading).prependTo(this.$sourceSettingsContainer),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$sourceSettingsHeader),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar(),t.$sidebarToggleBtn.trigger("focus")}))},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$container.removeClass("sidebar-hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar(),Garnish.focusIsInside(t.$sidebar)&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$container.addClass("sidebar-hidden"),this.$sidebarToggleBtn&&this.$sidebarToggleBtn.attr("aria-expanded","false"),Garnish.uiLayerManager.currentLayer.$container.hasClass("cs-sidebar")&&Garnish.uiLayerManager.removeLayer()},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},addSource:function(t,e){var n,i=$('<div class="customize-sources-item"/>').appendTo(this.$sourcesContainer),r=$('<div class="label customize-sources-item__btn"/>').attr({tabindex:"0",role:"button"}).appendTo(i),a=$('<input type="hidden"/>').appendTo(i);return $('<a class="move icon customize-sources-item__move" title="'.concat(Craft.t("app","Reorder"),'" role="button"></a>')).appendTo(i),"heading"===t.type?(i.addClass("heading"),a.attr("name","sourceOrder[][heading]"),(n=new Craft.CustomizeSourcesModal.Heading(this,i,r,a,t,e)).updateItemLabel(t.heading)):(a.attr("name","sourceOrder[][key]").val(t.key),(n="native"===t.type?new Craft.CustomizeSourcesModal.Source(this,i,r,a,t,e):new Craft.CustomizeSourcesModal.CustomSource(this,i,r,a,t,e)).updateItemLabel(t.label),t.key===this.elementIndex.rootSourceKey&&n.select()),this.sourceSort.addItems(i),n},save:function(t){var e=this;t&&t.preventDefault(),this.$saveBtn.hasClass("disabled")||this.$saveBtn.hasClass("loading")||(this.$saveBtn.addClass("loading"),Craft.sendActionRequest("POST","element-index-settings/save-customize-sources-modal-settings",{data:this.$container.serialize()+"&elementType=".concat(this.elementIndex.elementType)}).then((function(t){var n=t.data,i=null;e.selectedSource&&e.selectedSource.sourceData.key&&!n.disabledSourceKeys.includes(e.selectedSource.sourceData.key)?i=e.selectedSource.sourceData.key:e.elementIndex.sourceKey||(i=e.elementIndex.$visibleSources.first().data("key")),i&&e.elementIndex.selectSourceByKey(i),window.location.reload()})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){e.$saveBtn.removeClass("loading")})))},appendIndexSourceItem:function(t,e){if(e){var n=t.hasClass("heading");if(e.hasClass("heading")&&!n)t.appendTo(e.children("ul"));else{if(n){var i=e.parentsUntil(this.$elementIndexSourcesContainer,"li").last();i.length&&(e=i)}t.insertAfter(e)}}else t.prependTo(this.$elementIndexSourcesContainer)},destroy:function(){for(var t=0;t<this.sources.length;t++)this.sources[t].destroy();this.addSourceMenu&&(this.addSourceMenu.destroy(),this.$addSourceMenu.remove()),delete this.sources,this.base()}}),Craft.CustomizeSourcesModal.BaseSource=Garnish.Base.extend({modal:null,$item:null,$itemLabel:null,$itemInput:null,$settingsContainer:null,sourceData:null,isNew:null,init:function(t,e,n,i,r,a){this.modal=t,this.$item=e,this.$itemLabel=n,this.$itemInput=i,this.sourceData=r,this.isNew=a,this.$item.data("source",this),this.addListener(this.$itemLabel,"activate",this.select)},isHeading:function(){return!1},isNative:function(){return!1},isSelected:function(){return this.modal.selectedSource===this},select:function(){this.isSelected()||(this.modal.selectedSource&&this.modal.selectedSource.deselect(),this.$item.addClass("sel"),this.$itemLabel.attr({"aria-current":"true"}),this.modal.selectedSource=this,this.modal.updateHeading(),this.$settingsContainer?this.$settingsContainer.removeClass("hidden"):(this.$settingsContainer=$("<div/>").appendTo(this.modal.$sourceSettingsContainer),this.createSettings(this.$settingsContainer)),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:(c=o(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(){return c.apply(this,arguments)}),getIndexSourceItem:function(){},deselect:function(){this.$item.removeClass("sel"),this.$itemLabel.attr({"aria-current":"false"}),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(t){t?this.$itemLabel.text(t):this.$itemLabel.html("&nbsp;")},destroy:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice($.inArray(this,this.modal.sources),1),this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select(),Garnish.setFocusWithin(this.modal.$sourceSettingsContainer)),this.$item.data("source",null),this.$item.remove(),this.$settingsContainer&&this.$settingsContainer.remove(),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({$sortAttributeSelect:null,$sortDirectionPicker:null,$sortDirectionInput:null,sortDirectionListbox:null,isNative:function(){return!0},createSettings:(h=o(a().mark((function t(e){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Craft.ui.createLightswitchField({label:Craft.t("app","Enabled"),name:"sources[".concat(this.sourceData.key,"][enabled]"),on:!this.sourceData.disabled}).appendTo(e),this.createSortField(e),this.createTableAttributesField(e);case 3:case"end":return t.stop()}}),t,this)}))),function(t){return h.apply(this,arguments)}),createSortField:function(t){var e=this,n=$('<div class="flex"/>'),i=this.sourceData.sortOptions.sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1})).reduce((function(t,e){return t["structure"===e.attr?0:e.attr.startsWith("field:")?2:1].push(e),t}),[[],[],[]]);i[2].length&&i[2].unshift({optgroup:Craft.t("app","Fields")});var r=Craft.ui.createSelect({name:"sources[".concat(this.sourceData.key,"][defaultSort][0]"),options:i.flat().map((function(t){return t.optgroup?t:{label:Craft.escapeHtml(t.label),value:t.attr}})),value:this.sourceData.defaultSort[0]}).addClass("fullwidth").appendTo($("<div/>").appendTo(n));this.$sortAttributeSelect=r.children("select").attr("aria-label",Craft.t("app","Sort attribute")),this.$sortDirectionPicker=$("<section/>",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(n),this.$sortDirectionInput=$("<input/>",{type:"hidden",name:"sources[".concat(this.sourceData.key,"][defaultSort][1]")}).appendTo(n),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(t){e.$sortDirectionInput.val(t.data("dir"))}}),this.$sortAttributeSelect.on("change",(function(){e.handleSortAttributeChange()})),this.handleSortAttributeChange(!0),Craft.ui.createField(n,{label:Craft.t("app","Default Sort"),fieldset:!0}).appendTo(t).addClass("sort-field")},handleSortAttributeChange:function(t){var e=this.$sortAttributeSelect.val();if("structure"===e)this.sortDirectionListbox.select(0),this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled");else{this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled");var n=t?this.sourceData.defaultSort[1]:this.sourceData.sortOptions.find((function(t){return t.attr===e})).defaultDir;this.sortDirectionListbox.select("asc"===n?0:1)}},createTableAttributesField:function(t){var e=this.availableTableAttributes().sort((function(t,e){return t[1]===e[1]?0:t[1]<e[1]?-1:1}));if(this.sourceData.tableAttributes.length||e.length){var i="sources[".concat(this.sourceData.key,"][tableAttributes][]");$("<input/>",{type:"hidden",name:i,value:""}).appendTo(t),Craft.ui.createCheckboxSelectField({label:Craft.t("app","Default Table Columns"),instructions:Craft.t("app","Choose which table columns should be visible for this source by default."),name:i,options:e.map((function(t){var e=n(t,2),i=e[0];return{label:e[1],value:i}})),values:this.sourceData.tableAttributes.map((function(t){return n(t,1)[0]})),sortable:!0}).appendTo(t)}},availableTableAttributes:function(){var t=this.modal.availableTableAttributes.slice(0);return t.push.apply(t,e(this.sourceData.availableTableAttributes)),t},getIndexSourceItem:function(){var t=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(t)return t.closest("li")}}),Craft.CustomizeSourcesModal.CustomSource=Craft.CustomizeSourcesModal.Source.extend({$labelInput:null,createSettings:(u=o(a().mark((function t(e){var n,i,r,s,o,l=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=Craft.ui.createTextField({label:Craft.t("app","Label"),name:"sources[".concat(this.sourceData.key,"][label]"),value:this.sourceData.label}).appendTo(e),this.$labelInput=n.find(".text"),i="condition".concat(Math.floor(1e6*Math.random())),r=function(t){return t.replace(/__ID__/g,i).replace(/__SOURCE_KEY__(?=-)/g,Craft.formatInputId(l.sourceData.key)).replace(/__SOURCE_KEY__/g,l.sourceData.key)},s=this.sourceData.conditionBuilderHtml||r(this.modal.conditionBuilderHtml),o=this.sourceData.conditionBuilderJs||r(this.modal.conditionBuilderJs),Craft.ui.createField($("<div/>").append(s),{id:"criteria",label:Craft.t("app","{type} Criteria",{type:this.modal.elementTypeName})}).appendTo(e),!o){t.next=10;break}return t.next=10,Craft.appendBodyHtml(o);case 10:this.createSortField(e),this.createTableAttributesField(e),Craft.sites.length>1&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","Sites"),instructions:Craft.t("app","Choose which sites this source should be visible for."),name:"sources[".concat(this.sourceData.key,"][sites]"),options:Craft.sites.map((function(t){return{label:t.name,value:t.uid}})),values:this.sourceData.sites||"*",showAllOption:!0}).appendTo(e),this.modal.userGroups.length&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","User Groups"),instructions:Craft.t("app","Choose which user groups should have access to this source."),name:"sources[".concat(this.sourceData.key,"][userGroups]"),options:this.modal.userGroups,values:this.sourceData.userGroups||"*",showAllOption:!0}).appendTo(e),e.append("<hr/>"),this.$deleteBtn=$('<a class="error delete pointer"/>').attr({role:"button",tabindex:"0"}).text(Craft.t("app","Delete custom source")).appendTo(e),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy");case 18:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)}),availableTableAttributes:function(){var t=this.base();return this.isNew&&t.push.apply(t,e(this.modal.customFieldAttributes)),t},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},getIndexSourceItem:function(){var t,e=this.base();if(e?t=e.find(".label"):(t=$("<span/>",{class:"label"}),e=$("<li/>").append($("<a/>",{"data-key":this.sourceData.key}).append(t))),this.$labelInput){var n=this.$labelInput.val().trim();""===n&&(n=Craft.t("app","(blank)")),t.text(n)}return e}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},createSettings:(d=o(a().mark((function t(e){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=Craft.ui.createTextField({label:Craft.t("app","Heading"),instructions:Craft.t("app","This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading||""}).appendTo(e),this.$labelInput=n.find(".text"),e.append("<hr/>"),this.$deleteBtn=$('<a class="error delete"/>').text(Craft.t("app","Delete heading")).attr({role:"button",tabindex:"0"}).appendTo(e),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy");case 6:case"end":return t.stop()}}),t,this)}))),function(t){return d.apply(this,arguments)}),handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},updateItemLabel:function(t){this.$itemLabel.html((t?Craft.escapeHtml(t):"<em>".concat(Craft.t("app","(blank)"),"</em>"))+"&nbsp;"),this.$itemInput.val(t)},getIndexSourceItem:function(){var t=(this.$labelInput?this.$labelInput.val():null)||this.sourceData.heading||"";return $('<li class="heading"/>').append($("<span/>").text(t)).append("<ul/>")}})},1519:function(){Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(t,e){this.$table=$(t);var n=this.$table.children("tbody").children(":not(.filler)");(e=$.extend({},Craft.DataTableSorter.defaults,e)).container=this.$table.children("tbody"),e.helper=this.getHelper.bind(this),e.caboose="<tr/>",e.axis=Garnish.Y_AXIS,e.magnetStrength=4,e.helperLagBase=1.5,this.base(n,e)},getHelper:function(t){var e=$('<div class="'+this.settings.helperClass+'"/>').appendTo(Garnish.$bod),n=$("<table/>").appendTo(e),i=$("<tbody/>").appendTo(n);t.appendTo(i),n.width(this.$table.width()),n.prop("className",this.$table.prop("className"));for(var r=this.$table.find("tr:first").children(),a=t.children(),s=0;s<a.length;s++)$(a[s]).width($(r[s]).width());return e}},{defaults:{handle:".move",helperClass:"datatablesorthelper"}})},501:function(){Craft.DeleteUserModal=Garnish.Modal.extend({id:null,userId:null,$deleteActionRadios:null,$deleteSubmitBtn:null,userSelect:null,_deleting:!1,init:function(t,e){var n=this;this.id=Math.floor(1e9*Math.random()),this.userId=t,e=$.extend(Craft.DeleteUserModal.defaults,e);var i,r=$('<form class="modal fitted deleteusermodal" method="post" accept-charset="UTF-8">'+Craft.getCsrfInput()+'<input type="hidden" name="action" value="users/delete-user"/>'+(Array.isArray(this.userId)?"":'<input type="hidden" name="userId" value="'+this.userId+'"/>')+(e.redirect?'<input type="hidden" name="redirect" value="'+e.redirect+'"/>':"")+"</form>").appendTo(Garnish.$bod),a=$('<div class="body"><div class="content-summary"><p>'+Craft.t("app","What do you want to do with their content?")+'</p><ul class="bullets"></ul></div><div class="options"><label><input type="radio" name="contentAction" value="transfer"/> '+Craft.t("app","Transfer it to:")+'</label><div id="transferselect'+this.id+'" class="elementselect"><ul class="elements"></ul><button type="button" class="btn add icon dashed">'+Craft.t("app","Choose a user")+'</button></div></div><div><label class="error"><input type="radio" name="contentAction" value="delete"/> '+Craft.t("app","Delete their content")+"</label></div></div>").appendTo(r),s=$('<div class="buttons right"/>').appendTo(a),o=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(s),l=a.find(".content-summary");if(e.contentSummary.length)for(var c=0;c<e.contentSummary.length;c++)l.find("ul").append($("<li/>",{text:e.contentSummary[c]}));else l.find("ul").remove();if(this.$deleteActionRadios=a.find("input[type=radio]"),this.$deleteSubmitBtn=Craft.ui.createSubmitButton({class:"disabled",label:this._submitBtnLabel(!1),spinner:!0}).appendTo(s),Array.isArray(this.userId)){i=["and"];for(var h=0;h<this.userId.length;h++)i.push("not "+this.userId[h])}else i="not "+this.userId;this.userSelect=new Craft.BaseElementSelectInput({id:"transferselect"+this.id,name:"transferContentTo",elementType:"craft\\elements\\User",criteria:{id:i},limit:1,modalSettings:{closeOtherModals:!1},onSelectElements:function(){n.updateSizeAndPosition(),n.$deleteActionRadios.first().prop("checked")?n.validateDeleteInputs():n.$deleteActionRadios.first().trigger("click")},onRemoveElements:this.validateDeleteInputs.bind(this),selectable:!1,editable:!1}),this.addListener(o,"click","hide"),this.addListener(this.$deleteActionRadios,"change","validateDeleteInputs"),this.addListener(r,"submit","handleSubmit"),this.base(r,e)},_submitBtnLabel:function(t){var e=t?"Delete {num, plural, =1{user} other{users}} and content":"Delete {num, plural, =1{user} other{users}}";return Craft.t("app",e,{num:Array.isArray(this.userId)?this.userId.length:1})},validateDeleteInputs:function(){var t=!1;return this.$deleteActionRadios.eq(1).prop("checked")?(t=!0,this.$deleteSubmitBtn.find(".label").text(this._submitBtnLabel(!0))):(this.$deleteSubmitBtn.find(".label").text(this._submitBtnLabel(!1)),this.$deleteActionRadios.eq(0).prop("checked")&&(t=!!this.userSelect.totalSelected)),this.updateSizeAndPosition(),t?this.$deleteSubmitBtn.removeClass("disabled"):this.$deleteSubmitBtn.addClass("disabled"),t},handleSubmit:function(t){if(!this._deleting&&this.validateDeleteInputs()){this.$deleteSubmitBtn.addClass("loading"),this.disable(),this.userSelect.disable(),this._deleting=!0;try{!1===this.settings.onSubmit()&&t.preventDefault()}catch(e){throw t.preventDefault(),this.$deleteSubmitBtn.removeClass("loading"),e}}else t.preventDefault()},onFadeIn:function(){Garnish.isMobileBrowser(!0)||this.$deleteActionRadios.first().trigger("focus"),this.base()}},{defaults:{contentSummary:[],onSubmit:$.noop,redirect:null}})},2318:function(){Craft.DynamicGenerator=Craft.BaseInputGenerator.extend({callback:$.noop,init:function(t,e,n){this.callback=n,this.base(t,e)},generateTargetValue:function(t){return this.callback(t)}})},4755:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}Craft.EditableTable=Garnish.Base.extend({initialized:!1,id:null,baseName:null,columns:null,sorter:null,biggestId:-1,$table:null,$tbody:null,$addRowBtn:null,$tableParent:null,$statusMessage:null,rowCount:0,hasMaxRows:!1,hasMinRows:!1,radioCheckboxes:null,init:function(t,e,n,i){var r=this;this.id=t,this.baseName=e,this.columns=n,this.setSettings(i,Craft.EditableTable.defaults),this.radioCheckboxes={},this.$table=$("#"+t),this.$tbody=this.$table.children("tbody"),this.$tableParent=this.$table.parent(),this.$statusMessage=this.$tableParent.find("[data-status-message]");var a=this.$tbody.children();this.rowCount=a.length,this.$table.data("editable-table")&&(console.warn("Double-instantiating an editable table on an element"),this.$table.data("editable-table").destroy()),this.$table.data("editable-table",this),this.sorter=new Craft.DataTableSorter(this.$table,{helperClass:"editabletablesorthelper",copyDraggeeInputValuesToHelper:!0,onSortChange:function(){r.updateAllRows()}});for(var s=0;s<a.length;s++){var o=a.eq(s),l=parseInt(o.attr("data-id").substring(this.settings.rowIdPrefix.length));l>this.biggestId&&(this.biggestId=l)}if(this.isVisible()?this.initialize():window.setTimeout(this.initializeIfVisible.bind(this),500),this.settings.minRows&&this.rowCount<this.settings.minRows)for(var c=this.rowCount;c<this.settings.minRows;c++)this.addRow()},isVisible:function(){return this.$table.parent().height()>0},initialize:function(){var t=this;if(this.initialized)return!1;this.initialized=!0,this.removeListener(Garnish.$win,"resize");var e=this.$table.parent(".input");if(e.length&&this.$table.width()>e.width()&&e.css("overflow-x","auto"),this.$addRowBtn=this.$table.next(".add"),this.updateAddRowButton(),this.addListener(this.$addRowBtn,"activate","addRow"),this.settings.lazyInitRows)this.addListener(this.$tbody,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(e){var n=$(e.target),i=n.closest("tr");if(i.length&&!i.data("editable-table-row")){var r=n.hasClass("editable-table-preview")?n.next():null;t.createRowObj(i),setTimeout((function(){r&&!r.is(":focus")&&r.trigger("focus")}),100)}}));else for(var n=this.$tbody.children(),i=0;i<n.length;i++)this.createRowObj(n.eq(i));return!0},initializeIfVisible:function(){this.removeListener(Garnish.$win,"resize"),this.isVisible()?this.initialize():this.addListener(Garnish.$win,"resize","initializeIfVisible")},updateAddRowButton:function(){this.canAddRow()?(this.$addRowBtn.css("opacity","1"),this.$addRowBtn.css("pointer-events","auto"),this.$addRowBtn.attr("aria-disabled","false")):(this.$addRowBtn.css("opacity","0.2"),this.$addRowBtn.css("pointer-events","none"),this.$addRowBtn.attr("aria-disabled","true"))},updateAllRows:function(){if(!this.settings.staticRows)for(var t=this.$table.find("> tbody > tr"),e=0;e<t.length;e++)this.updateRow(t.eq(e))},updateRow:function(t){if(!this.settings.staticRows){var e=t.find("button.delete");e.length&&(e.attr("aria-label",Craft.t("app","Delete row {index}",{index:t.index()+1})),this.canDeleteRow()?e.removeAttr("disabled").removeClass("disabled"):e.attr("disabled","disabled").addClass("disabled"))}},updateDeleteRowButton:function(t){this.updateRow(this.$table.find('tr[data-id="'.concat(t,'"]')))},updateStatusMessage:function(){var t,e=this;this.$statusMessage.empty(),t=this.canAddRow()?Craft.t("app","Row could not be deleted. Minimum number of rows reached."):Craft.t("app","Row could not be added. Maximum number of rows reached."),setTimeout((function(){e.$statusMessage.text(t)}),250)},canDeleteRow:function(){return!!this.settings.allowDelete&&this.rowCount>this.settings.minRows},deleteRow:function(t){this.canDeleteRow()?(this.sorter.removeItems(t.$tr),t.$tr.remove(),this.rowCount--,this.updateAllRows(),this.updateAddRowButton(),0===this.rowCount?(this.$table.addClass("hidden"),this.$addRowBtn.trigger("focus")):this.$tbody.find(":focusable").last().trigger("focus"),this.settings.onDeleteRow(t.$tr),t.destroy()):this.updateStatusMessage()},canAddRow:function(){return!!this.settings.allowAdd&&(!this.settings.maxRows||this.rowCount<this.settings.maxRows)},addRow:function(t,e){if(this.canAddRow()){var n=this.settings.rowIdPrefix+(this.biggestId+1),i=this.createRow(n,this.columns,this.baseName,$.extend({},this.settings.defaultValues));e?i.prependTo(this.$tbody):i.appendTo(this.$tbody);var r=this.createRowObj(i);return this.sorter.addItems(i),!1!==t&&i.find("input:visible,textarea:visible,select:visible").first().trigger("focus"),this.rowCount++,this.updateAllRows(),this.updateAddRowButton(),this.$table.removeClass("hidden"),this.settings.onAddRow(i),r}this.updateStatusMessage()},createRow:function(t,e,n,i){return Craft.EditableTable.createRow(t,e,n,i,this.settings.allowReorder,this.settings.allowDelete)},getRowObj:function(t){return t.data("editable-table-row")||this.createRowObj(t)},createRowObj:function(t){return new Craft.EditableTable.Row(this,t)},focusOnPrevRow:function(t,e,n){var i,r=t.prev("tr");if((i=r.length?this.getRowObj(r):this.addRow(!1,!0))&&i.$tds[e])if($(i.$tds[e]).hasClass("disabled"))r&&this.focusOnPrevRow(r,e,n);else{var a=$("textarea,input.text",i.$tds[e]);a.length&&($(n).trigger("blur"),a.trigger("focus"))}},focusOnNextRow:function(t,e,n){var i,r=t.next("tr");if((i=r.length?this.getRowObj(r):this.addRow(!1))&&i.$tds[e])if($(i.$tds[e]).hasClass("disabled"))r&&this.focusOnNextRow(r,e,n);else{var a=$("textarea,input.text",i.$tds[e]);a.length&&($(n).trigger("blur"),a.trigger("focus"))}},importData:function(t,e,n){for(var i=t.split(/\r?\n|\r/),r=0;r<i.length;r++){for(var a=i[r].split("\t"),s=0;s<a.length;s++){var o=a[s];e.$tds.eq(n+s).find("textarea,input[type!=hidden]").val(o).trigger("input")}var l=e.$tr.next("tr");e=l.length?this.getRowObj(l):this.addRow(!1)}},destroy:function(){this.$table.removeData("editable-table"),this.base()}},{textualColTypes:["autosuggest","color","date","email","multiline","number","singleline","template","time","url"],defaults:{rowIdPrefix:"",defaultValues:{},allowAdd:!1,allowReorder:!1,allowDelete:!1,minRows:null,maxRows:null,lazyInitRows:!0,onAddRow:$.noop,onDeleteRow:$.noop},createRow:function(e,n,i,r,a,s){var o=$("<tr/>",{"data-id":e});for(var l in n)if(n.hasOwnProperty(l)){var c,h=n[l],u=void 0!==r[l]?r[l]:"";if("heading"===h.type)c=$("<th/>",{scope:"row",class:h.class,html:u});else{var d=i+"["+e+"]["+l+"]";switch(c=$("<td/>",{class:"".concat(h.class," ").concat(h.type,"-cell"),width:h.width}),Craft.inArray(h.type,Craft.EditableTable.textualColTypes)&&c.addClass("textual"),h.code&&c.addClass("code"),h.type){case"checkbox":$('<div class="checkbox-wrapper"/>').append(Craft.ui.createCheckbox({name:d,value:h.value||"1",checked:!!u})).appendTo(c);break;case"color":Craft.ui.createColorInput({name:d,value:"object"!==t(u)?u:null,small:!0}).appendTo(c);break;case"date":Craft.ui.createDateInput({name:d,value:u}).appendTo(c);break;case"lightswitch":Craft.ui.createLightswitch({name:d,value:h.value||"1",on:!!u,small:!0}).appendTo(c);break;case"select":Craft.ui.createSelect({name:d,options:h.options,value:u||function(){for(var t in h.options)if(h.options.hasOwnProperty(t)&&h.options[t].default)return void 0!==h.options[t].value?h.options[t].value:t;return null}(),class:"small"}).appendTo(c);break;case"time":Craft.ui.createTimeInput({name:d,value:u}).appendTo(c);break;case"email":case"url":Craft.ui.createTextInput({name:d,value:"object"!==t(u)?u:null,type:h.type,placeholder:h.placeholder||null}).appendTo(c);break;default:$("<textarea/>",{name:d,rows:h.rows||1,val:"object"!==t(u)?u:null,placeholder:h.placeholder}).appendTo(c)}}c.appendTo(o)}return a&&$("<td/>",{class:"thin action"}).append($("<a/>",{class:"move icon",title:Craft.t("app","Reorder"),role:"button",type:"button"})).appendTo(o),s&&$("<td/>",{class:"thin action"}).append($("<button/>",{class:"delete icon",title:Craft.t("app","Delete"),type:"button"})).appendTo(o),o}}),Craft.EditableTable.Row=Garnish.Base.extend({table:null,id:null,niceTexts:null,$tr:null,$tds:null,tds:null,$textareas:null,$deleteBtn:null,init:function(t,e){this.table=t,this.$tr=$(e),this.$tds=this.$tr.children(),this.tds=[],this.id=this.$tr.attr("data-id"),this.$tr.data("editable-table-row",this);var n=parseInt(this.id.substring(this.table.settings.rowIdPrefix.length));n>this.table.biggestId&&(this.table.biggestId=n),this.$textareas=$(),this.niceTexts=[];var i,r,a,s,o={},l=0;for(i in this.table.columns)if(this.table.columns.hasOwnProperty(i)){if(r=this.table.columns[i],a=this.tds[i]=this.$tds[l],Craft.inArray(r.type,Craft.EditableTable.textualColTypes)){$(".editable-table-preview",a).remove();var c=$("textarea",a);this.$textareas=this.$textareas.add(c),this.addListener(c,"focus","onTextareaFocus"),this.addListener(c,"mousedown","ignoreNextTextareaFocus"),this.niceTexts.push(new Garnish.NiceText(c,{onHeightChange:this.onTextareaHeightChange.bind(this)})),this.addListener(c,"keypress",{tdIndex:l,type:r.type},"handleKeypress"),this.addListener(c,"input",{type:r.type},"validateValue"),c.trigger("input"),"multiline"!==r.type&&this.addListener(c,"paste",{tdIndex:l,type:r.type},"handlePaste"),o[i]=c}else"checkbox"===r.type&&(s=$('input[type="checkbox"]',a),r.radioMode&&(void 0===this.table.radioCheckboxes[i]&&(this.table.radioCheckboxes[i]=[]),this.table.radioCheckboxes[i].push(s[0]),this.addListener(s,"change",{colId:i},"onRadioCheckboxChange")),r.toggle&&this.addListener(s,"change",{colId:i},(function(t){this.applyToggleCheckbox(t.data.colId)})));$(a).hasClass("disabled")||this.addListener(a,"click",{td:a},(function(t){t.target===t.data.td&&$(t.data.td).find("textarea,input,select,.lightswitch").focus()})),l++}for(i in this.onTextareaHeightChange(),this.table.columns)this.table.columns.hasOwnProperty(i)&&"checkbox"===(r=this.table.columns[i]).type&&r.toggle&&this.applyToggleCheckbox(i);for(i in this.table.columns)this.table.columns.hasOwnProperty(i)&&(!(r=this.table.columns[i]).autopopulate||void 0===o[r.autopopulate]||o[i].val()||o[r.autopopulate].val()||new Craft.HandleGenerator(o[i],o[r.autopopulate],{allowNonAlphaStart:!0}));var h=this.$tr.children().last().find(".delete");this.addListener(h,"click","deleteRow");var u=this.$tr.find("input,textarea,select,.lightswitch");this.addListener(u,"focus",(function(t){$(t.currentTarget).closest("td:not(.disabled)").addClass("focus")})),this.addListener(u,"blur",(function(t){$(t.currentTarget).closest("td").removeClass("focus")}))},onTextareaFocus:function(t){this.onTextareaHeightChange();var e=$(t.currentTarget);e.data("ignoreNextFocus")?e.data("ignoreNextFocus",!1):window.setTimeout((function(){Craft.selectFullValue(e)}),0)},onRadioCheckboxChange:function(t){if(t.currentTarget.checked)for(var e=0;e<this.table.radioCheckboxes[t.data.colId].length;e++){var n=this.table.radioCheckboxes[t.data.colId][e];n.checked=n===t.currentTarget}},applyToggleCheckbox:function(t){for(var e,n,i=this.table.columns[t],r=$('input[type="checkbox"]',this.tds[t]).prop("checked"),a=0;a<i.toggle.length;a++)e=i.toggle[a],this.table.colum,(n="!"===e[0])&&(e=e.substring(1)),r&&!n||!r&&n?$(this.tds[e]).removeClass("disabled").find("textarea, input").prop("disabled",!1):$(this.tds[e]).addClass("disabled").find("textarea, input").prop("disabled",!0)},ignoreNextTextareaFocus:function(t){$.data(t.currentTarget,"ignoreNextFocus",!0)},handleKeypress:function(t){var e=t.keyCode?t.keyCode:t.charCode,n=Garnish.isCtrlKeyPressed(t);if(e===Garnish.RETURN_KEY&&("multiline"!==t.data.type||n))return t.preventDefault(),void(t.shiftKey?this.table.focusOnPrevRow(this.$tr,t.data.tdIndex,t.currentTarget):this.table.focusOnNextRow(this.$tr,t.data.tdIndex,t.currentTarget))},handlePaste:function(t){var e=Craft.trim(t.originalEvent.clipboardData.getData("Text")," \n\r");e.match(/[\t\r\n]/)&&(t.preventDefault(),this.table.importData(e,this,t.data.tdIndex))},validateValue:function(t){if("multiline"!==t.data.type)if("number"!==t.data.type){var e=t.currentTarget.value.replace(/[\r\n]/g,"");e!==t.currentTarget.value&&(t.currentTarget.value=e)}else Craft.filterNumberInputVal(t.currentTarget)},onTextareaHeightChange:function(){for(var t=-1,e=0;e<this.niceTexts.length;e++)this.niceTexts[e].height>t&&(t=this.niceTexts[e].height);this.$textareas.css("min-height",t);var n=this.$textareas.filter(":visible").first().parent().height();n>t&&this.$textareas.css("min-height",n)},deleteRow:function(){this.table.deleteRow(this)}},{numericKeyCodes:[9,8,37,38,39,40,45,91,46,190,48,49,50,51,52,53,54,55,56,57]})},8468:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}var r,a;Craft.ElementActionTrigger=Garnish.Base.extend({elementIndex:null,maxLevels:null,newChildUrl:null,$trigger:null,$selectedItems:null,triggerEnabled:!0,init:function(t){if(this.elementIndex=Craft.currentElementIndex,this.elementIndex.triggers.push(this),$.isPlainObject(t)||(t={}),void 0!==t.batch&&(t.bulk=t.batch,delete t.batch),Object.defineProperty(t,"batch",{get:function(){return this.bulk},set:function(t){this.bulk=t}}),this.setSettings(t,Craft.ElementActionTrigger.defaults),this.$trigger=$("#".concat(this.elementIndex.namespaceId(t.type),"-actiontrigger")).data("trigger",this),this.settings.activate){this.$trigger.data("custom-handler",!0);var e=this.$trigger.find("button,.btn");e.length||(e=this.$trigger),this.addListener(e,"activate","handleTriggerActivation")}this.updateTrigger(),this.elementIndex.on("selectionChange",this.updateTrigger.bind(this))},updateTrigger:function(){0!==this.elementIndex.getSelectedElements().length&&(this.validateSelection()?this.enableTrigger():this.disableTrigger())},validateSelection:function(){var t=this;return this.$selectedItems=this.elementIndex.getSelectedElements(),!(!this.settings.bulk&&this.$selectedItems.length>1)&&(!this.settings.requireId||!this.$selectedItems.is('[data-id=""]'))&&("function"!=typeof this.settings.validateSelection||this._call((function(){return t.settings.validateSelection(t.$selectedItems,t.elementIndex)})))},enableTrigger:function(){this.triggerEnabled||(this.$trigger.removeClass("disabled").removeAttr("aria-disabled"),this.triggerEnabled=!0)},disableTrigger:function(){this.triggerEnabled&&(this.$trigger.addClass("disabled").attr("aria-disabled","true"),this.triggerEnabled=!1)},handleTriggerActivation:function(){var t=this;this.triggerEnabled&&this._call((function(){return t.settings.activate(t.$selectedItems,t.elementIndex)}))},_call:function(t){var e=Craft.elementIndex;Craft.elementIndex=this.elementIndex;var n=t();return Craft.elementIndex=e,n}},{defaults:{type:null,bulk:!0,requireId:!0,validateSelection:null,beforeActivate:(a=i(e().mark((function t(n,i){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t,e){return a.apply(this,arguments)}),activate:null,afterActivate:(r=i(e().mark((function t(n,i){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t,e){return r.apply(this,arguments)})}})},5049:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function n(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function i(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function r(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=c(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function a(){"use strict";a=function(){return n};var e,n={},i=Object.prototype,r=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&r.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(a,s,o,l){var c=f(e[a],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&r.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var a;s(this,"_invoke",{value:function(t,e){function r(){return new n((function(n,r){i(t,e,n,r)}))}return a=a?a.then(r,r):r()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var a=-1,s=function t(){for(;++a<n.length;)if(r.call(n,a))return t.value=n[a],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function s(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){s(a,i,r,o,l,"next",t)}function l(t){s(a,i,r,o,l,"throw",t)}o(void 0)}))}}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var u;Craft.ElementEditor=Garnish.Base.extend({isFullPage:null,$container:null,$activityContainer:null,$tabContainer:null,$contentContainer:null,$sidebar:null,$spinner:null,$expandSiteStatusesBtn:null,$statusIcon:null,$previewBtn:null,metaModal:null,$nameTextInput:null,$saveMetaBtn:null,$siteStatusPane:null,$globalLightswitch:null,$siteLightswitches:null,$additionalSiteField:null,siteIds:null,newSiteIds:null,enableAutosave:null,lastSerializedValue:null,formObserver:null,cancelToken:null,ignoreFailedRequest:!1,queue:null,submittingForm:!1,draftElementIds:null,failed:!1,httpStatus:null,httpError:null,openingPreview:!1,preview:null,activatedPreviewToken:!1,previewTokenQueue:null,previewLinks:null,scrollY:null,hiddenTipsStorageKey:"Craft-"+Craft.systemUid+".TipField.hiddenTips",activityTooltips:null,get tipDismissBtn(){return this.$container.find(".tip-dismiss-btn")},get slideout(){return this.$container.data("slideout")},init:function(t,e){var n,i=this;if(this.$container=$(t),this.$container.data("elementEditor")&&(console.warn("Double-instantiating an element editor on an element."),this.$container.data("elementEditor").destroy()),this.$container.data("elementEditor",this),this.$container.attr("data-element-editor",""),this.setSettings(e,Craft.ElementEditor.defaults),this.isFullPage=[Craft.cp.$primaryForm[0],Craft.cp.$main[0]].includes(this.$container[0]),this.isFullPage?(this.$tabContainer=$("#tabs"),this.$contentContainer=$("#content"),this.$sidebar=$("#details .details")):(this.$tabContainer=this.slideout.$tabContainer,this.$contentContainer=this.slideout.$content,this.$sidebar=this.slideout.$sidebar),this.queue=this._createQueue(),this.previewTokenQueue=this._createQueue(),this.draftElementIds={},this.enableAutosave=Craft.autosaveDrafts,this.previewLinks=[],null!==(n=this.settings.previewTargets)&&void 0!==n&&n.length){var r,a=this.isFullPage?$("#action-btn"):this.slideout.$actionBtn,s=this.namespaceId("action-view"),o=null==a||null===(r=a.data("disclosureMenu"))||void 0===r?void 0:r.$container.find('a[id^="'.concat(s,'-"]'));if(null!=o&&o.length){var c=o.attr("href");o.data("targetUrl",c).attr("href",this.getTokenizedPreviewUrl(c,null,!1)),this.previewLinks.push(o)}}this.siteIds=Object.keys(this.settings.siteStatuses).map((function(t){return parseInt(t)})),this.$previewBtn=this.$container.find(".preview-btn");var h=this.isFullPage?$("#page-title"):this.slideout.$toolbar;if(this.$spinner=$("<div/>",{class:"revision-spinner spinner hidden",title:Craft.t("app","Saving")}).appendTo(h),this.$statusIcon=$("<div/>",{class:"revision-status ".concat(this.isFullPage?"invisible":"hidden")}).appendTo(h),this.$statusMessage=$("<div/>",{class:"revision-status-message visually-hidden","aria-live":"polite"}).appendTo(h),this.$expandSiteStatusesBtn=$(".expand-status-btn"),this.settings.canEditMultipleSites&&this.addListener(this.$expandSiteStatusesBtn,"click","expandSiteStatuses"),this.settings.previewTargets.length&&this.isFullPage){this.settings.enablePreview&&this.addListener(this.$previewBtn,"click","openPreview");var u=this.$container.find(".preview-btn-container");if(1===this.settings.previewTargets.length){var d=l(this.settings.previewTargets,1)[0];this.createPreviewLink(d).addClass("view-btn btn").attr("aria-label",Craft.t("app","View")).appendTo(u)}else this.createShareMenu(u)}if(this.settings.canSave){if("FORM"!==this.$container.prop("tagName"))throw"Element editors may only be used with forms.";this.isFullPage&&Craft.edition===Craft.Pro&&(this.$activityContainer=this.$container.find(".activity-container"),this._checkActivity()),this.$container.data("serializer",(function(){return i.serializeForm(!0)})),this.$container.data("initialSerializedValue",this.serializeForm(!0)),Garnish.requestAnimationFrame((function(){i.$container.data("initialSerializedValue",i.serializeForm(!0))})),this.isFullPage&&this.addListener(this.$container,"submit","handleSubmit"),this.settings.isProvisionalDraft?this.initForProvisionalDraft():this.settings.draftId&&!this.settings.isUnpublishedDraft?this.initForDraft():this.settings.canSaveCanonical||this.addListener(this.$container,"submit.saveShortcut",(function(t){t.saveShortcut&&(t.preventDefault(),i.saveDraft(),i.removeListener(i.$container,"submit.saveShortcut"))})),this.listenForChanges(),this.addListener(this.$statusIcon,"click",(function(){i.showStatusHud(i.$statusIcon)})),this.handleDismissibleTips(),this.isFullPage&&Craft.messageReceiver&&Craft.broadcaster.addEventListener("message",(function(t){if("saveDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&(t.data.draftId===i.settings.draftId||t.data.isProvisionalDraft&&!i.settings.draftId)||"saveElement"===t.data.event&&t.data.id===i.settings.canonicalId&&!i.settings.draftId)Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload();else if("deleteDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&t.data.draftId===i.settings.draftId){var e=new URL(window.location.href);e.searchParams.delete("draftId"),e.href!==document.location.href?window.location.href=e:(Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload())}})),this.activityTooltips={},this.isFullPage&&Craft.ui.setFocusOnErrorSummary(this.$container)}},_createQueue:function(){var t=this,e=new Craft.Queue;return e.on("beforeRun",(function(){t.showSpinner()})),e.on("afterRun",(function(){t.hideSpinner()})),e},get namespace(){return this.isFullPage?null:this.slideout.namespace},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.namespace)},get listeningForChanges(){return!!this.formObserver},get pauseLevel(){var t,e;return null!==(t=null===(e=this.formObserver)||void 0===e?void 0:e._pauseLevel)&&void 0!==t?t:0},listenForChanges:function(){var t=this;this.formObserver||(this.formObserver=new Craft.FormObserver(this.$container,(function(){t.checkForm()})))},stopListeningForChanges:function(){if(this.formObserver)return this.formObserver.destroy(),void(this.formObserver=null)},pause:function(){var t;null===(t=this.formObserver)||void 0===t||t.pause()},resume:function(){var t;null===(t=this.formObserver)||void 0===t||t.resume()},initForProvisionalDraft:function(){var t=this,e=this.$container.find(".discard-changes-btn");if(!e.length){var n,i,r;this.isFullPage?(n=$("#content").height(),i=Garnish.$win.scrollTop(),r=Craft.cp.$noticeContainer):r=this.$container.find(".so-notice");var a=$("<div/>",{class:"draft-notice"}).append($("<div/>",{class:"draft-icon","aria-hidden":"true","data-icon":"edit"})).append($("<p/>",{text:Craft.t("app","Showing your unsaved changes.")})).appendTo(r);if(e=$("<button/>",{type:"button",class:"discard-changes-btn btn",text:Craft.t("app","Discard")}).appendTo(a),this.isFullPage){var s=$("#content").height()-n;if(Garnish.$win.scrollTop(i+s),Garnish.$win.scrollTop()===i){Craft.cp.$contentContainer.css("pointer-events","none"),$("#content-header").css("min-height","auto");var o=r.height();r.css({height:o-s,overflow:"hidden"}).velocity({height:o},"fast",(function(){$("#content-header").css("min-height",""),r.css({height:"",overflow:""}),setTimeout((function(){Craft.cp.$contentContainer.css("pointer-events","")}),300)}))}}}this.addListener(e,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(t){t.stopPropagation()})),this.addListener(e,"click",(function(){confirm(Craft.t("app","Are you sure you want to discard your changes?"))&&t.queue.unshift((function(){return new Promise((function(e,n){t.isFullPage?Craft.submitForm(t.$container,{action:"elements/delete-draft",redirect:t.settings.hashedCpEditUrl,params:{draftId:t.settings.draftId,provisional:1}}):Craft.sendActionRequest("POST","elements/delete-draft",{data:{elementId:t.settings.canonicalId,draftId:t.settings.draftId,provisional:1}}).then((function(e){Craft.cp.displaySuccess(e.data.message),t.slideout.close()})).catch(n)}))}))})),this.isFullPage||this.slideout.$cancelBtn.text(Craft.t("app","Close"))},initForDraft:function(){var t=this;this.createEditMetaAction(),this.settings.canSaveCanonical&&Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0,alt:!0},(function(){Craft.submitForm(t.$container,{action:"elements/apply-draft",redirect:t.settings.hashedCpEditUrl})}),0)},expandSiteStatuses:function(){var t=this;this.removeListener(this.$expandSiteStatusesBtn,"click"),this.$expandSiteStatusesBtn.velocity({opacity:0},"fast",(function(){t.$expandSiteStatusesBtn.remove()}));var e=this.$container.find(".enabled-for-site-".concat(this.settings.siteId,"-field"));if(this.$siteStatusPane=e.parent(),this.settings.revisionId)this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));else{e.addClass("nested");var n=Craft.ui.createLightswitchField({label:Craft.t("app","Enabled for all sites"),name:this.namespaceInputName("enabled")}).insertBefore(e);n.find("label").css("font-weight","bold"),this.$globalLightswitch=n.find(".lightswitch"),this.settings.revisionId||this._showField(n);var i=Object.values(this.settings.siteStatuses),r=i.includes(!0),a=i.includes(!1),s=r&&a?"-":r?"1":"",o=encodeURIComponent(this.namespaceInputName("enabledForSite[".concat(this.settings.siteId,"]")))+"="+(this.settings.enabledForSite?"1":"");this.$siteLightswitches=e.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this)),this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));for(var l=encodeURIComponent(this.namespaceInputName("enabled"))+"=".concat(s),c=0;c<this.$siteLightswitches.length;c++){var h=this.$siteLightswitches.eq(c).data("lightswitch").$input;l+="&"+encodeURIComponent(h.attr("name"))+"="+h.val()}this.$container.data("initialSerializedValue",this.$container.data("initialSerializedValue").replace(o,l)),this.lastSerializedValue&&(this.lastSerializedValue=this.lastSerializedValue.replace(o,l)),this.settings.additionalSites&&this.settings.additionalSites.length&&this.isFullPage&&this._createAddlSiteField(),this.$globalLightswitch.focus(),this.$globalLightswitch.on("change",this._updateSiteStatuses.bind(this)),this._updateGlobalStatus()}},_getOtherSupportedSites:function(){var t=this;return Craft.sites.filter((function(e){return e.id!=t.settings.siteId&&t.siteIds.includes(e.id)}))},_showField:function(t){var e=t.height();t.css({overflow:"hidden","min-height":"auto"}).height(0).velocity({height:e},"fast",(function(){t.css({overflow:"",height:"","min-height":""})}))},_removeField:function(t){t.css({overflow:"hidden","min-height":"auto"}).velocity({height:0},"fast",(function(){t.remove()}))},_updateGlobalStatus:function(){var t=!0,e=!0;this.$siteLightswitches.each((function(){if($(this).data("lightswitch").on?e=!1:t=!1,!t&&!e)return!1})),t?this.$globalLightswitch.data("lightswitch").turnOn(!0):e?this.$globalLightswitch.data("lightswitch").turnOff(!0):this.$globalLightswitch.data("lightswitch").turnIndeterminate(!0)},_updateSiteStatuses:function(){var t=this.$globalLightswitch.data("lightswitch").on;this.$siteLightswitches.each((function(){t?$(this).data("lightswitch").turnOn(!0):$(this).data("lightswitch").turnOff(!0)}))},_createSiteStatusField:function(t,e){var n=Craft.ui.createLightswitchField({fieldClass:"enabled-for-site-".concat(t.id,"-field"),label:t.name,name:this.namespaceInputName("enabledForSite[".concat(t.id,"]")),on:void 0!==e?e:!this.settings.siteStatuses.hasOwnProperty(t.id)||this.settings.siteStatuses[t.id],disabled:!!this.settings.revisionId});if(this.$additionalSiteField?n.insertBefore(this.$additionalSiteField):n.appendTo(this.$siteStatusPane),!this.settings.revisionId){n.addClass("nested");var i=n.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this));this.$siteLightswitches=this.$siteLightswitches.add(i)}return this._showField(n),n},_createAddlSiteField:function(){var t,e=this,n=Craft.sites.filter((function(t){return!e.siteIds.includes(t.id)&&e.settings.additionalSites.some((function(e){return e.siteId==t.id}))}));if(n.length){var i="add-site-label",r=$("<span/>",{text:Craft.t("app","Add a site..."),class:"visually-hidden",id:i}),a=Craft.ui.createSelect({options:[{label:Craft.t("app","Add a site…")}].concat((t=n.map((function(t){return{label:t.name,value:t.id}})),function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||c(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())),labelledBy:i}).addClass("fullwidth");this.$additionalSiteField=Craft.ui.createField(a,{}).addClass("nested add").appendTo(this.$siteStatusPane),r.prependTo(this.$additionalSiteField);var s=a.find("select");s.on("change",(function(){var t=parseInt(s.val()),n=Craft.sites.find((function(e){return e.id===t}));if(n){var i=e.settings.additionalSites.find((function(t){return t.siteId==n.id}));e._createSiteStatusField(n,i.enabledByDefault),e._updateGlobalStatus(),s.val("").find('option[value="'.concat(t,'"]')).remove(),null===e.newSiteIds&&(e.newSiteIds=[]),e.siteIds.push(t),e.newSiteIds.push(t),1===s.find("option").length&&e._removeField(e.$additionalSiteField)}})),this._showField(this.$additionalSiteField)}},showStatusHud:function(t){var e;this.failed?(e='<p class="error"><strong>'.concat(this._saveFailMessage(),"</strong></p>"),this.httpError&&(e+='<p class="http-error code">'.concat(Craft.escapeHtml(this.httpError),"</p>")),400===this.httpStatus&&(e+='<button class="btn refresh-btn">'.concat(Craft.t("app","Refresh"),"</button>"))):e="<p>".concat(this._saveSuccessMessage(),"</p>");var n=new Garnish.HUD(t,e,{hudClass:"hud revision-status-hud",onHide:function(){n.destroy()}});n.$mainContainer.find(".refresh-btn").on("click",(function(){window.location.reload()}))},_saveSuccessMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes have been stored."):Craft.t("app","The draft has been saved.")},_saveFailMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes could not be stored."):Craft.t("app","The draft could not be saved.")},spinners:function(){return this.preview?this.$spinner.add(this.preview.$spinner):this.$spinner},showSpinner:function(){this.spinners().removeClass("hidden")},hideSpinner:function(){this.spinners().addClass("hidden")},statusIcons:function(){return this.preview?this.$statusIcon.add(this.preview.$statusIcon):this.$statusIcon},statusMessage:function(){return this.preview?this.$statusMessage.add(this.preview.$statusMessage):this.$statusMessage},createEditMetaAction:function(){if(this.isFullPage){var t=$("#action-menu").disclosureMenu().data("disclosureMenu"),e=t.getFirstDestructiveGroup(),n=t.addGroup(null,!0,e),i=t.addItem({type:"button",icon:"edit",label:Craft.t("app","Edit draft settings")},n);this.addListener(i,"click","showMetaModal")}},createPreviewLink:function(t,e){var n=this,i=$("<a/>",{href:this.getTokenizedPreviewUrl(t.url,null,!1),text:e||Craft.t("app","View"),target:"_blank",data:{targetUrl:t.url,targetLabel:t.label}});return this.addListener(i,"click",(function(){setTimeout((function(){n.activatePreviewToken()}),1)})),this.previewLinks.push(i),i},updatePreviewLinks:function(){var t=this;this.previewLinks.forEach((function(e){t.updatePreviewLinkHref(e),t.activatedPreviewToken&&t.removeListener(e,"click")}))},updatePreviewLinkHref:function(t){t.attr("href",this.getTokenizedPreviewUrl(t.data("targetUrl"),null,!1))},activatePreviewToken:function(){this.settings.isLive||(this.activatedPreviewToken=!0,this.updatePreviewLinks())},createShareMenu:function(t){var e=this,n=$("<button/>",{type:"button",class:"view-btn btn menubtn",text:Craft.t("app","View")}).appendTo(t),i=$("<div/>",{class:"menu"}).appendTo(t),r=$("<ul/>").appendTo(i);this.settings.previewTargets.forEach((function(t){$("<li/>").append(e.createPreviewLink(t,t.label)).appendTo(r)})),new Garnish.MenuBtn(n)},getPreviewTokenParams:function(){var t={elementType:this.settings.elementType,canonicalId:this.settings.canonicalId,siteId:this.settings.siteId,revisionId:this.settings.revisionId,previewToken:this.settings.previewToken};return this.settings.draftId&&!this.settings.isProvisionalDraft&&(t.draftId=this.settings.draftId),t},getPreviewToken:function(){var t=this;return this.previewTokenQueue.push((function(){return new Promise((function(e,n){t.activatedPreviewToken?e(t.settings.previewToken):Craft.sendActionRequest("POST","preview/create-token",{data:t.getPreviewTokenParams()}).then((function(){t.activatePreviewToken(),e(t.settings.previewToken)})).catch(n)}))}))},getTokenizedPreviewUrl:function(t,e,n){var i=this;void 0===n&&(n=!0);var r={};if(!e&&this.settings.isLive||(r[e||"x-craft-preview"]=Craft.randomString(10)),this.settings.siteToken&&(r[Craft.siteToken]=this.settings.siteToken),this.settings.isLive){var a=Craft.getUrl(t,r);return n?new Promise((function(t){t(a)})):a}if(!this.settings.previewToken)throw"Missing preview token";r[Craft.tokenParam]=this.settings.previewToken;var s=Craft.getUrl(t,r);if(this.activatedPreviewToken)return n?new Promise((function(t){t(s)})):s;if(n)return new Promise((function(t,e){i.getPreviewToken().then((function(){t(s)})).catch(e)}));var o=this.getPreviewTokenParams();return o.redirect=s,Craft.getActionUrl("preview/create-token",o)},getPreview:function(){var t=this;return this.preview||(this.preview=new Craft.Preview(this),this.enableAutosave||(this.preview.on("open",(function(){t.enableAutosave=!0,t.checkForm()})),this.preview.on("close",(function(){t.enableAutosave=!1;var e=t.statusIcons();e.hasClass("checkmark-icon")&&e.addClass("hidden")}))),this.preview.on("beforeOpen",(function(){var e;null===(e=t.formObserver)||void 0===e||e.pause()})),this.preview.on("close",(function(){var e;null===(e=t.formObserver)||void 0===e||e.resume(),t.scrollY&&(window.scrollTo(0,t.scrollY),t.scrollY=null)}))),this.preview},openPreview:(u=o(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Garnish.hasAttr(this.$previewBtn,"aria-disabled")){t.next=2;break}return t.abrupt("return");case 2:return this.$previewBtn.attr("aria-disabled",!0),this.$previewBtn.addClass("loading"),t.prev=4,t.next=7,this.checkForm();case 7:return this.openingPreview=!0,t.next=10,this.ensureIsDraftOrRevision(!0);case 10:this.scrollY=window.scrollY,this.getPreview().open();case 12:return t.prev=12,this.$previewBtn.removeAttr("aria-disabled"),this.$previewBtn.removeClass("loading"),this.openingPreview=!1,t.finish(12);case 17:case"end":return t.stop()}}),t,this,[[4,,12,17]])}))),function(){return u.apply(this,arguments)}),ensureIsDraftOrRevision:function(t){var e=this;return new Promise((function(n,i){if(e.settings.draftId||e.settings.revisionId)n();else{if(t&&e.serializeForm(!0)===e.$container.data("initialSerializedValue"))return void n();e.saveDraft().then(n).catch(i)}}))},setFormValue:function(t,e){var n=this;return o(a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!n.settings.revisionId){i.next=2;break}throw"Unable to set form values on a revision.";case 2:if(!n.$container.serialize().split("&").includes("".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(e)))){i.next=5;break}return i.abrupt("return");case 5:if($("<input/>",{type:"hidden",name:t,value:e}).prependTo(n.$container),!n.settings.canCreateDrafts){i.next=9;break}return i.next=9,n.saveDraft();case 9:case"end":return i.stop()}}),i)})))()},markDeltaNameAsModified:function(t){var e=this;return o(a().mark((function n(){var i;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=e.$container.data("modified-delta-names")||[]).includes(t)){n.next=6;break}return i.push(t),e.$container.data("modified-delta-names",i),n.next=6,e.saveDraft();case 6:case"end":return n.stop()}}),n)})))()},serializeForm:function(t){var e=this.$container.serialize();if(this.isPreviewActive()&&(e=e.replace("__PREVIEW_FIELDS__=1",this.preview.$editor.serialize())),t&&!this.settings.isUnpublishedDraft){var n=encodeURIComponent(this.namespaceInputName("action")),i=encodeURIComponent(this.namespaceInputName("redirect"));e=(e=e.replace(new RegExp("&".concat(Craft.escapeRegex(n),"=[^&]*")),"")).replace(new RegExp("&".concat(Craft.escapeRegex(i),"=[^&]*")),"")}return e.replace(/&elementindex-[^&]*/g,"")},checkForm:function(t){var e=this;return this.queue.push((function(){return new Promise((function(n,i){if(e.settings.revisionId)n();else if(void 0!==e.$container.data("initialSerializedValue")){var r=e.serializeForm(!0);t||r!==(e.lastSerializedValue||e.$container.data("initialSerializedValue"))?e.enableAutosave&&e.settings.canCreateDrafts?e._saveDraftInternal(r).then(n).catch((function(t){console.warn("Couldn’t save draft:",t),i(t)})):e.updateFieldLayout(r).then(n).catch((function(t){console.warn("Couldn’t update field layout:",t),i(t)})):n()}else setTimeout((function(){e.checkForm(t).then(n).catch(i)}),500)}))}))},isPreviewActive:function(){return this.preview&&this.preview.isActive},saveDraft:function(t){var e=this;return this.queue.push((function(){return new Promise((function(n,i){e._saveDraftInternal(e.serializeForm(!0),t).then(n).catch(i)}))}))},_saveDraftInternal:function(t,e){var a=this;return new Promise((function(e,s){if(a.submittingForm)s("Form already being submitted.");else{a.lastSerializedValue=t,a.failed=!1,a.httpStatus=null,a.httpError=null,a.cancelToken=axios.CancelToken.source(),a.statusIcons().velocity("stop").css("opacity","").removeClass("hidden invisible checkmark-icon alert-icon fade-out").addClass("hidden"),a.statusMessage().empty(),a.$saveMetaBtn&&a.$saveMetaBtn.addClass("active");var o,c=l(Craft.findModifiedDeltaNames(a.$container.data("initialSerializedValue"),t,a.$container.data("delta-names"),a.$container.data("initial-delta-values"),a.$container.data("modified-delta-names"),!0),1)[0],h=a.prepareData(t,null,!0),u=$(),d=r(c);try{for(d.s();!(o=d.n()).done;){var f=o.value,p=u=u.add(a.$container.find('.field[data-base-input-name="'.concat($.escapeSelector(f),'"]')));u=u.add(p).add(p.parentsUntil(a.$container,".field"))}}catch(t){d.e(t)}finally{d.f()}h.push($.param(i({},a.namespaceInputName("visibleLayoutElements"),a.settings.visibleLayoutElements))),!a.settings.isProvisionalDraft&&a.settings.draftId||h.push("".concat(a.namespaceInputName("provisional"),"=1"));var g=a.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");g&&h.push("".concat(a.namespaceInputName("selectedTab"),"=").concat(g)),Craft.sendActionRequest("POST","elements/save-draft",{cancelToken:a.cancelToken.token,headers:a._saveHeaders,data:h.join("&")}).then((function(i){a._afterSaveDraft(),a._afterUpdateFieldLayout(t,g,i);var r=!a.settings.draftId;r&&(a.settings.isProvisionalDraft=!0),a.isFullPage&&(i.data.title&&a.$container.find(".screen-title").text(i.data.title),i.data.docTitle&&(document.title=i.data.docTitle)),a.newSiteIds&&(a.newSiteIds.forEach((function(t){var e=a.settings.additionalSites.find((function(e){return e.siteId==t})),n=!e||void 0===e.enabledByDefault||e.enabledByDefault;Craft.cp.showSiteCrumbMenuItem(t),Craft.cp.setSiteCrumbMenuItemStatus(t,n?"enabled":"disabled")})),a.newSiteIds=null),a.settings.isProvisionalDraft?r&&(a.$container.find("input.action-input").attr("value","elements/apply-draft"),a.settings.elementId=i.data.elementId,a.settings.draftId=i.data.draftId,a.settings.isLive=!1,a.previewToken=null,a.initForProvisionalDraft()):(a.settings.draftName=i.data.draftName,a.isFullPage&&Craft.cp.updateContext(i.data.draftName,i.data.creator?Craft.t("app","Saved {timestamp} by {creator}",{timestamp:i.data.timestamp,creator:i.data.creator}):Craft.t("app","Saved {timestamp}",{timestamp:i.data.timestamp}))),i.data.previewTargets&&JSON.stringify(i.data.previewTargets)!==JSON.stringify(a.settings.previewTargets)&&a.updatePreviewTargets(i.data.previewTargets),r&&(a.updatePreviewLinks(),a.trigger("createProvisionalDraft")),a.$nameTextInput&&a.checkMetaValues(),$.isPlainObject(i.data.draftElementIds)&&(a.draftElementIds=n(n({},a.draftElementIds),i.data.draftElementIds));var s=i.data.modifiedAttributes.map((function(t){return t=a.namespaceInputName(t),['[name="'.concat(t,'"]'),'[name^="'.concat(t,'["]')]})).flat().join(",");u=u.add(a.$contentContainer.find(s).parentsUntil(a.$container,".flex-fields > .field")).add(a.$sidebar.find(s).closest(".field")).not(":has(> .status-badge)");for(var o=0;o<u.length;o++)u.eq(o).prepend($("<div/>",{class:"status-badge modified",title:Craft.t("app","This field has been modified.")}).append($("<span/>",{class:"visually-hidden",html:Craft.t("app","This field has been modified.")})));a.settings.updatedTimestamp=i.data.updatedTimestamp,a.settings.canonicalUpdatedTimestamp=i.data.canonicalUpdatedTimestamp,a.afterUpdate(t),Craft.broadcaster&&Craft.broadcaster.postMessage({pageId:Craft.pageId,event:"saveDraft",canonicalId:a.settings.canonicalId,draftId:a.settings.draftId,isProvisionalDraft:a.settings.isProvisionalDraft}),e()})).catch((function(t){a._afterSaveDraft(),a.ignoreFailedRequest||(a.failed=!0,t&&t.response&&(a.httpStatus=t.response.status,a.httpError=t.response.data?t.response.data.message:null),a._showFailStatus(),s(t)),a.ignoreFailedRequest=!1}))}}))},_afterSaveDraft:function(){this.$saveMetaBtn&&this.$saveMetaBtn.removeClass("active")},_showFailStatus:function(){this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden checkmark-icon").addClass("alert-icon"),this.setStatusMessage(this._saveFailMessage())},updateFieldLayout:function(t){var e=this;return new Promise((function(n,r){if(e.submittingForm)r("Form already being submitted.");else{e.lastSerializedValue=t,e.cancelToken=axios.CancelToken.source();var a=[],s=e.prepareData(t,e.settings.isUnpublishedDraft?null:function(t,e){e.length&&a.push(decodeURIComponent(e[0].split("=")[0]))}),o=i({},e.namespaceInputName("visibleLayoutElements"),e.settings.visibleLayoutElements);e.settings.isProvisionalDraft&&(o[e.namespaceInputName("provisional")]=1);var l=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");l&&(o[e.namespaceInputName("selectedTab")]=l),s+="&".concat($.param(o)),Craft.sendActionRequest("POST","elements/update-field-layout",{cancelToken:e.cancelToken.token,headers:e._saveHeaders,data:s}).then((function(i){e._afterUpdateFieldLayout(t,l,i),n()})).catch((function(t){e._afterSaveDraft(),e.ignoreFailedRequest||(e.failed=!0,t&&t.response&&(e.httpStatus=t.response.status,e.httpError=t.response.data?t.response.data.message:null),e._showFailStatus(),r(t)),e.ignoreFailedRequest=!1}))}}))},prepareData:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=Craft.findDeltaData(this.$container.data("initialSerializedValue"),t,this.$container.data("delta-names"),e,this.$container.data("initial-delta-values"),this.$container.data("modified-delta-names"),!0);return this.settings.draftId&&(i.push("".concat(this.namespaceInputName("draftId"),"=").concat(this.settings.draftId)),this.settings.isProvisionalDraft&&i.push("".concat(this.namespaceInputName("provisional"),"=1"))),null!==this.settings.draftName&&i.push("".concat(this.namespaceInputName("draftName"),"=").concat(this.settings.draftName)),n?i:i.join("&")},get _saveHeaders(){var t={"content-type":"application/x-www-form-urlencoded"};return this.namespace&&(t["X-Craft-Namespace"]=this.namespace),t},getDraftElementId:function(t){return this.draftElementIds[t]||t},updatePreviewTargets:function(t){var e=this;t.forEach((function(t){var n=e.settings.previewTargets.find((function(e){return e.label===t.label}));n&&(n.url=t.url);var i=e.previewLinks.find((function(e){return e.data("targetLabel")===t.label}));i&&(i.data("targetUrl",t.url),e.updatePreviewLinkHref(i))}))},_afterUpdateFieldLayout:function(t,e,n){var i=this;return o(a().mark((function s(){var o,l,c,h,u,d,f,p,g,m,v,b,y,C,w,_,S,x,T;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:o=i.serializeForm(!0)===t,l=i.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id"),c=$(),h={},u=!1,d=r(n.data.missingElements);try{for(d.s();!(f=d.n()).done;){p=f.value,(g=i.$contentContainer.children('[data-layout-tab="'.concat(p.uid,'"]'))).length||(g=$("<div/>",{id:i.namespaceId(p.id),class:"flex-fields","data-id":p.id,"data-layout-tab":p.uid}),p.id!==e&&g.addClass("hidden"),g.appendTo(i.$contentContainer)),c=c.add(g),m=r(p.elements);try{for(m.s();!(v=m.n()).done;)!1!==(b=v.value).html?(h[p.uid]||(h[p.uid]=[]),h[p.uid].push(b.uid),"string"==typeof b.html&&(y=g.children('[data-layout-element="'.concat(b.uid,'"]')),C=$(b.html),y.length?y.replaceWith(C):C.appendTo(g),Craft.initUiElements(C),u=!0)):(w=g.children('[data-layout-element="'.concat(b.uid,'"]'))).length&&Garnish.hasAttr(w,"data-layout-element-placeholder")||(_=$("<div/>",{class:"hidden","data-layout-element":b.uid,"data-layout-element-placeholder":""}),w.length?w.replaceWith(_):_.appendTo(g),u=!0)}catch(t){m.e(t)}finally{m.f()}}}catch(t){d.e(t)}finally{d.f()}return(S=i.$contentContainer.children("[data-layout-tab]").not(c).not('[data-layout-tab=""]')).length&&(S.remove(),u=!0),c.filter(":not(.hidden)").length||c.first().removeClass("hidden"),i.settings.visibleLayoutElements=h,i.isFullPage?(Craft.cp.updateTabs(n.data.tabs),x=Craft.cp.tabManager):(i.slideout.updateTabs(n.data.tabs),x=i.slideout.tabManager),e&&l&&e!==l&&((T=x.$tabs.filter('[data-id="'.concat(l,'"]'))).length?x.selectTab(T):x.selectTab(x.$tabs.first())),a.next=15,Craft.appendHeadHtml(n.data.headHtml);case 15:return a.next=17,Craft.appendBodyHtml(n.data.bodyHtml);case 17:u&&(n.data.initialDeltaValues&&Object.assign(i.$container.data("initial-delta-values"),n.data.initialDeltaValues),o&&(i.lastSerializedValue=i.serializeForm(!0))),i.handleDismissibleTips();case 19:case"end":return a.stop()}}),s)})))()},afterUpdate:function(t){this.$container.data("initialSerializedValue",t),this.$container.data("initial-delta-values",{});var e=this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden").addClass("checkmark-icon");this.setStatusMessage(this._saveSuccessMessage()),Craft.autosaveDrafts||e.velocity("stop").velocity({opacity:0},{delay:2e3,complete:function(){e.addClass("hidden")}}),this.trigger("update")},setStatusMessage:function(t){this.statusIcons().attr("title",t),this.statusMessage().empty().append($("<span/>",{class:"visually-hidden",text:t}))},showMetaModal:function(){var t=this;this.metaModal?this.metaModal.show():this.createMetaModal(),Garnish.isMobileBrowser(!0)||setTimeout((function(){t.$nameTextInput.trigger("focus")}),100)},createMetaModal:function(){var t=this,e=$("<form/>",{class:"modal fitted"}),n=$("<div/>",{class:"body"}).appendTo(e),i=$('<div class="field"><div class="heading"><label for="draft-name">'+Craft.t("app","Draft Name")+"</label></div></div>").appendTo(n),r=$('<div class="input"/>').appendTo(i);this.$nameTextInput=$('<input type="text" class="text fullwidth" id="draft-name"/>').appendTo(r).val(this.settings.draftName);var a=$('<div class="hud-footer flex flex-center"/>').appendTo(e);$('<div class="flex-grow"></div>').appendTo(a),this.$saveMetaBtn=$("<button/>",{type:"submit",class:"btn submit disabled","aria-disabled":"true",text:Craft.t("app","Save")}).appendTo(a),this.metaModal=new Garnish.Modal(e),this.addListener(this.$nameTextInput,"input","checkMetaValues"),this.addListener(e,"submit",(function(e){e.preventDefault(),t.saveMeta()})),this.metaModal.on("escape",(function(){t.$nameTextInput.val(t.settings.draftName)}))},checkMetaValues:function(){return this.$nameTextInput.val()&&this.$nameTextInput.val()!==this.settings.draftName?(this.$saveMetaBtn.removeClass("disabled"),this.$saveMetaBtn.removeAttr("aria-disabled"),!0):(this.$saveMetaBtn.addClass("disabled"),this.$saveMetaBtn.attr("aria-disabled","true"),!1)},shakeMetaModal:function(){Garnish.shake(this.metaModal.$container)},saveMeta:function(){var t=this;return new Promise((function(e,n){if(!t.checkMetaValues())return t.shakeMetaModal(),void n();t.settings.draftName=t.$nameTextInput.val(),t.metaModal.hide(),t.checkForm(!0).then(e).catch(n)}))},handleSubmit:function(t){var e=this;if(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!this.submittingForm)if(!this.settings.draftId||this.settings.isUnpublishedDraft||this.settings.isProvisionalDraft||void 0!==t.autosave&&!t.autosave||!(t.saveShortcut||t.customTrigger&&"elements/save-draft"===t.customTrigger.data("action"))||!this.enableAutosave){this.submittingForm=!0,Craft.cp.$confirmUnloadForms=Craft.cp.$confirmUnloadForms.not(this.$container),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("beforeSubmit");var n=this.prepareData(this.serializeForm(!1));if(this.isFullPage){this.stopListeningForChanges();var i=Craft.createForm(n);i.appendTo(Garnish.$bod),i.submit()}else this.slideout.showSubmitSpinner(),Craft.sendActionRequest("POST",null,{headers:this._saveHeaders,data:n}).then((function(t){e.slideout.handleSubmitResponse(t)})).catch((function(t){e.slideout.handleSubmitError(t)})).finally((function(){e.submittingForm=!1,e.slideout.hideSubmitSpinner()}))}else this.checkForm(!0)},handleDismissibleTips:function(){var t=this;this.addListener(this.tipDismissBtn,"click",(function(e){t.hideTip(e)}))},getHiddenTipsUids:function(){return Craft.getLocalStorage("dismissedTips",[])},setHiddenTipsUids:function(t){Craft.setLocalStorage("dismissedTips",t)},hideTip:function(t){var e=t.target;if(e){var n=$(e).closest(".readable");if(n.length){var i=n.data("layout-element");if(n.remove(),"undefined"!=typeof Storage){var r=this.getHiddenTipsUids();r.includes(i)||(r.push(i),this.setHiddenTipsUids(r))}}}},_checkActivity:function(){var t=this;this.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","elements/recent-activity",{params:{dontExtendSession:1},data:{elementType:t.settings.elementType,elementId:t.settings.canonicalId,draftId:t.settings.draftId,siteId:t.settings.siteId,provisional:t.settings.isProvisionalDraft}}).then((function(n){var i=n.data,r=null;if(t.activityTooltips&&(r=Object.values(t.activityTooltips).find((function(t){return t.$trigger[0]===document.activeElement}))),t.$activityContainer.html("").attr("role","region").attr("aria-label",Craft.t("app","Recent Activity")),i.activity.length){$("<h2/>",{class:"visually-hidden",text:Craft.t("app","Recent Activity")}).appendTo(t.$activityContainer);for(var a=$("<ul/>").appendTo(t.$activityContainer),s=0;s<i.activity.length;s++){var o=i.activity[s],l=$("<li/>").appendTo(a),c=$("<button/>",{type:"button",class:"activity-btn","aria-label":Craft.t("app","{name} active, more info",{name:o.userName}),"aria-expanded":"false"}).appendTo(l),h=$(o.userThumb).addClass("elementthumb").css("z-index",i.activity.length-s).appendTo(c);h.find("img,svg").attr("role","presentation"),Craft.cp.elementThumbLoader.load(l),h.find("title").remove(),void 0===t.activityTooltips[o.userId]?t.activityTooltips[o.userId]=new Craft.Tooltip(c,o.message):(t.activityTooltips[o.userId].$trigger=c,t.activityTooltips[o.userId].message=o.message,t.activityTooltips[o.userId]===r&&t.activityTooltips[o.userId].$trigger.focus())}}for(var u=function(){var e=f[d];i.activity.find((function(t){return t.userId==e}))||t.activityTooltips[e].hide()},d=0,f=Object.keys(t.activityTooltips);d<f.length;d++)u();var p=t.settings.updatedTimestamp&&t.settings.updatedTimestamp!==i.updatedTimestamp,g=t.settings.canonicalUpdatedTimestamp&&t.settings.canonicalUpdatedTimestamp!==i.canonicalUpdatedTimestamp;if(p||g){var m=Craft.ui.createButton({label:Craft.t("app","Reload"),spinner:!0});Craft.cp.displayNotice(Craft.t("app","This {type} has been updated.",{type:p&&t.settings.draftId&&!t.settings.isProvisionalDraft?Craft.t("app","draft"):Craft.elementTypeNames[t.settings.elementType]?Craft.elementTypeNames[t.settings.elementType][2]:Craft.t("app","element")}),{details:m}),m.on("click",(function(){window.location.reload()}))}t.settings.updatedTimestamp=i.updatedTimestamp,t.settings.canonicalUpdatedTimestamp=i.canonicalUpdatedTimestamp,setTimeout((function(){t._checkActivity()}),15e3),e()})).catch(n)}))}))}},{defaults:{additionalSites:[],canCreateDrafts:!1,canEditMultipleSites:!1,canSave:!1,canSaveCanonical:!1,elementId:null,canonicalId:null,draftId:null,draftName:null,elementType:null,enablePreview:!1,enabled:!1,enabledForSite:!1,hashedCpEditUrl:null,isLive:!1,isProvisionalDraft:!1,isUnpublishedDraft:!1,previewTargets:[],previewToken:null,revisionId:null,siteId:null,siteStatuses:null,siteToken:null,visibleLayoutElements:{},updatedTimestamp:null,canonicalUpdatedTimestamp:null}})},4211:function(){Craft.ElementEditorSlideout=Craft.CpScreenSlideout.extend({$element:null,init:function(t,e){var n=this;this.$element=$(t),e=Object.assign({},Craft.ElementEditorSlideout.defaults,e,{showHeader:!0}),this.base("elements/edit",e),this.on("load",(function(){var t=n.$container.data("elementEditor");t&&t.on("beforeSubmit",(function(){Object.keys(n.settings.saveParams).forEach((function(e){$("<input/>",{class:"hidden",name:t.namespaceInputName(e),value:n.settings.saveParams[e]}).appendTo(n.$container)}))}))})),this.on("submit",(function(t){if(Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:t.response.data.element.id}),n.settings.onSaveElement){var e=Object.assign({},t.response.data,t.response.data.element);delete e.element,delete e.modelName,delete e.message,n.settings.onSaveElement(e)}Craft.Preview.refresh()}))},getParams:function(){var t={};return this.settings.elementType&&(t.elementType=this.settings.elementType),this.settings.elementId?t.elementId=this.settings.elementId:this.$element&&this.$element.data("id")&&(t.elementId=this.$element.data("id")),this.settings.draftId?t.draftId=this.settings.draftId:this.$element&&this.$element.data("draft-id")?t.draftId=this.$element.data("draft-id"):this.settings.revisionId?t.revisionId=this.settings.revisionId:this.$element&&this.$element.data("revision-id")&&(t.revisionId=this.$element.data("revision-id")),this.settings.siteId?t.siteId=this.settings.siteId:this.$element&&this.$element.data("site-id")&&(t.siteId=this.$element.data("site-id")),this.settings.prevalidate&&(t.prevalidate=1),t},handleSubmit:function(t){var e=this.$container.data("elementEditor");"submit"===t.type?e.handleSubmit(t):e.saveDraft().then((function(){e.handleSubmit(t)})).catch()}},{defaults:{elementId:null,draftId:null,revisionId:null,elementType:null,siteId:null,prevalidate:!1,saveParams:{},onSaveElement:null,validators:[],expandData:[]}})},7998:function(){Craft.ElementFieldSettings=Garnish.Base.extend({allowMultipleSources:null,$maintainHierarchyField:null,$maintainHierarchyButton:null,$sourcesField:null,$sourceSelect:null,$branchLimitField:null,$maxRelationsField:null,$minRelationsField:null,$viewModeField:null,init:function(t,e,n,i,r,a,s){this.allowMultipleSources=t,this.$maintainHierarchyField=$("#".concat(e)),this.$maintainHierarchyButton=this.$maintainHierarchyField.find("button"),this.$sourcesField=$("#".concat(n)),this.allowMultipleSources||(this.$sourceSelect=this.$sourcesField.find("select")),this.$branchLimitField=$("#".concat(i)),this.$minRelationsField=$("#".concat(r)),this.$maxRelationsField=$("#".concat(a)),this.$viewModeField=$("#".concat(s)),this.updateLimitFields(),this.addListener(this.$maintainHierarchyButton,"change","updateLimitFields"),this.allowMultipleSources?this.$sourcesField.find("[type=checkbox]").each(function(t,e){this.addListener($(e),"change","updateMaintainHierarchyField")}.bind(this)):this.addListener(this.$sourceSelect,"change","updateMaintainHierarchyField"),this.updateMaintainHierarchyField()},updateLimitFields:function(){!this.$maintainHierarchyField.hasClass("hidden")&&this.$maintainHierarchyButton.hasClass("on")?(this.$minRelationsField.addClass("hidden"),this.$maxRelationsField.addClass("hidden"),this.$branchLimitField.removeClass("hidden"),this.$viewModeField.addClass("hidden")):(this.$branchLimitField.addClass("hidden"),this.$minRelationsField.removeClass("hidden"),this.$maxRelationsField.removeClass("hidden"),this.$viewModeField.removeClass("hidden"))},updateMaintainHierarchyField:function(){var t;if(this.allowMultipleSources){var e=this.$sourcesField.find('[type="checkbox"]:checked');t=1===e.length&&e.data("structure-id")}else t=this.$sourceSelect.children("option:selected").data("structure-id");t?this.$maintainHierarchyField.removeClass("hidden"):this.$maintainHierarchyField.addClass("hidden"),this.updateLimitFields()}})},3663:function(){Craft.ElementTableSorter=Garnish.DragSort.extend({tableView:null,_helperMargin:null,_$firstRowCells:null,_$titleHelperCell:null,_titleHelperCellOuterWidth:null,_ancestors:null,_updateAncestorsFrame:null,_draggeeLevel:null,_draggeeLevelDelta:null,draggingLastElements:null,_loadingDraggeeLevelDelta:!1,_targetLevel:null,_targetLevelBounds:null,_positionChanged:null,init:function(t,e,n){this.tableView=t,this._helperMargin=this.tableView.elementIndex.actions?40:0,n=$.extend({},Craft.ElementTableSorter.defaults,n,{handle:".move",collapseDraggees:!0,singleHelper:!0,helperSpacingY:2,magnetStrength:4,helper:this.getHelper.bind(this),helperLagBase:1.5,axis:Garnish.Y_AXIS}),this.base(e,n)},findDraggee:function(){var t=this;this._draggeeLevel=this._targetLevel=this._level(this.$targetItem),this._draggeeLevelDelta=0;for(var e=$(this.$targetItem),n=this.$targetItem.next();n.length;){var i=this._level(n);if(i<=this._draggeeLevel)break;var r=i-this._draggeeLevel;r>this._draggeeLevelDelta&&(this._draggeeLevelDelta=r),e=e.add(n),n=n.next()}if(this.draggingLastElements=!n.length,this.settings.maxLevels&&this.draggingLastElements&&this.tableView.getMorePending()){this._loadingDraggeeLevelDelta=!0;var a=this._getAjaxBaseData(this.$targetItem);Craft.sendActionRequest("POST","structures/get-element-level-delta",{data:a}).then((function(e){t._loadingDraggeeLevelDelta=!1,t.dragging&&(t._draggeeLevelDelta=e.data.delta,t.drag(!1))}))}return e},getHelper:function(t){var e=$('<div class="elements datatablesorthelper"/>').appendTo(Garnish.$bod),n=$('<div class="tableview"/>').appendTo(e),i=$('<table class="data"/>').appendTo(n),r=$("<tbody/>").appendTo(i);t.appendTo(r),this._$firstRowCells=this.tableView.$elementContainer.children("tr:first").children();for(var a=t.children(),s=0;s<a.length;s++){var o=$(a[s]);if(o.hasClass("checkbox-cell"))o.remove();else{var l=$(this._$firstRowCells[s]),c=l[0].getBoundingClientRect().width;l.css("width",c+"px"),o.css("width",c+"px"),Garnish.hasAttr(l,"data-titlecell")&&(this._$titleHelperCell=o,this._titleHelperCellOuterWidth=c,o.children("div").css("padding-".concat(Craft.left),"24px"))}}return e},canInsertBefore:function(t){return!this._loadingDraggeeLevelDelta&&!1!==this._getLevelBounds(t.prev(),t)},canInsertAfter:function(t){return!this._loadingDraggeeLevelDelta&&!1!==this._getLevelBounds(t,t.next())},onDragStart:function(){this._ancestors=this._getAncestors(this.$targetItem,this._level(this.$targetItem)),this._setTargetLevelBounds(),this.tableView.maybeLoadMore(),this.base()},onDrag:function(){this.base(),this._updateIndent()},onInsertionPointChange:function(){this._setTargetLevelBounds(),this._updateAncestorsBeforeRepaint(),this.base()},onDragStop:function(){var t=this;if(this._positionChanged=!1,this.base(),this._targetLevel!=this._draggeeLevel){for(var e=this._targetLevel-this._draggeeLevel,n=0;n<this.$draggee.length;n++){var i=$(this.$draggee[n]),r=this._level(i)+e,a=24+this._getLevelIndent(r),s=i.find("[data-text-alternative]"),o=Craft.t("app","Level {num}",{num:r});i.data("level",r),i.find(".element").data("level",r),i.find("> [data-titlecell]:first > div").css("padding-".concat(Craft.left),a),s.text(o)}this._positionChanged=!0}if(this._positionChanged&&this.settings.structureId){for(var l,c=this._getAjaxBaseData(this.$draggee),h=this.$draggee.first().prev();h.length;){var u=this._level(h);if(u==this._targetLevel){c.prevId=h.data("id");break}if(u<this._targetLevel){c.parentId=h.data("id");var d=h.find("> th .toggle");d.hasClass("expanded")||(d.addClass("expanded"),l=this.tableView._createSpinnerRowAfter(h),this.tableView.elementSelect&&this.tableView.elementSelect.removeItems(this.$targetItem),this.removeItems(this.$targetItem),this.$targetItem.remove(),this.tableView._totalVisible--);break}h=h.prev()}Craft.sendActionRequest("POST","structures/move-element",{data:c}).then((function(e){Craft.cp.displaySuccess(Craft.t("app","New position saved.")),t.onPositionChange(),l&&l.parent().length&&(l.remove(),t.tableView._expandElement($toggle,!0)),Craft.cp.runQueue()})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app","A server error occurred.")),t.tableView.elementIndex.updateElements()}))}},onSortChange:function(){this.tableView.elementSelect&&this.tableView.elementSelect.resetItemOrder(),this._positionChanged=!0,this.base()},onPositionChange:function(){var t=this;Garnish.requestAnimationFrame((function(){t.trigger("positionChange"),t.settings.onPositionChange()}))},onReturnHelpersToDraggees:function(){if(this._$firstRowCells.css("width",""),this.draggingLastElements&&this.tableView.getMorePending()){this.tableView._totalVisible+=this.newDraggeeIndexes[0]-this.oldDraggeeIndexes[0];var t=this.$draggee.last().nextAll();t.length&&(this.removeItems(t),t.remove(),this.tableView.maybeLoadMore())}this.base()},_getLevelBounds:function(t,e){if(e&&e.length?this._getLevelBounds._minLevel=this._level(e):this._getLevelBounds._minLevel=1,t&&t.length?this._getLevelBounds._maxLevel=this._level(t)+1:this._getLevelBounds._maxLevel=1,this.settings.maxLevels){if(1!=this._getLevelBounds._minLevel&&this._getLevelBounds._minLevel+this._draggeeLevelDelta>this.settings.maxLevels)return!1;this._getLevelBounds._maxLevel+this._draggeeLevelDelta>this.settings.maxLevels&&(this._getLevelBounds._maxLevel=this.settings.maxLevels-this._draggeeLevelDelta,this._getLevelBounds._maxLevel<this._getLevelBounds._minLevel&&(this._getLevelBounds._maxLevel=this._getLevelBounds._minLevel))}return{min:this._getLevelBounds._minLevel,max:this._getLevelBounds._maxLevel}},_setTargetLevelBounds:function(){this._targetLevelBounds=this._getLevelBounds(this.$draggee.first().prev(),this.$draggee.last().next())},_updateIndent:function(t){this._updateIndent._mouseDist=this.realMouseX-this.mousedownX,"rtl"===Craft.orientation&&(this._updateIndent._mouseDist*=-1),this._updateIndent._indentationDist=Math.round(this._updateIndent._mouseDist/Craft.ElementTableSorter.LEVEL_INDENT),this._updateIndent._targetLevel=this._draggeeLevel+this._updateIndent._indentationDist,this._updateIndent._targetLevel<this._targetLevelBounds.min?(this._updateIndent._indentationDist+=this._targetLevelBounds.min-this._updateIndent._targetLevel,this._updateIndent._targetLevel=this._targetLevelBounds.min):this._updateIndent._targetLevel>this._targetLevelBounds.max&&(this._updateIndent._indentationDist-=this._updateIndent._targetLevel-this._targetLevelBounds.max,this._updateIndent._targetLevel=this._targetLevelBounds.max),this._targetLevel!==(this._targetLevel=this._updateIndent._targetLevel)&&this._updateAncestorsBeforeRepaint(),this._updateIndent._targetLevelMouseDiff=this._updateIndent._mouseDist-this._updateIndent._indentationDist*Craft.ElementTableSorter.LEVEL_INDENT,this._updateIndent._magnetImpact=Math.round(this._updateIndent._targetLevelMouseDiff/15),Math.abs(this._updateIndent._magnetImpact)>Craft.ElementTableSorter.MAX_GIVE&&(this._updateIndent._magnetImpact=(this._updateIndent._magnetImpact>0?1:-1)*Craft.ElementTableSorter.MAX_GIVE),this._updateIndent._closestLevelMagnetIndent=this._getLevelIndent(this._targetLevel)+this._updateIndent._magnetImpact,this.helpers[0].css("margin-".concat(Craft.left),this._updateIndent._closestLevelMagnetIndent+this._helperMargin),this._$titleHelperCell.css("width",this._titleHelperCellOuterWidth-this._updateIndent._closestLevelMagnetIndent)},_getLevelIndent:function(t){return(t-1)*Craft.ElementTableSorter.LEVEL_INDENT},_getAjaxBaseData:function(t){return{structureId:this.settings.structureId,elementId:t.data("id"),siteId:t.find(".element:first").data("site-id")}},_getAncestors:function(t,e){if(this._getAncestors._ancestors=[],0!=e)for(this._getAncestors._level=e,this._getAncestors._$prevRow=t.prev();this._getAncestors._$prevRow.length&&!(this._level(this._getAncestors._$prevRow)<this._getAncestors._level&&(this._getAncestors._ancestors.unshift(this._getAncestors._$prevRow),this._getAncestors._level=this._level(this._getAncestors._$prevRow),0==this._getAncestors._level));)this._getAncestors._$prevRow=this._getAncestors._$prevRow.prev();return this._getAncestors._ancestors},_level:function(t){return t.data("level")||1},_updateAncestorsBeforeRepaint:function(){this._updateAncestorsFrame&&Garnish.cancelAnimationFrame(this._updateAncestorsFrame),this._updateAncestorsFrame=Garnish.requestAnimationFrame(this._updateAncestors.bind(this))},_updateAncestors:function(){for(this._updateAncestorsFrame=null,this._updateAncestors._i=0;this._updateAncestors._i<this._ancestors.length;this._updateAncestors._i++)this._updateAncestors._$ancestor=this._ancestors[this._updateAncestors._i],this._updateAncestors._$ancestor.data("descendants",this._updateAncestors._$ancestor.data("descendants")-1),0==this._updateAncestors._$ancestor.data("descendants")&&this._updateAncestors._$ancestor.find("> th .toggle:first").remove();for(this._updateAncestors._newAncestors=this._getAncestors(this.$targetItem,this._targetLevel),this._updateAncestors._i=0;this._updateAncestors._i<this._updateAncestors._newAncestors.length;this._updateAncestors._i++)if(this._updateAncestors._$ancestor=this._updateAncestors._newAncestors[this._updateAncestors._i],this._updateAncestors._$ancestor.data("descendants",this._updateAncestors._$ancestor.data("descendants")+1),1==this._updateAncestors._$ancestor.data("descendants")){var t=this._updateAncestors._$ancestor.data("title");$('<button class="toggle expanded" type="button" aria-expanded="true" title="'+Craft.t("app","Show/hide children")+'" aria-label="'+Craft.t("app","Show {title} children",{title:t})+'"></button>').insertAfter(this._updateAncestors._$ancestor.find("> th .move:first"))}this._ancestors=this._updateAncestors._newAncestors,delete this._updateAncestors._i,delete this._updateAncestors._$ancestor,delete this._updateAncestors._newAncestors}},{HELPER_MARGIN:0,LEVEL_INDENT:48,MAX_GIVE:22,defaults:{structureId:null,maxLevels:1,onPositionChange:$.noop}})},8895:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.ElementThumbLoader=Garnish.Base.extend({queue:null,workers:[],init:function(){this.queue=[];for(var t=0;t<3;t++)this.workers.push(new Craft.ElementThumbLoader.Worker(this))},load:function(t){for(var e=this,n=t.find(".thumb[data-sizes]"),i=function(){var t=n.eq(r);if(t.is(":visible"))e.addToQueue(t[0]);else{var i="thumb"+Math.floor(1e6*Math.random());Craft.ElementThumbLoader.invisibleThumbs[i]=[e,t],Garnish.$doc.on("scroll.".concat(i),{$thumb:t,key:i},(function(n){t&&(delete Craft.ElementThumbLoader.invisibleThumbs[n.data.key],e.addToQueue(n.data.$thumb[0]))}))}},r=0;r<n.length;r++)i()},addToQueue:function(t){this.queue.push(t);for(var e=0;e<this.workers.length;e++)this.workers[e].active||this.workers[e].loadNext()},destroy:function(){for(var t=0;t<this.workers.length;t++)this.workers[t].destroy();this.base()}},{invisibleThumbs:{},retryAll:function(){for(var e in Craft.ElementThumbLoader.invisibleThumbs){var n=(a=Craft.ElementThumbLoader.invisibleThumbs[e],s=2,function(t){if(Array.isArray(t))return t}(a)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(a,s)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(a,s)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=n[0],r=n[1];delete Craft.ElementThumbLoader.invisibleThumbs[e],i.load(r.parent())}var a,s}}),Craft.ElementThumbLoader.Worker=Garnish.Base.extend({loader:null,active:!1,container:null,_interval:null,_timeout:null,init:function(t){this.loader=t},activate:function(){var t=this;this.active||(this.active=!0,this.clearInterval(),this._interval=setInterval((function(){t.loadNextIfRemoved()}),500))},deactivate:function(){this.active&&(this.active=!1,this.clearInterval(),this.clearTimeout())},clearInterval:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){this._interval&&(clearInterval(this._interval),this._interval=null)})),clearTimeout:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){this._timeout&&(clearTimeout(this._timeout),this._timeout=null)})),loadNext:function(){var t=this;if(this.clearTimeout(),this.container=this.loader.queue.shift(),void 0!==this.container){if(!this.loadNextIfRemoved()){var e=$(this.container);if(e.find("img").length)this.loadNext();else{this.activate(),this._timeout=setTimeout((function(){t.loadNext()}),3e4);var n=$("<img/>",{sizes:e.attr("data-sizes"),srcset:e.attr("data-srcset"),alt:e.attr("data-alt")||""});this.addListener(n,"load,abort,error","loadNext"),n.appendTo(e),picturefill({elements:[n[0]]})}}}else this.deactivate()},loadNextIfRemoved:function(){return!(!this.container||document.body.contains(this.container)||(this.loadNext(),0))}})},4233:function(){Craft.ElevatedSessionForm=Garnish.Base.extend({$form:null,inputs:null,init:function(t,e){if(this.$form=$(t),void 0!==e){this.inputs=[],e=$.makeArray(e);for(var n=0;n<e.length;n++)for(var i=$(e[n]),r=0;r<i.length;r++){var a=i.eq(r);this.inputs.push({input:a,val:Garnish.getInputPostVal(a)})}}this.addListener(this.$form,"submit","handleFormSubmit")},handleFormSubmit:function(t){if(Craft.elevatedSessionManager.fetchingTimeout)return t.preventDefault(),void t.stopImmediatePropagation();if(this.inputs){for(var e,n=!1,i=0;i<this.inputs.length;i++)if((e=this.inputs[i].input).data("passwordInput")&&(e=e.data("passwordInput").$currentInput),Garnish.getInputPostVal(e)!==this.inputs[i].val){n=!0;break}if(!n)return}t.preventDefault(),t.stopImmediatePropagation(),Craft.elevatedSessionManager.requireElevatedSession(this.submitForm.bind(this))},submitForm:function(){this.disable(),this.$form.trigger("submit"),this.enable()}})},1402:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.EntryIndex=Craft.BaseElementIndex.extend({publishableSections:null,$newEntryBtnGroup:null,$newEntryBtn:null,init:function(t,e,n){this.publishableSections=[],this.on("selectSource",this.updateButton.bind(this)),this.on("selectSite",this.updateButton.bind(this)),this.base(t,e,n)},afterInit:function(){var t=this.$sources.toArray().map((function(t){return $(t).data("handle")})).filter((function(t){return!!t}));this.publishableSections=Craft.publishableSections.filter((function(e){return t.includes(e.handle)})),this.base()},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSectionHandle){if("singles"===defaultSectionHandle)return"singles";for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("handle")===defaultSectionHandle)return e.data("key")}}return this.base()},updateButton:function(){var e=this;if(this.$source){var n,i;if("singles"===this.$source.data("key")?n="singles":(n=this.$source.data("handle"),i=this.$source.data("entry-type")),this.publishableSections.length){this.$newEntryBtnGroup&&this.$newEntryBtnGroup.remove();var r,a=this.publishableSections.find((function(t){return t.handle===n}));this.$newEntryBtnGroup=$('<div class="btngroup submit" data-wrapper/>');var s="new-entry-menu-"+Craft.randomString(10);if(a){var o="index"===this.settings.context?Craft.t("app","New {type}",{type:Craft.t("app","entry")}):Craft.t("app","New {section} entry",{section:a.name}),l="index"===this.settings.context?Craft.t("app","New entry in the {section} section",{section:a.name}):o,c="index"===this.settings.context?"link":null;this.$newEntryBtn=Craft.ui.createButton({label:o,ariaLabel:l,spinner:!0,role:c}).addClass("submit add icon").appendTo(this.$newEntryBtnGroup),this.addListener(this.$newEntryBtn,"click mousedown",(function(t){if("index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)){var n={};i&&(n.type=i),window.open(Craft.getUrl("entries/".concat(a.handle,"/new"),n))}else"click"===t.type&&e._createEntry(a.id,i)})),this.publishableSections.length>1&&(r=$("<button/>",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":s,"data-disclosure-trigger":"","aria-label":Craft.t("app","New entry, choose a section")}).appendTo(this.$newEntryBtnGroup))}else this.$newEntryBtn=r=Craft.ui.createButton({label:Craft.t("app","New {type}",{type:Craft.t("app","entry")}),ariaLabel:Craft.t("app","New entry, choose a section"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",s).attr("data-disclosure-trigger","").appendTo(this.$newEntryBtnGroup);if(this.addButton(this.$newEntryBtnGroup),r){var h,u=$("<div/>",{id:s,class:"menu menu--disclosure"}).appendTo(this.$newEntryBtnGroup),d=$("<ul/>").appendTo(u),f=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.publishableSections);try{var p=function(){var t=h.value,n="index"===e.settings.context?"link":"button";if("index"===e.settings.context&&-1!==$.inArray(e.siteId,t.sites)||"index"!==e.settings.context&&t!==a){var i=$("<li/>").appendTo(d),s=$("<a/>",{role:"button"===n?"button":null,href:Craft.getUrl("entries/".concat(t.handle,"/new")),type:"button"===n?"button":null,text:Craft.t("app","New {section} entry",{section:t.name})}).appendTo(i);e.addListener(s,"activate",(function(){r.data("trigger").hide(),e._createEntry(t.id)})),"button"===n&&e.addListener(s,"keydown",(function(n){n.keyCode===Garnish.SPACE_KEY&&(n.preventDefault(),r.data("trigger").hide(),e._createEntry(t.id))}))}};for(f.s();!(h=f.n()).done;)p()}catch(t){f.e(t)}finally{f.f()}new Garnish.DisclosureMenu(r)}}if("index"===this.settings.context){var g="entries";n&&(g+="/"+n),Craft.setPath(g)}}},_createEntry:function(t,e){var n=this;if(this.$newEntryBtn.hasClass("loading"))console.warn("New entry creation already in progress.");else{var i=this.publishableSections.find((function(e){return e.id===t}));if(!i)throw"Invalid section ID: ".concat(t);this.$newEntryBtn.addClass("loading"),Craft.sendActionRequest("POST","entries/create",{data:{siteId:this.siteId,section:i.handle,type:e}}).then((function(t){var e=t.data;"index"===n.settings.context?document.location.href=Craft.getUrl(e.cpEditUrl,{fresh:1}):Craft.createElementEditor(n.elementType,{siteId:n.siteId,elementId:e.entry.id,draftId:e.entry.draftId,params:{fresh:1}}).on("submit",(function(){n.clearSearch(),n.setSelectedSortAttribute("dateCreated","desc"),n.selectElementAfterUpdate(e.entry.id),n.updateElements()}))})).finally((function(){n.$newEntryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Entry",Craft.EntryIndex)},8201:function(){function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function _iterableToArrayLimit(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _regeneratorRuntime(){"use strict";_regeneratorRuntime=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var $={};c($,s,(function(){return this}));var C=Object.getPrototypeOf,w=C&&C(C(P([])));w&&w!==n&&i.call(w,s)&&($=w);var _=y.prototype=v.prototype=Object.create($);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==_typeof(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(_typeof(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function asyncGeneratorStep(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function _asyncToGenerator(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){asyncGeneratorStep(a,i,r,s,o,"next",t)}function o(t){asyncGeneratorStep(a,i,r,s,o,"throw",t)}s(void 0)}))}}Craft.FieldLayoutDesigner=Garnish.Base.extend({$container:null,$innerContainer:null,$configInput:null,$tabContainer:null,$newTabBtn:null,$libraryContainer:null,$selectedLibrary:null,$fieldLibrary:null,$uiLibrary:null,$uiLibraryElements:null,$fieldSearch:null,$clearFieldSearchBtn:null,$fieldGroups:null,$fields:null,$createFieldBtn:null,tabGrid:null,elementDrag:null,_config:null,_$selectedFields:null,init:function(t,e){var n=this;this.$container=$(t),this.setSettings(e,Craft.FieldLayoutDesigner.defaults),this.$configInput=this.$container.children("input[data-config-input]"),this._config=JSON.parse(this.$configInput.val()),this._config.tabs||(this._config.tabs=[]),this._fieldHandles={},this.$innerContainer=this.$container.children(".fld-container");var i=this.$innerContainer.children(".fld-workspace");this.$tabContainer=i.children(".fld-tabs"),this.$newTabBtn=i.children(".fld-new-tab-btn"),this.$libraryContainer=this.$innerContainer.children(".fld-library"),this.$fieldLibrary=this.$selectedLibrary=this.$libraryContainer.children(".fld-field-library");var r=this.$fieldLibrary.children(".search");this.$fieldSearch=r.children("input"),this.$clearFieldSearchBtn=r.children(".clear"),this.$fieldGroups=this.$libraryContainer.find(".fld-field-group"),this.$fields=this.$fieldGroups.children(".fld-element"),this.$uiLibrary=this.$libraryContainer.children(".fld-ui-library"),this.$uiLibraryElements=this.$uiLibrary.children(),this.tabGrid=new Craft.Grid(this.$tabContainer,{itemSelector:".fld-tab",minColWidth:264,fillMode:"grid",snapToGrid:24});for(var a=this.$tabContainer.children(),s=0;s<a.length;s++)this.initTab($(a[s]));if(this.elementDrag=new Craft.FieldLayoutDesigner.ElementDrag(this),this.initLibraryElements(this.$libraryContainer.find(".fld-element")),this.settings.customizableTabs&&(this.tabDrag=new Craft.FieldLayoutDesigner.TabDrag(this),this.addListener(this.$newTabBtn,"activate","addTab")),this.settings.customizableUi){var o=this.$libraryContainer.children(".btngroup");new Craft.Listbox(o,{onChange:function(t){switch(t.data("library")){case"field":n.$fieldLibrary.removeClass("hidden"),n.$uiLibrary.addClass("hidden"),n.$createFieldBtn.removeClass("hidden");break;case"ui":n.$fieldLibrary.addClass("hidden"),n.$uiLibrary.removeClass("hidden"),n.$createFieldBtn.addClass("hidden")}}})}this.addListener(this.$fieldSearch,"input",(function(){n.updateFieldSearchResults()})),this.addListener(this.$fieldSearch,"keydown",(function(t){switch(t.keyCode){case Garnish.ESC_KEY:n.$fieldSearch.val("").trigger("input");break;case Garnish.RETURN_KEY:t.preventDefault()}})),this.addListener(this.$clearFieldSearchBtn,"click",(function(){n.$fieldSearch.val("").trigger("input")})),this.refreshSelectedFields(),this.$createFieldBtn=Craft.ui.createButton({label:Craft.t("app","New field"),class:"mt-m fullwidth add icon dashed"}).appendTo(this.$libraryContainer),this.addListener(this.$createFieldBtn,"activate",_asyncToGenerator(_regeneratorRuntime().mark((function t(){return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n.createField();case 1:case"end":return t.stop()}}),t)}))))},updateFieldSearchResults:function(){var t=this.$fieldSearch.val().toLowerCase().replace(/['"]/g,"");if(!t)return this.$fieldLibrary.find(".filtered").removeClass("filtered"),void this.$clearFieldSearchBtn.addClass("hidden");this.$clearFieldSearchBtn.removeClass("hidden");var e=this.$fields.filter('[data-keywords*="'.concat(t,'"]')).add(this.$fieldGroups.filter('[data-name*="'.concat(t,'"]')).children(".fld-element")).removeClass("filtered");this.$fields.not(e).addClass("filtered");for(var n=0;n<this.$fieldGroups.length;n++){var i=this.$fieldGroups.eq(n);i.find(".fld-element:not(.hidden):not(.filtered)").length?i.removeClass("filtered"):i.addClass("filtered")}},initTab:function(t){return new Craft.FieldLayoutDesigner.Tab(this,t)},removeFieldByHandle:function(t){this.$fields.filter('[data-attribute="'.concat(t,'"]:first')).removeClass("hidden").closest(".fld-field-group").removeClass("hidden")},addTab:function(){if(this.settings.customizableTabs){var t="";0===this.tabGrid.$items.length&&(t=Craft.t("app","Content"));var e=Craft.escapeHtml(prompt(Craft.t("app","Give your tab a name."),t));if(e){var n="menu-".concat(Math.floor(1e6*Math.random())),i=$('\n<div class="fld-tab">\n  <div class="tabs">\n    <div class="tab sel draggable">\n      <span>'.concat(e,'</span>\n    </div>\n  </div>\n  <div class="fld-tabcontent">\n    <button class="btn add icon dashed fullwidth fld-add-btn" type="button" aria-controls="').concat(n,'">\n      ').concat(Craft.t("app","Add"),'\n    </button>\n    <div id="').concat(n,'" class="menu menu--disclosure fld-library-menu"></div>\n  </div>\n</div>\n')),r=this.$tabContainer.children(".fld-tab:last");r.length?i.insertAfter(r):i.prependTo(this.$tabContainer),this.tabGrid.addItems(i),this.tabDrag.addItems(i),this.initTab(i).updatePositionInConfig()}}},get config(){return this._config},set config(t){this._config=t,this.$configInput.val(JSON.stringify(t))},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},refreshSelectedFields:function(){this._$selectedFields=this.$tabContainer.find(".fld-field")},refreshLibraryFields:function(){this.$fields=this.$fieldGroups.children(".fld-element");for(var t=0;t<this.$fieldGroups.length;t++){var e=this.$fieldGroups.eq(t);e.children(".fld-element").sort((function(t,e){return $(t).data("ui-label")>$(e).data("ui-label")?1:-1})).appendTo(e)}this.updateFieldSearchResults()},hasHandle:function(t){for(var e=0;e<this._$selectedFields.length;e++){var n=this._$selectedFields.eq(e).data("fld-element");if(t===(n.config.handle||n.attribute))return!0}return!1},createField:function(){var t=this;new Craft.CpScreenSlideout("fields/edit-field").on("submit",function(){var e=_asyncToGenerator(_regeneratorRuntime().mark((function e(n){var i,r,a,s,o;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=n.response,r=$(i.data.selectorHtml),t.$fieldGroups.last().append(r).removeClass("hidden"),t.refreshLibraryFields(),t.initLibraryElements(r),a=designer.$tabContainer.find(".fld-field[data-id=".concat(t.fieldId,"]")),s=0;s<a.length;s++)null===(o=a.eq(s).data("fld-element"))||void 0===o||o.refresh();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},initLibraryElements:function(t){var e=this;this.elementDrag.addItems(t),this.addListener(t,"activate",(function(t){var n=e.$libraryContainer.parent();if(n.is(".fld-library-menu")){var i=n.data("disclosureMenu"),r=$(t.currentTarget),a=e.cloneLibraryElementForSelection(r),s=i.$trigger.closest(".fld-tab").data("fld-tab");a.insertBefore(i.$trigger),s.initElement(a).updatePositionInConfig(),e.tabGrid.refreshCols(!0),i.hide()}}))},cloneLibraryElementForSelection:function(t){var e=t.clone().removeClass("unused");return Garnish.hasAttr(t,"data-is-multi-instance")||(t.css({visibility:"inherit",display:"field"}).addClass("hidden"),0===t.siblings(".fld-field:not(.hidden)").length&&t.closest(".fld-field-group").addClass("hidden")),this.elementDrag.addItems(e),e}},{defaults:{elementType:null,customizableTabs:!0,customizableUi:!0},createSlideout:function createSlideout(data,js){return _asyncToGenerator(_regeneratorRuntime().mark((function _callee3(){var $body,$footer,$cancelBtn,$contents,slideout;return _regeneratorRuntime().wrap((function _callee3$(_context3){for(;;)switch(_context3.prev=_context3.next){case 0:if($body=$("<div/>",{class:"fld-element-settings-body"}),$("<div/>",{class:"fields",html:data.settingsHtml}).appendTo($body),$footer=$("<div/>",{class:"fld-element-settings-footer"}),$("<div/>",{class:"flex-grow"}).appendTo($footer),$cancelBtn=Craft.ui.createButton({label:Craft.t("app","Close"),spinner:!0}).appendTo($footer),Craft.ui.createSubmitButton({class:"secondary",label:Craft.t("app","Apply"),spinner:!0}).appendTo($footer),$contents=$body.add($footer),slideout=new Craft.Slideout($contents,{containerElement:"form",containerAttributes:{action:"",method:"post",novalidate:"",class:"fld-element-settings"}}),slideout.on("open",(function(){Garnish.requestAnimationFrame((function(){slideout.$container.find(".text:first").trigger("focus")}))})),$cancelBtn.on("click",(function(){slideout.close()})),!data.headHtml){_context3.next=13;break}return _context3.next=13,Craft.appendHeadHtml(data.headHtml);case 13:if(!data.bodyHtml){_context3.next=16;break}return _context3.next=16,Craft.appendBodyHtml(data.bodyHtml);case 16:return js&&eval(js),Craft.initUiElements(slideout.$container),_context3.abrupt("return",slideout);case 19:case"end":return _context3.stop()}}),_callee3)})))()}}),Craft.FieldLayoutDesigner.Tab=Garnish.Base.extend({designer:null,uid:null,$container:null,$addBtn:null,slideout:null,destroyed:!1,init:function(t,e){var n=this;this.designer=t,this.$container=e,this.$container.data("fld-tab",this),this.uid=this.$container.data("uid"),this.uid||(this.uid=Craft.uuid(),this.config={uid:this.uid,name:this.$container.find(".tabs .tab span").text(),elements:[]}),this.designer.settings.customizableTabs&&this.createMenu();var i=this.$container.children(".fld-tabcontent");this.$addBtn=i.children(".fld-add-btn");var r=this.$addBtn.disclosureMenu({position:"below"}).data("disclosureMenu");r.on("beforeShow",(function(){n.designer.$libraryContainer.appendTo(r.$container)})),r.on("hide",(function(){n.designer.$libraryContainer.appendTo(n.designer.$innerContainer)}));for(var a=i.children().not(this.$addBtn),s=0;s<a.length;s++)this.initElement($(a[s]))},createMenu:function(){var t=this,e=this.$container.find(".tabs .tab"),n="actionmenu".concat(Math.floor(1e6*Math.random())),i=$("<button/>",{type:"button",class:"btn action-btn","data-disclosure-trigger":"true","aria-controls":n,"aria-haspopup":"true","aria-label":Craft.t("app","Actions"),title:Craft.t("app","Actions")}).appendTo(e),r=($("<div/>",{id:n,class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(e),i.disclosureMenu().data("disclosureMenu"));r.addItem({label:Craft.t("app","Settings"),icon:"gear",onActivate:function(){t.createSettings()}},r.addGroup());var a=r.addGroup(),s=r.addItem({label:"ltr"===Craft.orientation?Craft.t("app","Move to the left"):Craft.t("app","Move to the right"),icon:"ltr"===Craft.orientation?"arrow-left":"arrow-right",onActivate:function(){t.moveLeft()}},a),o=r.addItem({label:"ltr"===Craft.orientation?Craft.t("app","Move to the right"):Craft.t("app","Move to the left"),icon:"ltr"===Craft.orientation?"arrow-right":"arrow-left",onActivate:function(){t.moveRight()}},a);r.addItem({label:Craft.t("app","Remove"),icon:"xmark",destructive:!0,onActivate:function(){t.destroy()}},r.addGroup()),r.on("show",(function(){r.toggleItem(s,t.$container.prev(".fld-tab").length),r.toggleItem(o,t.$container.next(".fld-tab").length)}))},createSettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n,i,r;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Craft.sendActionRequest("POST","fields/render-layout-component-settings",{data:{uid:t.uid,layoutConfig:t.designer.config,elementType:t.designer.settings.elementType}});case 3:i=e.sent,n=i.data,e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),Craft.cp.displayError(null===e.t0||void 0===e.t0||null===(r=e.t0.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.message),e.t0;case 11:return t.settingsNamespace=n.namespace,e.next=14,Craft.FieldLayoutDesigner.createSlideout(n);case 14:t.slideout=e.sent,t.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()})),t.slideout.on("close",(function(){t.slideout.destroy(),t.slideout=null}));case 17:case"end":return e.stop()}}),e,null,[[0,7]])})))()},applySettings:function(){var t=this;if(this.slideout.$container.find('[name$="[name]"]').val()){var e=this.slideout.$container.find("button[type=submit]").addClass("loading"),n=$.extend({},this.config);delete n.elements,Craft.sendActionRequest("POST","fields/apply-layout-tab-settings",{data:{uid:this.uid,layoutConfig:this.designer.config,elementType:this.designer.settings.elementType,config:n,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.updateConfig((function(t){return $.extend(e.data.config,{elements:t.elements})}));var n=t.$container.find(".tabs .tab"),i=n.children("button").detach();n.html(e.data.labelHtml).append(i),t.slideout.close()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.slideout.close()}))}else Craft.cp.displayError(Craft.t("app","You must specify a tab name."))},moveLeft:function(){var t=this.$container.prev(".fld-tab");t.length&&(this.$container.insertBefore(t),this.updatePositionInConfig())},moveRight:function(){var t=this.$container.next(".fld-tab");t.length&&(this.$container.insertAfter(t),this.updatePositionInConfig())},initElement:function(t){return new Craft.FieldLayoutDesigner.Element(this,t)},get index(){var t=this;return this.designer.config.tabs.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.designer.config.tabs.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid,elements:[]},this.config=e),e},set config(t){if(!this.destroyed){t.name&&t.name!==this.config.name&&this.$container.find(".tabs .tab span").text(t.name);var e=this.designer.config,n=this.index;if(-1!==n)e.tabs[n]=t;else{var i=$.inArray(this.$container[0],this.$container.parent().children(".fld-tab"));e.tabs.splice(i,0,t)}this.designer.config=e}},updateConfig:function(t){if(!this.destroyed){var e=t(this.config);!1!==e&&(this.config=e)}},updatePositionInConfig:function(){var t=this;this.destroyed||this.designer.updateConfig((function(e){var n=t.config,i=t.index,r=$.inArray(t.$container[0],t.$container.parent().children(".fld-tab"));return-1!==i&&e.tabs.splice(i,1),e.tabs.splice(r,0,n),e}))},destroy:function(){var t=this;if(!this.destroyed){this.destroyed=!0,this.designer.updateConfig((function(e){var n=t.index;return-1!==n&&(e.tabs.splice(n,1),e)}));for(var e=this.$container.find(".fld-element"),n=0;n<e.length;n++)e.eq(n).data("fld-element").destroy();this.designer.tabGrid.removeItems(this.$container),this.designer.tabDrag.removeItems(this.$container),this.$container.remove(),this.designer.refreshSelectedFields(),this.base()}}}),Craft.FieldLayoutDesigner.Element=Garnish.Base.extend({tab:null,$container:null,uid:null,isMandatory:!1,isMultiInstance:null,isField:!1,attribute:null,requirable:!1,thumbable:!1,previewable:!1,hasCustomWidth:!1,hasSettings:!1,settingsNamespace:null,slideout:null,defaultHandle:null,fieldId:null,fieldsWithErrors:null,init:function(t,e){this.tab=t,this.$container=e,this.uid=e.data("uid"),this.fieldId=e.data("id"),this.fieldsWithErrors=[];var n=!this.uid;if(n&&(this.uid=Craft.uuid(),this.config=$.extend(e.data("config"),{uid:this.uid})),this.initUi(),n&&this.isField){for(var i=this.defaultHandle,r=1;this.tab.designer.hasHandle(i);)r++,i=this.defaultHandle+r;i!==this.defaultHandle&&(this.config=$.extend({},this.config,{handle:i}),e.find(".fld-attribute-label").text(i)),this.tab.designer.refreshSelectedFields()}e.attr("data-keywords",null)},initUi:function(){var t=this;this.$container.data("fld-element",this),this.isMandatory=Garnish.hasAttr(this.$container,"data-mandatory"),this.isField=this.$container.hasClass("fld-field"),this.isMultiInstance=Garnish.hasAttr(this.$container,"data-is-multi-instance"),this.isField&&(this.requirable=Garnish.hasAttr(this.$container,"data-requirable"),this.thumbable=Garnish.hasAttr(this.$container,"data-thumbable"),this.previewable=Garnish.hasAttr(this.$container,"data-previewable"),this.attribute=this.$container.data("attribute"),this.defaultHandle=this.$container.data("default-handle")),this.hasCustomWidth=this.tab.designer.settings.customizableUi&&Garnish.hasAttr(this.$container,"data-has-custom-width"),this.hasCustomWidth&&new Craft.SlidePicker(this.config.width||100,{min:25,max:100,step:25,valueLabel:function(t){return Craft.t("app","{pct} width",{pct:"".concat(t,"%")})},onChange:function(e){t.updateConfig((function(t){return t.width=e,t}))}}).$container.appendTo(this.$container);var e="actionmenu".concat(Math.floor(1e6*Math.random())),n=$("<button/>",{type:"button",class:"btn action-btn","data-disclosure-trigger":"true","aria-controls":e,"aria-haspopup":"true","aria-label":Craft.t("app","Actions"),title:Craft.t("app","Actions")}).appendTo(this.$container);$("<div/>",{id:e,class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(this.$container);var i,r,a,s,o,l,c=n.disclosureMenu().data("disclosureMenu");if(this.hasSettings=Garnish.hasAttr(this.$container,"data-has-settings"),this.hasSettings&&(c.addItem({label:Craft.t("app","Settings"),icon:"gear",onActivate:function(){t.createSettings()}}),this.addListener(this.$container,"dblclick",(function(){t.createSettings()}))),this.fieldId&&c.addItem({label:Craft.t("app","Edit field"),icon:"pencil",onActivate:function(){t.showFieldEditor()}}),this.requirable||this.thumbable||this.previewable){var h=c.addGroup();this.requirable&&(i=c.addItem({label:Craft.t("app","Make required"),icon:"asterisk",iconColor:"rose",onActivate:function(){t.makeRequired()}},h),r=c.addItem({label:Craft.t("app","Make optional"),icon:"asterisk-slash",iconColor:"gray",onActivate:function(){t.dropRequired()}},h)),this.thumbable&&(a=c.addItem({label:Craft.t("app","Use for element thumbnails"),icon:"image",iconColor:"violet",onActivate:function(){t.makeThumbnail()}},h),s=c.addItem({label:Craft.t("app","Don’t use for element thumbnails"),icon:"image-slash",iconColor:"gray",onActivate:function(){t.dropThumbnail()}},h)),this.previewable&&(o=c.addItem({label:Craft.t("app","Show in element cards"),icon:"eye",iconColor:"blue",onActivate:function(){t.showInCards()}},h),l=c.addItem({label:Craft.t("app","Don’t show in element cards"),icon:"eye-slash",iconColor:"gray",onActivate:function(){t.omitFromCards()}},h))}var u=c.addGroup(),d=c.addItem({label:Craft.t("app","Move up"),icon:"arrow-up",onActivate:function(){t.moveUp()}},u),f=c.addItem({label:Craft.t("app","Move down"),icon:"arrow-down",onActivate:function(){t.moveDown()}},u);this.isMandatory||c.addItem({label:Craft.t("app","Remove"),icon:"xmark",destructive:!0,onActivate:function(){t.destroy()}},c.addGroup()),c.on("show",(function(){t.requirable&&(c.toggleItem(i,!t.config.required),c.toggleItem(r,t.config.required)),t.thumbable&&(c.toggleItem(a,!t.config.providesThumbs),c.toggleItem(s,t.config.providesThumbs)),t.previewable&&(c.toggleItem(o,!t.config.includeInCards),c.toggleItem(l,t.config.includeInCards)),c.toggleItem(d,t.$container.prev(".fld-element").length),c.toggleItem(f,t.$container.next(".fld-element").length)}))},createSettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n,i,r,a;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Craft.sendActionRequest("POST","fields/render-layout-component-settings",{data:{uid:t.uid,layoutConfig:t.tab.designer.config,elementType:t.tab.designer.settings.elementType}});case 3:i=e.sent,n=i.data,e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),Craft.cp.displayError(null===e.t0||void 0===e.t0||null===(r=e.t0.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.message),e.t0;case 11:return t.settingsNamespace=n.namespace,e.next=14,Craft.FieldLayoutDesigner.createSlideout(n);case 14:t.slideout=e.sent,t.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()})),t.slideout.on("close",(function(){t.slideout.destroy(),t.slideout=null})),a=t.slideout.$container.find(".fields:first"),t.isField&&a.find('input[name$="[handle]"]').val(t.config.handle||""),t.trigger("createSettings");case 20:case"end":return e.stop()}}),e,null,[[0,7]])})))()},applySettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.slideout.$container.find("button[type=submit]").addClass("loading"),e.prev=1,e.next=4,t.applyConfig((function(){return t.config}),!0);case 4:return e.prev=4,n.removeClass("loading"),e.finish(4);case 7:case"end":return e.stop()}}),e,null,[[1,,4,7]])})))()},showFieldEditor:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:new Craft.CpScreenSlideout("fields/edit-field",{params:{fieldId:t.fieldId,multiInstanceTypesOnly:t.isMultiInstance?1:0}}).on("submit",function(){var e=_asyncToGenerator(_regeneratorRuntime().mark((function e(n){var i,r,a,s,o,l,c;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=n.response,r=t.tab.designer,a=r.$fieldLibrary.find(".fld-field[data-id=".concat(t.fieldId,"]")),s=$(i.data.selectorHtml),a.replaceWith(s),r.refreshLibraryFields(),r.elementDrag.removeItems(a),r.elementDrag.addItems(s),o=r.$tabContainer.find(".fld-field[data-id=".concat(t.fieldId,"]")),l=0;l<o.length;l++)null===(c=o.eq(l).data("fld-element"))||void 0===c||c.refresh();case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 2:case"end":return e.stop()}}),e)})))()},makeRequired:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.required=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},dropRequired:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.required=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},makeThumbnail:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.providesThumbs=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},dropThumbnail:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.providesThumbs=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},showInCards:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.includeInCards=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},omitFromCards:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.includeInCards=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},moveUp:function(){var t=this.$container.prev(".fld-element");t.length&&(this.$container.insertBefore(t),this.updatePositionInConfig())},moveDown:function(){var t=this.$container.next(".fld-element");t.length&&(this.$container.insertAfter(t),this.updatePositionInConfig())},applyConfig:function(t){var e=arguments,n=this;return _asyncToGenerator(_regeneratorRuntime().mark((function i(){var r,a,s,o,l,c,h,u,d,f,p,g,m,v;return _regeneratorRuntime().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(r=e.length>1&&void 0!==e[1]&&e[1],!1!==(a=t(n.config))){i.next=4;break}return i.abrupt("return");case 4:return n.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)})),i.prev=5,i.next=8,Craft.sendActionRequest("POST","fields/apply-layout-element-settings",{data:{uid:n.uid,layoutConfig:n.tab.designer.config,elementType:n.tab.designer.settings.elementType,config:a,settingsNamespace:n.settingsNamespace,settings:r?n.slideout.$container.serialize():null}});case 8:o=i.sent,s=o.data,i.next=18;break;case 12:throw i.prev=12,i.t0=i.catch(5),(h=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.errors)&&Object.entries(h).forEach((function(t){var e=_slicedToArray(t,2),i=e[0],r=e[1],a=n.slideout.$container.find('[data-error-key="'.concat(i,'"]'));a&&(Craft.ui.addErrorsToField(a,r),n.fieldsWithErrors.push(a))})),Craft.cp.displayError(null===i.t0||void 0===i.t0||null===(c=i.t0.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.message),i.t0;case 18:if(n.config=s.config,u=n.$container,d=$(s.selectorHtml),n.$container.replaceWith(d),n.$container=d,n.initUi(),(f=n.tab.designer).refreshSelectedFields(),f.elementDrag.removeItems(u),f.elementDrag.addItems(d),f.tabGrid.refreshCols(!0),n.slideout&&(n.slideout.close(),n.slideout.destroy(),n.slideout=null),n.config.providesThumbs)for(p=n.tab.designer.$tabContainer.find(".fld-field"),g=0;g<p.length;g++)m=p.eq(g),(v=m.data("fld-element"))&&v!==n&&v.config.providesThumbs&&v.applyConfig((function(t){return t.providesThumbs=!1,t}));case 31:case"end":return i.stop()}}),i,null,[[5,12]])})))()},refresh:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t}));case 2:case"end":return e.stop()}}),e)})))()},get index(){var t=this,e=this.tab.config;return void 0===e?-1:e.elements.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.tab.config.elements.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid},this.config=e),e},set config(t){var e=this.tab.config,n=this.index;if(-1!==n)e.elements[n]=t;else{var i=$.inArray(this.$container[0],this.$container.parent().children(".fld-element"));e.elements.splice(i,0,t)}this.tab.config=e},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},updatePositionInConfig:function(){var t=this;this.tab.updateConfig((function(e){var n=t.config,i=t.index,r=$.inArray(t.$container[0],t.$container.parent().children(".fld-element"));return-1!==i&&e.elements.splice(i,1),e.elements.splice(r,0,n),e}))},destroy:function(){var t=this;this.tab.updateConfig((function(e){var n=t.index;return-1!==n&&(e.elements.splice(n,1),e)})),this.tab.designer.elementDrag.removeItems(this.$container),this.$container.remove(),this.isField&&(this.tab.designer.refreshSelectedFields(),this.isMultiInstance||this.tab.designer.removeFieldByHandle(this.defaultHandle)),this.base()}}),Craft.FieldLayoutDesigner.BaseDrag=Garnish.Drag.extend({designer:null,$insertion:null,showingInsertion:!1,$caboose:null,init:function(t,e){this.designer=t,this.base(this.findItems(),e)},onDragStart:function(){this.base(),this.$insertion=this.createInsertion(),this.$caboose=this.createCaboose(),this.$items=$().add(this.$items.add(this.$caboose)),Garnish.$bod.addClass("dragging")},removeCaboose:function(){this.$items=this.$items.not(this.$caboose),this.$caboose.remove()},swapDraggeeWithInsertion:function(){this.$insertion.insertBefore(this.$draggee),this.$draggee.detach(),this.$items=$().add(this.$items.not(this.$draggee).add(this.$insertion)),this.showingInsertion=!0},swapInsertionWithDraggee:function(){this.$insertion.replaceWith(this.$draggee),this.$items=$().add(this.$items.not(this.$insertion).add(this.$draggee)),this.showingInsertion=!1},setMidpoints:function(){for(var t=0;t<this.$items.length;t++){var e=$(this.$items[t]),n=e.offset();e.hasClass("unused")||e.data("midpoint",{left:n.left+e.outerWidth()/2,top:n.top+e.outerHeight()/2})}},getClosestItem:function(){for(this.getClosestItem._closestItem=null,this.getClosestItem._closestItemMouseDiff=null,this.getClosestItem._i=0;this.getClosestItem._i<this.$items.length;this.getClosestItem._i++)this.getClosestItem._$item=$(this.$items[this.getClosestItem._i]),this.getClosestItem._midpoint=this.getClosestItem._$item.data("midpoint"),this.getClosestItem._midpoint&&(this.getClosestItem._mouseDiff=Garnish.getDist(this.getClosestItem._midpoint.left,this.getClosestItem._midpoint.top,this.mouseX,this.mouseY),(null===this.getClosestItem._closestItem||this.getClosestItem._mouseDiff<this.getClosestItem._closestItemMouseDiff)&&(this.getClosestItem._closestItem=this.getClosestItem._$item[0],this.getClosestItem._closestItemMouseDiff=this.getClosestItem._mouseDiff));return this.getClosestItem._closestItem},checkForNewClosestItem:function(){this.checkForNewClosestItem._closestItem=this.getClosestItem(),this.checkForNewClosestItem._closestItem!==this.$insertion[0]&&(this.showingInsertion&&$.inArray(this.$insertion[0],this.$items)<$.inArray(this.checkForNewClosestItem._closestItem,this.$items)&&-1===$.inArray(this.checkForNewClosestItem._closestItem,this.$caboose)?this.$insertion.insertAfter(this.checkForNewClosestItem._closestItem):this.$insertion.insertBefore(this.checkForNewClosestItem._closestItem),this.designer.tabGrid.$items.length>0&&(this.$items=$().add(this.$items.add(this.$insertion)),this.showingInsertion=!0,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()))},onDragStop:function(){var t=this;this.showingInsertion&&this.swapInsertionWithDraggee(),this.removeCaboose(),this.designer.tabGrid.refreshCols(!0);var e=this.$draggee.offset();!e||0===e.top&&0===e.left?(this.$draggee.css({display:this.draggeeDisplay,visibility:"visible",opacity:0}).velocity({opacity:1},Garnish.FX_DURATION),this.helpers[0].velocity({opacity:0},Garnish.FX_DURATION,(function(){t._showDraggee()}))):this.returnHelpersToDraggees(),this.base(),Garnish.$bod.removeClass("dragging")}}),Craft.FieldLayoutDesigner.TabDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({init:function(t){this.base(t,{handle:".tab"})},findItems:function(){return this.designer.$tabContainer.find("> div.fld-tab")},onDragStart:function(){this.base(),this.swapDraggeeWithInsertion(),this.setMidpoints()},swapDraggeeWithInsertion:function(){this.base(),this.designer.tabGrid.removeItems(this.$draggee),this.designer.tabGrid.addItems(this.$insertion)},swapInsertionWithDraggee:function(){this.base(),this.designer.tabGrid.removeItems(this.$insertion),this.designer.tabGrid.addItems(this.$draggee)},onDrag:function(){this.checkForNewClosestItem(),this.base()},onDragStop:function(){this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:"hidden"}),this.$draggee.data("fld-tab").updatePositionInConfig()},createCaboose:function(){var t=$('<div class="fld-tab fld-tab-caboose"/>').appendTo(this.designer.$tabContainer);return this.designer.tabGrid.addItems(t),t},removeCaboose:function(){this.base(),this.designer.tabGrid.removeItems(this.$caboose)},createInsertion:function(){var t=this.$draggee.find(".tab");return $('\n<div class="fld-tab fld-insertion" style="height: '.concat(this.$draggee.height(),'px;">\n  <div class="tabs"><div class="tab sel draggable" style="width: ').concat(t.outerWidth(),"px; height: ").concat(t.outerHeight()+2,'px;"></div></div>\n  <div class="fld-tabcontent" style="height: ').concat(this.$draggee.find(".fld-tabcontent").height()-2,'px;"></div>\n</div>\n'))}}),Craft.FieldLayoutDesigner.ElementDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({draggingLibraryElement:!1,draggingField:!1,draggingMultiInstanceElement:!1,originalTab:null,onDragStart:function(){this.base(),this.draggingLibraryElement=this.$draggee.hasClass("unused"),this.draggingField=this.$draggee.hasClass("fld-field"),this.draggingMultiInstanceElement=Garnish.hasAttr(this.$draggee,"data-is-multi-instance"),this.draggingLibraryElement&&this.draggingMultiInstanceElement&&this.$draggee.css({display:this.draggeeDisplay,visibility:"visible"}),this.draggingLibraryElement?this.originalTab=null:(this.originalTab=this.$draggee.closest(".fld-tab").data("fld-tab"),this.swapDraggeeWithInsertion()),this.setMidpoints()},onDrag:function(){this.isDraggeeMandatory()||this.isHoveringOverTab()?this.checkForNewClosestItem():this.showingInsertion&&(this.$insertion.remove(),this.$items=$().add(this.$items.not(this.$insertion)),this.showingInsertion=!1,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()),this.base()},isDraggeeMandatory:function(){return Garnish.hasAttr(this.$draggee,"data-mandatory")},isHoveringOverTab:function(){for(var t=0;t<this.designer.tabGrid.$items.length;t++)if(Garnish.hitTest(this.mouseX,this.mouseY,this.designer.tabGrid.$items.eq(t)))return!0;return!1},findItems:function(){return this.designer.$tabContainer.find(".fld-element")},createCaboose:function(){for(var t=$(),e=this.designer.$tabContainer.find("> .fld-tab > .fld-tabcontent"),n=0;n<e.length;n++)t=t.add($("<div/>").insertBefore(e.eq(n).children(".fld-add-btn")));return t},createInsertion:function(){return $('<div class="fld-element fld-insertion" style="height: '.concat(this.$draggee.outerHeight(),'px;"/>'))},onDragStop:function(){var t=this.showingInsertion;if(t)this.draggingLibraryElement&&(this.$draggee=this.designer.cloneLibraryElementForSelection(this.$draggee));else if(!this.draggingLibraryElement){var e=this.draggingField?this.designer.$fields.filter('[data-attribute="'.concat(this.$draggee.data("attribute"),'"]:first')):this.designer.$uiLibraryElements.filter('[data-type="'.concat(this.$draggee.data("type"),'"]:first'));this.draggingField&&(e.removeClass("hidden"),e.closest(".fld-field-group").removeClass("hidden")),this.$draggee.data("fld-element").destroy(),this.$draggee=e}if(this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:this.draggingField||t?"hidden":"visible"}),t){var n,i=this.$draggee.closest(".fld-tab").data("fld-tab");if(this.draggingLibraryElement)n=i.initElement(this.$draggee);else if(n=this.$draggee.data("fld-element"),i!==this.originalTab){var r=n.config;this.originalTab.updateConfig((function(t){var e=n.index;return-1!==e&&(t.elements.splice(e,1),t)})),this.$draggee.data("fld-element").tab=i,n.config=r}n.updatePositionInConfig()}}})},3347:function(){Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(t){switch(this.$toggle=$(t),this.$toggle.data("fieldtoggle")&&(console.warn("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"===this.type||"fieldset"===this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),this.type){case"link":this.addListener(this.$toggle,"click","onToggleChange");break;case"fieldset":this.addListener(this.$toggle.find("input"),"change","onToggleChange");break;default:this.addListener(this.$toggle,"change","onToggleChange"),this.onToggleChange()}},normalizeTargetSelector:function(t){return t&&!t.match(/^[#\.]/)&&(t="#"+t),t},getType:function(){var t=this.$toggle.prop("nodeName");if("INPUT"===t&&"checkbox"===this.$toggle.attr("type")||"checkbox"===this.$toggle.attr("role")||"switch"===this.$toggle.attr("role"))return"checkbox";switch(t){case"SELECT":return Garnish.hasAttr(this.$toggle,"data-boolean-menu")?"booleanMenu":"select";case"A":return"link";default:return"fieldset"}},findTargets:function(){"select"===this.type||"fieldset"===this.type?this._$target=$(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal())):(this.targetSelector&&(this._$target=$(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=$(this.reverseTargetSelector)))},getToggleVal:function(){switch(this.type){case"checkbox":return void 0!==this.$toggle.prop("checked")?this.$toggle.prop("checked"):"true"===this.$toggle.attr("aria-checked");case"booleanMenu":var t=this.$toggle.data("boolean");if(void 0!==t)return t;var e=this.$toggle.val();return e&&"0"!==e;default:var n;return null==(n="fieldset"===this.type?this.$toggle.find("input:checked:first").val():Garnish.getInputPostVal(this.$toggle))?null:n.replace(/[^\w]+/g,"-")}},onToggleChange:function(){"select"===this.type||"fieldset"===this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):(this.findTargets(),"link"===this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(t){var e=this;if(t&&t.length){if(this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),"select"!==this.type&&"fieldset"!==this.type){"link"===this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded"));for(var n=0;n<t.length;n++)!function(t){"SPAN"!==t.prop("nodeName")&&(t.height("auto"),e.showTarget._targetHeight=t.height(),t.css({height:e.showTarget._currentHeight,overflow:"hidden"}),t.velocity("stop"),t.velocity({height:e.showTarget._targetHeight},"fast",(function(){t.css({height:"",overflow:""})})))}(t.eq(n));delete this.showTarget._targetHeight}delete this.showTarget._currentHeight,Garnish.$win.trigger("resize")}},hideTarget:function(t){if(t&&t.length)if("select"===this.type||"fieldset"===this.type)t.addClass("hidden");else{"link"===this.type&&(this.$toggle.removeClass("expanded"),this.$toggle.addClass("collapsed"));for(var e=0;e<t.length;e++)!function(t){t.hasClass("hidden")||("SPAN"===t.prop("nodeName")?t.addClass("hidden"):(t.css("overflow","hidden"),t.velocity("stop"),t.velocity({height:0},"fast",(function(){t.addClass("hidden")}))))}(t.eq(e))}},destroy:function(){this.$toggle.removeData("fieldtoggle"),this.base()}})},7606:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.FormObserver=Garnish.Base.extend({$container:null,_callback:null,_pauseLevel:0,_timeout:null,_recentKeypress:!1,_formData:null,_mutationObserver:null,_selectizeInputs:null,get isActive(){return 0===this._pauseLevel},init:function(e,n){var i=this;this.$container=$(e),this._callback=n,this._serialize(),this.addListener(this.$container,"change,input,keypress,keyup",(function(t){i.isActive&&(["keypress","keyup"].includes(t.type)&&(i._recentKeypress=!0),i._checkFormAfterDelay())})),this._mutationObserver=new MutationObserver((function(e){var n,r=t(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;i.isActive&&i._formChanged(a)&&i._checkFormAfterDelay();var s,o=t(a.addedNodes);try{for(o.s();!(s=o.n()).done;){var l=s.value;l instanceof Element&&i._initSelectizeInputs(l)}}catch(t){o.e(t)}finally{o.f()}"class"===a.attributeName&&a.target instanceof Element&&a.target.classList.contains("selectized")&&i._initSelectizeInput(a.target)}}catch(t){r.e(t)}finally{r.f()}})),this._mutationObserver.observe(this.$container[0],{childList:!0,subtree:!0,characterData:!0,attributeFilter:["name","value","disabled","class"]}),this._initSelectizeInputs(this.$container[0])},_formChanged:function(t){switch(t.type){case"childList":return"TEXTAREA"===t.target.nodeName&&t.target.hasAttribute("name")||this._hasNamedNodes(t.addedNodes)||this._hasNamedNodes(t.removedNodes);case"attributes":switch(t.attributeName){case"name":return!t.target.disabled;case"value":return t.target.hasAttribute("name")&&!t.target.disabled;case"disabled":return t.target.hasAttribute("name")}case"characterData":return t.target.parentNode instanceof Element&&t.target.parentNode.hasAttribute("name");default:return!1}},_initSelectizeInputs:function(e){if(e.classList.contains("selectized"))this._initSelectizeInput(e);else{var n,i=t(e.querySelectorAll(".selectized"));try{for(i.s();!(n=i.n()).done;){var r=n.value;this._initSelectizeInput(r)}}catch(t){i.e(t)}finally{i.f()}}},_initSelectizeInput:function(t){var e=this;this.removeAllListeners(t),this.addListener(t,"selectizedropdownopen",(function(){e.pause()})),this.addListener(t,"selectizedropdownclose",(function(){setTimeout((function(){e.resume()}),100)}))},_hasNamedNodes:function(e){var n,i=t(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r instanceof Element&&(r.hasAttribute("name")||r.querySelectorAll("[name]").length))return!0}}catch(t){i.e(t)}finally{i.f()}return!1},_checkFormAfterDelay:function(){var t=this;clearTimeout(this._timeout),this._timeout=setTimeout((function(){t.checkForm()}),this._recentKeypress?1e3:100)},checkForm:function(){clearTimeout(this._timeout),this._recentKeypress=!1,this._formData!==this._serialize()&&this._callback(this._formData)},_serialize:function(){return"FORM"===this.$container[0].nodeName?this._formData=this.$container.serialize():this._formData=$("<form/>").append(this.$container.clone()).serialize(),this._formData},pause:function(){this._pauseLevel++},resume:function(){if(0===this._pauseLevel)throw"Craft.FormObserver::resume() should only be called after pause().";this._pauseLevel--,this.isActive&&this.checkForm()},destroy:function(){this._mutationObserver.disconnect(),delete this._mutationObserver,this.base()}})},9478:function(){Craft.Grid=Garnish.Base.extend({$container:null,$items:null,items:null,totalCols:null,colGutterDrop:null,colPctWidth:null,possibleItemColspans:null,possibleItemPositionsByColspan:null,itemPositions:null,itemColspansByPosition:null,layouts:null,layout:null,itemHeights:null,leftPadding:null,_refreshingCols:!1,_refreshColsAfterRefresh:!1,_forceRefreshColsAfterRefresh:!1,init:function(t,e){var n=this;this.$container=$(t),this.$container.data("grid")&&(console.warn("Double-instantiating a grid on an element"),this.$container.data("grid").destroy()),this.$container.data("grid",this),this.setSettings(e,Craft.Grid.defaults),this.handleContainerHeightProxy=function(){n.refreshCols(!1,!0)},this.$items=this.$container.children(this.settings.itemSelector),this.setItems(),this.refreshCols(!0,!1),Garnish.$doc.ready((function(){n.refreshCols(!1,!1)}))},addItems:function(t){this.$items=$().add(this.$items.add(t)),this.setItems(),this.refreshCols(!0,!0)},removeItems:function(t){this.$items=$().add(this.$items.not(t)),this.setItems(),this.refreshCols(!0,!0)},resetItemOrder:function(){this.$items=$().add(this.$items),this.setItems(),this.refreshCols(!0,!0)},setItems:function(){for(this.setItems._={},this.items=[],this.setItems._.i=0;this.setItems._.i<this.$items.length;this.setItems._.i++)this.items.push($(this.$items[this.setItems._.i]));delete this.setItems._},refreshCols:function(t){if(this._refreshingCols)return this._refreshColsAfterRefresh=!0,void(t&&(this._forceRefreshColsAfterRefresh=!0));if(this._refreshingCols=!0,this.items.length)if(this.refreshCols._={},this.refreshCols._.oldHeight=this.$container[0].style.height,this.$container[0].style.height=1,this.refreshCols._.scrollHeight=this.$container[0].scrollHeight,this.$container[0].style.height=this.refreshCols._.oldHeight,0!==this.refreshCols._.scrollHeight)if(this.settings.cols?this.refreshCols._.totalCols=this.settings.cols:(this.refreshCols._.totalCols=Math.floor(this.$container.width()/this.settings.minColWidth),null!==this.totalCols&&this.refreshCols._.totalCols>this.totalCols&&(this.refreshCols._.totalCols=Math.floor((this.$container.width()-20)/this.settings.minColWidth)),this.settings.maxCols&&this.refreshCols._.totalCols>this.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0===this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),!0===t||this.totalCols!==this.refreshCols._.totalCols||this.settings.snapToGrid){if(this.totalCols=this.refreshCols._.totalCols,this.colGutterDrop=this.settings.gutter*(this.totalCols-1)/this.totalCols,this.removeListener(this.$container,"resize"),"grid"===this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndex<this.items.length;){for(this.refreshCols._.tallestItemHeight=-1,this.refreshCols._.colIndex=0,this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.i<this.refreshCols._.itemIndex+this.totalCols&&this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.refreshCols._.itemHeight=this.items[this.refreshCols._.i].height("auto").height(),this.refreshCols._.itemHeight>this.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.i<this.refreshCols._.itemIndex+this.totalCols&&this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.items[this.refreshCols._.i].height(this.refreshCols._.tallestItemHeight);this.refreshCols._.itemIndex+=this.totalCols}else if(this.removeListener(this.$items,"resize"),1===this.totalCols)this.$container.height("auto"),this.$items.show().css({position:"relative",width:"auto",top:0}).css(Craft.left,0);else{for(this.$items.css("position","absolute"),this.colPctWidth=100/this.totalCols,this.layouts=[],this.itemPositions=[],this.itemColspansByPosition=[],this.possibleItemColspans=[],this.possibleItemPositionsByColspan=[],this.itemHeightsByColspan=[],this.refreshCols._.item=0;this.refreshCols._.item<this.items.length;this.refreshCols._.item++)for(this.possibleItemColspans[this.refreshCols._.item]=[],this.possibleItemPositionsByColspan[this.refreshCols._.item]={},this.itemHeightsByColspan[this.refreshCols._.item]={},this.refreshCols._.$item=this.items[this.refreshCols._.item].show(),this.refreshCols._.positionRight="right"===this.refreshCols._.$item.data("position"),this.refreshCols._.positionLeft="left"===this.refreshCols._.$item.data("position"),this.refreshCols._.minColspan=this.refreshCols._.$item.data("colspan")?this.refreshCols._.$item.data("colspan"):this.refreshCols._.$item.data("min-colspan")?this.refreshCols._.$item.data("min-colspan"):1,this.refreshCols._.maxColspan=this.refreshCols._.$item.data("colspan")?this.refreshCols._.$item.data("colspan"):this.refreshCols._.$item.data("max-colspan")?this.refreshCols._.$item.data("max-colspan"):this.totalCols,this.refreshCols._.minColspan>this.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidthCss(this.refreshCols._.colspan)),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i<this.totalCols;this.refreshCols._.i++)this.refreshCols._.colHeights.push(0);for(this.createLayouts(0,[],[],this.refreshCols._.colHeights,0),this.refreshCols._.layoutTotalCols=[],this.refreshCols._.i=0;this.refreshCols._.i<this.layouts.length;this.refreshCols._.i++)for(this.refreshCols._.layoutTotalCols[this.refreshCols._.i]=0,this.refreshCols._.j=0;this.refreshCols._.j<this.totalCols;this.refreshCols._.j++)this.layouts[this.refreshCols._.i].colHeights[this.refreshCols._.j]&&this.refreshCols._.layoutTotalCols[this.refreshCols._.i]++;for(this.refreshCols._.highestTotalCols=Math.max.apply(null,this.refreshCols._.layoutTotalCols),this.refreshCols._.i=this.layouts.length-1;this.refreshCols._.i>=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!==this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i<this.layouts.length;this.refreshCols._.i++)this.refreshCols._.layoutHeights.push(Math.max.apply(null,this.layouts[this.refreshCols._.i].colHeights));for(this.refreshCols._.shortestHeight=Math.min.apply(null,this.refreshCols._.layoutHeights),this.refreshCols._.shortestLayouts=[],this.refreshCols._.emptySpaces=[],this.refreshCols._.i=0;this.refreshCols._.i<this.refreshCols._.layoutHeights.length;this.refreshCols._.i++)if(this.refreshCols._.layoutHeights[this.refreshCols._.i]===this.refreshCols._.shortestHeight){for(this.refreshCols._.shortestLayouts.push(this.layouts[this.refreshCols._.i]),this.refreshCols._.emptySpace=this.layouts[this.refreshCols._.i].emptySpace,this.refreshCols._.j=0;this.refreshCols._.j<this.totalCols;this.refreshCols._.j++)this.refreshCols._.emptySpace+=this.refreshCols._.shortestHeight-this.layouts[this.refreshCols._.i].colHeights[this.refreshCols._.j];this.refreshCols._.emptySpaces.push(this.refreshCols._.emptySpace)}for(this.layout=this.refreshCols._.shortestLayouts[$.inArray(Math.min.apply(null,this.refreshCols._.emptySpaces),this.refreshCols._.emptySpaces)],this.refreshCols._.i=0;this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.refreshCols._.css={width:this.getItemWidthCss(this.layout.colspans[this.refreshCols._.i])},this.refreshCols._.css[Craft.left]=this.getItemLeftPosCss(this.layout.positions[this.refreshCols._.i]),this.items[this.refreshCols._.i].css(this.refreshCols._.css);this.isSimpleLayout()?(this.$container.height("auto"),this.$items.css({position:"relative",top:0,"margin-bottom":this.settings.gutter+"px"})):(this.$items.css("position","absolute"),this.positionItems(),this.addListener(this.$items,"resize","onItemResize"))}this.completeRefreshCols(),this.addListener(this.$container,"resize",this.handleContainerHeightProxy),this.onRefreshCols()}else this.completeRefreshCols();else this.completeRefreshCols();else this.completeRefreshCols()},completeRefreshCols:function(){var t=this;if(void 0!==this.refreshCols._&&delete this.refreshCols._,this._refreshingCols=!1,this._refreshColsAfterRefresh){var e=this._forceRefreshColsAfterRefresh;this._refreshColsAfterRefresh=!1,this._forceRefreshColsAfterRefresh=!1,Garnish.requestAnimationFrame((function(){t.refreshCols(e)}))}},getItemWidth:function(t){return this.colPctWidth*t},getItemWidthCss:function(t){return"calc("+this.getItemWidth(t)+"% - "+this.colGutterDrop+"px)"},getItemWidthInPx:function(t){return this.getItemWidth(t)/100*this.$container.width()-this.colGutterDrop},getItemLeftPosCss:function(t){return"calc(("+this.getItemWidth(1)+"% + "+(this.settings.gutter-this.colGutterDrop)+"px) * "+t+")"},getItemLeftPosInPx:function(t){return(this.getItemWidth(1)/100*this.$container.width()+(this.settings.gutter-this.colGutterDrop))*t},createLayouts:function(t,e,n,i,r){new Craft.Grid.LayoutGenerator(this).createLayouts(t,e,n,i,r)},isSimpleLayout:function(){for(this.isSimpleLayout._={},this.isSimpleLayout._.i=0;this.isSimpleLayout._.i<this.layout.positions.length;this.isSimpleLayout._.i++)if(0!==this.layout.positions[this.isSimpleLayout._.i])return delete this.isSimpleLayout._,!1;return delete this.isSimpleLayout._,!0},positionItems:function(){for(this.positionItems._={},this.positionItems._.colHeights=[],this.positionItems._.i=0;this.positionItems._.i<this.totalCols;this.positionItems._.i++)this.positionItems._.colHeights.push(0);for(this.positionItems._.i=0;this.positionItems._.i<this.items.length;this.positionItems._.i++){for(this.positionItems._.endingCol=this.layout.positions[this.positionItems._.i]+this.layout.colspans[this.positionItems._.i]-1,this.positionItems._.affectedColHeights=[],this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.affectedColHeights.push(this.positionItems._.colHeights[this.positionItems._.col]);for(this.positionItems._.top=Math.max.apply(null,this.positionItems._.affectedColHeights),this.positionItems._.top>0&&(this.positionItems._.top+=this.settings.gutter),this.items[this.positionItems._.i].css("top",this.positionItems._.top),this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.colHeights[this.positionItems._.col]=this.positionItems._.top+this.itemHeightsByColspan[this.positionItems._.i][this.layout.colspans[this.positionItems._.i]]}this.$container.height(Math.max.apply(null,this.positionItems._.colHeights)),delete this.positionItems._},onItemResize:function(t){this.onItemResize._={},t.stopPropagation(),this.onItemResize._.item=$.inArray(t.currentTarget,this.$items),-1!==this.onItemResize._.item&&(this.onItemResize._.newHeight=this.items[this.onItemResize._.item].outerHeight(),this.onItemResize._.newHeight!==this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]&&(this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]=this.onItemResize._.newHeight,this.positionItems(!1))),delete this.onItemResize._},onRefreshCols:function(){this.trigger("refreshCols"),this.settings.onRefreshCols()},destroy:function(){this.$container.removeData("grid"),this.base()}},{defaults:{itemSelector:".item",cols:null,maxCols:null,minColWidth:320,gutter:14,fillMode:"top",colClass:"col",snapToGrid:null,onRefreshCols:$.noop}}),Craft.Grid.LayoutGenerator=Garnish.Base.extend({grid:null,_:null,init:function(t){this.grid=t},createLayouts:function(t,e,n,i,r){for(this._={},this._.c=0;this._.c<this.grid.possibleItemColspans[t].length;this._.c++){for(this._.colspan=this.grid.possibleItemColspans[t][this._.c],this._.tallestColHeightsByPosition=[],this._.p=0;this._.p<this.grid.possibleItemPositionsByColspan[t][this._.colspan].length;this._.p++){for(this._.position=this.grid.possibleItemPositionsByColspan[t][this._.colspan][this._.p],this._.colHeightsForPosition=[],this._.endingCol=this._.position+this._.colspan-1,this._.col=this._.position;this._.col<=this._.endingCol;this._.col++)this._.colHeightsForPosition.push(i[this._.col]);this._.tallestColHeightsByPosition[this._.p]=Math.max.apply(null,this._.colHeightsForPosition)}for(this._.p=$.inArray(Math.min.apply(null,this._.tallestColHeightsByPosition),this._.tallestColHeightsByPosition),this._.position=this.grid.possibleItemPositionsByColspan[t][this._.colspan][this._.p],this._.positions=e.slice(0),this._.colspans=n.slice(0),this._.colHeights=i.slice(0),this._.emptySpace=r,this._.positions.push(this._.position),this._.colspans.push(this._.colspan),this._.tallestColHeight=this._.tallestColHeightsByPosition[this._.p],this._.endingCol=this._.position+this._.colspan-1,this._.col=this._.position;this._.col<=this._.endingCol;this._.col++)this._.emptySpace+=this._.tallestColHeight-this._.colHeights[this._.col],this._.colHeights[this._.col]=this._.tallestColHeight+this.grid.itemHeightsByColspan[t][this._.colspan];t===this.grid.items.length-1?this.grid.layouts.push({positions:this._.positions,colspans:this._.colspans,colHeights:this._.colHeights,emptySpace:this._.emptySpace}):this.grid.createLayouts(t+1,this._.positions,this._.colspans,this._.colHeights,this._.emptySpace)}delete this._}})},2387:function(){Craft.HandleGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){var e=t.replace(/<(.*?)>/g,"");e=(e=e.replace(/['"‘’“”\[\]\(\)\{\}:]/g,"")).toLowerCase(),e=Craft.asciiString(e),this.settings.allowNonAlphaStart||(e=e.replace(/^[^a-z]+/,""));var n=Craft.filterArray(e.split(/[^a-z0-9]+/));if(e="","snake"===Craft.handleCasing)return n.join("_");for(var i=0;i<n.length;i++)"pascal"!==Craft.handleCasing&&0===i?e+=n[i]:e+=n[i].charAt(0).toUpperCase()+n[i].substring(1);return e}})},6607:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}Craft.IconPicker=Craft.BaseInputGenerator.extend({$container:null,$preview:null,$chooseBtn:null,$removeBtn:null,$input:null,modal:null,cancelToken:null,$searchInput:null,$iconListContainer:null,$iconList:null,defaultListHtml:null,init:function(t){var e=this;this.$container=$(t),this.$preview=this.$container.children(".icon-picker--icon"),this.$chooseBtn=this.$container.children(".icon-picker--choose-btn"),this.$removeBtn=this.$container.children(".icon-picker--remove-btn"),this.$input=this.$container.children("input"),this.addListener(this.$chooseBtn,"activate",(function(){e.showModal()})),this.addListener(this.$removeBtn,"activate",(function(){e.removeIcon()}))},showModal:function(){this.modal?this.modal.show():this.createModal()},createModal:function(){var t=this,e=$('<div class="modal icon-picker-modal"/>'),n=$('<div class="body"/>').appendTo(e),i=$('<div class="texticon"/>').appendTo(n);$('<span class="texticon-icon search icon" aria-hidden="true"/>').appendTo(i),this.$searchInput=Craft.ui.createTextInput({name:"search",class:"clearable",placeholder:Craft.t("app","Search")}).attr("aria-label",Craft.t("app","Search")).appendTo(i);var r=$("<button/>",{class:"clear-btn hidden",title:Craft.t("app","Clear search"),"aria-label":Craft.t("app","Clear search")}).appendTo(i);this.$iconListContainer=$('<div class="icon-picker-modal--list"/>').appendTo(n),this.$iconList=$('<ul tabindex="-1"/>').appendTo(this.$iconListContainer);var a=$('<div class="spinner spinner-absolute"/>').appendTo(this.$iconListContainer);$('<span class="visually-hidden"/>').text(Craft.t("app","Loading")).appendTo(a);var s=new Craft.FormObserver(i,(function(){t.updateIcons()}));this.addListener(this.$searchInput,"input,change",(function(){t.$searchInput.val()?r.removeClass("hidden"):r.addClass("hidden")})),this.addListener(r,"activate",(function(){t.$searchInput.val("").trigger("change"),s.checkForm()})),this.addListener(this.$iconList,"click",(function(e){var n;if("BUTTON"===e.target.nodeName)n=$(e.target);else if(!(n=$(e.target).closest("button")).length)return;t.selectIcon(n)})),this.modal=new Garnish.Modal(e),this.updateIcons()},updateIcons:function(){var t=this;return i(e().mark((function n(){var i;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.loadIcons();case 2:i=e.sent,t.$iconList.html(i);case 4:case"end":return e.stop()}}),n)})))()},loadIcons:function(){var t=this;return i(e().mark((function n(){var i,r,a;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.cancelToken&&t.cancelToken.cancel(),""!==(i=t.$searchInput.val())||null===t.defaultListHtml){e.next=4;break}return e.abrupt("return",t.defaultListHtml);case 4:return t.$iconListContainer.addClass("loading"),t.cancelToken=axios.CancelToken.source(),e.prev=6,e.next=9,Craft.sendActionRequest("POST","app/icon-picker-options",{data:{search:i},cancelToken:t.cancelToken.token});case 9:return r=e.sent,a=r.data.listHtml,""===i&&(t.defaultListHtml=a),e.abrupt("return",a);case 13:return e.prev=13,t.$iconListContainer.removeClass("loading"),t.cancelToken=null,e.finish(13);case 17:case"end":return e.stop()}}),n,null,[[6,,13,17]])})))()},selectIcon:function(t){this.modal.hide();var e=t.attr("title");this.$preview.html(t.html()).attr("title",e).attr("aria-label",e),this.$input.val(e),this.$chooseBtn.children(".label").text(Craft.t("app","Change")),this.$chooseBtn.trigger("focus"),this.$removeBtn.removeClass("hidden")},removeIcon:function(){this.$preview.html("").removeAttr("title").removeAttr("aria-label"),this.$input.val(""),this.$chooseBtn.children(".label").text(Craft.t("app","Choose")),this.$removeBtn.addClass("hidden")}})},7966:function(){Craft.ImageUpload=Garnish.Base.extend({$container:null,progressBar:null,uploader:null,init:function(t){this.setSettings(t,Craft.ImageUpload.defaults),this.$container=$(this.settings.containerSelector),this.initImageUpload()},initImageUpload:function(){this.progressBar=new Craft.ProgressBar($('<div class="progress-shade"></div>').appendTo(this.$container));var t={url:Craft.getActionUrl(this.settings.uploadAction),formData:this.settings.postParameters,fileInput:this.$container.find(this.settings.fileInputSelector),paramName:this.settings.uploadParamName};void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),t.events={},t.events.fileuploadstart=this._onUploadStart.bind(this),t.events.fileuploadprogressall=this._onUploadProgress.bind(this),t.events.fileuploaddone=this._onUploadComplete.bind(this),t.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(null,this.$container,t),this.initButtons()},initButtons:function(){var t=this;this.$container.find(this.settings.uploadButtonSelector).on("click",(function(e){t.$container.find(t.settings.fileInputSelector).trigger("click")})),this.$container.find(this.settings.deleteButtonSelector).on("click",(function(e){confirm(Craft.t("app","Are you sure you want to delete this image?"))&&($(e.currentTarget).parent().append('<div class="blocking-modal"></div>'),Craft.sendActionRequest("POST",t.settings.deleteAction,{data:t.settings.postParameters}).then((function(e){var n=e.data;t.refreshImage(n)})))}))},refreshImage:function(t){this.$container.replaceWith(this.$container=$(t.html)),this.settings.onAfterRefreshImage(t),Craft.cp.elementThumbLoader.load(this.$container),this.initImageUpload()},_onUploadStart:function(t){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=parseInt(e.loaded/e.total*100,10);this.progressBar.setProgressPercentage(n)},_onUploadComplete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.refreshImage(e.result),this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=i.response(),a=(null==r||null===(e=r.jqXHR)||void 0===e?void 0:e.responseJSON)||{},s=a.message,o=a.filename,l=a.errors,c=void 0===l?{}:l;o=o||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var h=c?Object.values(c).flat():[];s||(s=h.length?h.join("\n"):o?Craft.t("app","Upload failed for “{filename}”.",{filename:o}):Craft.t("app","Upload failed.")),Craft.cp.displayError(s),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")}},{defaults:{postParameters:{},uploadAction:"",deleteAction:"",fileInputSelector:"",onAfterRefreshImage:$.noop,containerSelector:null,uploadButtonSelector:null,deleteButtonSelector:null,uploadParamName:"files"}})},657:function(){Craft.InfoIcon=Garnish.Base.extend({$container:null,$icon:null,$liveRegion:null,content:null,hud:null,init:function(t){var e=this;if(this.$icon=$(t),this.$liveRegion=$("<span/>",{role:"status",class:"visually-hidden"}),this.$icon.data("infoicon")?(console.warn("Double-instantiating an info icon on an element"),this.content=this.$icon.data("infoicon").content,this.$icon.data("infoicon").destroy()):(this.content=this.$icon.html(),this.$icon.html("").attr({tabindex:0,role:"button",type:"button","aria-label":Craft.t("app","More info")}).wrap($("<span/>",{class:"infoicon-container"})),this.$container=this.$icon.parent(),this.$container.append(this.$liveRegion)),this.$icon.data("infoicon",this),this.$icon[0].previousSibling&&this.$icon[0].previousSibling.nodeType===Node.TEXT_NODE&&!this.$icon.parent().hasClass("nowrap")){var n=this.$icon[0].previousSibling.nodeValue.match(/[^\s\-]+\s*$/);n&&(this.$icon[0].previousSibling.nodeValue=this.$icon[0].previousSibling.nodeValue.substring(0,n.index),$("<span/>",{class:"nowrap",html:n[0].replace(/\s+$/,"")+" "}).insertAfter(this.$icon[0].previousSibling).append(this.$icon))}this.addListener(this.$icon,"click",(function(t){t.preventDefault(),t.stopPropagation(),e.showHud()})),this.addListener(this.$icon,"keydown",(function(t){e.hud&&e.hud.showing||![Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)||(t.preventDefault(),t.stopPropagation(),e.showHud())}))},showHud:function(t){var e=this;this.hud?this.hud.show():(this.hud=new Garnish.HUD(this.$icon,this.content,{hudClass:"hud info-hud",closeOtherHUDs:!1,onShow:function(){Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY,(function(){e.hud.hide()})),e.$liveRegion.html(""),setTimeout((function(){e.$liveRegion.html(e.content)}),200)},onHide:function(){e.$liveRegion.html("")}}),Craft.initUiElements(this.hud.$body))},destroy:function(){this.$icon.removeData("infoicon"),this.base()}})},4487:function(){Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:!1,indeterminate:!1,dragger:null,dragStartMargin:null,init:function(t,e){if(this.$outerContainer=$(t),this.$outerContainer.data("lightswitch")&&(console.warn("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(e,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),!this.$input.prop("disabled")){this.on=this.$outerContainer.hasClass("on"),this.indeterminate=this.$outerContainer.hasClass("indeterminate"),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)});var n=this.$outerContainer.parent(".lightswitch-inner-container");n.length&&(this.addListener(n.children('span[data-toggle="off"]'),"click",this.turnOff),this.addListener(n.children('span[data-toggle="on"]'),"click",this.turnOn))}},turnOn:function(t){var e=!this.on;if(this.on=!0,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,0);else{var n={};n["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(this.settings.value),this.$outerContainer.addClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","true"),e&&!0!==t&&this.onChange()},turnOff:function(t){var e=this.on||this.indeterminate;if(this.on=!1,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,this._getOffMargin());else{var n={};n["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","false"),e&&!0!==t&&this.onChange()},turnIndeterminate:function(t){var e=!this.indeterminate;this.on=!1,this.indeterminate=!0,this.$outerContainer.addClass("dragging");var n={};n["margin-"+Craft.left]=this._getOffMargin()/2,this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this)),this.$input.val(this.settings.indeterminateValue),this.$outerContainer.removeClass("on"),this.$outerContainer.addClass("indeterminate"),this.$outerContainer.attr("aria-checked","mixed"),e&&!0!==t&&this.onChange()},toggle:function(){this.indeterminate||!this.on?this.turnOn():this.turnOff()},onChange:function(){this.trigger("change"),this.settings.onChange(this.on),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(t){switch(t.keyCode){case Garnish.SPACE_KEY:this.toggle(),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?this.turnOn():this.turnOff(),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?this.turnOff():this.turnOn(),t.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var t;(t="ltr"===Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX)<this._getOffMargin()?t=this._getOffMargin():t>0&&(t=0),this.$innerContainer.css("margin-"+Craft.left,t)},_onDragStop:function(){this._getMargin()>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.$outerContainer.removeData("lightswitch"),this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-10:-12}},{animationDuration:100,defaults:{value:"1",indeterminateValue:"-",onChange:$.noop}})},6966:function(){Craft.Listbox=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,selectedOptionIndex:null,init:function(t,e){var n=this;this.$container=$(t),this.setSettings(e,Craft.Listbox.defaults),this.$container.data("listbox")&&(console.warn("Double-instantiating a listbox on an element"),this.$container.data("listbox").destroy()),this.$container.data("listbox",this),this.$options=this.$container.find("button,[role=option]"),this.$selectedOption=this.$options.filter("[aria-pressed=true],[aria-selected=true]").removeAttr("aria-selected").attr("aria-pressed","true"),this.$selectedOption.length?this.selectedOptionIndex=this.$options.index(this.$selectedOption):this.$selectedOption=null,this.addListener(this.$options,"click",(function(t){n.select(n.$options.index($(t.currentTarget))),t.preventDefault()}))},select:function(t){t<0||t>=this.$options.length||t===this.selectedOptionIndex||(this.$selectedOption&&this.$selectedOption.removeClass(this.settings.selectedClass).attr("aria-pressed","false"),this.$selectedOption=this.$options.eq(t).addClass(this.settings.selectedClass).attr("aria-pressed","true"),this.selectedOptionIndex=t,this.settings.onChange(this.$selectedOption,t),this.trigger("change",{$selectedOption:this.$selectedOption,selectedOptionIndex:t}))},disable:function(){this.base(),this.$container.attr("aria-disabled","true")},enable:function(){this.base(),this.$container.removeAttr("aria-disabled")},destroy:function(){this.$container.removeData("listbox"),this.base()}},{defaults:{selectedClass:"active",focusClass:"focus",onChange:$.noop}})},5080:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.LivePreview=Garnish.Base.extend({$extraFields:null,$trigger:null,$shade:null,$editorContainer:null,$editor:null,$dragHandle:null,$previewContainer:null,$iframeContainer:null,$iframe:null,$fieldPlaceholder:null,previewUrl:null,token:null,basePostData:null,inPreviewMode:!1,fields:null,lastPostData:null,updateIframeInterval:null,loading:!1,checkAgain:!1,dragger:null,dragStartEditorWidth:null,_slideInOnIframeLoad:!1,_scrollX:null,_scrollY:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){var e=this;this.setSettings(t,Craft.LivePreview.defaults),this.settings.previewUrl?this.previewUrl=this.settings.previewUrl:this.previewUrl=Craft.baseSiteUrl.replace(/\/+$/,"")+"/","https:"===document.location.protocol&&(this.previewUrl=this.previewUrl.replace(/^http:/,"https:")),this.basePostData=$.extend({},this.settings.previewParams),this.$extraFields=$(this.settings.extraFields),this.$trigger=$(this.settings.trigger),this.$fieldPlaceholder=$("<div/>"),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",(function(){e.inPreviewMode&&e.moveFieldsBack()})),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e<Craft.LivePreview.minEditorWidthInPx&&(t=(e=Craft.LivePreview.minEditorWidthInPx)/Garnish.$win.width()),this._editorWidth=t,this._editorWidthInPx=e},toggle:function(){this.inPreviewMode?this.exit():this.enter()},enter:function(){var t=this;if(!this.inPreviewMode)if(this.token){if(this.trigger("beforeEnter"),this.trigger("beforeOpen"),$(document.activeElement).trigger("blur"),!this.$editor){this.$shade=$("<div/>",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewContainer=$("<div/>",{class:"lp-preview-container"}).appendTo(Garnish.$bod),this.$iframeContainer=$("<div/>",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$editorContainer=$("<div/>",{class:"lp-editor-container"}).appendTo(Garnish.$bod);var e=$("<header/>",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("<form/>",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("<div/>",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var n=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(e);$("<div/>",{class:"flex-grow"}).appendTo(e);var i=$("<button/>",{type:"button",class:"btn submit",text:Craft.t("app","Save")}).appendTo(e);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(n,"click","exit"),this.addListener(i,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var r=$(this.settings.fields),a=0;a<r.length;a++){var s=$(r[a]),o=this._getClone(s);this.$fieldPlaceholder.insertAfter(s),s.detach(),this.$fieldPlaceholder.replaceWith(o),s.appendTo(this.$editor),this.fields.push({$field:s,$clone:o})}this.updateIframe()?this._slideInOnIframeLoad=!0:this.slideIn(),Craft.ElementThumbLoader.retryAll(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.exit()})),this.inPreviewMode=!0,this.trigger("enter"),this.trigger("open")}else this.createToken()},createToken:function(){var t=this,e={previewAction:this.settings.previewAction};Craft.sendActionRequest("POST","live-preview/create-token",{data:e}).then((function(e){t.token=e.data.token,t.enter()}))},save:function(){Craft.cp.submitPrimaryForm()},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;$("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,"slow",(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,"slow",(function(){t.updateIframeInterval=setInterval(t.updateIframe.bind(t),1e3)}))},exit:function(){var t=this;this.inPreviewMode&&(this.trigger("beforeExit"),this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),this.updateIframeInterval&&clearInterval(this.updateIframeInterval),this.moveFieldsBack(),this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,"slow",(function(){for(var e=0;e<t.fields.length;e++)t.fields[e].$newClone.remove();t.$editorContainer.hide(),t.trigger("slideOut")})),this.$previewContainer.velocity("stop").animateRight(-this.getIframeWidth(),"slow",(function(){t.$previewContainer.hide()})),Craft.ElementThumbLoader.retryAll(),this.inPreviewMode=!1,this.trigger("exit"),this.trigger("close"))},moveFieldsBack:function(){for(var t=0;t<this.fields.length;t++){var e=this.fields[t];e.$newClone=this._getClone(e.$field),this.$fieldPlaceholder.insertAfter(e.$field),e.$field.detach(),this.$fieldPlaceholder.replaceWith(e.$newClone),e.$clone.replaceWith(e.$field)}Garnish.$win.trigger("resize")},getIframeWidth:function(){return Garnish.$win.width()-this.editorWidthInPx},updateWidths:function(){this.$editorContainer.css("width",this.editorWidthInPx+"px"),this.$previewContainer.width(this.getIframeWidth())},updateIframe:function(t){if(t&&(this.lastPostData=null),!this.inPreviewMode)return!1;if(this.loading)return this.checkAgain=!0,!1;var e=$.extend(Garnish.getPostData(this.$editor),Garnish.getPostData(this.$extraFields));if(this.lastPostData&&Craft.compare(e,this.lastPostData,!1))return!1;this.lastPostData=e,this.loading=!0;var n=this.$iframe?$(this.$iframe[0].contentWindow.document):null;return this._scrollX=n?n.scrollLeft():0,this._scrollY=n?n.scrollTop():0,$.ajax({url:this.previewUrl+(-1!==this.previewUrl.indexOf("?")?"&":"?")+Craft.tokenParam+"="+this.token,method:"POST",data:$.extend({},e,this.basePostData),headers:{"X-Craft-Token":this.token},xhrFields:{withCredentials:!0},crossDomain:!0,success:this.handleSuccess.bind(this),error:this.handleError.bind(this)}),!0},forceUpdateIframe:function(){return this.updateIframe(!0)},handleSuccess:function(t){var e=this,n=t+'<script type="text/javascript">window.scrollTo('+this._scrollX+", "+this._scrollY+");<\/script>",i=$('<iframe class="lp-preview" frameborder="0"/>');this.$iframe?i.insertBefore(this.$iframe):i.appendTo(this.$iframeContainer),this.addListener(i,"load",(function(){this.$iframe&&this.$iframe.remove(),this.$iframe=i,this._slideInOnIframeLoad&&(this.slideIn(),this._slideInOnIframeLoad=!1),this.removeListener(i,"load")})),Garnish.requestAnimationFrame((function(){i[0].contentWindow.document.open(),i[0].contentWindow.document.write(n),i[0].contentWindow.document.close(),e.onResponse()}))},handleError:function(){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths(),this.trigger("drag")},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],defaults:{trigger:".livepreviewbtn",fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}},getActive:function(){var e,n=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(Craft.LivePreview.instances);try{for(n.s();!(e=n.n()).done;){var i=e.value;if(i.inPreviewMode)return i}}catch(t){n.e(t)}finally{n.f()}}}),Craft.LivePreview.init=function(t){Craft.livePreview=new Craft.LivePreview(t)}},8683:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}function r(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw s}}}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var s;Craft.NestedElementManager=Garnish.Base.extend({$container:null,elementType:null,$createBtn:null,$elements:null,elementSort:null,elementIndex:null,elementEditor:null,init:function(t,e,n){var i=this;if(this.$container=$(t),this.elementType=e,this.setSettings(n,Craft.NestedElementManager.defaults),this.$container.data("nestedElementManager")&&(console.warn("Double-instantiating a nested element manager on an element"),this.$container.data("nestedElementManager").destroy()),this.$container.data("nestedElementManager",this),"cards"===this.settings.mode?this.$container.is(":has(.elements)")&&this.initCards():this.initElementIndex(),this.settings.canCreate){if(this.$createBtn=Craft.ui.createButton({label:this.settings.createButtonLabel,spinner:!0}).addClass("add icon disabled"),"cards"===this.settings.mode){var a=$("<div/>").appendTo(this.$container);this.$createBtn.addClass("dashed").appendTo(a),this.updateCreateBtn()}else this.$createBtn.appendTo(this.elementIndex.$toolbar);if(Array.isArray(this.settings.createAttributes)){var s,o="menu-".concat(Math.floor(1e6*Math.random())),l=$("<div/>",{id:o,class:"menu menu--disclosure"}).insertAfter(this.$createBtn),c=$("<ul/>").appendTo(l),h=r(this.settings.createAttributes);try{var u=function(){var t=s.value,e=$("<li/>").appendTo(c),n="";if(t.icon){var r=$('<span class="icon">'.concat(t.icon,"</span>"));t.color&&r.addClass(t.color),n+=r.prop("outerHTML")}n+='<span class="label">'.concat(t.label,"</span>");var a=$("<button/>",{type:"button",class:"menu-item",html:n}).appendTo(e);i.addListener(a,"activate",(function(e){e.preventDefault(),i.$createBtn.data("disclosureMenu").hide(),i.createElement(t.attributes)}))};for(h.s();!(s=h.n()).done;)u()}catch(t){h.e(t)}finally{h.f()}this.$createBtn.attr("aria-controls",o).attr("data-disclosure-trigger","true").addClass("menubtn").disclosureMenu()}else this.addListener(this.$createBtn,"activate",(function(t){t.preventDefault(),i.createElement(i.settings.createAttributes)}))}setTimeout((function(){i.elementEditor=i.$container.closest("form").data("elementEditor"),i.elementEditor&&i.elementEditor.on("update",(function(){i.settings.ownerId=i.elementEditor.getDraftElementId(i.settings.ownerId),i.elementIndex&&(i.elementIndex.settings.criteria[i.settings.ownerIdParam]=i.settings.ownerId)}))}),100)},initCards:function(){var t=this;this.$elements=this.$container.children(".elements"),this.$elements.length||(this.$elements=$("<ul/>",{class:"elements ".concat(this.settings.showInGrid?"card-grid":"cards")}).prependTo(this.$container),this.$container.children(".zilch").addClass("hidden")),this.settings.sortable&&(this.elementSort=new Garnish.DragSort({container:this.$elements,handle:"> .element > .card-actions-container > .card-actions > .move",ignoreHandleSelector:null,collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onSortChange(t.elementSort.$draggee)}}));var e,n=r(this.$elements.children().toArray());try{for(n.s();!(e=n.n()).done;){var i=e.value;this.initElement($(i).children(".element"))}}catch(t){n.e(t)}finally{n.f()}},deinitCards:function(){this.$elements&&(this.$elements.remove(),this.$elements=null,this.elementSort.destroy(),this.elementSort=null,this.$container.children(".zilch").removeClass("hidden"))},initElementIndex:function(){var t,n,r,a,s,o=this;this.elementIndex=Craft.createElementIndex(this.elementType,this.$container,Object.assign({context:"embedded-index",sortable:this.settings.sortable},this.settings.indexSettings,{canDuplicateElements:function(t){return o.canCreate(t.length)},canDeleteElements:function(t){return o.canDelete(t.length)},onBeforeDuplicateElements:(s=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return s.apply(this,arguments)}),onDuplicateElements:(a=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return a.apply(this,arguments)}),onBeforeDeleteElements:(r=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return r.apply(this,arguments)}),onDeleteElements:(n=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return n.apply(this,arguments)}),onBeforeUpdateElements:function(){o.$createBtn&&o.$createBtn.addClass("disabled")},onCountResults:function(){o.updateCreateBtn()},onSortChange:(t=i(e().mark((function t(n){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.onSortChange(n);case 2:case"end":return t.stop()}}),t)}))),function(e){return t.apply(this,arguments)})}))},markAsDirty:function(){var t=this;return i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.elementEditor||!t.settings.baseInputName){e.next=3;break}return e.next=3,t.elementEditor.setFormValue(t.settings.baseInputName,"*");case 3:case"end":return e.stop()}}),n)})))()},getBaseActionData:function(){var t=this;return i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.markAsDirty();case 2:return e.abrupt("return",{ownerElementType:t.settings.ownerElementType,ownerId:t.settings.ownerId,ownerSiteId:t.settings.ownerSiteId,attribute:t.settings.attribute});case 3:case"end":return e.stop()}}),n)})))()},onSortChange:function(t){var n=this;return i(e().mark((function i(){var r,a,s,o,l;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=parseInt(t.find(".element").data("id")),a=n.getElementIds(),e.t0=Object,e.next=5,n.getBaseActionData();case 5:return e.t1=e.sent,e.t2={elementIds:[r],offset:n.getBaseElementOffset()+a.indexOf(r)},s=e.t0.assign.call(e.t0,e.t1,e.t2),e.prev=8,e.next=11,Craft.sendActionRequest("POST","nested-elements/reorder",{data:s});case 11:o=e.sent,Craft.cp.displayNotice(o.data.message),e.next=18;break;case 15:e.prev=15,e.t3=e.catch(8),Craft.cp.displayError(null===e.t3||void 0===e.t3||null===(l=e.t3.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.message);case 18:return e.next=20,n.markAsDirty();case 20:case"end":return e.stop()}}),i,null,[[8,15]])})))()},updateCreateBtn:function(){this.$createBtn&&(this.canCreate()?this.$createBtn.removeClass("disabled"):this.$createBtn.addClass("disabled"))},canCreate:function(t){if(!this.settings.canCreate)return!1;if(!this.settings.maxElements)return!0;var e=this.getTotalElements();return null!==e&&e+(t||1)<=this.settings.maxElements},canDelete:function(t){if(!this.settings.minElements)return!0;var e=this.getTotalElements();return null!==e&&e-(t||1)>=this.settings.minElements},getElementIds:function(){return("cards"===this.settings.mode?this.$elements.find("> li > .element").toArray():this.elementIndex.view.getAllElements().toArray().map((function(t){return t.querySelector(".element")}))).map((function(t){return t.getAttribute("data-id")})).filter((function(t){return t})).map((function(t){return parseInt(t)}))},getTotalElements:function(){return"cards"===this.settings.mode?this.$elements?this.$elements.children().length:0:this.elementIndex.isIndexBusy?null:this.elementIndex.totalUnfilteredResults},getBaseElementOffset:function(){return"cards"===this.settings.mode?0:this.elementIndex.settings.batchSize*(this.elementIndex.page-1)},createElement:(s=i(e().mark((function t(n){var r,a,s,o=this;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.$createBtn&&this.$createBtn.addClass("loading"),t.prev=1,t.next=4,this.markAsDirty();case 4:return n=Object.assign({elementType:this.elementType,ownerId:this.settings.ownerId,siteId:this.settings.ownerSiteId},n),t.next=7,Craft.sendActionRequest("POST","elements/create",{data:n});case 7:r=t.sent,a=r.data,Craft.createElementEditor(this.elementType,{siteId:a.element.siteId,elementId:a.element.id,draftId:a.element.draftId,params:{fresh:1}}).on("submit",i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return"cards"===o.settings.mode?o.addElementCard(a.element):(o.elementIndex.clearSearch(),o.elementIndex.updateElements()),t.next=3,o.markAsDirty();case 3:case"end":return t.stop()}}),t)})))),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(1),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(s=t.t0.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.message);case 16:return t.prev=16,this.$createBtn&&this.$createBtn.removeClass("loading"),t.finish(16);case 19:case"end":return t.stop()}}),t,this,[[1,13,16,19]])}))),function(t){return s.apply(this,arguments)}),initElement:function(t){var e=this;Garnish.hasAttr(t,"data-editable")&&this.addListener(t,"dblclick,taphold",(function(n){$(n.target).closest("a[href],button,[role=button]").length||Craft.createElementEditor(e.elementType,t)})),this.settings.sortable&&this.elementSort.addItems(t.parent());var n=t.find(".action-btn").disclosureMenu().data("disclosureMenu");if(Garnish.hasAttr(t,"data-deletable")){var i=n.addGroup();n.addItem({icon:"trash",label:this.settings.deleteLabel||Craft.t("app","Delete"),destructive:!0,onActivate:function(){confirm(e.settings.deleteConfirmationMessage)&&e.deleteElement(t)}},i)}},deleteElement:function(t){var n=this;return i(e().mark((function i(){var r,a,s;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Object,e.next=3,n.getBaseActionData();case 3:return e.t1=e.sent,e.t2={elementId:t.data("id")},r=e.t0.assign.call(e.t0,e.t1,e.t2),e.prev=6,e.next=9,Craft.sendActionRequest("POST","nested-elements/delete",{data:r});case 9:a=e.sent,Craft.cp.displayNotice(a.data.message),e.next=17;break;case 13:throw e.prev=13,e.t3=e.catch(6),Craft.cp.displayError(null===e.t3||void 0===e.t3||null===(s=e.t3.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.message),e.t3;case 17:return n.settings.sortable&&n.elementSort.removeItems(t),t.parent().remove(),0===n.$elements.children().length&&n.deinitCards(),n.$createBtn&&(n.updateCreateBtn(),n.canCreate()&&n.$createBtn.focus()),e.next=23,n.markAsDirty();case 23:case"end":return e.stop()}}),i,null,[[6,13]])})))()},addElementCard:function(t){var n=this;this.$createBtn&&this.$createBtn.addClass("loading"),Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:this.elementType,id:t.id,siteId:t.siteId,instances:[{context:"field",ui:"card",sortable:this.settings.sortable,showActionMenu:!0}]}]}}).then(function(){var r=i(e().mark((function i(r){var a,s,o;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.data,n.$elements||n.initCards(),s=$("<li/>").appendTo(n.$elements),o=$(a.elements[t.id][0]).appendTo(s),n.initElement(o),e.next=7,Craft.appendHeadHtml(a.headHtml);case 7:return e.next=9,Craft.appendBodyHtml(a.bodyHtml);case 9:Craft.cp.elementThumbLoader.load(o),n.updateCreateBtn();case 11:case"end":return e.stop()}}),i)})));return function(t){return r.apply(this,arguments)}}()).catch((function(t){var e,n,i;throw Craft.cp.displayError(null==t||null===(e=t.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.message),null!==(n=null==t||null===(i=t.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.message)&&void 0!==n?n:t})).finally((function(){n.$createBtn&&n.$createBtn.removeClass("loading").focus()}))},destroy:function(){this.$container.removeData("nestedElementManager"),this.base()}},{ownerId:null,defaults:{mode:"cards",showInGrid:!1,ownerElementType:null,ownerId:null,ownerSiteId:null,attribute:null,sortable:!1,indexSettings:{},canCreate:!1,minElements:null,maxElements:null,createButtonLabel:Craft.t("app","Create"),ownerIdParam:null,createAttributes:null,fieldHandle:null,baseInputName:null,deleteLabel:null,deleteConfirmationMessage:null}})},7439:function(){Craft.PasswordInput=Garnish.Base.extend({$passwordWrapper:null,$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(t,e){this.$passwordInput=$(t),this.$passwordWrapper=this.$passwordInput.parent(".passwordwrapper"),this.settings=$.extend({},Craft.PasswordInput.defaults,e),this.$passwordInput.data("passwordInput")&&(console.warn("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=$('<button type="button" class="invisible" />'),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.initInputFocusEvents(this.$passwordInput),this.addListener(this.$showPasswordToggle,"click","onClick"),this.hidePassword(),this.addListener(this.$passwordWrapper.closest("form"),"submit","hidePassword")},setCurrentInput:function(t){this.$currentInput&&(t.insertAfter(this.$currentInput),this.$currentInput.detach(),t.trigger("focus"),t.val(this.$currentInput.val())),this.$currentInput=t,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(t){this.$showPasswordToggle.text(t)},initInputFocusEvents:function(t){this.addListener(t,"focus",(function(){this.$passwordWrapper.addClass("focus")})),this.addListener(t,"blur",(function(){this.$passwordWrapper.removeClass("focus")}))},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr({type:"text",autocapitalize:"off"}),this.initInputFocusEvents(this.$textInput)),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("app","Hide")),this.showingPassword=!0)},hidePassword:function(){!1!==this.showingPassword&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("app","Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.removeClass("invisible"):this.$showPasswordToggle.addClass("invisible")},onClick:function(t){if(this.$currentInput[0].setSelectionRange){var e=this.$currentInput[0].selectionStart,n=this.$currentInput[0].selectionEnd;this.togglePassword(),this.$currentInput[0].setSelectionRange(e,n)}else this.togglePassword()},destroy:function(){this.$passwordInput.removeData("passwordInput"),this.base()}},{defaults:{onToggleInput:$.noop}})},5328:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function i(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?n(Object(i),!0).forEach((function(e){var n,a,s,o;n=t,a=e,s=i[e],o=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(a),(a="symbol"==r(o)?o:String(o))in n?Object.defineProperty(n,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[a]=s})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Craft.Preview=Garnish.Base.extend({elementEditor:null,formObserver:null,$shade:null,$editorContainer:null,$editor:null,$spinner:null,$statusIcon:null,$dragHandle:null,$previewWrapper:null,$previewContainer:null,$previewSkipLink:null,$bumperLink:null,$notifier:null,$iframeContainer:null,$previewHeader:null,$targetBtn:null,$targetMenu:null,$deviceTypeContainer:null,$orientationBtn:null,$refreshBtn:null,$deviceMask:null,$devicePreviewContainer:null,$iframe:null,iframeLoaded:!1,$tempInput:null,$fieldPlaceholder:null,isActive:!1,isVisible:!1,activeTarget:0,animationDuration:"slow",currentDeviceType:"desktop",deviceOrientation:null,deviceWidth:"",deviceHeight:"",deviceMaskDimensions:{phone:{width:375,height:753},tablet:{width:768,height:1110}},draftId:null,url:null,fields:null,iframeHeight:null,scrollTop:null,scrollLeft:null,dragger:null,dragStartEditorWidth:null,_updateIframeProxy:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){this.elementEditor=t,this._updateIframeProxy=this.updateIframe.bind(this),this.$tempInput=$("<input/>",{type:"hidden",name:"__PREVIEW_FIELDS__",value:"1"}),this.$fieldPlaceholder=$("<div/>"),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.Preview.defaultEditorWidth),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e<Craft.Preview.minEditorWidthInPx&&(t=(e=Craft.Preview.minEditorWidthInPx)/Garnish.$win.width()),this._editorWidth=t,this._editorWidthInPx=e},open:function(){var t=this;if(!this.isActive){if(this.isActive=!0,this.trigger("beforeOpen"),$(document.activeElement).trigger("blur"),!this.$editor){var e=Craft.t("app","Skip to {title}",{title:Craft.t("app","Top of preview")});this.$shade=$("<div/>",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewWrapper=$("<div/>",{role:"dialog","aria-modal":"true","aria-labelledby":"lp-preview-heading"}).appendTo(Garnish.$bod),this.$modalLabel=$("<h2/>",{id:"lp-preview-heading",class:"visually-hidden",html:Craft.t("app","Preview")}).appendTo(this.$previewWrapper),this.$editorContainer=$("<div/>",{class:"lp-editor-container"}).appendTo(this.$previewWrapper),this.$previewContainer=$("<div/>",{class:"lp-preview-container",id:"lp-preview-container"}).appendTo(this.$previewWrapper),this.$notifier=$("<span/>",{class:"visually-hidden",role:"status"}).appendTo(this.$previewContainer);var n=$("<header/>",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("<form/>",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("<div/>",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var i=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(n);if($("<div/>",{class:"flex-grow"}).appendTo(n),this.$spinner=$("<div/>",{class:"spinner hidden",title:Craft.t("app","Saving")}).appendTo(n),this.$statusIcon=$("<div/>",{class:"invisible"}).appendTo(n),this.$statusMessage=$("<span/>",{class:"visually-hidden","aria-live":"polite"}).appendTo(n),this.$previewSkipLink=$("<a/>",{class:"skip-link btn",href:"#lp-preview-container",html:e}).appendTo(n),Craft.Pro){if(this.$previewHeader=$("<header/>",{class:"lp-preview-header"}).appendTo(this.$previewContainer),this.elementEditor.settings.previewTargets.length>1){this.$targetBtn=$("<button/>",{type:"button",class:"btn menubtn",text:this.elementEditor.settings.previewTargets[0].label}).appendTo(this.$previewHeader),this.$targetMenu=$("<div/>",{class:"menu lp-target-menu"}).insertAfter(this.$targetBtn);for(var r,a=$("<ul/>",{class:"padded"}).appendTo(this.$targetMenu),s=0;s<this.elementEditor.settings.previewTargets.length;s++)r=$("<li/>").appendTo(a),$("<a/>",{data:{target:s},text:this.elementEditor.settings.previewTargets[s].label,class:0===s?"sel":null}).appendTo(r);new Garnish.MenuBtn(this.$targetBtn,{onOptionSelect:function(e){t.switchTarget($(e).data("target"))}}),$('<div class="flex-grow"/>').appendTo(this.$previewHeader)}this._buildDeviceTypeFieldset(),$('<div class="flex-grow"/>').appendTo(this.$previewHeader);var o=$('<div class="buttons"/>').appendTo(this.$previewHeader);this.$orientationBtn=$("<button/>",{type:"button",class:"btn disabled","data-icon":"rotate","aria-disabled":"true",text:Craft.t("app","Rotate"),"aria-label":Craft.t("app","Rotate")}).appendTo(o),this.addListener(this.$orientationBtn,"click","switchOrientation"),this.$refreshBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Refresh"),"data-icon":"refresh"}).appendTo(o),this.addListener(this.$refreshBtn,"click",(function(){t.updateIframe(!1,!0)})),this.deviceOrientation=Craft.getLocalStorage("LivePreview.orientation")}this.$iframeContainer=$("<div/>",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$devicePreviewContainer=$("<div/>",{class:"lp-device-preview-container"}).appendTo(this.$iframeContainer),this.$deviceMask=$("<div/>",{class:"lp-device-mask"}).appendTo(this.$iframeContainer),this.$bumperLink=$("<a/>",{class:"skip-link btn lp-preview-container__bumper-link",html:e,href:"#lp-preview-container"}),this.$bumperLink.appendTo(this.$previewContainer),this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(i,"click","close"),this.addListener(this.$statusIcon,"click",(function(){t.elementEditor.showStatusHud(t.$statusIcon)}))}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];var l=$("#content .field").not($("#content .field .field"));if(l.length){this.$tempInput.insertBefore(l.get(0));for(var c=0;c<l.length;c++){var h=$(l[c]),u=this._getClone(h);this.$fieldPlaceholder.insertAfter(h),h.detach(),this.$fieldPlaceholder.replaceWith(u),h.appendTo(this.$editor),this.fields.push({$field:h,$clone:u})}}this.updateIframe(),this.formObserver=new Craft.FormObserver(this.$editor,(function(){t.elementEditor.checkForm()})),this.elementEditor.on("update",this._updateIframeProxy),Craft.ElementThumbLoader.retryAll(),this.trigger("open")}},_getDeviceTypeTranslation:function(t){var e;switch(t){case"phone":e=Craft.t("app","Mobile");break;case"tablet":e=Craft.t("app","Tablet");break;default:e=Craft.t("app","Desktop")}return e},_getDeviceOrientationTranslation:function(t){return"portrait"===t?Craft.t("app","Portrait"):Craft.t("app","Landscape")},_buildDeviceTypeFieldset:function(){var t=this;this.$deviceTypeContainer=$("<section/>",{class:"btngroup lp-device-type","aria-label":Craft.t("app","Device type")}).appendTo(this.$previewHeader),$("<button/>",{type:"button",class:"btn lp-device-type-btn--desktop active",title:Craft.t("app","Desktop"),"aria-label":Craft.t("app","Desktop"),"aria-pressed":"true",data:{width:"",height:"",deviceType:"desktop"}}).appendTo(this.$deviceTypeContainer),$("<button/>",{type:"button",class:"btn lp-device-type-btn--tablet",title:Craft.t("app","Tablet"),"aria-label":Craft.t("app","Tablet"),"aria-pressed":"false",data:{width:768,height:1024,deviceType:"tablet"}}).appendTo(this.$deviceTypeContainer),$("<button/>",{type:"button",class:"btn lp-device-type-btn--phone",title:Craft.t("app","Mobile"),"aria-label":Craft.t("app","Mobile"),"aria-pressed":"false",data:{width:375,height:667,deviceType:"phone"}}).appendTo(this.$deviceTypeContainer),this.deviceBtnGroup=new Craft.Listbox(this.$deviceTypeContainer,{onChange:function(e){t.switchDeviceType(e)}})},_activeTarget:function(){return this.elementEditor.settings.previewTargets[this.activeTarget]},_autoRefresh:function(){var t=this._activeTarget();return void 0===r(t.refresh)||!!t.refresh},switchTarget:function(t){this.activeTarget=t,this.$targetBtn.text(this.elementEditor.settings.previewTargets[t].label),this.$targetMenu.find("a.sel").removeClass("sel"),this.$targetMenu.find("a").eq(t).addClass("sel"),this.updateIframe(!0),this.trigger("switchTarget",{previewTarget:this.elementEditor.settings.previewTargets[t]})},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;this.isActive&&!this.isVisible&&($("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration)),this.isVisible=!0,Garnish.uiLayerManager.addLayer(this.$previewWrapper),Garnish.hideModalBackgroundLayers(),Craft.setFocusWithin(this.$previewWrapper),Craft.trapFocusWithin(this.$previewWrapper),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.close()})))},close:function(){var t=this;this.isActive&&this.isVisible&&(this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$tempInput.detach(),this.moveFieldsBack(),Garnish.prefersReducedMotion()?this.$shade.velocity("fadeOut"):this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){for(var e=0;e<t.fields.length;e++)t.fields[e].$newClone.remove();t.$editorContainer.hide(),t.trigger("slideOut")})),this.$previewContainer.velocity("stop").animateRight(-this.getIframeWidth(),Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating"),t.$previewContainer.hide()})),this.formObserver.destroy(),this.formObserver=null,this.elementEditor.off("update",this._updateIframeProxy),Craft.ElementThumbLoader.retryAll(),this.elementEditor.$previewBtn&&this.elementEditor.$previewBtn.focus(),this.isActive=!1,this.isVisible=!1,this.trigger("close"))},moveFieldsBack:function(){for(var t=0;t<this.fields.length;t++){var e=this.fields[t];e.$newClone=this._getClone(e.$field),this.$fieldPlaceholder.insertAfter(e.$field),e.$field.detach(),this.$fieldPlaceholder.replaceWith(e.$newClone),e.$clone.replaceWith(e.$field)}Garnish.$win.trigger("resize"),Garnish.$doc.trigger("scroll")},getIframeWidth:function(){return Garnish.$win.width()-this.editorWidthInPx},updateWidths:function(){this.$editorContainer.css("width",this.editorWidthInPx+"px"),this.$previewContainer.width(this.getIframeWidth()),this._devicePreviewIsActive()&&this.updateDevicePreview()},_useIframeResizer:function(){return!1!==Craft.previewIframeResizerOptions},updateIframe:function(t,e){var n=this;if(!this.isActive)return!1;t=!0===t,this.draftId===(this.draftId=this.elementEditor.settings.draftId)&&this.$iframe||(e=!0);var i=this._activeTarget();void 0===e&&(e=t||this._autoRefresh()),this.trigger("beforeUpdateIframe",{previewTarget:i,resetScroll:t,refresh:e}),e?this.elementEditor.getTokenizedPreviewUrl(i.url,"x-craft-live-preview").then((function(e){var i;t?(n.scrollTop=null,n.scrollLeft=null):n.iframeLoaded&&n.$iframe&&(n._useIframeResizer()?(n.iframeHeight=n.$iframe.height(),n.scrollTop=n.$iframeContainer.scrollTop(),n.scrollLeft=n.$iframeContainer.scrollLeft()):(i=Craft.isSameHost(e))&&n.$iframe[0].contentWindow&&(n.scrollTop=$(n.$iframe[0].contentWindow.document).scrollTop(),n.scrollLeft=$(n.$iframe[0].contentWindow.document).scrollLeft())),n.iframeLoaded=!1;var r=$("<iframe/>",{class:"lp-preview",frameborder:0,src:e,title:Craft.t("app","Preview")});n.$iframe?n.$iframe.replaceWith(r):r.appendTo(n.$devicePreviewContainer),n._useIframeResizer()?(t||null===n.iframeHeight||(r.height(n.iframeHeight),n.$iframeContainer.scrollTop(n.scrollTop),n.$iframeContainer.scrollLeft(n.scrollLeft)),iFrameResize($.extend({checkOrigin:!1,scrolling:!0,onInit:function(t){n.iframeLoaded=!0,n.iframeHeight=null,n.scrollTop=null,n.scrollLeft=null,t.scrolling="no"}},Craft.previewIframeResizerOptions||{}),r[0])):r.on("load",(function(){n.iframeLoaded=!0,!t&&i&&r[0].contentWindow.scrollTo(n.scrollLeft||0,n.scrollTop||0)})),n.url=e,n.$iframe=r,n._devicePreviewIsActive()&&n.updateDevicePreview(),n.trigger("afterUpdateIframe",{previewTarget:n.elementEditor.settings.previewTargets[n.activeTarget],$iframe:n.$iframe}),n.slideIn()})):this.slideIn()},_devicePreviewIsActive:function(){return"desktop"!==this.currentDeviceType},_updateNotifier:function(){var t=this;this.$notifier.html="";var e="desktop"===this.currentDeviceType?"Previewing {type} device":"Previewing {type} device in {orientation}",n={type:this._getDeviceTypeTranslation(this.currentDeviceType)};"desktop"!==this.currentDeviceType&&(n=i(i({},n),{orientation:this._getDeviceOrientationTranslation(this.deviceOrientation)}));var r=Craft.t("app",e,n);setTimeout((function(){t.$notifier.text(r)}),200)},switchDeviceType:function(t){this.$iframeContainer.removeClass("lp-iframe-container--rotating");var e=t.data("deviceType");if(e===this.currentDeviceType)return!1;this.currentDeviceType=e,this.deviceWidth=t.data("width"),this.deviceHeight=t.data("height"),"desktop"===this.currentDeviceType?(this.$orientationBtn.addClass("disabled").attr("aria-disabled","true"),this.$iframeContainer.removeClass("lp-iframe-container--has-device-preview")):(this.$orientationBtn.removeClass("disabled").removeAttr("aria-disabled"),this.$iframeContainer.addClass("lp-iframe-container--has-device-preview")),"tablet"===this.currentDeviceType?this.$iframeContainer.addClass("lp-iframe-container--tablet"):this.$iframeContainer.removeClass("lp-iframe-container--tablet"),this._updateNotifier(),"desktop"!==this.currentDeviceType&&this.updateDevicePreview()},switchOrientation:function(){var t=this;if(!this._devicePreviewIsActive())return!1;this.deviceOrientation&&"portrait"!==this.deviceOrientation?this.deviceOrientation="portrait":this.deviceOrientation="landscape",Craft.setLocalStorage("LivePreview.orientation",this.deviceOrientation),this.$iframeContainer.addClass("lp-iframe-container--rotating"),this.updateDevicePreview(),this._updateNotifier(),setTimeout((function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating")}),300)},updateDevicePreview:function(){var t=1,e=1,n=1,i=this.$previewContainer.height()-50-48,r=this.$previewContainer.width()-48,a=this.deviceMaskDimensions[this.currentDeviceType].height,s=this.deviceMaskDimensions[this.currentDeviceType].width;"landscape"===this.deviceOrientation?(r<a&&(t=r/a),i<s&&(e=i/s)):(i<a&&(t=i/a),r<s&&(e=r/s)),n=t,e<t&&(n=e);var o=-100/n/2,l="landscape"===this.deviceOrientation?"-90deg":"0deg";this.$deviceMask.css({width:this.deviceMaskDimensions[this.currentDeviceType].width+"px",height:this.deviceMaskDimensions[this.currentDeviceType].height+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%) rotate("+l+")"}),"landscape"===this.deviceOrientation?this.$devicePreviewContainer.css({width:this.deviceHeight+"px",height:this.deviceWidth+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%)",marginTop:0,marginLeft:"-"+12*n+"px"}):this.$devicePreviewContainer.css({width:this.deviceWidth+"px",height:this.deviceHeight+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%)",marginTop:"-"+12*n+"px",marginLeft:0})},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e.find("[name]").prop("disabled",!0),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths(),this.trigger("drag")},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],refresh:function(){var e,n=t(Craft.Preview.instances);try{for(n.s();!(e=n.n()).done;)e.value.updateIframe()}catch(t){n.e(t)}finally{n.f()}var i,r=t(Craft.LivePreview.instances);try{for(r.s();!(i=r.n()).done;)i.value.forceUpdateIframe()}catch(t){r.e(t)}finally{r.f()}},getActive:function(){var e,n=t(Craft.Preview.instances);try{for(n.s();!(e=n.n()).done;){var i=e.value;if(i.isActive)return i}}catch(t){n.e(t)}finally{n.f()}}})},6419:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.PreviewFileModal=Garnish.Modal.extend({assetId:null,$spinner:null,$triggerElement:null,$bumperButtonStart:null,$bumperButtonEnd:null,elementSelect:null,type:null,loaded:null,requestId:0,init:function(t,e,n){var i=this;if(void 0===n&&jQuery.isPlainObject(e)&&(n=e,e=null),n=$.extend(this.defaultSettings,n),this.$triggerElement=Garnish.getFocusedElement(),n.onHide=this._onHide.bind(this),Craft.PreviewFileModal.openInstance){var r=Craft.PreviewFileModal.openInstance;return r.assetId!==t&&(r.loadAsset(t,n.startingWidth,n.startingHeight),r.elementSelect=e),this.destroy()}Craft.PreviewFileModal.openInstance=this,this.elementSelect=e,this.$container=$('<div class="modal previewmodal loading"/>').appendTo(Garnish.$bod),this.base(this.$container,$.extend({resizable:!0},n)),this.$container&&(this.$container.velocity("stop"),this.$container.show().css("opacity",1),this.$shade.velocity("stop"),this.$shade.show().css("opacity",1),Garnish.setFocusWithin(this.$container)),this.$bumperButtonStart=Craft.ui.createButton({html:Craft.t("app","Close Preview"),class:"skip-link"}),this.addListener(this.$bumperButtonStart,"click",(function(){i.hide()})),this.$bumperButtonEnd=this.$bumperButtonStart.clone(!0),this.loadAsset(t,n.startingWidth,n.startingHeight)},_onHide:function(){return Craft.PreviewFileModal.openInstance=null,this.elementSelect?this.elementSelect.focusItem(this.elementSelect.$items.filter("[data-id=".concat(this.assetId,"]"))):this.$triggerElement&&this.$triggerElement.length&&this.$triggerElement.trigger("focus"),this.$shade.remove(),this.destroy()},_addBumperButtons:function(){this.$container.prepend(this.$bumperButtonStart).append(this.$bumperButtonEnd)},_addModalName:function(){var t="preview-heading";$("<h1/>",{class:"visually-hidden",id:t,text:Craft.t("app","Preview file")}).prependTo(this.$container),this.$container.attr("aria-labelledby",t)},selfDestruct:function(){var t=Craft.PreviewFileModal.openInstance;return t.hide(),t.$shade.remove(),t.destroy(),Craft.PreviewFileModal.openInstance=null,Craft.focalPoint.destruct(),Craft.focalPoint=null,!0},loadAsset:function(t,i,r){var a=this;this.assetId=t,this.$container.empty(),this.loaded=!1,this.desiredHeight=null,this.desiredWidth=null;var s=.66*Garnish.$win.height(),o=Math.min(s/3*4,Garnish.$win.width()-2*this.settings.minGutter);if(s=o/4*3,i&&r){var l=i/r;o=Math.min(i,Garnish.$win.width()-2*this.settings.minGutter),(o=(s=Math.min(o/l,Garnish.$win.height()-2*this.settings.minGutter))*l)>Math.min(i,Garnish.$win.width()-2*this.settings.minGutter)&&(s=(o=Math.min(i,Garnish.$win.width()-2*this.settings.minGutter))/l)}this._resizeContainer(o,s),this.$spinner=$('<div class="spinner centeralign"></div>').appendTo(this.$container);var c=this.$container.height()/2-this.$spinner.height()/2+"px",h=this.$container.width()/2-this.$spinner.width()/2+"px";this.$spinner.css({left:h,top:c,position:"absolute"}),this.requestId++;var u={assetId:t,requestId:this.requestId},d=function(){a.$container.removeClass("loading"),a.$spinner.remove(),a.loaded=!0};Craft.sendActionRequest("POST","assets/preview-file",{data:u}).then(function(){var t,i=(t=e().mark((function t(n){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(d(),n.data.requestId==a.requestId){t.next=3;break}return t.abrupt("return");case 3:if(n.data.previewHtml){t.next=8;break}return a.$container.addClass("zilch"),a.$container.append($("<p/>",{text:Craft.t("app","No preview available.")})),a._addBumperButtons(),t.abrupt("return");case 8:return a.$container.removeClass("zilch"),a.$container.attr("data-asset-id",a.assetId),a.$container.append(n.data.previewHtml),a._addBumperButtons(),a._addModalName(),t.next=15,Craft.appendHeadHtml(n.data.headHtml);case 15:return t.next=17,Craft.appendBodyHtml(n.data.bodyHtml);case 17:case"end":return t.stop()}}),t)})),function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return i.apply(this,arguments)}}()).catch((function(t){var e=t.response;d(),Craft.cp.displayError(e.data.message),a.hide()}))},_resizeContainer:function(t,e){this.$container.css({width:t,"min-width":t,"max-width":t,height:e,"min-height":e,"max-height":e,top:(Garnish.$win.height()-e)/2,left:(Garnish.$win.width()-t)/2})}},{openInstance:null,defaultSettings:{minGutter:50,startingWidth:null,startingHeight:null},resizePreviewImage:function(){var t=Craft.PreviewFileModal.openInstance;if(t){var e=.66*Garnish.$win.height(),n=Math.min(e/3*4,Garnish.$win.width()-2*t.settings.minGutter);e=n/4*3;var i,r=t.$container.find("img");if(r.css({width:n,height:e}),t.loaded&&r.length){var a=r.data("maxwidth"),s=r.data("maxheight");i=a/s;var o=t.desiredWidth?t.desiredWidth:t.getWidth(),l=t.desiredHeight?t.desiredHeight:t.getHeight(),c=Math.min(o,a),h=Math.round(Math.min(s,c/i));h>l&&(h=l),c=Math.round(h*i),r.css({width:c,height:h}),t._resizeContainer(c,h),t.desiredWidth=c,t.desiredHeight=h}t.base(),t.loaded&&r.length&&(n=Math.round(Math.min(Math.max(r.height()*i),Garnish.$win.width()-2*t.settings.minGutter)),e=Math.round(Math.min(Math.max(n/i),Garnish.$win.height()-2*t.settings.minGutter)),(n=Math.round(e*i))>Math.min(n,Garnish.$win.width()-2*t.settings.minGutter)&&(e=(n=Math.min(n,Garnish.$win.width()-2*t.settings.minGutter))/i),t._resizeContainer(n,e),r.css({width:n,height:e}),window.imageFocalPoint&&window.imageFocalPoint.renderFocal())}}})},872:function(){Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,$progressBarStatus:null,_itemCount:0,_processedItemCount:0,_displaySteps:!1,init:function(t,e){e&&(this._displaySteps=!0),this.$progressBar=$('<div class="progressbar pending hidden"/>').appendTo(t),this.$innerProgressBar=$('<div class="progressbar-inner"/>').appendTo(this.$progressBar),this.$progressBarStatus=$('<div class="progressbar-status hidden" />').insertAfter(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0),this.$progressBarStatus.html(""),this._displaySteps&&this.$progressBar.addClass("has-status")},hideProgressBar:function(){this.$progressBar.addClass("hidden"),this.$progressBarStatus.addClass("hidden")},showProgressBar:function(){this.$progressBar.removeClass("hidden"),this.$progressBarStatus.removeClass("hidden")},setItemCount:function(t){this._itemCount=t},incrementItemCount:function(t){this._itemCount+=t},setProcessedItemCount:function(t){this._processedItemCount=t},incrementProcessedItemCount:function(t){this._processedItemCount+=t},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var t=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(t),this._displaySteps&&this.$progressBarStatus.html(this._processedItemCount+" / "+this._itemCount)},setProgressPercentage:function(t,e){0===t?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),e?this.$innerProgressBar.velocity("stop").velocity({width:t+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(t+"%"))}})},1396:function(){Craft.PromptHandler=Garnish.Base.extend({modal:null,$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$pomptChoices:null,_prompts:[],_promptBatchCallback:$.noop,_promptBatchReturnData:[],_promptBatchNum:0,resetPrompts:function(){this._prompts=[],this._promptBatchCallback=$.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(t){this._prompts.push(t)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(t){this._promptBatchCallback=t,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var t=this._prompts[this._promptBatchNum].prompt,e=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(t.message,t.choices,this._handleBatchPromptSelection.bind(this),e,t.modalSettings)},_handleBatchPromptSelection:function(t,e){var n=this._prompts[this._promptBatchNum],i=this._prompts.length-(this._promptBatchNum+1),r=$.extend(n,{choice:t});this._promptBatchReturnData.push(r),i?(this._promptBatchNum++,e?this._handleBatchPromptSelection(t,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(t,e,n,i,r){this._promptCallback=n,null===this.modal&&(this.modal=new Garnish.Modal(Object.assign({closeOtherModals:!1},r))),null===this.$modalContainerDiv&&(this.$modalContainerDiv=$('<div class="modal fitted prompt-modal"></div>').addClass().appendTo(Garnish.$bod)),this.$prompt=$('<div class="body"></div>').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=$('<p class="prompt-msg"/>').appendTo(this.$prompt),this.$promptChoices=$('<div class="options"></div>').appendTo(this.$prompt),this.$promptApplyToRemainingContainer=$('<label class="assets-applytoremaining"/>').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=$('<input type="checkbox"/>').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=$("<span/>").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=$('<div class="buttons right"/>').appendTo(this.$prompt),this.modal.setContainer(this.$modalContainerDiv),this.$promptMessage.html(t);for(var a=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$promptButtons),s=$("<button/>",{type:"submit",class:"btn submit disabled",text:Craft.t("app","OK")}).appendTo(this.$promptButtons),o=0;o<e.length;o++){var l=$('<div><label><input type="radio" name="promptAction" value="'+e[o].value+'"/> '+e[o].title+"</label></div>").appendTo(this.$promptChoices).find("input");this.addListener(l,"click",(function(){s.removeClass("disabled")}))}this.addListener(s,"activate",(function(t){var e=$(t.currentTarget).parents(".modal").find("input[name=promptAction]:checked").val(),n=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(e,n)})),this.addListener(a,"activate",(function(){var t=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice("cancel",t)})),i&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("app","Apply this to the {number} remaining conflicts?",{number:i}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(t,e){var n=this;this.$prompt.fadeOut("fast",(function(){n.modal.hide(),n._promptCallback(t,e)}))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}})},8960:function(){Craft.Queue=Garnish.Base.extend({running:!1,paused:!1,pausedForVisibility:!1,jobs:null,get length(){return this.jobs.length},get isPaused(){return this.paused||this.pausedForVisibility},init:function(){var t=this;this.jobs=[],Garnish.$doc.on("visibilitychange",(function(){t.pausedForVisibility&&Craft.isVisible()&&(t.pausedForVisibility=!1,t._resume())}))},push:function(t){return this._add(t,"push")},unshift:function(t){return this._add(t,"unshift")},pause:function(){this.paused||(this.paused=!0,this.pausedForVisibility||this.trigger("pause"))},resume:function(){this.paused&&(this.paused=!1,this._resume())},_add:function(t,e){var n=this;return new Promise((function(i,r){n.jobs[e]((function(){return new Promise((function(e,n){t().then((function(t){i(t),e()})).catch((function(t){r(t),n()}))}))})),n.running||(n.trigger("beforeRun"),n.running=!0,n._exec())}))},clear:function(){this.jobs.length=0},_exec:function(){var t=this;if(!this.jobs.length)return this.running=!1,void this.trigger("afterRun");this.pausedForVisibility||Craft.isVisible()||(this.pausedForVisibility=!0,this.paused||this.trigger("pause")),this.paused||this.pausedForVisibility||(this.trigger("beforeExec"),this.jobs.shift()().finally((function(){t.trigger("afterExec"),t._exec()})))},_resume:function(){this.isPaused||(this.trigger("resume"),this._exec())}}),Craft.queue=new Craft.Queue},4070:function(){!function(t){Craft.SlidePicker=Garnish.Base.extend({min:null,max:null,totalSteps:null,value:null,label:null,describedBy:null,$container:null,$buttons:null,init:function(e,n){var i=this;this.setSettings(n,Craft.SlidePicker.defaults),this.$container=t("<div/>",{class:"slide-picker",role:"slider",tabindex:0}),this.refresh(),this.setValue(e,!1),this.addListener(this.$container,"keydown",(function(t){switch(t.keyCode){case Garnish.UP_KEY:i.setValue(i.value+i.settings.step),t.preventDefault();break;case Garnish.DOWN_KEY:i.setValue(i.value-i.settings.step),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?i.setValue(i.value+i.settings.step):i.setValue(i.value-i.settings.step),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?i.setValue(i.value-i.settings.step):i.setValue(i.value+i.settings.step),t.preventDefault();break;case Garnish.HOME_KEY:i.setValue(i.min),t.preventDefault();break;case Garnish.END_KEY:i.setValue(i.max),t.preventDefault()}}))},refresh:function(){var e=this;if(this.min=this._min(),this.max=this._max(),this.totalSteps=(this.max-this.min)/this.settings.step,this.label=this.settings.label,this.describedBy=this.settings.describedBy,!Number.isInteger(this.totalSteps))throw"Invalid SlidePicker config";this.$buttons&&this.$buttons.remove(),this.$container.attr("aria-valuemin",this.min),this.$container.attr("aria-valuemax",this.max),this.label&&this.$container.attr("aria-label",this.label),this.describedBy&&this.$container.attr("aria-describedby",this.describedBy),this.$buttons=t();for(var n=this.min;n<=this.max;n+=this.settings.step)this.$buttons=this.$buttons.add(t("<a/>",{title:this.settings.valueLabel(n),data:{value:n}}));if(this.$buttons.appendTo(this.$container),null!==this.value){var i=this.value;this.value=null,this.setValue(i,!1)}this.addListener(this.$buttons,"mouseover",(function(n){e.$buttons.removeClass("active-hover last-active-hover"),t(n.currentTarget).addClass("active-hover last-active-hover").prevAll().addClass("active-hover")})),this.addListener(this.$buttons,"mouseout",(function(){e.$buttons.removeClass("active-hover")})),this.addListener(this.$buttons,"click",(function(n){e.setValue(t.data(n.currentTarget,"value")),n.stopPropagation(),e.$container.focus()}))},setValue:function(t,e){if(t=Math.max(Math.min(t,this.max),this.min),this.value!==(this.value=t)){this.$container.attr({"aria-valuenow":this.value,"aria-valuetext":this.settings.valueLabel(this.value)}),this.$buttons.removeClass("last-active active");var n=this.$buttons.eq((this.value-this.min)/this.settings.step);n.add(n.prevAll()).addClass("active"),n.addClass("last-active"),!1!==e&&this.settings.onChange(t)}},_min:function(){return"function"==typeof this.settings.min?this.settings.min():this.settings.min},_max:function(){return"function"==typeof this.settings.max?this.settings.max():this.settings.max}},{defaults:{min:0,max:100,step:10,valueLabel:null,onChange:t.noop}})}(jQuery)},5763:function(){Craft.SlideRuleInput=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,$input:null,value:null,startPositionX:null,init:function(t,e){var n=this;this.setSettings(e,Craft.SlideRuleInput.defaultSettings),this.value=0,this.graduationsMin=-70,this.graduationsMax=70,this.slideMin=-45,this.slideMax=45,this.$container=$("#"+t),this.$overlay=$('<div class="overlay"></div>').appendTo(this.$container),this.$cursor=$('<div class="cursor"></div>').appendTo(this.$container),this.$graduations=$('<div class="graduations"></div>').appendTo(this.$container),this.$graduationsUl=$("<ul></ul>").appendTo(this.$graduations),this.$container.attr({role:"slider",tabindex:"0","aria-valuemin":this.slideMin,"aria-valuemax":this.slideMax,"aria-valuenow":"0","aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:0})});for(var i=this.graduationsMin;i<=this.graduationsMax;i++){var r=$('<li class="graduation" data-graduation="'+i+'"><div class="label">'+i+"</div></li>").appendTo(this.$graduationsUl);i%5==0&&r.addClass("main-graduation"),0===i&&r.addClass("selected")}this.$options=this.$container.find(".graduation"),this.addListener(this.$container,"resize",this._handleResize.bind(this)),this.addListener(this.$container,"tapstart",this._handleTapStart.bind(this)),this.addListener(Garnish.$bod,"tapmove",this._handleTapMove.bind(this)),this.addListener(Garnish.$bod,"tapend",this._handleTapEnd.bind(this)),this.addListener(this.$container,"keydown",this._handleKeypress.bind(this)),setTimeout((function(){n.graduationsCalculatedWidth=10*(n.$options.length-1),n.$graduationsUl.css("left",-n.graduationsCalculatedWidth/2+n.$container.width()/2)}),50)},_handleResize:function(){var t=this.valueToPosition(this.value);this.$graduationsUl.css("left",t)},_handleKeypress:function(t){var e=parseInt(this.$container.attr("aria-valuenow"),10);switch(t.keyCode){case Garnish.UP_KEY:case Garnish.RIGHT_KEY:this.setValue(e+1);break;case Garnish.DOWN_KEY:case Garnish.LEFT_KEY:this.setValue(e-1);break;case Garnish.PAGE_UP_KEY:this.setValue(e+10);break;case Garnish.PAGE_DOWN_KEY:this.setValue(e-10);break;case Garnish.HOME_KEY:this.setValue(this.slideMin);break;case Garnish.END_KEY:this.setValue(this.slideMax)}this.onChange()},_handleTapStart:function(t,e){t.preventDefault(),this.startPositionX=e.position.x,this.startLeft=this.$graduationsUl.position().left,this.dragging=!0,this.onStart()},_handleTapMove:function(t,e){if(this.dragging){t.preventDefault();var n=this.startPositionX-e.position.x,i=this.startLeft-n,r=this.positionToValue(i);this.setValue(r),this.onChange()}},setValue:function(t){var e=this.valueToPosition(t);t<this.slideMin?(t=this.slideMin,e=this.valueToPosition(t)):t>this.slideMax&&(t=this.slideMax,e=this.valueToPosition(t)),this.$graduationsUl.css("left",e),t>=this.slideMin&&t<=this.slideMax&&(this.$options.removeClass("selected"),$.each(this.$options,(function(e,n){$(n).data("graduation")>0&&$(n).data("graduation")<=t&&$(n).addClass("selected"),$(n).data("graduation")<0&&$(n).data("graduation")>=t&&$(n).addClass("selected"),0==$(n).data("graduation")&&$(n).addClass("selected")}))),this.$container.attr({"aria-valuenow":t,"aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:parseInt(t,10)})}),this.value=t},_handleTapEnd:function(t){this.dragging&&(t.preventDefault(),this.dragging=!1,this.onEnd())},positionToValue:function(t){var e=-1*this.graduationsMin,n=-1*(this.graduationsMin-this.graduationsMax);return(this.$graduations.width()/2+-1*t)/this.graduationsCalculatedWidth*n-e},valueToPosition:function(t){var e=-1*this.graduationsMin,n=-1*(this.graduationsMin-this.graduationsMax);return-((t+e)*this.graduationsCalculatedWidth/n-this.$graduations.width()/2)},onStart:function(){"function"==typeof this.settings.onChange&&this.settings.onStart(this)},onChange:function(){"function"==typeof this.settings.onChange&&this.settings.onChange(this)},onEnd:function(){"function"==typeof this.settings.onChange&&this.settings.onEnd(this)},defaultSettings:{onStart:$.noop,onChange:$.noop,onEnd:$.noop}})},5759:function(){!function(t){Craft.Slideout=Garnish.Base.extend({$outerContainer:null,$container:null,$shade:null,isOpen:!1,useMobileStyles:null,init:function(e,n){this.setSettings(n,Craft.Slideout.defaults),this.$outerContainer=t("<div/>",{class:"slideout-container hidden"}),this.$container=t("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes).attr("data-slideout","").addClass("slideout").append(e).data("slideout",this).appendTo(this.$outerContainer),this.$container.attr("id")&&(Craft.Slideout.instances[this.$container.attr("id")]=this),Garnish.addModalAttributes(this.$outerContainer),Craft.trapFocusWithin(this.$container),this.settings.autoOpen&&this.open()},open:function(){var e=this;if(!this.isOpen){this.setTriggerElement(document.activeElement),this._cancelTransitionListeners();var n=Craft.Preview.getActive()||Craft.LivePreview.getActive();if(this.useMobileStyles=n||Craft.useMobileStyles(),this.$outerContainer.removeClass("so-mobile so-lp"),this.$container.removeClass("so-mobile so-lp"),n?(this.$outerContainer.addClass("so-lp"),this.$container.addClass("so-lp")):this.useMobileStyles&&this.$container.addClass("so-mobile"),n||!this.useMobileStyles?(this.$shade||(this.$shade=t('<div class="slideout-shade"/>'),this.settings.closeOnShadeClick&&this.addListener(this.$shade,"click",(function(t){t.stopPropagation(),e.close()}))),this.$shade.appendTo(Garnish.$bod).show()):this.$shade&&(this.$shade.remove(),delete this.$shade),this.$outerContainer.appendTo(Garnish.$bod).removeClass("hidden"),n){this.updateWidthsForPreviewPane(n);var i=function(){e.isOpen&&e.updateWidthsForPreviewPane(n)};n.on("drag",i),n.on("beforeClose",(function(){n.off("drag",i)}))}this.useMobileStyles?this.$container.css("top","100vh").css(Garnish.ltr?"left":"right",""):this.$container.css("top","").css(Garnish.ltr?"left":"right","100vw"),this.$container.one("transitionend.slideout",(function(){Craft.setFocusWithin(e.$container)})),this.$shade&&(this.$shade[0].offsetWidth,this.$shade.addClass("so-visible")),this.$container[0].offsetWidth,Craft.Slideout.addPanel(this),this.enable(),Garnish.uiLayerManager.addLayer(this.$outerContainer),Garnish.hideModalBackgroundLayers(),this.settings.closeOnEsc&&Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){e.close()})),this.isOpen=!0,this.trigger("open")}},updateWidthsForPreviewPane:function(t){var e=t.$editorContainer.width()-1;this.$shade&&this.$shade.width(e),this.$outerContainer.css("width","calc(".concat(e,"px - var(--m) * 2)"))},setTriggerElement:function(t){this.settings.triggerElement=t},close:function(){var t=this;this.isOpen&&(this.trigger("beforeClose"),this.disable(),this.isOpen=!1,this._cancelTransitionListeners(),this.$shade&&this.$shade.removeClass("so-visible").one("transitionend.slideout",(function(){t.$shade.hide()})),Craft.Slideout.removePanel(this),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$container.one("transitionend.slideout",(function(){t.$outerContainer.addClass("hidden"),t.trigger("close")})),this.settings.triggerElement&&this.settings.triggerElement.focus())},_cancelTransitionListeners:function(){this.$shade&&this.$shade.off("transitionend.slideout"),this.$container.off("transitionend.slideout")},destroy:function(){var t=this;this.$shade&&(this.$shade.remove(),this.$shade=null),this.$outerContainer.remove(),this.$outerContainer=null,this.$container=null,Craft.Slideout.instances=Craft.filterObject(Craft.Slideout.instances,(function(e){return e!==t})),this.base()}},{defaults:{containerElement:"div",containerAttributes:{},autoOpen:!0,closeOnEsc:!0,closeOnShadeClick:!0,triggerElement:null},instances:{},openPanels:[],addPanel:function(t){Craft.Slideout.openPanels.unshift(t),t.useMobileStyles?t.$container.css("top",0):Craft.Slideout.updateStyles()},removePanel:function(t){Craft.Slideout.openPanels=Craft.Slideout.openPanels.filter((function(e){return e!==t})),t.useMobileStyles?t.$container.css("top","100vh"):(t.$container.css(Garnish.ltr?"left":"right","100vw"),Craft.Slideout.updateStyles())},updateStyles:function(){var t=Craft.Slideout.openPanels.length;Craft.Slideout.openPanels.forEach((function(e,n){e.$container.css(Garnish.ltr?"left":"right","".concat((t-n)/t*45,"vw"))})),0!==t?Garnish.$bod.addClass("no-scroll"):Garnish.$bod.removeClass("no-scroll")}})}(jQuery)},5185:function(){Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),Craft.limitAutoSlugsToAscii&&(t=Craft.asciiString(t,this.settings.charMap)),Craft.allowUppercaseInSlug||(t=t.toLowerCase());var e=Craft.filterArray(XRegExp.matchChain(t,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return e.length?e.join(Craft.slugWordSeparator):""}})},8030:function(){Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(t,e,n){this.id=t,this.$container=$(e),this.setSettings(n,Craft.Structure.defaults),this.$container.data("structure")&&(console.warn("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&$.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),void 0===this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var i=this.$container.find("ul").prev(".row"),r=0;r<i.length;r++){var a=$(i[r]),s=a.parent(),o=$('<div class="toggle" title="'+Craft.t("app","Show/hide children")+'"/>').prependTo(a);-1!==$.inArray(a.children(".element").data("id"),this.state.collapsedElementIds)&&s.addClass("collapsed"),this.initToggle(o)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(t){var e=this;t.on("click",(function(t){var n=$(t.currentTarget).closest("li"),i=n.children(".row").find(".element:first").data("id"),r=$.inArray(i,e.state.collapsedElementIds);n.hasClass("collapsed")?(n.removeClass("collapsed"),-1!==r&&e.state.collapsedElementIds.splice(r,1)):(n.addClass("collapsed"),-1===r&&e.state.collapsedElementIds.push(i)),e.settings.storageKey&&Craft.setLocalStorage(e.settings.storageKey,e.state)}))},initNewChildMenus:function(t){this.addListener(t,"click","onNewChildMenuClick")},onNewChildMenuClick:function(t){var e=$(t.currentTarget);if(!e.data("menubtn")){var n=e.parent().children(".element").data("id"),i=Craft.getUrl(this.settings.newChildUrl,"parentId="+n);$('<div class="menu"><ul><li><a href="'+i+'">'+Craft.t("app","New child")+"</a></li></ul></div>").insertAfter(e),new Garnish.MenuBtn(e).showMenu()}},getIndent:function(t){return Craft.Structure.baseIndent+(t-1)*Craft.Structure.nestedIndent},addElement:function(t){var e=$('<li data-level="1"/>').appendTo(this.$container),n=$('<div class="row" style="margin-'+Craft.left+": -"+Craft.Structure.baseIndent+"px; padding-"+Craft.left+": "+Craft.Structure.baseIndent+'px;">').appendTo(e);if(n.append(t),this.settings.sortable&&(n.append('<a class="move icon" title="'+Craft.t("app","Move")+'"></a>'),this.structureDrag.addItems(e)),this.settings.newChildUrl){var i=$('<a class="add icon" title="'+Craft.t("app","New child")+'"></a>').appendTo(n);this.initNewChildMenus(i)}n.css("margin-bottom",-30),n.velocity({"margin-bottom":0},"fast")},removeElement:function(t){var e,n=this,i=t.parent().parent();this.settings.sortable&&this.structureDrag.removeItems(i),i.siblings().length||(e=i.parent()),i.css("visibility","hidden").velocity({marginBottom:-i.height()},"fast",(function(){i.remove(),void 0!==e&&n._removeUl(e)}))},_removeUl:function(t){t.siblings(".row").children(".toggle").remove(),t.remove()},destroy:function(){this.$container.removeData("structure"),this.base()}},{baseIndent:8,nestedIndent:35,defaults:{storageKey:null,sortable:!1,newChildUrl:null,maxLevels:null}})},3096:function(){Craft.StructureDrag=Garnish.Drag.extend({structure:null,maxLevels:null,draggeeLevel:null,$helperLi:null,$targets:null,draggeeHeight:null,init:function(t,e){this.structure=t,this.maxLevels=e,this.$insertion=$('<li class="draginsertion"/>');var n=this.structure.$container.find("li");this.base(n,{handle:".element:first, .move:first",helper:this.getHelper.bind(this)})},getHelper:function(t){this.$helperLi=t;var e=$('<ul class="structure draghelper"/>').append(t);return t.css("padding-"+Craft.left,this.$draggee.css("padding-"+Craft.left)),t.find(".move").removeAttr("title"),e},onDragStart:function(){var t=this;this.$targets=$(),this.findTargets(this.structure.$container),this.draggeeLevel=0;var e=this.$draggee;do{this.draggeeLevel++,e=e.find("> ul > li")}while(e.length);this.draggeeHeight=this.$draggee.height(),this.$draggee.velocity({height:0},"fast",(function(){t.$draggee.addClass("hidden")})),this.base(),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&this.cancelDrag()}))},findTargets:function(t){for(var e=t.children().not(this.$draggee),n=0;n<e.length;n++){var i=$(e[n]);this.$targets=this.$targets.add(i.children(".row")),i.hasClass("collapsed")||this.findTargets(i.children("ul"))}},onDrag:function(){for(this._.$closestTarget&&(this._.$closestTarget.removeClass("draghover"),this.$insertion.remove()),this._.$closestTarget=null,this._.closestTargetPos=null,this._.closestTargetYDiff=null,this._.closestTargetOffset=null,this._.closestTargetHeight=null,this._.i=0;this._.i<this.$targets.length&&(this._.$target=$(this.$targets[this._.i]),this._.targetOffset=this._.$target.offset(),this._.targetHeight=this._.$target.outerHeight(),this._.targetYMidpoint=this._.targetOffset.top+this._.targetHeight/2,this._.targetYDiff=Math.abs(this.mouseY-this._.targetYMidpoint),0===this._.i||this.mouseY>=this._.targetOffset.top+5&&this._.targetYDiff<this._.closestTargetYDiff);this._.i++)this._.$closestTarget=this._.$target,this._.closestTargetPos=this._.i,this._.closestTargetYDiff=this._.targetYDiff,this._.closestTargetOffset=this._.targetOffset,this._.closestTargetHeight=this._.targetHeight;if(this._.$closestTarget)if(0===this._.closestTargetPos&&this.mouseY<this._.closestTargetOffset.top+5)this.$insertion.prependTo(this.structure.$container);else if(this._.$closestTargetLi=this._.$closestTarget.parent(),this._.closestTargetLevel=this._.$closestTargetLi.data("level"),this._.closestTargetPos<this.$targets.length-1?(this._.$nextTargetLi=$(this.$targets[this._.closestTargetPos+1]).parent(),this._.nextTargetLevel=this._.$nextTargetLi.data("level")):(this._.$nextTargetLi=null,this._.nextTargetLevel=null),this._.hoveringBetweenRows=this.mouseY>=this._.closestTargetOffset.top+this._.closestTargetHeight-5,this._.$nextTargetLi&&this._.nextTargetLevel==this._.closestTargetLevel)this._.hoveringBetweenRows?(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel-1)&&this.$insertion.insertAfter(this._.$closestTargetLi):(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover");else if(this._.$nextTargetLi&&this._.nextTargetLevel>this._.closestTargetLevel)(!this.maxLevels||this.maxLevels>=this._.nextTargetLevel+this.draggeeLevel-1)&&(this._.hoveringBetweenRows?this.$insertion.insertBefore(this._.$nextTargetLi):(this._.$closestTarget.addClass("draghover"),this.$insertion.appendTo(this._.$closestTargetLi.children("ul"))));else if(this._.hoveringBetweenRows){for(this._.draggeeX=this.mouseX-this.targetItemMouseDiffX,"rtl"===Craft.orientation&&(this._.draggeeX+=this.$helperLi.width()),this._.$parentLis=this._.$closestTarget.parentsUntil(this.structure.$container,"li"),this._.$closestParentLi=null,this._.closestParentLiXDiff=null,this._.closestParentLevel=null,this._.i=0;this._.i<this._.$parentLis.length;this._.i++)this._.$parentLi=$(this._.$parentLis[this._.i]),this._.parentLiX=this._.$parentLi.offset().left,"rtl"===Craft.orientation&&(this._.parentLiX+=this._.$parentLi.width()),this._.parentLiXDiff=Math.abs(this._.parentLiX-this._.draggeeX),this._.parentLevel=this._.$parentLi.data("level"),(!this.maxLevels||this.maxLevels>=this._.parentLevel+this.draggeeLevel-1)&&(!this._.$closestParentLi||this._.parentLiXDiff<this._.closestParentLiXDiff&&(!this._.$nextTargetLi||this._.parentLevel>=this._.nextTargetLevel))&&(this._.$closestParentLi=this._.$parentLi,this._.closestParentLiXDiff=this._.parentLiXDiff,this._.closestParentLevel=this._.parentLevel);this._.$closestParentLi&&this.$insertion.insertAfter(this._.$closestParentLi)}else(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover")},cancelDrag:function(){this.$insertion.remove(),this._.$closestTarget&&this._.$closestTarget.removeClass("draghover"),this.onMouseUp()},onDragStop:function(){var t=this;if(this._.$closestTarget&&(this.$insertion.parent().length||this._.$closestTarget.hasClass("draghover"))){var e,n;if(this.$draggee.siblings().length||(e=this.$draggee.parent()),this.$insertion.parent().length){var i=this.$insertion.next().add(this.$insertion.prev());-1===$.inArray(this.$draggee[0],i)?(this.$insertion.replaceWith(this.$draggee),n=!0):(this.$insertion.remove(),n=!1)}else{var r=this._.$closestTargetLi.children("ul");if(e&&r.length&&r[0]===e[0])n=!1;else{if(r.length)this._.$closestTargetLi.hasClass("collapsed")&&this._.$closestTarget.children(".toggle").trigger("click");else{var a=$('<div class="toggle" title="'+Craft.t("app","Show/hide children")+'"/>').prependTo(this._.$closestTarget);this.structure.initToggle(a),r=$("<ul>").appendTo(this._.$closestTargetLi)}this.$draggee.appendTo(r),n=!0}}if(this._.$closestTarget.removeClass("draghover"),n){e&&this.structure._removeUl(e);var s,o=this.$draggee.parentsUntil(this.structure.$container,"li").length+1;o!=this.$draggee.data("level")&&(1==this.$draggee.data("level")?((s={})["padding-"+Craft.left]=38,this.$helperLi.velocity(s,"fast")):1==o&&((s={})["padding-"+Craft.left]=Craft.Structure.baseIndent,this.$helperLi.velocity(s,"fast")),this.setLevel(this.$draggee,o));var l=this.$draggee.children(".row").children(".element"),c={structureId:this.structure.id,elementId:l.data("id"),siteId:l.data("site-id"),prevId:this.$draggee.prev().children(".row").children(".element").data("id"),parentId:this.$draggee.parent("ul").parent("li").children(".row").children(".element").data("id")};Craft.sendActionRequest("POST","structures/move-element",{data:c}).then((function(t){Craft.cp.displaySuccess(Craft.t("app","New order saved."))}))}}this.$draggee.velocity("stop").removeClass("hidden").velocity({height:this.draggeeHeight},"fast",(function(){t.$draggee.css("height","auto")})),this.returnHelpersToDraggees(),this.base()},setLevel:function(t,e){t.data("level",e);var n=this.structure.getIndent(e),i={};i["margin-"+Craft.left]="-"+n+"px",i["padding-"+Craft.left]=n+"px",this.$draggee.children(".row").css(i);for(var r=t.children("ul").children(),a=0;a<r.length;a++)this.setLevel($(r[a]),e+1)}})},53:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(){"use strict";n=function(){return i};var e,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function $(){}function C(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=C.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return $.prototype=C,s(x,"constructor",{value:C,configurable:!0}),s(C,"constructor",{value:$,configurable:!0}),$.displayName=u(C,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===$||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,C):(t.__proto__=C,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},i}function i(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function r(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var s=t.apply(e,n);function o(t){i(s,r,a,o,l,"next",t)}function l(t){i(s,r,a,o,l,"throw",t)}o(void 0)}))}}var a;Craft.TableElementIndexView=Craft.BaseElementIndexView.extend({$table:null,$tableCaption:null,$selectedSortHeader:null,$statusMessage:null,$editBtn:null,$saveBtn:null,$cancelBtn:null,tableSort:null,_totalVisiblePostStructureTableDraggee:null,_morePendingPostStructureTableDraggee:!1,_broadcastListener:null,initialSerializedValue:null,getElementContainer:function(){return this.$table=this.$container.find("table:first"),this.$table.children("tbody:first")},afterInit:function(){var t=this;this.$tableCaption=this.$table.find("caption"),this.initTableHeaders(),this.addListener(Garnish.$win,"resize",this.setContainerHeight),this.setContainerHeight(),(this.settings.sortable||this.elementIndex.isAdministrative&&"structure"===this.elementIndex.viewMode&&Garnish.hasAttr(this.$table,"data-structure-id"))&&!this.elementIndex.inlineEditing&&(this.tableSort=new Craft.ElementTableSorter(this,this.getAllElements(),{structureId:this.$table.data("structure-id"),maxLevels:this.$table.attr("data-max-levels"),onSortChange:function(){t.settings.onSortChange(t.tableSort.$draggee)}})),"structure"!==this.elementIndex.viewMode||this.elementIndex.inlineEditing||this.addListener(this.$elementContainer,"click",(function(t){var e=$(t.target);e.hasClass("toggle")&&!1===this._collapseElement(e)&&this._expandElement(e)})),this.elementIndex.isAdministrative&&!1!==this.elementIndex.settings.inlineEditable&&this.$elementContainer.has("> tr[data-id] > th .element[data-editable]")&&this.initForInlineEditing(),Craft.messageReceiver&&(this._broadcastListener=function(e){if("saveElement"===e.data.event){var n=t.$table.find('> tbody > tr[data-id="'.concat(e.data.id,'"]'));if(n.length){var i={elementType:t.elementIndex.elementType,source:t.elementIndex.sourceKey,id:e.data.id,siteId:t.elementIndex.siteId};Craft.sendActionRequest("POST","element-indexes/element-table-html",{data:i}).then((function(t){for(var e=t.data,i=0;i<n.length;i++){var r=n.eq(i);for(var a in r.find("> th[data-titlecell] .element").replaceWith(e.elementHtml),e.attributeHtml)e.attributeHtml.hasOwnProperty(a)&&r.find('> td[data-attr="'.concat(a,'"]')).html(e.attributeHtml[a])}Craft.cp.elementThumbLoader.load(n)}))}}},Craft.messageReceiver.addEventListener("message",this._broadcastListener))},initForInlineEditing:function(){var t=this;this.elementIndex.inlineEditing?(Craft.initUiElements(this.$elementContainer),this.initialSerializedValue=this.serializeInputs(),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.$cancelBtn=Craft.ui.createButton({label:Craft.t("app","Cancel"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.addListener(this.$saveBtn,"activate",(function(){t.$saveBtn.addClass("loading"),t.saveChanges().then((function(e){if(e.errors){for(var n in e.errors)if(e.errors.hasOwnProperty(n)){var i=t.$elementContainer.children('[data-id="'.concat(n,'"]'));for(var r in e.errors[n])i.find('[name*="'.concat(r,'"]')).closest("td").addClass("errors")}return t.elementIndex.setIndexAvailable(),void Craft.cp.displayError(Craft.t("app","Could not save due to validation errors."))}Craft.cp.displaySuccess(Craft.t("app","Changes saved.")),t.elementIndex.inlineEditing=!1,t.elementIndex.updateElements(!0,!1)})).catch((function(){t.elementIndex.setIndexAvailable(),Craft.cp.displayError()})).finally((function(){t.$saveBtn.removeClass("loading")}))})),this.addListener(this.$cancelBtn,"activate",(function(){t.$cancelBtn.addClass("loading"),t.elementIndex.inlineEditing=!1,t.elementIndex.updateElements(!0,!1)})),this.addListener(this.$elementContainer,"keydown",(function(e){e.keyCode===Garnish.RETURN_KEY&&Garnish.isCtrlKeyPressed(e)?t.$saveBtn.trigger("click"):e.keyCode===Garnish.S_KEY&&Garnish.isCtrlKeyPressed(e)&&(e.stopPropagation(),e.preventDefault(),t.$saveBtn.trigger("click"))}))):(this.$editBtn=Craft.ui.createButton({label:Craft.t("app","Edit"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.addListener(this.$editBtn,"activate",(function(){t.$editBtn.addClass("loading"),t.elementIndex.inlineEditing=!0,t.elementIndex.updateElements(!0,!1)})))},serializeInputs:function(){var t=Garnish.getPostData(this.$elementContainer),e=[];for(var n in t)e.push(encodeURIComponent("".concat(n,"=").concat(t[n])));return e.join("&")},getDeltaInputChanges:function(){var t=this,e=this.$elementContainer.children().toArray().map((function(e){return"".concat(t.elementIndex.nestedInputNamespace,"[element-").concat($(e).data("id"),"]")}));return Craft.findDeltaData(this.initialSerializedValue,this.serializeInputs(),e)},haveInputsChanged:function(){return this.serializeInputs()!==this.initialSerializedValue},saveChanges:(a=r(n().mark((function t(){var e,i;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=this.getDeltaInputChanges()){t.next=3;break}return t.abrupt("return",{});case 3:return e+="&"+$.param({elementType:this.elementIndex.elementType,siteId:this.elementIndex.siteId,namespace:this.elementIndex.nestedInputNamespace}),t.next=6,Craft.sendActionRequest("POST","element-indexes/save-elements",{data:e});case 6:return i=t.sent,t.abrupt("return",i.data);case 8:case"end":return t.stop()}}),t,this)}))),function(){return a.apply(this,arguments)}),initTableHeaders:function(){if(!this.settings.sortable&&!this.elementIndex.inlineEditing){var t,n;if("structure"===this.elementIndex.viewMode)t="structure",n="asc";else{var i=function(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(this.elementIndex.getSortAttributeAndDirection(),2);t=i[0],n=i[1]}for(var r=this.$table.children("thead").children().children("[data-attribute]"),a=0;a<r.length;a++){var s=r.eq(a),o=s.attr("data-attribute"),l="none";o===t?(this.$selectedSortHeader=s,l="asc"===n?"ascending":"descending",s.addClass("ordered "+n),this.makeColumnSortable(s,!0)):this.elementIndex.getSortOption(o)&&this.makeColumnSortable(s),s.attr("aria-sort",l)}}},makeColumnSortable:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t.addClass("orderable");var n=t.html(),i=this.$tableCaption.find("[data-sort-instructions]"),r=$("<button/>",{id:"".concat(this.elementIndex.idPrefix,"-").concat(t.attr("data-attribute")),type:"button","aria-pressed":"false"}).html(n);i.length&&r.attr("aria-describedby",i.attr("id")),e?(r.attr("aria-pressed","true"),r.on("click",this._handleSelectedSortHeaderClick.bind(this))):r.on("click",this._handleUnselectedSortHeaderClick.bind(this)),t.empty().append(r)},isVerticalList:function(){return!0},getTotalVisible:function(){return this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee:this._totalVisible},setTotalVisible:function(t){this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee=t:this._totalVisible=t},getMorePending:function(){return this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee:this._morePending},setMorePending:function(t){this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee=t:this._morePending=this._morePendingPostStructureTableDraggee=t},getLoadMoreParams:function(){var t=this.base();return this._isStructureTableDraggingLastElements()&&(t.criteria.positionedAfter=this.tableSort.$targetItem.data("id")),t},appendElements:function(t){this.base(t),this.tableSort&&this.tableSort.addItems(t),Craft.cp.updateResponsiveTables()},setContainerHeight:function(t){var e=this;window.requestAnimationFrame((function(){var t=e.$container.find(".tablepane");if(t.length){var n=$("#content > #footer").outerHeight(!0)||0,i=parseInt(getComputedStyle(t[0]).getPropertyValue("--padding"),10),r=window.innerHeight-t.offset().top-n-i;t.css("max-height",r)}}))},_collapseElement:function(t,e){if(!e&&!t.hasClass("expanded"))return!1;t.removeClass("expanded"),t.attr("aria-expanded","false");for(var n=t.closest("tr"),i=n.data("id"),r=n.data("level"),a=n.next();a.length;){if(!Garnish.hasAttr(a,"data-spinnerrow")){if(a.data("level")<=r)break;this.elementSelect&&this.elementSelect.removeItems(a),this.tableSort&&this.tableSort.removeItems(a),this._totalVisible--}var s=a.next();a.remove(),a=s}this.elementIndex.instanceState.collapsedElementIds||(this.elementIndex.instanceState.collapsedElementIds=[]),this.elementIndex.instanceState.collapsedElementIds.push(i),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds),this.maybeLoadMore()},_expandElement:function(t,e){var i=this;if(!e&&t.hasClass("expanded"))return!1;if(t.addClass("expanded"),t.attr("aria-expanded","true"),this.elementIndex.instanceState.collapsedElementIds){var a=t.closest("tr"),s=a.data("id"),o=$.inArray(s,this.elementIndex.instanceState.collapsedElementIds);if(-1!==o){this.elementIndex.instanceState.collapsedElementIds.splice(o,1),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds);var l=this._createSpinnerRowAfter(a),c=$.extend(!0,{},this.settings.params);c.criteria.descendantOf=s,Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:c}).then(function(){var t=r(n().mark((function t(e){var r,a,s,o;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l.parent().length){t.next=2;break}return t.abrupt("return");case 2:return r=$(e.data.html),a=i._totalVisible+r.length,(s=i.settings.batchSize&&r.length===i.settings.batchSize)?(o=l.nextAll(),i.elementSelect&&i.elementSelect.removeItems(o),i.tableSort&&i.tableSort.removeItems(o),o.remove(),a-=o.length):s=i._morePending,l.replaceWith(r),i.thumbLoader.load(r),(i.elementIndex.actions||i.settings.selectable)&&(i.elementSelect.addItems(r.filter(":not(.disabled)")),i.elementIndex.updateActionTriggers()),i.tableSort&&i.tableSort.addItems(r),t.next=12,Craft.appendHeadHtml(e.data.headHtml);case 12:return t.next=14,Craft.appendBodyHtml(e.data.bodyHtml);case 14:Craft.cp.updateResponsiveTables(),i.setTotalVisible(a),i.setMorePending(s),i.maybeLoadMore();case 18:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){Craft.cp.displayError(),l.parent().length}))}}},_createSpinnerRowAfter:function(t){return $('<tr data-spinnerrow><td class="centeralign" colspan="'+t.children().length+'"><div class="spinner"/></td></tr>').insertAfter(t)},_isStructureTableDraggingLastElements:function(){return this.tableSort&&this.tableSort.dragging&&this.tableSort.draggingLastElements},_handleSelectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var n="asc"===this.elementIndex.getSelectedSortDirection()?"desc":"asc";this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortDirection(n),this._handleSortHeaderClick(t,e)}},_handleUnselectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var n=e.attr("data-attribute");this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortAttribute(n),this._handleSortHeaderClick(t,e)}},_handleSortHeaderClick:function(t,e){this.$selectedSortHeader&&this.$selectedSortHeader.removeClass("ordered asc desc"),e.addClass("ordered loading"),this.elementIndex.updateElements(),this.elementIndex.setIndexAvailable()},_updateTableAttributes:function(t,e){var n=t.closest("tr");for(var i in e)e.hasOwnProperty(i)&&n.children('[data-attr="'+i+'"]:first').html(e[i])},destroy:function(){this.$editBtn?this.$editBtn.remove():this.$cancelBtn&&(this.$saveBtn.remove(),this.$cancelBtn.remove()),this._broadcastListener&&(Craft.messageReceiver.removeEventListener("message",this._broadcastListener),delete this._broadcastListener),this.base()}})},7745:function(){Craft.Tabs=Garnish.Base.extend({$container:null,$tablist:null,$menuBtn:null,$tabs:null,$firstTab:null,$lastTab:null,$selectedTab:null,$focusableTab:null,menu:null,init:function(t){var e=this;this.$container=$(t),this.$tablist=this.$container.find('> [role="tablist"]:first'),this.$tabs=this.$tablist.find('> [role="tab"]'),this.$firstTab=this.$tabs.first(),this.$lastTab=this.$tabs.last(),this.$selectedTab=this.$tabs.filter(".sel:first"),this.$focusableTab=this.$tabs.filter("[tabindex=0]:first"),this.$menuBtn=this.$container.find("> .menubtn:first").disclosureMenu(),this.menu=this.$menuBtn.data("trigger").$container,this.$container.data("tabs")&&(console.warn("Double-instantiating a tab manager on an element"),this.$container.data("tabs").destroy()),this.$container.data("tabs",this);for(var n=0;n<this.$tabs.length;n++){var i=this.$tabs.eq(n),r=i.attr("href");r&&"#"===r.charAt(0)&&(this.addListener(i,"keydown",(function(t){[Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)&&(t.preventDefault(),e.selectTab(t.currentTarget,!0))})),this.addListener(i,"click",(function(t){t.preventDefault(),e.selectTab(t.currentTarget,!0)}))),this.addListener(i,"keydown",(function(t){var n;[Garnish.LEFT_KEY,Garnish.RIGHT_KEY].includes(t.keyCode)&&$.contains(e.$tablist[0],t.currentTarget)?n=t.keyCode===("ltr"===Craft.orientation?Garnish.LEFT_KEY:Garnish.RIGHT_KEY)?(n=$(t.currentTarget).prevAll('[role="tab"]:not(.hidden):first')).length?n:e.$lastTab:(n=$(t.currentTarget).nextAll('[role="tab"]:not(.hidden):first')).length?n:e.$firstTab:t.keyCode!==Garnish.HOME_KEY&&t.keyCode!==Garnish.END_KEY||(n=t.keyCode===Garnish.HOME_KEY?e.$firstTab:e.$lastTab),n&&(t.preventDefault(),e.makeTabFocusable(n),n.focus(),e.scrollToTab(n))}))}this.updateMenuBtn(),Garnish.$win.on("resize",(function(){e.updateMenuBtn()}));var a=this.getMenuOptions();this.addListener(a,"activate",(function(t){var n=$(t.currentTarget),i=n.attr("href");i&&"#"===i.charAt(0)&&t.preventDefault(),e.selectTab(n.data("id")),e.$menuBtn.data("trigger").hide()}))},getMenuOptions:function(){return this.menu.find("a")},selectTab:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this._getTab(t);if(n[0]!==this.$selectedTab[0]){this.deselectTab(),this.$selectedTab=n.addClass("sel").attr("aria-selected","true"),this.makeTabFocusable(n),e&&n.trigger("focus"),this.scrollToTab(n),this.getMenuOptions().removeClass("sel").removeAttr("aria-current"),this.getMenuOptions().filter('[data-id="'.concat(n.data("id"),'"]')).addClass("sel").attr("aria-current","true"),this.trigger("selectTab",{$tab:n}),$("#content").trigger("scroll");var i=n.closest(".slideout-container");i.length&&i.find(".so-content").trigger("scroll")}},deselectTab:function(){var t=this.$selectedTab.removeClass("sel").attr("aria-selected","false");this.$selectedTab=null,this.trigger("deselectTab",{$tab:t})},makeTabFocusable:function(t){var e=this._getTab(t);e[0]!==this.$focusableTab[0]&&(this.$focusableTab.attr("tabindex","-1"),this.$focusableTab=e.attr("tabindex","0"))},scrollToTab:function(t){var e=this._getTab(t),n=this.$tablist.scrollLeft(),i=e.offset().left-this.$tablist.offset().left,r=!1;if(i<0)r=n+i-24;else{var a=e.outerWidth(),s=this.$tablist.prop("clientWidth");i+a>s&&(r=n+(i-(s-a))+24)}!1!==r&&this.$tablist.scrollLeft(r)},updateMenuBtn:function(){Math.floor(this.$tablist.prop("scrollWidth")-48)>this.$container.prop("clientWidth")?(this.$tablist.addClass("scrollable"),this.$menuBtn.removeClass("hidden")):(this.$tablist.removeClass("scrollable"),this.$menuBtn.addClass("hidden"))},_getTab:function(t){if(t instanceof jQuery)return t;if(t instanceof HTMLElement)return $(t);if("string"!=typeof t)throw"Invalid tab ID";var e=this.$tabs.filter('[data-id="'.concat(t,'"]'));if(!e.length)throw"Invalid tab ID: ".concat(t);return e},destroy:function(){this.$container.removeData("tabs"),this.base()}})},5074:function(){Craft.TagSelectInput=Craft.BaseElementSelectInput.extend({searchTimeout:null,searchMenu:null,$container:null,$elementsContainer:null,$elements:null,$addTagInput:null,$spinner:null,_ignoreBlur:!1,init:function(t){var e=this;if(!$.isPlainObject(t)){for(var n={},i=["id","name","tagGroupId","sourceElementId"],r=0;r<i.length&&void 0!==arguments[r];r++)n[i[r]]=arguments[r];t=n}this.base($.extend({},Craft.TagSelectInput.defaults,t)),this.$addTagInput=this.$container.children(".add").children(".text"),this.$spinner=this.$addTagInput.next(),this.addListener(this.$addTagInput,"input",(function(){e.searchTimeout&&clearTimeout(e.searchTimeout),e.searchTimeout=setTimeout(e.searchForTags.bind(e),500)})),this.addListener(this.$addTagInput,"keydown",(function(t){switch(t.keyCode===Garnish.RETURN_KEY&&t.preventDefault(),t.keyCode){case Garnish.RETURN_KEY:return t.preventDefault(),void(this.searchMenu&&this.selectTag(this.searchMenu.$options.filter(".hover")));case Garnish.DOWN_KEY:if(t.preventDefault(),this.searchMenu){var e=this.searchMenu.$options.filter(".hover");if(e.length){var n=e.parent().nextAll().find("button:not(.disabled)").first();n.length&&this.focusOption(n)}else this.focusOption(this.searchMenu.$options.eq(0))}return;case Garnish.UP_KEY:if(t.preventDefault(),this.searchMenu){var i=this.searchMenu.$options.filter(".hover");if(i.length){var r=i.parent().prevAll().find("button:not(.disabled)").last();r.length&&this.focusOption(r)}else this.focusOption(this.searchMenu.$options.eq(this.searchMenu.$options.length-1))}return}})),this.addListener(this.$addTagInput,"focus",(function(){this.searchMenu&&this.searchMenu.show()})),this.addListener(this.$addTagInput,"blur",(function(){var t=this;this._ignoreBlur?this._ignoreBlur=!1:setTimeout((function(){t.searchMenu&&t.searchMenu.hide()}),1)}))},focusOption:function(t){this.searchMenu.$options.removeClass("hover"),t.addClass("hover"),this.searchMenu.$menuList.attr("aria-activedescendant",t.attr("id"))},getAddElementsBtn:function(){return[]},getElementSortAxis:function(){return"x"},searchForTags:function(){var t=this;if(this.searchMenu&&this.killSearchMenu(),this.$addTagInput.val()){this.$spinner.removeClass("hidden");for(var e=[],n=0;n<this.$elements.length;n++){var i=$(this.$elements[n]).data("id");i&&e.push(i)}this.settings.sourceElementId&&!this.settings.allowSelfRelations&&e.push(this.settings.sourceElementId);var r={search:this.$addTagInput.val(),tagGroupId:this.settings.tagGroupId,excludeIds:e};Craft.sendActionRequest("POST","tags/search-for-tags",{data:r}).then((function(e){t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden");for(var n,i=$('<div class="menu tagmenu"/>').appendTo(Garnish.$bod),a=$("<ul/>").appendTo(i),s=0;s<e.data.tags.length;s++)n=$("<li/>").appendTo(a),$('<button class="menu-item" data-icon="tag"/>').appendTo(n).text(e.data.tags[s].title).data("id",e.data.tags[s].id).addClass(e.data.tags[s].exclude?"disabled":"");e.data.exactMatch||(n=$("<li/>").appendTo(a),$('<button class="menu-item" data-icon="plus"/>').appendTo(n).text(r.search)),a.find("button:not(.disabled):first").addClass("hover"),t.searchMenu=new Garnish.Menu(i,{attachToElement:t.$addTagInput,onOptionSelect:t.selectTag.bind(t)}),t.addListener(i,"mousedown",(function(){t._ignoreBlur=!0})),t.searchMenu.show()})).catch((function(e){e.response,t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden")}))}else this.$spinner.addClass("hidden")},selectTag:function(t){var e=this,n=$(t);if(!n.hasClass("disabled")){var i=n.data("id"),r=n.text(),a=$("<div/>",{class:"chip element small removable","data-id":i,"data-site-id":this.settings.targetSiteId,"data-label":r,"data-editable":"1"}),s=$("<li/>").appendTo(this.$elementsContainer);a.appendTo(s);var o=$("<div/>",{class:"chip-content"}).appendTo(a),l=$("<div/>",{class:"label"}).appendTo(o),c=$("<a/>",{class:"label-link"}).appendTo(l);$("<span/>",{class:"title",text:r}).appendTo(c),$("<div/>",{class:"chip-actions"}).appendTo(o);var h=$("<input/>",{type:"hidden",name:this.settings.name+"[]",value:i}).appendTo(o);if(this.$elements=this.$elements.add(a),this.addElements(a),this.killSearchMenu(),this.$addTagInput.val(""),this.$addTagInput.trigger("focus"),!i){a.addClass("loading disabled");var u={groupId:this.settings.tagGroupId,title:r};Craft.sendActionRequest("POST","tags/create-tag",{data:u}).then((function(t){a.attr("data-id",t.data.id),h.val(t.data.id),a.removeClass("loading disabled")})).catch((function(t){t.response,e.removeElement(a),Craft.cp.displayError(Craft.t("app","A server error occurred."))}))}}},killSearchMenu:function(){this.searchMenu.hide(),this.searchMenu.destroy(),this.searchMenu=null}},{defaults:{tagGroupId:null}})},3958:function(){Craft.ThumbsElementIndexView=Craft.BaseElementIndexView.extend({getElementContainer:function(){return this.$container.children("ul")}})},3079:function(){Craft.Tooltip=Garnish.Base.extend({_$trigger:null,_message:null,hud:null,$p:null,hoverTimeout:null,triggerHit:!1,shownViaHover:!1,init:function(t,e){var n=this;this.$trigger=$(t),this.message=e,"BUTTON"!==this.$trigger[0].tagName&&"button"!==this.$trigger.attr("role")&&console.error("Toggletip buttons need to be <button> elements."),this.addListener(Garnish.$bod,"mousemove",(function(t){n.triggerHit!==(n.triggerHit=Garnish.hitTest(t.pageX,t.pageY,n._$trigger))&&(n.triggerHit?n.showing||(n.hoverTimeout=setTimeout((function(){n.show(),n.shownViaHover=!0}),500)):(clearTimeout(n.hoverTimeout),n.shownViaHover&&n.hide()))}))},get showing(){return this.hud&&this.hud.showing},get $trigger(){return this._$trigger},set $trigger(t){var e=this;this._$trigger&&this.removeAllListeners(this._$trigger),this._$trigger=t,this._$trigger.on("blur",(function(){e.hide()})),this._$trigger.on("activate",(function(){e.showing&&e.shownViaHover?e.shownViaHover=!1:e.toggle(),e._$trigger.focus()})),this.hud&&(this.hud.$trigger=t,this.hud.showing&&this.hud.updateSizeAndPosition(!0))},get message(){return this._message},set message(t){this._message=t,this.$p&&this.$p.text(t)},show:function(t){var e=this;this.shownViaHover=!1,this.showing||(this.$trigger.attr("aria-expanded","true"),this.hud?this.hud.show():(this.$p=$("<p/>",{text:this._message}),this.hud=new Craft.Tooltip.HUD(this._$trigger,this.$p,{hudClass:"hud tooltip-hud",withShade:!1,onShow:function(){e.onShow()},onHide:function(){e.onHide()}})))},hide:function(){this.showing&&(this.$trigger.attr("aria-expanded","false"),this.hud&&this.hud.hide())},toggle:function(){this.showing?this.hide():this.show()},onShow:function(){clearTimeout(this.hoverTimeout),this.$p.text(this.message)},onHide:function(){clearTimeout(this.hoverTimeout),this.$p.text("")}}),Craft.Tooltip.HUD=Garnish.HUD.extend({init:function(t,e,n){this.base(t,e,n),this.$hud.attr("role","status")},showContainer:function(){this.$hud.removeClass("visually-hidden")},hideContainer:function(){this.$hud.addClass("visually-hidden")}})},1592:function(){Craft.ui={createButton:function(t){var e=$("<button/>",{type:t.type||"button",class:"btn"});return t.id&&e.attr("id",t.id),t.class&&e.addClass(t.class),t.ariaLabel&&e.attr("aria-label",t.ariaLabel),t.role&&e.attr("role",t.role),t.html?e.html(t.html):t.label?e.append($('<div class="label"/>').text(t.label)):e.addClass("btn-empty"),t.toggle&&e.attr("aria-expanded","false"),t.controls&&e.attr("aria-controls",t.controls),t.spinner&&e.append($('<div class="spinner spinner-absolute"/>')),e},createSubmitButton:function(t){var e=this.createButton(Object.assign({},t,{type:"submit",label:t.label||Craft.t("app","Submit")}));return e.addClass("submit"),e},createTextInput:function(t){t=$.extend({autocomplete:!1},t);var e=$("<input/>",{attr:{class:"text",type:t.type||"text",inputmode:t.inputmode,id:t.id,size:t.size,name:t.name,value:t.value,maxlength:t.maxlength,autofocus:this.getAutofocusValue(t.autofocus),autocomplete:"boolean"==typeof t.autocomplete?t.autocomplete?"on":"off":t.autocomplete,disabled:this.getDisabledValue(t.disabled),readonly:t.readonly,title:t.title,placeholder:t.placeholder,step:t.step,min:t.min,max:t.max}});return t.class&&e.addClass(t.class),t.placeholder&&e.addClass("nicetext"),"password"===t.type&&e.addClass("password"),t.disabled&&e.addClass("disabled"),t.size||e.addClass("fullwidth"),t.showCharsLeft&&t.maxlength&&e.attr("data-show-chars-left").css("padding-"+("ltr"===Craft.orientation?"right":"left"),7.2*t.maxlength.toString().length+14+"px"),(t.placeholder||t.showCharsLeft)&&new Garnish.NiceText(e),"password"===t.type?$('<div class="passwordwrapper"/>').append(e):e},createTextField:function(t){return t.id||(t.id="text"+Math.floor(1e9*Math.random())),this.createField(this.createTextInput(t),t)},createPasswordInput:function(t){return this.createTextInput(Object.assign({},t,{type:"password"}))},createPasswordField:function(t){return this.createTextField(Object.assign({},t,{type:"password"}))},createCopyTextInput:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),n=t.buttonId||"".concat(e,"-btn"),i=$("<div/>",{class:"copytext"}),r=this.createTextInput($.extend({},t,{readonly:!0})).appendTo(i);return $("<button/>",{type:"button",id:n,class:"btn","data-icon":"clipboard",title:Craft.t("app","Copy to clipboard"),"aria-label":Craft.t("app","Copy to clipboard")}).appendTo(i).on("click",(function(){r[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),i.trigger("copy"),r[0].setSelectionRange(0,0)})),i},createCopyTextBtn:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),n=t.value,i=$("<div/>",{class:"copytextbtn-wrapper"}),r=$("<div/>",{id:e,class:"copytextbtn",role:"button",title:Craft.t("app","Copy to clipboard"),tabindex:"0"}).appendTo(i);t.class&&r.addClass(t.class);var a=$("<input/>",{value:n,readonly:!0,size:n.length,tabindex:"-1","aria-hidden":"true",class:"visually-hidden"}).insertBefore(r);$("<span/>",{text:n,class:"copytextbtn__value"}).appendTo(r),$("<span/>",{class:"visually-hidden",text:Craft.t("app","Copy to clipboard")}).appendTo(r),$("<span/>",{class:"copytextbtn__icon","data-icon":"clipboard","aria-hidden":"true"}).appendTo(r);var s=function(){a[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),r.trigger("copy"),a[0].setSelectionRange(0,0),r.focus()};return r.on("activate",(function(){s()})),r.on("keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(s(),t.preventDefault())})),i},createCopyTextField:function(t){return t.id||(t.id="copytext"+Math.floor(1e9*Math.random())),this.createField(this.createCopyTextInput(t),t)},createCopyTextPrompt:function(t){var e=$("<div/>",{class:"modal fitted"}),n=$("<div/>",{class:"body"}).appendTo(e);this.createCopyTextField($.extend({size:Math.max(Math.min(t.value.length,50),25)},t)).appendTo(n);var i=n.find("label");i.length>0&&i.attr("id")&&e.attr("aria-labelledby",i.attr("id"));var r=new Garnish.Modal(e,{closeOtherModals:!1});return e.on("copy",(function(){r.hide()})),e},createTextarea:function(t){var e=$("<textarea/>",{class:"text",rows:t.rows||2,cols:t.cols||50,id:t.id,name:t.name,maxlength:t.maxlength,autofocus:t.autofocus&&!Garnish.isMobileBrowser(!0),disabled:!!t.disabled,placeholder:t.placeholder,html:t.value});return t.showCharsLeft&&e.attr("data-show-chars-left",""),t.class&&e.addClass(t.class),t.size||e.addClass("fullwidth"),e},createTextareaField:function(t){return t.id||(t.id="textarea"+Math.floor(1e9*Math.random())),this.createField(this.createTextarea(t),t)},createSelect:function(t){var e=$("<div/>",{class:"select"});t.class&&e.addClass(t.class);var n=$("<select/>",{id:t.id,name:t.name,autofocus:t.autofocus&&Garnish.isMobileBrowser(!0),disabled:t.disabled,"data-target-prefix":t.targetPrefix,"aria-labelledby":t.labelledBy}).appendTo(e);if($.isPlainObject(t.options)){var i=[];for(var r in t.options)if(t.options.hasOwnProperty(r)){var a=t.options[r];$.isPlainObject(a)?void 0!==a.optgroup?i.push(a):i.push({label:a.label,value:void 0!==a.value?a.value:r,disabled:void 0!==a.disabled&&a.disabled}):i.push({label:a,value:r})}t.options=i}for(var s=null,o=0;o<t.options.length;o++){var l=t.options[o];void 0!==l.optgroup?s=$("<optgroup/>",{label:l.optgroup}).appendTo(n):$("<option/>",{value:l.value,selected:l.value==t.value,disabled:void 0!==l.disabled&&l.disabled,html:l.label}).appendTo(s||n)}return t.toggle&&(n.addClass("fieldtoggle"),new Craft.FieldToggle(n)),e},createSelectField:function(t){return t.id||(t.id="select"+Math.floor(1e9*Math.random())),this.createField(this.createSelect(t),t)},createCheckbox:function(t){var e=t.id||"checkbox"+Math.floor(1e9*Math.random()),n=$("<input/>",{type:"checkbox",value:void 0!==t.value?t.value:"1",id:e,class:"checkbox",name:t.name,checked:t.checked?"checked":null,autofocus:this.getAutofocusValue(t.autofocus),disabled:this.getDisabledValue(t.disabled),"data-target":t.toggle,"data-reverse-target":t.reverseToggle});t.class&&n.addClass(t.class),(t.toggle||t.reverseToggle)&&(n.addClass("fieldtoggle"),new Craft.FieldToggle(n));var i=$("<label/>",{for:e,html:t.label});return t.name&&(t.name.length<3||"[]"!==t.name.slice(-2))?$([$("<input/>",{type:"hidden",name:t.name,value:""})[0],n[0],i[0]]):$([n[0],i[0]])},createCheckboxField:function(t){t.id||(t.id="checkbox"+Math.floor(1e9*Math.random()));var e=$('<div class="field checkboxfield"/>',{id:"".concat(t.id,"-field")});return t.first&&e.addClass("first"),t.instructions&&e.addClass("has-instructions"),this.createCheckbox(t).appendTo(e),t.instructions&&$('<div class="instructions"/>').text(t.instructions).appendTo(e),e},createCheckboxSelect:function(t){var e=$('<fieldset class="checkbox-select"/>');t.class&&e.addClass(t.class);var n=t.values||[],i=!1;if(t.showAllOption){var r=t.allValue||"*";n===r&&(n=t.options.map((function(t){return t.value})),i=!0),$("<div/>").appendTo(e).append(this.createCheckbox({id:t.id,class:"all",label:"<b>"+(t.allLabel||Craft.t("app","All"))+"</b>",name:t.name,value:r,checked:i,autofocus:t.autofocus})),t.options=t.options.filter((function(t){return t.value!==r}))}else i=!1;Array.isArray(n)||(n=[]),t.sortable&&t.options.sort((function(t,e){var i=n.indexOf(t.value),r=n.indexOf(e.value);return-1===i&&(i=n.length),-1===r&&(r=n.length),i-r}));for(var a=0;a<t.options.length;a++){var s=t.options[a],o=$("<div/>",{class:"checkbox-select-item"}).appendTo(e);t.sortable&&$("<div/>",{class:"icon move"}).appendTo(o),this.createCheckbox({label:Craft.escapeHtml(s.label),name:t.name?Craft.ensureEndsWith(t.name,"[]"):null,value:s.value,checked:i||n.includes(s.value),disabled:i}).appendTo(o)}if(new Garnish.CheckboxSelect(e),t.sortable){var l=new Garnish.DragSort(e.children(":not(.all)"),{handle:".move",axis:"y"});e.data("dragSort",l)}return e},createCheckboxSelectField:function(t){return t.fieldset=!0,t.id||(t.id="checkboxselect"+Math.floor(1e9*Math.random())),this.createField(this.createCheckboxSelect(t),t)},createLightswitch:function(t){var e=t.value||"1",n=t.indeterminateValue||"-",i=$("<button/>",{type:"button",class:"lightswitch","data-value":e,"data-indeterminate-value":n,id:t.id,role:"switch","aria-checked":t.on?"true":t.indeterminate?"mixed":"false","aria-labelledby":t.labelId,"data-target":t.toggle,"data-reverse-target":t.reverseToggle});return t.on?i.addClass("on"):t.indeterminate&&i.addClass("indeterminate"),t.small&&i.addClass("small"),t.disabled&&i.addClass("disabled"),$('<div class="lightswitch-container"><div class="handle"></div></div>').appendTo(i),t.name&&$("<input/>",{type:"hidden",name:t.name,value:t.on?e:t.indeterminate?n:"",disabled:t.disabled}).appendTo(i),(t.toggle||t.reverseToggle)&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i)),new Craft.LightSwitch(i,{onChange:t.onChange||$.noop}),i},createLightswitchField:function(t){return t.id||(t.id="lightswitch"+Math.floor(1e9*Math.random())),t.labelId||(t.labelId="".concat(t.id,"-label")),this.createField(this.createLightswitch(t),t).addClass("lightswitch-field")},createColorInput:function(t){var e=t.id||"color"+Math.floor(1e9*Math.random()),n=t.containerId||e+"-container",i=t.name||null,r=t.value||null,a=t.small||!1,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{id:n,class:"flex color-container"}),c=$("<div/>",{class:"color static"+(a?" small":"")}).appendTo(l),h=($("<div/>",{class:"color-preview",style:t.value?{backgroundColor:t.value}:null}).appendTo(c),$("<div/>",{class:"color-input-container"}).append($("<div/>",{class:"color-hex-indicator light code","aria-hidden":"true",text:"#"})).appendTo(l));return this.createTextInput({id:e,name:i,value:Craft.ltrim(r,"#"),size:10,class:"color-input",autofocus:s,disabled:o,"aria-label":Craft.t("app","Color hex value")}).appendTo(h),new Craft.ColorInput(l),l},createColorField:function(t){return t.fieldset=!0,o,t.id||(t.id="color"+Math.floor(1e9*Math.random())),this.createField(this.createColorInput(t),t)},createDateInput:function(t){var e=Garnish.isMobileBrowser(),n=(t.id||"date"+Math.floor(1e9*Math.random()))+"-date",i=t.name||null,r=i?i+"[date]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{class:"datewrapper"}),c=this.createTextInput({id:n,type:e?"date":"text",class:!(!e||a)&&"empty-value",name:r,value:a?e?a.toISOString().split("T")[0]:Craft.formatDate(a):"",placeholder:" ",autocomplete:!1,autofocus:s,disabled:o}).appendTo(l);return $('<div data-icon="date"></div>').appendTo(l),i&&$("<input/>",{type:"hidden",name:i+"[timezone]",val:Craft.timezone}).appendTo(l),e?c.datetimeinput():c.datepicker($.extend({defaultDate:a||new Date},Craft.datepickerOptions)),t.hasOuterContainer?l:$('<div class="datetimewrapper"/>').append(l).datetime()},createDateField:function(t){return t.id||(t.id="date"+Math.floor(1e9*Math.random())),this.createField(this.createDateInput(t),t)},createDateRangePicker:function(t){var e=new Date,n=new Date(e.getFullYear(),e.getMonth(),e.getDate());t=$.extend({class:"",options:["today","thisWeek","thisMonth","thisYear","past7Days","past30Days","past90Days","pastYear"],onChange:$.noop,selected:null,startDate:null,endDate:null},t);var i,r,a=$("<div/>",{class:"menu"}),s=$("<ul/>",{class:"padded"}).appendTo(a),o=$("<a/>").addClass("sel").text(Craft.t("app","All")).data("handle","all");$("<li/>").append(o).appendTo(s);for(var l=0;l<t.options.length;l++){var c=t.options[l];switch(c){case"today":i={label:Craft.t("app","Today"),startDate:n,endDate:n};break;case"thisWeek":var h=e.getDay()-Craft.datepickerOptions.firstDay;h<0&&(h+=7),i={label:Craft.t("app","This week"),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-h),endDate:n};break;case"thisMonth":i={label:Craft.t("app","This month"),startDate:new Date(e.getFullYear(),e.getMonth()),endDate:n};break;case"thisYear":i={label:Craft.t("app","This year"),startDate:new Date(e.getFullYear(),0),endDate:n};break;case"past7Days":i={label:Craft.t("app","Past {num} days",{num:7}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-7),endDate:n};break;case"past30Days":i={label:Craft.t("app","Past {num} days",{num:30}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-30),endDate:n};break;case"past90Days":i={label:Craft.t("app","Past {num} days",{num:90}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-90),endDate:n};break;case"pastYear":i={label:Craft.t("app","Past year"),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-365),endDate:n}}var u=$("<li/>"),d=$("<a/>",{text:i.label}).data("handle",c).data("startDate",i.startDate).data("endDate",i.endDate).data("startTime",i.startDate?i.startDate.getTime():null).data("endTime",i.endDate?i.endDate.getTime():null);t.selected&&c==t.selected&&(r=d[0]),u.append(d),u.appendTo(s)}$("<hr/>").appendTo(a);var f=$("<div/>",{class:"flex flex-nowrap padded"}).appendTo(a),p=this.createDateField({label:Craft.t("app","From")}).appendTo(f).find("input"),g=this.createDateField({label:Craft.t("app","To")}).appendTo(f).find("input"),m=p.add(g);m.on("keyup",(function(t){t.keyCode===Garnish.ESC_KEY&&$(this).data("datepicker")&&$(this).data("datepicker").dpDiv.is(":visible")&&t.stopPropagation()})),p.data("datepicker")&&p.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()})),g.data("datepicker")&&g.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()}));var v=new Garnish.Menu(a,{onOptionSelect:function(e){var n=$(e);y.text(n.text()),v.setPositionRelativeToAnchor(),a.find(".sel").removeClass("sel"),n.addClass("sel"),p.hasClass("hasDatepicker")?(p.datepicker("setDate",n.data("startDate")),g.datepicker("setDate",n.data("endDate"))):(p.val(n.data("startDate")),g.val(n.data("endDate"))),t.onChange(n.data("startDate")||null,n.data("endDate")||null,n.data("handle"))}});m.on("change",(function(){var e=null,n=null;if(p.hasClass("hasDatepicker"))e=p.datepicker("getDate"),n=g.datepicker("getDate");else{var i=p.val();""!==i&&(e=new Date(Date.parse(i)));var r=g.val();""!==r&&(n=new Date(Date.parse(r)))}for(var o,l=e?e.getTime():null,c=n?n.getTime():null,h=s.find("a"),u=!1,d=0;d<h.length;d++)if(l===((o=h.eq(d)).data("startTime")||null)&&c===(o.data("endTime")||null)){v.selectOption(o[0]),u=!0,t.onChange(null,null,o.data("handle"));break}u||(a.find(".sel").removeClass("sel"),f.addClass("sel"),l||c?l&&c?y.text(p.val()+" - "+g.val()):l?y.text(Craft.t("app","From {date}",{date:p.val()})):y.text(Craft.t("app","To {date}",{date:g.val()})):y.text(Craft.t("app","All")),v.setPositionRelativeToAnchor(),t.onChange(e,n,"custom"))})),v.on("hide",(function(){p.datepicker("hide"),g.datepicker("hide")}));var b="btn menubtn";t.class&&(b=b+" "+t.class);var y=$("<button/>",{type:"button",class:b,"data-icon":"date",text:Craft.t("app","All")});if(new Garnish.MenuBtn(y,v),r&&v.selectOption(r),t.startDate)if(p.hasClass("hasDatepicker"))p.datepicker("setDate",t.startDate);else{var C=t.startDate.getTimezoneOffset(),w=new Date(t.startDate.getTime()-60*C*1e3);p.val(w.toISOString().split("T")[0])}if(t.endDate)if(g.hasClass("hasDatepicker"))g.datepicker("setDate",t.endDate);else{var _=t.endDate.getTimezoneOffset(),S=new Date(t.endDate.getTime()-60*_*1e3);g.val(S.toISOString().split("T")[0])}return(t.startDate||t.endDate)&&m.trigger("change"),y},createTimeInput:function(t){var e=Garnish.isMobileBrowser(),n=(t.id||"time"+Math.floor(1e9*Math.random()))+"-time",i=t.name||null,r=i?i+"[time]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{class:"timewrapper"}),c=this.createTextInput({id:n,type:e?"time":"text",class:!(!e||a)&&"empty-value",name:r,placeholder:" ",autocomplete:!1,autofocus:s,disabled:o}).appendTo(l);return $('<div data-icon="time"></div>').appendTo(l),i&&$("<input/>",{type:"hidden",name:i+"[timezone]",val:Craft.timezone}).appendTo(l),e?(a&&c.val(a.toISOString().split("T")[1]),c.datetimeinput()):(c.timepicker(Craft.timepickerOptions),a&&c.timepicker("setTime",3600*a.getHours()+60*a.getMinutes()+a.getSeconds())),t.hasOuterContainer?l:$('<div class="datetimewrapper"/>').append(l).datetime()},createTimeField:function(t){return t.id||(t.id="time"+Math.floor(1e9*Math.random())),this.createField(this.createTimeInput(t),t)},createField:function(t,e){var n=e.label&&"__blank__"!==e.label?e.label:null,i=$(e.fieldset?"<fieldset/>":"<div/>",{class:"field",id:e.fieldId||(e.id?e.id+"-field":null)});if(e.first&&i.addClass("first"),e.fieldClass&&i.addClass(e.fieldClass),n&&e.fieldset&&$("<legend/>",{text:n,class:"visually-hidden","data-label":n}).appendTo(i),n){var r=$('<div class="heading"/>').appendTo(i);$(e.fieldset?"<legend/>":"<label/>",{id:e.labelId||(e.id?"".concat(e.id,"-").concat(e.fieldset?"legend":"label"):null),class:e.required?"required":null,for:!e.fieldset&&e.id||null,text:n}).appendTo(r)}if(e.instructions&&$('<div class="instructions"/>').text(e.instructions).appendTo(i),$('<div class="input"/>').append(t).appendTo(i),e.tip){var a=$('<p class="notice has-icon"/>');$('<span class="icon" aria-hidden="true"/>').appendTo(a),$('<span class="visually-hidden"/>').text(Craft.t("app","Tip")+": ").appendTo(a),$("<span/>").text(e.tip).appendTo(a),a.appendTo(i)}if(e.warning){var s=$('<p class="warning has-icon"/>');$('<span class="icon" aria-hidden="true"/>').appendTo(s),$('<span class="visually-hidden"/>').text(Craft.t("app","Warning")+": ").appendTo(s),$("<span/>").text(e.warning).appendTo(s),s.appendTo(i)}return e.errors&&this.addErrorsToField(i,e.errors),i},createErrorList:function(t,e){var n=$('<ul class="errors" tabindex="-1"/>');return e&&n.attr("id",e),t&&this.addErrorsToList(n,t),n},addErrorsToList:function(t,e){for(var n=0;n<e.length;n++)$("<li/>").text(e[n].replaceAll("*","")).appendTo(t)},addErrorsToField:function(t,e){if(e){t.addClass("has-errors"),t.children(".input").addClass("errors");var n=t.attr("id"),i="";n&&(i=n.replace(new RegExp("(-field)$"),"-errors"));var r=t.children("ul.errors");r.length||(r=this.createErrorList(null,i).appendTo(t)),this.addErrorsToList(r,e)}},clearErrorsFromField:function(t){t.removeClass("has-errors"),t.children(".input").removeClass("errors"),t.children("ul.errors").remove()},clearErrorSummary:function(t){t.find(".error-summary").remove()},setFocusOnErrorSummary:function(t){var e=this,n=t.find(".error-summary");n.length>0&&(n.trigger("focus"),n.find("a").on("click",(function(n){0==$(n.currentTarget).hasClass("cross-site-validate")&&(n.preventDefault(),e.anchorSummaryErrorToField(n.currentTarget,t))})))},findErrorsContainerByErrorKey:function(t,e){var n=t.find('[data-error-key="'.concat(e,'"]')).find("ul.errors");return $(n)},anchorSummaryErrorToField:function(t,e){var n=$(t).attr("data-field-error-key");if(n){var i=this.findErrorsContainerByErrorKey(e,n);if(i){var r=this.findTabAnchorForField(i,e);if(r.length>0)for(var a=0;a<r.length;a++){var s=$(r[a]);"false"==s.attr("aria-selected")&&s.click()}var o=i.parents(".collapsed, .is-collapsed");if(o.length>0)for(var l=o.length;l>0;l--){var c=$(o[l-1]);null!=c.data("block")?c.data("block").expand():c.find(".titlebar").trigger("doubletap")}var h=i.parents(".field:first");h.is(":visible")?h.attr("tabindex","-1").trigger("focus"):setTimeout((function(){h.attr("tabindex","-1").trigger("focus")}),201)}}},findTabAnchorForField:function(t,e){var n=t.parents('div[data-id^=tab][role="tabpanel"]'),i=[];return n.each((function(t,n){var r=e.find('[role="tablist"]').find('a[href="#'+$(n).attr("id")+'"]');i.push(r)})),i},getAutofocusValue:function(t){return t&&!Garnish.isMobileBrowser(!0)?"autofocus":null},getDisabledValue:function(t){return t?"disabled":null}}},1752:function(){function t(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.Uploader=Craft.BaseUploader.extend({uploader:null,_totalFileCounter:0,_validFileCounter:0,_onFileAdd:null,init:function(e,n){var i=this;n=$.extend({},Craft.Uploader.defaults,n),this.base(e,n),delete this.settings.events,this.uploader=this.$element.fileupload(this.settings),Object.entries(this.events).forEach((function(e){var n=t(e,2),r=n[0],a=n[1];i.$element.on(r,a)})),this._onFileAdd=this.onFileAdd.bind(this),this.$element.on("fileuploadadd",this._onFileAdd)},setParams:function(t){this.base(t),this.uploader.data("blueimpFileupload")&&this.uploader.fileupload("option",{formData:this.formData})},getInProgress:function(){return this.uploader.fileupload("active")},onFileAdd:function(t,e){var n=this;t.stopPropagation();var i=!1;return this.allowedKinds&&(this._extensionList||this._createExtensionList(),i=!0),e.process().done((function(){var t=e.files[0],r=!0;if(i){var a=t.name.match(/\.([a-z0-4_]+)$/i)[1];-1===$.inArray(a.toLowerCase(),n._extensionList)&&(r=!1,n._rejectedFiles.type.push("“"+t.name+"”"))}t.size>n.settings.maxFileSize&&(n._rejectedFiles.size.push("“"+t.name+"”"),r=!1),r&&"function"==typeof n.settings.canAddMoreFiles&&!n.settings.canAddMoreFiles(n._validFileCounter)&&(n._rejectedFiles.limit.push("“"+t.name+"”"),r=!1),r&&(n._validFileCounter++,e.submit()),++n._totalFileCounter===e.originalFiles.length&&(n._totalFileCounter=0,n._validFileCounter=0,n.processErrorMessages())})),!0},destroy:function(){var e=this;this.uploader.fileupload("instance")&&this.uploader.fileupload("destroy"),this.$element.off("fileuploadadd",this._onFileAdd),Object.entries(this.events).forEach((function(n){var i=t(n,2),r=i[0],a=i[1];e.$element.off(r,a)}))}},{defaults:{autoUpload:!1,sequentialUploads:!0,maxFileSize:Craft.maxUploadSize,replaceFileInput:!1,createAction:"assets/upload",replaceAction:"assets/replace-file",deleteAction:"assets/delete-asset"}})},7e3:function(){Craft.UriFormatGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).toLowerCase(),t=(t=(t=Craft.asciiString(t)).replace(/^[^a-z]+/,"")).replace(/[^a-z0-9]+$/,"");var e=Craft.filterArray(t.split(/[^a-z0-9]+/)).join(Craft.slugWordSeparator);return e&&this.settings.suffix&&(e+=this.settings.suffix),e}})},8654:function(){Craft.UserIndex=Craft.BaseElementIndex.extend({init:function(t,e,n){this.on("selectSource",this.updateUrl.bind(this)),this.base(t,e,n)},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSourceSlug)for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("slug")===defaultSourceSlug)return e.data("key")}return this.base()},updateUrl:function(){if("index"===this.settings.context){var t="users",e=this.$source.data("slug");e&&(t+="/".concat(e)),Craft.setPath(t)}}}),Craft.registerElementIndexClass("craft\\elements\\User",Craft.UserIndex)},9712:function(){Craft.VolumeFolderSelectorModal=Craft.BaseElementSelectorModal.extend({init:function(t){(t=Object.assign({},Craft.VolumeFolderSelectorModal.defaults,t,{showSiteMenu:!1})).indexSettings.disabledFolderIds=t.disabledFolderIds,this.base("craft\\elements\\Asset",t)},getElementIndexParams:function(){return Object.assign({},this.base(),{foldersOnly:!0})},hasSelection:function(){return this.base()||this.elementIndex&&this.elementIndex.sourcePath.length&&void 0!==this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId&&!this.settings.disabledFolderIds.includes(this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId)},getElementInfo:function(t){return[{folderId:t.length?parseInt(t.find(".element:first").data("folder-id")):this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId}]},getIndexSettings:function(){var t=this;return Object.assign(this.base(),{foldersOnly:!0,canSelectElement:function(e){var n=e.find(".element:first").data("folder-id");return n&&!t.settings.disabledFolderIds.includes(n)}})}},{defaults:{disabledFolderIds:[],indexSettings:{}}})},5537:function(){},9383:function(){},6558:function(t,e,n){var i=n(5537);i.__esModule&&(i=i.default),"string"==typeof i&&(i=[[t.id,i,""]]),i.locals&&(t.exports=i.locals),(0,n(9673).Z)("3790022a",i,!0,{})},2179:function(t,e,n){var i=n(9383);i.__esModule&&(i=i.default),"string"==typeof i&&(i=[[t.id,i,""]]),i.locals&&(t.exports=i.locals),(0,n(9673).Z)("80058a3c",i,!0,{})},9673:function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var a=e[r],s=a[0],o={id:t+":"+r,css:a[1],media:a[2],sourceMap:a[3]};i[s]?i[s].parts.push(o):n.push(i[s]={id:s,parts:[o]})}return n}n.d(e,{Z:function(){return p}});var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},s=r&&(document.head||document.getElementsByTagName("head")[0]),o=null,l=0,c=!1,h=function(){},u=null,d="data-vue-ssr-id",f="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,r){c=n,u=r||{};var s=i(t,e);return g(s),function(e){for(var n=[],r=0;r<s.length;r++){var o=s[r];(l=a[o.id]).refs--,n.push(l)}for(e?g(s=i(t,e)):s=[],r=0;r<n.length;r++){var l;if(0===(l=n[r]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function g(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(v(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var s=[];for(r=0;r<n.parts.length;r++)s.push(v(n.parts[r]));a[n.id]={id:n.id,refs:1,parts:s}}}}function m(){var t=document.createElement("style");return t.type="text/css",s.appendChild(t),t}function v(t){var e,n,i=document.querySelector("style["+d+'~="'+t.id+'"]');if(i){if(c)return h;i.parentNode.removeChild(i)}if(f){var r=l++;i=o||(o=m()),e=$.bind(null,i,r,!1),n=$.bind(null,i,r,!0)}else i=m(),e=C.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var b,y=(b=[],function(t,e){return b[t]=e,b.filter(Boolean).join("\n")});function $(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var a=document.createTextNode(r),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(a,s[e]):t.appendChild(a)}}function C(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),u.ssrId&&t.setAttribute(d,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={id:t,exports:{}};return __webpack_modules__[t](n,n.exports,__webpack_require__),n.exports}__webpack_require__.d=function(t,e){for(var n in e)__webpack_require__.o(e,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var __webpack_exports__={};!function(){"use strict";function t(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n<r||void 0===n&&r>=r)&&(n=r)}return n}function n(t){return t}__webpack_require__(2179),__webpack_require__(6558);var i=1,r=2,a=3,s=4,o=1e-6;function l(t){return"translate("+t+",0)"}function c(t){return"translate(0,"+t+")"}function h(t){return e=>+t(e)}function u(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function d(){return!this.__axis}function f(t,e){var f=[],p=null,g=null,m=6,v=6,b=3,y="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,$=t===i||t===s?-1:1,C=t===s||t===r?"x":"y",w=t===i||t===a?l:c;function _(l){var c=null==p?e.ticks?e.ticks.apply(e,f):e.domain():p,_=null==g?e.tickFormat?e.tickFormat.apply(e,f):n:g,S=Math.max(m,0)+b,x=e.range(),T=+x[0]+y,I=+x[x.length-1]+y,E=(e.bandwidth?u:h)(e.copy(),y),L=l.selection?l.selection():l,k=L.selectAll(".domain").data([null]),P=L.selectAll(".tick").data(c,e).order(),A=P.exit(),M=P.enter().append("g").attr("class","tick"),B=P.select("line"),D=P.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),P=P.merge(M),B=B.merge(M.append("line").attr("stroke","currentColor").attr(C+"2",$*m)),D=D.merge(M.append("text").attr("fill","currentColor").attr(C,$*S).attr("dy",t===i?"0em":t===a?"0.71em":"0.32em")),l!==L&&(k=k.transition(l),P=P.transition(l),B=B.transition(l),D=D.transition(l),A=A.transition(l).attr("opacity",o).attr("transform",(function(t){return isFinite(t=E(t))?w(t+y):this.getAttribute("transform")})),M.attr("opacity",o).attr("transform",(function(t){var e=this.parentNode.__axis;return w((e&&isFinite(e=e(t))?e:E(t))+y)}))),A.remove(),k.attr("d",t===s||t===r?v?"M"+$*v+","+T+"H"+y+"V"+I+"H"+$*v:"M"+y+","+T+"V"+I:v?"M"+T+","+$*v+"V"+y+"H"+I+"V"+$*v:"M"+T+","+y+"H"+I),P.attr("opacity",1).attr("transform",(function(t){return w(E(t)+y)})),B.attr(C+"2",$*m),D.attr(C,$*S).text(_),L.filter(d).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===r?"start":t===s?"end":"middle"),L.each((function(){this.__axis=E}))}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return f=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(f=null==t?[]:Array.from(t),_):f.slice()},_.tickValues=function(t){return arguments.length?(p=null==t?null:Array.from(t),_):p&&p.slice()},_.tickFormat=function(t){return arguments.length?(g=t,_):g},_.tickSize=function(t){return arguments.length?(m=v=+t,_):m},_.tickSizeInner=function(t){return arguments.length?(m=+t,_):m},_.tickSizeOuter=function(t){return arguments.length?(v=+t,_):v},_.tickPadding=function(t){return arguments.length?(b=+t,_):b},_.offset=function(t){return arguments.length?(y=+t,_):y},_}function p(t){return f(r,t)}function g(t){return f(a,t)}function m(t){return f(s,t)}function v(){}function b(t){return null==t?v:function(){return this.querySelector(t)}}function y(){return[]}function C(t){return null==t?y:function(){return this.querySelectorAll(t)}}function w(t){return function(){return this.matches(t)}}function _(t){return function(e){return e.matches(t)}}var S=Array.prototype.find;function x(){return this.firstElementChild}var T=Array.prototype.filter;function I(){return Array.from(this.children)}function E(t){return new Array(t.length)}function L(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function k(t,e,n,i,r,a){for(var s,o=0,l=e.length,c=a.length;o<c;++o)(s=e[o])?(s.__data__=a[o],i[o]=s):n[o]=new L(t,a[o]);for(;o<l;++o)(s=e[o])&&(r[o]=s)}function P(t,e,n,i,r,a,s){var o,l,c,h=new Map,u=e.length,d=a.length,f=new Array(u);for(o=0;o<u;++o)(l=e[o])&&(f[o]=c=s.call(l,l.__data__,o,e)+"",h.has(c)?r[o]=l:h.set(c,l));for(o=0;o<d;++o)c=s.call(t,a[o],o,a)+"",(l=h.get(c))?(i[o]=l,l.__data__=a[o],h.delete(c)):n[o]=new L(t,a[o]);for(o=0;o<u;++o)(l=e[o])&&h.get(f[o])===l&&(r[o]=l)}function A(t){return t.__data__}function M(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function B(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}L.prototype={constructor:L,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var D="http://www.w3.org/1999/xhtml",O={svg:"http://www.w3.org/2000/svg",xhtml:D,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function F(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),O.hasOwnProperty(e)?{space:O[e],local:t}:t}function R(t){return function(){this.removeAttribute(t)}}function H(t){return function(){this.removeAttributeNS(t.space,t.local)}}function G(t,e){return function(){this.setAttribute(t,e)}}function N(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function j(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function U(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function z(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function V(t){return function(){this.style.removeProperty(t)}}function q(t,e,n){return function(){this.style.setProperty(t,e,n)}}function W(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function Y(t,e){return t.style.getPropertyValue(e)||z(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function X(t,e){return function(){this[t]=e}}function J(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Q(t){return t.trim().split(/^|\s+/)}function Z(t){return t.classList||new tt(t)}function tt(t){this._node=t,this._names=Q(t.getAttribute("class")||"")}function et(t,e){for(var n=Z(t),i=-1,r=e.length;++i<r;)n.add(e[i])}function nt(t,e){for(var n=Z(t),i=-1,r=e.length;++i<r;)n.remove(e[i])}function it(t){return function(){et(this,t)}}function rt(t){return function(){nt(this,t)}}function at(t,e){return function(){(e.apply(this,arguments)?et:nt)(this,t)}}function st(){this.textContent=""}function ot(t){return function(){this.textContent=t}}function lt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ct(){this.innerHTML=""}function ht(t){return function(){this.innerHTML=t}}function ut(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function dt(){this.nextSibling&&this.parentNode.appendChild(this)}function ft(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function pt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===D&&e.documentElement.namespaceURI===D?e.createElement(t):e.createElementNS(n,t)}}function gt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function mt(t){var e=F(t);return(e.local?gt:pt)(e)}function vt(){return null}function bt(){var t=this.parentNode;t&&t.removeChild(this)}function yt(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function $t(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Ct(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i<a;++i)n=e[i],t.type&&n.type!==t.type||n.name!==t.name?e[++r]=n:this.removeEventListener(n.type,n.listener,n.options);++r?e.length=r:delete this.__on}}}function wt(t,e,n){return function(){var i,r=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(r)for(var s=0,o=r.length;s<o;++s)if((i=r[s]).type===t.type&&i.name===t.name)return this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),void(i.value=e);this.addEventListener(t.type,a,n),i={type:t.type,name:t.name,value:e,listener:a,options:n},r?r.push(i):this.__on=[i]}}function _t(t,e,n){var i=z(t),r=i.CustomEvent;"function"==typeof r?r=new r(e,n):(r=i.document.createEvent("Event"),n?(r.initEvent(e,n.bubbles,n.cancelable),r.detail=n.detail):r.initEvent(e,!1,!1)),t.dispatchEvent(r)}function St(t,e){return function(){return _t(this,t,e)}}function xt(t,e){return function(){return _t(this,t,e.apply(this,arguments))}}tt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Tt=[null];function It(t,e){this._groups=t,this._parents=e}function Et(){return new It([[document.documentElement]],Tt)}It.prototype=Et.prototype={constructor:It,select:function(t){"function"!=typeof t&&(t=b(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s,o=e[r],l=o.length,c=i[r]=new Array(l),h=0;h<l;++h)(a=o[h])&&(s=t.call(a,a.__data__,h,o))&&("__data__"in a&&(s.__data__=a.__data__),c[h]=s);return new It(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}(t):C(t);for(var e=this._groups,n=e.length,i=[],r=[],a=0;a<n;++a)for(var s,o=e[a],l=o.length,c=0;c<l;++c)(s=o[c])&&(i.push(t.call(s,s.__data__,c,o)),r.push(s));return new It(i,r)},selectChild:function(t){return this.select(null==t?x:function(t){return function(){return S.call(this.children,t)}}("function"==typeof t?t:_(t)))},selectChildren:function(t){return this.selectAll(null==t?I:function(t){return function(){return T.call(this.children,t)}}("function"==typeof t?t:_(t)))},filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s=e[r],o=s.length,l=i[r]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new It(i,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,A);var n,i=e?P:k,r=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var s=a.length,o=new Array(s),l=new Array(s),c=new Array(s),h=0;h<s;++h){var u=r[h],d=a[h],f=d.length,p=M(t.call(u,u&&u.__data__,h,r)),g=p.length,m=l[h]=new Array(g),v=o[h]=new Array(g);i(u,d,m,v,c[h]=new Array(f),p,e);for(var b,y,$=0,C=0;$<g;++$)if(b=m[$]){for($>=C&&(C=$+1);!(y=v[C])&&++C<g;);b._next=y||null}}return(o=new It(o,r))._enter=l,o._exit=c,o},enter:function(){return new It(this._enter||this._groups.map(E),this._parents)},exit:function(){return new It(this._exit||this._groups.map(E),this._parents)},join:function(t,e,n){var i=this.enter(),r=this,a=this.exit();return"function"==typeof t?(i=t(i))&&(i=i.selection()):i=i.append(t+""),null!=e&&(r=e(r))&&(r=r.selection()),null==n?a.remove():n(a),i&&r?i.merge(r).order():r},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,i=e._groups,r=n.length,a=i.length,s=Math.min(r,a),o=new Array(r),l=0;l<s;++l)for(var c,h=n[l],u=i[l],d=h.length,f=o[l]=new Array(d),p=0;p<d;++p)(c=h[p]||u[p])&&(f[p]=c);for(;l<r;++l)o[l]=n[l];return new It(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var i,r=t[e],a=r.length-1,s=r[a];--a>=0;)(i=r[a])&&(s&&4^i.compareDocumentPosition(s)&&s.parentNode.insertBefore(i,s),s=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=B);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a<i;++a){for(var s,o=n[a],l=o.length,c=r[a]=new Array(l),h=0;h<l;++h)(s=o[h])&&(c[h]=s);c.sort(e)}return new It(r,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var i=t[e],r=0,a=i.length;r<a;++r){var s=i[r];if(s)return s}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,i=e.length;n<i;++n)for(var r,a=e[n],s=0,o=a.length;s<o;++s)(r=a[s])&&t.call(r,r.__data__,s,a);return this},attr:function(t,e){var n=F(t);if(arguments.length<2){var i=this.node();return n.local?i.getAttributeNS(n.space,n.local):i.getAttribute(n)}return this.each((null==e?n.local?H:R:"function"==typeof e?n.local?U:j:n.local?N:G)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?V:"function"==typeof e?W:q)(t,e,null==n?"":n)):Y(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?J:X)(t,e)):this.node()[t]},classed:function(t,e){var n=Q(t+"");if(arguments.length<2){for(var i=Z(this.node()),r=-1,a=n.length;++r<a;)if(!i.contains(n[r]))return!1;return!0}return this.each(("function"==typeof e?at:e?it:rt)(n,e))},text:function(t){return arguments.length?this.each(null==t?st:("function"==typeof t?lt:ot)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ct:("function"==typeof t?ut:ht)(t)):this.node().innerHTML},raise:function(){return this.each(dt)},lower:function(){return this.each(ft)},append:function(t){var e="function"==typeof t?t:mt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:mt(t),i=null==e?vt:"function"==typeof e?e:b(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(bt)},clone:function(t){return this.select(t?$t:yt)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var i,r,a=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),s=a.length;if(!(arguments.length<2)){for(o=e?wt:Ct,i=0;i<s;++i)this.each(o(a[i],e,n));return this}var o=this.node().__on;if(o)for(var l,c=0,h=o.length;c<h;++c)for(i=0,l=o[c];i<s;++i)if((r=a[i]).type===l.type&&r.name===l.name)return l.value},dispatch:function(t,e){return this.each(("function"==typeof e?xt:St)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var i,r=t[e],a=0,s=r.length;a<s;++a)(i=r[a])&&(yield i)}};var Lt=Et,kt={value:()=>{}};function Pt(){for(var t,e=0,n=arguments.length,i={};e<n;++e){if(!(t=arguments[e]+"")||t in i||/[\s.]/.test(t))throw new Error("illegal type: "+t);i[t]=[]}return new At(i)}function At(t){this._=t}function Mt(t,e){for(var n,i=0,r=t.length;i<r;++i)if((n=t[i]).name===e)return n.value}function Bt(t,e,n){for(var i=0,r=t.length;i<r;++i)if(t[i].name===e){t[i]=kt,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=n&&t.push({name:e,value:n}),t}At.prototype=Pt.prototype={constructor:At,on:function(t,e){var n,i,r=this._,a=(i=r,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),s=-1,o=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s<o;)if(n=(t=a[s]).type)r[n]=Bt(r[n],t.name,e);else if(null==e)for(n in r)r[n]=Bt(r[n],t.name,null);return this}for(;++s<o;)if((n=(t=a[s]).type)&&(n=Mt(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new At(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,i,r=new Array(n),a=0;a<n;++a)r[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(i=this._[t]).length;a<n;++a)i[a].value.apply(e,r)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],r=0,a=i.length;r<a;++r)i[r].value.apply(e,n)}};var Dt,Ot,Ft=Pt,Rt=0,Ht=0,Gt=0,Nt=1e3,jt=0,Ut=0,zt=0,Vt="object"==typeof performance&&performance.now?performance:Date,qt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Wt(){return Ut||(qt(Yt),Ut=Vt.now()+zt)}function Yt(){Ut=0}function Kt(){this._call=this._time=this._next=null}function Xt(t,e,n){var i=new Kt;return i.restart(t,e,n),i}function Jt(){Ut=(jt=Vt.now())+zt,Rt=Ht=0;try{!function(){Wt(),++Rt;for(var t,e=Dt;e;)(t=Ut-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Rt}()}finally{Rt=0,function(){for(var t,e,n=Dt,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Dt=e);Ot=t,Zt(i)}(),Ut=0}}function Qt(){var t=Vt.now(),e=t-jt;e>Nt&&(zt-=e,jt=t)}function Zt(t){Rt||(Ht&&(Ht=clearTimeout(Ht)),t-Ut>24?(t<1/0&&(Ht=setTimeout(Jt,t-Vt.now()-zt)),Gt&&(Gt=clearInterval(Gt))):(Gt||(jt=Vt.now(),Gt=setInterval(Qt,Nt)),Rt=1,qt(Jt)))}function te(t,e,n){var i=new Kt;return e=null==e?0:+e,i.restart((n=>{i.stop(),t(n+e)}),e,n),i}Kt.prototype=Xt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Wt():+n)+(null==e?0:+e),this._next||Ot===this||(Ot?Ot._next=this:Dt=this,Ot=this),this._call=t,this._time=n,Zt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Zt())}};var ee=Ft("start","end","cancel","interrupt"),ne=[],ie=0,re=3;function ae(t,e,n,i,r,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(l){var c,h,u,d;if(1!==n.state)return o();for(c in r)if((d=r[c]).name===n.name){if(d.state===re)return te(a);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+c<e&&(d.state=6,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete r[c])}if(te((function(){n.state===re&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(l))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=re,i=new Array(u=n.tween.length),c=0,h=-1;c<u;++c)(d=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(i[++h]=d);i.length=h+1}}function s(e){for(var r=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(o),n.state=5,1),a=-1,s=i.length;++a<s;)i[a].call(t,r);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),o())}function o(){for(var i in n.state=6,n.timer.stop(),delete r[e],r)return;delete t.__transition}r[e]=n,n.timer=Xt((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:i,group:r,on:ee,tween:ne,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ie})}function se(t,e){var n=le(t,e);if(n.state>ie)throw new Error("too late; already scheduled");return n}function oe(t,e){var n=le(t,e);if(n.state>re)throw new Error("too late; already running");return n}function le(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ce(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var he,ue=180/Math.PI,de={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fe(t,e,n,i,r,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*n+e*i)&&(n-=t*l,i-=e*l),(o=Math.sqrt(n*n+i*i))&&(n/=o,i/=o,l/=o),t*i<e*n&&(t=-t,e=-e,l=-l,s=-s),{translateX:r,translateY:a,rotate:Math.atan2(e,t)*ue,skewX:Math.atan(l)*ue,scaleX:s,scaleY:o}}function pe(t,e,n,i){function r(t){return t.length?t.pop()+" ":""}return function(a,s){var o=[],l=[];return a=t(a),s=t(s),function(t,i,r,a,s,o){if(t!==r||i!==a){var l=s.push("translate(",null,e,null,n);o.push({i:l-4,x:ce(t,r)},{i:l-2,x:ce(i,a)})}else(r||a)&&s.push("translate("+r+e+a+n)}(a.translateX,a.translateY,s.translateX,s.translateY,o,l),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:ce(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:ce(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,s.skewX,o,l),function(t,e,n,i,a,s){if(t!==n||e!==i){var o=a.push(r(a)+"scale(",null,",",null,")");s.push({i:o-4,x:ce(t,n)},{i:o-2,x:ce(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,i=l.length;++n<i;)o[(e=l[n]).i]=e.x(t);return o.join("")}}}var ge=pe((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?de:fe(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),me=pe((function(t){return null==t?de:(he||(he=document.createElementNS("http://www.w3.org/2000/svg","g")),he.setAttribute("transform",t),(t=he.transform.baseVal.consolidate())?fe((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):de)}),", ",")",")");function ve(t,e){var n,i;return function(){var r=oe(this,t),a=r.tween;if(a!==n)for(var s=0,o=(i=n=a).length;s<o;++s)if(i[s].name===e){(i=i.slice()).splice(s,1);break}r.tween=i}}function be(t,e,n){var i,r;if("function"!=typeof n)throw new Error;return function(){var a=oe(this,t),s=a.tween;if(s!==i){r=(i=s).slice();for(var o={name:e,value:n},l=0,c=r.length;l<c;++l)if(r[l].name===e){r[l]=o;break}l===c&&r.push(o)}a.tween=r}}function ye(t,e,n){var i=t._id;return t.each((function(){var t=oe(this,i);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return le(t,i).value[e]}}function $e(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Ce(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function we(){}var _e=.7,Se=1/_e,xe="\\s*([+-]?\\d+)\\s*",Te="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ie="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ee=/^#([0-9a-f]{3,8})$/,Le=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),ke=new RegExp(`^rgb\\(${Ie},${Ie},${Ie}\\)$`),Pe=new RegExp(`^rgba\\(${xe},${xe},${xe},${Te}\\)$`),Ae=new RegExp(`^rgba\\(${Ie},${Ie},${Ie},${Te}\\)$`),Me=new RegExp(`^hsl\\(${Te},${Ie},${Ie}\\)$`),Be=new RegExp(`^hsla\\(${Te},${Ie},${Ie},${Te}\\)$`),De={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Oe(){return this.rgb().formatHex()}function Fe(){return this.rgb().formatRgb()}function Re(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Ee.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?He(e):3===n?new je(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Ge(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Ge(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Le.exec(t))?new je(e[1],e[2],e[3],1):(e=ke.exec(t))?new je(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?Ge(e[1],e[2],e[3],e[4]):(e=Ae.exec(t))?Ge(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Me.exec(t))?Ye(e[1],e[2]/100,e[3]/100,1):(e=Be.exec(t))?Ye(e[1],e[2]/100,e[3]/100,e[4]):De.hasOwnProperty(t)?He(De[t]):"transparent"===t?new je(NaN,NaN,NaN,0):null}function He(t){return new je(t>>16&255,t>>8&255,255&t,1)}function Ge(t,e,n,i){return i<=0&&(t=e=n=NaN),new je(t,e,n,i)}function Ne(t,e,n,i){return 1===arguments.length?function(t){return t instanceof we||(t=Re(t)),t?new je((t=t.rgb()).r,t.g,t.b,t.opacity):new je}(t):new je(t,e,n,null==i?1:i)}function je(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Ue(){return`#${We(this.r)}${We(this.g)}${We(this.b)}`}function ze(){const t=Ve(this.opacity);return`${1===t?"rgb(":"rgba("}${qe(this.r)}, ${qe(this.g)}, ${qe(this.b)}${1===t?")":`, ${t})`}`}function Ve(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function qe(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function We(t){return((t=qe(t))<16?"0":"")+t.toString(16)}function Ye(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Xe(t,e,n,i)}function Ke(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof we||(t=Re(t)),!t)return new Xe;if(t instanceof Xe)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,o=a-r,l=(a+r)/2;return o?(s=e===a?(n-i)/o+6*(n<i):n===a?(i-e)/o+2:(e-n)/o+4,o/=l<.5?a+r:2-a-r,s*=60):o=l>0&&l<1?0:s,new Xe(s,o,l,t.opacity)}function Xe(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Je(t){return(t=(t||0)%360)<0?t+360:t}function Qe(t){return Math.max(0,Math.min(1,t||0))}function Ze(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function tn(t,e,n,i,r){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*i+s*r)/6}$e(we,Re,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Fe,toString:Fe}),$e(je,Ne,Ce(we,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?_e:Math.pow(_e,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new je(qe(this.r),qe(this.g),qe(this.b),Ve(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${We(this.r)}${We(this.g)}${We(this.b)}${We(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:ze,toString:ze})),$e(Xe,(function(t,e,n,i){return 1===arguments.length?Ke(t):new Xe(t,e,n,null==i?1:i)}),Ce(we,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new je(Ze(t>=240?t-240:t+120,r,i),Ze(t,r,i),Ze(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new Xe(Je(this.h),Qe(this.s),Qe(this.l),Ve(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ve(this.opacity);return`${1===t?"hsl(":"hsla("}${Je(this.h)}, ${100*Qe(this.s)}%, ${100*Qe(this.l)}%${1===t?")":`, ${t})`}`}}));var en=t=>()=>t;function nn(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):en(isNaN(t)?e:t)}var rn=function t(e){var n=function(t){return 1==(t=+t)?nn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):en(isNaN(e)?n:e)}}(e);function i(t,e){var i=n((t=Ne(t)).r,(e=Ne(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),s=nn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=s(e),t+""}}return i.gamma=t,i}(1);function an(t){return function(e){var n,i,r=e.length,a=new Array(r),s=new Array(r),o=new Array(r);for(n=0;n<r;++n)i=Ne(e[n]),a[n]=i.r||0,s[n]=i.g||0,o[n]=i.b||0;return a=t(a),s=t(s),o=t(o),i.opacity=1,function(t){return i.r=a(t),i.g=s(t),i.b=o(t),i+""}}}an((function(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],s=i>0?t[i-1]:2*r-a,o=i<e-1?t[i+2]:2*a-r;return tn((n-i/e)*e,s,r,a,o)}})),an((function(t){var e=t.length;return function(n){var i=Math.floor(((n%=1)<0?++n:n)*e),r=t[(i+e-1)%e],a=t[i%e],s=t[(i+1)%e],o=t[(i+2)%e];return tn((n-i/e)*e,r,a,s,o)}}));var sn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,on=new RegExp(sn.source,"g");function ln(t,e){var n,i,r,a=sn.lastIndex=on.lastIndex=0,s=-1,o=[],l=[];for(t+="",e+="";(n=sn.exec(t))&&(i=on.exec(e));)(r=i.index)>a&&(r=e.slice(a,r),o[s]?o[s]+=r:o[++s]=r),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:ce(n,i)})),a=on.lastIndex;return a<e.length&&(r=e.slice(a),o[s]?o[s]+=r:o[++s]=r),o.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var n,i=0;i<e;++i)o[(n=l[i]).i]=n.x(t);return o.join("")})}function cn(t,e){var n;return("number"==typeof e?ce:e instanceof Re?rn:(n=Re(e))?(e=n,rn):ln)(t,e)}function hn(t){return function(){this.removeAttribute(t)}}function un(t){return function(){this.removeAttributeNS(t.space,t.local)}}function dn(t,e,n){var i,r,a=n+"";return function(){var s=this.getAttribute(t);return s===a?null:s===i?r:r=e(i=s,n)}}function fn(t,e,n){var i,r,a=n+"";return function(){var s=this.getAttributeNS(t.space,t.local);return s===a?null:s===i?r:r=e(i=s,n)}}function pn(t,e,n){var i,r,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttribute(t))===(o=l+"")?null:s===i&&o===r?a:(r=o,a=e(i=s,l));this.removeAttribute(t)}}function gn(t,e,n){var i,r,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttributeNS(t.space,t.local))===(o=l+"")?null:s===i&&o===r?a:(r=o,a=e(i=s,l));this.removeAttributeNS(t.space,t.local)}}function mn(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,r)),n}return r._value=e,r}function vn(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,r)),n}return r._value=e,r}function bn(t,e){return function(){se(this,t).delay=+e.apply(this,arguments)}}function yn(t,e){return e=+e,function(){se(this,t).delay=e}}function $n(t,e){return function(){oe(this,t).duration=+e.apply(this,arguments)}}function Cn(t,e){return e=+e,function(){oe(this,t).duration=e}}var wn=Lt.prototype.constructor;function _n(t){return function(){this.style.removeProperty(t)}}var Sn=0;function xn(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Tn(){return++Sn}var In=Lt.prototype;xn.prototype=function(t){return Lt().transition(t)}.prototype={constructor:xn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=b(t));for(var i=this._groups,r=i.length,a=new Array(r),s=0;s<r;++s)for(var o,l,c=i[s],h=c.length,u=a[s]=new Array(h),d=0;d<h;++d)(o=c[d])&&(l=t.call(o,o.__data__,d,c))&&("__data__"in o&&(l.__data__=o.__data__),u[d]=l,ae(u[d],e,n,d,u,le(o,n)));return new xn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=C(t));for(var i=this._groups,r=i.length,a=[],s=[],o=0;o<r;++o)for(var l,c=i[o],h=c.length,u=0;u<h;++u)if(l=c[u]){for(var d,f=t.call(l,l.__data__,u,c),p=le(l,n),g=0,m=f.length;g<m;++g)(d=f[g])&&ae(d,e,n,g,f,p);a.push(f),s.push(l)}return new xn(a,s,e,n)},selectChild:In.selectChild,selectChildren:In.selectChildren,filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s=e[r],o=s.length,l=i[r]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new xn(i,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,i=e.length,r=n.length,a=Math.min(i,r),s=new Array(i),o=0;o<a;++o)for(var l,c=e[o],h=n[o],u=c.length,d=s[o]=new Array(u),f=0;f<u;++f)(l=c[f]||h[f])&&(d[f]=l);for(;o<i;++o)s[o]=e[o];return new xn(s,this._parents,this._name,this._id)},selection:function(){return new wn(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Tn(),i=this._groups,r=i.length,a=0;a<r;++a)for(var s,o=i[a],l=o.length,c=0;c<l;++c)if(s=o[c]){var h=le(s,e);ae(s,t,n,c,o,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new xn(i,this._parents,t,n)},call:In.call,nodes:In.nodes,node:In.node,size:In.size,empty:In.empty,each:In.each,on:function(t,e){var n=this._id;return arguments.length<2?le(this.node(),n).on.on(t):this.each(function(t,e,n){var i,r,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?se:oe;return function(){var s=a(this,t),o=s.on;o!==i&&(r=(i=o).copy()).on(e,n),s.on=r}}(n,t,e))},attr:function(t,e){var n=F(t),i="transform"===n?me:cn;return this.attrTween(t,"function"==typeof e?(n.local?gn:pn)(n,i,ye(this,"attr."+t,e)):null==e?(n.local?un:hn)(n):(n.local?fn:dn)(n,i,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var i=F(t);return this.tween(n,(i.local?mn:vn)(i,e))},style:function(t,e,n){var i="transform"==(t+="")?ge:cn;return null==e?this.styleTween(t,function(t,e){var n,i,r;return function(){var a=Y(this,t),s=(this.style.removeProperty(t),Y(this,t));return a===s?null:a===n&&s===i?r:r=e(n=a,i=s)}}(t,i)).on("end.style."+t,_n(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var i,r,a;return function(){var s=Y(this,t),o=n(this),l=o+"";return null==o&&(this.style.removeProperty(t),l=o=Y(this,t)),s===l?null:s===i&&l===r?a:(r=l,a=e(i=s,o))}}(t,i,ye(this,"style."+t,e))).each(function(t,e){var n,i,r,a,s="style."+e,o="end."+s;return function(){var l=oe(this,t),c=l.on,h=null==l.value[s]?a||(a=_n(e)):void 0;c===n&&r===h||(i=(n=c).copy()).on(o,r=h),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,n){var i,r,a=n+"";return function(){var s=Y(this,t);return s===a?null:s===i?r:r=e(i=s,n)}}(t,i,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&function(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}(t,a,n)),i}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(ye(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var i,r=le(this.node(),n).tween,a=0,s=r.length;a<s;++a)if((i=r[a]).name===t)return i.value;return null}return this.each((null==e?ve:be)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?bn:yn)(e,t)):le(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?$n:Cn)(e,t)):le(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){oe(this,t).ease=e}}(e,t)):le(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;oe(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,i=n._id,r=n.size();return new Promise((function(a,s){var o={value:s},l={value:function(){0==--r&&a()}};n.each((function(){var n=oe(this,i),r=n.on;r!==t&&((e=(t=r).copy())._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),n.on=e})),0===r&&a()}))},[Symbol.iterator]:In[Symbol.iterator]};var En={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Ln(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}Lt.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,i,r,a=t.__transition,s=!0;if(a){for(r in e=null==e?null:e+"",a)(n=a[r]).name===e?(i=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):s=!1;s&&delete t.__transition}}(this,t)}))},Lt.prototype.transition=function(t){var e,n;t instanceof xn?(e=t._id,t=t._name):(e=Tn(),(n=En).time=Wt(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;a<r;++a)for(var s,o=i[a],l=o.length,c=0;c<l;++c)(s=o[c])&&ae(s,t,e,c,o,n||Ln(s,e));return new xn(i,this._parents,t,e)};const{abs:kn,max:Pn,min:An}=Math;function Mn(t){return{type:t}}function Bn(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Dn(t){return(t=Bn(Math.abs(t)))?t[1]:NaN}["w","e"].map(Mn),["n","s"].map(Mn),["n","w","e","s","nw","ne","sw","se"].map(Mn);var On,Fn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rn(t){if(!(e=Fn.exec(t)))throw new Error("invalid format: "+t);var e;return new Hn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Hn(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Gn(t,e){var n=Bn(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Rn.prototype=Hn.prototype,Hn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Nn={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Gn(100*t,e),r:Gn,s:function(t,e){var n=Bn(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(On=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Bn(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function jn(t){return t}var Un,zn,Vn,qn=Array.prototype.map,Wn=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Yn(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?jn:(e=qn.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],s=0,o=e[0],l=0;r>0&&o>0&&(l+o+1>i&&(o=Math.max(1,i-l)),a.push(t.substring(r-=o,r+o)),!((l+=o+1)>i));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?jn:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(qn.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Rn(t)).fill,n=t.align,u=t.sign,d=t.symbol,f=t.zero,p=t.width,g=t.comma,m=t.precision,v=t.trim,b=t.type;"n"===b?(g=!0,b="g"):Nn[b]||(void 0===m&&(m=12),v=!0,b="g"),(f||"0"===e&&"="===n)&&(f=!0,e="0",n="=");var y="$"===d?r:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",$="$"===d?a:/[%p]/.test(b)?l:"",C=Nn[b],w=/[defgprs%]/.test(b);function _(t){var r,a,l,d=y,_=$;if("c"===b)_=C(t)+_,t="";else{var S=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:C(Math.abs(t),m),v&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i<n;++i)switch(t[i]){case".":r=e=i;break;case"0":0===r&&(r=i),e=i;break;default:if(!+t[i])break t;r>0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),S&&0==+t&&"+"!==u&&(S=!1),d=(S?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===b?Wn[8+On/3]:"")+_+(S&&"("===u?")":""),w)for(r=-1,a=t.length;++r<a;)if(48>(l=t.charCodeAt(r))||l>57){_=(46===l?s+t.slice(r+1):t.slice(r))+_,t=t.slice(0,r);break}}g&&!f&&(t=i(t,1/0));var x=d.length+t.length+_.length,T=x<p?new Array(p-x+1).join(e):"";switch(g&&f&&(t=i(T+t,T.length?p-_.length:1/0),T=""),n){case"<":t=d+t+_+T;break;case"=":t=d+T+t+_;break;case"^":t=T.slice(0,x=T.length>>1)+d+t+_+T.slice(x);break;default:t=T+d+t+_}return o(t)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var n=u(((t=Rn(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Dn(e)/3))),r=Math.pow(10,-i),a=Wn[8+i/3];return function(t){return n(r*t)+a}}}}Un=Yn({thousands:",",grouping:[3],currency:["$",""]}),zn=Un.format,Vn=Un.formatPrefix;const Kn=Math.sqrt(50),Xn=Math.sqrt(10),Jn=Math.sqrt(2);function Qn(t,e,n){const i=(e-t)/Math.max(0,n),r=Math.floor(Math.log10(i)),a=i/Math.pow(10,r),s=a>=Kn?10:a>=Xn?5:a>=Jn?2:1;let o,l,c;return r<0?(c=Math.pow(10,-r)/s,o=Math.round(t*c),l=Math.round(e*c),o/c<t&&++o,l/c>e&&--l,c=-c):(c=Math.pow(10,r)*s,o=Math.round(t/c),l=Math.round(e/c),o*c<t&&++o,l*c>e&&--l),l<o&&.5<=n&&n<2?Qn(t,e,2*n):[o,l,c]}function Zn(t,e,n){return Qn(t=+t,e=+e,n=+n)[2]}function ti(t,e,n){n=+n;const i=(e=+e)<(t=+t),r=i?Zn(e,t,n):Zn(t,e,n);return(i?-1:1)*(r<0?1/-r:r)}function ei(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function ni(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ii(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r<a){if(0!==e(i,i))return a;do{const e=r+a>>>1;n(t[e],i)<0?r=e+1:a=e}while(r<a)}return r}return 2!==t.length?(e=ei,n=(e,n)=>ei(t(e),n),i=(e,n)=>t(e)-n):(e=t===ei||t===ni?t:ri,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const s=r(t,e,n,a-1);return s>n&&i(t[s-1],e)>-i(t[s],e)?s-1:s},right:function(t,i,r=0,a=t.length){if(r<a){if(0!==e(i,i))return a;do{const e=r+a>>>1;n(t[e],i)<=0?r=e+1:a=e}while(r<a)}return r}}}function ri(){return 0}const ai=ii(ei),si=ai.right;ai.left,ii((function(t){return null===t?NaN:+t})).center;var oi=si;function li(t,e){var n,i=e?e.length:0,r=t?Math.min(i,t.length):0,a=new Array(r),s=new Array(i);for(n=0;n<r;++n)a[n]=di(t[n],e[n]);for(;n<i;++n)s[n]=e[n];return function(t){for(n=0;n<r;++n)s[n]=a[n](t);return s}}function ci(t,e){var n=new Date;return t=+t,e=+e,function(i){return n.setTime(t*(1-i)+e*i),n}}function hi(t,e){var n,i={},r={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?i[n]=di(t[n],e[n]):r[n]=e[n];return function(t){for(n in i)r[n]=i[n](t);return r}}function ui(t,e){e||(e=[]);var n,i=t?Math.min(e.length,t.length):0,r=e.slice();return function(a){for(n=0;n<i;++n)r[n]=t[n]*(1-a)+e[n]*a;return r}}function di(t,e){var n,i,r=typeof e;return null==e||"boolean"===r?en(e):("number"===r?ce:"string"===r?(n=Re(e))?(e=n,rn):ln:e instanceof Re?rn:e instanceof Date?ci:(i=e,!ArrayBuffer.isView(i)||i instanceof DataView?Array.isArray(e)?li:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?hi:ce:ui))(t,e)}function fi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function pi(t){return+t}var gi=[0,1];function mi(t){return t}function vi(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function bi(t,e,n){var i=t[0],r=t[1],a=e[0],s=e[1];return r<i?(i=vi(r,i),a=n(s,a)):(i=vi(i,r),a=n(a,s)),function(t){return a(i(t))}}function yi(t,e,n){var i=Math.min(t.length,e.length)-1,r=new Array(i),a=new Array(i),s=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<i;)r[s]=vi(t[s],t[s+1]),a[s]=n(e[s],e[s+1]);return function(e){var n=oi(t,e,1,i)-1;return a[n](r[n](e))}}function $i(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ci(){return function(){var t,e,n,i,r,a,s=gi,o=gi,l=di,c=mi;function h(){var t,e,n,l=Math.min(s.length,o.length);return c!==mi&&(t=s[0],e=s[l-1],t>e&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),i=l>2?yi:bi,r=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(r||(r=i(s.map(t),o,l)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=i(o,s.map(t),ce)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,pi),h()):s.slice()},u.range=function(t){return arguments.length?(o=Array.from(t),h()):o.slice()},u.rangeRound=function(t){return o=Array.from(t),l=fi,h()},u.clamp=function(t){return arguments.length?(c=!!t||mi,h()):c!==mi},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,i){return t=n,e=i,h()}}()(mi,mi)}function wi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function _i(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const i=e<t,[r,a,s]=i?Qn(e,t,n):Qn(t,e,n);if(!(a>=r))return[];const o=a-r+1,l=new Array(o);if(i)if(s<0)for(let t=0;t<o;++t)l[t]=(a-t)/-s;else for(let t=0;t<o;++t)l[t]=(a-t)*s;else if(s<0)for(let t=0;t<o;++t)l[t]=(r+t)/-s;else for(let t=0;t<o;++t)l[t]=(r+t)*s;return l}(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var i=e();return function(t,e,n,i){var r,a=ti(t,e,n);switch((i=Rn(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Dn(e)/3)))-Dn(Math.abs(t)))}(a,s))||(i.precision=r),Vn(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Dn(e)-Dn(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Dn(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return zn(i)}(i[0],i[i.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var i,r,a=e(),s=0,o=a.length-1,l=a[s],c=a[o],h=10;for(c<l&&(r=l,l=c,c=r,r=s,s=o,o=r);h-- >0;){if((r=Zn(l,c,n))===i)return a[s]=l,a[o]=c,e(a);if(r>0)l=Math.floor(l/r)*r,c=Math.ceil(c/r)*r;else{if(!(r<0))break;l=Math.ceil(l*r)/r,c=Math.floor(c*r)/r}i=r}return t},t}function Si(){var t=Ci();return t.copy=function(){return $i(t,Si())},wi.apply(t,arguments),_i(t)}const xi=1e3,Ti=6e4,Ii=36e5,Ei=864e5,Li=6048e5,ki=31536e6,Pi=new Date,Ai=new Date;function Mi(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=e=>(t(e=new Date(+e)),e),r.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),r.round=t=>{const e=r(t),n=r.ceil(t);return t-e<n-t?e:n},r.offset=(t,n)=>(e(t=new Date(+t),null==n?1:Math.floor(n)),t),r.range=(n,i,a)=>{const s=[];if(n=r.ceil(n),a=null==a?1:Math.floor(a),!(n<i&&a>0))return s;let o;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<i);return s},r.filter=n=>Mi((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})),n&&(r.count=(e,i)=>(Pi.setTime(+e),Ai.setTime(+i),t(Pi),t(Ai),Math.floor(n(Pi,Ai))),r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?e=>i(e)%t==0:e=>r.count(0,e)%t==0):r:null)),r}const Bi=Mi((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Bi.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Mi((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):Bi:null),Bi.range;const Di=Mi((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getUTCSeconds())),Oi=(Di.range,Mi((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*xi)}),((t,e)=>{t.setTime(+t+e*Ti)}),((t,e)=>(e-t)/Ti),(t=>t.getMinutes()))),Fi=(Oi.range,Mi((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*Ti)}),((t,e)=>(e-t)/Ti),(t=>t.getUTCMinutes()))),Ri=(Fi.range,Mi((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*xi-t.getMinutes()*Ti)}),((t,e)=>{t.setTime(+t+e*Ii)}),((t,e)=>(e-t)/Ii),(t=>t.getHours()))),Hi=(Ri.range,Mi((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*Ii)}),((t,e)=>(e-t)/Ii),(t=>t.getUTCHours()))),Gi=(Hi.range,Mi((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ti)/Ei),(t=>t.getDate()-1))),Ni=(Gi.range,Mi((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Ei),(t=>t.getUTCDate()-1))),ji=(Ni.range,Mi((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Ei),(t=>Math.floor(t/Ei))));function Ui(t){return Mi((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ti)/Li))}ji.range;const zi=Ui(0),Vi=Ui(1),qi=Ui(2),Wi=Ui(3),Yi=Ui(4),Ki=Ui(5),Xi=Ui(6);function Ji(t){return Mi((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/Li))}zi.range,Vi.range,qi.range,Wi.range,Yi.range,Ki.range,Xi.range;const Qi=Ji(0),Zi=Ji(1),tr=Ji(2),er=Ji(3),nr=Ji(4),ir=Ji(5),rr=Ji(6),ar=(Qi.range,Zi.range,tr.range,er.range,nr.range,ir.range,rr.range,Mi((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),sr=(ar.range,Mi((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),or=(sr.range,Mi((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));or.every=t=>isFinite(t=Math.floor(t))&&t>0?Mi((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null,or.range;const lr=Mi((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));function cr(t,e,n,i,r,a){const s=[[Di,1,xi],[Di,5,5e3],[Di,15,15e3],[Di,30,3e4],[a,1,Ti],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,Ii],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,Ei],[i,2,1728e5],[n,1,Li],[e,1,2592e6],[e,3,7776e6],[t,1,ki]];function o(e,n,i){const r=Math.abs(n-e)/i,a=ii((([,,t])=>t)).right(s,r);if(a===s.length)return t.every(ti(e/ki,n/ki,i));if(0===a)return Bi.every(Math.max(ti(e,n,i),1));const[o,l]=s[r/s[a-1][2]<s[a][2]/r?a-1:a];return o.every(l)}return[function(t,e,n){const i=e<t;i&&([t,e]=[e,t]);const r=n&&"function"==typeof n.range?n:o(t,e,n),a=r?r.range(t,+e+1):[];return i?a.reverse():a},o]}lr.every=t=>isFinite(t=Math.floor(t))&&t>0?Mi((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null,lr.range;const[hr,ur]=cr(lr,sr,Qi,ji,Hi,Fi),[dr,fr]=cr(or,ar,zi,Gi,Ri,Oi);function pr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function gr(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function mr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function vr(t){var e=t.dateTime,n=t.date,i=t.time,r=t.periods,a=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,c=Ir(r),h=Er(r),u=Ir(a),d=Er(a),f=Ir(s),p=Er(s),g=Ir(o),m=Er(o),v=Ir(l),b=Er(l),y={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:Kr,e:Kr,f:ta,g:ua,G:fa,H:Xr,I:Jr,j:Qr,L:Zr,m:ea,M:na,p:function(t){return r[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Oa,s:Fa,S:ia,u:ra,U:aa,V:oa,w:la,W:ca,x:null,X:null,y:ha,Y:da,Z:pa,"%":Da},$={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:ga,e:ga,f:$a,g:Pa,G:Ma,H:ma,I:va,j:ba,L:ya,m:Ca,M:wa,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Oa,s:Fa,S:_a,u:Sa,U:xa,V:Ia,w:Ea,W:La,x:null,X:null,y:ka,Y:Aa,Z:Ba,"%":Da},C={a:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=p.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.w=d.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=v.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=m.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return S(t,e,n,i)},d:Hr,e:Hr,f:Vr,g:Dr,G:Br,H:Nr,I:Nr,j:Gr,L:zr,m:Rr,M:jr,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=h.get(i[0].toLowerCase()),n+i[0].length):-1},q:Fr,Q:Wr,s:Yr,S:Ur,u:kr,U:Pr,V:Ar,w:Lr,W:Mr,x:function(t,e,i){return S(t,n,e,i)},X:function(t,e,n){return S(t,i,e,n)},y:Dr,Y:Br,Z:Or,"%":qr};function w(t,e){return function(n){var i,r,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o<c;)37===t.charCodeAt(o)&&(s.push(t.slice(l,o)),null!=(r=Cr[i=t.charAt(++o)])?i=t.charAt(++o):r="e"===i?" ":"0",(a=e[i])&&(i=a(n,r)),s.push(i),l=o+1);return s.push(t.slice(l,o)),s.join("")}}function _(t,e){return function(n){var i,r,a=mr(1900,void 0,1);if(S(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=gr(mr(a.y,0,1))).getUTCDay(),i=r>4||0===r?Zi.ceil(i):Zi(i),i=Ni.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=pr(mr(a.y,0,1))).getDay(),i=r>4||0===r?Vi.ceil(i):Vi(i),i=Gi.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?gr(mr(a.y,0,1)).getUTCDay():pr(mr(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,gr(a)):pr(a)}}function S(t,e,n,i){for(var r,a,s=0,o=e.length,l=n.length;s<o;){if(i>=l)return-1;if(37===(r=e.charCodeAt(s++))){if(r=e.charAt(s++),!(a=C[r in Cr?e.charAt(s++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return y.x=w(n,y),y.X=w(i,y),y.c=w(e,y),$.x=w(n,$),$.X=w(i,$),$.c=w(e,$),{format:function(t){var e=w(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",$);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}var br,yr,$r,Cr={"-":"",_:" ",0:"0"},wr=/^\s*\d+/,_r=/^%/,Sr=/[\\^$*+?|[\]().{}]/g;function xr(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",a=r.length;return i+(a<n?new Array(n-a+1).join(e)+r:r)}function Tr(t){return t.replace(Sr,"\\$&")}function Ir(t){return new RegExp("^(?:"+t.map(Tr).join("|")+")","i")}function Er(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function Lr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function kr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function Pr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function Ar(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function Mr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function Br(t,e,n){var i=wr.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function Dr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function Or(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function Fr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function Rr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function Hr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function Gr(t,e,n){var i=wr.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Nr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function jr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ur(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function zr(t,e,n){var i=wr.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Vr(t,e,n){var i=wr.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function qr(t,e,n){var i=_r.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function Wr(t,e,n){var i=wr.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Yr(t,e,n){var i=wr.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Kr(t,e){return xr(t.getDate(),e,2)}function Xr(t,e){return xr(t.getHours(),e,2)}function Jr(t,e){return xr(t.getHours()%12||12,e,2)}function Qr(t,e){return xr(1+Gi.count(or(t),t),e,3)}function Zr(t,e){return xr(t.getMilliseconds(),e,3)}function ta(t,e){return Zr(t,e)+"000"}function ea(t,e){return xr(t.getMonth()+1,e,2)}function na(t,e){return xr(t.getMinutes(),e,2)}function ia(t,e){return xr(t.getSeconds(),e,2)}function ra(t){var e=t.getDay();return 0===e?7:e}function aa(t,e){return xr(zi.count(or(t)-1,t),e,2)}function sa(t){var e=t.getDay();return e>=4||0===e?Yi(t):Yi.ceil(t)}function oa(t,e){return t=sa(t),xr(Yi.count(or(t),t)+(4===or(t).getDay()),e,2)}function la(t){return t.getDay()}function ca(t,e){return xr(Vi.count(or(t)-1,t),e,2)}function ha(t,e){return xr(t.getFullYear()%100,e,2)}function ua(t,e){return xr((t=sa(t)).getFullYear()%100,e,2)}function da(t,e){return xr(t.getFullYear()%1e4,e,4)}function fa(t,e){var n=t.getDay();return xr((t=n>=4||0===n?Yi(t):Yi.ceil(t)).getFullYear()%1e4,e,4)}function pa(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+xr(e/60|0,"0",2)+xr(e%60,"0",2)}function ga(t,e){return xr(t.getUTCDate(),e,2)}function ma(t,e){return xr(t.getUTCHours(),e,2)}function va(t,e){return xr(t.getUTCHours()%12||12,e,2)}function ba(t,e){return xr(1+Ni.count(lr(t),t),e,3)}function ya(t,e){return xr(t.getUTCMilliseconds(),e,3)}function $a(t,e){return ya(t,e)+"000"}function Ca(t,e){return xr(t.getUTCMonth()+1,e,2)}function wa(t,e){return xr(t.getUTCMinutes(),e,2)}function _a(t,e){return xr(t.getUTCSeconds(),e,2)}function Sa(t){var e=t.getUTCDay();return 0===e?7:e}function xa(t,e){return xr(Qi.count(lr(t)-1,t),e,2)}function Ta(t){var e=t.getUTCDay();return e>=4||0===e?nr(t):nr.ceil(t)}function Ia(t,e){return t=Ta(t),xr(nr.count(lr(t),t)+(4===lr(t).getUTCDay()),e,2)}function Ea(t){return t.getUTCDay()}function La(t,e){return xr(Zi.count(lr(t)-1,t),e,2)}function ka(t,e){return xr(t.getUTCFullYear()%100,e,2)}function Pa(t,e){return xr((t=Ta(t)).getUTCFullYear()%100,e,2)}function Aa(t,e){return xr(t.getUTCFullYear()%1e4,e,4)}function Ma(t,e){var n=t.getUTCDay();return xr((t=n>=4||0===n?nr(t):nr.ceil(t)).getUTCFullYear()%1e4,e,4)}function Ba(){return"+0000"}function Da(){return"%"}function Oa(t){return+t}function Fa(t){return Math.floor(+t/1e3)}function Ra(t){return new Date(t)}function Ha(t){return t instanceof Date?+t:+new Date(+t)}function Ga(t,e,n,i,r,a,s,o,l,c){var h=Ci(),u=h.invert,d=h.domain,f=c(".%L"),p=c(":%S"),g=c("%I:%M"),m=c("%I %p"),v=c("%a %d"),b=c("%b %d"),y=c("%B"),$=c("%Y");function C(t){return(l(t)<t?f:o(t)<t?p:s(t)<t?g:a(t)<t?m:i(t)<t?r(t)<t?v:b:n(t)<t?y:$)(t)}return h.invert=function(t){return new Date(u(t))},h.domain=function(t){return arguments.length?d(Array.from(t,Ha)):d().map(Ra)},h.ticks=function(e){var n=d();return t(n[0],n[n.length-1],null==e?10:e)},h.tickFormat=function(t,e){return null==e?C:c(e)},h.nice=function(t){var n=d();return t&&"function"==typeof t.range||(t=e(n[0],n[n.length-1],null==t?10:t)),t?d(function(t,e){var n,i=0,r=(t=t.slice()).length-1,a=t[i],s=t[r];return s<a&&(n=i,i=r,r=n,n=a,a=s,s=n),t[i]=e.floor(a),t[r]=e.ceil(s),t}(n,t)):h},h.copy=function(){return $i(h,Ga(t,e,n,i,r,a,s,o,l,c))},h}function Na(){return wi.apply(Ga(dr,fr,or,ar,zi,Gi,Ri,Oi,Di,yr).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function ja(t){return"string"==typeof t?new It([[document.querySelector(t)]],[document.documentElement]):new It([[t]],Tt)}function Ua(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function za(t){return function(){return t}}function Va(t){this._context=t}function qa(t){return new Va(t)}br=vr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),yr=br.format,$r=br.parse,br.utcFormat,br.utcParse,Array.prototype.slice,Va.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};const Wa=Math.PI,Ya=2*Wa,Ka=1e-6,Xa=Ya-Ka;function Ja(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}class Qa{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Ja:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Ja;const n=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;e<i;++e)this._+=Math.round(arguments[e]*n)/n+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,n,i){this._append`Q${+t},${+e},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,e,n,i,r,a){this._append`C${+t},${+e},${+n},${+i},${this._x1=+r},${this._y1=+a}`}arcTo(t,e,n,i,r){if(t=+t,e=+e,n=+n,i=+i,(r=+r)<0)throw new Error(`negative radius: ${r}`);let a=this._x1,s=this._y1,o=n-t,l=i-e,c=a-t,h=s-e,u=c*c+h*h;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(u>Ka)if(Math.abs(h*o-l*c)>Ka&&r){let d=n-a,f=i-s,p=o*o+l*l,g=d*d+f*f,m=Math.sqrt(p),v=Math.sqrt(u),b=r*Math.tan((Wa-Math.acos((p+u-g)/(2*m*v)))/2),y=b/v,$=b/m;Math.abs(y-1)>Ka&&this._append`L${t+y*c},${e+y*h}`,this._append`A${r},${r},0,0,${+(h*d>c*f)},${this._x1=t+$*o},${this._y1=e+$*l}`}else this._append`L${this._x1=t},${this._y1=e}`}arc(t,e,n,i,r,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),o=n*Math.sin(i),l=t+s,c=e+o,h=1^a,u=a?i-r:r-i;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Ka||Math.abs(this._y1-c)>Ka)&&this._append`L${l},${c}`,n&&(u<0&&(u=u%Ya+Ya),u>Xa?this._append`A${n},${n},0,1,${h},${t-s},${e-o}A${n},${n},0,1,${h},${this._x1=l},${this._y1=c}`:u>Ka&&this._append`A${n},${n},0,${+(u>=Wa)},${h},${this._x1=t+n*Math.cos(r)},${this._y1=e+n*Math.sin(r)}`)}rect(t,e,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Za(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Qa(e)}function ts(t){return t[0]}function es(t){return t[1]}function ns(t,e){var n=za(!0),i=null,r=qa,a=null,s=Za(o);function o(o){var l,c,h,u=(o=Ua(o)).length,d=!1;for(null==i&&(a=r(h=s())),l=0;l<=u;++l)!(l<u&&n(c=o[l],l,o))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+t(c,l,o),+e(c,l,o));if(h)return a=null,h+""||null}return t="function"==typeof t?t:void 0===t?ts:za(t),e="function"==typeof e?e:void 0===e?es:za(e),o.x=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:za(!!t),o):n},o.curve=function(t){return arguments.length?(r=t,null!=i&&(a=r(i)),o):r},o.context=function(t){return arguments.length?(null==t?i=a=null:a=r(i=t),o):i},o}function is(t,e,n){this.k=t,this.x=e,this.y=n}function rs(){rs=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var $={};c($,s,(function(){return this}));var C=Object.getPrototypeOf,w=C&&C(C(P([])));w&&w!==n&&i.call(w,s)&&($=w);var _=y.prototype=v.prototype=Object.create($);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==us(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(us(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function as(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function ss(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){as(a,i,r,s,o,"next",t)}function o(t){as(a,i,r,s,o,"throw",t)}s(void 0)}))}}function os(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=cs(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){throw t})),f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){o=!0,a=t})),f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function ls(t){return function(t){if(Array.isArray(t))return hs(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||cs(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function cs(t,e){if(t){if("string"==typeof t)return hs(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?hs(t,e):void 0}}function hs(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function us(t){return us="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},us(t)}Qa.prototype,is.prototype={constructor:is,scale:function(t){return 1===t?this:new is(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new is(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},new is(1,0,0),is.prototype;var ds,fs,ps,gs=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;if(jQuery.htmlPrefilter=function(t){return t.replace(gs,"<$1></$2>")},$.extend(Craft,{navHeight:48,isIterable:function(t){return t&&"function"==typeof t[Symbol.iterator]},index:function(t,e){if(t instanceof NodeList||this.isIterable(t))t=Array.from(t);else if(!Array.isArray(t))throw"The first argument passed to Craft.index() must be an array, NodeList, or iterable object.";if("string"==typeof e){var n=e;e=function(t){return t[n]}}return Object.fromEntries(t.map((function(t){return[e(t),t]})))},group:function(t,e){if(!Array.isArray(t))throw"The first argument passed to Craft.group() must be an array.";var n={};return t.reduce((function(t,i,r){var a="string"==typeof e?i[e]:e(i,r);return n.hasOwnProperty(a)||(n[a]=[[],a],t.push(n[a])),n[a][0].push(i),t}),[])},t:function(t,e,n){return void 0!==Craft.translations[t]&&void 0!==Craft.translations[t][e]&&(e=Craft.translations[t][e]),n?this.formatMessage(e,n):e},formatMessage:function(t,e){var n;if(!1===(n=this._tokenizePattern(t)))throw"Message pattern is invalid.";for(var i=0;i<n.length;i++){var r=n[i];if("object"===us(r)&&!1===(n[i]=this._parseToken(r,e)))throw"Message pattern is invalid."}return n.join("")},_tokenizePattern:function(t){var e,n,i=1,r=ls(t);if(-1===(e=n=r.indexOf("{")))return[t];for(var a=[r.slice(0,n).join("")];;){var s=r.indexOf("{",n+1),o=r.indexOf("}",n+1);if(-1===s&&(s=!1),-1===o&&(o=!1),!1===s&&!1===o)break;if(!1===s&&(s=r.length),o>s?(i++,n=s):(i--,n=o),0===i&&(a.push(r.slice(e+1,n).join("").split(",",3)),e=n+1,a.push(r.slice(e,s).join("")),e=s),0!==i&&(!1===s||!1===o))break}return 0===i&&a},_parseToken:function(t,e){var n=this,i=t[0].trim();if(void 0===e[i])return"{".concat(t.join(","),"}");var r=e[i],a=void 0!==t[1]?t[1].trim():"none";switch(a){case"number":return function(){var e=void 0!==t[2]?t[2].trim():null;if(null!==e&&"integer"!==e)throw"Message format 'number' is only supported for integer values.";var n,i=Craft.formatNumber(r);return null===e&&-1!==(n="".concat(r).indexOf("."))&&(i+=".".concat(r.substring(n+1))),i}();case"none":return r;case"select":return function(){if(void 0===t[2])return!1;for(var i=n._tokenizePattern(t[2]),a=i.length,s=!1,o=0;o+1<a;o++){if(Array.isArray(i[o])||!Array.isArray(i[o+1]))return!1;var l=i[o++].trim();(!1===s&&"other"===l||l==r)&&(s=i[o].join(","))}return!1!==s&&n.formatMessage(s,e)}();case"plural":return function(){if(void 0===t[2])return!1;for(var i=n._tokenizePattern(t[2]),a=i.length,s=!1,o=0,l=0;l+1<a;l++){if("object"===us(i[l])||"object"!==us(i[l+1]))return!1;var c=i[l++].trim(),h=ls(c);if(1===l&&"offset:"===c.substring(0,7)){var u=ls(c.replace(/[\n\r\t]/g," ")).indexOf(" ",7);if(-1===u)throw"Message pattern is invalid.";o=parseInt(h.slice(7,u).join("").trim()),c=h.slice(u+1,u+1+h.length).join("").trim()}(!1===s&&"other"===c||"="===c[0]&&parseInt(h.slice(1,1+h.length).join(""))===r||"one"===c&&r-o==1)&&(s=("string"==typeof i[l]?[i[l]]:i[l]).map((function(t){return t.replace("#",r-o)})).join(","))}return!1!==s&&n.formatMessage(s,e)}();default:throw"Message format '".concat(a,"' is not supported.")}},formatDate:function(t){return"object"!==us(t)&&(t=new Date(t)),$.datepicker.formatDate(Craft.datepickerOptions.dateFormat,t)},formatNumber:function(t,e){return void 0===e&&(e=",.0f"),Yn(d3FormatLocaleDefinition).format(e)(t)},shortcutText:function(t,e,n){return"Mac"===Craft.clientOs?(n?"⌥":"")+(e?"⇧":"")+"⌘"+t:"Ctrl+"+(n?"Alt+":"")+(e?"Shift+":"")+t},escapeHtml:function(t){return $("<div/>").text(t).html()},escapeRegex:function(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},getText:function(t){return $("<div/>").html(t).text()},encodeUriComponent:function(t){t=encodeURIComponent(t);var e={"!":"%21","*":"%2A","'":"%27","(":"%28",")":"%29"};for(var n in e){var i=new RegExp("\\"+n,"g");t=t.replace(i,e[n])}return t},selectFullValue:function(t){var e=$(t),n=e.val();if(void 0!==e[0].setSelectionRange){var i=2*n.length;e[0].setSelectionRange(0,i)}else e.val(n)},formatInputId:function(t){var e=t.replace(/^[^A-Za-z]+/,"");return(e=this.rtrim(e.replace(/[^A-Za-z0-9_.]+/g,"-"),"-"))||this.randomString(10)},getUrl:function(t,e,n){"string"!=typeof t&&(t="");var i=null;if($.isPlainObject(e))void 0!==e["#"]&&(i=e["#"],delete e["#"]);else if("string"==typeof e){var r=e.indexOf("#");-1!==r&&(i=e.substring(r+1),e=e.substring(0,r)),e=Object.fromEntries(new URLSearchParams(e).entries())}else e={};var a=t.indexOf("#");-1!==a&&(i||(i=t.substring(a+1)),t=t.substring(0,a));var s,o=t.indexOf("?");if(-1!==o&&(e=$.extend(Object.fromEntries(new URLSearchParams(t.substring(o+1)).entries()),e),t=t.substring(0,o)),-1!==t.search("://")||"/"===t[0])return t+($.isEmptyObject(e)?"":"?".concat($.param(e)))+(i?"#".concat(i):"");if(t=Craft.trim(t,"/"),n){if(s=n,t&&Craft.pathParam){var l=s.match(new RegExp("[&?]"+Craft.escapeRegex(Craft.pathParam)+"=[^&]+"));l&&(s=s.replace(l[0],Craft.rtrim(l[0],"/")+"/"+t),t="")}}else s=Craft.baseUrl;return-1!==(o=s.indexOf("?"))&&(e=$.extend(Object.fromEntries(new URLSearchParams(s.substring(o+1)).entries()),e),s=s.substring(0,o)),!Craft.omitScriptNameInUrls&&t&&(Craft.usePathInfo||!Craft.pathParam?-1===s.search(Craft.scriptName)&&(s=Craft.rtrim(s,"/")+"/"+Craft.scriptName):(void 0!==e[Craft.pathParam]&&(t=e[Craft.pathParam].trimEnd()+(t?"/"+t:"")),e[Craft.pathParam]=t,t=null)),t&&(s=Craft.rtrim(s,"/")+"/"+t),$.isEmptyObject(e)||(s+="?".concat($.param(e))),i&&(s+="#".concat(i)),s},getCpUrl:function(t,e){return this.getUrl(t,e,Craft.baseCpUrl)},getSiteUrl:function(t,e){return this.getUrl(t,e,Craft.baseSiteUrl)},getActionUrl:function(t,e){return Craft.getUrl(t,e,Craft.actionUrl)},redirectTo:function(t){document.location.href=this.getUrl(t)},setUrl:function(t){if("undefined"!=typeof history){t.match(/#/)||(t+=document.location.hash),history.replaceState({},"",t);var e,n=os(document.querySelectorAll("#site-crumb-menu a[href]"));try{for(n.s();!(e=n.n()).done;){var i=e.value,r=this.getQueryParam("site",i.href);i.href=this.getUrl(t,{site:r})}}catch(t){n.e(t)}finally{n.f()}}},setPath:function(t){this.path=t,this.setUrl(Craft.getUrl(t,document.location.search))},setQueryParam:function(t,e){var n=document.location.origin+document.location.pathname,i=this.getQueryParams();null!=e&&!1!==e?i[t]=e:delete i[t],this.setUrl(Craft.getUrl(n,i))},getPageUrl:function(t){var e=document.location.origin+document.location.pathname;e=Craft.rtrim(e,"/");var n=document.location.search?document.location.search.substring(1):"";if("?"===Craft.pageTrigger[0]){var i=Craft.pageTrigger.substring(1);if(document.location.search){var r=Object.fromEntries(new URLSearchParams(n).entries());delete r[i],n=$.param(r)}1!==t&&(n+=(""!==n?"&":"")+"".concat(i,"=").concat(t))}else e=e.replace(new RegExp("/"+Craft.escapeRegex(Craft.pageTrigger)+"\\d+$"),""),1!==t&&(e+="/".concat(Craft.pageTrigger).concat(t));return e+(n?"?".concat(n):"")+document.location.hash},getCsrfInput:function(){return Craft.csrfTokenName?'<input type="hidden" name="'+Craft.csrfTokenName+'" value="'+Craft.csrfTokenValue+'"/>':""},postActionRequest:function(t,e,n,i){"function"==typeof e&&(i=n,n=e,e={}),(i=i||{}).contentType&&i.contentType.match(/\bjson\b/)&&("object"===us(e)&&(e=JSON.stringify(e)),i.contentType="application/json; charset=utf-8");var r=$.ajax($.extend({url:Craft.getActionUrl(t),type:"POST",dataType:"json",headers:this._actionHeaders(),data:e,success:n,error:function(t,e,i){4===t.readyState&&(400!==t.status&&(void 0!==Craft.cp?Craft.cp.displayError():alert(Craft.t("app","A server error occurred."))),n&&n(400===t.status?t.responseJSON:null,e,t))}},i));return"function"==typeof i.send&&i.send(r),r},_actionHeaders:function(){var t={"X-Registered-Asset-Bundles":ls(new Set(Craft.registeredAssetBundles)).join(","),"X-Registered-Js-Files":ls(new Set(Craft.registeredJsFiles)).join(",")};return Craft.csrfTokenValue&&(t["X-CSRF-Token"]=Craft.csrfTokenValue),t},sendActionRequest:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if($.isPlainObject(e)&&(i=e,e=null),"POST"===t.toUpperCase()&&e&&i.data)if("string"==typeof i.data){var r=i&&i.headers&&i.headers["X-Craft-Namespace"],a=this.namespaceInputName("action",r);i.data+="&".concat(a,"=").concat(e)}else delete i.data.action;return new Promise((function(r,a){(i=i?$.extend({},i):{}).method=t,i.url=e?Craft.getActionUrl(e):Craft.getCpUrl(),i.headers=$.extend({"X-Requested-With":"XMLHttpRequest"},i.headers||{},n._actionHeaders()),i.params=$.extend({},i.params||{},{v:(new Date).getTime()}),axios.request(i).then(r).catch(a)}))},sendApiRequest:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Promise((function(r,a){var s=(i=i?$.extend({},i):{}).cancelToken||null;n._getApiHeaders(s).then((function(o){i.method=t,i.baseURL=Craft.baseApiUrl,i.url=e,i.headers=$.extend(o,i.headers||{}),i.params=$.extend(Craft.apiParams||{},i.params||{},{v:(new Date).getTime()}),n._apiHeaders||(i.params.processCraftHeaders=1),Craft.httpProxy&&(i.proxy=Craft.httpProxy),axios.request(i).then((function(t){n._processApiHeaders(t.headers,s).then((function(){r(t.data)})).catch(a)})).catch(a)})).catch(a)}))},_loadingApiHeaders:!1,_apiHeaders:null,_apiHeaderWaitlist:[],_getApiHeaders:function(t){var n=this;return new Promise((function(i,r){n._loadingApiHeaders?n._apiHeaderWaitlist.push([i,r]):n._apiHeaders?i(n._apiHeaders):(n._loadingApiHeaders=!0,n.sendActionRequest("POST","app/api-headers",{cancelToken:t}).then((function(t){n._loadingApiHeaders?i(t.data):r(e)})).catch((function(t){n._rejectApiRequests(r,t)})))}))},_processApiHeaders:function(t,n){var i=this;return new Promise((function(r,a){i._apiHeaders?r():i.sendActionRequest("POST","app/process-api-response-headers",{data:{headers:t},cancelToken:n}).then((function(t){if(i._loadingApiHeaders)for(i._apiHeaders=t.data,i._loadingApiHeaders=!1,r();i._apiHeaderWaitlist.length;)i._apiHeaderWaitlist.shift()[0](i._apiHeaders);else a(e)})).catch((function(t){i._rejectApiRequests(a,t)}))}))},_rejectApiRequests:function(t,e){for(this._loadingApiHeaders=!1,t(e);this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1](e)},clearCachedApiHeaders:function(){for(this._apiHeaders=null,this._loadingApiHeaders=!1;this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1]()},downloadFromUrl:function(t,e,n){return new Promise((function(i,r){var a=new XMLHttpRequest;a.open(t,e,!0),"object"===us(n)?(a.setRequestHeader("Content-Type","application/json; charset=UTF-8"),n=JSON.stringify(n)):a.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),a.responseType="blob",a.onload=function(){if(200===a.status){var t=a.getResponseHeader("content-disposition"),e=/"([^"]*)"/.exec(t),n=null!=e&&e[1]?e[1]:"Download",s=a.getResponseHeader("content-type"),o=new Blob([a.response],{type:s}),l=document.createElement("a");l.href=window.URL.createObjectURL(o),l.download=n,document.body.appendChild(l),l.click(),document.body.removeChild(l),i()}else r()},a.send(n)}))},stringToArray:function(t){if("string"!=typeof t)return t;for(var e=t.split(","),n=0;n<e.length;n++)e[n]=$.trim(e[n]);return e},findDeltaData:function(t,e,n){var i,r,a,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],c=arguments.length>6&&void 0!==arguments[6]&&arguments[6],h=(r=this.findModifiedDeltaNames(t,e,n,o,l),a=2,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(r,a)||cs(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=h[0],d=h[1],f=d.__root__,p=os(u);try{for(p.s();!(i=p.n()).done;){var g=i.value;(f=f.concat(d[g])).push("modifiedDeltaNames[]=".concat(g)),s&&s(g,d[g])}}catch(t){p.e(t)}finally{p.f()}return c?f:f.join("&")},findModifiedDeltaNames:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];t="string"==typeof t?t:"",e="string"==typeof e?e:"",Array.isArray(n)||(n=[]),$.isPlainObject(i)||(i={}),Array.isArray(r)||(r=[]),n.sort((function(t,e){return t.length===e.length?0:a?t.length<e.length?1:-1:t.length>e.length?1:-1}));var s,o=this._groupParamsByDeltaNames(t.split("&"),n,!1,i),l=this._groupParamsByDeltaNames(e.split("&"),n,!0,!1),c=os(n);try{for(c.s();!(s=c.n()).done;){var h=s.value;r.includes(h)||"object"!==us(l[h])||"object"===us(o[h])&&JSON.stringify(o[h])===JSON.stringify(l[h])||r.push(h)}}catch(t){c.e(t)}finally{c.f()}return[r,l]},_groupParamsByDeltaNames:function(t,e,n,i){var r={};n&&(r.__root__=[]);var a,s=os(e=e.sort((function(t,e){return e.length-t.length})));try{for(s.s();!(a=s.n()).done;)r[a.value]=[]}catch(t){s.e(t)}finally{s.f()}var o,l=function(t){return encodeURIComponent(t).replace("%3D","=")},c=os(t=t.map((function(t){return decodeURIComponent(t)})));try{t:for(c.s();!(o=c.n()).done;){var h,u=o.value,d=os(e);try{for(d.s();!(h=d.n()).done;){var f=h.value,p=u.substring(0,f.length+1);if(["".concat(f,"="),"".concat(f,"[")].includes(p)){void 0===r[f]&&(r[f]=[]),r[f].push(l(u));continue t}}}catch(t){d.e(t)}finally{d.f()}n&&r.__root__.push(l(u))}}catch(t){c.e(t)}finally{c.f()}if(i){var g=function(t,e){return Array.isArray(e)||$.isPlainObject(e)?e=$.param(e):"string"==typeof e?e=encodeURIComponent(e):null===e&&(e=""),"".concat(encodeURIComponent(t),"=").concat(e)};for(var m in i)if(i.hasOwnProperty(m))if($.isPlainObject(i[m]))for(var v in r[m]=[],i[m])i[m].hasOwnProperty(v)&&r[m].push(g("".concat(m,"[").concat(v,"]"),i[m][v]));else r[m]=[g(m,i[m])]}return r},expandPostArray:function(t){var e,n={};for(var i in t)if(t.hasOwnProperty(i)){var r,a=t[i],s=i.match(/^(\w+)(\[.*)?/);if(s[2])for(r=s[2].match(/\[[^\[\]]*\]/g),e=0;e<r.length;e++)r[e]=r[e].substring(1,r[e].length-1);else r=[];r.unshift(s[1]);var o=n;for(e=0;e<r.length;e++)e<r.length-1?("object"!==us(o[r[e]])&&(r[e+1]&&parseInt(r[e+1])!=r[e+1]?o[r[e]]={}:o[r[e]]=[]),o=o[r[e]]):(r[e]||(r[e]=o.length),o[r[e]]=a)}return n},createForm:function(t){var e=$("<form/>",{attr:{method:"post",action:"","accept-charset":"UTF-8"}});if("string"==typeof t)for(var n,i=t.split("&"),r=0;r<i.length;r++)n=i[r].split("=",2),$("<input/>",{type:"hidden",name:decodeURIComponent(n[0]),value:decodeURIComponent(n[1]||"")}).appendTo(e);return e},compare:function(t,e,n){if(us(t)!==us(e))return!1;if("object"===us(t)&&null!==t&&null!==e){if(t.length!==e.length)return!1;if(Array.isArray(t)!==Array.isArray(e))return!1;if(!Array.isArray(t))if(void 0===n||!0===n){if(!Craft.compare(Craft.getObjectKeys(t).sort(),Craft.getObjectKeys(e).sort()))return!1}else if(!Craft.compare(Craft.getObjectKeys(t),Craft.getObjectKeys(e)))return!1;for(var i in t)if(t.hasOwnProperty(i)&&!Craft.compare(t[i],e[i]))return!1;return!0}return t===e},getObjectKeys:function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e},escapeChars:function(t){Array.isArray(t)||(t=t.split());for(var e="",n=0;n<t.length;n++)e+="\\"+t[n];return e},ltrim:function(t,e){if(!t)return t;if(void 0===e)return t.trimStart();var n=new RegExp("^["+Craft.escapeChars(e)+"]+");return t.replace(n,"")},rtrim:function(t,e){if(!t)return t;if(void 0===e)return t.trimEnd();var n=new RegExp("["+Craft.escapeChars(e)+"]+$");return t.replace(n,"")},trim:function(t,e){return t?void 0===e?t.trim():(t=Craft.ltrim(t,e),t=Craft.rtrim(t,e)):t},startsWith:function(t,e){return t.startsWith(e)},ensureStartsWith:function(t,e){return t.startsWith(e)||(t=e+t),t},ensureEndsWith:function(t,e){return t.endsWith(e)||(t+=e),t},filterArray:function(t,e){for(var n=[],i=0;i<t.length;i++)("function"==typeof e?e(t[i],i):t[i])&&n.push(t[i]);return n},filterObject:function(t,e){return void 0===e&&(e=function(t){return!!t}),Object.fromEntries(Object.entries(t).filter(e))},inArray:function(t,e){return $.isPlainObject(e)&&(e=Object.values(e)),e.includes(t)},removeFromArray:function(t,e){var n=$.inArray(t,e);return-1!==n&&(e.splice(n,1),!0)},getLast:function(t){return t.length?t[t.length-1]:null},uppercaseFirst:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},lowercaseFirst:function(t){return t.charAt(0).toLowerCase()+t.slice(1)},parseUrl:function(t){var e=t.match(/^(?:(https?):\/\/|\/\/)([^\/\:]*)(?:\:(\d+))?(\/[^\?]*)?(?:\?([^#]*))?(#.*)?/);return e?{scheme:e[1],host:e[2]+(e[3]?":"+e[3]:""),hostname:e[2],port:e[3]||null,path:e[4]||"/",query:e[5]||null,hash:e[6]||null}:{}},getQueryParams:function(t){var e;if(t){var n=t.match(/\?.+/);if(!n)return{};e=n[0]}else e=window.location.search;return Object.fromEntries(new URLSearchParams(e).entries())},getQueryParam:function(t,e){return this.getQueryParams(e)[t]},isSameHost:function(t){var e=this.parseUrl(document.location.href);if(!e)return!1;var n=this.parseUrl(t);return!!n&&e.host===n.host},secondsToHumanTimeDuration:function(t,e){void 0===e&&(e=!0);var n=604800,i=Math.floor(t/n);t%=n;var r=Math.floor(t/86400);t%=86400;var a,s=Math.floor(t/3600);t%=3600,e?(a=Math.floor(t/60),t%=60):(a=Math.round(t/60),t=0);var o=[];return i&&o.push(i+" "+(1===i?Craft.t("app","week"):Craft.t("app","weeks"))),r&&o.push(r+" "+(1===r?Craft.t("app","day"):Craft.t("app","days"))),s&&o.push(s+" "+(1===s?Craft.t("app","hour"):Craft.t("app","hours"))),!a&&(e||i||r||s)||o.push(a+" "+(1===a?Craft.t("app","minute"):Craft.t("app","minutes"))),!t&&(!e||i||r||s||a)||o.push(t+" "+(1===t?Craft.t("app","second"):Craft.t("app","seconds"))),o.join(", ")},asciiString:function(t,e){t=t.normalize("NFC");for(var n,i="",r=0;r<t.length;r++)n=t.charAt(r),i+="string"==typeof(e||Craft.asciiCharMap)[n]?(e||Craft.asciiCharMap)[n]:n;return i},uuid:function(){return"function"==typeof crypto.randomUUID?crypto.randomUUID():([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))},namespaceInputName:function(t,e){return e?t.replace(/([^'"\[\]]+)([^'"]*)/,"".concat(e,"[$1]$2")):t},namespaceId:function(t,e){return(e?"".concat(Craft.formatInputId(e),"-"):"")+Craft.formatInputId(t)},randomString:function(t){for(var e="",n=0;n<t;n++)e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return e},createErrorList:function(t){for(var e=$(document.createElement("ul")).addClass("errors"),n=0;n<t.length;n++){var i=$(document.createElement("li"));i.appendTo(e),i.html(t[n])}return e},_existingCss:null,_existingJs:null,_appendHtml:(ps=ss(rs().mark((function t(e,n){var i,r=this;return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:i=$.parseHTML(e.trim(),!0).filter((function(t){if("LINK"===t.nodeName&&t.href)return r._existingCss||(r._existingCss=$("link[href]").toArray().map((function(t){return t.href.replace(/&/g,"&amp;")}))),!r._existingCss.includes(t.href)&&(r._existingCss.push(t.href),!0);if("SCRIPT"===t.nodeName&&t.src){if(r._existingJs||(r._existingJs=$("script[src]").toArray().map((function(t){return t.src.replace(/&/g,"&amp;")}))),t.src.startsWith(r.resourceBaseUrl)&&!r.isSameHost(t.src)&&(t.src=r.getActionUrl("app/resource-js",{url:t.src})),r._existingJs.includes(t.src))return!1;r._existingJs.push(t.src)}return!0})),n.append(i);case 4:case"end":return t.stop()}}),t)}))),function(t,e){return ps.apply(this,arguments)}),appendHeadHtml:(fs=ss(rs().mark((function t(e){return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._appendHtml(e,$("head"));case 2:case"end":return t.stop()}}),t,this)}))),function(t){return fs.apply(this,arguments)}),appendBodyHtml:(ds=ss(rs().mark((function t(e){return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._appendHtml(e,Garnish.$bod);case 2:case"end":return t.stop()}}),t,this)}))),function(t){return ds.apply(this,arguments)}),appendFootHtml:function(t){console.warn("Craft.appendFootHtml() is deprecated. Craft.appendBodyHtml() should be used instead."),this.appendBodyHtml(t)},initUiElements:function(t){$(".grid",t).grid(),$(".info",t).infoicon(),$(".checkbox-select",t).checkboxselect(),$(".fieldtoggle",t).fieldtoggle(),$(".lightswitch",t).lightswitch(),$(".nicetext",t).nicetext(),$(".datetimewrapper",t).datetime(),$('.datewrapper > input[type="date"], .timewrapper > input[type="time"]',t).datetimeinput(),$(".formsubmit",t).formsubmit(),$(".menubtn:not([data-disclosure-trigger])",t).menubtn(),$("[data-disclosure-trigger]",t).disclosureMenu(),$("a",t).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")}))},_elementIndexClasses:{},_elementSelectorModalClasses:{},_elementEditorClasses:{},_uploaderClasses:{},_authFormHandlers:{},registerElementIndexClass:function(t,e){if(void 0!==this._elementIndexClasses[t])throw"An element index class has already been registered for the element type “"+t+"”.";this._elementIndexClasses[t]=e},registerUploaderClass:function(t,e){if(void 0!==this._uploaderClasses[t])throw"An asset uploader class has already been registered for the filesystem type “"+t+"”.";this._uploaderClasses[t]=e},registerElementSelectorModalClass:function(t,e){if(void 0!==this._elementSelectorModalClasses[t])throw"An element selector modal class has already been registered for the element type “"+t+"”.";this._elementSelectorModalClasses[t]=e},registerAuthFormHandler:function(t,e){if(void 0!==this._authFormHandlers[t])throw"An authentication form handler has already been registered for the method “".concat(t,"”.");this._authFormHandlers[t]=e},createElementIndex:function(t,e,n){return new(void 0!==this._elementIndexClasses[t]?this._elementIndexClasses[t]:Craft.BaseElementIndex)(t,e,n)},createUploader:function(t,e,n){var i=new(void 0!==this._uploaderClasses[t]?this._uploaderClasses[t]:Craft.Uploader)(e,n);return i.fsType=t,i},createElementSelectorModal:function(t,e){return new(void 0!==this._elementSelectorModalClasses[t]?this._elementSelectorModalClasses[t]:Craft.BaseElementSelectorModal)(t,e)},createAuthFormHandler:function(t,e,n,i){if(void 0===this._authFormHandlers[t])throw'No authentication form has been registered for the method "'.concat(t,'".');if(e instanceof jQuery){if(!e.length)throw"No form element specified.";e=e[0]}return i||(i=function(t){Craft.cp.displayError(t)}),new this._authFormHandlers[t](e,n,i)},createElementEditor:function(t,e,n){return void 0===n&&$.isPlainObject(e)?(n=e,e=null):"object"!==us(n)&&(n={}),n.elementType||(n.elementType=t),new Craft.ElementEditorSlideout(e,n)},getLocalStorage:function(t,e){return t="Craft-"+Craft.systemUid+"."+t,"undefined"!=typeof localStorage&&void 0!==localStorage[t]?JSON.parse(localStorage[t]):e},setLocalStorage:function(t,e){if("undefined"!=typeof localStorage){t="Craft-"+Craft.systemUid+"."+t;try{localStorage[t]=JSON.stringify(e)}catch(t){}}},removeLocalStorage:function(t){"undefined"!=typeof localStorage&&localStorage.removeItem("Craft-".concat(Craft.systemUid,".").concat(t))},getCookie:function(t){return document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)Craft-".concat(Craft.systemUid,":").concat(t,"\\s*\\=\\s*([^;]*).*$)|^.*$")),"$1")},setCookie:function(t,e,n){n=$.extend({},this.defaultCookieOptions,n);var i="Craft-".concat(Craft.systemUid,":").concat(t,"=").concat(encodeURIComponent(e));n.path&&(i+=";path=".concat(n.path)),n.domain&&(i+=";domain=".concat(n.domain)),n.maxAge?i+=";max-age-in-seconds=".concat(n.maxAge):n.expires&&(i+=";expires=".concat(n.expires.toUTCString())),n.secure&&(i+=";secure"),document.cookie=i},removeCookie:function(t){this.setCookie(t,"",new Date("1970-01-01T00:00:00"))},getElementInfo:function(t){var e=$(t);return e.hasClass("element")||(e=e.find(".element:first")),{id:e.data("id"),siteId:e.data("site-id"),label:e.data("label"),status:e.data("status"),url:e.data("url"),hasThumb:e.hasClass("has-thumb"),$element:e}},setElementSize:function(t,e){var n=$(t);if("small"!==e&&"large"!==e&&(e="small"),!n.hasClass(e)){var i="small"===e?"large":"small";if(n.addClass(e).removeClass(i),n.hasClass("has-thumb")){var r=n.find("> .thumb > img"),a=$("<img/>",{sizes:("small"===e?"30":"100")+"px",srcset:r.attr("srcset")||r.attr("data-pfsrcset")});r.replaceWith(a),picturefill({elements:[a[0]]})}}},refreshElementInstances:function(t){var e=$('div.element[data-id="'.concat(t,'"][data-settings]'));if(e.length){for(var n={},i=0;i<e.length;i++){var r=e.eq(i),a=r.data("site-id");void 0===n[a]&&(n[a]={key:i,type:r.data("type"),id:t,siteId:a,instances:[]}),n[a].instances.push(r.data("settings"))}var s={elements:Object.values(n)};Craft.sendActionRequest("POST","app/render-elements",{data:s}).then((function(n){for(var i=n.data.elements[t]||{},r=0,a=Object.keys(i);r<a.length;r++){var s,o=a[r],l=e.eq(o),c=$(i[o]),h=os(c[0].attributes);try{for(h.s();!(s=h.n()).done;){var u=s.value;"class"===u.name?l.addClass(u.value):l.attr(u.name,u.value)}}catch(t){h.e(t)}finally{h.f()}var d=l.find("> .chip-content .chip-actions,> .card-actions-container .card-actions").detach(),f=l.find("input,button").detach();if(l.html(c.html()),d.length){var p=d.find("span.status"),g=c.find("span.status");p.length&&g.length&&p[0].classList!==g[0].classList&&d.find("span.status").replaceWith(g),l.find("> .chip-content .chip-actions,> .card-actions-container .card-actions").replaceWith(d)}f.length&&f.appendTo(l)}Craft.cp.elementThumbLoader.load(e)}))}},refreshComponentInstances:function(t,e){var n=$('div.chip[data-type="'.concat($.escapeSelector(t),'"][data-id="').concat(e,'"][data-settings]'));if(n.length){for(var i=[],r=0;r<n.length;r++)i.push(n.eq(r).data("settings"));var a={components:[{type:t,id:e,instances:i}]};Craft.sendActionRequest("POST","app/render-components",{data:a}).then((function(i){for(var r=i.data,a=0;a<r.components[t][e].length;a++){var s,o=n.eq(a),l=$(r.components[t][e][a]),c=os(l[0].attributes);try{for(c.s();!(s=c.n()).done;){var h=s.value;"class"===h.name?o.addClass(h.value):o.attr(h.name,h.value)}}catch(t){c.e(t)}finally{c.f()}var u=o.find(".chip-actions").detach(),d=o.find("input,button").detach();o.html(l.html()),u.length&&o.find(".chip-actions").replaceWith(u),d.length&&d.appendTo(o)}}))}},addActionsToChip:function(t,e){if(null!=e&&e.length){var n=$(t).find("> .chip-content > .chip-actions, > .card-actions-container > .card-actions"),i=n.find(".action-btn");if(!i.length){var r="actions-".concat(Math.floor(1e6*Math.random())),a="".concat(r,"-label"),s=$("<label/>",{id:a,class:"visually-hidden",text:Craft.t("app","Actions")}).appendTo(n);i=$("<button/>",{class:"btn action-btn",type:"button",title:Craft.t("app","Actions"),"aria-controls":r,"aria-describedby":a,"data-disclosure-trigger":"true"}).insertAfter(s),$("<div/>",{id:r,class:"menu menu--disclosure"}).insertAfter(i)}var o=i.disclosureMenu().data("disclosureMenu"),l=e.filter((function(t){return!t.destructive})),c=e.filter((function(t){return t.destructive}));l.length&&o.addItems(l,o.addGroup()),c.length&&o.addItems(c,o.addGroup()),Craft.initUiElements(o.$container)}},submitForm:function(t,e){var n=this;void 0===e&&(e={}),e.confirm&&!confirm(e.confirm)||(e.requireElevatedSession?Craft.elevatedSessionManager.requireElevatedSession((function(){n._submitFormInternal(t,e)})):this._submitFormInternal(t,e))},_submitFormInternal:function(t,e){var n,i=null!==(n=e.namespace)&&void 0!==n?n:null;if(e.action&&$("<input/>",{type:"hidden",name:this.namespaceInputName("action",i),val:e.action}).appendTo(t),e.redirect&&$("<input/>",{type:"hidden",name:this.namespaceInputName("redirect",i),val:e.redirect}).appendTo(t),e.params)for(var r in e.params){var a=e.params[r];$("<input/>",{type:"hidden",name:this.namespaceInputName(r,i),val:a}).appendTo(t)}e.retainScroll&&this.setLocalStorage("scrollY",window.scrollY),t.trigger($.extend({type:"submit"},e.data))},trapFocusWithin:function(t){Garnish.trapFocusWithin(t)},setFocusWithin:function(t){Garnish.setFocusWithin(t)},filterInputVal:function(t,e){for(var n=$(t),i=n.val(),r=n[0].selectionStart,a="",s=0;s<i.length;s++)i[s].match(e)?a+=i[s]:s<r&&r--;a!==i&&(n.val(a),n[0].setSelectionRange(r,r))},filterNumberInputVal:function(t){this.filterInputVal(t,/[0-9.,\-]/)},setElementAttributes:function(t,e){var n=$(t);for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(null===r||!1===r)n.removeAttr(i);else if(!0===r)n.attr(i,"");else if(Array.isArray(r)||$.isPlainObject(r))if(Craft.dataAttributes.includes(i)){for(var a in r=Object.assign({},r))if(r.hasOwnProperty(a)){var s=r[a];null!==s&&!1!==s&&(s=$.isPlainObject(s)||Array.isArray(s)?JSON.stringify(s):!0===s?"":this.escapeHtml(s),n.attr("".concat(i,"-").concat(a),s))}}else if("class"===i){$.isPlainObject(r)&&(r=Object.values(r));var o,l=os(r);try{for(l.s();!(o=l.n()).done;){var c=o.value;n.addClass(c)}}catch(t){l.e(t)}finally{l.f()}}else"style"===i?n.css(r):n.attr(i,JSON.stringify(r));else n.attr(i,this.escapeHtml(r))}},isVisible:function(){return void 0===document.visibilityState||"visible"===document.visibilityState},useMobileStyles:function(){return Garnish.isMobileBrowser()||document.body.clientWidth<600}}),Craft.pageId=Craft.uuid(),"undefined"!=typeof BroadcastChannel){var ms="CraftCMS:".concat(Craft.appId);Craft.broadcaster=new BroadcastChannel(ms),Craft.messageReceiver=new BroadcastChannel(ms),Craft.broadcaster.addEventListener("message",(function(t){switch(t.data.event){case"beforeTrackJobProgress":Craft.cp.cancelJobTracking();break;case"trackJobProgress":if(Craft.cp.setJobData(t.data.jobData),Craft.cp.jobInfo.length){var e=Craft.cp.getNextJobDelay()+1e3;Craft.cp.trackJobProgress(e)}}})),Craft.messageReceiver.addEventListener("message",(function(t){"saveElement"===t.data.event&&Craft.refreshElementInstances(t.data.id)}))}function vs(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function bs(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,i=e.padEnd(e.length+n,"="),r=atob(i),a=new ArrayBuffer(r.length),s=new Uint8Array(a);for(let t=0;t<r.length;t++)s[t]=r.charCodeAt(t);return a}function ys(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function $s(t){const{id:e}=t;return{...t,id:bs(e),transports:t.transports}}$.extend($.fn,{animateLeft:function(t,e,n,i){return"ltr"===Craft.orientation?this.velocity({left:t},e,n,i):this.velocity({right:t},e,n,i)},animateRight:function(t,e,n,i){return"ltr"===Craft.orientation?this.velocity({right:t},e,n,i):this.velocity({left:t},e,n,i)},disable:function(){return this.each((function(){var t=$(this);t.addClass("disabled"),t.data("activatable")&&t.removeAttr("tabindex")}))},enable:function(){return this.each((function(){var t=$(this);t.removeClass("disabled"),t.data("activatable")&&t.attr("tabindex","0")}))},grid:function(){return this.each((function(){var t=$(this),e={};t.data("item-selector")&&(e.itemSelector=t.data("item-selector")),t.data("cols")&&(e.cols=parseInt(t.data("cols"))),t.data("max-cols")&&(e.maxCols=parseInt(t.data("max-cols"))),t.data("min-col-width")&&(e.minColWidth=parseInt(t.data("min-col-width"))),t.data("mode")&&(e.mode=t.data("mode")),t.data("fill-mode")&&(e.fillMode=t.data("fill-mode")),t.data("col-class")&&(e.colClass=t.data("col-class")),t.data("snap-to-grid")&&(e.snapToGrid=!!t.data("snap-to-grid")),new Craft.Grid(this,e)}))},infoicon:function(){return this.each((function(){new Craft.InfoIcon(this)}))},checkboxselect:function(){return this.each((function(){$.data(this,"checkboxSelect")||new Garnish.CheckboxSelect(this)}))},fieldtoggle:function(){return this.each((function(){$.data(this,"fieldtoggle")||new Craft.FieldToggle(this)}))},lightswitch:function(t,e,n){return"settings"===t?("string"==typeof e?(t={})[e]=n:t=e,this.each((function(){var e=$.data(this,"lightswitch");e&&e.setSettings(t)}))):($.isPlainObject(t)||(t={}),this.each((function(){var e=$.extend({},t);Garnish.hasAttr(this,"data-value")&&(e.value=$(this).attr("data-value")),Garnish.hasAttr(this,"data-indeterminate-value")&&(e.indeterminateValue=$(this).attr("data-indeterminate-value")),$.data(this,"lightswitch")||new Craft.LightSwitch(this,e)})))},nicetext:function(){return this.each((function(){$.data(this,"nicetext")||new Garnish.NiceText(this)}))},formsubmit:function(){return this.on("activate",(function(t){var e,n=$(t.currentTarget),i=n.data("params")||{};n.data("param")&&(i[n.data("param")]=n.data("value"));var r=null;if("false"===n.attr("data-form"))e=Craft.createForm().addClass("hidden").append(Craft.getCsrfInput()).appendTo(Garnish.$bod);else{var a=n.closest(".menu--disclosure").length?n.closest(".menu--disclosure").data("trigger").$trigger:n.data("menu")?n.data("menu").$anchor:n;0==a.parents(".slideout").length?e=a.attr("data-form")?$("#"+a.attr("data-form")):n.attr("data-form")?$("#"+n.attr("data-form")):a.closest("form"):(e=a.closest("form"),r=a.parents(".slideout").data("cpScreen").namespace),a.data("disclosureMenu")&&a.data("disclosureMenu").hide()}Craft.submitForm(e,{confirm:n.data("confirm"),action:n.data("action"),redirect:n.data("redirect"),requireElevatedSession:Garnish.hasAttr(n,"data-require-elevated-session"),namespace:r,params:i,data:$.extend({customTrigger:n},n.data("event-data"))})}))},menubtn:function(){return this.each((function(){var t=$(this);if(!t.data("menubtn")&&t.next().hasClass("menu")){var e={};t.data("menu-anchor")&&(e.menuAnchor=t.data("menu-anchor")),new Garnish.MenuBtn(t,e)}}))},disclosureMenu:function(t){return this.each((function(){var e=$(this);!e.data("trigger")&&e.attr("aria-controls")&&new Garnish.DisclosureMenu(e,t)}))},datetime:function(){return this.each((function(){var t=$(this),e=t.find('input:not([name$="[timezone]"])'),n=function(){for(var n=!1,i=0;i<e.length;i++)if(e.eq(i).val()&&!e.eq(i).is(":disabled")){n=!0;break}if(n){if(!t.children(".clear-btn").length)var r=$("<button/>",{type:"button",class:"clear-btn",title:Craft.t("app","Clear"),"aria-label":Craft.t("app","Clear")}).appendTo(t).on("click",(function(){for(var t=0;t<e.length;t++)e.eq(t).val("").trigger("input").trigger("change");r.remove(),e.first().filter('[type="text"]').focus()}))}else t.children(".clear-btn").remove()};e.on("change",n),n()}))},datetimeinput:function(){return this.each((function(){var t=$(this),e=function(){""===t.val()?t.addClass("empty-value"):t.removeClass("empty-value")};t.on("input",e),e()}))}}),Garnish.NiceText.charsLeftHtml=function(t){return Craft.t("app",'<span class="visually-hidden">Characters left:</span> {chars, number}',{chars:t})},Garnish.$doc.ready((function(){Craft.initUiElements()})),__webpack_require__(1592),__webpack_require__(8960),__webpack_require__(5774),__webpack_require__(8495),__webpack_require__(5970),__webpack_require__(4993),__webpack_require__(8843),__webpack_require__(4918),__webpack_require__(5759),__webpack_require__(8167),__webpack_require__(4211),__webpack_require__(1157),__webpack_require__(7745),__webpack_require__(8895),__webpack_require__(463),__webpack_require__(7452),__webpack_require__(6872),__webpack_require__(2495),__webpack_require__(1016),__webpack_require__(5077),__webpack_require__(4606),__webpack_require__(8391),__webpack_require__(9222),__webpack_require__(525),__webpack_require__(313),__webpack_require__(3778),__webpack_require__(6617),Craft.charts={},Craft.charts.DataTable=Garnish.Base.extend({columns:null,rows:null,init:function(t){var e=t.columns,n=t.rows;n.forEach((function(t){$.each(t,(function(n){var i;switch(e[n].type){case"date":i=$r("%Y-%m-%d"),t[n]=i(t[n]);break;case"datetime":i=$r("%Y-%m-%d %H:00:00"),t[n]=i(t[n]);break;case"percent":t[n]=t[n]/100;break;case"number":t[n]=+t[n]}}))})),this.columns=e,this.rows=n}}),Craft.charts.Tip=Garnish.Base.extend({$container:null,$tip:null,init:function(t){this.$container=t,this.$tip=$('<div class="tooltip"></div>').appendTo(this.$container),this.hide()},setContent:function(t){this.$tip.html(t)},setPosition:function(t){this.$tip.css("left","".concat(t.left,"px")),this.$tip.css("top","".concat(t.top,"px"))},show:function(){this.$tip.css("display","block")},hide:function(){this.$tip.css("display","none")}}),Craft.charts.BaseChart=Garnish.Base.extend({$container:null,$chart:null,chartBaseClass:"cp-chart",dataTable:null,formatLocale:null,timeFormatLocale:null,orientation:null,svg:null,width:null,height:null,init:function(t,e){var n=this;this.$container=t,this.setSettings(Craft.charts.BaseChart.defaults),this.setSettings(e);var i={formats:window.d3Formats,formatLocaleDefinition:window.d3FormatLocaleDefinition,timeFormatLocaleDefinition:window.d3TimeFormatLocaleDefinition};this.setSettings(i),ja(window).on("resize",(function(){n.resize()}))},setSettings:function(t,e){var n=void 0===this.settings?{}:this.settings;this.settings=$.extend(!0,{},n,e,t)},draw:function(t,e){this.setSettings(e),this.dataTable=t,this.formatLocale=Yn(this.settings.formatLocaleDefinition),this.timeFormatLocale=vr(this.settings.timeFormatLocaleDefinition),this.orientation=this.settings.orientation,this.$chart&&this.$chart.remove();var n=this.chartBaseClass;this.settings.chartClass&&(n+=" "+this.settings.chartClass),this.$chart=$('<div class="'.concat(n,'" />')).appendTo(this.$container)},resize:function(){this.draw(this.dataTable,this.settings)},onAfterDrawTicks:function(){$(".tick",this.$chart).each((function(t,e){var n=$("text",e);n.clone().appendTo(e),n.attr("stroke","#ffffff"),n.attr("stroke-width",3)}))}},{defaults:{formatLocaleDefinition:null,timeFormatLocaleDefinition:null,formats:{numberFormat:",.2f",percentFormat:",.2%",currencyFormat:"$,.2f",shortDateFormats:{day:"%-m/%-d",month:"%-m/%y",year:"%Y"}},margin:{top:0,right:0,bottom:0,left:0},chartClass:null,colors:["#0594D1","#DE3800","#FF9A00","#009802","#9B009B"]}}),Craft.charts.Area=Craft.charts.BaseChart.extend({tip:null,drawingArea:null,init:function(t,e){this.base(t,Craft.charts.Area.defaults),this.setSettings(e)},draw:function(t,e){this.base(t,e),this.tip&&(this.tip=null);var n=this.getChartMargin();this.width=this.$chart.width()-n.left-n.right,this.height=this.$chart.height()-n.top-n.bottom;var i={width:this.width+(n.left+n.right),height:this.height+(n.top+n.bottom),translateX:"rtl"!==this.orientation?n.left:n.right,translateY:n.top};this.svg=ja(this.$chart.get(0)).append("svg").attr("width",i.width).attr("height",i.height),this.drawingArea=this.svg.append("g").attr("transform","translate(".concat(i.translateX,",").concat(i.translateY,")")),this.drawTicks(),this.drawAxes(),this.drawChart(),this.drawTipTriggers()},drawTicks:function(){var t=g(this.getX(!0)).tickFormat(this.getXFormatter()).ticks(3);this.drawingArea.append("g").attr("class","x ticks-axis").attr("transform","translate(0, ".concat(this.height,")")).call(t);var e,n=this.getY();"rtl"!==this.orientation?(e=m(n).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").call(e)):(e=p(n).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").attr("transform","translate(".concat(this.width,",0)")).call(e)),this.onAfterDrawTicks()},drawAxes:function(){if(this.settings.xAxis.showAxis){var t=g(this.getX()).ticks(0).tickSizeOuter(0);this.drawingArea.append("g").attr("class","x axis").attr("transform","translate(0, ".concat(this.height,")")).call(t)}if(this.settings.yAxis.showAxis){var e,n=this.getY();"rtl"===this.orientation?(e=m(n).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(this.width-0,", 0)")).call(e)):(e=p(n).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(0,", 0)")).call(e))}},drawChart:function(){var t=this.getX(!0),e=this.getY();if(this.settings.xAxis.gridlines){var n=g(t);this.drawingArea.append("g").attr("class","x grid-line").attr("transform","translate(0,".concat(this.height,")")).call(n.tickSize(-this.height,0,0).tickFormat(""))}if(this.settings.yAxis.gridlines){var i=m(e);this.drawingArea.append("g").attr("class","y grid-line").attr("transform","translate(0 , 0)").call(i.tickSize(-this.width,0).tickFormat("").tickValues(this.getYTickValues()).ticks(2))}var r=ns().x((function(e){return t(e[0])})).y((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-line").append("path").datum(this.dataTable.rows).style("fill","none").style("stroke",this.settings.colors[0]).style("stroke-width","3px").attr("d",r);var a=function(t,e,n){var i=null,r=za(!0),a=null,s=qa,o=null,l=Za(c);function c(c){var h,u,d,f,p,g=(c=Ua(c)).length,m=!1,v=new Array(g),b=new Array(g);for(null==a&&(o=s(p=l())),h=0;h<=g;++h){if(!(h<g&&r(f=c[h],h,c))===m)if(m=!m)u=h,o.areaStart(),o.lineStart();else{for(o.lineEnd(),o.lineStart(),d=h-1;d>=u;--d)o.point(v[d],b[d]);o.lineEnd(),o.areaEnd()}m&&(v[h]=+t(f,h,c),b[h]=+e(f,h,c),o.point(i?+i(f,h,c):v[h],n?+n(f,h,c):b[h]))}if(p)return o=null,p+""||null}function h(){return ns().defined(r).curve(s).context(a)}return t="function"==typeof t?t:void 0===t?ts:za(+t),e="function"==typeof e?e:za(void 0===e?0:+e),n="function"==typeof n?n:void 0===n?es:za(+n),c.x=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),i=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),c):t},c.x1=function(t){return arguments.length?(i=null==t?null:"function"==typeof t?t:za(+t),c):i},c.y=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),n=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),c):e},c.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:za(+t),c):n},c.lineX0=c.lineY0=function(){return h().x(t).y(e)},c.lineY1=function(){return h().x(t).y(n)},c.lineX1=function(){return h().x(i).y(e)},c.defined=function(t){return arguments.length?(r="function"==typeof t?t:za(!!t),c):r},c.curve=function(t){return arguments.length?(s=t,null!=a&&(o=s(a)),c):s},c.context=function(t){return arguments.length?(null==t?a=o=null:o=s(a=t),c):a},c}().x((function(e){return t(e[0])})).y0(this.height).y1((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-area").append("path").datum(this.dataTable.rows).style("fill",this.settings.colors[0]).style("fill-opacity","0.3").attr("d",a),this.settings.plots&&this.drawingArea.append("g").attr("class","plots").selectAll("circle").data(this.dataTable.rows).enter().append("circle").style("fill",this.settings.colors[0]).attr("class",(function(t,e){return"plot plot-".concat(e)})).attr("r",4).attr("cx",(function(e){return t(e[0])})).attr("cy",(function(t){return e(t[1])}))},drawTipTriggers:function(){var t=this;if(this.settings.tips){this.tip||(this.tip=new Craft.charts.Tip(this.$chart));var e=this.getChartMargin(),n=(this.drawingArea.select(".x path.domain").node().getTotalLength()-e.left-e.right-12)/(this.dataTable.rows.length-1),i=Math.max(0,n),r=this.getX(!0),a=this.getY();this.drawingArea.append("g").attr("class","tip-triggers").selectAll("rect").data(this.dataTable.rows).enter().append("rect").attr("class",(function(t,e){return"tip-trigger tip-trigger-".concat(e)})).attr("data-index",(function(t,e){return e})).style("fill","transparent").style("fill-opacity","1").attr("width",i).attr("height",this.height).attr("x",(function(t){return r(t[0])-i/2})).on("mouseover",(function(e,n){var i=ja(e.target).attr("data-index");t.drawingArea.select(".plot-"+i).attr("r",5);var s=$("<div />"),o=$('<div class="x-value" />').appendTo(s),l=$('<div class="y-value" />').appendTo(s);o.html(t.getXFormatter()(n[0])),l.html(t.getYFormatter()(n[1]));var c=s.get(0);t.tip.setContent(c);var h,u=t.getChartMargin(),d=24,f=a(n[1])+d;"rtl"!==t.orientation?(h=r(n[0])+u.left+d,t.$chart.offset().left+h+t.tip.$tip.width()>t.$chart.offset().left+t.$chart.width()-d&&(h=r(n[0])-(t.tip.$tip.width()+d))):h=r(n[0])-(t.tip.$tip.width()+u.left+d),h<0&&(h=r(n[0])+u.left+d);var p={top:f,left:h};t.tip.setPosition(p),t.tip.show()})).on("mouseout",(function(e,n){var i=ja(e.target).attr("data-index");t.drawingArea.select(".plot-"+i).attr("r",4),t.tip.hide()}))}},getChartMargin:function(){var t=this,e=this.settings.margin,n=this.getYTickValues(),i=0;return $.each(n,(function(e,n){var r=8*t.getYFormatter()(n).length;r>i&&(i=r)})),i+=10,e.left=i,e},getX:function(e){var n=function(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}(this.dataTable.rows,(function(t){return t[0]})),i=t(this.dataTable.rows,(function(t){return t[0]})),r=[n,i];"rtl"===this.orientation&&(r=[i,n]);var a=0,s=0;e&&(a=0,s=0);var o=Na().range([a,this.width-s]);return o.domain(r),o},getY:function(){var t=[0,this.getYMaxValue()],e=Si().range([this.height,0]);return e.domain(t),e},getXFormatter:function(){return this.settings.xAxis.formatter!==$.noop?this.settings.xAxis.formatter(this):Craft.charts.utils.getTimeFormatter(this.timeFormatLocale,this.settings)},getYFormatter:function(){return this.settings.yAxis.formatter!==$.noop?this.settings.yAxis.formatter(this):Craft.charts.utils.getNumberFormatter(this.formatLocale,this.dataTable.columns[1].type,this.settings)},getYMaxValue:function(){var e=t(this.dataTable.rows,(function(t){return t[1]}));return 0===e&&(e=1),e},getYTickValues:function(){var t=this.getYMaxValue();return t>1?[t/2,t]:[0,t]}},{defaults:{chartClass:"area",margin:{top:25,right:5,bottom:25,left:0},plots:!0,tips:!0,xAxis:{gridlines:!1,showAxis:!0,formatter:$.noop},yAxis:{gridlines:!0,showAxis:!1,formatter:$.noop}}}),Craft.charts.utils={getDuration:function(t){var e=parseInt(t,10),n={hours:Math.floor(e/3600),minutes:Math.floor((e-3600*n.hours)/60),seconds:e-3600*n.hours-60*n.minutes};return n.hours<10&&(n.hours="0".concat(n.hours)),n.minutes<10&&(n.minutes="0".concat(n.minutes)),n.seconds<10&&(n.seconds="0".concat(n.seconds)),"".concat(n.hours,":").concat(n.minutes,":").concat(n.seconds)},getTimeFormatter:function(t,e){switch(e.dataScale){case"year":return t.format("%Y");case"month":return t.format(e.formats.shortDateFormats.month);case"hour":return t.format("".concat(e.formats.shortDateFormats.day," %H:00:00"));default:return t.format(e.formats.shortDateFormats.day)}},getNumberFormatter:function(t,e,n){switch(e){case"currency":return t.format(n.formats.currencyFormat);case"percent":return t.format(n.formats.percentFormat);case"time":return Craft.charts.utils.getDuration;case"number":return t.format(n.formats.numberFormat)}}},__webpack_require__(3352),__webpack_require__(3048),__webpack_require__(691),__webpack_require__(1519),__webpack_require__(501),__webpack_require__(2318),__webpack_require__(4755),__webpack_require__(8468),__webpack_require__(5049),__webpack_require__(7998),__webpack_require__(3663),__webpack_require__(4233);class Cs extends Error{code;constructor({message:t,code:e,cause:n,name:i}){super(t,{cause:n}),this.name=i??n.name,this.code=e}}const ws=new class{controller;createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}},_s=["cross-platform","platform"];function Ss(t){if(t&&!(_s.indexOf(t)<0))return t}async function xs(t,e=!1){if(!ys())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map($s));const i={...t,challenge:bs(t.challenge),allowCredentials:n},r={};if(e){if(!await async function(){const t=window.PublicKeyCredential;return void 0!==t.isConditionalMediationAvailable&&t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete*='webauthn']").length<1)throw Error('No <input> with `"webauthn"` in its `autocomplete` attribute was detected');r.mediation="conditional",i.allowCredentials=[]}let a;r.publicKey=i,r.signal=ws.createNewAbortSignal();try{a=await navigator.credentials.get(r)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new Cs({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new Cs({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if("localhost"!==(i=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(i))return new Cs({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new Cs({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new Cs({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var i;return t}({error:t,options:r})}if(!a)throw new Error("Authentication was not completed");const{id:s,rawId:o,response:l,type:c}=a;let h;return l.userHandle&&(h=function(t){return new TextDecoder("utf-8").decode(t)}(l.userHandle)),{id:s,rawId:vs(o),response:{authenticatorData:vs(l.authenticatorData),clientDataJSON:vs(l.clientDataJSON),signature:vs(l.signature),userHandle:h},type:c,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Ss(a.authenticatorAttachment)}}async function Ts(){return!!ys()&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}function Is(t){return Is="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Is(t)}function Es(){Es=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var $={};c($,s,(function(){return this}));var C=Object.getPrototypeOf,w=C&&C(C(P([])));w&&w!==n&&i.call(w,s)&&($=w);var _=y.prototype=v.prototype=Object.create($);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==Is(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(Is(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function Ls(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function ks(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){Ls(a,i,r,s,o,"next",t)}function o(t){Ls(a,i,r,s,o,"throw",t)}s(void 0)}))}}function Ps(t){return Ps="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ps(t)}function As(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return Ms(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ms(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function Ms(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function Bs(){Bs=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var $={};c($,s,(function(){return this}));var C=Object.getPrototypeOf,w=C&&C(C(P([])));w&&w!==n&&i.call(w,s)&&($=w);var _=y.prototype=v.prototype=Object.create($);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==Ps(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(Ps(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function Ds(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function Os(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){Ds(a,i,r,s,o,"next",t)}function o(t){Ds(a,i,r,s,o,"throw",t)}s(void 0)}))}}Craft.ElevatedSessionManager=Garnish.Base.extend({fetchingTimeout:!1,loginModal:null,showingLoginModal:!1,onSuccess:null,onCancel:null,success:!1,requireElevatedSession:function(t,e,n){var i=this;return ks(Es().mark((function r(){var a,s;return Es().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i.onSuccess=t,i.onCancel=e,i.fetchingTimeout=!0,r.prev=3,r.next=6,Craft.sendActionRequest("POST","users/get-elevated-session-timeout");case 6:s=r.sent,a=s.data;case 8:return r.prev=8,i.fetchingTimeout=!1,r.finish(8);case 11:!1===a.timeout||a.timeout>=(n||Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout)?i.onSuccess():i.showLoginModal();case 12:case"end":return r.stop()}}),r,null,[[3,,8,11]])})))()},showLoginModal:function(){var t=this;return ks(Es().mark((function e(){var n,i,r;return Es().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.showingLoginModal){e.next=2;break}return e.abrupt("return");case 2:return t.showingLoginModal=!0,t.loginModal&&t.loginModal.destroy(),e.next=6,Craft.sendActionRequest("POST","users/login-modal",{data:{email:Craft.userEmail,forElevatedSession:!0}});case 6:n=e.sent,i=n.data,r=$(i.html),t.loginModal=new Garnish.Modal(r,{closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark login-modal-shade",onFadeIn:function(){var e=ks(Es().mark((function e(){return Es().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Craft.initUiElements(r),new Craft.LoginForm(r.find(".login-container"),{showPasskeyBtn:Craft.userHasPasskeys,onLogin:function(){t.success=!0,t.loginModal.hide()}}),e.next=4,Craft.appendHeadHtml(i.headHtml);case 4:return e.next=6,Craft.appendBodyHtml(i.bodyHtml);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),onFadeOut:function(){t.loginModal.destroy(),t.loginModal=null},onHide:function(){t.showingLoginModal=!1,t.success?t.onSuccess():t.onCancel&&t.onCancel()}});case 10:case"end":return e.stop()}}),e)})))()}},{minSafeElevatedSessionTimeout:5}),Craft.elevatedSessionManager=new Craft.ElevatedSessionManager,__webpack_require__(1402),__webpack_require__(8201),__webpack_require__(7606),__webpack_require__(9712),__webpack_require__(3347),__webpack_require__(9478),__webpack_require__(2387),__webpack_require__(6607),__webpack_require__(7966),__webpack_require__(657),__webpack_require__(4487),__webpack_require__(6966),__webpack_require__(5080),Craft.LoginForm=Garnish.Base.extend({$container:null,$form:null,$usernameInput:null,$passwordInput:null,$rememberMeCheckbox:null,$forgotPasswordLink:null,$submitBtn:null,submitBtn:null,$errors:null,$altMethodContainer:null,$passkeyBtn:null,modal:null,resetPasswordForm:null,validateOnInput:!1,init:function(t,e){var n=this;return Os(Bs().mark((function i(){return Bs().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.$container=$(t),n.$form=n.$container.find(".login-form"),n.$usernameInput=n.$form.find(".login-username"),n.$passwordInput=n.$form.find(".login-password"),n.$rememberMeCheckbox=n.$form.find(".login-remember-me"),n.$forgotPasswordLink=n.$form.find(".login-forgot-password"),n.$submitBtn=n.$form.find("button.submit"),n.$errors=n.$container.find(".login-errors"),n.$altMethodContainer=n.$container.find(".alternative-login-methods"),n.$passkeyBtn=n.$altMethodContainer.find(".login-passkey-btn"),n.setSettings(e,Craft.LoginForm.defaults),n.modal=n.$container.closest(".modal").data("modal"),n.submitBtn=new Garnish.MultiFunctionBtn(n.$submitBtn,{changeButtonText:!0}),new Craft.PasswordInput(n.$passwordInput,{onToggleInput:function(t){n.removeListener(n.$passwordInput,"input"),n.$passwordInput=t,n.addListener(n.$passwordInput,"input","onInput")}}),n.addListener(n.$usernameInput,"input","onInput"),n.addListener(n.$passwordInput,"input","onInput"),n.addListener(n.$forgotPasswordLink,"activate","showResetPasswordForm"),n.addListener(n.$form,"submit","onSubmit"),Garnish.isMobileBrowser()||(n.$usernameInput.val()?n.$passwordInput.trigger("focus"):n.$usernameInput.trigger("focus")),i.t0=n.settings.showPasskeyBtn&&ys(),!i.t0){i.next=24;break}return i.next=23,Ts();case 23:i.t0=i.sent;case 24:if(!i.t0){i.next=28;break}n.$passkeyBtn.removeClass("hidden"),n.onResize(),n.addListener(n.$passkeyBtn,"activate",(function(){n.loginWithPasskey()}));case 28:n.$altMethodContainer.children().filter(".btn:not(.hidden)").length&&n.$altMethodContainer.removeClass("hidden");case 29:case"end":return i.stop()}}),i)})))()},validate:function(){var t=Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val());if(!0!==t)return t;var e=this.$passwordInput.val().length;return e<Craft.minPasswordLength?Craft.t("yii","{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.",{attribute:Craft.t("app","Password"),min:Craft.minPasswordLength}):!(e>Craft.maxPasswordLength)||Craft.t("yii","{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.",{attribute:Craft.t("app","Password"),max:Craft.maxPasswordLength})},onInput:function(){this.validateOnInput&&!0===this.validate()&&this.clearErrors()},onSubmit:function(t){var e=this;t.preventDefault();var n=this.validate();if(!0!==n)return this.showError(n),void(this.validateOnInput=!0);this.clearErrors(),this.submitBtn.busyEvent();var i={loginName:this.$usernameInput.val(),password:this.$passwordInput.val(),rememberMe:this.$rememberMeCheckbox.prop("checked")?"y":""};Craft.sendActionRequest("POST","users/login",{data:i}).then((function(t){var n=t.data;n.authMethod?e.show2faForm(n):(e.submitBtn.successEvent(),e.settings.onLogin(n.returnUrl))})).catch((function(t){var n;e.submitBtn.failureEvent(),Garnish.shake(e.$form,"left"),e.showError((null==t||null===(n=t.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.message)||Craft.t("app","A server error occurred.")),e.submitBtn.failureEvent()}))},showResetPasswordForm:function(){this.clearErrors(),this.$form.addClass("hidden"),this.resetPasswordForm||(this.resetPasswordForm=new Craft.LoginForm.ResetPasswordForm(this,this.$container)),this.resetPasswordForm.$form.removeClass("hidden"),this.resetPasswordForm.$usernameInput.val(this.$usernameInput.val()),Garnish.isMobileBrowser()||this.resetPasswordForm.$usernameInput.trigger("focus"),this.onResize()},show2faForm:function(t){var e=this;return Os(Bs().mark((function n(){var i,r,a,s,o,l,c,h,u;return Bs().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.clearErrors(),e.$form.addClass("hidden"),i=$(t.authForm).insertAfter(e.$form),n.next=5,Craft.appendHeadHtml(t.headHtml);case 5:return n.next=7,Craft.appendBodyHtml(t.bodyHtml);case 7:if(Craft.initUiElements(i),Craft.createAuthFormHandler(t.authMethod,i,(function(){e.settings.onLogin(t.returnUrl)}),(function(t){e.showError(t)})),Garnish.isMobileBrowser()||setTimeout((function(){i.find(":focusable:first").trigger("focus")}),100),t.otherMethods.length){r=$("<hr/>").insertAfter(i),a=$('<div class="login-alt-container"/>').insertAfter(r),s=Craft.ui.createButton({label:Craft.t("app","Try another way"),spinner:!0}).addClass("menubtn").appendTo(a),o=$('<div class="menu login-alt-menu"/>').appendTo(a),l=$("<ul/>").appendTo(o),c=As(t.otherMethods);try{for(c.s();!(h=c.n()).done;)u=h.value,$("<li/>").append($("<a/>",{text:u.name,"data-method":u.class})).appendTo(l)}catch(t){c.e(t)}finally{c.f()}new Garnish.MenuBtn(s,{onOptionSelect:function(t){s.addClass("loading"),Craft.sendActionRequest("post","users/auth-form",{data:{method:$(t).data("method")}}).then((function(t){var n=t.data;i.remove(),r.remove(),a.remove(),console.log(n),e.show2faForm(n)})).finally((function(){s.removeClass("loading")}))}})}e.onResize();case 12:case"end":return n.stop()}}),n)})))()},showError:function(t){this.clearErrors(),$('<p style="display: none;">'+t+"</p>").appendTo(this.$errors).velocity("fadeIn"),this.$errors.removeClass("hidden"),this.onResize()},clearErrors:function(){this.$errors.empty().addClass("hidden"),this.onResize()},onResize:function(){var t=this;this.modal&&Garnish.requestAnimationFrame((function(){t.modal.updateSizeAndPosition()}))},loginWithPasskey:function(){var t=this;return Os(Bs().mark((function e(){var n,i,r,a,s;return Bs().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.$passkeyBtn.hasClass("loading")){e.next=2;break}return e.abrupt("return");case 2:return t.$passkeyBtn.addClass("loading"),e.prev=3,e.next=6,Craft.sendActionRequest("POST","auth/passkey-request-options");case 6:return n=e.sent,e.next=9,xs(n.data.options);case 9:return i=e.sent,e.next=12,Craft.sendActionRequest("POST","users/login-with-passkey",{data:{requestOptions:JSON.stringify(n.data.options),response:JSON.stringify(i)}});case 12:r=e.sent,t.settings.onLogin(r.data.returnUrl),e.next=20;break;case 16:e.prev=16,e.t0=e.catch(3),(s=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(a=a.data)||void 0===a?void 0:a.message)&&t.showError(s);case 20:return e.prev=20,t.$passkeyBtn.removeClass("loading"),e.finish(20);case 23:case"end":return e.stop()}}),e,null,[[3,16,20,23]])})))()}},{validateUsernameOrEmail:function(t){return 0===t.length?Craft.useEmailAsUsername?Craft.t("app","Invalid email."):Craft.t("app","Invalid username or email."):!(Craft.useEmailAsUsername&&!t.match(".+@.+..+"))||Craft.t("app","Invalid email.")},defaults:{showPasskeyBtn:!0,onLogin:function(t){window.location.href=t}}}),Craft.LoginForm.ResetPasswordForm=Garnish.Base.extend({loginForm:null,$container:null,$form:null,$usernameInput:null,$submitBtn:null,$backBtn:null,validateOnInput:!1,init:function(t,e){this.loginForm=t,this.$container=$(e),this.$form=this.$container.find(".login-reset-password").removeClass("hidden"),this.$usernameInput=this.$form.find(".login-username"),this.$submitBtn=this.$form.find("button.submit"),this.$backBtn=this.$form.find(".login-reset-back-btn"),this.addListener(this.$usernameInput,"input","onInput"),this.addListener(this.$form,"submit","onSubmit"),this.addListener(this.$backBtn,"activate","showLoginForm")},validate:function(){return Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val())},onInput:function(){this.validateOnInput&&!0===this.validate()&&this.loginForm.clearErrors()},onSubmit:function(t){var e=this;t.preventDefault();var n=this.validate();if(!0!==n)return this.loginForm.showError(n),void(this.validateOnInput=!0);this.loginForm.clearErrors(),this.$submitBtn.addClass("loading");var i={loginName:this.$usernameInput.val()};Craft.sendActionRequest("POST","users/send-password-reset-email",{data:i}).then((function(t){new Craft.LoginForm.ResetPasswordForm.MessageSentModal})).catch((function(t){e.showError(t&&t.response&&t.response.data&&t.response.data.message||Craft.t("app","A server error occurred."))})).finally((function(){e.$submitBtn.removeClass("loading")}))},showLoginForm:function(){this.loginForm.clearErrors(),this.$form.addClass("hidden"),this.loginForm.$form.removeClass("hidden"),this.loginForm.$usernameInput.val(this.$usernameInput.val()),Garnish.isMobileBrowser()||this.loginForm.$usernameInput.trigger("focus"),this.loginForm.onResize()}}),Craft.LoginForm.ResetPasswordForm.MessageSentModal=Garnish.Modal.extend({init:function(){var t=$('<div class="modal fitted email-sent"><div class="body">'+Craft.t("app","Check your email for instructions to reset your password.")+"</div></div>").appendTo(Garnish.$bod);this.base(t)},hide:function(){}}),__webpack_require__(8683),__webpack_require__(7439),__webpack_require__(5328),__webpack_require__(6419),__webpack_require__(872),__webpack_require__(1396),__webpack_require__(4070),__webpack_require__(5763),__webpack_require__(5185),__webpack_require__(8030),__webpack_require__(3096),__webpack_require__(53),__webpack_require__(5074),__webpack_require__(3958),__webpack_require__(3079),__webpack_require__(1752),__webpack_require__(7e3),__webpack_require__(8654),__webpack_require__(147),__webpack_require__(9922);const Fs=Math.min,Rs=Math.max,Hs=Math.round,Gs=(Math.floor,t=>({x:t,y:t})),Ns={left:"right",right:"left",bottom:"top",top:"bottom"},js={start:"end",end:"start"};function Us(t,e,n){return Rs(t,Fs(e,n))}function zs(t,e){return"function"==typeof t?t(e):t}function Vs(t){return t.split("-")[0]}function qs(t){return t.split("-")[1]}function Ws(t){return"x"===t?"y":"x"}function Ys(t){return"y"===t?"height":"width"}function Ks(t){return["top","bottom"].includes(Vs(t))?"y":"x"}function Xs(t){return Ws(Ks(t))}function Js(t){return t.replace(/start|end/g,(t=>js[t]))}function Qs(t){return t.replace(/left|right|bottom|top/g,(t=>Ns[t]))}function Zs(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function to(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}function eo(t,e,n){let{reference:i,floating:r}=t;const a=Ks(e),s=Xs(e),o=Ys(s),l=Vs(e),c="y"===a,h=i.x+i.width/2-r.width/2,u=i.y+i.height/2-r.height/2,d=i[o]/2-r[o]/2;let f;switch(l){case"top":f={x:h,y:i.y-r.height};break;case"bottom":f={x:h,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:u};break;case"left":f={x:i.x-r.width,y:u};break;default:f={x:i.x,y:i.y}}switch(qs(e)){case"start":f[s]-=d*(n&&c?-1:1);break;case"end":f[s]+=d*(n&&c?-1:1)}return f}async function no(t,e){var n;void 0===e&&(e={});const{x:i,y:r,platform:a,rects:s,elements:o,strategy:l}=t,{boundary:c="clippingAncestors",rootBoundary:h="viewport",elementContext:u="floating",altBoundary:d=!1,padding:f=0}=zs(e,t),p=Zs(f),g=o[d?"floating"===u?"reference":"floating":u],m=to(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(g)))||n?g:g.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:c,rootBoundary:h,strategy:l})),v="floating"===u?{...s.floating,x:i,y:r}:s.reference,b=await(null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),y=await(null==a.isElement?void 0:a.isElement(b))&&await(null==a.getScale?void 0:a.getScale(b))||{x:1,y:1},$=to(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:v,offsetParent:b,strategy:l}):v);return{top:(m.top-$.top+p.top)/y.y,bottom:($.bottom-m.bottom+p.bottom)/y.y,left:(m.left-$.left+p.left)/y.x,right:($.right-m.right+p.right)/y.x}}const io=function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var n,i;const{x:r,y:a,placement:s,middlewareData:o}=e,l=await async function(t,e){const{placement:n,platform:i,elements:r}=t,a=await(null==i.isRTL?void 0:i.isRTL(r.floating)),s=Vs(n),o=qs(n),l="y"===Ks(n),c=["left","top"].includes(s)?-1:1,h=a&&l?-1:1,u=zs(e,t);let{mainAxis:d,crossAxis:f,alignmentAxis:p}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return o&&"number"==typeof p&&(f="end"===o?-1*p:p),l?{x:f*h,y:d*c}:{x:d*c,y:f*h}}(e,t);return s===(null==(n=o.offset)?void 0:n.placement)&&null!=(i=o.arrow)&&i.alignmentOffset?{}:{x:r+l.x,y:a+l.y,data:{...l,placement:s}}}}};function ro(t){return oo(t)?(t.nodeName||"").toLowerCase():"#document"}function ao(t){var e;return(null==t||null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function so(t){var e;return null==(e=(oo(t)?t.ownerDocument:t.document)||window.document)?void 0:e.documentElement}function oo(t){return t instanceof Node||t instanceof ao(t).Node}function lo(t){return t instanceof Element||t instanceof ao(t).Element}function co(t){return t instanceof HTMLElement||t instanceof ao(t).HTMLElement}function ho(t){return"undefined"!=typeof ShadowRoot&&(t instanceof ShadowRoot||t instanceof ao(t).ShadowRoot)}function uo(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=vo(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&!["inline","contents"].includes(r)}function fo(t){return["table","td","th"].includes(ro(t))}function po(t){const e=go(),n=vo(t);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!e&&!!n.backdropFilter&&"none"!==n.backdropFilter||!e&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((t=>(n.willChange||"").includes(t)))||["paint","layout","strict","content"].some((t=>(n.contain||"").includes(t)))}function go(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function mo(t){return["html","body","#document"].includes(ro(t))}function vo(t){return ao(t).getComputedStyle(t)}function bo(t){return lo(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function yo(t){if("html"===ro(t))return t;const e=t.assignedSlot||t.parentNode||ho(t)&&t.host||so(t);return ho(e)?e.host:e}function $o(t){const e=yo(t);return mo(e)?t.ownerDocument?t.ownerDocument.body:t.body:co(e)&&uo(e)?e:$o(e)}function Co(t,e,n){var i;void 0===e&&(e=[]),void 0===n&&(n=!0);const r=$o(t),a=r===(null==(i=t.ownerDocument)?void 0:i.body),s=ao(r);return a?e.concat(s,s.visualViewport||[],uo(r)?r:[],s.frameElement&&n?Co(s.frameElement):[]):e.concat(r,Co(r,[],n))}function wo(t){const e=vo(t);let n=parseFloat(e.width)||0,i=parseFloat(e.height)||0;const r=co(t),a=r?t.offsetWidth:n,s=r?t.offsetHeight:i,o=Hs(n)!==a||Hs(i)!==s;return o&&(n=a,i=s),{width:n,height:i,$:o}}function _o(t){return lo(t)?t:t.contextElement}function So(t){const e=_o(t);if(!co(e))return Gs(1);const n=e.getBoundingClientRect(),{width:i,height:r,$:a}=wo(e);let s=(a?Hs(n.width):n.width)/i,o=(a?Hs(n.height):n.height)/r;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}const xo=Gs(0);function To(t){const e=ao(t);return go()&&e.visualViewport?{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}:xo}function Io(t,e,n,i){void 0===e&&(e=!1),void 0===n&&(n=!1);const r=t.getBoundingClientRect(),a=_o(t);let s=Gs(1);e&&(i?lo(i)&&(s=So(i)):s=So(t));const o=function(t,e,n){return void 0===e&&(e=!1),!(!n||e&&n!==ao(t))&&e}(a,n,i)?To(a):Gs(0);let l=(r.left+o.x)/s.x,c=(r.top+o.y)/s.y,h=r.width/s.x,u=r.height/s.y;if(a){const t=ao(a),e=i&&lo(i)?ao(i):i;let n=t,r=n.frameElement;for(;r&&i&&e!==n;){const t=So(r),e=r.getBoundingClientRect(),i=vo(r),a=e.left+(r.clientLeft+parseFloat(i.paddingLeft))*t.x,s=e.top+(r.clientTop+parseFloat(i.paddingTop))*t.y;l*=t.x,c*=t.y,h*=t.x,u*=t.y,l+=a,c+=s,n=ao(r),r=n.frameElement}}return to({width:h,height:u,x:l,y:c})}const Eo=[":popover-open",":modal"];function Lo(t){return Eo.some((e=>{try{return t.matches(e)}catch(t){return!1}}))}function ko(t){return Io(so(t)).left+bo(t).scrollLeft}function Po(t,e,n){let i;if("viewport"===e)i=function(t,e){const n=ao(t),i=so(t),r=n.visualViewport;let a=i.clientWidth,s=i.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;const t=go();(!t||t&&"fixed"===e)&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o,y:l}}(t,n);else if("document"===e)i=function(t){const e=so(t),n=bo(t),i=t.ownerDocument.body,r=Rs(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),a=Rs(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+ko(t);const o=-n.scrollTop;return"rtl"===vo(i).direction&&(s+=Rs(e.clientWidth,i.clientWidth)-r),{width:r,height:a,x:s,y:o}}(so(t));else if(lo(e))i=function(t,e){const n=Io(t,!0,"fixed"===e),i=n.top+t.clientTop,r=n.left+t.clientLeft,a=co(t)?So(t):Gs(1);return{width:t.clientWidth*a.x,height:t.clientHeight*a.y,x:r*a.x,y:i*a.y}}(e,n);else{const n=To(t);i={...e,x:e.x-n.x,y:e.y-n.y}}return to(i)}function Ao(t,e){const n=yo(t);return!(n===e||!lo(n)||mo(n))&&("fixed"===vo(n).position||Ao(n,e))}function Mo(t,e,n){const i=co(e),r=so(e),a="fixed"===n,s=Io(t,!0,a,e);let o={scrollLeft:0,scrollTop:0};const l=Gs(0);if(i||!i&&!a)if(("body"!==ro(e)||uo(r))&&(o=bo(e)),i){const t=Io(e,!0,a,e);l.x=t.x+e.clientLeft,l.y=t.y+e.clientTop}else r&&(l.x=ko(r));return{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function Bo(t,e){return co(t)&&"fixed"!==vo(t).position?e?e(t):t.offsetParent:null}function Do(t,e){const n=ao(t);if(!co(t)||Lo(t))return n;let i=Bo(t,e);for(;i&&fo(i)&&"static"===vo(i).position;)i=Bo(i,e);return i&&("html"===ro(i)||"body"===ro(i)&&"static"===vo(i).position&&!po(i))?n:i||function(t){let e=yo(t);for(;co(e)&&!mo(e);){if(po(e))return e;e=yo(e)}return null}(t)||n}const Oo={convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{elements:e,rect:n,offsetParent:i,strategy:r}=t;const a="fixed"===r,s=so(i),o=!!e&&Lo(e.floating);if(i===s||o&&a)return n;let l={scrollLeft:0,scrollTop:0},c=Gs(1);const h=Gs(0),u=co(i);if((u||!u&&!a)&&(("body"!==ro(i)||uo(s))&&(l=bo(i)),co(i))){const t=Io(i);c=So(i),h.x=t.x+i.clientLeft,h.y=t.y+i.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+h.x,y:n.y*c.y-l.scrollTop*c.y+h.y}},getDocumentElement:so,getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:i,strategy:r}=t;const a=[..."clippingAncestors"===n?function(t,e){const n=e.get(t);if(n)return n;let i=Co(t,[],!1).filter((t=>lo(t)&&"body"!==ro(t))),r=null;const a="fixed"===vo(t).position;let s=a?yo(t):t;for(;lo(s)&&!mo(s);){const e=vo(s),n=po(s);n||"fixed"!==e.position||(r=null),(a?!n&&!r:!n&&"static"===e.position&&r&&["absolute","fixed"].includes(r.position)||uo(s)&&!n&&Ao(t,s))?i=i.filter((t=>t!==s)):r=e,s=yo(s)}return e.set(t,i),i}(e,this._c):[].concat(n),i],s=a[0],o=a.reduce(((t,n)=>{const i=Po(e,n,r);return t.top=Rs(i.top,t.top),t.right=Fs(i.right,t.right),t.bottom=Fs(i.bottom,t.bottom),t.left=Rs(i.left,t.left),t}),Po(e,s,r));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:Do,getElementRects:async function(t){const e=this.getOffsetParent||Do,n=this.getDimensions;return{reference:Mo(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,...await n(t.floating)}}},getClientRects:function(t){return Array.from(t.getClientRects())},getDimensions:function(t){const{width:e,height:n}=wo(t);return{width:e,height:n}},getScale:So,isElement:lo,isRTL:function(t){return"rtl"===vo(t).direction}},Fo=function(t){return void 0===t&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:i,placement:r}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:o={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...l}=zs(t,e),c={x:n,y:i},h=await no(e,l),u=Ks(Vs(r)),d=Ws(u);let f=c[d],p=c[u];if(a){const t="y"===d?"bottom":"right";f=Us(f+h["y"===d?"top":"left"],f,f-h[t])}if(s){const t="y"===u?"bottom":"right";p=Us(p+h["y"===u?"top":"left"],p,p-h[t])}const g=o.fn({...e,[d]:f,[u]:p});return{...g,data:{x:g.x-n,y:g.y-i}}}}},Ro=t=>({name:"arrow",options:t,async fn(e){const{x:n,y:i,placement:r,rects:a,platform:s,elements:o,middlewareData:l}=e,{element:c,padding:h=0}=zs(t,e)||{};if(null==c)return{};const u=Zs(h),d={x:n,y:i},f=Xs(r),p=Ys(f),g=await s.getDimensions(c),m="y"===f,v=m?"top":"left",b=m?"bottom":"right",y=m?"clientHeight":"clientWidth",$=a.reference[p]+a.reference[f]-d[f]-a.floating[p],C=d[f]-a.reference[f],w=await(null==s.getOffsetParent?void 0:s.getOffsetParent(c));let _=w?w[y]:0;_&&await(null==s.isElement?void 0:s.isElement(w))||(_=o.floating[y]||a.floating[p]);const S=$/2-C/2,x=_/2-g[p]/2-1,T=Fs(u[v],x),I=Fs(u[b],x),E=T,L=_-g[p]-I,k=_/2-g[p]/2+S,P=Us(E,k,L),A=!l.arrow&&null!=qs(r)&&k!==P&&a.reference[p]/2-(k<E?T:I)-g[p]/2<0,M=A?k<E?k-E:k-L:0;return{[f]:d[f]+M,data:{[f]:P,centerOffset:k-P-M,...A&&{alignmentOffset:M}},reset:A}}});function Ho(t){return Ho="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ho(t)}function Go(t,e,n){return(e=Vo(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function No(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||jo(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jo(t,e){if(t){if("string"==typeof t)return Uo(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Uo(t,e):void 0}}function Uo(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function zo(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,Vo(i.key),i)}}function Vo(t){var e=function(t,e){if("object"!=Ho(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=Ho(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ho(e)?e:String(e)}function qo(t){var e="function"==typeof Map?new Map:void 0;return qo=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(Wo())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var r=new(t.bind.apply(t,i));return n&&Yo(r,n.prototype),r}(t,arguments,Ko(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),Yo(n,t)},qo(t)}function Wo(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(Wo=function(){return!!t})()}function Yo(t,e){return Yo=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Yo(t,e)}function Ko(t){return Ko=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ko(t)}var Xo=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,n){return e=Ko(e),function(t,e){if(e&&("object"===Ho(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,Wo()?Reflect.construct(e,n||[],Ko(t).constructor):e.apply(t,n))}(this,e,arguments)}var n,i;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Yo(t,e)}(e,t),n=e,i=[{key:"connectedCallback",value:function(){var t=this;this.arrowElement=this.querySelector(".arrow"),this.arrow="false"!==this.getAttribute("arrow"),this.offset=this.hasAttribute("offset")?parseInt(this.getAttribute("offset"),10):8,this.placement=this.getAttribute("placement")||"bottom",this.direction=getComputedStyle(this).direction,this.delay=this.getAttribute("delay")||500,this.delayTimeout=null,this.arrow&&!this.arrowElement&&(this.renderInner(),this.renderArrow()),this.listeners=[["mouseenter",this.show,this.delay],["focus",this.show,0],["mouseleave",this.hide,0],["blur",this.hide,0]],this.listeners.forEach((function(e){var n,i=No(e,3),r=i[0],a=i[1],s=i[2];null===(n=t.parentElement)||void 0===n||n.addEventListener(r,a.bind(t,s))})),document.addEventListener("keyup",this.handleKeyUp.bind(this)),this.update(),this.hide()}},{key:"disconnectedCallback",value:function(){var t=this;this.hide(),this.listeners.length&&this.listeners.forEach((function(e){var n,i=No(e,2),r=i[0],a=i[1];null===(n=t.parentElement)||void 0===n||n.removeEventListener(r,a.bind(t))})),document.removeEventListener("keyup",this.handleKeyUp.bind(this))}},{key:"handleKeyUp",value:function(t){"Escape"===t.key&&this.hide()}},{key:"renderInner",value:function(){this.inner=document.createElement("span"),this.inner.classList.add("inner"),this.inner.innerText=this.innerText,this.innerHTML="",this.appendChild(this.inner)}},{key:"renderArrow",value:function(){this.arrowElement=document.createElement("span"),this.arrowElement.classList.add("arrow"),this.inner.appendChild(this.arrowElement)}},{key:"show",value:function(t){var e=this;this.update(),this.delayTimeout=setTimeout((function(){Object.assign(e.style,{opacity:1,transform:["left","right"].includes(e.getStaticSide())?"translateX(0)":"translateY(0)",pointerEvents:"auto"})}),t)}},{key:"hide",value:function(){this.delayTimeout&&clearTimeout(this.delayTimeout),Object.assign(this.style,{opacity:0,transform:this.getInitialTransform(),pointerEvents:"none"})}},{key:"getInitialTransform",value:function(){return{top:"translateY(-".concat(this.offset,"px)"),right:"translateX(".concat(this.offset,"px)"),bottom:"translateY(".concat(this.offset,"px)"),left:"translateX(-".concat(this.offset,"px)")}[this.getStaticSide()]}},{key:"getStaticSide",value:function(){return{top:"bottom",right:"left",bottom:"top",left:"right"}[this.placement.split("-")[0]]}},{key:"update",value:function(){var t,e,n=this;((t,e,n)=>{const i=new Map,r={platform:Oo,...n},a={...r.platform,_c:i};return(async(t,e,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:a=[],platform:s}=n,o=a.filter(Boolean),l=await(null==s.isRTL?void 0:s.isRTL(e));let c=await s.getElementRects({reference:t,floating:e,strategy:r}),{x:h,y:u}=eo(c,i,l),d=i,f={},p=0;for(let n=0;n<o.length;n++){const{name:a,fn:g}=o[n],{x:m,y:v,data:b,reset:y}=await g({x:h,y:u,initialPlacement:i,placement:d,strategy:r,middlewareData:f,rects:c,platform:s,elements:{reference:t,floating:e}});h=null!=m?m:h,u=null!=v?v:u,f={...f,[a]:{...f[a],...b}},y&&p<=50&&(p++,"object"==typeof y&&(y.placement&&(d=y.placement),y.rects&&(c=!0===y.rects?await s.getElementRects({reference:t,floating:e,strategy:r}):y.rects),({x:h,y:u}=eo(c,d,l))),n=-1)}return{x:h,y:u,placement:d,strategy:r,middlewareData:f}})(t,e,{...r,platform:a})})(this.parentElement,this,{strategy:"fixed",placement:this.placement,middleware:[(void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:r,middlewareData:a,rects:s,initialPlacement:o,platform:l,elements:c}=t,{mainAxis:h=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:g=!0,...m}=zs(e,t);if(null!=(n=a.arrow)&&n.alignmentOffset)return{};const v=Vs(r),b=Vs(o)===o,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),$=d||(b||!g?[Qs(o)]:function(t){const e=Qs(t);return[Js(t),e,Js(e)]}(o));d||"none"===p||$.push(...function(t,e,n,i){const r=qs(t);let a=function(t,e,n){const i=["left","right"],r=["right","left"],a=["top","bottom"],s=["bottom","top"];switch(t){case"top":case"bottom":return n?e?r:i:e?i:r;case"left":case"right":return e?a:s;default:return[]}}(Vs(t),"start"===n,i);return r&&(a=a.map((t=>t+"-"+r)),e&&(a=a.concat(a.map(Js)))),a}(o,g,p,y));const C=[o,...$],w=await no(t,m),_=[];let S=(null==(i=a.flip)?void 0:i.overflows)||[];if(h&&_.push(w[v]),u){const t=function(t,e,n){void 0===n&&(n=!1);const i=qs(t),r=Xs(t),a=Ys(r);let s="x"===r?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return e.reference[a]>e.floating[a]&&(s=Qs(s)),[s,Qs(s)]}(r,s,y);_.push(w[t[0]],w[t[1]])}if(S=[...S,{placement:r,overflows:_}],!_.every((t=>t<=0))){var x,T;const t=((null==(x=a.flip)?void 0:x.index)||0)+1,e=C[t];if(e)return{data:{index:t,overflows:S},reset:{placement:e}};let n=null==(T=S.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:T.placement;if(!n)switch(f){case"bestFit":{var I;const t=null==(I=S.map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:I[0];t&&(n=t);break}case"initialPlacement":n=o}if(r!==n)return{reset:{placement:n}}}return{}}}),Fo({padding:10}),io(0)].concat((t=this.arrow?[Ro({element:this.arrowElement})]:[],function(t){if(Array.isArray(t))return Uo(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||jo(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}).then((function(t){var e=t.x,i=t.y,r=t.middlewareData,a=t.placement;if(n.placement=a,Object.assign(n.style,Go({left:"".concat(e,"px"),top:"".concat(i,"px")},"padding".concat(Craft.uppercaseFirst(n.getStaticSide())),"".concat(n.offset,"px"))),n.arrowElement){var s=r.arrow,o=s.x,l=s.y;n.arrowElement.dataset.placement=a,Object.assign(n.arrowElement.style,Go({left:null!=o?"".concat(o,"px"):"",top:null!=l?"".concat(l,"px"):"",right:"",bottom:""},n.getStaticSide(),"-4px"))}}))}}],i&&zo(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),e}(qo(HTMLElement));customElements.define("craft-tooltip",Xo),__webpack_require__(6959)}()})();
+(function(){var __webpack_modules__={463:function(){Craft.Accordion=Garnish.Base.extend({$trigger:null,targetSelector:null,_$target:null,init:function(t){var e=this;this.$trigger=$(t),this.$trigger.data("accordion")&&(console.warn("Double-instantiating an accordion trigger on an element"),this.$trigger.data("accordion").destroy()),this.$trigger.data("accordion",this),this.targetSelector=this.$trigger.attr("aria-controls")?"#".concat(this.$trigger.attr("aria-controls")):null,this.targetSelector&&(this._$target=$(this.targetSelector)),this.addListener(this.$trigger,"click","onTriggerClick"),this.addListener(this.$trigger,"keypress",(function(t){var n=t.keyCode;n!==Garnish.SPACE_KEY&&n!==Garnish.RETURN_KEY||(t.preventDefault(),e.onTriggerClick())}))},onTriggerClick:function(){"true"===this.$trigger.attr("aria-expanded")?this.hideTarget(this._$target):this.showTarget(this._$target)},showTarget:function(t){var e=this;if(t&&t.length){this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),this.$trigger.removeClass("collapsed").addClass("expanded").attr("aria-expanded","true");for(var n=0;n<t.length;n++)!function(t){"SPAN"!==t.prop("nodeName")&&(t.height("auto"),e.showTarget._targetHeight=t.height(),t.css({height:e.showTarget._currentHeight,overflow:"hidden"}),t.velocity("stop"),t.velocity({height:e.showTarget._targetHeight},Garnish.getUserPreferredAnimationDuration("fast"),(function(){t.css({height:"",overflow:""})})))}(t.eq(n));delete this.showTarget._targetHeight,delete this.showTarget._currentHeight,Garnish.$win.trigger("resize")}},hideTarget:function(t){if(t&&t.length){this.$trigger.removeClass("expanded").addClass("collapsed").attr("aria-expanded","false");for(var e=0;e<t.length;e++)!function(t){t.hasClass("hidden")||("SPAN"===t.prop("nodeName")?t.addClass("hidden"):(t.css("overflow","hidden"),t.velocity("stop"),t.velocity({height:0},Garnish.getUserPreferredAnimationDuration("fast"),(function(){t.addClass("hidden")}))))}(t.eq(e))}},destroy:function(){this.$trigger.removeData("accordion"),this.base()}})},7452:function(){Craft.AdminTable=Garnish.Base.extend({settings:null,totalItems:null,sorter:null,$noItems:null,$table:null,$tbody:null,$deleteBtns:null,init:function(t){var e=this;this.setSettings(t,Craft.AdminTable.defaults),this.settings.allowDeleteAll||(this.settings.minItems=1),this.$noItems=$(this.settings.noItemsSelector),this.$table=$(this.settings.tableSelector),this.$tbody=this.$table.children("tbody"),this.totalItems=this.$tbody.children().length,this.settings.sortable&&(this.sorter=new Craft.DataTableSorter(this.$table,{onSortChange:this.reorderItems.bind(this)})),this.$deleteBtns=this.$table.find(".delete:not(.disabled)"),this.addListener(this.$deleteBtns,"click","handleDeleteBtnClick"),this.addListener(this.$deleteBtns,"keydown",(function(t){t.keyCode!==Garnish.SPACE_KEY&&t.keyCode!==Garnish.RETURN_KEY||(t.preventDefault(),e.handleDeleteBtnClick(t))})),this.updateUI()},addRow:function(t){if(!(this.settings.maxItems&&this.totalItems>=this.settings.maxItems)){var e=$(t).appendTo(this.$tbody),n=e.find(".delete");this.settings.sortable&&this.sorter.addItems(e),this.$deleteBtns=this.$deleteBtns.add(n),this.addListener(n,"click","handleDeleteBtnClick"),this.totalItems++,this.updateUI()}},reorderItems:function(){var t=this;if(this.settings.sortable){for(var e=[],n=0;n<this.sorter.$items.length;n++){var i=$(this.sorter.$items[n]).attr(this.settings.idAttribute);e.push(i)}var r={ids:JSON.stringify(e)};Craft.sendActionRequest("POST",this.settings.reorderAction,{data:r}).then((function(n){t.onReorderItems(e),Craft.cp.displaySuccess(Craft.t("app",t.settings.reorderSuccessMessage))})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app",t.settings.reorderFailMessage))}))}},handleDeleteBtnClick:function(t){if(!(this.settings.minItems&&this.totalItems<=this.settings.minItems)){var e=$(t.target).closest("tr");this.confirmDeleteItem(e)&&this.deleteItem(e)}},confirmDeleteItem:function(t){if(!this.settings.confirmDeleteMessage)return!0;var e=this.getItemName(t);return confirm(Craft.t("app",this.settings.confirmDeleteMessage,{name:e}))},deleteItem:function(t){var e=this,n={id:this.getItemId(t)};Craft.sendActionRequest("POST",this.settings.deleteAction,{data:n}).then((function(n){return e.handleDeleteItemSuccess(n.data,t)})).catch((function(n){var i=n.response;return e.handleDeleteItemFailure(i.data,t)}))},handleDeleteItemFailure:function(t,e){this.getItemId(e);var n=this.getItemName(e);Craft.cp.displayError(Craft.t("app",this.settings.deleteFailMessage,{name:n}))},handleDeleteItemSuccess:function(t,e){var n=this.getItemId(e),i=this.getItemName(e);this.sorter&&this.sorter.removeItems(e),e.remove(),this.totalItems--,this.updateUI(),this.onDeleteItem(n),this.settings.deleteSuccessMessage&&Craft.cp.displaySuccess(Craft.t("app",this.settings.deleteSuccessMessage,{name:i}))},onReorderItems:function(t){this.settings.onReorderItems(t)},onDeleteItem:function(t){this.settings.onDeleteItem(t)},getItemId:function(t){return t.attr(this.settings.idAttribute)},getItemName:function(t){return Craft.escapeHtml(t.attr(this.settings.nameAttribute))},updateUI:function(){if(0===this.totalItems?(this.$table.hide(),this.$noItems.removeClass("hidden")):(this.$table.show(),this.$noItems.addClass("hidden")),this.settings.sortable){var t=this.$table.find(".move");1===this.totalItems?t.addClass("disabled"):t.removeClass("disabled")}this.settings.minItems&&this.totalItems<=this.settings.minItems?this.$deleteBtns.addClass("disabled"):this.$deleteBtns.removeClass("disabled"),this.settings.newItemBtnSelector&&(this.settings.maxItems&&this.totalItems>=this.settings.maxItems?$(this.settings.newItemBtnSelector).addClass("hidden"):$(this.settings.newItemBtnSelector).removeClass("hidden"))}},{defaults:{tableSelector:null,noItemsSelector:null,newItemBtnSelector:null,idAttribute:"data-id",nameAttribute:"data-name",sortable:!1,allowDeleteAll:!0,minItems:0,maxItems:null,reorderAction:null,deleteAction:null,reorderSuccessMessage:Craft.t("app","New order saved."),reorderFailMessage:Craft.t("app","Couldn’t save new order."),confirmDeleteMessage:Craft.t("app","Are you sure you want to delete “{name}”?"),deleteSuccessMessage:Craft.t("app","“{name}” deleted."),deleteFailMessage:Craft.t("app","Couldn’t delete “{name}”."),onReorderItems:$.noop,onDeleteItem:$.noop}})},6872:function(){Craft.AssetImageEditor=Garnish.Modal.extend({$body:null,$footer:null,$imageTools:null,$buttons:null,$cancelBtn:null,$replaceBtn:null,$saveBtn:null,$focalPointBtn:null,$editorContainer:null,$straighten:null,$croppingCanvas:null,$spinner:null,$constraintContainer:null,$constraintRadioInputs:null,$customConstraints:null,canvas:null,image:null,viewport:null,focalPoint:null,grid:null,croppingCanvas:null,clipper:null,croppingRectangle:null,cropperHandles:null,cropperGrid:null,croppingShade:null,imageStraightenAngle:0,viewportRotation:0,originalWidth:0,originalHeight:0,imageVerticeCoords:null,zoomRatio:1,animationInProgress:!1,currentView:"",assetId:null,cacheBust:null,draggingCropper:!1,scalingCropper:!1,draggingFocal:!1,previousMouseX:0,previousMouseY:0,shiftKeyHeld:!1,editorHeight:0,editorWidth:0,cropperState:!1,scaleFactor:1,flipData:{},focalPointState:!1,maxImageSize:null,lastLoadedDimensions:null,imageIsLoading:!1,mouseMoveEvent:null,croppingConstraint:!1,constraintOrientation:"landscape",showingCustomConstraint:!1,saving:!1,renderImage:null,renderCropper:null,_queue:null,init:function(t,e){var n=this;this._queue=new Craft.Queue,this.cacheBust=Date.now(),this.setSettings(e,Craft.AssetImageEditor.defaults),null===this.settings.allowDegreeFractions&&(this.settings.allowDegreeFractions=Craft.isImagick),Garnish.prefersReducedMotion()&&(this.settings.animationDuration=1),this.assetId=t,this.flipData={x:0,y:0},this.$container=$('<form class="modal fitted imageeditor"></form>').appendTo(Garnish.$bod),this.$body=$('<div class="body"></div>').appendTo(this.$container),this.$footer=$('<div class="footer"/>').appendTo(this.$container),this.base(this.$container,this.settings),this.$buttons=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn cancel",text:Craft.t("app","Cancel")}).appendTo(this.$buttons),this.settings.allowSavingAsNew&&(this.$saveBtn=Craft.ui.createButton({class:"save copy",label:Craft.t("app","Save as a new asset"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$saveBtn,"activate",this.saveImage)),this.$replaceBtn=Craft.ui.createSubmitButton({class:"save replace",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$buttons),this.addListener(this.$replaceBtn,"activate",this.saveImage),this.addListener(this.$cancelBtn,"activate",this.hide),this.removeListener(this.$shade,"click"),this.maxImageSize=this.getMaxImageSize(),Craft.sendActionRequest("POST","assets/image-editor",{data:{assetId:t}}).then((function(t){return n.loadEditor(t.data)}))},getMaxImageSize:function(){var t=Garnish.$doc.get(0).documentElement.clientWidth,e=Garnish.$doc.get(0).documentElement.clientHeight;return Math.max(e,t)*(window.devicePixelRatio>1?2:1)},loadEditor:function(t){var e=this;t.html||Craft.cp.displayError(Craft.t("app","Could not load the image editor.")),this.$body.html(t.html),this.$tabs=$(".tabs li",this.$body),this.$viewsContainer=$(".views",this.$body),this.$views=$("> div",this.$viewsContainer),this.$imageTools=$(".image-container .image-tools",this.$body),this.$editorContainer=$(".image-container .image",this.$body),this.$constraintContainer=$(".constraint-group",this.$body),this.$constraintRadioInputs=$('[name="constraint"]',this.$constraintContainer),this.$focalPointBtn=$(".focal-point",this.$body),this.editorHeight=this.$editorContainer.innerHeight(),this.editorWidth=this.$editorContainer.innerWidth(),this._showSpinner(),this.updateSizeAndPosition(),$customConstraintWrapper=this.$constraintRadioInputs.filter('[value="custom"]').parent(),this.$customConstraints=$("<div/>",{class:"constraint custom hidden","data-constraint":"custom"}).append($("<input/>",{type:"text",class:"custom-constraint-w",size:3,value:1,"aria-label":Craft.t("app","Width unit")})).append($("<span/>",{class:"custom-constraint-spacer",text:"x","aria-hidden":"true"})).append($("<input/>",{type:"text",class:"custom-constraint-h",size:3,value:1,"aria-label":Craft.t("app","Height unit")})).appendTo($customConstraintWrapper),this.$constraintRadioInputs.filter((function(){var t=$(this).val();return/^\d*\.\d+$/.test(t)})).addClass("flip"),this.canvas=new fabric.StaticCanvas("image-canvas"),this.$croppingCanvas=$("#cropping-canvas",this.$editorContainer),this.$croppingCanvas.width(this.editorWidth),this.$croppingCanvas.height(this.editorHeight),this.canvas.enableRetinaScaling=!0,this.renderImage=function(){Garnish.requestAnimationFrame(e.canvas.renderAll.bind(e.canvas))};var n=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});fabric.Image.fromURL(n,(function(n){e.image=n,e.image.set({originX:"center",originY:"center",left:e.editorWidth/2,top:e.editorHeight/2}),e.canvas.add(e.image),e.originalHeight=e.image.getHeight(),e.originalWidth=e.image.getWidth(),e.zoomRatio=1,e.lastLoadedDimensions=e.getScaledImageDimensions(),e._setFittedImageVerticeCoordinates(),e._repositionEditorElements();var i={imageDimensions:e.getScaledImageDimensions(),offsetX:0,offsetY:0},r=!1;if(t.focalPoint){var a=t.focalPoint,s=i.imageDimensions.width*a.x,o=i.imageDimensions.height*a.y;i.offsetX=s-i.imageDimensions.width/2,i.offsetY=o-i.imageDimensions.height/2,r=!0}e.storeFocalPointState(i),r&&e._createFocalPoint(),e._createViewport(),e.storeCropperState(),e._addControlListeners(),e.addListener(e.$croppingCanvas,"mousemove,touchmove",e._handleMouseMove),e.addListener(e.$croppingCanvas,"mousedown,touchstart",e._handleMouseDown),e.addListener(e.$croppingCanvas,"mouseup,touchend",e._handleMouseUp),e.addListener(e.$croppingCanvas,"mouseout,touchcancel",e._handleMouseOut),e._hideSpinner(),e.renderImage(),e.$tabs.first().trigger("click")}))},_reloadImage:function(){var t=this;if(!this.imageIsLoading){this.imageIsLoading=!0,this.maxImageSize=this.getMaxImageSize();var e=Craft.getActionUrl("assets/edit-image",{assetId:this.assetId,size:this.maxImageSize,cacheBust:this.cacheBust});this.image.setSrc(e,(function(e){t.originalHeight=e.getHeight(),t.originalWidth=e.getWidth(),t.lastLoadedDimensions={width:t.originalHeight,height:t.originalWidth},t.updateSizeAndPosition(),t.renderImage(),t.imageIsLoading=!1}))}},updateSizeAndPosition:function(){if(this.$container){var t=window.innerWidth,e=window.innerHeight;this.$container.css({width:t,"min-width":t,left:0,height:e,"min-height":e,top:0}),this.$body.css({height:e-(this.$footer.outerHeight()-1)}),t<e?this.$container.addClass("vertical"):this.$container.removeClass("vertical"),this.$editorContainer&&this.image&&this._repositionEditorElements()}},_repositionEditorElements:function(){var t={width:this.editorWidth,height:this.editorHeight};this.editorHeight=this.$editorContainer.innerHeight(),this.editorWidth=this.$editorContainer.innerWidth(),this.canvas.setDimensions({width:this.editorWidth,height:this.editorHeight});var e=this.getScaledImageDimensions();if("crop"===this.currentView){this.zoomRatio=this.getZoomToFitRatio(this.getScaledImageDimensions());var n=this._getBoundingRectangle(this.imageVerticeCoords);this._setFittedImageVerticeCoordinates(),this._repositionCropper(n)}else this.zoomRatio=this.getZoomToCoverRatio(this.getScaledImageDimensions())*this.scaleFactor;this._repositionImage(t),this._repositionViewport(),this._repositionFocalPoint(t),this._zoomImage(),this.renderImage(),(e.width/this.lastLoadedDimensions.width>1.5||e.height/this.lastLoadedDimensions.height>1.5)&&this._reloadImage()},_repositionImage:function(t){this.image.set({left:this.image.left-(t.width-this.editorWidth)/2,top:this.image.top-(t.height-this.editorHeight)/2})},_createViewport:function(){this.viewport=new fabric.Rect({width:this.image.width,height:this.image.height,fill:"rgba(127,0,0,1)",originX:"center",originY:"center",globalCompositeOperation:"destination-in",left:this.image.left,top:this.image.top}),this.canvas.add(this.viewport),this.renderImage()},_createFocalPoint:function(){var t=this.focalPointState,e=this.getScaledImageDimensions().width/t.imageDimensions.width,n=t.offsetX*e*this.zoomRatio*this.scaleFactor,i=t.offsetY*e*this.zoomRatio*this.scaleFactor;n+=this.image.left,i+=this.image.top;var r=0,a=0;this.viewport&&0===t.offsetX&&0===t.offsetY&&("crop"!==this.currentView?(r=this.viewport.left-this.image.left,a=this.viewport.top-this.image.top):(r=this.clipper.left-this.image.left,a=this.clipper.top-this.image.top),n+=r,i+=a,t.offsetX+=r/(e*this.zoomRatio*this.scaleFactor),t.offsetY+=a/(e*this.zoomRatio*this.scaleFactor)),this.focalPoint=new fabric.Group([new fabric.Circle({radius:8,fill:"rgba(0,0,0,0.5)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"}),new fabric.Circle({radius:1,fill:"rgba(255,255,255,0)",strokeWidth:2,stroke:"rgba(255,255,255,0.8)",left:0,top:0,originX:"center",originY:"center"})],{originX:"center",originY:"center",left:n,top:i}),this.storeFocalPointState(t),this.canvas.add(this.focalPoint)},toggleFocalPoint:function(){this.focalPoint?(this.canvas.remove(this.focalPoint),this.focalPoint=null,this.$focalPointBtn.attr("aria-pressed","false")):(this._createFocalPoint(),this.$focalPointBtn.attr("aria-pressed","true")),this.renderImage()},_repositionViewport:function(){if(this.viewport){var t={left:this.editorWidth/2,top:this.editorHeight/2};if("crop"===this.currentView)t.width=this.editorWidth,t.height=this.editorHeight;else if(this.cropperState){var e=this.cropperState,n=this.getScaledImageDimensions().width/e.imageDimensions.width;t.width=e.width*n*this.zoomRatio,t.height=e.height*n*this.zoomRatio,this.image.set({left:this.editorWidth/2-e.offsetX*n,top:this.editorHeight/2-e.offsetY*n})}else $.extend(t,this.getScaledImageDimensions());this.viewport.set(t)}},_repositionFocalPoint:function(t){if(this.focalPoint){var e=this.focalPoint.left-this.editorWidth/2,n=this.focalPoint.top-this.editorHeight/2,i=this.image.width,r=this.getScaledImageDimensions().width*this.zoomRatio/i/this.scaleFactor;e-=(t.width-this.editorWidth)/2,n-=(t.height-this.editorHeight)/2,e*=r,n*=r,this.focalPoint.set({left:this.editorWidth/2+e,top:this.editorHeight/2+n})}},hasOrientationChanged:function(){return this.viewportRotation%180!=0},getScaledImageDimensions:function(){return void 0===this.getScaledImageDimensions._&&(this.getScaledImageDimensions._={}),this.getScaledImageDimensions._.imageRatio=this.originalHeight/this.originalWidth,this.getScaledImageDimensions._.editorRatio=this.editorHeight/this.editorWidth,this.getScaledImageDimensions._.dimensions={},this.getScaledImageDimensions._.imageRatio>this.getScaledImageDimensions._.editorRatio?(this.getScaledImageDimensions._.dimensions.height=Math.min(this.editorHeight,this.originalHeight),this.getScaledImageDimensions._.dimensions.width=Math.round(this.originalWidth/(this.originalHeight/this.getScaledImageDimensions._.dimensions.height))):(this.getScaledImageDimensions._.dimensions.width=Math.min(this.editorWidth,this.originalWidth),this.getScaledImageDimensions._.dimensions.height=Math.round(this.originalHeight*(this.getScaledImageDimensions._.dimensions.width/this.originalWidth))),this.getScaledImageDimensions._.dimensions},_zoomImage:function(){void 0===this._zoomImage._&&(this._zoomImage._={}),this._zoomImage._.imageDimensions=this.getScaledImageDimensions(),this.image.set({width:this._zoomImage._.imageDimensions.width*this.zoomRatio,height:this._zoomImage._.imageDimensions.height*this.zoomRatio})},_getPrevTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e>0?e-1:this.$tabs.length-1,this.$tabs.eq(t)},_getNextTab:function(){var t,e=this._getActiveTabIndex();if(!(e<0))return t=e<this.$tabs.length-1?e+1:0,this.$tabs.eq(t)},_getActiveTab:function(){return this.$tabs.filter('[aria-selected="true"]')},_getActiveTabIndex:function(){var t=this._getActiveTab();if(t.length)return t.index()},_addControlListeners:function(){var t=this;this.addListener(this.$tabs,"click",this._handleTabClick),this.addListener(this.$tabs,"keydown",(function(e){switch(e.keyCode){case Garnish.LEFT_KEY:case Garnish.UP_KEY:e.preventDefault();var n=t._getPrevTab();t.activateTab(n);break;case Garnish.RIGHT_KEY:case Garnish.DOWN_KEY:e.preventDefault();var i=t._getNextTab();t.activateTab(i)}})),this.addListener(this.$focalPointBtn,"click",this.toggleFocalPoint),this.addListener($(".rotate-left"),"click",(function(){this.rotateImage(-90)})),this.addListener($(".rotate-right"),"click",(function(){this.rotateImage(90)})),this.addListener($(".flip-vertical"),"click",(function(){this.flipImage("y")})),this.addListener($(".flip-horizontal"),"click",(function(){this.flipImage("x")})),this.straighteningInput=new Craft.SlideRuleInput("slide-rule",{onStart:function(){t._showGrid()},onChange:function(e){t.straighten(e)},onEnd:function(){t._hideGrid(),t._cleanupFocalPointAfterStraighten()}}),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.SHIFT_KEY&&(this.shiftKeyHeld=!0)})),this.addListener(Garnish.$doc,"keyup",(function(t){t.keyCode===Garnish.SHIFT_KEY&&(this.shiftKeyHeld=!1)})),this.addListener(this.$constraintRadioInputs,"change",this._handleConstraintChange),this.addListener($(".orientation input",this.$container),"click",this._handleOrientationClick),this.addListener($(".constraint-group .custom input",this.$container),"keyup",this._applyCustomConstraint)},_handleConstraintClick:function(t){var e=$(t.currentTarget).data("constraint"),n=$(t.currentTarget);if(n.siblings().removeClass("active"),n.addClass("active"),"custom"==e)return this._showCustomConstraint(),void this._applyCustomConstraint();this._hideCustomConstraint(),this.setCroppingConstraint(e),this.enforceCroppingConstraint()},_handleConstraintChange:function(t){var e=$(t.target).val();if("custom"==e)return this._showCustomConstraint(),void this._applyCustomConstraint();this._hideCustomConstraint(),this.setCroppingConstraint(e),this.enforceCroppingConstraint()},_handleOrientationClick:function(t){if(t.currentTarget.value!==this.constraintOrientation){this.constraintOrientation=t.currentTarget.value;for(var e=$(".flip",this.$constraintContainer),n=0;n<e.length;n++){var i=$(e[n]),r='label[for="'+i.attr("id")+'"]',a=$(r,this.$constraintContainer);i.val(1/i.val()),a.html(a.text().split(":").reverse().join(":").replace(/\s/g,""))}e.filter(":checked").trigger("change")}},_applyCustomConstraint:function(){var t=this._getCustomConstraint();t.w>0&&t.h>0&&(this.setCroppingConstraint(t.w/t.h),this.enforceCroppingConstraint())},_getCustomConstraint:function(){var t=parseFloat($(".custom-constraint-w").val()),e=parseFloat($(".custom-constraint-h").val());return{w:isNaN(t)?0:t,h:isNaN(e)?0:e}},_setCustomConstraint:function(t,e){$(".custom-constraint-w").val(parseFloat(t)),$(".custom-constraint-h").val(parseFloat(e))},_hideCustomConstraint:function(){this.showingCustomConstraint=!1,this.$customConstraints.addClass("hidden"),$(".orientation",this.$container).removeClass("hidden")},_showCustomConstraint:function(){this.showingCustomConstraint||(this.showingCustomConstraint=!0,this.$customConstraints.removeClass("hidden"),$(".orientation",this.$container).addClass("hidden"))},_handleTabClick:function(t){if(!this.animationInProgress){var e=$(t.currentTarget);this.activateTab(e)}},activateTab:function(t){var e=$(t).data("view");this.$tabs.removeClass("selected").attr({"aria-selected":"false",tabindex:"-1"}),$(t).addClass("selected").attr({"aria-selected":"true",tabindex:"0"}).trigger("focus"),this.showView(e)},showView:function(t){var e=this;this.currentView!==t&&(this.$views.addClass("hidden"),this.$views.filter('[data-view="'+t+'"]').removeClass("hidden"),"rotate"===t?this.enableSlider():this.disableSlider(),this.updateSizeAndPosition(),"crop"===this.currentView&&"crop"!==t?this._queue.push((function(){return new Promise((function(t,n){e.disableCropMode(),t()}))})):"crop"!==this.currentView&&"crop"===t&&this._queue.push((function(){return new Promise((function(t,n){e.enableCropMode(),t()}))})),this.currentView=t)},storeCropperState:function(t){void 0===this.storeCropperState._&&(this.storeCropperState._={}),t?this.cropperState=t:this.clipper?(this.storeCropperState._.zoomFactor=1/this.zoomRatio,this.cropperState={offsetX:(this.clipper.left-this.image.left)*this.storeCropperState._.zoomFactor,offsetY:(this.clipper.top-this.image.top)*this.storeCropperState._.zoomFactor,height:this.clipper.height*this.storeCropperState._.zoomFactor,width:this.clipper.width*this.storeCropperState._.zoomFactor,imageDimensions:this.getScaledImageDimensions()}):(this.storeCropperState._.dimensions=this.getScaledImageDimensions(),this.cropperState={offsetX:0,offsetY:0,height:this.storeCropperState._.dimensions.height,width:this.storeCropperState._.dimensions.width,imageDimensions:this.storeCropperState._.dimensions})},storeFocalPointState:function(t){void 0===this.storeFocalPointState._&&(this.storeFocalPointState._={}),t?this.focalPointState=t:this.focalPoint&&(this.storeFocalPointState._.zoomFactor=1/this.zoomRatio,this.focalPointState={offsetX:(this.focalPoint.left-this.image.left)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,offsetY:(this.focalPoint.top-this.image.top)*this.storeFocalPointState._.zoomFactor/this.scaleFactor,imageDimensions:this.getScaledImageDimensions()})},rotateImage:function(t){var e=this;if(!this.animationInProgress){if(90!==t&&-90!==t)return!1;this.animationInProgress=!0,this.viewportRotation+=t,this.viewportRotation=parseInt((this.viewportRotation+360)%360,10);var n,i=this.image.angle+t,r=this.getScaledImageDimensions();n=this.hasOrientationChanged()?this.getZoomToCoverRatio({height:r.width,width:r.height}):this.getZoomToCoverRatio(r),this.zoomRatio>n&&(n=this.zoomRatio);var a={angle:90===t?"+=90":"-=90"},s={angle:i,width:r.width*n,height:r.height*n},o=1;this.scaleFactor<1?(o=1/this.scaleFactor,this.scaleFactor=1):(this.viewport.width>this.editorHeight?o=this.editorHeight/this.viewport.width:this.viewport.height>this.editorWidth&&(o=this.editorWidth/this.viewport.height),this.scaleFactor=o),o<1&&(s.width*=o,s.height*=o);var l=this.cropperState,c=l.offsetX,h=l.offsetY,u=t*(Math.PI/180),d=c*Math.cos(u)-h*Math.sin(u),f=c*Math.sin(u)+h*Math.cos(u),p=r.width/l.imageDimensions.width,g=d*p*this.zoomRatio*this.scaleFactor,m=f*p*this.zoomRatio*this.scaleFactor;s.left=this.editorWidth/2-g,s.top=this.editorHeight/2-m,l.offsetX=d,l.offsetY=f;var v=l.width;l.width=l.height,l.height=v,this.storeCropperState(l),this.focalPoint&&this.canvas.remove(this.focalPoint),this.viewport.animate(a,{duration:this.settings.animationDuration,onComplete:function(){var t=e.viewport.height*o;e.viewport.height=e.viewport.width*o,e.viewport.width=t,e.viewport.set({angle:0})}}),this.image.animate(s,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){var n=parseFloat((e.image.angle+360)%360);e.image.set({angle:n}),e.animationInProgress=!1,e.focalPoint?(e._adjustFocalPointByAngle(t),e.straighten(e.straighteningInput),e.canvas.add(e.focalPoint)):e._resetFocalPointPosition()}})}},flipImage:function(t){var e=this;if(!this.animationInProgress){this.animationInProgress=!0,this.hasOrientationChanged()&&(t="y"===t?"x":"y"),this.focalPoint?this.canvas.remove(this.focalPoint):this._resetFocalPointPosition();var n={x:this.editorWidth/2,y:this.editorHeight/2};this.straighteningInput.setValue(-this.imageStraightenAngle),this.imageStraightenAngle=-this.imageStraightenAngle;var i,r,a={angle:this.viewportRotation+this.imageStraightenAngle},s=this.cropperState,o=this.focalPointState;"y"===t&&this.hasOrientationChanged()||"y"!==t&&!this.hasOrientationChanged()?(s.offsetX=-s.offsetX,o.offsetX=-o.offsetX,r=this.image.left-n.x,a.left=n.x-r):(s.offsetY=-s.offsetY,o.offsetY=-o.offsetY,i=this.image.top-n.y,a.top=n.y-i),"y"===t?(a.scaleY=-1*this.image.scaleY,this.flipData.y=1-this.flipData.y):(a.scaleX=-1*this.image.scaleX,this.flipData.x=1-this.flipData.x),this.storeCropperState(s),this.storeFocalPointState(o),this.image.animate(a,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){e.animationInProgress=!1,e.focalPoint&&(e._adjustFocalPointByAngle(0),e.canvas.add(e.focalPoint))}})}},straighten:function(t){if(!this.animationInProgress){this.animationInProgress=!0;var e=this.image.angle;this.imageStraightenAngle=(this.settings.allowDegreeFractions?parseFloat(t.value):Math.round(parseFloat(t.value)))%360,this.image.set({angle:this.viewportRotation+this.imageStraightenAngle}),this.zoomRatio=this.getZoomToCoverRatio(this.getScaledImageDimensions())*this.scaleFactor,this._zoomImage(),this.cropperState&&this._adjustEditorElementsOnStraighten(e),this.renderImage(),this.animationInProgress=!1}},_adjustEditorElementsOnStraighten:function(t){var e,n,i,r,a,s=this.getScaledImageDimensions(),o=this.image.angle-t,l=this.cropperState,c=this.zoomRatio,h=1;do{var u=l.offsetX,d=l.offsetY,f=o*(Math.PI/180);i=u*Math.cos(f)-d*Math.sin(f),r=u*Math.sin(f)+d*Math.cos(f),e=i*c*(a=s.width/l.imageDimensions.width),n=r*c*a;var p=this.getImageVerticeCoords(c),g={width:this.viewport.width,height:this.viewport.height,left:this.editorWidth/2-this.viewport.width/2+e,top:this.editorHeight/2-this.viewport.height/2+n};c*=h=this._getZoomRatioToFitRectangle(g,p)}while(1!==h);this.image.set({left:this.editorWidth/2-e,top:this.editorHeight/2-n}),l.offsetX=i,l.offsetY=r,l.width=this.viewport.width/c/a,l.height=this.viewport.height/c/a,this.storeCropperState(l),this.zoomRatio=c,this.focalPoint?(this._adjustFocalPointByAngle(o),this._isCenterInside(this.focalPoint,this.viewport)?this.focalPoint.set({opacity:1}):this.focalPoint.set({opacity:0})):0!==o&&this._resetFocalPointPosition(),this._zoomImage()},_cleanupFocalPointAfterStraighten:function(){if(this.focalPoint&&!this._isCenterInside(this.focalPoint,this.viewport)){this.focalPoint.set({opacity:1});var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t),this.toggleFocalPoint()}},_resetFocalPointPosition:function(){var t=this.focalPointState;t.offsetX=0,t.offsetY=0,this.storeFocalPointState(t)},_isCenterInside:function(t,e){return t.left>e.left-e.width/2&&t.top>e.top-e.height/2&&t.left<e.left+e.width/2&&t.top<e.top+e.height/2},_adjustFocalPointByAngle:function(t){var e=t*(Math.PI/180),n=this.focalPointState,i=n.offsetX,r=n.offsetY,a=i*Math.cos(e)-r*Math.sin(e),s=i*Math.sin(e)+r*Math.cos(e),o=this.getScaledImageDimensions().width/n.imageDimensions.width,l=a*o*this.zoomRatio,c=s*o*this.zoomRatio;this.focalPoint.left=this.image.left+l,this.focalPoint.top=this.image.top+c,n.offsetX=a,n.offsetY=s,this.storeFocalPointState(n)},_getZoomRatioToFitRectangle:function(t,e){for(var n,i,r=this._getRectangleVertices(t),a=0;a<r.length&&(n=r[a],this.arePointsInsideRectangle([n],e));a++)n=!1;if(n){var s=this._getEdgeCrossed(e,n),o={x:t.left+t.width/2,y:t.top+t.height/2},l=Math.abs((s[1].y-s[0].y)*n.x-(s[1].x-s[0].x)*n.y+s[1].x*s[0].y-s[1].y*s[0].x)/Math.sqrt(Math.pow(s[1].y-s[0].y,2)+Math.pow(s[1].x-s[0].x,2)),c=Math.abs((s[1].y-s[0].y)*o.x-(s[1].x-s[0].x)*o.y+s[1].x*s[0].y-s[1].y*s[0].x)/Math.sqrt(Math.pow(s[1].y-s[0].y,2)+Math.pow(s[1].x-s[0].x,2));i=(l+c)/c}else i=1;return i},saveImage:function(t){var e=this,n=$(t.currentTarget);if(this.saving)return!1;this.saving=!0,n.addClass("loading");var i=n.hasClass("replace"),r={assetId:this.assetId,viewportRotation:this.viewportRotation,imageRotation:this.imageStraightenAngle,replace:i?1:0};if(this.cropperState){var a={};a.height=this.cropperState.height,a.width=this.cropperState.width,a.offsetX=this.cropperState.offsetX,a.offsetY=this.cropperState.offsetY,r.imageDimensions=this.cropperState.imageDimensions,r.cropData=a}else r.imageDimensions=this.getScaledImageDimensions();this.focalPoint&&(r.focalPoint=this.focalPointState),r.flipData=this.flipData,r.zoom=this.zoomRatio,Craft.sendActionRequest("POST","assets/save-image",{data:r}).then((function(t){var n=t.data;e.onSave(n),i&&Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:e.assetId}),e.hide(),Craft.cp.runQueue(),Craft.Preview.refresh()})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})).finally((function(){e.$buttons.find(".btn").removeClass("loading"),e.saving=!1}))},getZoomToCoverRatio:function(t){var e=Math.abs(this.imageStraightenAngle)*(Math.PI/180),n=Math.sin(e)*t.height+Math.cos(e)*t.width,i=Math.sin(e)*t.width+Math.cos(e)*t.height;return Math.max(n/t.width,i/t.height)},getZoomToFitRatio:function(t){var e=this._getImageBoundingBox(t),n=1;if(e.height>this.editorHeight||e.width>this.editorWidth){var i=this.editorHeight/e.height,r=this.editorWidth/e.width;n=Math.min(r,i)}return n},getCombinedZoomRatio:function(t){return this.getZoomToCoverRatio(t)/this.getZoomToFitRatio(t)},_showGrid:function(){if(!this.grid){var t,e={strokeWidth:1,stroke:"rgba(255,255,255,0.5)"},n=this.viewport.width,i=this.viewport.height,r=n/9,a=i/9,s=[new fabric.Rect({strokeWidth:2,stroke:"rgba(255,255,255,1)",originX:"center",originY:"center",width:n,height:i,left:n/2,top:i/2,fill:"rgba(255,255,255,0)"})];for(t=1;t<=8;t++)s.push(new fabric.Line([t*r,0,t*r,i],e));for(t=1;t<=8;t++)s.push(new fabric.Line([0,t*a,n,t*a],e));this.grid=new fabric.Group(s,{left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",angle:this.viewport.angle}),this.canvas.add(this.grid),this.renderImage()}},_hideGrid:function(){this.canvas.remove(this.grid),this.grid=null,this.renderImage()},onFadeOut:function(){this.destroy()},show:function(){this.base(),Garnish.$bod.addClass("no-scroll")},hide:function(){this.removeAllListeners(),this.straighteningInput.removeAllListeners(),Garnish.$bod.removeClass("no-scroll"),this.base()},onSave:function(t){this.settings.onSave(t),this.trigger("save")},enableSlider:function(){this.$imageTools.removeClass("hidden")},disableSlider:function(){this.$imageTools.addClass("hidden")},enableCropMode:function(){var t=this,e=this.getScaledImageDimensions();this.zoomRatio=this.getZoomToFitRatio(e);var n={width:this.editorWidth,height:this.editorHeight},i={width:e.width*this.zoomRatio,height:e.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2};this._editorModeTransition((function(){t._setFittedImageVerticeCoordinates();var e=t.cropperState,n=t.getScaledImageDimensions(),i=n.width/e.imageDimensions.width,r={left:t.image.left+e.offsetX*i*t.zoomRatio,top:t.image.top+e.offsetY*i*t.zoomRatio,width:e.width*i*t.zoomRatio,height:e.height*i*t.zoomRatio};t._showCropper(r),t.focalPoint&&(i=n.width/t.focalPointState.imageDimensions.width,t.focalPoint.left=t.image.left+t.focalPointState.offsetX*i*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*i*t.zoomRatio,t.canvas.add(t.focalPoint))}),i,n)},disableCropMode:function(){var t=this,e={};this._hideCropper();var n=this.getScaledImageDimensions(),i=this.getZoomToCoverRatio(n)*this.scaleFactor,r=i/this.zoomRatio;this.zoomRatio=i;var a={width:n.width*this.zoomRatio,height:n.height*this.zoomRatio,left:this.editorWidth/2,top:this.editorHeight/2},s=(this.clipper.left-this.image.left)*r,o=(this.clipper.top-this.image.top)*r;a.left=this.editorWidth/2-s,a.top=this.editorHeight/2-o,e.height=this.clipper.height*r,e.width=this.clipper.width*r,(!this.focalPoint||this.focalPoint&&!this._isCenterInside(this.focalPoint,this.clipper))&&(this.focalPoint&&this.toggleFocalPoint(),this._resetFocalPointPosition()),this._editorModeTransition((function(){if(t.focalPoint){var e=t.getScaledImageDimensions().width/t.focalPointState.imageDimensions.width;t.focalPoint.left=t.image.left+t.focalPointState.offsetX*e*t.zoomRatio,t.focalPoint.top=t.image.top+t.focalPointState.offsetY*e*t.zoomRatio,t.canvas.add(t.focalPoint)}}),a,e)},_editorModeTransition:function(t,e,n){var i=this;this._queue.pause(),this.animationInProgress||(this.animationInProgress=!0,this.focalPoint&&(this.canvas.remove(this.focalPoint),this.renderImage()),this.image.animate(e,{onChange:this.canvas.renderAll.bind(this.canvas),duration:this.settings.animationDuration,onComplete:function(){t(),i.animationInProgress=!1,i.renderImage(),i._queue.resume()}}),this.viewport.animate(n,{duration:this.settings.animationDuration}))},_showSpinner:function(){this.$spinner||(this.$spinner=$('<div class="spinner big spinner-absolute"/>')),this.$spinner.appendTo(this.$container.find(".image"))},_hideSpinner:function(){this.$spinner.remove()},_showCropper:function(t){this._setupCropperLayer(t),this._redrawCropperElements(),this.renderCropper()},_hideCropper:function(){this.clipper&&(this.croppingCanvas.remove(this.clipper),this.croppingCanvas.remove(this.croppingShade),this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle),this.croppingCanvas=null,this.renderCropper=null)},_setupCropperLayer:function(t){var e=this;this.croppingCanvas=new fabric.StaticCanvas("cropping-canvas",{backgroundColor:"rgba(0,0,0,0)",hoverCursor:"default",selection:!1}),this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight}),this.renderCropper=function(){return Garnish.requestAnimationFrame(e.croppingCanvas.renderAll.bind(e.croppingCanvas))},$("#cropping-canvas",this.$editorContainer).css({position:"absolute",top:0,left:0}),this.croppingShade=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:this.editorWidth,height:this.editorHeight,fill:"rgba(0,0,0,0.7)"});var n=this.getScaledImageDimensions(),i=0===this.imageStraightenAngle?1:1.2*this.getCombinedZoomRatio(n),r=n.width/i,a=n.height/i;if(this.hasOrientationChanged()){var s=a;a=r,r=s}this.clipper=new fabric.Rect({left:this.editorWidth/2,top:this.editorHeight/2,originX:"center",originY:"center",width:r,height:a,stroke:"black",fill:"rgba(128,0,0,1)",strokeWidth:0}),t&&this.clipper.set(t),this.clipper.globalCompositeOperation="destination-out",this.croppingCanvas.add(this.croppingShade),this.croppingCanvas.add(this.clipper)},_redrawCropperElements:function(){void 0===this._redrawCropperElements._&&(this._redrawCropperElements._={}),this.cropperHandles&&(this.croppingCanvas.remove(this.cropperHandles),this.croppingCanvas.remove(this.cropperGrid),this.croppingCanvas.remove(this.croppingRectangle)),this._redrawCropperElements._.lineOptions={strokeWidth:4,stroke:"rgb(255,255,255)",fill:!1},this._redrawCropperElements._.gridOptions={strokeWidth:2,stroke:"rgba(255,255,255,0.5)"},this._redrawCropperElements._.pathGroup=[new fabric.Path("M 0,10 L 0,0 L 10,0",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width-8)+",0 L "+(this.clipper.width+4)+",0 L "+(this.clipper.width+4)+",10",this._redrawCropperElements._.lineOptions),new fabric.Path("M "+(this.clipper.width+4)+","+(this.clipper.height-8)+" L"+(this.clipper.width+4)+","+(this.clipper.height+4)+" L "+(this.clipper.width-8)+","+(this.clipper.height+4),this._redrawCropperElements._.lineOptions),new fabric.Path("M 10,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height+4)+" L 0,"+(this.clipper.height-8),this._redrawCropperElements._.lineOptions)],this.cropperHandles=new fabric.Group(this._redrawCropperElements._.pathGroup,{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this.croppingRectangle=new fabric.Rect({left:this.clipper.left,top:this.clipper.top,width:this.clipper.width,height:this.clipper.height,fill:"rgba(0,0,0,0)",stroke:"rgba(255,255,255,0.8)",strokeWidth:2,originX:"center",originY:"center"}),this.cropperGrid=new fabric.Group([new fabric.Line([.33*this.clipper.width,0,.33*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([.66*this.clipper.width,0,.66*this.clipper.width,this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.33*this.clipper.height,this.clipper.width,.33*this.clipper.height],this._redrawCropperElements._.gridOptions),new fabric.Line([0,.66*this.clipper.height,this.clipper.width,.66*this.clipper.height],this._redrawCropperElements._.gridOptions)],{left:this.clipper.left,top:this.clipper.top,originX:"center",originY:"center"}),this._redrawCropperElements._.cropTextTop=this.croppingRectangle.top+this.clipper.height/2+12,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0)",this._redrawCropperElements._.cropTextTop+12>this.editorHeight-2&&(this._redrawCropperElements._.cropTextTop-=24,this._redrawCropperElements._.cropTextBackgroundColor="rgba(0,0,0,0.5)"),this.croppingCanvas.add(this.cropperHandles),this.croppingCanvas.add(this.cropperGrid),this.croppingCanvas.add(this.croppingRectangle)},_repositionCropper:function(t){if(this.croppingCanvas){var e=this.clipper.left-this.croppingCanvas.width/2,n=this.clipper.top-this.croppingCanvas.height/2;this.croppingCanvas.setDimensions({width:this.editorWidth,height:this.editorHeight});var i=this._getBoundingRectangle(this.imageVerticeCoords).width/t.width;this.clipper.width=Math.round(this.clipper.width*i),this.clipper.height=Math.round(this.clipper.height*i),this.clipper.left=this.editorWidth/2+e*i,this.clipper.top=this.editorHeight/2+n*i,this.croppingShade.set({width:this.editorWidth,height:this.editorHeight,left:this.editorWidth/2,top:this.editorHeight/2}),this._redrawCropperElements(),this.renderCropper()}},_getBoundingRectangle:function(t){return{width:Math.max(t.a.x,t.b.x,t.c.x,t.d.x)-Math.min(t.a.x,t.b.x,t.c.x,t.d.x),height:Math.max(t.a.y,t.b.y,t.c.y,t.d.y)-Math.min(t.a.y,t.b.y,t.c.y,t.d.y)}},_handleMouseDown:function(t){var e=this.focalPoint&&this._isMouseOver(t,this.focalPoint),n=this.croppingCanvas&&this._isMouseOver(t,this.clipper),i=this.croppingCanvas&&this._cropperHandleHitTest(t);(i||n||e)&&(this.previousMouseX=t.pageX,this.previousMouseY=t.pageY,e?this.draggingFocal=!0:i?this.scalingCropper=i:n&&(this.draggingCropper=!0))},_handleMouseMove:function(t){null!==this.mouseMoveEvent&&Garnish.requestAnimationFrame(this._handleMouseMoveInternal.bind(this)),this.mouseMoveEvent=t},_handleMouseMoveInternal:function(){null!==this.mouseMoveEvent&&(this.focalPoint&&this.draggingFocal?(this._handleFocalDrag(this.mouseMoveEvent),this.storeFocalPointState(),this.renderImage()):this.draggingCropper||this.scalingCropper?(this.draggingCropper?this._handleCropperDrag(this.mouseMoveEvent):this._handleCropperResize(this.mouseMoveEvent),this._redrawCropperElements(),this.storeCropperState(),this.renderCropper()):this._setMouseCursor(this.mouseMoveEvent),this.previousMouseX=this.mouseMoveEvent.pageX,this.previousMouseY=this.mouseMoveEvent.pageY,this.mouseMoveEvent=null)},_handleMouseUp:function(){this.draggingCropper=!1,this.scalingCropper=!1,this.draggingFocal=!1},_handleMouseOut:function(t){this._handleMouseUp(t),this.mouseMoveEvent=t,this._handleMouseMoveInternal()},_handleCropperDrag:function(t){if(void 0===this._handleCropperDrag._&&(this._handleCropperDrag._={}),this._handleCropperDrag._.deltaX=t.pageX-this.previousMouseX,this._handleCropperDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleCropperDrag._.deltaX&&0===this._handleCropperDrag._.deltaY)return!1;if(this._handleCropperDrag._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.deltaX,this._handleCropperDrag._.deltaY),!this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)){for(this._handleCropperDrag._.dxi=0,this._handleCropperDrag._.dyi=0,this._handleCropperDrag._.xStep=this._handleCropperDrag._.deltaX>0?-1:1,this._handleCropperDrag._.yStep=this._handleCropperDrag._.deltaY>0?-1:1,this._handleCropperDrag._.furthest=0,this._handleCropperDrag._.furthestDeltas={},this._handleCropperDrag._.dxi=Math.min(Math.abs(this._handleCropperDrag._.deltaX),10);this._handleCropperDrag._.dxi>=0;this._handleCropperDrag._.dxi--)for(this._handleCropperDrag._.dyi=Math.min(Math.abs(this._handleCropperDrag._.deltaY),10);this._handleCropperDrag._.dyi>=0;this._handleCropperDrag._.dyi--)this._handleCropperDrag._.vertices=this._getRectangleVertices(this._handleCropperDrag._.rectangle,this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)),this.arePointsInsideRectangle(this._handleCropperDrag._.vertices,this.imageVerticeCoords)&&this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi>this._handleCropperDrag._.furthest&&(this._handleCropperDrag._.furthest=this._handleCropperDrag._.dxi+this._handleCropperDrag._.dyi,this._handleCropperDrag._.furthestDeltas={x:this._handleCropperDrag._.dxi*(this._handleCropperDrag._.deltaX>0?1:-1),y:this._handleCropperDrag._.dyi*(this._handleCropperDrag._.deltaY>0?1:-1)});if(0==this._handleCropperDrag._.furthest)return;this._handleCropperDrag._.deltaX=this._handleCropperDrag._.furthestDeltas.x,this._handleCropperDrag._.deltaY=this._handleCropperDrag._.furthestDeltas.y}this.clipper.set({left:this.clipper.left+this._handleCropperDrag._.deltaX,top:this.clipper.top+this._handleCropperDrag._.deltaY})},_handleFocalDrag:function(t){if(void 0===this._handleFocalDrag._&&(this._handleFocalDrag._={}),this.focalPoint){if(this._handleFocalDrag._.deltaX=t.pageX-this.previousMouseX,this._handleFocalDrag._.deltaY=t.pageY-this.previousMouseY,0===this._handleFocalDrag._.deltaX&&0===this._handleFocalDrag._.deltaY)return;if(this._handleFocalDrag._.newX=this.focalPoint.left+this._handleFocalDrag._.deltaX,this._handleFocalDrag._.newY=this.focalPoint.top+this._handleFocalDrag._.deltaY,"crop"===this.currentView){if(!this.arePointsInsideRectangle([{x:this._handleFocalDrag._.newX,y:this._handleFocalDrag._.newY}],this.imageVerticeCoords))return}else if(!(this.viewport.left-this.viewport.width/2-this._handleFocalDrag._.newX<0&&this.viewport.left+this.viewport.width/2-this._handleFocalDrag._.newX>0&&this.viewport.top-this.viewport.height/2-this._handleFocalDrag._.newY<0&&this.viewport.top+this.viewport.height/2-this._handleFocalDrag._.newY>0))return;this.focalPoint.set({left:this.focalPoint.left+this._handleFocalDrag._.deltaX,top:this.focalPoint.top+this._handleFocalDrag._.deltaY})}},setCroppingConstraint:function(t){switch(this.updateSizeAndPosition(),t){case"none":this.croppingConstraint=!1;break;case"original":this.croppingConstraint=this.originalWidth/this.originalHeight;break;case"current":this.croppingConstraint=this.clipper.width/this.clipper.height;break;case"custom":break;default:this.croppingConstraint=parseFloat(t)}},enforceCroppingConstraint:function(){var t=this;void 0===this.enforceCroppingConstraint._&&(this.enforceCroppingConstraint._={}),!this.animationInProgress&&this.croppingConstraint&&(this.animationInProgress=!0,this.enforceCroppingConstraint._.rectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this.clipper.width>this.clipper.height*this.croppingConstraint?(this.enforceCroppingConstraint._.previousHeight=this.enforceCroppingConstraint._.rectangle.height,this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.top-=(this.enforceCroppingConstraint._.rectangle.height-this.enforceCroppingConstraint._.previousHeight)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.height=this.enforceCroppingConstraint._.rectangle.width/this.croppingConstraint)):(this.enforceCroppingConstraint._.previousWidth=this.enforceCroppingConstraint._.rectangle.width,this.enforceCroppingConstraint._.rectangle.width=this.clipper.height*this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.left-=(this.enforceCroppingConstraint._.rectangle.width-this.enforceCroppingConstraint._.previousWidth)/2,this.arePointsInsideRectangle(this._getRectangleVertices(this.enforceCroppingConstraint._.rectangle),this.imageVerticeCoords)||(this.enforceCroppingConstraint._.rectangle.height=this.clipper.width/this.croppingConstraint,this.enforceCroppingConstraint._.rectangle.width=this.enforceCroppingConstraint._.rectangle.height*this.croppingConstraint)),this.enforceCroppingConstraint._.properties={height:this.enforceCroppingConstraint._.rectangle.height,width:this.enforceCroppingConstraint._.rectangle.width},this.clipper.animate(this.enforceCroppingConstraint._.properties,{onChange:function(){t._redrawCropperElements(),t.croppingCanvas.renderAll()},duration:this.settings.animationDuration,onComplete:function(){t._redrawCropperElements(),t.animationInProgress=!1,t.renderCropper(),t.storeCropperState()}}))},_handleCropperResize:function(t){void 0===this._handleCropperResize._&&(this._handleCropperResize._={}),this._handleCropperResize._.deltaX=t.pageX-this.previousMouseX,this._handleCropperResize._.deltaY=t.pageY-this.previousMouseY,"b"!==this.scalingCropper&&"t"!==this.scalingCropper||(this._handleCropperResize._.deltaX=0),"l"!==this.scalingCropper&&"r"!==this.scalingCropper||(this._handleCropperResize._.deltaY=0),0===this._handleCropperResize._.deltaX&&0===this._handleCropperResize._.deltaY||(this._handleCropperResize._.startingRectangle={left:this.clipper.left-this.clipper.width/2,top:this.clipper.top-this.clipper.height/2,width:this.clipper.width,height:this.clipper.height},this._handleCropperResize._.rectangle=this._calculateNewCropperSizeByDeltas(this._handleCropperResize._.startingRectangle,this._handleCropperResize._.deltaX,this._handleCropperResize._.deltaY,this.scalingCropper),this._handleCropperResize._.rectangle.height<30||this._handleCropperResize._.rectangle.width<30||this.arePointsInsideRectangle(this._getRectangleVertices(this._handleCropperResize._.rectangle),this.imageVerticeCoords)&&(this.clipper.set({top:this._handleCropperResize._.rectangle.top+this._handleCropperResize._.rectangle.height/2,left:this._handleCropperResize._.rectangle.left+this._handleCropperResize._.rectangle.width/2,width:this._handleCropperResize._.rectangle.width,height:this._handleCropperResize._.rectangle.height}),this._redrawCropperElements()))},_calculateNewCropperSizeByDeltas:function(t,e,n,i){if(void 0===this._calculateNewCropperSizeByDeltas._&&(this._calculateNewCropperSizeByDeltas._={}),this._calculateNewCropperSizeByDeltas._.topDelta=0,this._calculateNewCropperSizeByDeltas._.leftDelta=0,this._calculateNewCropperSizeByDeltas._.rectangle=t,this._calculateNewCropperSizeByDeltas._.deltaX=e,this._calculateNewCropperSizeByDeltas._.deltaY=n,this.croppingConstraint){switch(this._calculateNewCropperSizeByDeltas._.change=0,i){case"t":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaY;break;case"b":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"r":this._calculateNewCropperSizeByDeltas._.change=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"l":this._calculateNewCropperSizeByDeltas._.change=-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?-this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX;break;case"br":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.change=Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY)>Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)?this._calculateNewCropperSizeByDeltas._.deltaY:-this._calculateNewCropperSizeByDeltas._.deltaX}switch(this.croppingConstraint>1?(this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this.croppingConstraint):(this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.change,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this.croppingConstraint),this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX,i){case"t":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"b":this._calculateNewCropperSizeByDeltas._.rectangle.left+=-this._calculateNewCropperSizeByDeltas._.deltaX/2;break;case"r":this._calculateNewCropperSizeByDeltas._.rectangle.top+=-this._calculateNewCropperSizeByDeltas._.deltaY/2;break;case"l":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY/2,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"tr":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY;break;case"tl":this._calculateNewCropperSizeByDeltas._.rectangle.top-=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX;break;case"bl":this._calculateNewCropperSizeByDeltas._.rectangle.left-=this._calculateNewCropperSizeByDeltas._.deltaX}}else!this.shiftKeyHeld||"tl"!==i&&"tr"!==i&&"bl"!==i&&"br"!==i||(this._calculateNewCropperSizeByDeltas._.ratio,Math.abs(e)>Math.abs(n)?(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaY=this._calculateNewCropperSizeByDeltas._.deltaX/this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaY*="tr"===i||"bl"===i?-1:1):(this._calculateNewCropperSizeByDeltas._.ratio=t.width/t.height,this._calculateNewCropperSizeByDeltas._.deltaX=this._calculateNewCropperSizeByDeltas._.deltaY*this._calculateNewCropperSizeByDeltas._.ratio,this._calculateNewCropperSizeByDeltas._.deltaX*="tr"===i||"bl"===i?-1:1)),i.match(/t/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.top+=this._calculateNewCropperSizeByDeltas._.deltaY,this._calculateNewCropperSizeByDeltas._.rectangle.height-=this._calculateNewCropperSizeByDeltas._.deltaY),i.match(/b/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.height+=this._calculateNewCropperSizeByDeltas._.deltaY),i.match(/r/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.width+=this._calculateNewCropperSizeByDeltas._.deltaX),i.match(/l/)&&(this._calculateNewCropperSizeByDeltas._.rectangle.left+=this._calculateNewCropperSizeByDeltas._.deltaX,this._calculateNewCropperSizeByDeltas._.rectangle.width-=this._calculateNewCropperSizeByDeltas._.deltaX);return this._calculateNewCropperSizeByDeltas._.rectangle.top=this._calculateNewCropperSizeByDeltas._.rectangle.top,this._calculateNewCropperSizeByDeltas._.rectangle.left=this._calculateNewCropperSizeByDeltas._.rectangle.left,this._calculateNewCropperSizeByDeltas._.rectangle.width=this._calculateNewCropperSizeByDeltas._.rectangle.width,this._calculateNewCropperSizeByDeltas._.rectangle.height=this._calculateNewCropperSizeByDeltas._.rectangle.height,this._calculateNewCropperSizeByDeltas._.rectangle},_setMouseCursor:function(t){void 0===this._setMouseCursor._&&(this._setMouseCursor._={}),Garnish.isMobileBrowser(!0)||(this._setMouseCursor._.cursor="default",this._setMouseCursor._.handle=this.croppingCanvas&&this._cropperHandleHitTest(t),this.focalPoint&&this._isMouseOver(t,this.focalPoint)?this._setMouseCursor._.cursor="pointer":this._setMouseCursor._.handle?"t"===this._setMouseCursor._.handle||"b"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ns-resize":"l"===this._setMouseCursor._.handle||"r"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="ew-resize":"tl"===this._setMouseCursor._.handle||"br"===this._setMouseCursor._.handle?this._setMouseCursor._.cursor="nwse-resize":"bl"!==this._setMouseCursor._.handle&&"tr"!==this._setMouseCursor._.handle||(this._setMouseCursor._.cursor="nesw-resize"):this.croppingCanvas&&this._isMouseOver(t,this.clipper)&&(this._setMouseCursor._.cursor="move"),$(".body").css("cursor",this._setMouseCursor._.cursor))},_cropperHandleHitTest:function(t){if(void 0===this._cropperHandleHitTest._&&(this._cropperHandleHitTest._={}),this._cropperHandleHitTest._.parentOffset=this.$croppingCanvas.offset(),this._cropperHandleHitTest._.mouseX=t.pageX-this._cropperHandleHitTest._.parentOffset.left,this._cropperHandleHitTest._.mouseY=t.pageY-this._cropperHandleHitTest._.parentOffset.top,this._cropperHandleHitTest._.lb=this.clipper.left-this.clipper.width/2,this._cropperHandleHitTest._.rb=this._cropperHandleHitTest._.lb+this.clipper.width,this._cropperHandleHitTest._.tb=this.clipper.top-this.clipper.height/2,this._cropperHandleHitTest._.bb=this._cropperHandleHitTest._.tb+this.clipper.height,this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb-3){if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-3)return"tl";if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+3&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-10)return"bl"}if(this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.rb-13&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb+3){if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-3)return"tr";if(this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+2&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-10)return"br"}return this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.lb+3&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb-3&&this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb-10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb+10?"l":this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb+1&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.rb-5&&this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb-10&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb+10?"r":this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.tb+4&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.tb-2&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb-10?"t":this._cropperHandleHitTest._.mouseY<this._cropperHandleHitTest._.bb+2&&this._cropperHandleHitTest._.mouseY>this._cropperHandleHitTest._.bb-4&&this._cropperHandleHitTest._.mouseX>this._cropperHandleHitTest._.lb+10&&this._cropperHandleHitTest._.mouseX<this._cropperHandleHitTest._.rb-10&&"b"},_isMouseOver:function(t,e){return void 0===this._isMouseOver._&&(this._isMouseOver._={}),this._isMouseOver._.parentOffset=this.$croppingCanvas.offset(),this._isMouseOver._.mouseX=t.pageX-this._isMouseOver._.parentOffset.left,this._isMouseOver._.mouseY=t.pageY-this._isMouseOver._.parentOffset.top,this._isMouseOver._.lb=e.left-e.width/2,this._isMouseOver._.rb=this._isMouseOver._.lb+e.width,this._isMouseOver._.tb=e.top-e.height/2,this._isMouseOver._.bb=this._isMouseOver._.tb+e.height,this._isMouseOver._.mouseX>=this._isMouseOver._.lb&&this._isMouseOver._.mouseX<=this._isMouseOver._.rb&&this._isMouseOver._.mouseY>=this._isMouseOver._.tb&&this._isMouseOver._.mouseY<=this._isMouseOver._.bb},_getRectangleVertices:function(t,e,n){return void 0===this._getRectangleVertices._&&(this._getRectangleVertices._={}),void 0===e&&(e=0),void 0===n&&(n=0),this._getRectangleVertices._.topLeft={x:t.left+e,y:t.top+n},this._getRectangleVertices._.topRight={x:this._getRectangleVertices._.topLeft.x+t.width,y:this._getRectangleVertices._.topLeft.y},this._getRectangleVertices._.bottomRight={x:this._getRectangleVertices._.topRight.x,y:this._getRectangleVertices._.topRight.y+t.height},this._getRectangleVertices._.bottomLeft={x:this._getRectangleVertices._.topLeft.x,y:this._getRectangleVertices._.bottomRight.y},[this._getRectangleVertices._.topLeft,this._getRectangleVertices._.topRight,this._getRectangleVertices._.bottomRight,this._getRectangleVertices._.bottomLeft]},_setFittedImageVerticeCoordinates:function(){this.imageVerticeCoords=this.getImageVerticeCoords("fit")},getImageVerticeCoords:function(t){var e,n=-1*((this.hasOrientationChanged()?90:0)+this.imageStraightenAngle)*(Math.PI/180),i=this.getScaledImageDimensions();e="number"==typeof t?t:"cover"===t?this.getZoomToCoverRatio(i):this.getZoomToFitRatio(i);var r=i.height*e,a=i.width*e,s=Math.cos(n)*r,o=Math.sin(n)*a,l=Math.cos(n)*a,c=Math.sin(n)*r,h=(this.editorHeight-(s+o))/2,u=(this.editorWidth-(c+l))/2;return{a:{x:u+l,y:h},b:{x:this.editorWidth-u,y:h+s},c:{x:u+c,y:this.editorHeight-h},d:{x:u,y:h+o}}},_debug:function(t){this.canvas.remove(this.debugger),this.debugger=t,this.canvas.add(this.debugger)},arePointsInsideRectangle:function(t,e){for(void 0===this.arePointsInsideRectangle._&&(this.arePointsInsideRectangle._={}),this.arePointsInsideRectangle._.ab=this._getVector(e.a,e.b),this.arePointsInsideRectangle._.bc=this._getVector(e.b,e.c),this.arePointsInsideRectangle._.scalarAbAb=this._getScalarProduct(this.arePointsInsideRectangle._.ab,this.arePointsInsideRectangle._.ab),this.arePointsInsideRectangle._.scalarBcBc=this._getScalarProduct(this.arePointsInsideRectangle._.bc,this.arePointsInsideRectangle._.bc),this.arePointsInsideRectangle._.i=0;this.arePointsInsideRectangle._.i<t.length;this.arePointsInsideRectangle._.i++)if(this.arePointsInsideRectangle._.point=t[this.arePointsInsideRectangle._.i],this.arePointsInsideRectangle._.ap=this._getVector(e.a,this.arePointsInsideRectangle._.point),this.arePointsInsideRectangle._.bp=this._getVector(e.b,this.arePointsInsideRectangle._.point),this.arePointsInsideRectangle._.scalarAbAp=this._getScalarProduct(this.arePointsInsideRectangle._.ab,this.arePointsInsideRectangle._.ap),this.arePointsInsideRectangle._.scalarBcBp=this._getScalarProduct(this.arePointsInsideRectangle._.bc,this.arePointsInsideRectangle._.bp),this.arePointsInsideRectangle._.projectsOnAB=0<=this.arePointsInsideRectangle._.scalarAbAp&&this.arePointsInsideRectangle._.scalarAbAp<=this.arePointsInsideRectangle._.scalarAbAb,this.arePointsInsideRectangle._.projectsOnBC=0<=this.arePointsInsideRectangle._.scalarBcBp&&this.arePointsInsideRectangle._.scalarBcBp<=this.arePointsInsideRectangle._.scalarBcBc,!this.arePointsInsideRectangle._.projectsOnAB||!this.arePointsInsideRectangle._.projectsOnBC)return!1;return!0},_getVector:function(t,e){return{x:e.x-t.x,y:e.y-t.y}},_getScalarProduct:function(t,e){return t.x*e.x+t.y*e.y},_getVectorMagnitude:function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},_getAngleBetweenVectors:function(t,e){return Math.round(180*Math.acos(Math.min(1,this._getScalarProduct(t,e)/(this._getVectorMagnitude(t)*this._getVectorMagnitude(e))))/Math.PI*100)/100},_getEdgeCrossed:function(t,e){for(var n=[[t.a,t.b],[t.b,t.c],[t.c,t.d],[t.d,t.a]],i={x:this.editorWidth/2,y:this.editorHeight/2},r=180,a=null,s=0;s<n.length;s++){var o=n[s],l=this._getVector(o[0],i),c=this._getVector(o[0],o[1]),h=this._getVector(o[0],e),u=Math.abs(this._getAngleBetweenVectors(l,h)-(this._getAngleBetweenVectors(l,c)+this._getAngleBetweenVectors(c,h)));u<r&&(r=u,a=o)}return a},_getImageBoundingBox:function(t){var e={},n=Math.abs(this.imageStraightenAngle)*(Math.PI/180),i=t.height/t.width;if(e.height=t.width*(Math.sin(n)+Math.cos(n)*i),e.width=t.width*(Math.cos(n)+Math.sin(n)*i),this.hasOrientationChanged()){var r=e.width;e.width=e.height,e.height=r}return e}},{defaults:{animationDuration:100,allowSavingAsNew:!0,onSave:$.noop,allowDegreeFractions:null}})},2495:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(){"use strict";n=function(){return i};var e,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},i}function i(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function r(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var s=t.apply(e,n);function o(t){i(s,r,a,o,l,"next",t)}function l(t){i(s,r,a,o,l,"throw",t)}o(void 0)}))}}function a(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}var s,o;Craft.AssetIndex=Craft.BaseElementIndex.extend({$includeSubfoldersContainer:null,$includeSubfoldersCheckbox:null,showingIncludeSubfoldersCheckbox:!1,$uploadButton:null,$uploadInput:null,$progressBar:null,uploader:null,promptHandler:null,progressBar:null,currentFolderId:null,$listedFolders:null,itemDrag:null,_uploadTotalFiles:0,_uploadFileProgress:{},_currentUploaderSettings:{},_includeSubfolders:null,init:function(t,e,n){var i=this;if(n=Object.assign({},Craft.AssetIndex.defaults,n),this.setSettings(n,Craft.BaseElementIndex.defaults),"index"===this.settings.context){var r=Craft.getQueryParams();void 0!==r.includeSubfolders&&(this._includeSubfolders=!!parseInt(r.includeSubfolders))}this.base(t,e,this.settings),"index"===this.settings.context?(this.itemDrag=new Garnish.DragDrop(a(a(a(a(a(a(a({activeDropTargetClass:"sel",minMouseDist:10,hideDraggee:!1,moveHelperToCursor:!0},"activeDropTargetClass","active-drop-target"),"handle",(function(t){return $(t).closest("tr,li")})),"filter",(function(){var t=i.itemDrag.$targetItem.closest("tr,li");return i.view.elementSelect.selectItem(t),i._findDraggableItems(i.view.getSelectedElements())})),"helper",(function(t,e){return $('<div class="offset-drag-helper"/>').append(t).css({opacity:Math.max(.9-.05*e,0),width:"",height:""})})),"dropTargets",(function(){var t=$(i.$visibleSources.toArray().filter((function(t){return Garnish.hasAttr(t,"data-folder-id")&&Garnish.hasAttr(t,"data-can-move-peer-files-to")})));if(i.sourcePath.length<=1)t=t.not(i.$source);else for(var e=0;e<i.sourcePath.length-1;e++){var n=i.sourcePath[e];n.folderId&&(t=t.add(n.$btn))}return i.$listedFolders&&(t=t.add(i.$listedFolders.filter("[data-folder-id]").closest("tr,li")).not(i.view.getSelectedElements())),t})),"onDragStart",(function(){Garnish.$bod.addClass("dragging"),i.itemDrag.$draggee.closest("tr,li").addClass("draggee")})),"onDragStop",(function(){Garnish.$bod.removeClass("dragging");var t=i.itemDrag.$draggee,e=i._targetFolderId(i.itemDrag.$activeDropTarget);if(!e)return t.closest("tr,li").removeClass("draggee"),void i.itemDrag.returnHelpersToDraggees();i.itemDrag.fadeOutHelpers();var n=t.filter("[data-is-folder]"),r=t.not(n),a=n.toArray().map((function(t){return parseInt($(t).data("folder-id"))})),s=r.toArray().map((function(t){return parseInt($(t).data("id"))})),o=new Craft.AssetMover;o.moveFolders(a,e).then((function(n){o.moveAssets(s,e).then((function(e){var i=n+e;i?(Craft.cp.displayNotice(Craft.t("app","{totalItems, plural, =1{Item} other{Items}} moved.",{totalItems:i})),Craft.elementIndex.updateElements(!0)):t.closest("tr,li").removeClass("draggee")}))}))}))),this.addListener(Garnish.$win,"resize,scroll","_positionProgressBar")):(this.addListener(this.$main,"scroll","_positionProgressBar"),this.settings.modal&&this.settings.modal.on("updateSizeAndPosition",this._positionProgressBar.bind(this)))},_findDraggableItems:function(t){return $(t.toArray().map((function(t){return $(t).find(".element:first")[0]})).filter((function(t){return t&&Garnish.hasAttr(t,"data-movable")})))},_targetFolderId:function(t){if(!t||!t.length)return!1;if(t.is(this.$visibleSources))return t.data("folder-id");for(var e=0;e<this.sourcePath.length-1;e++){var n=this.sourcePath[e];if(t.is(n.$btn))return n.folderId}return t.find(".element:first").data("folder-id")||!1},afterInit:function(){this.settings.foldersOnly||this.initForFiles(),this.base()},initForFiles:function(){this.promptHandler=new Craft.PromptHandler,this.progressBar=new Craft.ProgressBar(this.$main,!1)},createUploadInputs:function(){var t,e,n=this;null===(t=this.$uploadButton)||void 0===t||t.remove(),null===(e=this.$uploadInput)||void 0===e||e.remove(),this.$uploadButton=$("<button/>",{type:"button",class:"btn submit","data-icon":"upload",style:"position: relative; overflow: hidden;","aria-label":Craft.t("app","Upload files"),text:Craft.t("app","Upload files")}),this.addButton(this.$uploadButton),this.$uploadInput=$('<input type="file" multiple="multiple" name="assets-upload" />').hide().insertBefore(this.$uploadButton),this.$uploadButton.on("click",(function(){n.$uploadButton.hasClass("disabled")||n.isIndexBusy||n.$uploadButton.parent().find("input[name=assets-upload]").trigger("click")}))},onSelectSource:function(){if(!this.settings.foldersOnly){this.currentFolderId=this.currentFolderId||this.$source.data("folder-id");var t=this.$source.data("fs-type");if(this.createUploadInputs(),this.currentFolderId&&Garnish.hasAttr(this.$source,"data-can-upload")){var e,n;null===(e=this.uploader)||void 0===e||e.destroy(),this.$uploadButton.removeClass("disabled");var i={fileInput:this.$uploadInput,dropZone:this.$container,events:{fileuploadstart:this._onUploadStart.bind(this),fileuploadprogressall:this._onUploadProgress.bind(this),fileuploaddone:this._onUploadSuccess.bind(this),fileuploadalways:this._onUploadAlways.bind(this),fileuploadfail:this._onUploadFailure.bind(this)}};null!==(n=this.settings)&&void 0!==n&&null!==(n=n.criteria)&&void 0!==n&&n.kind&&(i.allowedKinds=this.settings.criteria.kind),this._currentUploaderSettings=i,this.uploader=Craft.createUploader(t,this.$uploadButton,i),this.uploader.setParams({folderId:this.currentFolderId})}else this.$uploadButton.addClass("disabled")}this.base()},onSourcePathChange:function(){var t=this.sourcePath.length?this.sourcePath[this.sourcePath.length-1]:null;if(this.currentFolderId=null==t?void 0:t.folderId,!this.settings.foldersOnly&&this.currentFolderId){var e;null===(e=this.uploader)||void 0===e||e.setParams({folderId:this.currentFolderId});var n="index"===this.context&&!!t.canMoveSubItems;this.settings.selectable=this.settings.selectable||n,this.settings.multiSelect=this.settings.multiSelect||n}this.base()},startSearching:function(){if(!this.settings.hideSidebar&&this.sourcePath.length&&this.sourcePath[this.sourcePath.length-1].hasChildren){if(null===this.$includeSubfoldersContainer){var t="includeSubfolders-"+Math.floor(1e9*Math.random());this.$includeSubfoldersContainer=$('<div style="margin-bottom: -25px; opacity: 0;"/>').insertAfter(this.$search);var e=$('<div style="padding-top: 5px;"/>').appendTo(this.$includeSubfoldersContainer);this.$includeSubfoldersCheckbox=$('<input type="checkbox" id="'+t+'" class="checkbox"/>').appendTo(e),$('<label class="light smalltext" for="'+t+'"/>').text(" "+Craft.t("app","Search in subfolders")).appendTo(e),this.addListener(this.$includeSubfoldersCheckbox,"change",(function(){this.setSelecetedSourceState("includeSubfolders",this.$includeSubfoldersCheckbox.prop("checked")),this.updateElements()}))}else this.$includeSubfoldersContainer.velocity("stop").removeClass("hidden");var n;null!==this._includeSubfolders?(n=this._includeSubfolders,this._includeSubfolders=null):n=this.getSelectedSourceState("includeSubfolders",!1),this.$includeSubfoldersCheckbox.prop("checked",n),this.$includeSubfoldersContainer.velocity({marginBottom:0,opacity:1},"fast"),this.showingIncludeSubfoldersCheckbox=!0}this.base()},stopSearching:function(){var t=this;this.showingIncludeSubfoldersCheckbox&&(this.$includeSubfoldersContainer.velocity("stop"),this.$includeSubfoldersContainer.velocity({marginBottom:-25,opacity:0},{duration:"fast",complete:function(){t.$includeSubfoldersContainer.addClass("hidden")}}),this.showingIncludeSubfoldersCheckbox=!1),this.base()},getViewSettings:function(){var t={};return"index"===this.settings.context&&(t.canSelectElement=function(){return!0}),t},getViewParams:function(){var t=Object.assign(this.base(),{showFolders:this.settings.showFolders&&!this.trashed,foldersOnly:this.settings.foldersOnly});return this.showingIncludeSubfoldersCheckbox&&this.$includeSubfoldersCheckbox.prop("checked")&&(t.criteria.includeSubfolders=!0),t},_onUploadStart:function(){this.setIndexBusy(),this._positionProgressBar(),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar(),this.promptHandler.resetPrompts()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e=t instanceof CustomEvent?t.detail:e;var n=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(n)},_onUploadSuccess:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=t instanceof CustomEvent?t.detail:e.result;this.selectElementAfterUpdate(n.assetId),n.conflict&&(n.prompt={message:Craft.t("app",n.conflict,{file:n.filename}),choices:[{value:"keepBoth",title:Craft.t("app","Keep both")},{value:"replace",title:Craft.t("app","Replace it")}],modalSettings:{hideOnEsc:!1,hideOnShadeClick:!1}},this.promptHandler.addPrompt(n)),Craft.cp.runQueue()},_onUploadAlways:function(){this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.setIndexAvailable(),this.promptHandler.getPromptCount()?this.promptHandler.showBatchPrompts(this._uploadFollowup.bind(this)):this._updateAfterUpload())},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=(t instanceof CustomEvent?t.detail:null==i||null===(e=i.jqXHR)||void 0===e?void 0:e.responseJSON)||{},a=r.message,s=r.filename,o=r.errors;s=s||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var l=o?Object.values(o).flat():[];a||(a=l.length?l.join("\n"):s?Craft.t("app","Upload failed for “{filename}”.",{filename:s}):Craft.t("app","Upload failed.")),Craft.cp.displayError(a)},_updateAfterUpload:function(){"index"!==this.settings.context&&(this.clearSearch(),this.setSelectedSortAttribute("dateCreated","desc")),this.updateElements()},_uploadFollowup:function(t){var e=this;this.setIndexBusy(),this.progressBar.resetProgressBar(),this.promptHandler.resetPrompts(),this.progressBar.setItemCount(t.length),this.progressBar.showProgressBar(),function t(n,i,r){var a={},s=null,o=e.uploader.settings,l=o.replaceAction,c=o.deleteAction,h=function(){i++,e.progressBar.incrementProcessedItemCount(1),e.progressBar.updateProgressBar(),i===n.length?r():t(n,i,r)},u=function(t){t.assetId&&e.selectElementAfterUpdate(t.assetId),h()};"replace"===n[i].choice?(s=l,a.sourceAssetId=n[i].assetId,n[i].conflictingAssetId?a.assetId=n[i].conflictingAssetId:a.targetFilename=n[i].filename):"cancel"===n[i].choice&&(s=c,a.assetId=n[i].assetId),s?Craft.sendActionRequest("POST",s,{data:a}).then((function(t){return u(t.data)})).catch((function(t){return function(t){Craft.cp.displayError(t.message),h()}(t.response.data)})):u({assetId:n[i].assetId})}(t,0,(function(){e.progressBar.hideProgressBar(),e.setIndexAvailable(),e._updateAfterUpload()}))},onUpdateElements:function(){var t=this;this._onUpdateElements(!1,this.view.getAllElements()),this.view.on("appendElements",(function(e){t._onUpdateElements(!0,e.newElements)})),this.base()},_onUpdateElements:function(t,e){var n=this;this.removeListener(this.$elements,"keydown"),this.addListener(this.$elements,"keydown",this._onKeyDown.bind(this)),this.view.elementSelect&&this.view.elementSelect.on("focusItem",this._onElementFocus.bind(this)),this.$listedFolders=e.find(".element[data-is-folder][data-folder-name]");for(var i=function(){var t=n.$listedFolders.eq(r),i=t.find(".label"),a=i.find(".label-link"),s=parseInt(t.data("folder-id")),o=t.data("folder-name"),l=Craft.t("app","{name} folder",{name:o});if(n.settings.disabledFolderIds.includes(s))return i.attr("aria-label",l),e.has(t).addClass("disabled"),1;var c=t.data("source-path");c&&(a.attr({href:Craft.getCpUrl(c[c.length-1].uri),role:"button","aria-label":l}),n.addListener(a,"activate",(function(t){n.sourcePath=c,n.clearSearch(!1),n.updateElements().then((function(){var t=n.$elements.find(":focusable:not(.selectallcontainer)")[0];t&&t.focus()}))})))},r=0;r<this.$listedFolders.length;r++)i();if(this.itemDrag){var a=this.sourcePath[this.sourcePath.length-1],s=!!(a&&a.folderId&&a.canMoveSubItems);s&&t||this.itemDrag.removeAllItems(),s&&this.itemDrag.addItems(this._findDraggableItems(e))}},_onKeyDown:function(t){if(t.keyCode===Garnish.SPACE_KEY&&t.shiftKey){if(Craft.PreviewFileModal.openInstance)Craft.PreviewFileModal.openInstance.selfDestruct();else if(this.view.elementSelect){var e=this.view.elementSelect.$focusedItem.find(".element");e.length&&this._loadPreview(e)}return t.stopPropagation(),!1}},_onElementFocus:function(t){var e=$(t.item).find(".element");Craft.PreviewFileModal.openInstance&&e.length&&this._loadPreview(e)},_loadPreview:function(t){var e={};t.data("image-width")&&(e.startingWidth=t.data("image-width"),e.startingHeight=t.data("image-height")),new Craft.PreviewFileModal(t.data("id"),this.view.elementSelect,e)},getSourcePathLabel:function(){return Craft.t("app","Volume path")},getSourcePathActionLabel:function(){return Craft.t("app","Folder actions")},getSourcePathActions:function(){var t=this,e=[],n=this.sourcePath[this.sourcePath.length-1];return n.canCreate&&e.push({label:Craft.t("app","New subfolder"),onSelect:function(){t._createSubfolder()}}),"index"===this.settings.context&&n.canRename&&(e.push({label:Craft.t("app","Rename folder"),onSelect:function(){t._renameFolder()}}),n.canMove&&this.getMoveTargetSourceKeys(!0).length&&e.push({label:Craft.t("app","Move folder"),onSelect:function(){t._moveFolder()}}),n.canDelete&&e.push({label:Craft.t("app","Delete folder"),destructive:!0,onSelect:function(){t.deleteCurrentFolder()}})),e},_createSubfolder:function(){var t=this,e=this.sourcePath[this.sourcePath.length-1],n=prompt(Craft.t("app","Enter the name of the folder"));if(n){var i={parentId:e.folderId,folderName:n};this.setIndexBusy(),Craft.sendActionRequest("POST","assets/create-folder",{data:i}).then((function(e){t.setIndexAvailable(),Craft.cp.displayNotice(Craft.t("app","Folder created.")),t.updateElements(!0)})).catch((function(e){var n=e.response;t.setIndexAvailable(),Craft.cp.displayError(n.data.message)}))}},deleteCurrentFolder:(o=r(n().mark((function t(){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.deleteFolder(this.sourcePath[this.sourcePath.length-1]);case 2:if(!t.sent){t.next=5;break}this.sourcePath=this.sourcePath.slice(0,this.sourcePath.length-1),this.updateElements();case 5:case"end":return t.stop()}}),t,this)}))),function(){return o.apply(this,arguments)}),deleteFolder:(s=r(n().mark((function t(e){var i;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(confirm(Craft.t("app","Really delete folder “{folder}”?",{folder:e.label}))){t.next=2;break}return t.abrupt("return",!1);case 2:return this.setIndexBusy(),t.prev=3,t.next=6,Craft.sendActionRequest("POST","assets/delete-folder",{data:{folderId:e.folderId}});case 6:t.next=12;break;case 8:return t.prev=8,t.t0=t.catch(3),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(i=t.t0.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.message),t.abrupt("return",!1);case 12:return t.prev=12,this.setIndexAvailable(),t.finish(12);case 15:return Craft.cp.displayNotice(Craft.t("app","Folder deleted.")),t.abrupt("return",!0);case 17:case"end":return t.stop()}}),t,this,[[3,8,12,15]])}))),function(t){return s.apply(this,arguments)}),_renameFolder:function(){var t=this,e=this.sourcePath[this.sourcePath.length-1],n=prompt(Craft.t("app","Rename folder"),e.label);n&&n!==e.label&&(this.setIndexBusy(),Craft.sendActionRequest("POST","assets/rename-folder",{data:{folderId:e.folderId,newName:n}}).then((function(e){Craft.cp.displayNotice(Craft.t("app","Folder renamed."));var n=t.sourcePath.slice();n[n.length-1].label=e.data.newName,n[n.length-1].uri=n[n.length-2].uri+"/".concat(e.data.newName),t.sourcePath=n})).catch((function(t){var e=t.response;Craft.cp.displayError(e.data.message)})).finally((function(){t.setIndexAvailable()})))},getMoveTargetSourceKeys:function(t){var e=t?"data-can-move-peer-files-to":"data-can-move-to";return this.$sources.toArray().filter((function(t){var n=$(t).data("volume-handle");return n&&"temp"!==n&&Garnish.hasAttr(t,e)})).map((function(t){return $(t).data("key")}))},_moveFolder:function(){var t=this,n=this.sourcePath[this.sourcePath.length-1],i=this.sourcePath[this.sourcePath.length-2],r=[n.folderId];i&&r.push(i.folderId),new Craft.VolumeFolderSelectorModal({sources:this.getMoveTargetSourceKeys(!0),showTitle:!0,modalTitle:Craft.t("app","Move to"),selectBtnLabel:Craft.t("app","Move"),disabledFolderIds:r,indexSettings:{defaultSource:this.sourceKey,defaultSourcePath:this.sourcePath.slice(0,this.sourcePath.length-1)},onSelect:function(i){var r,a,s=(r=i,a=1,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(r,a)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];t.$sourcePathActionsBtn.focus(),(new Craft.AssetMover).moveFolders([n.folderId],s.folderId).then((function(e){e&&(Craft.cp.displayNotice(Craft.t("app","{totalItems, plural, =1{Item} other{Items}} moved.",{totalItems:e})),t.sourcePath=t.sourcePath.slice(0,t.sourcePath.length-1),t.clearSearch(!1),t.updateElements())}))}})},_positionProgressBar:function(){this.progressBar||(this.progressBar=new Craft.ProgressBar(this.$main,!0));var t=$(),e=0,n=0;"index"===this.settings.context?(t=this.progressBar.$progressBar.closest("#content"),e=Garnish.$win.scrollTop()):(t=this.progressBar.$progressBar.closest(".main"),e=this.$main.scrollTop());var i=e-t.offset().top,r=Garnish.$win.height();n=t.height()>r?r/2-6+i:t.height()/2-6,"index"!==this.settings.context&&(n=e+(t.height()/2-6)),this.progressBar.$progressBar.css({top:n})}},{defaults:{showFolders:!0,foldersOnly:!1,disabledFolderIds:[]}}),Craft.registerElementIndexClass("craft\\elements\\Asset",Craft.AssetIndex)},1016:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=e(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.AssetMover=Garnish.Base.extend({moveAssets:function(t,e){var n=t.map((function(t){return{for:"asset",action:"assets/move-asset",params:{assetId:t,folderId:e}}}));return this._batchMoveRequests(n,{conflictChoices:[{value:"keepBoth",title:Craft.t("app","Keep both")},{value:"replace",title:Craft.t("app","Replace it")}],handleConflictChoice:function(t){var e={folderId:t.request.params.folderId,assetId:t.assetId};switch(t.choice){case"replace":e.force=!0;break;case"keepBoth":e.filename=t.suggestedFilename}return{action:"assets/move-asset",params:e}}})},moveFolders:function(t,i){var r=this;return new Promise((function(a,s){var o=[],l=[],c=t.map((function(t){return{for:"folder",action:"assets/move-folder",params:{folderId:t,parentId:i},onSuccess:function(i){var r;i.transferList.length&&o.push.apply(o,function(t){if(Array.isArray(t))return n(t)}(r=i.transferList)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||e(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l.push(t)}}}));r._batchMoveRequests(c,{conflictChoices:[{value:"replace",title:Craft.t("app","Replace the folder (all existing files will be deleted)")},{value:"merge",title:Craft.t("app","Merge the folder (any conflicting files will be replaced)")}],handleConflictChoice:function(t){var e={folderId:t.folderId,parentId:t.parentId};switch(t.choice){case"replace":e.force=!0;break;case"merge":e.merge=!0}return{action:"assets/move-folder",params:e}}}).then((function(t){r._processTransferList(o).then((function(){r._deleteFolders(l).then((function(){a(t)}))}))})).catch(s)}))},_processTransferList:function(t){return this._batchRequests(t.map((function(t){return{action:"assets/move-asset",params:t}})))},_deleteFolders:function(t){return this._batchRequests(t.map((function(t){return{action:"assets/delete-folder",params:{folderId:t}}})))},_batchMoveRequests:function(e,n){var i=this;return new Promise((function(r){var a=0;i._batchRequests(e).then((function(e){Craft.elementIndex.promptHandler.resetPrompts();var s,o=t(e);try{for(o.s();!(s=o.n()).done;){var l=s.value;l.success&&a++,l.conflict&&Craft.elementIndex.promptHandler.addPrompt(Object.assign({},l,{prompt:{message:l.conflict,choices:n.conflictChoices}})),l.error&&Craft.cp.displayError(l.error)}}catch(t){o.e(t)}finally{o.f()}Craft.elementIndex.promptHandler.getPromptCount()?Craft.elementIndex.promptHandler.showBatchPrompts((function(e){Craft.elementIndex.promptHandler.resetPrompts();var s,o=[],l=t(e);try{for(l.s();!(s=l.n()).done;){var c=s.value;if("cancel"!==c.choice&&n.handleConflictChoice){var h=n.handleConflictChoice(c);c.request&&c.request.onSuccess&&(h.onSuccess=c.request.onSuccess),o.push(h)}}}catch(t){l.e(t)}finally{l.f()}i._batchMoveRequests(o,n).then((function(t){r(a+t)}))})):r(a)}))}))},_batchRequests:function(e){return new Promise((function(n){if(e.length){Craft.elementIndex.setIndexBusy(),Craft.elementIndex._positionProgressBar(),Craft.elementIndex.progressBar.resetProgressBar(),Craft.elementIndex.progressBar.setItemCount(e.length),Craft.elementIndex.progressBar.showProgressBar();var i,r=[],a=e.length,s=t(e);try{var o=function(){var t=i.value;Craft.sendActionRequest("POST",t.action,{data:t.params}).then((function(e){r.push(Object.assign({success:!0},e.data,{request:t})),t.onSuccess&&t.onSuccess(e.data)})).catch((function(e){e.response&&e.response.data&&r.push(Object.assign({success:!1},e.response.data,{request:t}))})).finally((function(){0==--a?(Craft.elementIndex.setIndexAvailable(),Craft.elementIndex.progressBar.hideProgressBar(),Craft.cp.runQueue(),n(r)):(Craft.elementIndex.progressBar.incrementProcessedItemCount(1),Craft.elementIndex.progressBar.updateProgressBar())}))};for(s.s();!(i=s.n()).done;)o()}catch(t){s.e(t)}finally{s.f()}}else n([])}))}})},5077:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.AssetSelectInput=Craft.BaseElementSelectInput.extend({$uploadBtn:null,uploader:null,progressBar:null,openPreviewTimeout:null,init:function(){this.base.apply(this,arguments),this.settings.canUpload&&this._attachUploader(),this.updateAddElementsBtn(),this.addListener(this.$elementsContainer,"keydown",this._onKeyDown.bind(this)),this.elementSelect.on("focusItem",this._onElementFocus.bind(this))},elementSelectSettings:function(){return Object.assign(this.base(),{makeFocusable:!0})},_onKeyDown:function(t){if(t.keyCode===Garnish.SPACE_KEY&&t.shiftKey)return this.openPreview(),t.stopPropagation(),!1},clearOpenPreviewTimeout:function(){this.openPreviewTimeout&&(clearTimeout(this.openPreviewTimeout),this.openPreviewTimeout=null)},openPreview:function(t){Craft.PreviewFileModal.openInstance?Craft.PreviewFileModal.openInstance.selfDestruct():(t||(t=this.$elements.filter(":focus").add(this.$elements.has(":focus"))),t.length&&this._loadPreview(t))},_onElementFocus:function(t){var e=$(t.item);Craft.PreviewFileModal.openInstance&&e.length&&this._loadPreview(e)},_loadPreview:function(t){var e={minGutter:50};t.data("image-width")&&(e.startingWidth=t.data("image-width"),e.startingHeight=t.data("image-height")),new Craft.PreviewFileModal(t.data("id"),this.elementSelect,e)},_attachUploader:function(){var t=this;this.progressBar=new Craft.ProgressBar($('<div class="progress-shade"></div>').appendTo(this.$container)),this.$addElementBtn&&(this.$uploadBtn=$("<button/>",{type:"button",class:"btn dashed","data-icon":"upload","aria-label":1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files"),"aria-describedby":this.settings.describedBy,text:1==this.settings.limit?Craft.t("app","Upload a file"):Craft.t("app","Upload files")}).insertAfter(this.$addElementBtn),this.$fileInput=$("<input/>",{type:"file",class:"hidden",multiple:1!=this.settings.limit}).insertAfter(this.$uploadBtn),Garnish.$win.trigger("resize"));var e={dropZone:this.$container,fileInput:this.$fileInput};void 0!==this.settings.criteria.kind&&(e.allowedKinds=this.settings.criteria.kind),e.canAddMoreFiles=this.canAddMoreFiles.bind(this),e.events={},e.events.fileuploadstart=this._onUploadStart.bind(this),e.events.fileuploadprogressall=this._onUploadProgress.bind(this),e.events.fileuploaddone=this._onUploadComplete.bind(this),e.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(this.settings.fsType,this.$container,e);var n={fieldId:this.settings.fieldId};this.settings.sourceElementId&&(n.elementId=this.settings.sourceElementId),this.settings.criteria.siteId&&(n.siteId=this.settings.criteria.siteId),this.uploader.setParams(n),this.$uploadBtn&&this.$uploadBtn.on("click",(function(e){t.$uploadBtn.next("input[type=file]").trigger("click")}))},enableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.removeClass("hidden"),this.base()},disableAddElementsBtn:function(){this.$uploadBtn&&this.$uploadBtn.addClass("hidden"),this.base()},selectUploadedFile:function(t){if(this.canAddMoreElements()){var e=t.$element;e.appendTo(this.$elementsContainer);var n=-(e.outerWidth()+10);this.$addElementBtn.css("margin-"+Craft.left,n+"px");var i={};i["margin-"+Craft.left]=0,this.$addElementBtn.velocity(i,"fast"),this.addElements(e),delete this.modal}},_onUploadStart:function(){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;e=t instanceof CustomEvent?t.detail:e;var n=parseInt(100*Math.min(e.loaded/e.total,1),10);this.progressBar.setProgressPercentage(n)},_onUploadComplete:function(t){var i=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,a=t instanceof CustomEvent?t.detail:r.result;Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:"craft\\elements\\Asset",id:a.assetId,siteId:this.settings.criteria.siteId,instances:[{context:"field",ui:["list","large"].includes(this.settings.viewMode)?"chip":"card",size:"large"===this.settings.viewMode?"large":"small"}]}]}}).then(function(){var t,r=(t=e().mark((function t(n){var r,s;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=n.data,s=Craft.getElementInfo(r.elements[a.assetId][0]),i.selectElements([s]),t.next=5,Craft.appendHeadHtml(r.headHtml);case 5:return t.next=7,Craft.appendBodyHtml(r.bodyHtml);case 7:i.uploader.isLastUpload()&&(i.progressBar.hideProgressBar(),i.$container.removeClass("uploading"),i.$container.trigger("change"));case 8:case"end":return t.stop()}}),t)})),function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}()).catch((function(t){if(!t||!t.response)throw Craft.cp.displayError(),t;Craft.cp.displayError(response.data.message)})),Craft.cp.runQueue()},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=(t instanceof CustomEvent?t.detail:null==i||null===(e=i.jqXHR)||void 0===e?void 0:e.responseJSON)||{},a=r.message,s=r.filename,o=r.errors;s=s||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var l=o?Object.values(o).flat():[];a||(a=l.length?l.join("\n"):s?Craft.t("app","Upload failed for “{filename}”.",{filename:s}):Craft.t("app","Upload failed.")),Craft.cp.displayError(a),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")},canAddMoreFiles:function(t){return!this.settings.limit||this.$elements.length+t<this.settings.limit}})},4606:function(){Craft.AssetSelectorModal=Craft.BaseElementSelectorModal.extend({$selectTransformBtn:null,_selectedTransform:null,init:function(t,e){e=$.extend({},Craft.AssetSelectorModal.defaults,e),this.base(t,e),e.transforms.length&&this.createSelectTransformButton(e.transforms)},createSelectTransformButton:function(t){if(t&&t.length){var e=$('<div class="btngroup"/>').appendTo(this.$primaryButtons);this.$selectBtn.appendTo(e),this.$selectTransformBtn=$("<button/>",{type:"button",class:"btn menubtn disabled",text:Craft.t("app","Select transform")}).appendTo(e);for(var n=$('<div class="menu" data-align="right"></div>').insertAfter(this.$selectTransformBtn),i=$("<ul></ul>").appendTo(n),r=0;r<t.length;r++)$('<li><a data-transform="'+t[r].handle+'">'+t[r].name+"</a></li>").appendTo(i);var a=new Garnish.MenuBtn(this.$selectTransformBtn,{onOptionSelect:this.onSelectTransform.bind(this)});a.disable(),this.$selectTransformBtn.data("menuButton",a)}},onSelectionChange:function(t){var e=!1;this.elementIndex.getSelectedElements().length&&this.settings.transforms.length&&(e=!0);var n=null;this.$selectTransformBtn&&(n=this.$selectTransformBtn.data("menuButton")),e?(n&&n.enable(),this.$selectTransformBtn.removeClass("disabled")):this.$selectTransformBtn&&(n&&n.disable(),this.$selectTransformBtn.addClass("disabled")),this.base()},onSelectTransform:function(t){var e=$(t).data("transform");this.selectImagesWithTransform(e)},selectImagesWithTransform:function(t){var e=this;void 0===Craft.AssetSelectorModal.transformUrls[t]&&(Craft.AssetSelectorModal.transformUrls[t]={});for(var n=this.elementIndex.getSelectedElements(),i=[],r=0;r<n.length;r++){var a=$(n[r]),s=Craft.getElementInfo(a).id;void 0===Craft.AssetSelectorModal.transformUrls[t][s]&&i.push(s)}i.length?(this.showFooterSpinner(),this.fetchMissingTransformUrls(i,t,(function(){e.hideFooterSpinner(),e.selectImagesWithTransform(t)}))):(this._selectedTransform=t,this.selectElements(),this._selectedTransform=null)},fetchMissingTransformUrls:function(t,e,n){var i=this,r=t.pop(),a={assetId:r,handle:e};Craft.sendActionRequest("POST","assets/generate-transform",{data:a}).then((function(t){Craft.AssetSelectorModal.transformUrls[e][r]=t.data.url||!1})).catch((function(){Craft.AssetSelectorModal.transformUrls[e][r]=!1})).finally((function(){t.length?i.fetchMissingTransformUrls(t,e,n):n()}))},getElementInfo:function(t){var e=this.base(t);if(this._selectedTransform)for(var n=0;n<e.length;n++){var i=e[n].id;void 0!==Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i]&&!1!==Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i]&&(e[n].url=Craft.AssetSelectorModal.transformUrls[this._selectedTransform][i])}return e},onSelect:function(t){this.settings.onSelect(t,this._selectedTransform)}},{defaults:{canSelectImageTransforms:!1,transforms:[]},transformUrls:{}}),Craft.registerElementSelectorModalClass("craft\\elements\\Asset",Craft.AssetSelectorModal)},8391:function(){Craft.AssetsFieldSettings=Garnish.Base.extend({$useSingleFolderInput:null,$sourceInputs:null,$defaultUploadLocationSelect:null,$defaultUploadLocationOptions:null,init:function(t,e,n){var i=this;this.$useSingleFolderInput=$("#".concat(t)),this.$sourceInputs=$("#".concat(e," input")),this.$defaultUploadLocationSelect=$("#".concat(n)),this.$defaultUploadLocationOptions=this.$defaultUploadLocationSelect.children("option"),this.updateDefaultUploadLocationSelect(),Garnish.requestAnimationFrame((function(){i.addListener(i.$useSingleFolderInput,"change","updateDefaultUploadLocationSelect"),i.addListener(i.$sourceInputs,"change","updateDefaultUploadLocationSelect")}))},updateDefaultUploadLocationSelect:function(){if(!this.$useSingleFolderInput.prop("checked")){for(var t,e=this.$defaultUploadLocationSelect.val(),n=0;n<this.$sourceInputs.length;n++){var i=this.$sourceInputs.eq(n),r=i.val(),a=i.prop("checked");if("*"===r){if(a)return void this.$defaultUploadLocationOptions.prop("disabled",!1)}else this.getOption(r).prop("disabled",!a),a&&!t&&(t=r)}var s=this.getOption(e);(!s.length||s.prop("disabled")&&t)&&this.$defaultUploadLocationSelect.val(t)}},getOption:function(t){return this.$defaultUploadLocationOptions.filter('[value="'.concat(t,'"]'))}})},9222:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}Craft.AuthManager=Garnish.Base.extend({remainingSessionTime:null,checkRemainingSessionTimer:null,showLoginModalTimer:null,decrementLogoutWarningInterval:null,showingLogoutWarningModal:!1,showingLoginModal:!1,logoutWarningModal:null,loginModal:null,$logoutWarningPara:null,$passwordInput:null,$loginBtn:null,loginBtn:null,init:function(){Craft.username&&this.updateRemainingSessionTime(Craft.remainingSessionTime,!1)},setCheckRemainingSessionTimer:function(t){this.checkRemainingSessionTimer&&clearTimeout(this.checkRemainingSessionTimer),this.checkRemainingSessionTimer=setTimeout(this.checkRemainingSessionTime.bind(this),1e3*t)},checkRemainingSessionTime:function(t){var n=this;return i(e().mark((function i(){var r,a,s;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=Craft.getActionUrl("users/session-info",t?null:"dontExtendSession=1"),e.prev=1,e.next=4,Craft.sendActionRequest("GET",r);case 4:a=e.sent,s=a.data,void 0!==Craft.csrfTokenValue&&(Craft.csrfTokenValue=s.csrfTokenValue),n.updateRemainingSessionTime(s.timeout,s.isGuest),e.next=13;break;case 10:e.prev=10,e.t0=e.catch(1),n.updateRemainingSessionTime(-1,!1);case 13:case"end":return e.stop()}}),i,null,[[1,10]])})))()},updateRemainingSessionTime:function(t,e){if(this.remainingSessionTime=parseInt(t),-1!==this.remainingSessionTime&&this.remainingSessionTime<Craft.AuthManager.minSafeSessionTime)if(!e||this.remainingSessionTime){this.showingLogoutWarningModal||this.showLogoutWarningModal();var n=Math.min(Craft.AuthManager.checkInterval,this.remainingSessionTime);this.setCheckRemainingSessionTimer(Math.max(1,n))}else this.showingLoginModal||(this.hideLogoutWarningModal(),this.showLoginModal()),this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);else this.hideLogoutWarningModal(),this.hideLoginModal(),-1!==this.remainingSessionTime&&this.remainingSessionTime<Craft.AuthManager.minSafeSessionTime+Craft.AuthManager.checkInterval?this.setCheckRemainingSessionTimer(this.remainingSessionTime-Craft.AuthManager.minSafeSessionTime+1):this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval)},showLogoutWarningModal:function(){var t;if(this.showingLoginModal?(this.hideLoginModal(!0),t=!0):t=!1,this.showingLogoutWarningModal=!0,!this.logoutWarningModal){var e=$('<form id="logoutwarningmodal" class="modal alert fitted"/>'),n=$('<div class="body"/>').appendTo(e),i=$('<div class="buttons right"/>').appendTo(n),r=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Sign out now")}).appendTo(i),a=$("<button/>",{type:"submit",class:"btn submit",text:Craft.t("app","Keep me signed in")}).appendTo(i);this.$logoutWarningPara=$("<p/>").prependTo(n),this.logoutWarningModal=new Garnish.Modal(e,{autoShow:!1,closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark logoutwarningmodalshade",onFadeIn:function(){Garnish.isMobileBrowser(!0)||setTimeout((function(){a.trigger("focus")}),100)}}),this.addListener(r,"activate","logout"),this.addListener(e,"submit","renewSession")}t?this.logoutWarningModal.quickShow():this.logoutWarningModal.show(),this.updateLogoutWarningMessage(),this.decrementLogoutWarningInterval=setInterval(this.decrementLogoutWarning.bind(this),1e3)},updateLogoutWarningMessage:function(){this.$logoutWarningPara.text(Craft.t("app","Your session will expire in {time}.",{time:Craft.secondsToHumanTimeDuration(this.remainingSessionTime)})),this.logoutWarningModal.updateSizeAndPosition()},decrementLogoutWarning:function(){this.remainingSessionTime>0&&(this.remainingSessionTime--,this.updateLogoutWarningMessage()),0===this.remainingSessionTime&&clearInterval(this.decrementLogoutWarningInterval)},hideLogoutWarningModal:function(t){this.showingLogoutWarningModal=!1,this.logoutWarningModal&&(t?this.logoutWarningModal.quickHide():this.logoutWarningModal.hide(),this.decrementLogoutWarningInterval&&clearInterval(this.decrementLogoutWarningInterval))},showLoginModal:function(){var t=this;return i(e().mark((function n(){var r,a,s;return e().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t.showingLoginModal){n.next=2;break}return n.abrupt("return");case 2:return t.showingLoginModal=!0,t.loginModal&&t.loginModal.destroy(),n.next=6,Craft.sendActionRequest("POST","users/login-modal",{data:{email:Craft.userEmail}});case 6:r=n.sent,a=r.data,s=$(a.html),t.loginModal=new Garnish.Modal(s,{closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark blurred login-modal-shade",onFadeIn:function(){var n=i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Craft.initUiElements(s),new Craft.LoginForm(s.find(".login-container"),{showPasskeyBtn:Craft.userHasPasskeys,onLogin:function(){t.loginModal.hide()}}),e.next=4,Craft.appendHeadHtml(a.headHtml);case 4:return e.next=6,Craft.appendBodyHtml(a.bodyHtml);case 6:case"end":return e.stop()}}),n)})));return function(){return n.apply(this,arguments)}}(),onFadeOut:function(){var e;null===(e=t.loginModal)||void 0===e||e.destroy(),t.loginModal=null},onHide:function(){t.showingLoginModal=!1}});case 10:case"end":return n.stop()}}),n)})))()},hideLoginModal:function(t){this.loginModal&&(t?this.loginModal.quickHide():this.loginModal.hide(),this.loginModal.destroy(),this.loginModal=null)},logout:function(){$.get({url:Craft.getActionUrl("users/logout"),dataType:"json",success:function(){Craft.redirectTo("")}})},renewSession:function(t){t&&t.preventDefault(),this.hideLogoutWarningModal(),this.checkRemainingSessionTime(!0)},closeModal:function(){this.loginBtn.successEvent(),this.hideLoginModal(),this.checkRemainingSessionTime()}},{checkInterval:60,minSafeSessionTime:120})},5774:function(){function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function e(e){for(var i=1;i<arguments.length;i++){var r=null!=arguments[i]?arguments[i]:{};i%2?t(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t,e,n){var i;return i=function(t,e){if("object"!=o(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=o(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(e),(e="symbol"==o(i)?i:String(i))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(){"use strict";i=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(t,e,n){t[e]=n.value},s="function"==typeof Symbol?Symbol:{},l=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",h=s.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,s=Object.create(r.prototype),o=new A(i||[]);return a(s,"_invoke",{value:E(t,n,o)}),s}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==n&&r.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function n(i,a,s,l){var c=f(t[i],t,a);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==o(u)&&r.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,s,l)}),(function(t){n("throw",t,s,l)})):e.resolve(u).then((function(t){h.value=t,s(h)}),(function(t){return n("throw",t,s,l)}))}l(c.arg)}var i;a(this,"_invoke",{value:function(t,r){function a(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(a,a):a()}})}function E(e,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(e,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,L(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var n=e[l];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,a=function n(){for(;++i<e.length;)if(r.call(e,i))return n.value=e[i],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(o(e)+" is not iterable")}return C.prototype=$,a(x,"constructor",{value:$,configurable:!0}),a($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},e.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=M,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function i(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:M(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),b}},e}function r(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var s=t.apply(e,n);function o(t){r(s,i,a,o,l,"next",t)}function l(t){r(s,i,a,o,l,"throw",t)}o(void 0)}))}}function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function l(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=c(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function c(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var u,d,f,p,g,m,v;Craft.BaseElementIndex=Garnish.Base.extend({initialized:!1,elementType:null,idPrefix:null,instanceState:null,_sourceStates:null,sourceStatesStorageKey:null,searchTimeout:null,sourceSelect:null,sourceNav:null,$container:null,$main:null,isIndexBusy:!1,$sidebar:null,showingSidebar:null,hasImplicitSource:!1,sourceKey:null,rootSourceKey:null,sourceViewModes:null,$source:null,$rootSource:null,sourcesByKey:null,$visibleSources:null,$sourceActionsContainer:null,$sourceActionsBtn:null,$toolbar:null,toolbarOffset:null,$srStatusContainer:null,$searchContainer:null,$search:null,$filterBtn:null,searching:!1,searchText:null,sortByScore:null,trashed:!1,drafts:!1,$clearSearchBtn:null,$statusMenuBtn:null,$statusMenuContainer:null,statusMenu:null,status:null,$siteMenuBtn:null,siteMenu:null,siteId:null,sourcePaths:null,$sourcePathOuterContainer:null,$sourcePathInnerContainer:null,$sourcePathOverflowBtnContainer:null,$sourcePathActionsBtn:null,$elements:null,$updateSpinner:null,$viewModeBtnContainer:null,viewModeBtns:null,_viewParams:null,_previousViewParams:null,_viewMode:null,view:null,_autoSelectElements:null,$countSpinner:null,$countContainer:null,$actionsContainer:null,$actionMenuBtn:null,page:1,resultSet:null,totalResults:null,totalUnfilteredResults:null,$exportBtn:null,actions:null,actionsHeadHtml:null,actionsBodyHtml:null,$selectAllContainer:null,$selectAllCheckbox:null,showingActionTriggers:!1,exporters:null,exportersByType:null,triggers:null,_$triggers:null,_cancelToken:null,viewMenus:null,activeViewMenu:null,filterHuds:null,_activeElement:null,inlineEditing:!1,nestedInputNamespace:null,get viewMode(){return"structure"!==this._viewMode||this.canSort?this.validateViewMode(this._viewMode):this.validateViewMode(null)},set viewMode(t){this._viewMode=t?this.validateViewMode(t):null},get paginated(){return!(!this.isAdministrative||"structure"===this.viewMode)},get selectable(){return!(!this.actions&&!this.settings.selectable||this.inlineEditing)},get multiSelect(){return!!(this.actions||this.settings.selectable&&this.settings.multiSelect)},get sortable(){return this.settings.sortable&&this.canSort&&!this.inlineEditing},get canSort(){return this.isAdministrative&&!this.status&&!this.trashed&&!this.drafts&&!this.searching&&!this.hasActiveFilter},get isAdministrative(){return["index","embedded-index"].includes(this.settings.context)},get hasActiveFilter(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&this.filterHuds[this.siteId][this.sourceKey].isActive},get baseCriteria(){var t={};if(this.$source&&Object.assign(t,this.$source.data("criteria")),this.settings.criteria&&Object.assign(t,this.settings.criteria),this.sourcePath.length){var e=this.sourcePath[this.sourcePath.length-1];e.criteria&&Object.assign(t,e.criteria)}return t},get sourceStates(){return this.hasImplicitSource?{__IMP__:this.instanceState.source||{}}:this._sourceStates},set sourceStates(t){this.hasImplicitSource?this.setInstanceState("source",t.__IMP__||{}):(this._sourceStates=t,Craft.setLocalStorage(this.sourceStatesStorageKey,this.sourceStates))},init:function(t,e,n){var i=this;this.elementType=t,this.$container=e,this.setSettings(n,Craft.BaseElementIndex.defaults),this.$container.data("elementIndex",this),this.nestedInputNamespace="elementindex-".concat(Math.floor(1e5*Math.random())),this.sourcePaths={},this.idPrefix=Craft.randomString(10),this.$main=this.$container.find(".main"),this.$toolbar=this.$container.find(this.settings.toolbarSelector),this.$statusMenuBtn=this.$toolbar.find(".statusmenubtn:first"),this.$statusMenuContainer=this.$statusMenuBtn.parent(),this.$siteMenuBtn=this.$container.find(".sitemenubtn:first"),this.$searchContainer=this.$toolbar.find(".search-container:first"),this.$search=this.$searchContainer.children("input:first"),this.$filterBtn=this.$searchContainer.children(".filter-btn:first"),this.$clearSearchBtn=this.$searchContainer.children(".clear-btn:first"),this.$sidebar=this.$container.find(".sidebar:first"),this.$sourceActionsContainer=this.$sidebar.find("#".concat(this.namespaceId("source-actions"))),this.$sourceActionsContainer=this.$sidebar.find("#source-actions"),this.$srStatusContainer=this.$container.find("[data-status-message]"),this.$elements=this.$container.find(".elements:first"),this.$updateSpinner=this.$elements.find(".spinner"),this.$updateSpinner.length||(this.$updateSpinner=$("<div/>",{class:"update-spinner spinner spinner-absolute"}).appendTo(this.$elements)),this.$countSpinner=this.$container.find("#".concat(this.namespaceId("count-spinner"))),this.$countContainer=this.$container.find("#".concat(this.namespaceId("count-container"))),this.$actionsContainer=this.$container.find("#".concat(this.namespaceId("actions-container"))),this.$exportBtn=this.$container.find("#".concat(this.namespaceId("export-btn"))),this.settings.hideSidebar&&(this.$sidebar.hide(),$(".body, .content",this.$container).removeClass("has-sidebar"));var r=this.findSources();if(1===r.length&&"__IMP__"===r.data("key")&&(this.hasImplicitSource=!0),this.instanceState=this.getDefaultInstanceState(),this.settings.storageKey&&$.extend(this.instanceState,Craft.getLocalStorage(this.settings.storageKey),{}),this.hasImplicitSource||(this._sourceStates={},this.sourceStatesStorageKey="BaseElementIndex."+this.elementType+"."+this.settings.context,Object.assign(this._sourceStates,Craft.getLocalStorage(this.sourceStatesStorageKey,{}))),this.initSources(r)){if(this.$statusMenuBtn.length&&(this.statusMenu=this.$statusMenuBtn.menubtn().data("menubtn").menu,this.statusMenu.on("optionselect",this._handleStatusChange.bind(this))),this.$siteMenuBtn.length){this.siteMenu=this.$siteMenuBtn.menubtn().data("menubtn").menu;var a=this.siteMenu.$options.filter(".sel:first");if(a.length||(a=this.siteMenu.$options.first()),a.length?this._setSite(a.data("site-id")):this.settings.criteria={id:"0"},this.siteMenu.on("optionselect",this._handleSiteChange.bind(this)),this.siteId){var s=this.settings.defaultSiteId||Craft.cp.getSiteId();if(s&&s!=this.siteId){var o=this.siteMenu.$options.filter('[data-site-id="'+s+'"]:first');o.length&&o.trigger("click")}}}else this.settings.criteria&&this.settings.criteria.siteId&&"*"!==this.settings.criteria.siteId?this._setSite(this.settings.criteria.siteId):this._setSite(Craft.siteId);this.settings.criteria&&this.settings.criteria.siteId&&delete this.settings.criteria.siteId,this.addListener(this.$search,"input",(function(){!i.searching&&i.$search.val()?i.startSearching():i.searching&&!i.$search.val()&&i.stopSearching(),i.searchTimeout&&clearTimeout(i.searchTimeout),i.searchTimeout=setTimeout(i.updateElementsIfSearchTextChanged.bind(i),500)})),this.addListener(this.$search,"keypress",(function(t){t.keyCode===Garnish.RETURN_KEY&&(t.preventDefault(),i.searchTimeout&&clearTimeout(i.searchTimeout),i.updateElementsIfSearchTextChanged())})),this.addListener(this.$clearSearchBtn,"click",(function(){i.clearSearch(!0),Garnish.isMobileBrowser(!0)||i.$search.trigger("focus")})),"embedded-index"===this.settings.context||Garnish.isMobileBrowser(!0)||!1!==Craft.disableAutofocus||this.$search.trigger("focus"),this.viewMenus={},this.filterHuds={},this.addListener(this.$filterBtn,"click","showFilterHud");var l,c="index"===this.settings.context?Craft.getQueryParams():{};if(c.status){var h;switch(c.status){case"trashed":h="[data-trashed]";break;case"drafts":h="[data-drafts]";break;default:h='[data-status="'.concat(c.status,'"]')}var u=this.statusMenu.$options.filter(h);u.length?this.statusMenu.selectOption(u[0]):Craft.setQueryParam("status",null)}this.addListener(this.$exportBtn,"click","_showExportHud"),this.initialized=!0,this.afterInit(),l="index"===this.settings.context?void 0!==c.sourcePathStep?c.sourcePathStep:this.getSelectedSourceState("sourcePathStep"):this.instanceState.sourcePathStep||null,this.selectDefaultSource();var d=this.getDefaultSourcePath();d&&1!=d.length||!l?(d&&(this.sourcePath=d),this.afterSetInitialSource(c)):this.loadSourcePathByKey(l).then((function(t){if(t){var e=i.sourceKey.split("/").slice(-1)[0],n=t.findIndex((function(t){return t.key===e}));-1!==n&&(i.sourcePath=t.slice(n))}i.afterSetInitialSource(c)}))}},afterInit:function(){this.onAfterInit()},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.settings.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.settings.namespace)},loadSourcePathByKey:function(t){var e=this;return new Promise((function(n,i){if(t!==e.sourceKey){var r=e.getViewParams();r.stepKey=t,Craft.sendActionRequest("POST","element-indexes/source-path",{data:r}).then((function(t){var e=t.data;n(e.sourcePath)})).catch(i)}else n([])}))},afterSetInitialSource:function(t){if("index"===this.settings.context&&this.addListener(Garnish.$win,"resize","handleResize"),this.handleResize(),t.search&&(this.startSearching(),this.searchText=t.search),t.filters&&this.createFilterHud({showOnInit:!1,serialized:t.filters}),t.sort){var e=t.sort.lastIndexOf("-");if(-1!==e){var n=t.sort.substring(0,e),i=t.sort.substring(e+1);this.setSelectedSortAttribute(n,i)}}this.setPage(Craft.pageNum),this.updateElements(!0)},handleResize:function(){this.sourcePath.length&&this.settings.showSourcePath&&this._updateSourcePathVisibility()},_createCancelToken:function(){return this._cancelToken=axios.CancelToken.source(),this._cancelToken.token},_cancelRequests:function(){this._cancelToken&&this._cancelToken.cancel()},getSourceContainer:function(){return this.$sidebar.find("nav > ul")},getSourceLabel:function(){return this.$source.data("label")},getItemLabel:function(){return Craft.elementTypeNames[this.elementType]?Craft.elementTypeNames[this.elementType][2]:this.settings.elementTypeName.toLowerCase()},getItemsLabel:function(){return Craft.elementTypeNames[this.elementType]?Craft.elementTypeNames[this.elementType][3]:this.settings.elementTypePluralName.toLowerCase()},getFirstItemNumber:function(t){return Math.min(this.settings.batchSize*(this.page-1)+1,t)},getLastItemNumber:function(t,e){return Math.min(t+(this.settings.batchSize-1),e)},get $sources(){if(this.sourceNav)return this.sourceNav.$items},getSite:function(){var t=this;if(this.siteId)return Craft.sites.find((function(e){return e.id==t.siteId}))},initSources:function(t){if(void 0===t&&(t=this.findSources()),0===t.length)return!1;this.sourceNav||(this.sourceNav=new b(this.$sidebar.find("nav"),{onSelectionChange:this._handleSourceSelectionChange.bind(this)})),this.sourcesByKey={};for(var e=0;e<t.length;e++)this.initSource($(t[e]));return!0},findSources:function(){return this._getSourcesInList(this.getSourceContainer(),!0)},selectDefaultSource:function(){var t,e;return"index"===this.settings.context&&(t=Craft.getQueryParam("source")),t||(t=this.getDefaultSourceKey()),t&&(e=this.getSourceByKey(t),-1===this.$visibleSources.index(e)&&(e=null)),t&&e||(e=this.$visibleSources.first()),this.selectSource(e)},refreshSources:function(){var t=this;this.sourceNav.removeAllItems(),this.setIndexBusy(),Craft.sendActionRequest("POST",this.settings.refreshSourcesAction,{data:{context:this.settings.context,elementType:this.elementType}}).then((function(e){t.setIndexAvailable(),t.getSourceContainer().replaceWith(e.data.html),t.initSources(),t.selectDefaultSource()})).catch((function(e){axios.isCancel(e)||(t.setIndexAvailable(),Craft.cp.displayError(Craft.t("app","A server error occurred.")))}))},initSource:function(t){this.sourceNav.addItems(t),this.initSourceToggle(t),this.sourcesByKey[t.data("key")]=t,t.data("hasNestedSources")&&-1!==this.instanceState.expandedSources.indexOf(t.data("key"))&&this._expandSource(t)},initSourceToggle:function(t){this.deinitSourceToggle(t);var e=this._getSourceToggle(t);e.length?(this.addListener(t,"dblclick","_handleSourceDblClick"),this.addListener(e,"click","_handleSourceToggleClick"),t.data("hasNestedSources",!0)):t.data("hasNestedSources",!1)},deinitSource:function(t){this.sourceNav.removeItems(t),this.deinitSourceToggle(t),delete this.sourcesByKey[t.data("key")]},deinitSourceToggle:function(t){t.data("hasNestedSources")&&(this.removeListener(t,"dblclick"),this.removeListener(this._getSourceToggle(t),"click")),t.removeData("hasNestedSources")},getDefaultInstanceState:function(){var t={selectedSource:null,expandedSources:[]};return this.hasImplicitSource&&(t.source={}),t},getDefaultSourceKey:function(){var t;if(this.settings.preferStoredSource&&this.instanceState.selectedSource)return this.settings.defaultSource=null,this.settings.defaultSourcePath=null,this.instanceState.selectedSource;var e=null;if(this.settings.defaultSource){var n,i=null,r=!1,a=l(this.settings.defaultSource.split("/"));try{for(a.s();!(n=a.n()).done;){var s=n.value;i&&(this._expandSource(i),r=!0);var o=(null!==e?"".concat(e,"/"):"")+s,c=this.getSourceByKey(o);if(!c){i&&this._collapseSource(i);break}i=c,e=o}}catch(t){a.e(t)}finally{a.f()}r&&this._setSite(this.siteId)}return e||(this.settings.defaultSource=null,this.settings.defaultSourcePath=null),null!==(t=e)&&void 0!==t?t:this.instanceState.selectedSource},getDefaultSourcePath:function(){return null!==this.settings.defaultSourcePath&&void 0!==this.settings.defaultSourcePath[0]&&!0===this.settings.defaultSourcePath[0].canView?this.settings.defaultSourcePath:null},getDefaultExpandedSources:function(){return this.instanceState.expandedSources},get sourcePath(){return this.sourcePaths[this.sourceKey]||[]},set sourcePath(t){var e=this;if(this.sourcePaths[this.sourceKey]=t&&t.length?t:null,this.$sourcePathOuterContainer&&(this.$sourcePathOuterContainer.remove(),this.$sourcePathOuterContainer=null,this.$sourcePathInnerContainer=null,this.$sourcePathOverflowBtnContainer=null,this.$sourcePathActionsBtn=null),this.sourcePaths[this.sourceKey]&&this.settings.showSourcePath){var n=this.getSourcePathActions();this.$sourcePathOuterContainer=$("<div/>",{class:"source-path"}).insertBefore(this.$elements),this.$sourcePathInnerContainer=$("<div/>",{class:"chevron-btns"}).appendTo(this.$sourcePathOuterContainer);var i,r,a,s=$("<nav/>",{"aria-label":this.getSourcePathLabel()}).appendTo(this.$sourcePathInnerContainer),o=$("<ol/>").appendTo(s);if(t.length>1){this.$sourcePathOverflowBtnContainer=$("<li/>",{class:"first-step hidden"}).appendTo(o),r="menu"+Math.floor(1e6*Math.random()),i=$("<button/>",{type:"button",class:"btn",title:Craft.t("app","More items"),"aria-label":Craft.t("app","More items"),"data-disclosure-trigger":!0,"aria-controls":r}).append($("<span/>",{class:"btn-body"}).append($("<span/>",{class:"label"}).append($("<span/>",{"data-icon":"ellipsis","aria-hidden":"true"})))).append($("<span/>",{class:"chevron-right"})).appendTo(this.$sourcePathOverflowBtnContainer);var l=$("<div/>",{id:r,class:"menu menu--disclosure"}).appendTo(this.$sourcePathOverflowBtnContainer);a=$("<ul/>").appendTo(l),i.disclosureMenu()}for(var c=0;c<t.length;c++)!function(r){var s=t[r];a&&r<t.length-1&&(s.$overflowLi=$("<li/>",{class:"hidden"}).appendTo(a),$("<a/>",{class:"flex flex-nowrap",href:"#",type:"button",role:"button",html:s.icon?'<span data-icon="'.concat(s.icon,'" aria-hidden="true"></span><span>').concat(s.label,"</span>"):s.label}).appendTo(s.$overflowLi).on("click",(function(t){t.preventDefault(),i.data("trigger").hide(),e.selectSourcePathStep(r)})));var l=0===r,c=r===t.length-1;s.$li=$("<li/>").appendTo(o),l&&s.$li.addClass("first-step"),s.$btn=$("<a/>",{href:s.uri?Craft.getCpUrl(s.uri):"#",class:"btn",role:"button"}),s.icon&&s.$btn.attr("aria-label",s.label);var h=$("<span/>",{class:"btn-body"}).appendTo(s.$btn);s.$label=$("<span/>",{class:"label",html:s.icon?'<span data-icon="'.concat(s.icon,'" aria-hidden="true"></span>'):s.label}).appendTo(h),s.$btn.append($('<span class="chevron-left"/>')),c&&n.length?s.$btn.addClass("has-action-menu"):s.$btn.append($('<span class="chevron-right"/>')),c&&s.$btn.addClass("current-step").attr("aria-current","page"),s.$btn.appendTo(s.$li),e.addListener(s.$btn,"activate",(function(){e.selectSourcePathStep(r)}))}(c);if(n&&n.length){var h=this.getSourcePathActionLabel(),u="menu"+Math.floor(1e6*Math.random());this.$sourcePathActionsBtn=$("<button/>",{type:"button",class:"btn current-step",title:h,"aria-label":h,"data-disclosure-trigger":!0,"aria-controls":u}).append($("<span/>",{class:"btn-body"}).append($("<span/>",{class:"label"}))).append($("<span/>",{class:"chevron-right"})).appendTo(this.$sourcePathInnerContainer);var d=[n.filter((function(t){return!t.destructive&&!t.administrative})),n.filter((function(t){return t.destructive&&!t.administrative})),n.filter((function(t){return t.administrative}))].filter((function(t){return t.length})),f=$("<div/>",{id:u,class:"menu menu--disclosure"}).appendTo(this.$sourcePathInnerContainer);d.forEach((function(t,n){0!==n&&$("<hr/>").appendTo(f),e._buildSourcePathActionList(t).appendTo(f)})),this.$sourcePathActionsBtn.disclosureMenu(),this._updateSourcePathVisibility()}"index"===this.settings.context&&void 0!==t[t.length-1].uri&&"undefined"!=typeof history&&history.replaceState({},"",Craft.getCpUrl(t[t.length-1].uri))}var p=(this.sourcePaths[this.sourceKey]?this.sourcePaths[this.sourceKey][this.sourcePaths[this.sourceKey].length-1].key:null)||null;"index"===this.settings.context?this.setSelecetedSourceState("sourcePathStep",p):this.setInstanceState("sourcePathStep",p),this.onSourcePathChange()},getSourcePathLabel:function(){return""},getSourcePathActions:function(){return[]},getSourcePathActionLabel:function(){return""},_updateSourcePathVisibility:function(){var t=this.sourcePath[0],e=this.sourcePath[this.sourcePath.length-1];this.$sourcePathOverflowBtnContainer&&(this.$sourcePathOverflowBtnContainer.addClass("hidden"),t.$li.addClass("first-step"));var n,i=l(this.sourcePath);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.$overflowLi&&r.$overflowLi.addClass("hidden"),r.$li.removeClass("hidden")}}catch(t){i.e(t)}finally{i.f()}e.$label.css("width",""),e.$btn.removeAttr("title");var a=this._checkSourcePathOverage();if(a){if(this.$sourcePathOverflowBtnContainer){this.$sourcePathOverflowBtnContainer.removeClass("hidden"),t.$li.removeClass("first-step");for(var s=0;s<this.sourcePath.length-1;s++){var o=this.sourcePath[s];if(o.$overflowLi.removeClass("hidden"),o.$li.addClass("hidden"),!(a=this._checkSourcePathOverage()))return}}if(!e.icon){var c=e.$label[0].getBoundingClientRect().width;e.$label.width(Math.floor(c-a)),e.$btn.attr("title",e.label)}}},_checkSourcePathOverage:function(){var t=this.$sourcePathOuterContainer[0].getBoundingClientRect().width,e=this.$sourcePathInnerContainer[0].getBoundingClientRect().width;return Math.max(e-t,0)},_buildSourcePathActionList:function(t){var e=this,n=$("<ul/>");return t.forEach((function(t){var i=$("<a/>",{href:"#",type:"button",role:"button","aria-label":t.label,text:t.label}).on("click",(function(n){n.preventDefault(),e.$sourcePathActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&i.addClass("error"),$("<li/>").append(i).appendTo(n)})),n},onSourcePathChange:function(){this.settings.onSourcePathChange(),this.trigger("sourcePathChange")},selectSourcePathStep:function(t){this.sourcePath=this.sourcePath.slice(0,t+1),this.sourcePath[t].$btn.focus(),this.clearSearch(!1),this.updateElements()},startSearching:function(){this.$clearSearchBtn.removeClass("hidden"),this.searching=!0,this.sortByScore=!0},clearSearch:function(t){this.searching&&(this.$search.val(""),this.searchTimeout&&clearTimeout(this.searchTimeout),this.stopSearching(),t?this.updateElementsIfSearchTextChanged():this.searchText=null)},stopSearching:function(){this.$clearSearchBtn.addClass("hidden"),this.searching=!1,this.sortByScore=!1},setInstanceState:function(t,e){"object"===o(t)?$.extend(this.instanceState,t):this.instanceState[t]=e,this.storeInstanceState()},storeInstanceState:function(){this.settings.storageKey&&Craft.setLocalStorage(this.settings.storageKey,this.instanceState)},getSourceState:function(t,e,n){if(!t)return null;if(void 0===this.sourceStates[t]){var i=t.lastIndexOf("/");if(-1!==i)return this.getSourceState(t.substring(0,i),e,n)}var r=this.sourceStates[t]||{};return void 0===e?Object.assign({},r):void 0!==r[e]?r[e]:void 0!==n?n:null},getSelectedSourceState:function(t,e){return this.getSourceState(this.instanceState.selectedSource,t,e)},setSelecetedSourceState:function(t,e){var n=this.getSelectedSourceState();if(null==n&&(n=[]),"object"===o(t))for(var i in t)t.hasOwnProperty(i)&&(null!==t[i]?n[i]=t[i]:delete n[i]);else null!==e?n[t]=e:delete n[t];var r="*";null!=this.instanceState.selectedSource&&(r=this.instanceState.selectedSource);var a=this.sourceStates;a[r]=n,this.sourceStates=a},storeSortAttributeAndDirection:function(){},setPage:function(t){if(this.isAdministrative){t=Math.max(t,1),this.page=t;var e=Craft.getPageUrl(this.page);history.replaceState({},"",e)}},_resetCount:function(){this.resultSet=null,this.totalResults=null,this.totalUnfilteredResults=null},updateSourceMenu:function(){var t=this;if(this.$sourceActionsContainer.length){this.$sourceActionsBtn&&(this.$sourceActionsBtn.data("trigger").destroy(),this.$sourceActionsContainer.empty(),$("#".concat(this.namespaceId("source-actions-menu"))).remove(),this.$sourceActionsBtn=null);var e=this.getSourceActions();if(e.length){var n=[e.filter((function(t){return!t.destructive&&!t.administrative})),e.filter((function(t){return t.destructive&&!t.administrative})),e.filter((function(t){return t.administrative}))].filter((function(t){return t.length}));this.$sourceActionsBtn=$("<button/>",{type:"button",class:"btn action-btn hairline",title:Craft.t("app","Source settings"),"aria-label":Craft.t("app","Source settings"),"aria-controls":"source-actions-menu"}).appendTo(this.$sourceActionsContainer);var i=$("<div/>",{id:"source-actions-menu",class:"menu menu--disclosure"}).appendTo(this.$sourceActionsContainer);n.forEach((function(e,n){0!==n&&$("<hr/>").appendTo(i),t._buildActionList(e).appendTo(i)})),this.$sourceActionsBtn.disclosureMenu()}}},_buildActionList:function(t){var e=this,n=$("<ul/>");return t.forEach((function(t){var i=$("<button/>",{type:"button",class:"menu-item",text:t.label}).on("click",(function(){e.$sourceActionsBtn.data("trigger").hide(),t.onSelect&&t.onSelect()}));t.destructive&&i.addClass("error"),$("<li/>").append(i).appendTo(n)})),n},getSourceActions:function(){var t=this,e=[];return Craft.userIsAdmin&&Craft.allowAdminChanges&&e.push({label:Craft.t("app","Customize sources"),administrative:!0,onSelect:function(){t.createCustomizeSourcesModal()}}),e},updateViewMenu:function(){if(!this.activeViewMenu||this.activeViewMenu!==this.viewMenus[this.sourceKey]){if(this.activeViewMenu&&this.activeViewMenu.hideTrigger(),!this.viewMenus[this.sourceKey]){if(!this.getViewModesForSource().find((function(t){return"table"===t.mode}))&&this.settings.sortable)return;this.viewMenus[this.sourceKey]=new y(this,this.$source)}this.activeViewMenu=this.viewMenus[this.sourceKey],this.activeViewMenu.showTrigger()}},getViewSettings:function(){return{}},getViewParams:function(){var t=Object.assign({status:null,drafts:!!this.settings.canHaveDrafts&&null,draftOf:!(!this.settings.canHaveDrafts||!this.drafts)&&null,savedDraftsOnly:!0},this.baseCriteria,{siteId:this.siteId}),e={offset:this.settings.batchSize*(this.page-1),limit:this.settings.batchSize,search:this.searching?this.searchText:null};this.settings.canHaveDrafts&&this.drafts&&(e.drafts=!0),this.trashed&&(e.trashed=!0),!this.$statusMenuContainer.hasClass("hidden")&&this.status&&(e.status=this.status);var n={context:this.settings.context,elementType:this.elementType,canHaveDrafts:this.settings.canHaveDrafts,source:this.instanceState.selectedSource,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,baseCriteria:t,criteria:e,disabledElementIds:this.settings.disabledElementIds,viewState:$.extend({},this.getSelectedSourceState()),paginated:this.paginated,selectable:this.selectable,sortable:this.sortable};if(n.viewState.showHeaderColumn=this.settings.showHeaderColumn,n.viewState.inlineEditing=this.inlineEditing,n.viewState.nestedInputNamespace=this.nestedInputNamespace,n.viewState.mode=this.viewMode,"structure"===this.viewMode)n.viewState.mode="table",n.viewState.order="structure",n.viewState.sort="asc",void 0===this.instanceState.collapsedElementIds&&(this.instanceState.collapsedElementIds=[]),n.collapsedElementIds=this.instanceState.collapsedElementIds;else if(!this.sortable&&!this.inlineEditing){var i=s(this.getSortAttributeAndDirection(),2),r=i[0],a=i[1];n.viewState.order=r,n.viewState.sort=a}return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]&&(this.filterHuds[this.siteId][this.sourceKey].conditionConfig||this.filterHuds[this.siteId][this.sourceKey].serialized)&&(n.filterConfig=this.filterHuds[this.siteId][this.sourceKey].conditionConfig,n.filters=this.filterHuds[this.siteId][this.sourceKey].serialized),this.hasImplicitSource&&void 0===n.viewState.tableColumns&&(n.viewState.tableColumns=this.getDefaultTableColumns()),this.trigger("registerViewParams",{params:n}),n},updateElements:function(t,e){var n=this;return new Promise((function(e,i){n.initialized?(n.onBeforeUpdateElements(),n._cancelRequests(),n.setIndexBusy(),n.view&&n.view.disable(),!0!==t&&(n.setPage(1),n._resetCount()),n._previousViewParams=n._viewParams,n._viewParams=n.getViewParams(),Craft.sendActionRequest("POST",n.settings.updateElementsAction,{data:n._viewParams,cancelToken:n._createCancelToken()}).then((function(t){if(n.setIndexAvailable(),"index"===n.settings.context){if(Craft.cp.fixedHeader){var i=Craft.cp.$headerContainer.height(),r=n.$main.offset().top-i;r<Garnish.$scrollContainer.scrollTop()&&Garnish.$scrollContainer.scrollTop(r)}}else n.$main.scrollTop(0);if(n._updateView(n._viewParams,t.data),n.criteriaHasChanged()&&!n.sourceHasChanged()){var a=n.getItemLabel(),s=n.getItemsLabel();n._countResults().then((function(t){var e;if(n.paginated){var i=n.getFirstItemNumber(t);e=Craft.t("app","Showing {first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}",{first:i,last:n.getLastItemNumber(i,t),total:t,item:a,items:s})}else e=Craft.t("app","Showing {total, number} {total, plural, =1{{item}} other{{items}}}",{total:t,item:a,items:s});n.updateLiveRegion(e)}))}else n.updateLiveRegion(n.getSortMessage());e()})).catch((function(t){axios.isCancel(t)||(n.setIndexAvailable(),Craft.cp.displayError(Craft.t("app","A server error occurred."))),i(t)}))):i("The element index isn’t initialized yet.")}))},criteriaHasChanged:function(){return!!this._previousViewParams&&!Craft.compare(this._viewParams.criteria,this._previousViewParams.criteria)},sourceHasChanged:function(){return!!this._previousViewParams&&this._viewParams.source!==this._previousViewParams.source},sortHasChanged:function(){return!!this._previousViewParams&&(this._viewParams.viewState.order!==this._previousViewParams.viewState.order||this._viewParams.viewState.sort!==this._previousViewParams.viewState.sort)},updateElementsIfSearchTextChanged:function(){this.searchText!==(this.searchText=this.searching?this.$search.val():null)&&("index"===this.settings.context&&Craft.setQueryParam("search",this.$search.val()),this.updateElements())},getSortMessage:function(){var t=this.getSelectedSortAttribute(),e="asc"===this.getSelectedSortDirection()?Craft.t("app","Ascending"):Craft.t("app","Descending"),n=this.getSortLabel(t);if(t||e||n)return Craft.t("app","{name} sorted by {attribute}, {direction}",{name:this.getSourceLabel(),attribute:n,direction:e})},updateLiveRegion:function(t){var e=this;t&&(this.$srStatusContainer.empty().text(t),setTimeout((function(){var n=e.$srStatusContainer.text();t===n&&e.$srStatusContainer.empty()}),5e3))},showActionTriggers:function(){this.showingActionTriggers||(this._$triggers?this._$triggers.appendTo(this.$actionsContainer):this._createTriggers(),this.showingActionTriggers=!0)},submitAction:(v=a(i().mark((function t(e,n,r){var a,s,o,l,c;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(0!==(a=this.view.getSelectedElementIds()).length){t.next=3;break}return t.abrupt("return",!1);case 3:if("string"==typeof e&&(e=this._findAction(e)),!e.confirm||confirm(e.confirm)){t.next=6;break}return t.abrupt("return",!1);case 6:if(!r){t.next=9;break}return t.next=9,r();case 9:if(this._cancelRequests(),s=this.getViewParams(),n=n?Craft.expandPostArray(n):{},o=$.extend(s,e.settings||{},n,{elementAction:e.type,elementIds:a}),this.setIndexBusy(),this._autoSelectElements=a,!e.download){t.next=25;break}return Craft.csrfTokenName&&(o[Craft.csrfTokenName]=Craft.csrfTokenValue),t.prev=17,t.next=20,Craft.downloadFromUrl("POST",Craft.getActionUrl(this.settings.submitActionsAction),o);case 20:return t.prev=20,this.setIndexAvailable(),t.finish(20);case 23:t.next=42;break;case 25:return t.prev=25,t.next=28,Craft.sendActionRequest("POST",this.settings.submitActionsAction,{data:o,cancelToken:this._createCancelToken()});case 28:l=t.sent,this._resetCount(),this._updateView(s,l.data),void 0!==l.data.badgeCounts&&this._updateBadgeCounts(l.data.badgeCounts),l.data.message&&Craft.cp.displaySuccess(l.data.message),this.afterAction(e,o),t.next=39;break;case 36:t.prev=36,t.t0=t.catch(25),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(c=t.t0.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.message);case 39:return t.prev=39,this.setIndexAvailable(),t.finish(39);case 42:case"end":return t.stop()}}),t,this,[[17,,20,23],[25,36,39,42]])}))),function(t,e,n){return v.apply(this,arguments)}),_findAction:function(t){for(var e=0;e<this.actions.length;e++)if(this.actions[e].type===t)return this.actions[e];throw"Invalid element action: ".concat(t)},afterAction:function(t,e){Craft.cp.runQueue(),this.onAfterAction(t,e)},hideActionTriggers:function(){this.showingActionTriggers&&(this._$triggers.detach(),this.showingActionTriggers=!1)},updateSelectAllCheckbox:function(){if(this.$selectAllCheckbox){var t=this.view.getSelectedElements().length;0!==t?t===this.view.getEnabledElements().length?(this.$selectAllCheckbox.removeClass("indeterminate"),this.$selectAllCheckbox.addClass("checked"),this.$selectAllCheckbox.attr("aria-checked","true")):(this.$selectAllCheckbox.addClass("indeterminate"),this.$selectAllCheckbox.removeClass("checked"),this.$selectAllCheckbox.attr("aria-checked","mixed")):(this.$selectAllCheckbox.removeClass("indeterminate checked"),this.$selectAllCheckbox.attr("aria-checked","false"))}},updateActionTriggers:function(){this.actions&&(0!==this.view.getSelectedElements().length?this.showActionTriggers():this.hideActionTriggers())},getSelectedElements:function(){return this.view?this.view.getSelectedElements():$()},getSelectedElementIds:function(){return this.view?this.view.getSelectedElementIds():[]},setStatus:function(t){var e=this.statusMenu.$options.filter('a[data-status="'+t+'"]:first');e.length&&this.statusMenu.selectOption(e[0])},getSelectedSortAttribute:function(t){if(t=t||this.$source){var e=this.getSourceState(t.data("key"),"order");if(this.getSortOption(e,t))return e}return this.getDefaultSort()[0]},getSelectedSortDirection:function(t){if(t=t||this.$source){var e=this.getSourceState(t.data("key"),"sort");if(["asc","desc"].includes(e))return e}return this.getDefaultSort()[1]},setSortAttribute:function(t){this.setSelectedSortAttribute(t)},setSelectedSortAttribute:function(t,e){if("score"!==t){this.sortByScore=!1;var n=this.getSortOption(t);if(n){e||(e=n.defaultDir);var i=[],r=[t],a=this.getSelectedSourceState("order");a&&a!==t&&(i.push([a,this.getSelectedSourceState("sort")]),r.push(a));for(var o=this.getSelectedSourceState("orderHistory",[]),l=0;l<o.length;l++){var c=s(o[l],1)[0];if(!c||r.includes(c))break;i.push(o[l]),r.push(c)}this.setSelecetedSourceState({order:t,sort:e,orderHistory:i}),"index"===this.settings.context&&Craft.setQueryParam("sort","".concat(t,"-").concat(e))}else console.warn("Invalid sort option: ".concat(t))}else this.sortByScore=!0},setSortDirection:function(t){this.setSelectedSortDirection(t)},setSelectedSortDirection:function(t){this.setSelectedSortAttribute(this.getSelectedSortAttribute(),t)},getSortAttributeAndDirection:function(){return this.searching&&this.sortByScore?["score","desc"]:[this.getSelectedSortAttribute(),this.getSelectedSortDirection()]},getSortLabel:function(t){var e=this.getSortOption(t);return e?e.label:null},getSelectedViewMode:function(){return this.validateViewMode(this.getSelectedSourceState("mode")||null)},getSourceLevel:function(t){return t.parentsUntil("nav","ul.nested").length+1},getParentSource:function(t){var e=t.parent().parent().siblings("a");return e.length?e:null},getRootSource:function(t){for(var e;e=this.getParentSource(t);)t=e;return t},getSourceByKey:function(t){return this.sourcesByKey[t]||null},selectSource:function(t){var e=$(t);if(!this.sourcesByKey||!Object.keys(this.sourcesByKey).length)return!1;if(this.$source&&this.$source[0]&&this.$source[0]===e[0]&&e.data("key")===this.sourceKey)return!1;if(this.hideActionTriggers(),this.$source=e,this.$rootSource=this.getRootSource(e),this.sourceKey=e.data("key"),this.rootSourceKey=this.$rootSource.data("key"),this.setInstanceState("selectedSource",this.sourceKey),this.sourceNav.selectItem(e),Craft.cp.updateContentHeading(),this.searching&&(this.searchText=null,this.$search.val(""),"index"===this.settings.context&&Craft.setQueryParam("search",null),this.stopSearching()),this.$statusMenuBtn.length&&(void 0!==this.baseCriteria.status?this.$statusMenuContainer.addClass("hidden"):this.$statusMenuContainer.removeClass("hidden"),this.trashed)){var n=this.statusMenu.$options.first();this.setStatus(n.data("status"))}if(this.$viewModeBtnContainer&&this.$viewModeBtnContainer.remove(),this.viewModeBtns={},this.viewMode=null,this.sourceViewModes=this.getViewModesForSource(),this.sourceViewModes.length>1){this.$viewModeBtnContainer=$('<section class="btngroup btngroup--exclusive"/>').attr("aria-label",Craft.t("app","View")).insertAfter(this.$searchContainer);for(var i=0;i<this.sourceViewModes.length;i++){var r=this.sourceViewModes[i],a=$("<button/>",{type:"button",class:"btn"+(void 0!==r.className?" ".concat(r.className):""),"data-view":r.mode,"data-icon":r.icon,"aria-label":r.title,"aria-pressed":"false",title:r.title}).appendTo(this.$viewModeBtnContainer);this.viewModeBtns[r.mode]=a,this.addListener(a,"click",{mode:r.mode},(function(t){this.selectViewMode(t.data.mode),this.updateElements()}))}}var s=this.getSelectedSourceState("mode");if("table"===s&&"structure"===this.getSourceState(e.data("key"),"order")&&(s="structure"),s&&this.doesSourceHaveViewMode(s)||(s=this.viewMode&&this.doesSourceHaveViewMode(this.viewMode)?this.viewMode:this.sourceViewModes[0].mode),this.selectViewMode(s),this.updateSourceMenu(),this.updateViewMenu(),!this.filterHudExists()&&this.$source.data("default-filter")?this.createFilterHud({showOnInit:!1,conditionConfig:this.$source.data("default-filter")}):this.updateFilterBtn(),this.onSelectSource(),this.sourcePath=this.sourcePaths[this.sourceKey]||this.$source.data("default-source-path"),"index"===this.settings.context){var o=Craft.getQueryParams();o.source=this.sourceKey,Craft.setUrl(Craft.getUrl(Craft.path,o))}return!0},selectSourceByKey:function(t){var e=this.getSourceByKey(t);return!!e&&this.selectSource(e)},getSourceData:function(t,e){if(t||(t=this.$source),t){var n=t.data(e);if(void 0===n){var i=this.getParentSource(t);if(i)return this.getSourceData(i,e)}return n}},getSortOptions:function(t){var e=this.getSourceData(t,"sort-opts")||[];return e.length||e.push({label:Craft.t("app","Title"),attr:"title",defaultDir:"asc"}),e},getSortOption:function(t,e){return this.getSortOptions(e).find((function(e){return e.attr===t}))||null},getDefaultSort:function(t){var e=this.getSourceData(t,"default-sort");if(e){"string"==typeof e&&(e=[e]);var n=this.getSortOption(e[0],t);if(n)return e[1]||(e[1]=n.defaultDir),e}var i=this.getSortOptions(t);return[i[0].attr,i[0].defaultDir]},getTableColumnOptions:function(t){return this.getSourceData(t,"table-col-opts")||[]},getTableColumnOption:function(t,e){return this.getTableColumnOptions(e).find((function(e){return e.attr===t}))||null},getDefaultTableColumns:function(t){return this.getSourceData(t,"default-table-cols")||[]},getSelectedTableColumns:function(t){var e=this;if(t||(t=this.$source),t){var n=this.getSourceState(t.data("key"),"tableColumns");if(n)return n.filter((function(n){return!!e.getTableColumnOption(n,t)}))}return this.getDefaultTableColumns(t)},setSelectedTableColumns:function(t){this.setSelecetedSourceState({tableColumns:t}),this.activeViewMenu&&this.activeViewMenu.updateTableColumnField()},getViewModesForSource:function(){var t=this,e=[];return Garnish.isMobileBrowser(!0)||(Garnish.hasAttr(this.$source,"data-has-structure")&&e.push({mode:"structure",title:Craft.t("app","Display in a structured table"),icon:"rtl"===Craft.orientation?"structurertl":"structure"}),e.push({mode:"table",title:Craft.t("app","Display in a table"),icon:"list"})),this.$source&&Garnish.hasAttr(this.$source,"data-has-thumbs")&&e.push({mode:"thumbs",title:Craft.t("app","Display as thumbnails"),icon:"grid"}),e.push({mode:"cards",title:Craft.t("app","Display as cards"),icon:"element-cards"}),this.settings.allowedViewModes?e.filter((function(e){return t.settings.allowedViewModes.includes(e.mode)})):e},doesSourceHaveViewMode:function(t){if(!this.sourceViewModes)return!1;for(var e=0;e<this.sourceViewModes.length;e++)if(this.sourceViewModes[e].mode===t)return!0;return!1},validateViewMode:function(t){return t&&this.doesSourceHaveViewMode(t)?t:this.sourceViewModes&&this.sourceViewModes.length?this.sourceViewModes[0].mode:this.doesSourceHaveViewMode("table")?"table":"cards"},selectViewMode:function(t,e){e||this.doesSourceHaveViewMode(t)||(t=this.sourceViewModes[0].mode),t!==this._viewMode&&(this._viewMode&&void 0!==this.viewModeBtns[this._viewMode]&&this.viewModeBtns[this._viewMode].removeClass("active").attr("aria-pressed","false"),this._viewMode=t,this.setSelecetedSourceState("mode",this._viewMode),void 0!==this.viewModeBtns[this._viewMode]&&this.viewModeBtns[this._viewMode].addClass("active").attr("aria-pressed","true"))},createView:function(t,e){return new(this.getViewClass(t))(this,this.$elements,e)},getViewClass:function(t){switch(t){case"table":case"structure":return Craft.TableElementIndexView;case"cards":return Craft.CardsElementIndexView;case"thumbs":return Craft.ThumbsElementIndexView;default:throw'View mode "'.concat(t,'" not supported.')}},rememberDisabledElementId:function(t){-1===$.inArray(t,this.settings.disabledElementIds)&&this.settings.disabledElementIds.push(t)},forgetDisabledElementId:function(t){var e=$.inArray(t,this.settings.disabledElementIds);-1!==e&&this.settings.disabledElementIds.splice(e,1)},enableElements:function(t){t.removeClass("disabled").parents(".disabled").removeClass("disabled");for(var e=0;e<t.length;e++){var n=$(t[e]).data("id");this.forgetDisabledElementId(n)}this.onEnableElements(t)},disableElements:function(t){t.removeClass("sel").addClass("disabled");for(var e=0;e<t.length;e++){var n=$(t[e]).data("id");this.rememberDisabledElementId(n)}this.onDisableElements(t)},getElementById:function(t){return this.view.getElementById(t)},enableElementsById:function(t){t=$.makeArray(t);for(var e=0;e<t.length;e++){var n=t[e],i=this.getElementById(n);i&&i.length?this.enableElements(i):this.forgetDisabledElementId(n)}},disableElementsById:function(t){t=$.makeArray(t);for(var e=0;e<t.length;e++){var n=t[e],i=this.getElementById(n);i&&i.length?this.disableElements(i):this.rememberDisabledElementId(n)}},selectElementAfterUpdate:function(t){null===this._autoSelectElements&&(this._autoSelectElements=[]),this._autoSelectElements.push(t)},addButton:function(t){this.getButtonContainer().append(t)},isShowingSidebar:function(){return null===this.showingSidebar&&(this.showingSidebar=this.$sidebar.length&&!this.$sidebar.hasClass("hidden")),this.showingSidebar},getButtonContainer:function(){if(this.settings.buttonContainer)return $(this.settings.buttonContainer);var t=$("#".concat(this.namespaceId("action-buttons")));return t.length||(t=$("<div/>",{id:this.namespaceId("action-buttons")}).appendTo($("#".concat(this.namespaceId("header"))))),t},setIndexBusy:function(){this.$elements.addClass("busy"),this.$updateSpinner.appendTo(this.$elements),this.isIndexBusy=!0,document.activeElement&&this.$elements[0].contains(document.activeElement)&&(this._activeElement=document.activeElement,document.activeElement.blur());var t=this.$elements.height(),e=window.innerHeight,n=$(document).scrollTop();if("modal"==this.settings.context&&(e=this.$elements.parents(".modal").height(),n=this.$elements.scrollParent().scrollTop()),t>e){var i=Math.floor(n+e/2)-100;i=Math.floor(i/t*100),document.documentElement.style.setProperty("--elements-busy-top-position",i+"%")}this.updateLiveRegion(Craft.t("app","Loading"))},setIndexAvailable:function(){this.$elements.removeClass("busy"),this.$updateSpinner.remove(),this.isIndexBusy=!1,this._activeElement&&(document.activeElement&&document.activeElement!==document.body||(document.body.contains(this._activeElement)?this._activeElement.focus():this._activeElement.id&&$("#".concat(this._activeElement.id)).focus()),this._activeElement=null)},createCustomizeSourcesModal:function(){var t=new Craft.CustomizeSourcesModal(this,{hideOnEsc:!1,hideOnShadeClick:!1,onHide:function(){t.destroy()}});return t},disable:function(){this.sourceNav&&this.sourceNav.disable(),this.view&&this.view.disable(),this.base()},enable:function(){this.sourceNav&&this.sourceNav.enable(),this.view&&this.view.enable(),this.base()},onAfterInit:function(){this.settings.onAfterInit(),this.trigger("afterInit")},onSelectSource:function(){this.settings.onSelectSource(this.sourceKey),this.trigger("selectSource",{sourceKey:this.sourceKey})},onSelectSite:function(){this.settings.onSelectSite(this.siteId),this.trigger("selectSite",{siteId:this.siteId})},onBeforeUpdateElements:function(){this.settings.onBeforeUpdateElements(),this.trigger("beforeUpdateElements")},onUpdateElements:function(){this.settings.onUpdateElements(),this.trigger("updateElements")},onCountResults:function(){this.settings.onCountResults(this.totalResults,this.totalUnfilteredResults),this.trigger("countResults",{total:this.totalResults,totalUnfiltered:this.totalUnfilteredResults})},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},onEnableElements:function(t){this.settings.onEnableElements(t),this.trigger("enableElements",{elements:t})},onDisableElements:function(t){this.settings.onDisableElements(t),this.trigger("disableElements",{elements:t})},onAfterAction:function(t,e){this.settings.onAfterAction(t,e),this.trigger("afterAction",{action:t,params:e})},_handleSourceSelectionChange:function(t){this.sourceNav.$selectedItem?this.selectSource(this.sourceNav.$selectedItem)&&this.updateElements():this.sourceNav.selectItem(this.$visibleSources.first())},_handleActionTriggerSubmit:function(t){t.preventDefault();var e=$(t.currentTarget);e.hasClass("disabled")||e.data("custom-handler")||this._submitActionInternal(e.data("action"),e.data("trigger")&&e.data("trigger").data("trigger"),Garnish.getPostData(e))},_handleMenuActionTriggerSubmit:function(t){var e=$(t.option);e.hasClass("disabled")||e.data("custom-handler")||this._submitActionInternal(e.data("action"),e.data("trigger"))},_submitActionInternal:(m=a(i().mark((function t(e,n,r){var s,o=this;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=this.getSelectedElements(),t.next=3,this.submitAction(e,r,a(i().mark((function t(){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!n){t.next=3;break}return t.next=3,n.settings.beforeActivate(s,o);case 3:case"end":return t.stop()}}),t)}))));case 3:if(!n){t.next=6;break}return t.next=6,n.settings.afterActivate(s,this);case 6:case"end":return t.stop()}}),t,this)}))),function(t,e,n){return m.apply(this,arguments)}),_handleStatusChange:function(t){this.statusMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$statusMenuBtn.html(e.html()),this.trashed=!1,this.drafts=!1,this.status=null;var n=null;Garnish.hasAttr(e,"data-trashed")?(this.trashed=!0,n="trashed"):Garnish.hasAttr(e,"data-drafts")?(this.drafts=!0,n="drafts"):this.status=n=e.data("status")||null,"index"===this.settings.context&&Craft.setQueryParam("status",n),this.updateElements()},_handleSiteChange:function(t){this.siteMenu.$options.removeClass("sel");var e=$(t.selectedOption).addClass("sel");this.$siteMenuBtn.html(e.html()),this._setSite(e.data("site-id")),this.initialized&&this.updateElements(),this.onSelectSite()},_setSite:function(t){var e=null===this.siteId;this.siteId=t,this.updateSourceVisibility(),!this.initialized||e||this.$source&&this.$source.length||!this.$visibleSources.length||this.selectSource(this.$visibleSources[0]);for(var n,i=this.getSourceContainer().children(".heading"),r=0;r<i.length;r++)0!==(n=i.eq(r)).has("> ul > li:not(.hidden)").length?n.removeClass("hidden"):n.addClass("hidden");this.initialized&&("index"===this.settings.context&&Craft.cp.setSiteId(t),this.updateFilterBtn())},updateSourceVisibility:function(){var t=this;this.$visibleSources=$();for(var e=0;e<this.$sources.length;e++){var n=this.$sources.eq(e);Garnish.hasAttr(n,"data-disabled")||void 0!==n.data("sites")&&!n.data("sites").toString().split(",").some((function(e){if(e==t.siteId)return!0;if(e!=parseInt(e)){var n=Craft.sites.find((function(e){return e.id==t.siteId}));if(n&&e==n.uid)return!0}return!1}))?(n.parent().addClass("hidden"),this.$source&&this.$source.get(0)===n.get(0)&&(this.$source=null,this.$rootSource=null,this.sourceKey=null,this.rootSourceKey=null)):(n.parent().removeClass("hidden"),this.$visibleSources=this.$visibleSources.add(n))}},_handleSelectionChange:function(){this.updateSelectAllCheckbox(),this.updateActionTriggers(),this.onSelectionChange()},_handleSourceDblClick:function(t){this._toggleSource($(t.currentTarget)),t.stopPropagation()},_handleSourceToggleClick:function(t){this._toggleSource($(t.currentTarget).prev("a")),t.stopPropagation()},_getSourcesInList:function(t,e){var n=t.find("> li:not(.heading) > a");return e&&(n=n.add(t.find("> li.heading > ul > li > a"))),n},_getChildSources:function(t){var e=t.siblings("ul");return this._getSourcesInList(e)},_getSourceToggle:function(t){return t.siblings(".toggle")},_toggleSource:function(t){t.parent("li").hasClass("expanded")?this._collapseSource(t):this._expandSource(t)},_expandSource:function(t){t.next(".toggle").attr({"aria-expanded":"true"}),t.parent("li").addClass("expanded");for(var e=this._getChildSources(t),n=0;n<e.length;n++)this.initSource($(e[n])),this.$visibleSources&&(this.$visibleSources=this.$visibleSources.add(e[n]));var i=t.data("key");-1===this.instanceState.expandedSources.indexOf(i)&&(this.instanceState.expandedSources.push(i),this.storeInstanceState())},_collapseSource:function(t){t.next(".toggle").attr({"aria-expanded":"false","aria-label":Craft.t("app","Show nested sources")}),t.parent("li").removeClass("expanded");for(var e=this._getChildSources(t),n=0;n<e.length;n++)this.deinitSource($(e[n])),this.$visibleSources=this.$visibleSources.not(e[n]);var i=this.instanceState.expandedSources.indexOf(t.data("key"));-1!==i&&(this.instanceState.expandedSources.splice(i,1),this.storeInstanceState())},_updateView:function(t,e){var n=this;return a(i().mark((function r(){var a,s,o,c,h,u,d;return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.actions){if(n.hideActionTriggers(),n.triggers){a=l(n.triggers);try{for(a.s();!(s=a.n()).done;)s.value.destroy()}catch(t){a.e(t)}finally{a.f()}}n.actions=n.actionsHeadHtml=n.actionsBodyHtml=n.triggers=n._$triggers=n.$actionMenuBtn=null}return n.$countContainer.length&&(n.$countSpinner.removeClass("hidden"),n.$countContainer.html(""),n._countResults().then((function(t){n.$countSpinner.addClass("hidden");var e=n.getItemLabel(),i=n.getItemsLabel();if(n.paginated){var r=n.getFirstItemNumber(t),a=n.getLastItemNumber(r,t),s=Craft.t("app","{first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}",{first:r,last:a,total:t,item:e,items:i}),o=$('<div class="flex pagination"/>').appendTo(n.$countContainer),l=Math.max(Math.ceil(t/n.settings.batchSize),1),c=$("<nav/>",{class:"flex","aria-label":Craft.t("app","{element} pagination",{element:e})}).appendTo(o),h=$("<button/>",{type:"button",role:"button",class:"page-link prev-page"+(n.page>1?"":" disabled"),disabled:1===n.page,title:Craft.t("app","Previous Page")}).appendTo(c),u=$("<button/>",{type:"button",role:"button",class:"page-link next-page"+(n.page<l?"":" disabled"),disabled:n.page===l,title:Craft.t("app","Next Page")}).appendTo(c);$("<div/>",{class:"page-info",text:s}).appendTo(o),n.page>1&&n.addListener(h,"click",(function(){this.removeListener(h,"click"),this.removeListener(u,"click"),this.setPage(this.page-1),this.updateElements(!0)})),n.page<l&&n.addListener(u,"click",(function(){this.removeListener(h,"click"),this.removeListener(u,"click"),this.setPage(this.page+1),this.updateElements(!0)}))}else{var d=Craft.t("app","{total, number} {total, plural, =1{{item}} other{{items}}}",{total:t,item:e,items:i});n.$countContainer.text(d)}})).catch((function(){n.$countSpinner.addClass("hidden")}))),n.$elements.html(e.html),i.next=5,Craft.appendHeadHtml(e.headHtml);case 5:return i.next=7,Craft.appendBodyHtml(e.bodyHtml);case 7:if(n.$selectAllContainer=n.$elements.find(".selectallcontainer:first"),n.multiSelect||e.actions&&e.actions.length){if(n.$selectAllContainer.length){if(e.actions&&e.actions.length&&(n.actions=e.actions,n.actionsHeadHtml=e.actionsHeadHtml,n.actionsBodyHtml=e.actionsBodyHtml),n.settings.actions&&n.settings.actions.length){n.actions||(n.actions=[]),o=l(n.settings.actions);try{for(o.s();!(c=o.n()).done;)h=c.value,(h=Object.assign({},h)).bodyHtml&&(n.actionsBodyHtml+=h.bodyHtml,delete h.bodyHtml),n.actions.push(h)}catch(t){o.e(t)}finally{o.f()}}n.$selectAllCheckbox=$('<div class="checkbox"/>').prependTo(n.$selectAllContainer).attr({role:"checkbox",tabindex:"0","aria-checked":"false","aria-label":Craft.t("app","Select all")}),n.addListener(n.$selectAllContainer,"click",(function(){0===this.view.getSelectedElements().length?this.view.selectAllElements():this.view.deselectAllElements()})),n.addListener(n.$selectAllCheckbox,"keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(t.preventDefault(),$(t.currentTarget).trigger("click"))}))}}else"TH"!==n.$selectAllContainer.prop("nodeName")&&(n.$selectAllContainer.siblings().length||n.$selectAllContainer.parent(".header").remove(),n.$selectAllContainer.remove());if(n.exporters=e.exporters,n.exportersByType=Craft.index(n.exporters||[],(function(t){return t.type})),n.exporters&&n.exporters.length?n.$exportBtn.removeClass("hidden"):n.$exportBtn.addClass("hidden"),u=Object.assign({context:n.settings.context,batchSize:n.isAdministrative||"structure"===n.viewMode?n.settings.batchSize:null,params:t,selectable:n.selectable,multiSelect:n.multiSelect,canSelectElement:n.settings.canSelectElement,checkboxMode:n.selectable,waitForDoubleClicks:n.settings.waitForDoubleClicks,sortable:n.sortable,onSelectionChange:n._handleSelectionChange.bind(n),onSortChange:n.settings.onSortChange},n.getViewSettings()),n.view&&(n.view.destroy(),delete n.view),n.view=n.createView(n.getSelectedViewMode(),u),n._autoSelectElements){if(n.selectable)for(d=0;d<n._autoSelectElements.length;d++)n.view.selectElementById(n._autoSelectElements[d]);n._autoSelectElements=null}n.onUpdateElements();case 17:case"end":return i.stop()}}),r)})))()},_updateBadgeCounts:function(t){for(var e in t)if(t.hasOwnProperty(e)){var n=this.getSourceByKey(e);if(n){var i=n.children(".badge");null!==t[e]?(i.length||(i=$('<span class="badge"/>').appendTo(n)),i.text(t[e])):i&&i.remove()}}},_countResults:function(){var t=this;return new Promise((function(e,n){if(null!==t.totalResults)e(t.totalResults,t.totalUnfilteredResults),t.onCountResults();else{var i=t.getViewParams();delete i.baseCriteria.offset,delete i.baseCriteria.limit,null===t.resultSet&&(t.resultSet=Math.floor(1e8*Math.random())),i.resultSet=t.resultSet,Craft.sendActionRequest("POST",t.settings.countElementsAction,{data:i,cancelToken:t._createCancelToken()}).then((function(i){i.data.resultSet==t.resultSet?(t.totalResults=i.data.total,t.totalUnfilteredResults=i.data.unfilteredTotal,e(t.totalResults,t.totalUnfilteredResults),t.onCountResults()):n()})).catch(n)}}))},_createTriggers:(g=a(i().mark((function t(){var e,n,r,a,s,o,l,c,h,u,d;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(this.triggers=[],this._$triggers=$(),e=[],n=[],r=0;r<this.actions.length;r++)(a=this.actions[r]).trigger?((s=$("<div/>",{id:"".concat(this.namespaceId(a.type),"-actiontrigger")}).append(a.trigger)).find(".btn").addClass("secondary"),a.settings||(a.settings={}),$.extend(a.settings,Craft.expandPostArray(Garnish.getPostData(s))),s.find("[name]").removeAttr("name"),o="element-action-form-".concat(Math.floor(1e6*Math.random())),l=$("<form/>",{id:o,method:"post",action:"",class:"hidden",data:{action:a}}).appendTo(Garnish.$bod),s.find("button[type=submit],input[type=submit],.formsubmit").addClass("formsubmit").attr("data-form",o),l.data("trigger",s),this.addListener(l,"submit","_handleActionTriggerSubmit"),this._$triggers=this._$triggers.add(s)):a.destructive?n.push(a):e.push(a);return(e.length||n.length)&&(c=$("<form/>"),this.$actionMenuBtn=$("<button/>",{type:"button",class:"btn secondary menubtn","data-icon":"settings",title:Craft.t("app","Actions")}).appendTo(c),h=$('<ul class="menu"/>').appendTo(c),u=this._createMenuTriggerList(e,!1),d=this._createMenuTriggerList(n,!0),u&&u.appendTo(h),u&&d&&$("<hr/>").appendTo(h),d&&d.appendTo(h),this._$triggers=this._$triggers.add(c)),this._$triggers.appendTo(this.$actionsContainer),this.isAdministrative&&(Craft.currentElementIndex=this),t.next=10,Craft.appendHeadHtml(this.actionsHeadHtml);case 10:return t.next=12,Craft.appendBodyHtml(this.actionsBodyHtml);case 12:Craft.initUiElements(this._$triggers),this.$actionMenuBtn&&this.$actionMenuBtn.data("menubtn").on("optionSelect",this._handleMenuActionTriggerSubmit.bind(this));case 14:case"end":return t.stop()}}),t,this)}))),function(){return g.apply(this,arguments)}),_showExportHud:function(){var t=this;this.$exportBtn.addClass("active"),this.$exportBtn.attr("aria-expanded","true");for(var e=$("<form/>",{class:"export-form"}),n=[],i=0;i<this.exporters.length;i++)n.push({label:this.exporters[i].name,value:this.exporters[i].type});var r=Craft.ui.createSelectField({label:Craft.t("app","Export Type"),options:n,class:"fullwidth"}).appendTo(e),a=Craft.ui.createSelectField({label:Craft.t("app","Format"),options:[{label:"CSV",value:"csv"},{label:"JSON",value:"json"},{label:"XML",value:"xml"}],class:"fullwidth"}).appendTo(e),s=r.find("select");this.addListener(s,"change",(function(){var e=s.val();t.exportersByType[e].formattable?a.removeClass("hidden"):a.addClass("hidden")})),s.trigger("change");var o=this.view.getSelectedElementIds();if(!o.length)var l=Craft.ui.createTextField({label:Craft.t("app","Limit"),placeholder:Craft.t("app","No limit"),type:"number",min:1}).appendTo(e);var c=Craft.ui.createSubmitButton({class:"fullwidth",label:Craft.t("app","Export"),spinner:!0}).appendTo(e),h=new Garnish.MultiFunctionBtn(c);new Garnish.HUD(this.$exportBtn,e).on("hide",(function(){t.$exportBtn.removeClass("active"),t.$exportBtn.attr("aria-expanded","false")}));var u=!1;this.addListener(e,"submit",(function(t){if(t.preventDefault(),!u){u=!0,h.busyEvent();var e=this.getViewParams();if(delete e.baseCriteria.offset,delete e.baseCriteria.limit,delete e.collapsedElementIds,e.type=r.find("select").val(),e.format=a.find("select").val(),o.length)e.criteria.id=o;else{var n=parseInt(l.find("input").val());n&&!isNaN(n)&&(e.criteria.limit=n)}Craft.csrfTokenValue&&(e[Craft.csrfTokenName]=Craft.csrfTokenValue),Craft.downloadFromUrl("POST",Craft.getActionUrl("element-indexes/export"),e).catch((function(t){axios.isCancel(t)||Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){u=!1,h.successEvent()}))}}))},_createMenuTriggerList:function(t,e){if(t&&t.length){var n,i=$("<ul/>"),r=l(t);try{for(r.s();!(n=r.n()).done;){var a=n.value;$("<li/>").append($("<a/>",{id:"".concat(this.namespaceId(a.type),"-actiontrigger"),class:e?"error":null,data:{action:a},text:a.name})).appendTo(i)}}catch(t){r.e(t)}finally{r.f()}return i}},filterHudExists:function(){return this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]},showFilterHud:function(){this.filterHudExists()?this.filterHuds[this.siteId][this.sourceKey].show():this.createFilterHud()},createFilterHud:function(t){this.filterHuds[this.siteId]||(this.filterHuds[this.siteId]={}),this.filterHuds[this.siteId][this.sourceKey]=new C(this,this.sourceKey,this.siteId,t),this.updateFilterBtn()},updateFilterBtn:function(){this.$filterBtn.removeClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",null),this.filterHuds[this.siteId]&&this.filterHuds[this.siteId][this.sourceKey]?(this.$filterBtn.attr("aria-controls",this.filterHuds[this.siteId][this.sourceKey].id).attr("aria-expanded",this.filterHuds[this.siteId][this.sourceKey].showing?"true":"false"),this.hasActiveFilter&&(this.$filterBtn.addClass("active"),"index"===this.settings.context&&Craft.setQueryParam("filters",this.filterHuds[this.siteId][this.sourceKey].serialized))):this.$filterBtn.attr("aria-controls",null)}},{defaults:{context:"index",namespace:null,modal:null,storageKey:null,condition:null,referenceElementId:null,referenceElementSiteId:null,allowedViewModes:null,showHeaderColumn:!0,criteria:null,batchSize:100,disabledElementIds:[],selectable:!1,multiSelect:!1,waitForDoubleClicks:!1,canSelectElement:null,canDuplicateElements:function(t){return!0},onBeforeDuplicateElements:(p=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return p.apply(this,arguments)}),onDuplicateElements:(f=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return f.apply(this,arguments)}),canDeleteElements:function(t){return!0},onBeforeDeleteElements:(d=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return d.apply(this,arguments)}),onDeleteElements:(u=a(i().mark((function t(e){return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t){return u.apply(this,arguments)}),sortable:!1,inlineEditable:null,actions:null,buttonContainer:null,hideSidebar:!1,toolbarSelector:".toolbar:first",refreshSourcesAction:"element-indexes/get-source-tree-html",updateElementsAction:"element-indexes/get-elements",countElementsAction:"element-indexes/count-elements",submitActionsAction:"element-indexes/perform-action",defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,canHaveDrafts:!1,elementTypeName:Craft.t("app","Element"),elementTypePluralName:Craft.t("app","Elements"),onAfterInit:$.noop,onSelectSource:$.noop,onSelectSite:$.noop,onBeforeUpdateElements:$.noop,onUpdateElements:$.noop,onCountResults:$.noop,onSelectionChange:$.noop,onSourcePathChange:$.noop,onEnableElements:$.noop,onDisableElements:$.noop,onAfterAction:$.noop,onSortChange:$.noop}});var b=Garnish.Base.extend({$container:null,$items:null,$selectedItem:null,init:function(t,e){this.$container=$(t);var n=this.$container.find("[data-source-item]");this.setSettings(e,b.defaults),this.$items=$(),this.addItems(n)},addItems:function(t){for(var e=$(t),n=0;n<e.length;n++){var i=e[n];this.addListener(i,"click",this.handleClick.bind(this)),this.addListener(i,"keydown",this.handleKeypress.bind(this))}this.$items=this.$items.add(e)},removeAllItems:function(){for(var t=0;t<this.$items.length;t++)this._deinitItem(this.$items[t]);this.$items=$(),this.$selectedItem=$()},handleKeypress:function(t){var e=t.keyCode;e!==Garnish.RETURN_KEY&&e!==Garnish.SPACE_KEY||(t.preventDefault(),this.selectItem(t.target))},handleClick:function(t){var e=this.getClosestItem(t.target);this.selectItem(e)},getClosestItem:function(t){return $(t).closest("[data-source-item]")},selectItem:function(t){if(0!==t.length){var e=$(t);this.deselectAll(),this.$selectedItem=e.attr("aria-current","true").addClass(this.settings.selectedClass),this.onSelectionChange()}},deselectAll:function(){this.$items.attr("aria-current","false").removeClass(this.settings.selectedClass),this.onSelectionChange()},removeItems:function(t){t=$.makeArray(t);for(var e=!1,n=!1,i=0;i<t.length;i++){var r=t[i],a=$.inArray(r,this.$items);-1!==a&&(this._deinitItem(r),this.$items.splice(a,1),e=!0,$(r).is(this.$selectedItem)&&(n=!0,this.$selectedItem=null))}e&&n&&($(t).removeClass(this.settings.selectedClass),this.onSelectionChange())},onSelectionChange:function(){this.callbackFrame&&(Garnish.cancelAnimationFrame(this.callbackFrame),this.callbackFrame=null),this.callbackFrame=Garnish.requestAnimationFrame(function(){this.callbackFrame=null,this.trigger("selectionChange"),this.settings.onSelectionChange()}.bind(this))},_deinitItem:function(t){var e=$(t);this.removeAllListeners(e)}},{defaults:{selectedClass:"sel",onSelectionChange:$.noop}}),y=Garnish.Base.extend({elementIndex:null,$source:null,sourceKey:null,menu:null,id:null,$trigger:null,$container:null,$sortField:null,$sortAttributeSelect:null,$sortDirectionPicker:null,sortDirectionListbox:null,$tableColumnsField:null,$tableColumnsContainer:null,$revertContainer:null,$revertBtn:null,$closeBtn:null,init:function(t,e){var n=this;this.elementIndex=t,this.$source=e,this.sourceKey=e.data("key"),this.id="view-menu-".concat(Math.floor(1e9*Math.random())),this.$trigger=$("<button/>",{type:"button",class:"btn menubtn hidden",text:Craft.t("app","View"),"aria-label":Craft.t("app","View settings"),"aria-controls":this.id,"data-icon":"sliders"}).appendTo(this.elementIndex.$toolbar),this.$container=$("<div/>",{id:this.id,class:"menu menu--disclosure element-index-view-menu","data-align":"right"}).appendTo(Garnish.$bod),this._buildMenu(),this.addListener(this.$container,"mousedown",(function(t){t.stopPropagation()})),this.menu=new Garnish.DisclosureMenu(this.$trigger),this.menu.on("show",(function(){n.$trigger.addClass("active"),n.updateSortField(),n.updateTableFieldVisibility()})),this.menu.on("hide",(function(){n.$trigger.removeClass("active"),setTimeout((function(){n.tidyTableColumnField()}),Garnish.FX_DURATION)}))},showTrigger:function(){this.$trigger.removeClass("hidden")},hideTrigger:function(){this.$trigger.data("trigger").hide(),this.$trigger.addClass("hidden"),this.menu.hide()},updateTableFieldVisibility:function(){"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode?(this.$tableColumnsContainer&&this.$tableColumnsContainer.closest(".table-columns-field").addClass("hidden"),this.$revertBtn&&this.$revertBtn.addClass("hidden")):(this.$tableColumnsContainer&&this.$tableColumnsContainer.closest(".table-columns-field").removeClass("hidden"),this.$revertBtn&&this.$revertBtn.removeClass("hidden"))},updateSortField:function(){if(!this.elementIndex.settings.sortable){this.$sortField&&("structure"===this.elementIndex.viewMode?(this.$sortField.addClass("hidden"),this.$tableColumnsField&&this.$tableColumnsField.addClass("first-child")):(this.$sortField.removeClass("hidden"),this.$tableColumnsField&&this.$tableColumnsField.removeClass("first-child")));var t=s(this.elementIndex.getSortAttributeAndDirection(),2),e=t[0],n=t[1],i=this.$sortAttributeSelect.children('option[value="score"]');this.elementIndex.searching?i.length||this.$sortAttributeSelect.prepend($("<option/>",{value:"score",text:Craft.t("app","Score")})):i.length&&i.remove(),this.$sortAttributeSelect.val(e),this.sortDirectionListbox.select("asc"===n?0:1),"score"===e?(this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled")):(this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled"))}},updateTableColumnField:function(){var t=this;if(this.$tableColumnsContainer){var e,n,i=this.elementIndex.getSelectedTableColumns();i.forEach((function(i){var r=t.$tableColumnsContainer.find('input[value="'.concat(i,'"]'));r.prop("checked")||r.prop("checked",!0);var a=r.parent();e&&a.index()<n&&a.insertAfter(e),e=a,n=a.index()}));for(var r=this._getTableColumnCheckboxes(),a=0;a<r.length;a++){var s=r.eq(a);s.prop("checked")&&!i.includes(s.val())&&s.prop("checked",!1)}}},tidyTableColumnField:function(){if(this.$tableColumnsContainer){var t=this.elementIndex.getTableColumnOptions(this.$source).map((function(t){return t.attr})).reduce((function(t,i,r){return e(e({},t),{},n({},i,r))}),{});this.$tableColumnsContainer.children().sort((function(e,n){var i=$(e).children('input[type="checkbox"]')[0],r=$(n).children('input[type="checkbox"]')[0];return i.checked&&r.checked?0:i.checked||r.checked?i.checked?-1:1:t[i.value]<t[r.value]?-1:1})).appendTo(this.$tableColumnsContainer)}},revert:function(){this.elementIndex.setSelecetedSourceState({order:null,sort:null,tableColumns:null}),this.updateSortField(),this.updateTableColumnField(),this.tidyTableColumnField(),this.$revertBtn.remove(),this.$revertBtn=null,this.$closeBtn.focus(),this.elementIndex.updateElements()},_buildMenu:function(){var t=this,e=$('<div class="meta"/>').appendTo(this.$container);this.elementIndex.settings.sortable||(this.$sortField=this._createSortField().appendTo(e)),Garnish.isMobileBrowser(!0)||(this.$tableColumnsField=this._createTableColumnsField().appendTo(e)),this.updateSortField(),this.$sortAttributeSelect&&this.$sortAttributeSelect.focus();var n=$("<div/>",{class:"flex menu-footer"}).appendTo(this.$container);this.$revertContainer=$("<div/>",{class:"flex-grow"}).appendTo(n),(this.elementIndex.getSelectedSourceState("order")||this.elementIndex.getSelectedSourceState("sort")||this.elementIndex.getSelectedSourceState("tableColumns"))&&this._createRevertBtn(),"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode&&this.$revertBtn&&this.$revertBtn.addClass("hidden"),this.$closeBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close")}).appendTo(n).on("click",(function(){t.menu.hide()}))},_createSortField:function(){var t=this,e=$('<div class="flex"/>'),n=this.elementIndex.getSortOptions(this.$source).sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1})).reduce((function(t,e){return t[e.attr.startsWith("field:")?1:0].push(e),t}),[[],[]]);n[1].length&&n[1].unshift({optgroup:Craft.t("app","Fields")});var i=Craft.ui.createSelect({options:n.flat().map((function(t){return t.optgroup?t:{label:Craft.escapeHtml(t.label),value:t.attr}}))}).addClass("fullwidth").appendTo($('<div class="flex-grow"/>').appendTo(e));this.$sortAttributeSelect=i.children("select").attr({"aria-label":Craft.t("app","Sort attribute")}),this.$sortDirectionPicker=$("<section/>",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(e),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(e){e.data("dir")!==t.elementIndex.getSelectedSortDirection()&&(t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),e.data("dir")),t.elementIndex.sortByScore||t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn())}}),this.$sortAttributeSelect.on("change",(function(){t.elementIndex.setSelectedSortAttribute(t.$sortAttributeSelect.val(),null,!1),t.elementIndex.selectViewMode(t.elementIndex.viewMode),t.elementIndex.updateElements(),t._createRevertBtn()}));var r=Craft.ui.createField(e,{label:Craft.t("app","Sort by"),fieldset:!0});return r.addClass("sort-field"),r},_getTableColumnCheckboxes:function(){return this.$tableColumnsContainer?this.$tableColumnsContainer.find('input[type="checkbox"]'):$()},_createTableColumnsField:function(){var t=this,e=this.elementIndex.getTableColumnOptions(this.$source).sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1}));if(!e.length)return $();this.$tableColumnsContainer=Craft.ui.createCheckboxSelect({options:e.map((function(t){return{label:t.label,value:t.attr}})),sortable:!0}),this.updateTableColumnField(),this.tidyTableColumnField(),this.$tableColumnsContainer.data("dragSort").on("sortChange",(function(){t._onTableColumnChange()})),this._getTableColumnCheckboxes().on("change",(function(e){t._onTableColumnChange()}));var n=Craft.ui.createField(this.$tableColumnsContainer,{label:Craft.t("app","Table Columns"),fieldset:!0});return n.addClass("table-columns-field"),"table"!==this.elementIndex.viewMode&&"structure"!==this.elementIndex.viewMode&&n.addClass("hidden"),n},_onTableColumnChange:function(){for(var t=[],e=this._getTableColumnCheckboxes().filter(":checked"),n=0;n<e.length;n++)t.push(e.eq(n).val());Craft.compare(t,this.elementIndex.getSelectedTableColumns(this.$source))||(this.elementIndex.setSelectedTableColumns(t,!1),this.elementIndex.updateElements(),this._createRevertBtn())},_createRevertBtn:function(){var t=this;this.$revertBtn||(this.$revertBtn=$("<button/>",{type:"button",class:"light",text:Craft.t("app","Use defaults")}).appendTo(this.$revertContainer).on("click",(function(){t.revert()})))},destroy:function(){this.menu.destroy(),delete this.menu,this.base()}}),C=Garnish.HUD.extend({elementIndex:null,sourceKey:null,siteId:null,id:null,loading:!0,conditionConfig:null,serialized:null,$clearBtn:null,cleared:!1,get isActive(){return this.showing||this.conditionConfig||this.serialized},init:function(t,e,n,r){var s=this;this.elementIndex=t,this.sourceKey=e,this.siteId=n,this.id="filter-".concat(Math.floor(1e9*Math.random())),r&&(r.conditionConfig?(this.conditionConfig=r.conditionConfig,delete r.conditionConfig):r.serialized&&(this.serialized=r.serialized,delete r.serialized));var o=$("<div/>").append($("<div/>",{class:"spinner"})).append($("<div/>",{text:Craft.t("app","Loading"),class:"visually-hidden","aria-role":"alert"}));this.base(this.elementIndex.$filterBtn,o,Object.assign({hudClass:"hud element-filter-hud loading"},r)),this.$hud.attr({id:this.id,"aria-live":"polite","aria-busy":"false"}),this.$tip.remove(),this.$tip=null,this.$body.on("submit",(function(t){t.preventDefault(),s.hide()})),Craft.sendActionRequest("POST","element-indexes/filter-hud",{data:{elementType:this.elementIndex.elementType,source:this.sourceKey,condition:this.elementIndex.settings.condition,conditionConfig:this.conditionConfig,serialized:this.serialized,id:"".concat(this.id,"-filters")}}).then(function(){var t=a(i().mark((function t(e){var n;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s.loading=!1,s.$hud.removeClass("loading"),o.remove(),s.$main.append(e.data.hudHtml),t.next=6,Craft.appendHeadHtml(e.data.headHtml);case 6:return t.next=8,Craft.appendBodyHtml(e.data.bodyHtml);case 8:n=$("<div/>",{class:"flex flex-nowrap"}).appendTo(s.$main),$("<div/>",{class:"flex-grow"}).appendTo(n),s.$clearBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(n),$("<button/>",{type:"submit",class:"btn secondary",text:Craft.t("app","Apply")}).appendTo(n),s.$clearBtn.on("click",(function(){s.clear()})),s.$hud.find(".condition-container").on("htmx:beforeRequest",(function(){s.setBusy()})),s.$hud.find(".condition-container").on("htmx:load",(function(){s.setReady(),s.updateSizeAndPosition(!0)})),s.setFocus(),s.conditionConfig&&(s.conditionConfig=null,s.serialized=s.serialize());case 17:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})),this.$hud.css("position","fixed"),this.addListener(Garnish.$win,"scroll,resize",(function(){s.updateSizeAndPosition(!0)}))},addListener:function(t,e,n,i){t===this.$main&&"resize"===e||this.base(t,e,n,i)},setBusy:function(){this.$hud.attr("aria-busy","true"),$("<div/>",{class:"visually-hidden",text:Craft.t("app","Loading")}).insertAfter(this.$main.find(".htmx-indicator"))},setReady:function(){this.$hud.attr("aria-busy","false")},setFocus:function(){Garnish.setFocusWithin(this.$main)},clear:function(){this.cleared=!0,this.hide()},updateSizeAndPositionInternal:function(){var t,e=this.elementIndex.$searchContainer[0].getBoundingClientRect(),n=Garnish.$win.height(),i=n-e.bottom;this.$body.height()>i&&(t=n-e.bottom-10),this.$hud.css({width:this.elementIndex.$searchContainer.outerWidth()-2,top:e.top+this.elementIndex.$searchContainer.outerHeight(),left:e.left+1,height:t?"".concat(t,"px"):"unset",overflowY:t?"scroll":"unset"})},onShow:function(){this.base(),this.$clearBtn&&this.$clearBtn.text(Craft.t("app","Clear")),this.elementIndex.updateFilterBtn(),this.setFocus()},onHide:function(){this.base(),this.serialized!==(this.serialized=this.serialize())&&this.elementIndex.updateElements(),this.cleared?this.destroy():(this.$hud.detach(),this.$shade.detach()),this.elementIndex.updateFilterBtn(),this.elementIndex.$filterBtn.focus()},hasRules:function(){return 0!==this.$main.has(".condition-rule").length},serialize:function(){return!this.cleared&&this.hasRules()?this.$body.serialize():null},destroy:function(){this.base(),delete this.elementIndex.filterHuds[this.siteId][this.sourceKey]}})},8495:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.BaseElementIndexView=Garnish.Base.extend({$container:null,$loadingMoreSpinner:null,$elementContainer:null,$scroller:null,elementIndex:null,elementSelect:null,loadingMore:!1,_totalVisible:null,_morePending:null,_handleEnableElements:null,_handleDisableElements:null,get thumbLoader(){return console.warn("Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t,e,n){var i=this;this.elementIndex=t,this.$container=$(e),this.setSettings(n,Craft.BaseElementIndexView.defaults),this.$loadingMoreSpinner=$('<div class="centeralign hidden"><div class="spinner loadingmore"></div></div>').insertAfter(this.$container),this.$elementContainer=this.getElementContainer();var r=this.$elementContainer.children();this.setTotalVisible(r.length),this.setMorePending(this.elementIndex.settings.batchSize&&r.length==this.elementIndex.settings.batchSize),Craft.cp.elementThumbLoader.load(r),this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.$elementContainer,this.filterSelectableElements(r),{multi:this.settings.multiSelect,vertical:this.isVerticalList(),filter:function(t){return!$(t).closest("a[href],.toggle,.btn,[role=button]").length},checkboxMode:this.settings.checkboxMode,waitForDoubleClicks:this.settings.waitForDoubleClicks,onSelectionChange:this.onSelectionChange.bind(this)}),this._handleEnableElements=function(t){i.elementSelect.addItems(i.filterSelectableElements($(t.elements)))},this._handleDisableElements=function(t){i.elementSelect.removeItems(t.elements)},this.elementIndex.on("enableElements",this._handleEnableElements),this.elementIndex.on("disableElements",this._handleDisableElements)),this.elementIndex.isAdministrative&&(this._handleElementEditing=function(t){if(!$(t.target).closest("a[href],button,[role=button]").length){var e,n=$(t.target);if(n.hasClass("element"))e=n;else if(!(e=n.closest(".element")).length)return;Garnish.hasAttr(e,"data-editable")&&!e.closest(".elementselect").length&&Craft.createElementEditor(e.data("type"),e)}},this.elementIndex.trashed||this.addListener(this.$elementContainer,"dblclick,taphold",this._handleElementEditing)),this.afterInit(),!this.elementIndex.paginated&&this.elementIndex.settings.batchSize&&("index"===this.settings.context?this.$scroller=Garnish.$scrollContainer:this.$scroller=this.elementIndex.$main,this.$scroller.scrollTop(0),this.addListener(this.$scroller,"scroll","maybeLoadMore"),this.maybeLoadMore())},filterSelectableElements:function(t){for(var e=[],n=0;n<t.length;n++){var i=t.eq(n);i.hasClass("disabled")?i.find(".checkbox").attr({tabindex:"-1","aria-checked":"true"}):this.canSelectElement(i)?e.push(i[0]):i.find(".checkbox").remove()}return $(e)},canSelectElement:function(t){return this.settings.canSelectElement?this.settings.canSelectElement(t):!!t.data("id")},getElementContainer:function(){return this.$container},afterInit:function(){},getAllElements:function(){return this.$elementContainer.children()},getEnabledElements:function(){return this.$elementContainer.children(":not(.disabled)")},getElementById:function(t){var e=this.$elementContainer.children('[data-id="'+t+'"]:first');return e.length?e:null},getSelectedElements:function(){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.$selectedItems},getSelectedElementIds:function(){var t;try{t=this.getSelectedElements()}catch(t){}var e=[];if(t)for(var n=0;n<t.length;n++){var i=t.eq(n).data("id");i&&e.push(i)}return e},selectElement:function(t){if(!this.elementSelect)throw"This view is not selectable.";return this.elementSelect.selectItem(t,!0),!0},selectElementById:function(t){if(!this.elementSelect)throw"This view is not selectable.";var e=this.getElementById(t);return!!e&&(this.elementSelect.selectItem(e,!0),!0)},selectAllElements:function(){this.elementSelect.selectAll()},deselectAllElements:function(){this.elementSelect.deselectAll()},getElementCheckbox:function(t){return $(t).find('[role="checkbox"]')},isVerticalList:function(){return!1},getTotalVisible:function(){return this._totalVisible},setTotalVisible:function(t){this._totalVisible=t},getMorePending:function(){return this._morePending},setMorePending:function(t){this._morePending=t},maybeLoadMore:function(){this.canLoadMore()&&this.loadMore()},canLoadMore:function(){return!(!this.getMorePending()||!this.elementIndex.settings.batchSize)&&(this.$scroller[0]===Garnish.$win[0]?Garnish.$win.innerHeight()+Garnish.$win.scrollTop()>=this.$container.offset().top+this.$container.height():this.$scroller.prop("scrollHeight")-this.$scroller.scrollTop()<=this.$scroller.outerHeight()+15)},loadMore:function(){var t=this;this.getMorePending()&&!this.loadingMore&&this.elementIndex.settings.batchSize&&(this.loadingMore=!0,this.$loadingMoreSpinner.removeClass("hidden"),this.removeListener(this.$scroller,"scroll"),Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:this.getLoadMoreParams()}).then(function(){var i,r=(i=e().mark((function n(i){var r;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden"),t.isAdministrative&&(Craft.currentElementIndex=t),r=$(i.data.html),t.appendElements(r),e.next=7,Craft.appendHeadHtml(i.data.headHtml);case 7:return e.next=9,Craft.appendBodyHtml(i.data.bodyHtml);case 9:t.elementSelect&&(t.elementSelect.addItems(t.filterSelectableElements(r)),t.elementIndex.updateActionTriggers()),t.setTotalVisible(t.getTotalVisible()+r.length),t.setMorePending(r.length==t.elementIndex.settings.batchSize),t.addListener(t.$scroller,"scroll","maybeLoadMore"),t.maybeLoadMore();case 14:case"end":return e.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(r,a){var s=i.apply(t,e);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}()).catch((function(e){t.loadingMore=!1,t.$loadingMoreSpinner.addClass("hidden")})))},getLoadMoreParams:function(){var t=$.extend(!0,{},this.settings.params);return t.criteria.offset=this.getTotalVisible(),t},appendElements:function(t){t.appendTo(this.$elementContainer),Craft.cp.elementThumbLoader.load(t),this.onAppendElements(t)},onAppendElements:function(t){this.settings.onAppendElements(t),this.trigger("appendElements",{newElements:t})},onSelectionChange:function(){this.settings.onSelectionChange(),this.trigger("selectionChange")},disable:function(){this.elementSelect&&this.elementSelect.disable()},enable:function(){this.elementSelect&&this.elementSelect.enable()},destroy:function(){this.$loadingMoreSpinner.remove(),this.elementSelect&&(this.elementIndex.off("enableElements",this._handleEnableElements),this.elementIndex.off("disableElements",this._handleDisableElements),this.elementSelect.destroy(),delete this.elementSelect),this.base()}},{defaults:{context:"index",batchSize:null,params:null,selectable:!1,multiSelect:!1,canSelectElement:null,checkboxMode:!1,waitForDoubleClicks:!1,sortable:!1,loadMoreElementsAction:"element-indexes/get-more-elements",onAppendElements:$.noop,onSelectionChange:$.noop,onSortChange:$.noop}})},5970:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||n(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){if(t){if("string"==typeof t)return i(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(t,e):void 0}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function r(){"use strict";r=function(){return n};var e,n={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function a(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function s(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(t){a(s,i,r,o,l,"next",t)}function l(t){a(s,i,r,o,l,"throw",t)}o(void 0)}))}}var o,l,c;Craft.BaseElementSelectInput=Garnish.Base.extend({elementSelect:null,elementSort:null,modal:null,elementEditor:null,modalFirstOpen:!0,$container:null,$form:null,$elementsContainer:null,$elements:null,$addElementBtn:null,$spinner:null,_initialized:!1,get thumbLoader(){return console.warn("Craft.BaseElementSelectInput::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead."),Craft.cp.elementThumbLoader},init:function(t){var e=this;if(!$.isPlainObject(t)){for(var n={},i=["id","name","elementType","sources","criteria","sourceElementId","limit","modalStorageKey","fieldId"],r=0;r<i.length&&void 0!==arguments[r];r++)n[i[r]]=arguments[r];t=n}this.setSettings(t,Craft.BaseElementSelectInput.defaults),this.settings.modalStorageKey&&(this.modalStorageKey="BaseElementSelectInput."+this.settings.modalStorageKey),(1==this.settings.limit||this.settings.maintainHierarchy)&&(this.settings.sortable=!1),this.$container=this.getContainer(),this.$form=this.$container.closest("form"),this.$container.data("elementSelect",this),this.$elementsContainer=this.getElementsContainer(),this.$addElementBtn=this.getAddElementsBtn(),this.$spinner=this.getSpinner(),this.initElementSelect(),this.initElementSort(),this.resetElements(),this.$addElementBtn.length&&this.addListener(this.$addElementBtn,"activate","showModal"),Garnish.requestAnimationFrame((function(){e._initialized=!0})),this.elementSelect&&this.addListener(Garnish.$win,"mousedown",(function(t){e.$container.is(t.target)||e.$container.find(t.target).length||e.elementSelect.deselectAll()}))},get totalSelected(){return this.$elements.length},getContainer:function(){return $("#"+this.settings.id)},getElementsContainer:function(){return this.$container.children(".elements")},getElements:function(){return this.$elementsContainer.hasClass("structure")?this.$elementsContainer.find("> li .row .element"):this.$elementsContainer.find("> li > .element")},getAddElementsBtn:function(){return this.$container.find(".btn.add:first")},getSpinner:function(){return this.$container.find(".spinner")},initElementSelect:function(){this.settings.selectable&&(this.elementSelect=new Garnish.Select(this.elementSelectSettings()))},elementSelectSettings:function(){return{multi:this.settings.sortable,filter:function(t){return!$(t).closest("a[href],button,[role=button]").length},makeFocusable:!1}},initElementSort:function(){var t=this;this.settings.sortable&&(this.elementSort=new Garnish.DragSort({container:this.$elementsContainer,filter:this.settings.selectable?function(){return t.elementSort.$targetItem.children(".element").hasClass("sel")?t.elementSelect.getSelectedItems().parent("li"):t.elementSort.$targetItem}:null,ignoreHandleSelector:".delete",handle:function(){switch(t.settings.viewMode){case"list":case"large":return"> .element > .chip-content > .chip-actions > .move";case"cards":return"> .element > .card-actions-container > .card-actions > .move";default:return null}}(),axis:this.getElementSortAxis(),collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onSortChange()}}))},getElementSortAxis:function(){return["list"].includes(this.settings.viewMode)&&!this.getElementsContainer().hasClass("inline-chips")?"y":null},canAddMoreElements:function(){return!this.settings.limit||this.$elements.length<this.settings.limit},updateAddElementsBtn:function(){this.canAddMoreElements()?this.enableAddElementsBtn():this.disableAddElementsBtn()},enableAddElementsBtn:function(){this.$addElementBtn.length&&this.$addElementBtn.removeClass("hidden"),this.updateButtonContainer()},disableAddElementsBtn:function(){this.$addElementBtn.length&&this.$addElementBtn.addClass("hidden"),this.updateButtonContainer()},showSpinner:function(){this.$spinner&&this.$spinner.removeClass("hidden"),this.updateButtonContainer()},hideSpinner:function(){this.$spinner&&this.$spinner.addClass("hidden"),this.updateButtonContainer()},updateButtonContainer:function(){var t=this.$addElementBtn.length&&this.$addElementBtn.parent(".flex");null!=t&&t.length&&(t.children(":not(.hidden)").length?t.removeClass("hidden"):t.addClass("hidden"))},focusNextLogicalElement:function(){this.canAddMoreElements()?this.$addElementBtn.length&&this.$addElementBtn.get(0).focus():this.focusLastRemoveBtn()},focusLastRemoveBtn:function(){var t=this.$container.find(".delete");t.length&&t.last()[0].focus()},resetElements:function(){null!==this.$elements?this.removeElements(this.$elements):this.$elements=$(),this.addElements(this.getElements())},addElements:function(t){for(var e=this,n=function(){var n=t.eq(i),r=e.defineElementActions(n);if(r.length){Craft.addActionsToChip(n,r);var a=n.find("> .chip-content > .chip-actions .action-btn, > .card-actions-container > .card-actions .action-btn").data("disclosureMenu"),s=a.$container.find("[data-move-forward]")[0],o=a.$container.find("[data-move-backward]")[0];a.on("show",(function(){var t=n.parent(),e=t.prev(),i=t.next();s&&a.toggleItem(s,e.length),o&&a.toggleItem(o,i.length)}))}e.settings.sortable&&$("<button/>",{type:"button",class:"move icon",title:Craft.t("app","Reorder"),"aria-label":Craft.t("app","Reorder"),"aria-describedby":n.find(".label").attr("id")}).appendTo(n.find("> .chip-content > .chip-actions, > .card-actions-container > .card-actions"))},i=0;i<t.length;i++)n();Craft.cp.elementThumbLoader.load(t),this.settings.selectable&&this.elementSelect.addItems(t),this.settings.sortable&&this.elementSort.addItems(t.parent("li")),this.settings.editable&&(this._handleShowElementEditor=function(t){if("taphold"!==t.type||"BUTTON"!==t.target.nodeName){var n=$(t.currentTarget);!Garnish.hasAttr(n,"data-editable")||n.hasClass("disabled")||n.hasClass("loading")||(e.elementEditor=e.createElementEditor(n))}},this.addListener(t,"dblclick",this._handleShowElementEditor),$.isTouchCapable()&&this.addListener(t,"taphold",this._handleShowElementEditor)),t.on("keydown",(function(t){if([Garnish.BACKSPACE_KEY,Garnish.DELETE_KEY].includes(t.keyCode)){t.stopPropagation(),t.preventDefault();for(var n=e.elementSelect.getSelectedItems(),i=0;i<n.length;i++)e.removeElement(n.eq(i))}})),this.$elements=this.$elements.add(t),this.updateAddElementsBtn(),this.onAddElements(),this.onSortChange()},defineElementActions:function(t){var e=this,n=[];if(this.settings.sortable){var i=this.getElementSortAxis();n.push({icon:"y"===i?"arrow-up":"ltr"===Craft.orientation?"arrow-left":"arrow-right",label:"y"===i?Craft.t("app","Move up"):Craft.t("app","Move forward"),callback:function(){e.moveElementForward(t)},attributes:{"data-move-forward":!0}}),n.push({icon:"y"===i?"arrow-down":"ltr"===Craft.orientation?"arrow-right":"arrow-left",label:"y"===i?Craft.t("app","Move down"):Craft.t("app","Move backward"),callback:function(){e.moveElementBackward(t)},attributes:{"data-move-backward":!0}})}return n.push({icon:"remove",label:Craft.t("app","Remove"),callback:function(){e.removeElement(t)},destructive:!0}),n},createElementEditor:function(t,e){return e=Object.assign({elementSelectInput:this,prevalidate:this.settings.prevalidate},e),Craft.createElementEditor(this.settings.elementType,t,e)},replaceElement:function(t,e){var n=this;return new Promise((function(i,a){var o=n.$elements.filter('[data-id="'.concat(t,'"]'));o.length?(n.showSpinner(),n.settings.criteria.siteId,n.settings.viewMode,Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:n.settings.elementType,id:e,siteId:n.settings.criteria.siteId,instances:[{context:"field",ui:["list","large"].includes(n.settings.viewMode)?"chip":"card",size:"large"===n.settings.viewMode?"large":"small",showActionMenu:n.settings.showActionMenu}]}]}}).then(function(){var t=s(r().mark((function t(a){var s,l;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s=a.data,n.removeElement(o),l=Craft.getElementInfo(s.elements[e][0]),n.selectElements([l]).then(i),t.next=6,Craft.appendHeadHtml(s.headHtml);case 6:return t.next=8,Craft.appendBodyHtml(s.bodyHtml);case 8:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){var e,n;Craft.cp.displayError(null==t||null===(e=t.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.message),a(null==t||null===(n=t.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.message)})).finally((function(){n.hideSpinner()}))):a("No element selected with an ID of ".concat(t,"."))}))},onSortChange:function(){var t;null===(t=this.elementSelect)||void 0===t||t.resetItemOrder(),this.$elements=$().add(this.$elements)},moveElementForward:function(t){var e=t.closest("li"),n=e.prev();n.length&&(e.insertBefore(n),this.onSortChange())},moveElementBackward:function(t){var e=t.closest("li"),n=e.next();n.length&&(e.insertAfter(n),this.onSortChange())},removeElements:function(t){var e,n;if(this.settings.selectable&&this.elementSelect.removeItems(t),this.modal){for(var i=[],r=0;r<t.length;r++){var a=t.eq(r).data("id");a&&i.push(a)}i.length&&this.modal.elementIndex.enableElementsById(i)}if(t.children("input").prop("disabled",!0),this.settings.selectable){var s=this.$elements.index(t.last());n=this.$elements.eq(s+1)}null!==(e=n)&&void 0!==e&&e.length?n.focus():this.focusNextLogicalElement(),this.$elements=this.$elements.not(t),this.updateAddElementsBtn(),this.onSortChange(),this.onRemoveElements()},removeElement:function(t){if(this.settings.maintainHierarchy){var e=t.add(t.parent().siblings("ul").find(".element"));$("[name]",e).removeAttr("name"),this.removeElements(e);for(var n=0;n<e.length;n++)this._animateStructureElementAway(e,n)}else $("[name]",t).removeAttr("name"),this.removeElements(t),this.animateElementAway(t,(function(){t.parent("li").remove()}))},animateElementAway:function(t,e){t.css("z-index",0);var n={opacity:-1};n["margin-"+Craft.left]=-(t.outerWidth()+parseInt(t.css("margin-"+Craft.right))),(["list","cards"].includes(this.settings.viewMode)||0===this.$elements.length)&&(n["margin-bottom"]=-(t.outerHeight()+parseInt(t.css("margin-bottom")))),t.velocity(n,Craft.BaseElementSelectInput.REMOVE_FX_DURATION,(function(){e&&e()}))},showModal:function(){this.canAddMoreElements()&&(this.modal?this.modal.show():(this.modal=this.createModal(),this.modalFirstOpen=!1))},createModal:function(){return Craft.createElementSelectorModal(this.settings.elementType,this.getModalSettings())},getModalSettings:function(){var t=$.extend({closeOtherModals:!1,storageKey:this.modalStorageKey,sources:this.settings.sources,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:Object.assign({},this.settings.criteria),multiSelect:1!=this.settings.limit,hideOnSelect:!1,showSiteMenu:this.settings.showSiteMenu,disabledElementIds:this.getDisabledElementIds(),onSelect:this.onModalSelect.bind(this),onHide:this.onModalHide.bind(this),triggerElement:this.$addElementBtn,modalTitle:Craft.t("app","Choose")},this.settings.modalSettings);return this.modalFirstOpen||(t.preferStoredSource=!0),t},getSelectedElementIds:function(){for(var t=[],e=0;e<this.$elements.length;e++)t.push(this.$elements.eq(e).data("id"));return t},getDisabledElementIds:function(){var t,e=this.getSelectedElementIds();return!this.settings.allowSelfRelations&&this.settings.sourceElementId&&e.push(this.settings.sourceElementId),this.settings.disabledElementIds&&e.push.apply(e,function(t){if(Array.isArray(t))return i(t)}(t=this.settings.disabledElementIds)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||n(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),e},onModalSelect:(c=s(r().mark((function t(n){var i,a,s,o,l,c,h,u,d=this;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner(),i=function(){switch(d.settings.viewMode){case"large":return["chip","large"];case"cards":return["card",null];default:return["chip","small"]}}(),a=e(i,2),s=a[0],o=a[1],t.next=7,Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:this.settings.elementType,id:n.map((function(t){return t.id})),siteId:n[0].siteId,instances:[{context:"field",ui:s,size:o,showActionMenu:this.settings.showActionMenu}]}]}});case 7:for(l=t.sent,c=l.data,h=0;h<n.length;h++)void 0!==c.elements[n[h].id]&&(n[h].$modalElement=n[h].$element,n[h].$element=$(c.elements[n[h].id][0]));if(!this.settings.maintainHierarchy){t.next=15;break}return t.next=13,this.selectStructuredElements(n);case 13:t.next=19;break;case 15:return this.settings.limit&&(u=this.settings.limit-this.$elements.length,n.length>u&&(n=n.slice(0,u))),t.next=18,this.selectElements(n);case 18:this.updateDisabledElementsInModal();case 19:return this.modal.enable(),this.modal.enableCancelBtn(),this.modal.enableSelectBtn(),this.modal.hideFooterSpinner(),this.modal.hide(),t.next=26,Craft.appendHeadHtml(c.headHtml);case 26:return t.next=28,Craft.appendBodyHtml(c.bodyHtml);case 28:case"end":return t.stop()}}),t,this)}))),function(t){return c.apply(this,arguments)}),onModalHide:function(){var t=this;this.modal&&this.settings.condition&&this.settings.referenceElementId&&(this.modal.destroy(),this.modal=null),this.canAddMoreElements()||setTimeout((function(){t.focusNextLogicalElement()}),200)},selectElements:(l=s(r().mark((function t(e){var n,i,a,s;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(n=0;n<e.length;n++)i=e[n],a=this.createNewElement(i),this.appendElement(a),this.addElements(a),(s=i.$modalElement||i.$element)&&s.parent().length&&this.animateElementIntoPlace(s,a),i.$element=a;this.onSelectElements(e);case 2:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)}),selectStructuredElements:(o=s(r().mark((function t(e){var n,i,a,s,o,l,c,h,u,d;return r().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:for(n=this.getSelectedElementIds(),i=0;i<e.length;i++)n.push(e[i].id);return a={elementIds:n,siteId:e[0].siteId,containerId:this.settings.id,name:this.settings.name,branchLimit:this.settings.branchLimit,selectionLabel:this.settings.selectionLabel,elementType:this.settings.elementType},t.next=5,Craft.sendActionRequest("POST","relational-fields/structured-input-html",{data:a});case 5:for(s=t.sent,o=$(s.data.html),l=o.children(".elements"),this.$elementsContainer.replaceWith(l),this.$elementsContainer=l,this.resetElements(),c=[],h=0;h<e.length;h++)u=e[h],(d=this.getElementById(u.id))&&(this.animateElementIntoPlace(u.$element,d),c.push(u));this.updateDisabledElementsInModal(),this.onSelectElements(c);case 14:case"end":return t.stop()}}),t,this)}))),function(t){return o.apply(this,arguments)}),createNewElement:function(t){var e=t.$element.clone();return Craft.t("app","Remove {label}",{label:Craft.escapeHtml(t.label)}),Craft.setElementSize(e,"large"===this.settings.viewMode?"large":"small"),e.addClass("removable").append($("<input/>",{type:"hidden",name:this.settings.name+(this.settings.single?"":"[]"),value:t.id})),e},appendElement:function(t){$("<li/>").append(t).appendTo(this.$elementsContainer)},animateElementIntoPlace:function(t,e){var n=t.offset(),i=e.offset(),r=e.clone().appendTo(Garnish.$bod).width(e.width());e.css("visibility","hidden"),r.css({position:"absolute",zIndex:1e4,top:n.top,left:n.left});var a={top:i.top,left:i.left};r.velocity(a,Craft.BaseElementSelectInput.ADD_FX_DURATION,(function(){r.remove(),e.css("visibility","visible")}))},updateDisabledElementsInModal:function(){this.modal.elementIndex&&this.modal.elementIndex.disableElementsById(this.getDisabledElementIds())},getElementById:function(t){for(var e=0;e<this.$elements.length;e++){var n=this.$elements.eq(e);if(n.data("id")==t)return n}},onSelectElements:function(t){this.trigger("selectElements",{elements:t}),this.settings.onSelectElements(t),this.$container.trigger("change")},onAddElements:function(){this.trigger("addElements"),this.settings.onAddElements(),this.$container.trigger("change")},onRemoveElements:function(){this.trigger("removeElements"),this.settings.onRemoveElements(),this.$container.trigger("change")},_animateStructureElementAway:function(t,e){var n,i=this;e===t.length-1&&(n=function(){var e=t.first().parent().parent(),n=e.parent();n[0]===i.$elementsContainer[0]||e.siblings().length?e.remove():n.remove()});var r=function(){i.animateElementAway(t.eq(e),n)};0===e?r():setTimeout(r,100*e)}},{ADD_FX_DURATION:200,REMOVE_FX_DURATION:200,defaults:{id:null,name:null,fieldId:null,elementType:null,sources:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:{},allowSelfRelations:!1,sourceElementId:null,disabledElementIds:null,viewMode:"list",single:!1,maintainHierarchy:!1,branchLimit:null,limit:null,showSiteMenu:!1,modalStorageKey:null,modalSettings:{},onAddElements:$.noop,onSelectElements:$.noop,onRemoveElements:$.noop,sortable:!0,selectable:!0,showActionMenu:!0,editable:!0,prevalidate:!1,editorSettings:{}}})},4993:function(){Craft.BaseElementSelectorModal=Garnish.Modal.extend({elementType:null,elementIndex:null,supportSidebarToggleView:!1,$body:null,$content:null,$footer:null,$selectBtn:null,$sidebar:null,$sources:null,$sourceToggles:null,$sidebarToggleBtn:null,$sidebarCloseBtn:null,$mainHeading:null,$main:null,$search:null,$elements:null,$tbody:null,$primaryButtons:null,$secondaryButtons:null,$cancelBtn:null,init:function(t,e){this.elementType=t,this.setSettings(e,Craft.BaseElementSelectorModal.defaults);var n="elementSelectorModalHeading-"+Date.now(),i=$("<div/>",{class:"modal elementselectormodal","aria-labelledby":n}).appendTo(Garnish.$bod),r=$("<div/>",{class:this.settings.showTitle?"header":"visually-hidden"}).appendTo(i);$("<h1/>",{id:n,text:this.settings.modalTitle}).appendTo(r);var a=$("<div/>",{class:"body"}).append($("<div/>",{class:"spinner big"})).appendTo(i);this.$footer=$("<div/>",{class:"footer"}).appendTo(i),this.settings.fullscreen&&(i.addClass("fullscreen"),this.settings.minGutter=0),this.base(i,this.settings),this.$secondaryButtons=$('<div class="buttons left secondary-buttons"/>').appendTo(this.$footer),this.$primaryButtons=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$primaryButtons),this.$selectBtn=Craft.ui.createSubmitButton({class:"disabled",label:this.settings.selectBtnLabel,spinner:!0}).attr("aria-disabled","true").appendTo(this.$primaryButtons),this.$body=a,this.addListener(this.$cancelBtn,"activate","cancel"),this.addListener(this.$selectBtn,"activate","selectElements")},updateModalBottomPadding:function(){var t=this.$footer.outerHeight();t!==parseInt(this.$container.css("padding-bottom"))&&this.$container.css("padding-bottom",t)},updateSidebarView:function(){this.supportSidebarToggleView&&(this.sidebarShouldBeHidden()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView())},sidebarShouldBeHidden:function(){return this.$container.outerWidth()<550},resetView:function(){this.$mainHeader&&this.$mainHeader.remove(),this.$sidebarHeader&&this.$sidebarHeader.remove(),this.$sidebarToggleBtn=null,this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden")},buildSidebarToggleView:function(){var t=this;!this.$sidebarToggleBtn&&this.sidebarShouldBeHidden()&&(this.$sidebarHeader=$('<div class="sidebar-header"/>').prependTo(this.$sidebar),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sidebarHeader),this.$mainHeader=$('<div class="main-header"/>').prependTo(this.$main),this.$mainHeading=$('<h2 class="main-heading">'.concat(this.getActiveSourceName(),"</h2>")).appendTo(this.$mainHeader),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$mainHeader),this.$sidebar.attr("id","modal-sidebar"),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar()})))},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$body.addClass("has-sidebar"),this.$content.addClass("has-sidebar"),this.$sidebar.removeClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar();var e=Garnish.getFocusedElement();$.contains(t.$sidebar.get(0),e.get(0))&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$sidebarToggleBtn&&(this.sidebarIsOpen()&&(Garnish.uiLayerManager.removeLayer(),this.$sidebar.addClass("hidden"),this.$sidebarToggleBtn.attr("aria-expanded","false")),this.$body.removeClass("has-sidebar"),this.$content.removeClass("has-sidebar"))},getActiveSourceName:function(){return this.$sidebar.find(".sel").text()},onFadeIn:function(){this.elementIndex?(this.updateModalBottomPadding(),Garnish.isMobileBrowser(!0)||this.elementIndex.$search.trigger("focus")):this._createElementIndex(),this.base()},onSelectionChange:function(){this.updateSelectBtnState()},onSelectSource:function(){this.updateHeading(),this.updateModalBottomPadding()},updateHeading:function(){this.$mainHeading&&this.$mainHeading.text(this.getActiveSourceName())},updateSelectBtnState:function(){this.$selectBtn&&(this.hasSelection()?this.enableSelectBtn():this.disableSelectBtn())},hasSelection:function(){return this.elementIndex&&this.elementIndex.getSelectedElements().length},enableSelectBtn:function(){this.$selectBtn.removeClass("disabled").attr("aria-disabled","false")},disableSelectBtn:function(){this.$selectBtn.addClass("disabled").attr("aria-disabled","true")},enableCancelBtn:function(){this.$cancelBtn.removeClass("disabled")},disableCancelBtn:function(){this.$cancelBtn.addClass("disabled")},showFooterSpinner:function(){this.$selectBtn.addClass("loading")},hideFooterSpinner:function(){this.$selectBtn.removeClass("loading")},cancel:function(){this.$cancelBtn.hasClass("disabled")||this.hide()},selectElements:function(){if(this.hasSelection()){this.elementIndex.view&&this.elementIndex.view.elementSelect&&this.elementIndex.view.elementSelect.clearMouseUpTimeout();var t=this.elementIndex.getSelectedElements(),e=this.getElementInfo(t);this.onSelect(e),this.settings.disableElementsOnSelect&&this.elementIndex.disableElements(this.elementIndex.getSelectedElements()),this.settings.hideOnSelect&&this.hide()}},getElementInfo:function(t){for(var e=[],n=0;n<t.length;n++){var i=$(t[n]),r=Craft.getElementInfo(i);e.push(r)}return e},onShow:function(){this.updateSelectBtnState(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addListener(Garnish.$win,"resize",this.updateModalBottomPadding),this.updateModalBottomPadding(),this.updateSidebarView(),this.base()},onHide:function(){this.closeSidebar(),this.base()},onSelect:function(t){this.settings.onSelect(t)},disable:function(){this.elementIndex&&this.elementIndex.disable(),this.base()},enable:function(){this.elementIndex&&this.elementIndex.enable(),this.base()},getElementIndexParams:function(){var t={context:"modal",elementType:this.elementType,sources:this.settings.sources};return null!==this.settings.showSiteMenu&&"auto"!==this.settings.showSiteMenu&&(t.showSiteMenu=this.settings.showSiteMenu?"1":"0"),t},_createElementIndex:function(){var t=this;Craft.sendActionRequest("POST",this.settings.bodyAction,{data:this.getElementIndexParams()}).then((function(e){t.$body.html(e.data.html),t.$body.has(".sidebar:not(.hidden)").length&&(t.$body.addClass("has-sidebar"),t.supportSidebarToggleView=!0),t.elementIndex=Craft.createElementIndex(t.elementType,t.$body,t.getIndexSettings()),t.$main=t.elementIndex.$main,t.$sidebar=t.elementIndex.$sidebar,t.$content=t.$body.find(".content"),t.updateSidebarView(),t.updateModalBottomPadding(),t.addListener(t.elementIndex.$elements,"doubletap",(function(t,e){e.firstTap.target===e.secondTap.target&&this.selectElements()})),t.on("updateSizeAndPosition",(function(){t.elementIndex.handleResize()})),t.updateSelectBtnState()}))},getIndexSettings:function(){var t=this;return Object.assign({context:"modal",modal:this,storageKey:this.settings.storageKey,condition:this.settings.condition,referenceElementId:this.settings.referenceElementId,referenceElementSiteId:this.settings.referenceElementSiteId,criteria:Object.assign({},this.settings.criteria),disabledElementIds:this.settings.disabledElementIds,selectable:!0,multiSelect:this.settings.multiSelect,waitForDoubleClicks:!0,buttonContainer:this.$secondaryButtons,onSelectionChange:function(){t.elementIndex&&t.onSelectionChange()},onSourcePathChange:function(){t.elementIndex&&t.onSelectionChange()},onSelectSource:this.onSelectSource.bind(this),hideSidebar:this.settings.hideSidebar,defaultSiteId:this.settings.defaultSiteId,defaultSource:this.settings.defaultSource,defaultSourcePath:this.settings.defaultSourcePath,preferStoredSource:this.settings.preferStoredSource,showSourcePath:this.settings.showSourcePath},this.settings.indexSettings)}},{defaults:{fullscreen:!1,resizable:!0,storageKey:null,sources:null,condition:null,referenceElementId:null,referenceElementSiteId:null,criteria:null,multiSelect:!1,showSiteMenu:null,disabledElementIds:[],disableElementsOnSelect:!1,hideOnSelect:!0,modalTitle:Craft.t("app","Select element"),showTitle:!1,selectBtnLabel:Craft.t("app","Select"),onCancel:$.noop,onSelect:$.noop,hideSidebar:!1,defaultSiteId:null,defaultSource:null,defaultSourcePath:null,preferStoredSource:!1,showSourcePath:!0,bodyAction:"element-selector-modals/body",indexSettings:{}}})},8843:function(){Craft.BaseInputGenerator=Garnish.Base.extend({$source:null,$target:null,$form:null,settings:null,listening:null,timeout:null,init:function(t,e,n){this.$source=$(t),this.$target=$(e),this.$form=this.$source.closest("form"),this.setSettings(n,Craft.BaseInputGenerator.defaults),this.setSettings(n),this.startListening()},setNewSource:function(t){var e=this.listening;this.stopListening(),this.$source=$(t),e&&this.startListening()},startListening:function(){this.listening||(this.listening=!0,this.addListener(this.$source,"input","onSourceTextChange"),this.addListener(this.$target,"input","onTargetTextChange"),this.addListener(this.$form,"submit","onFormSubmit"))},stopListening:function(){this.listening&&(this.listening=!1,this.timeout&&clearTimeout(this.timeout),this.removeAllListeners(this.$source),this.removeAllListeners(this.$target),this.removeAllListeners(this.$form))},onSourceTextChange:function(){this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout(this.updateTarget.bind(this),250)},onTargetTextChange:function(){this.$target.get(0)===document.activeElement&&this.stopListening()},onFormSubmit:function(){this.timeout&&clearTimeout(this.timeout),this.updateTarget()},updateTarget:function(){if(this.$target.is(":visible")||0!=this.settings.updateWhenHidden){var t=this.$source.val();if(void 0!==t){var e=this.generateTargetValue(t);this.$target.val(e);for(var n=0;n<this.$target.length;n++)this.$target[n].dispatchEvent(new InputEvent("input",{inputType:"insertText"})),this.$target[n].dispatchEvent(new Event("input"));this.$target.is(":focus")&&Craft.selectFullValue(this.$target)}}},generateTargetValue:function(t){return t}},{defaults:{updateWhenHidden:!1}})},4918:function(){Craft.BaseUploader=Garnish.Base.extend({allowedKinds:null,$element:null,$fileInput:null,settings:null,fsType:null,formData:{},events:{},_rejectedFiles:{},_extensionList:null,_inProgressCounter:0,init:function(t,e){this._rejectedFiles={size:[],type:[],limit:[]},this.$element=t,this.settings=$.extend({},Craft.BaseUploader.defaults,e),this.formData=this.settings.formData,this.$fileInput=this.settings.fileInput||t,this.events=this.settings.events,this.settings.url||(this.settings.url=this.settings.replace?Craft.getActionUrl(this.settings.replaceAction):Craft.getActionUrl(this.settings.createAction)),this.settings.allowedKinds&&this.settings.allowedKinds.length&&("string"==typeof this.settings.allowedKinds&&(this.settings.allowedKinds=[this.settings.allowedKinds]),this.allowedKinds=this.settings.allowedKinds,delete this.settings.allowedKinds)},setParams:function(t){void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t[Craft.csrfTokenName]=Craft.csrfTokenValue),this.formData=t},getInProgress:function(){return this._inProgressCounter},isLastUpload:function(){return this.getInProgress()<2},processErrorMessages:function(){var t;this._rejectedFiles.type.length&&(t=1===this._rejectedFiles.type.length?"The file {files} could not be uploaded. The allowed file kinds are: {kinds}.":"The files {files} could not be uploaded. The allowed file kinds are: {kinds}.",t=Craft.t("app",t,{files:this._rejectedFiles.type.join(", "),kinds:this.allowedKinds.join(", ")}),this._rejectedFiles.type=[],Craft.cp.displayError(t)),this._rejectedFiles.size.length&&(t=1===this._rejectedFiles.size.length?"The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.":"The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.",t=Craft.t("app",t,{files:this._rejectedFiles.size.join(", "),size:this.humanFileSize(this.settings.maxFileSize)}),this._rejectedFiles.size=[],Craft.cp.displayError(t)),this._rejectedFiles.limit.length&&(t=1===this._rejectedFiles.limit.length?"The file {files} could not be uploaded, because the field limit has been reached.":"The files {files} could not be uploaded, because the field limit has been reached.",t=Craft.t("app",t,{files:this._rejectedFiles.limit.join(", ")}),this._rejectedFiles.limit=[],Craft.cp.displayError(t))},humanFileSize:function(t){var e=1024;if(t<e)return t+" B";var n=-1;do{t/=e,++n}while(t>=e);return t.toFixed(1)+" "+["kB","MB","GB","TB","PB","EB","ZB","YB"][n]},_createExtensionList:function(){this._extensionList=[];for(var t=0;t<this.allowedKinds.length;t++){var e=this.allowedKinds[t];if(void 0!==Craft.fileKinds[e])for(var n=0;n<Craft.fileKinds[e].extensions.length;n++){var i=Craft.fileKinds[e].extensions[n];this._extensionList.push(i)}}},destroy:$.noop},{defaults:{dropZone:null,pasteZone:null,fileInput:null,maxFileSize:Craft.maxUploadSize,allowedKinds:null,events:{},formData:{},canAddMoreFiles:null,headers:{Accept:"application/json;q=0.9,*/*;q=0.8"},paramName:"assets-upload",url:null,createAction:null,replaceAction:null,deleteAction:null,replace:!1}})},525:function(){function t(){"use strict";t=function(){return n};var e,n={},i=Object.prototype,a=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function n(i,s,o,l){var c=f(t[i],t,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==r(u)&&a.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,o,l)}),(function(t){n("throw",t,o,l)})):e.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return n("throw",t,o,l)}))}l(c.arg)}var i;s(this,"_invoke",{value:function(t,r){function a(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(t){if(t||""===t){var n=t[l];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,s=function n(){for(;++i<t.length;)if(a.call(t,i))return n.value=t[i],n.done=!1,n;return n.value=e,n.done=!0,n};return s.next=s}}throw new TypeError(r(t)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function e(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function n(t){return function(){var n=this,i=arguments;return new Promise((function(r,a){var s=t.apply(n,i);function o(t){e(s,r,a,o,l,"next",t)}function l(t){e(s,r,a,o,l,"throw",t)}o(void 0)}))}}function i(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=a(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw s}}}}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CP=Garnish.Base.extend({elementThumbLoader:null,authManager:null,$nav:null,$navToggle:null,$globalSidebar:null,$globalContainer:null,$mainContainer:null,$pageContainer:null,$alerts:null,$crumbs:null,$crumbList:null,$crumbItems:null,$crumbMenuTriggerItem:null,$crumbMenu:null,$crumbMenuList:null,$crumbMenuItems:null,$notificationContainer:null,$main:null,$primaryForm:null,$headerContainer:null,$header:null,$mainContent:null,$details:null,$sidebarContainer:null,$sidebarToggle:null,$sidebar:null,$contentContainer:null,$edition:null,$confirmUnloadForms:null,$deltaForms:null,$collapsibleTables:null,isMobile:null,fixedHeader:!1,tabManager:null,enableQueue:!0,totalJobs:0,jobInfo:null,displayedJobInfo:null,displayedJobInfoUnchanged:1,trackJobProgressTimeout:null,trackingJobProgress:!1,jobProgressCancelToken:null,jobProgressIcon:null,checkingForUpdates:!1,forcingRefreshOnUpdatesCheck:!1,includingDetailsOnUpdatesCheck:!1,checkForUpdatesCallbacks:null,checkForUpdatesFailureCallbacks:null,resizeTimeout:null,init:function(){var t=this;this.elementThumbLoader=new Craft.ElementThumbLoader,0!==Craft.remainingSessionTime&&(this.authManager=new Craft.AuthManager),this.$nav=$("#nav"),this.$navToggle=$("#primary-nav-toggle"),this.$globalSidebar=$("#global-sidebar"),this.$globalContainer=$("#global-container"),this.$mainContainer=$("#main-container"),this.$pageContainer=$("#page-container"),this.$alerts=$("#alerts"),this.$crumbs=$("#crumbs"),this.$crumbList=$("#crumb-list"),this.$crumbItems=this.$crumbList.children("li"),this.$notificationContainer=$("#notifications"),this.$main=$("#main"),this.$primaryForm=$("#main-form"),this.$headerContainer=$("#header-container"),this.$header=$("#header"),this.$mainContent=$("#main-content"),this.$details=$("#details"),this.$sidebarContainer=$("#sidebar-container"),this.$sidebarToggle=$("#sidebar-toggle"),this.$sidebar=$("#sidebar"),this.$contentContainer=$("#content-container"),this.$collapsibleTables=$("table.collapsible"),this.isMobile=Garnish.isMobileBrowser(),this.updateContentHeading();for(var e=this.$details.find(".meta > .field > .instructions"),n=0;n<e.length;n++){var i=e.eq(n),r=i.siblings(".heading").children("label");$("<span/>",{class:"info",html:i.children().html()}).appendTo(r),i.remove()}if(!this.isMobile&&this.$header.length&&(this.addListener(Garnish.$win,"scroll","updateFixedHeader"),this.updateFixedHeader()),Garnish.$doc.ready((function(){t.addListener(Garnish.$win,"resize",(function(e){if(e.target===window){t.handleWindowResize(),clearTimeout(t.resizeTimeout);var n=t;t.resizeTimeout=setTimeout((function(){n.setSidebarNavAttributes()}),100)}})),t.handleWindowResize(),t.setSidebarNavAttributes(),Garnish.requestAnimationFrame(t.initSpecialForms.bind(t))})),this.$alerts.length&&this.initAlerts(),this.addListener(this.$navToggle,"click","toggleNav"),this.addListener(this.$sidebarToggle,"click","toggleSidebar"),this.$primaryForm.length||(this.$primaryForm=$("form[data-saveshortcut]:first")),this.$primaryForm.length&&Garnish.hasAttr(this.$primaryForm,"data-saveshortcut")){var s=[],o=this.$primaryForm.data("actions");if(void 0===o)s.push([{keyCode:Garnish.S_KEY,ctrl:!0},{redirect:this.$primaryForm.data("saveshortcut-redirect"),retainScroll:Garnish.hasAttr(this.$primaryForm,"saveshortcut-scroll")}]);else for(var l=0;l<o.length;l++){var c=o[l];c.shortcut&&s.push([{keyCode:Garnish.S_KEY,ctrl:!0,shift:!!c.shift},{action:c.action,redirect:c.redirect,confirm:c.confirm,params:c.params,data:c.data,retainScroll:c.retainScroll}])}for(var h=function(e){Garnish.uiLayerManager.registerShortcut(s[e][0],(function(){t.submitPrimaryForm(s[e][1])}))},u=0;u<s.length;u++)h(u)}if(this.initTabs(),this.tabManager&&window.LOCATION_HASH){var d=this.tabManager.$tabs.filter('[href="#'.concat(window.LOCATION_HASH,'"]'));d.length&&this.tabManager.selectTab(d)}var f=Craft.getLocalStorage("scrollY");if(void 0!==f&&(Craft.removeLocalStorage("scrollY"),Garnish.$doc.ready((function(){Garnish.requestAnimationFrame((function(){window.scrollTo(0,f)}))}))),$.isTouchCapable()&&(this.$mainContainer.on("focus","input, textarea, .focusable-input",this._handleInputFocus.bind(this)),this.$mainContainer.on("blur","input, textarea, .focusable-input",this._handleInputBlur.bind(this))),Craft.announcements.length){var p,g,m=$("#announcements-btn").removeClass("hidden"),v=Craft.announcements.some((function(t){return t.unread}));v&&(p=$("<span/>",{class:"visually-hidden",html:Craft.t("app","Unread messages")}),m.addClass("unread").append(p)),this.addListener(m,"click",(function(){if(g)g.show();else{var t="";Craft.announcements.forEach((function(e){t+='<div class="announcement '.concat(e.unread?"unread":"",'" role="listitem">')+'<div class="announcement__header">'+'<h3 class="announcement__heading h2">'.concat(e.heading,"</h3>")+'<div class="announcement-label-container">'+'<div class="announcement-icon" aria-hidden="true">'.concat(e.icon,"</div>")+'<div class="announcement-label">'.concat(e.label,"</div>")+"</div></div>"+"<p>".concat(e.body,"</p>")+"</div>"})),g=new Garnish.HUD(m,'<h2 class="visually-hidden">'.concat(Craft.t("app","Announcements"),'</h2><div id="announcements" role="list">').concat(t,"</div>"),{onShow:function(){m.addClass("active")},onHide:function(){m.removeClass("active")}}),$("a",g.$main).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")})),v&&(m.removeClass("unread"),p.remove(),Craft.sendActionRequest("POST","users/mark-announcements-as-read",{data:{ids:Craft.announcements.map((function(t){return t.id}))}}))}}))}var b=document.getElementById("footer");b&&new IntersectionObserver((function(t){var e=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||a(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,1)[0];e.target.classList.toggle("stuck",e.intersectionRatio<1)}),{rootMargin:"0px 0px -1px 0px",threshold:[1]}).observe(b),this.elementThumbLoader.load(this.$pageContainer)},get $contentHeader(){var t=$("#content-header");return t.length?t:$("<header/>",{id:"content-header",class:"pane-header"}).prependTo($("#content"))},get $noticeContainer(){var t=$("#content-notice");return t.length?t:$('<div id="content-notice"/>').attr("role","status").prependTo(this.$contentHeader)},initSpecialForms:function(){var t=this;if(this.$confirmUnloadForms=$("form[data-confirm-unload]"),this.$deltaForms=$("form[data-delta]"),this.$confirmUnloadForms.length){for(var e=this.$confirmUnloadForms.add(this.$deltaForms),n=function(){var n=e.eq(i);if(!n.data("initialSerializedValue")){var r=n.data("serializer")||function(){return n.serialize()};n.data("initialSerializedValue",r())}t.addListener(n,"submit",(function(t){if(Garnish.hasAttr(n,"data-confirm-unload")&&this.removeListener(Garnish.$win,"beforeunload"),Garnish.hasAttr(n,"data-delta")){t.preventDefault();var e=n.data("serializer")||function(){return n.serialize()},i=Craft.findDeltaData(n.data("initialSerializedValue"),e(),n.data("delta-names"),null,n.data("initial-delta-values"),n.data("modified-delta-names"));Craft.createForm(i).appendTo(Garnish.$bod).submit()}}))},i=0;i<e.length;i++)n();this.addListener(Garnish.$win,"beforeunload",(function(t){var e=!1;if(void 0!==Craft.livePreview&&Craft.livePreview.inPreviewMode)e=!0;else for(var n=0;n<this.$confirmUnloadForms.length;n++){var i,r=this.$confirmUnloadForms.eq(n);if(i="function"==typeof r.data("serializer")?r.data("serializer")():r.serialize(),r.data("initialSerializedValue")!==i){e=!0;break}}if(e){var a=Craft.t("app","Any changes will be lost if you leave this page.");return t?t.originalEvent.returnValue=a:window.event.returnValue=a,a}}))}},_handleInputFocus:function(){this.updateFixedHeader()},_handleInputBlur:function(){this.updateFixedHeader()},submitPrimaryForm:function(t){this.trigger("beforeSaveShortcut"),"object"===r(t)&&$.isPlainObject(t)||(t={}),t.redirect||(t.redirect=this.$primaryForm.data("saveshortcut-redirect")),t.data||(t.data={}),t.data.saveShortcut=!0,Craft.submitForm(this.$primaryForm,t)},updateSidebarMenuLabel:function(){this.updateContentHeading()},updateContentHeading:function(){var t=this.$sidebar.find("a.sel:first"),e=t.children(".label");$("#content-heading").text(e.length?e.text():t.text()),Garnish.$bod.removeClass("showing-sidebar")},toggleNav:function(){var t=this.navIsExpanded();null!==t&&(t?(this.disableGlobalSidebar(),this.$navToggle.focus(),this.$navToggle.attr("aria-expanded","false"),Garnish.$bod.removeClass("showing-nav")):(this.enableGlobalSidebar(),this.$globalSidebar.find(":focusable")[0].focus(),this.$navToggle.attr("aria-expanded","true"),Garnish.$bod.addClass("showing-nav")))},enableGlobalSidebar:function(){this.$globalSidebar.attr("aria-hidden","false"),this.$globalSidebar.find(":focusable").attr("tabindex","0")},disableGlobalSidebar:function(){this.$globalSidebar.attr("aria-hidden","true"),this.$globalSidebar.find(":focusable").attr("tabindex","-1")},setSidebarNavAttributes:function(){var t=this.navIsExpanded();null!==t&&(t?this.enableGlobalSidebar():this.disableGlobalSidebar())},navIsExpanded:function(){if(!this.$globalSidebar[0])return null;var t=getComputedStyle(this.$globalSidebar[0]).getPropertyValue("--is-always-visible").trim();return"true"===this.$navToggle.attr("aria-expanded")||"true"===t},toggleSidebar:function(){var t="true"===this.$sidebarToggle.attr("aria-expanded")?"false":"true";this.$sidebarToggle.attr("aria-expanded",t),Garnish.$bod.toggleClass("showing-sidebar")},initTabs:function(){this.tabManager&&(this.tabManager.destroy(),this.tabManager=null);var t=$("#tabs");t.length&&(this.tabManager=new Craft.Tabs(t),this.tabManager.on("selectTab",(function(t){var e=t.$tab.attr("href");if(e&&"#"===e.charAt(0)&&$(e).removeClass("hidden"),Garnish.$win.trigger("resize"),Garnish.$doc.trigger("scroll"),e&&"#"===e.charAt(0)){var n,r=i(document.querySelectorAll("#site-crumb-menu a[href], #context-menu a[href]"));try{for(r.s();!(n=r.n()).done;){var a=n.value;a.href=a.href.match(/^[^#]*/)[0]+e}}catch(t){r.e(t)}finally{r.f()}}"undefined"!=typeof history&&Garnish.requestAnimationFrame((function(){history.replaceState(void 0,void 0,e)}))})),this.tabManager.on("deselectTab",(function(t){var e=t.$tab.attr("href");e&&"#"===e.charAt(0)&&$(t.$tab.attr("href")).addClass("hidden")})))},updateTabs:function(t){if(t){var e=$(t).attr("id","tabs");this.tabManager?this.tabManager.$container.replaceWith(e):e.appendTo(this.$contentHeader),this.initTabs()}else this.tabManager&&(this.tabManager.$container.siblings().length?this.tabManager.$container.remove():this.tabManager.$container.parent().remove(),this.tabManager.destroy(),this.tabManager=null)},get $tabsContainer(){return this.tabManager?this.tabManager.$container:void 0},get $tabsList(){return this.tabManager?this.tabManager.$tablist:void 0},get $tabs(){return this.tabManager?this.tabManager.$tablist.find("> a"):void 0},get $selectedTab(){return this.tabManager?this.tabManager.$selectedTab:void 0},get selectedTabIndex(){return this.tabManager?this.tabManager.$tabs.index(this.tabManager.$selectedTab):void 0},get $focusableTab(){return this.tabManager?this.tabManager.$focusableTab:void 0},selectTab:function(t){this.tabManager&&this.tabManager.selectTab(t)},deselectTab:function(){this.tabManager&&this.tabManager.deselectTab()},handleBreadcrumbVisibility:function(){if(this.$crumbItems.length){this.$crumbMenuItems&&(this.$crumbItems.css("max-width",""),this.$crumbMenuItems.insertAfter(this.$crumbMenuTriggerItem),this.$crumbMenuTriggerItem.detach(),this.$crumbMenuItems=null);for(var t=Math.ceil(this.$crumbs[0].getBoundingClientRect().width-this.$navToggle[0].getBoundingClientRect().width),e=[],n=0;n<this.$crumbItems.length;n++){var i=this.$crumbItems.eq(n);e[n]=i[0].getBoundingClientRect().width}if(e.reduce((function(t,e){return t+e}),0)>t){if(this.$crumbMenuTriggerItem)this.$crumbMenuTriggerItem.prependTo(this.$crumbList);else{this.$crumbMenuTriggerItem=$("<li/>",{class:"crumb"}).prependTo(this.$crumbList);var r=$("<div/>",{class:"crumb-label"}).appendTo(this.$crumbMenuTriggerItem),a=$("<button/>",{id:"crumb-menu-trigger","data-icon":"ellipsis","data-disclosure-trigger":"true","aria-controls":"crumb-menu","aria-haspopup":"true","aria-label":Craft.t("app","More…"),title:Craft.t("app","More…")}).appendTo(r);this.$crumbMenu=$("<div/>",{id:"crumb-menu",class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(r),this.$crumbMenuList=$("<ul/>").appendTo(this.$crumbMenu),a.disclosureMenu()}for(var s=this.$crumbMenuTriggerItem[0].getBoundingClientRect().width,o=this.$crumbItems.length-1;o>=0;o--){if(s+e[o]>t){this.$crumbMenuItems=this.$crumbItems.slice(0,o+1),this.$crumbMenuItems.appendTo(this.$crumbMenuList);break}s+=e[o]}}}},handleWindowResize:function(){this.updateResponsiveTables(),this.handleBreadcrumbVisibility()},updateResponsiveTables:function(){for(this.updateResponsiveTables._i=0;this.updateResponsiveTables._i<this.$collapsibleTables.length;this.updateResponsiveTables._i++)this.updateResponsiveTables._$table=this.$collapsibleTables.eq(this.updateResponsiveTables._i),this.updateResponsiveTables._containerWidth=this.updateResponsiveTables._$table.parent().width(),this.updateResponsiveTables._check=!1,this.updateResponsiveTables._containerWidth>0&&(void 0===this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._check=!0:(this.updateResponsiveTables._isCollapsed=this.updateResponsiveTables._$table.hasClass("collapsed"),this.updateResponsiveTables._containerWidth>this.updateResponsiveTables._$table.data("lastContainerWidth")?this.updateResponsiveTables._isCollapsed&&(this.updateResponsiveTables._$table.removeClass("collapsed"),this.updateResponsiveTables._check=!0):this.updateResponsiveTables._isCollapsed||(this.updateResponsiveTables._check=!0)),this.updateResponsiveTables._check&&this.updateResponsiveTables._$table.width()-30>this.updateResponsiveTables._containerWidth&&this.updateResponsiveTables._$table.addClass("collapsed"),this.updateResponsiveTables._$table.data("lastContainerWidth",this.updateResponsiveTables._containerWidth))},updateFixedHeader:function(){if(!this.isMobile)if(this.$main.length&&this.$headerContainer[0].getBoundingClientRect().top<0){var t=this.$headerContainer.height(),e=this.$header.width();this.fixedHeader||(this.$contentContainer.css("min-height","calc(100vh - "+(t+14+48-1)+"px)"),this.$headerContainer.height(t),this.$header.width(e),Garnish.$bod.addClass("fixed-header"),this.fixedHeader=!0),this._setFixedTopPos(this.$sidebar,t),this._setFixedTopPos(this.$details,t)}else this.fixedHeader&&(this.$headerContainer.height("auto"),this.$header.width("auto"),Garnish.$bod.removeClass("fixed-header"),this.$contentContainer.css("min-height",""),this.$sidebar.removeClass("fixed").css("top",""),this.$details.removeClass("fixed").css("top",""),this.fixedHeader=!1)},_setFixedTopPos:function(t,e){t.length&&this.$contentContainer.length&&(t.outerHeight()>=this.$contentContainer.outerHeight()?t.removeClass("fixed").css("top",""):t.addClass("fixed").css("top",Math.min(e+14,Math.max(this.$mainContent[0].getBoundingClientRect().top,document.documentElement.clientHeight-t.outerHeight()))+"px"))},displayNotification:function(t,e,n){var i=new Craft.CP.Notification(t,e,n);return this.trigger("displayNotification",{notificationType:t,message:e,notification:i}),i},displayNotice:function(t,e){return this.displayNotification("notice",t,Object.assign({icon:"info",iconLabel:Craft.t("app","Notice")},e))},displaySuccess:function(t,e){return this.displayNotification("success",t,Object.assign({icon:"check",iconLabel:Craft.t("app","Success")},e))},displayError:function(t,e){return t&&"object"!==r(t)||(e=t,t=Craft.t("app","A server error occurred.")),this.displayNotification("error",t,Object.assign({icon:"alert",iconLabel:Craft.t("app","Error")},e))},fetchAlerts:function(){return Craft.queue.push((function(){return new Promise((function(t,e){var n={path:Craft.path};Craft.sendActionRequest("POST","app/get-cp-alerts",{data:n}).then((function(e){var n=e.data;t(n.alerts)})).catch(e)}))}))},displayAlerts:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.$alerts.remove(),Array.isArray(t)&&t.length){this.$alerts=$('<ul id="alerts"/>').prependTo(this.$pageContainer);var n,r=i(t);try{for(r.s();!(n=r.n()).done;){var a=n.value;$.isPlainObject(a)||(a={content:a,showIcon:!0});var s=a.content;a.showIcon&&(s='<span data-icon="alert" aria-label="'.concat(Craft.t("app","Error"),'"></span> ').concat(s)),$("<li>".concat(s,"</li>")).appendTo(this.$alerts)}}catch(t){r.e(t)}finally{r.f()}if(e){var o=this.$alerts.outerHeight();this.$alerts.css("margin-top",-o).velocity({"margin-top":0},"fast")}this.initAlerts()}},initAlerts:function(){for(var e=this,i=this.$alerts.find('a[class^="shun:"]'),r=0;r<i.length;r++)this.addListener(i[r],"click",(function(t){t.preventDefault(),Craft.queue.push((function(){return new Promise((function(n,i){var r=$(t.currentTarget),a={message:r.prop("className").substring(5)};Craft.sendActionRequest("POST","app/shun-cp-alert",{data:a}).then((function(){r.parent().remove(),n()})).catch((function(t){var n=t.response;e.displayError(n.data.message),i()}))}))}))}));var a=this.$alerts.find(".resolvable-alert-buttons");if(a.length){var s=Craft.ui.createButton({label:Craft.t("app","Refresh"),spinner:!0}).appendTo(a);s.on("click",n(t().mark((function n(){var i;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s.addClass("loading"),t.prev=1,t.next=4,Craft.sendApiRequest("GET","ping");case 4:return t.next=6,e.fetchAlerts();case 6:i=t.sent,e.displayAlerts(i,!1);case 8:return t.prev=8,s.removeClass("loading"),t.finish(8);case 11:case"end":return t.stop()}}),n,null,[[1,,8,11]])}))))}},updateContext:function(t,e){var n=document.querySelector("#context-menu-container > span");n&&(n.textContent=t);var i=document.querySelector("#context-menu a.sel");if(i){i.querySelector(".menu-item-label").textContent=t;var r=i.querySelector(".menu-item-description");e?(r||((r=document.createElement("div")).className="menu-item-description smalltext light",i.append(r)),r.textContent=e):r&&r.remove()}},showSiteCrumbMenuItem:function(t){var e=document.querySelector('#site-crumb-menu a[data-site-id="'.concat(t,'"]'));if(e){var n=e.closest("li");n.classList.remove("hidden");var i=n.closest(".menu-group");i&&i.classList.remove("hidden")}},setSiteCrumbMenuItemStatus:function(t,e){var n=document.querySelector('#site-crumb-menu a[data-site-id="'.concat(t,'"]'));if(n){var i=n.querySelector(".status");e?(i||(i=document.createElement("div"),n.prepend(i)),i.className="status ".concat(e)):i&&i.remove()}},checkForUpdates:function(t,e,n,r){var a=this;if("function"==typeof e&&(r=n,n=e,e=!1),this.checkingForUpdates&&(!0===t&&!this.forcingRefreshOnUpdatesCheck||!0===e&&!this.includingDetailsOnUpdatesCheck)){var s=n,o=r;n=function(){a.checkForUpdates(t,e,s,o)}}"function"==typeof n&&(Array.isArray(this.checkForUpdatesCallbacks)||(this.checkForUpdatesCallbacks=[]),this.checkForUpdatesCallbacks.push(n)),"function"==typeof r&&(Array.isArray(this.checkForUpdatesFailureCallbacks)||(this.checkForUpdatesFailureCallbacks=[]),this.checkForUpdatesFailureCallbacks.push(r)),this.checkingForUpdates||(this.checkingForUpdates=!0,this.forcingRefreshOnUpdatesCheck=!0===t,this.includingDetailsOnUpdatesCheck=!0===e,this._checkForUpdates(t,e).then((function(t){if(a.updateUtilitiesBadge(),a.checkingForUpdates=!1,Array.isArray(a.checkForUpdatesCallbacks)){var e=a.checkForUpdatesCallbacks;a.checkForUpdatesCallbacks=null;var n,r=i(e);try{for(r.s();!(n=r.n()).done;)(0,n.value)(t)}catch(t){r.e(t)}finally{r.f()}}a.trigger("checkForUpdates",{updateInfo:t})})).catch((function(){if(a.checkingForUpdates=!1,Array.isArray(a.checkForUpdatesFailureCallbacks)){var t=a.checkForUpdatesFailureCallbacks;a.checkForUpdatesFailureCallbacks=null;var e,n=i(t);try{for(n.s();!(e=n.n()).done;)(0,e.value)()}catch(t){n.e(t)}finally{n.f()}}})))},_checkForUpdates:function(t,e){var n=this;return new Promise((function(i,r){t?n._getUpdates(e).then(i).catch(r):n._checkForCachedUpdates(e).then((function(t){t.cached?i(t):n._getUpdates(e).then((function(t){i(t)})).catch(r)})).catch(r)}))},_checkForCachedUpdates:function(t){return new Promise((function(e,n){var i={onlyIfCached:!0,includeDetails:t};Craft.sendActionRequest("POST","app/check-for-updates",{data:i}).then((function(t){var n=t.data;e(n)})).catch((function(){e({cached:!1})}))}))},_getUpdates:function(t){var e=this;return new Promise((function(n,i){Craft.sendApiRequest("GET","updates").then((function(r){e._cacheUpdates(r,t).then((function(t){n(t)})).catch(i)})).catch(i)}))},_cacheUpdates:function(t,e){return new Promise((function(n,i){var r={updates:t,includeDetails:e};Craft.sendActionRequest("POST","app/cache-updates",{data:r}).then((function(t){var e=t.data;n(e)})).catch(i)}))},updateUtilitiesBadge:function(){var t=$("#nav-utilities").find("> a:not(.sel)");t.length&&Craft.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","app/get-utilities-badge-count").then((function(n){var i=n.data,r=t.children(".sidebar-action__badge");i.badgeCount&&!r.length&&(r=$('<span class="sidebar-action__badge"><span class="badge" aria-hidden="true"></span><span class="visually-hidden" data-notification></span></span>').appendTo(t));var a=r.children(".badge"),s=r.children("[data-notification]");i.badgeCount?(a.text(i.badgeCount),s.text(Craft.t("app","{num, number} {num, plural, =1{notification} other{notifications}}",{num:i.badgeCount}))):r.length&&r.remove(),e()})).catch(n)}))}))},runQueue:function(){var t=this;this.enableQueue&&(Craft.runQueueAutomatically?Craft.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","queue/run").then((function(){t.trackJobProgress(!1,!0),e()})).catch(n)}))})):this.trackJobProgress(!1,!0))},trackJobProgress:function(t,e){this.trackJobProgressTimeout&&!e||!this.enableQueue||(this.cancelJobTracking(),t?(!0===t&&(t=this.getNextJobDelay()),this.trackJobProgressTimeout=setTimeout(this._trackJobProgressInternal.bind(this),t)):this._trackJobProgressInternal())},getNextJobDelay:function(){return Math.min(6e4,500*this.displayedJobInfoUnchanged)},_trackJobProgressInternal:function(){var e=this;this.trackingJobProgress=!0,Craft.queue.push(n(t().mark((function n(){var i,r;return t().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e.trackingJobProgress){t.next=2;break}return t.abrupt("return");case 2:return Craft.broadcaster&&Craft.broadcaster.postMessage({event:"beforeTrackJobProgress"}),e.jobProgressCancelToken=axios.CancelToken.source(),t.prev=4,t.next=7,Craft.sendActionRequest("POST","queue/get-job-info?limit=50&dontExtendSession=1",{cancelToken:e.jobProgressCancelToken.token});case 7:r=t.sent,i=r.data,t.next=15;break;case 11:if(t.prev=11,t.t0=t.catch(4),!e.trackingJobProgress){t.next=15;break}throw t.t0;case 15:return t.prev=15,e.trackingJobProgress=!1,e.trackJobProgressTimeout=null,e.jobProgressCancelToken=null,t.finish(15);case 20:e.setJobData(i),e.jobInfo.length&&e.trackJobProgress(!0),Craft.broadcaster&&Craft.broadcaster.postMessage({event:"trackJobProgress",jobData:i});case 23:case"end":return t.stop()}}),n,null,[[4,11,15,20]])}))))},setJobData:function(t){this.totalJobs=t.total,this.setJobInfo(t.jobs)},setJobInfo:function(t){if(this.enableQueue){this.jobInfo=t;var e=this.displayedJobInfo;this.displayedJobInfo=this.getDisplayedJobInfo(),e&&this.displayedJobInfo&&e.id===this.displayedJobInfo.id&&e.progress===this.displayedJobInfo.progress&&e.progressLabel===this.displayedJobInfo.progressLabel&&e.status===this.displayedJobInfo.status?this.displayedJobInfoUnchanged++:this.displayedJobInfoUnchanged=1,this.updateJobIcon(),this.trigger("setJobInfo")}},cancelJobTracking:function(){this.trackingJobProgress=!1,this.trackJobProgressTimeout&&(clearTimeout(this.trackJobProgressTimeout),this.trackJobProgressTimeout=null),this.jobProgressCancelToken&&this.jobProgressCancelToken.cancel()},getDisplayedJobInfo:function(){if(!this.enableQueue)return null;for(var t=[Craft.CP.JOB_STATUS_RESERVED,Craft.CP.JOB_STATUS_FAILED,Craft.CP.JOB_STATUS_WAITING],e=0;e<t.length;e++)for(var n=0;n<this.jobInfo.length;n++)if(this.jobInfo[n].status===t[e]&&(t[e]!==Craft.CP.JOB_STATUS_WAITING||!this.jobInfo[n].delay))return this.jobInfo[n];return null},updateJobIcon:function(){this.enableQueue&&this.$nav.length&&(this.displayedJobInfo?(this.jobProgressIcon||(this.jobProgressIcon=new o),this.displayedJobInfo.status===Craft.CP.JOB_STATUS_RESERVED||this.displayedJobInfo.status===Craft.CP.JOB_STATUS_WAITING?(this.jobProgressIcon.hideFailMode(),this.jobProgressIcon.setDescription(this.displayedJobInfo.description,this.displayedJobInfo.progressLabel),this.jobProgressIcon.setProgress(this.displayedJobInfo.progress)):this.displayedJobInfo.status===Craft.CP.JOB_STATUS_FAILED&&this.jobProgressIcon.showFailMode(Craft.t("app","Failed"))):this.jobProgressIcon&&(this.jobProgressIcon.hideFailMode(),this.jobProgressIcon.complete(),delete this.jobProgressIcon))},getSiteId:function(){var t=Craft.getLocalStorage("BaseElementIndex.siteId");if(void 0!==t){Craft.removeLocalStorage("BaseElementIndex.siteId");try{this.setSiteId(t)}catch(t){}}return Craft.siteId},setSiteId:function(t){var e=Craft.sites.find((function(e){return e.id===t}));if(!e)throw"Invalid site ID: ".concat(t);Craft.siteId=t,Craft.actionUrl=Craft.getUrl(Craft.actionUrl,{site:e.handle}),Craft.baseCpUrl=Craft.getUrl(Craft.baseCpUrl,{site:e.handle}),Craft.baseUrl=Craft.getUrl(Craft.baseUrl,{site:e.handle});var n=Craft.getUrl(document.location.href,{site:e.handle});history.replaceState({},"",n);var r,a=i(document.body.classList);try{for(a.s();!(r=a.n()).done;){var s=r.value;s.match(/^site--/)&&document.body.classList.remove(s)}}catch(t){a.e(t)}finally{a.f()}document.body.classList.add("site--".concat(e.handle)),$("a").each((function(){this.hostname.length&&this.hostname===location.hostname&&-1!==this.href.indexOf(Craft.cpTrigger)&&(this.href=Craft.getUrl(this.href,{site:e.handle}))}))}},{notificationDuration:5e3,JOB_STATUS_WAITING:1,JOB_STATUS_RESERVED:2,JOB_STATUS_DONE:3,JOB_STATUS_FAILED:4}),Craft.CP.Notification=Garnish.Base.extend({type:null,message:null,settings:null,closing:!1,closeTimeout:null,_preventDelayedClose:!1,$container:null,$closeBtn:null,originalActiveElement:null,init:function(t,e,n){var i=this;this.type=t,this.message=e,this.settings=n||{},this.$container=$("<div/>",{class:"notification","data-type":this.type}).appendTo(Craft.cp.$notificationContainer);var r=$('<div class="notification-body"/>').appendTo(this.$container);if(this.settings.icon){var a=$("<span/>",{class:"notification-icon","data-icon":this.settings.icon}).appendTo(r);this.settings.iconLabel?a.attr({"aria-label":this.settings.iconLabel,role:"img"}):a.attr("aria-hidden","true")}var s=$('<div class="notification-main"/>').appendTo(r);$("<div/>",{class:"notification-message",text:this.message}).appendTo(s);var o=$("<div/>").appendTo(this.$container);this.$closeBtn=$("<button/>",{type:"button",class:"notification-close-btn","aria-label":Craft.t("app","Close"),"data-icon":"remove"}).appendTo(o),this.settings.details&&$('<div class="notification-details"/>').append(this.settings.details).appendTo(s).find("button,input").length&&(this.originalActiveElement=document.activeElement,this.$container.attr("tabindex","-1").focus(),this.addListener(this.$container,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&i.close()}))),this.$container.css({opacity:0,"margin-bottom":this._negMargin()}).velocity({opacity:1,"margin-bottom":0},{duration:"fast"}),Craft.initUiElements(this.$container),this.addListener(this.$closeBtn,"click","close"),Craft.notificationDuration&&this._initDelayedClose()},_initDelayedClose:function(){var t=this;this._preventDelayedClose||(Craft.isVisible()?(this.delayedClose(),this.$container.on("keypress keyup change focus click mousedown mouseup",(function(e){e.target!=t.$closeBtn[0]&&(t.$container.off("keypress keyup change focus click mousedown mouseup"),t.preventDelayedClose())}))):Garnish.$doc.one("visibilitychange",(function(){t._initDelayedClose()})))},_negMargin:function(){return"-".concat(this.$container.outerHeight()+12,"px")},close:function(){var t=this;this.closing||(this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.closing=!0,this.originalActiveElement&&document.activeElement&&(document.activeElement===this.$container[0]||$.contains(this.$container[0],document.activeElement))&&$(this.originalActiveElement).focus(),this.$container.velocity({opacity:0,"margin-bottom":this._negMargin()},{duration:"fast",complete:function(){t.destroy()}}))},delayedClose:function(){var t=this;this.closeTimeout=setTimeout((function(){t.close()}),Craft.notificationDuration),this.$container.one("mouseover",(function(){clearTimeout(t.closeTimeout),t.closeTimeout=null,t.$container.on("mouseout",(function(e){e.target==t.$container[0]&&(t.$container.off("mouseout"),t.delayedClose())}))}))},preventDelayedClose:function(){this._preventDelayedClose=!0,this.closeTimeout&&(clearTimeout(this.closeTimeout),this.closeTimeout=null),this.$container.off("mouseover mouseout")},destroy:function(){this.$container.remove(),this.base()}}),Garnish.$scrollContainer=Garnish.$win,Craft.cp=new Craft.CP;var o=Garnish.Base.extend({$li:null,$a:null,$label:null,$progressLabel:null,progress:null,failMode:!1,_$bgCanvas:null,_$staticCanvas:null,_$hoverCanvas:null,_$failCanvas:null,_staticCtx:null,_hoverCtx:null,_canvasSize:null,_arcPos:null,_arcRadius:null,_lineWidth:null,_arcStartPos:0,_arcEndPos:0,_arcStartStepSize:null,_arcEndStepSize:null,_arcStep:null,_arcStepTimeout:null,_arcAnimateCallback:null,_progressBar:null,init:function(){this.$li=$("<li/>",{class:"nav-item nav-item--job"}).appendTo(Craft.cp.$nav.children("ul")),this.$a=$("<a/>",{id:"job-icon",class:"sidebar-action sidebar-action--job",href:Craft.canAccessQueueManager?Craft.getUrl("utilities/queue-manager"):null}).appendTo(this.$li);var t=$('<span class="sidebar-action__prefix"/>');this.$canvasContainer=$('<span class="nav-icon"/>').appendTo(t),t.appendTo(this.$a);var e=$('<span class="sidebar-action__label">');e.appendTo(this.$a),this.$label=$('<span class="label"/>').appendTo(e),this.$progressLabel=$('<span class="progress-label"/>').appendTo(e).hide();var n=window.devicePixelRatio>1?2:1;this._canvasSize=18*n,this._arcPos=this._canvasSize/2,this._arcRadius=7*n,this._lineWidth=3*n,this._$bgCanvas=this._createCanvas("bg",this.$li.css("background-color")),this._$staticCanvas=this._createCanvas("static",this.$li.css("color")),this._$hoverCanvas=this._createCanvas("hover","#fff"),this._$failCanvas=this._createCanvas("fail","#da5a47").hide(),this._staticCtx=this._$staticCanvas[0].getContext("2d"),this._hoverCtx=this._$hoverCanvas[0].getContext("2d"),this._drawArc(this._$bgCanvas[0].getContext("2d"),0,1),this._drawArc(this._$failCanvas[0].getContext("2d"),0,1)},setDescription:function(t,e){this.$a.attr("title",t),this.$label.text(t),e?this.$progressLabel.text(e).show():this.$progressLabel.hide()},setProgress:function(t){0==t?(this._$staticCanvas.hide(),this._$hoverCanvas.hide()):(this._$staticCanvas.show(),this._$hoverCanvas.show(),this.progress&&t>this.progress?this._animateArc(0,t/100):this._setArc(0,t/100)),this.progress=t},complete:function(){var t=this;this._animateArc(0,1,(function(){t._$bgCanvas.velocity("fadeOut"),t._animateArc(1,1,(function(){t.$li.remove(),t.destroy()}))}))},showFailMode:function(t){this.failMode||(this.failMode=!0,this.progress=null,this._$bgCanvas.hide(),this._$staticCanvas.hide(),this._$hoverCanvas.hide(),this._$failCanvas.show(),this.setDescription(t))},hideFailMode:function(){this.failMode&&(this.failMode=!1,this._$bgCanvas.show(),this._$staticCanvas.show(),this._$hoverCanvas.show(),this._$failCanvas.hide())},_createCanvas:function(t,e){var n=$('<canvas id="job-icon-'+t+'" width="'+this._canvasSize+'" height="'+this._canvasSize+'"/>').appendTo(this.$canvasContainer),i=n[0].getContext("2d");return i.strokeStyle=e,i.lineWidth=this._lineWidth,i.lineCap="round",n},_setArc:function(t,e){this._arcStartPos=t,this._arcEndPos=e,this._drawArc(this._staticCtx,t,e),this._drawArc(this._hoverCtx,t,e)},_drawArc:function(t,e,n){t.clearRect(0,0,this._canvasSize,this._canvasSize),t.beginPath(),t.arc(this._arcPos,this._arcPos,this._arcRadius,(1.5+2*e)*Math.PI,(1.5+2*n)*Math.PI),t.stroke(),t.closePath()},_animateArc:function(t,e,n){this._arcStepTimeout&&clearTimeout(this._arcStepTimeout),this._arcStep=0,this._arcStartStepSize=(t-this._arcStartPos)/10,this._arcEndStepSize=(e-this._arcEndPos)/10,this._arcAnimateCallback=n,this._takeNextArcStep()},_takeNextArcStep:function(){this._setArc(this._arcStartPos+this._arcStartStepSize,this._arcEndPos+this._arcEndStepSize),this._arcStep++,this._arcStep<10?this._arcStepTimeout=setTimeout(this._takeNextArcStep.bind(this),50):this._arcAnimateCallback&&this._arcAnimateCallback()}})},313:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CardsElementIndexView=Craft.BaseElementIndexView.extend({cardSort:null,afterInit:function(){var e=this;this.settings.sortable&&(this.cardSort=new Garnish.DragSort(this.getAllElements(),{container:this.$elementContainer,filter:this.settings.selectable?function(){return e.cardSort.$targetItem.children(".element").hasClass("sel")?e.elementSelect.getSelectedItems().parent("li"):e.cardSort.$targetItem}:null,ignoreHandleSelector:null,handle:"> .element > .card-actions-container > .card-actions > .move",collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,helper:function(t){return t.children().outerHeight(e.cardSort.$draggee.height()),t},onInsertionPointChange:function(){var n,i=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(e.cardSort.helpers);try{for(i.s();!(n=i.n()).done;)n.value.children().outerHeight(e.cardSort.$draggee.height())}catch(t){i.e(t)}finally{i.f()}},onSortChange:function(){e.settings.selectable&&e.elementSelect.resetItemOrder(),e.settings.onSortChange(e.cardSort.$draggee)}}))},getElementContainer:function(){return this.$container.find("> .card-grid")}})},3778:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CategoryIndex=Craft.BaseElementIndex.extend({editableGroups:null,$newCategoryBtnGroup:null,$newCategoryBtn:null,init:function(t,e,n){this.editableGroups=[],this.on("selectSource",this.updateButton.bind(this)),this.on("selectSite",this.updateButton.bind(this)),this.base(t,e,n)},afterInit:function(){var t=this;this.editableGroups=Craft.editableCategoryGroups.filter((function(e){return!!t.getSourceByKey("group:".concat(e.uid))})),this.base()},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultGroupHandle)for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("handle")===defaultGroupHandle)return e.data("key")}return this.base()},updateButton:function(){var e=this;if(this.$source){var n=this.$source.data("handle");if(this.editableGroups.length){this.$newCategoryBtnGroup&&this.$newCategoryBtnGroup.remove();var i,r=this.editableGroups.find((function(t){return t.handle===n}));this.$newCategoryBtnGroup=$('<div class="btngroup submit" data-wrapper/>');var a="new-category-menu-"+Craft.randomString(10);if(r){var s="index"===this.settings.context?Craft.t("app","New {type}",{type:Craft.t("app","category")}):Craft.t("app","New {group} category",{group:r.name}),o="index"===this.settings.context?Craft.t("app","New category in the {group} category group",{group:r.name}):s,l="index"===this.settings.context?"link":null;this.$newCategoryBtn=Craft.ui.createButton({label:s,ariaLabel:o,spinner:!0,role:l}).addClass("submit add icon").appendTo(this.$newCategoryBtnGroup),this.addListener(this.$newCategoryBtn,"click mousedown",(function(t){"index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)?window.open(Craft.getUrl("categories/".concat(r.handle,"/new"))):"click"===t.type&&e._createCategory(r.id)})),this.editableGroups.length>1&&(i=$("<button/>",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":a,"data-disclosure-trigger":"","aria-label":Craft.t("app","New category, choose a category group")}).appendTo(this.$newCategoryBtnGroup))}else this.$newCategoryBtn=i=Craft.ui.createButton({label:Craft.t("app","New {type}",{type:Craft.t("app","category")}),ariaLabel:Craft.t("app","New category, choose a category group"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",a).attr("data-disclosure-trigger","").appendTo(this.$newCategoryBtnGroup);if(this.addButton(this.$newCategoryBtnGroup),i){var c,h=$("<div/>",{id:a,class:"menu menu--disclosure"}).appendTo(this.$newCategoryBtnGroup),u=$("<ul/>").appendTo(h),d=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.editableGroups);try{var f=function(){var t=c.value,n="index"===e.settings.context?"link":"button";if("index"===e.settings.context||t!==r){var a=$("<li/>").appendTo(u),s=$("<a/>",{role:"button"===n?"button":null,href:"#",type:"button"===n?"button":null,text:Craft.t("app","New {group} category",{group:t.name})}).appendTo(a);e.addListener(s,"click",(function(){i.data("trigger").hide(),e._createCategory(t.id)})),"button"===n&&e.addListener(s,"keydown",(function(n){n.keyCode===Garnish.SPACE_KEY&&(n.preventDefault(),i.data("trigger").hide(),e._createCategory(t.id))}))}};for(d.s();!(c=d.n()).done;)f()}catch(t){d.e(t)}finally{d.f()}new Garnish.DisclosureMenu(i)}}if("index"===this.settings.context){var p="categories";n&&(p+="/"+n),Craft.setPath(p)}}},_createCategory:function(t){var e=this;if(this.$newCategoryBtn.hasClass("loading"))console.warn("New category creation already in progress.");else{var n=this.editableGroups.find((function(e){return e.id===t}));if(!n)throw"Invalid category group ID: ".concat(t);this.$newCategoryBtn.addClass("loading"),Craft.sendActionRequest("POST","elements/create",{data:{elementType:this.elementType,siteId:this.siteId,groupId:t}}).then((function(t){"index"===e.settings.context?document.location.href=Craft.getUrl(t.data.cpEditUrl,{fresh:1}):Craft.createElementEditor(e.elementType,{siteId:e.siteId,elementId:t.data.element.id,draftId:t.data.element.draftId,params:{fresh:1}}).on("submit",(function(){var i="group:".concat(n.uid);e.sourceKey!==i&&e.selectSourceByKey(i),e.clearSearch(),e.selectElementAfterUpdate(t.data.element.id),e.updateElements()}))})).finally((function(){e.$newCategoryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Category",Craft.CategoryIndex)},6617:function(){Craft.CategorySelectInput=Craft.BaseElementSelectInput.extend({setSettings:function(){this.base.apply(this,arguments),this.settings.sortable=!1},getModalSettings:function(){var t=this.base();return t.hideOnSelect=!1,t},getElements:function(){return this.$elementsContainer.find(".element")},onModalSelect:function(t){var e=this;this.modal.disable(),this.modal.disableCancelBtn(),this.modal.disableSelectBtn(),this.modal.showFooterSpinner();for(var n=this.getSelectedElementIds(),i=0;i<t.length;i++)n.push(t[i].id);var r={categoryIds:n,siteId:t[0].siteId,id:this.settings.id,name:this.settings.name,branchLimit:this.settings.branchLimit,selectionLabel:this.settings.selectionLabel},a=function(){e.modal.enable(),e.modal.enableCancelBtn(),e.modal.enableSelectBtn(),e.modal.hideFooterSpinner()};Craft.sendActionRequest("POST","categories/input-html",{data:r}).then((function(n){a();var i=$(n.data.html).children(".elements");e.$elementsContainer.replaceWith(i),e.$elementsContainer=i,e.resetElements();for(var r=[],s=0;s<t.length;s++){var o=t[s],l=e.getElementById(o.id);l&&(e.animateElementIntoPlace(o.$element,l),r.push(o))}e.updateDisabledElementsInModal(),e.modal.hide(),e.onSelectElements(r)})).catch((function(t){t.response,a()}))},removeElement:function(t){var e=t.add(t.parent().siblings("ul").find(".element"));this.removeElements(e);for(var n=0;n<e.length;n++)this._animateCategoryAway(e,n)},_animateCategoryAway:function(t,e){var n,i=this;e===t.length-1&&(n=function(){var e=t.first().parent().parent(),n=e.parent();n[0]===i.$elementsContainer[0]||e.siblings().length?e.remove():n.remove()});var r=function(){i.animateElementAway(t.eq(e),n)};0===e?r():setTimeout(r,100*e)}})},3352:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.ColorInput=Garnish.Base.extend({$container:null,$input:null,$colorContainer:null,$colorPreview:null,$colorInput:null,init:function(t,e){this.setSettings(e,Craft.ColorInput.defaults),this.$container=$(t),this.$input=this.$container.find(".color-input"),this.$colorContainer=this.$container.children(".color"),this.$colorPreview=this.$colorContainer.children(".color-preview"),this.createColorInput(),this.handleTextChange(),this.addListener(this.$input,"input","handleTextChange")},createColorInput:function(){var e,n=document.createElement("input");if(n.setAttribute("type","color"),"color"===n.type){if(this.$colorContainer.removeClass("static"),this.$colorInput=$(n).addClass("color-preview-input").attr({"aria-controls":this.$input.attr("id"),"aria-label":Craft.t("app","Color picker")}).appendTo(this.$colorPreview),null!==(e=this.settings.presets)&&void 0!==e&&e.length){var i="listbox-".concat(Math.floor(1e6*Math.random()));this.$colorInput.attr("list",i);var r,a=$("<datalist/>",{id:i}).insertAfter(this.$colorInput),s=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.settings.presets);try{for(s.s();!(r=s.n()).done;){var o=r.value;$("<option/>").text(o).appendTo(a)}}catch(t){s.e(t)}finally{s.f()}}this.addListener(this.$colorInput,"click",(function(t){t.stopPropagation()})),this.addListener(this.$colorContainer,"click",(function(){this.$colorInput.trigger("click")})),this.addListener(this.$colorInput,"input","updateColor")}},updateColor:function(){this.$input.val(this.$colorInput.val()),this.handleTextChange()},handleTextChange:function(){var t=this.$input.val();t!==(t=t.trim())&&this.$input.val(t),t.length&&"#"===t[0]&&(t=t.substring(1),this.$input.val(t)),t.length?(3===t.length&&(t=t[0].repeat(2)+t[1].repeat(2)+t[2].repeat(2)),t.match(/^[0-9a-f]{6}$/i)?(this.$colorPreview.css("background-color","#".concat(t)),this.$colorInput&&this.$colorInput.val("#".concat(t))):this.$colorPreview.css("background-color","")):this.$colorPreview.css("background-color","")}},{defaults:{presets:[]},_browserSupportsColorInputs:null,doesBrowserSupportColorInputs:function(){return Craft.ColorInput._browserSupportsColorInputs,Craft.ColorInput._browserSupportsColorInputs}})},3048:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.ComponentSelectInput=Garnish.Base.extend({componentSelect:null,componentSort:null,$container:null,$form:null,$list:null,$components:null,$addBtn:null,$createBtn:null,_initialized:!1,init:function(t){var e=this;this.setSettings(t,Craft.ComponentSelectInput.defaults),1===this.settings.limit&&(this.settings.sortable=!1),this.$container=$("#".concat(this.settings.id)),this.$form=this.$container.closest("form"),this.$container.data("componentSelect",this),this.$list=this.$container.children("ul"),this.$addBtn=this.$container.find(".add-btn:first"),this.$createBtn=this.$container.find(".create-btn:first"),this.initComponentSelect(),this.initComponentSort(),this.resetComponents(),this.$addBtn.length&&this.addListener(this.getOptions(),"activate",(function(t){var n=$(t.currentTarget);e.addComponent(n.data("type"),n.data("id"))})),this.$createBtn.length&&this.settings.createAction&&this.addListener(this.$createBtn,"activate",(function(){var t=new Craft.CpScreenSlideout(e.settings.createAction);t.on("submit",(function(t){var n=t.response.data;e.addComponent(n.modelClass,n.modelId,!0)})),t.on("close",(function(){e.$createBtn.focus()}))})),this.componentSelect&&this.addListener(Garnish.$win,"mousedown",(function(t){e.$container.is(t.target)||e.$container.find(t.target).length||e.componentSelect.deselectAll()})),this._initialized=!0},get totalSelected(){return this.$components.length},getComponents:function(){return this.$list.find(".chip")},getOptions:function(){return this.$addBtn.length?this.$addBtn.disclosureMenu().data("disclosureMenu").$container.find("button"):$()},getOption:function(t){return this.getOptions().filter('[data-id="'.concat(t,'"]'))},showOption:function(t){this.getOption(t).parent("li").removeClass("hidden")},hideOption:function(t){this.getOption(t).parent("li").addClass("hidden")},initComponentSelect:function(){this.settings.selectable&&(this.componentSelect=new Garnish.Select({multi:this.settings.sortable,filter:function(t){return!$(t).closest("a[href],button,[role=button]").length},makeFocusable:!1}))},initComponentSort:function(){var t=this;this.settings.sortable&&(this.componentSort=new Garnish.DragSort({container:this.$list,filter:this.settings.selectable?function(){return t.componentSort.$targetItem.children(".chip").hasClass("sel")?t.componentSelect.getSelectedItems().parent("li"):t.componentSort.$targetItem}:null,ignoreHandleSelector:".delete",handle:"> .chip > .chip-content > .chip-actions > .move",axis:this.getComponentSortAxis(),collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onChange()}}))},getComponentSortAxis:function(){return this.$list.hasClass("inline-chips")?null:"y"},canAddMoreComponents:function(){return!this.settings.limit||this.$components.length<this.settings.limit},updateButtons:function(){this.canAddMoreComponents()?(this.$addBtn.length&&(this.getOptions().parent(":not(.hidden)").length?this.$addBtn.removeClass("hidden"):this.$addBtn.addClass("hidden")),this.$createBtn.length&&this.$createBtn.removeClass("hidden")):(this.$addBtn.length&&this.$addBtn.addClass("hidden"),this.$createBtn.length&&this.$createBtn.addClass("hidden"));var t=this.$addBtn.length&&this.$addBtn.parent(".flex");t&&t.length&&(t.children(":not(.hidden)").length?t.removeClass("hidden"):t.addClass("hidden"))},focusNextLogicalElement:function(){this.canAddMoreComponents()?this.$addBtn.length&&this.$addBtn.get(0).focus():this.focusLastRemoveBtn()},focusLastRemoveBtn:function(){var t=this.$container.find(".delete");t.length&&t.last()[0].focus()},resetComponents:function(){null!==this.$components?this.removeComponents(this.$components):this.$components=$(),this.addComponents(this.getComponents())},addComponents:function(t){for(var e=this,n=function(){var n=t.eq(i),r=e.defineComponentActions(n);Craft.addActionsToChip(n,r);var a=n.find("> .chip-content > .chip-actions .action-btn").disclosureMenu().data("disclosureMenu"),s=a.$container.find("[data-move-forward]")[0],o=a.$container.find("[data-move-backward]")[0];a.on("show",(function(){var t=n.parent(),e=t.prev(),i=t.next();s&&a.toggleItem(s,e.length),o&&a.toggleItem(o,i.length)})),e.settings.sortable&&$("<button/>",{type:"button",class:"move icon",title:Craft.t("app","Reorder"),"aria-label":Craft.t("app","Reorder"),"aria-describedby":n.find(".label").attr("id")}).appendTo(n.find(".chip-actions")),e.addListener(n,"dblclick,taphold",(function(t){"taphold"===t.type&&"BUTTON"===t.target.nodeName||a.$container.find("[data-edit-action]").click()})),e.hideOption(n.data("id"))},i=0;i<t.length;i++)n();this.settings.selectable&&this.componentSelect.addItems(t),this.settings.sortable&&this.componentSort.addItems(t.parent("li")),t.on("keydown",(function(t){if([Garnish.BACKSPACE_KEY,Garnish.DELETE_KEY].includes(t.keyCode)){t.stopPropagation(),t.preventDefault();for(var n=e.componentSelect.getSelectedItems(),i=0;i<n.length;i++)e.removeComponent(n.eq(i))}})),this.$components=this.$components.add(t),this.onChange()},defineComponentActions:function(t){var e=this,n=[];if(this.settings.sortable){var i=this.getComponentSortAxis();n.push({icon:"y"===i?"arrow-up":"ltr"===Craft.orientation?"arrow-left":"arrow-right",label:"y"===i?Craft.t("app","Move up"):Craft.t("app","Move forward"),callback:function(){e.moveComponentForward(t)},attributes:{"data-move-forward":!0}}),n.push({icon:"y"===i?"arrow-down":"ltr"===Craft.orientation?"arrow-right":"arrow-left",label:"y"===i?Craft.t("app","Move down"):Craft.t("app","Move backward"),callback:function(){e.moveComponentBackward(t)},attributes:{"data-move-backward":!0}})}return n.push({icon:"remove",label:Craft.t("app","Remove"),callback:function(){e.removeComponent(t)},destructive:!0}),n},onChange:function(){var t;null===(t=this.componentSelect)||void 0===t||t.resetItemOrder(),this.$components=$().add(this.$components),this.updateButtons(),this._initialized&&this.trigger("change")},moveComponentForward:function(t){var e=t.closest("li"),n=e.prev();n.length&&(e.insertBefore(n),this.onChange())},moveComponentBackward:function(t){var e=t.closest("li"),n=e.next();n.length&&(e.insertAfter(n),this.onChange())},removeComponents:function(t){this.settings.selectable&&this.componentSelect.removeItems(t),t.children("input").prop("disabled",!0);for(var e=0;e<t.length;e++)this.showOption(t.eq(e).data("id"));var n;if(this.settings.selectable){var i=this.$components.index(t.last());n=this.$components.eq(i+1)}n.length?n.focus():this.focusNextLogicalElement(),this.$components=this.$components.not(t),this.onChange()},removeComponent:function(t){$("[name]",t).removeAttr("name"),this.removeComponents(t),this.animateComponentAway(t,(function(){t.parent("li").remove()}))},animateComponentAway:function(t,e){t.css("z-index",0);var n={opacity:-1};n["margin-"+Craft.left]=-(t.outerWidth()+parseInt(t.css("margin-"+Craft.right))),n["margin-bottom"]=-(t.outerHeight()+parseInt(t.css("margin-bottom"))),t.velocity(n,Craft.ComponentSelectInput.REMOVE_FX_DURATION,(function(){e&&e()}))},getSelectedComponentIds:function(){for(var t=[],e=0;e<this.$components.length;e++)t.push(this.$components.eq(e).data("id"));return t},addComponent:function(t,i){var r,a=arguments,s=this;return(r=e().mark((function n(){var r,o,l,c,h,u,d;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=a.length>2&&void 0!==a[2]&&a[2],o=s.$addBtn.length?s.$addBtn.disclosureMenu().data("disclosureMenu"):null,e.next=4,Craft.sendActionRequest("POST","app/render-components",{data:{components:[{type:t,id:i,instances:[{showActionMenu:s.settings.showActionMenu,inputName:s.settings.name}]}],withMenuItems:r,menuId:null==o?void 0:o.$container.attr("id")}});case 4:return l=e.sent,c=l.data,(h=s.canAddMoreComponents())&&(u=$(c.components[t][i][0]),$("<li/>").append(u).appendTo(s.$list),s.addComponents(u)),r&&o&&(d=$(c.menuItems[t][i]),o.addItem(d),h&&o.hideItem(d.children()[0]),s.addListener(d.find("button"),"activate",(function(){s.addComponent(t,i)}))),e.next=11,Craft.appendHeadHtml(c.headHtml);case 11:return e.next=13,Craft.appendBodyHtml(c.bodyHtml);case 13:case"end":return e.stop()}}),n)})),function(){var t=this,e=arguments;return new Promise((function(i,a){var s=r.apply(t,e);function o(t){n(s,i,a,o,l,"next",t)}function l(t){n(s,i,a,o,l,"throw",t)}o(void 0)}))})()}},{REMOVE_FX_DURATION:200,defaults:{id:null,name:null,limit:null,sortable:!0,selectable:!0,showActionMenu:!0,createAction:null}})},1157:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.CpModal=Garnish.Modal.extend({action:null,namespace:null,showingLoadSpinner:!1,$loadSpinner:null,$container:null,$body:null,$content:null,$sidebar:null,$footer:null,$cancelBtn:null,$saveBtn:null,showingSidebar:!1,cancelToken:null,ignoreFailedRequest:!1,fieldsWithErrors:null,init:function(t,e){var n=this;this.action=t,this.setSettings(e,Craft.CpModal.defaults),this.fieldsWithErrors=[],this.$body=$("<div/>",{class:"cpmodal-body"}),this.$content=$("<div/>",{class:"cpmodal-content"}).appendTo(this.$body),this.$footer=$("<div/>",{class:"cpmodal-footer hidden"}),$("<div/>",{class:"flex-grow"}).appendTo(this.$footer);var i=$("<div/>",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$loadSpinner=$("<div/>",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).prependTo(i),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(i),this.settings.showSubmitButton&&(this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(i)),this.$container=$("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes);var r=this.$body.add(this.$footer);this.$container.append(r),this.base(this.$container,{autoShow:!1}),this.$container.data("cpModal",this),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){n.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){n.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!n.showingSidebar||e.closest(n.$sidebarBtn).length||e.closest(n.$sidebar).length||n.hideSidebar()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var n=this;return new Promise((function(t,i){n.trigger("beforeLoad"),n.showLoadSpinner(),n.cancelToken&&(n.ignoreFailedRequest=!0,n.cancelToken.cancel()),n.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",n.action,$.extend({params:Object.assign({},n.getParams(),n.settings.params),cancelToken:n.cancelToken.token,headers:{"X-Craft-Container-Id":n.$container.attr("id")}},n.settings.requestOptions)).then((function(r){n.update(r.data).then((function(){!1!==e&&(n.$container.data("delta-names",r.data.deltaNames),n.$container.data("initial-delta-values",r.data.initialDeltaValues),n.$container.data("initialSerializedValue",n.$container.serialize())),t()})).catch((function(t){i(t)}))})).catch((function(t){n.ignoreFailedRequest||(Craft.cp.displayError(),i(t)),n.ignoreFailedRequest=!1})).finally((function(){n.hideLoadSpinner(),n.show(),n.cancelToken=null}))}))},getParams:function(){return{}},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1},update:function(t){var e=this;return new Promise((function(n){e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame((function(){Craft.appendHeadHtml(t.headHtml),Craft.appendBodyHtml(t.bodyHtml),Craft.initUiElements(e.$content),Craft.cp.elementThumbLoader.load($(e.$content)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),n(),e.trigger("load")}))}))},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){t.preventDefault(),this.submit()},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),e.modelClass&&e.modelId&&Craft.refreshComponentInstances(e.modelClass,e.modelId),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors)},showErrors:function(e){var n=this;this.clearErrors(),Object.entries(e).forEach((function(e){var i,r,a=(r=2,function(t){if(Array.isArray(t))return t}(i=e)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(i,r)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(i,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=a[0],o=a[1],l=n.$container.find('[data-attribute="'.concat(s,'"]'));l&&(Craft.ui.addErrorsToField(l,o),n.fieldsWithErrors.push(l))})),this.updateSizeAndPosition()},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){var t=this,e=this.$container.data("initialSerializedValue");return void 0!==e&&e!==(this.$container.data("serializer")||function(){return t.$container.serialize()})()},closeMeMaybe:function(){this.visible&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("close"),this.destroy()}},{defaults:{params:{},containerElement:"form",containerAttributes:{id:"cp-modal-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cpmodal modal fitted"},requestOptions:{},closeOnSubmit:!0,showSubmitButton:!0}})},8167:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function i(){"use strict";i=function(){return n};var e,n={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function r(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var s=t.apply(e,n);function o(t){r(s,i,a,o,l,"next",t)}function l(t){r(s,i,a,o,l,"throw",t)}o(void 0)}))}}Craft.CpScreenSlideout=Craft.Slideout.extend({action:null,namespace:null,showingLoadSpinner:!1,hasTabs:!1,hasCpLink:!1,hasSidebar:!1,$header:null,$toolbar:null,$tabContainer:null,$loadSpinner:null,$actionBtn:null,$editLink:null,$sidebarBtn:null,$body:null,$content:null,$sidebar:null,$footer:null,$noticeContainer:null,$cancelBtn:null,$saveBtn:null,tabManager:null,showingSidebar:!1,cancelToken:null,ignoreFailedRequest:!1,fieldsWithErrors:null,init:function(t,e){var n=this;this.action=t,this.setSettings(e,Craft.CpScreenSlideout.defaults),this.fieldsWithErrors=[],this.$header=$("<header/>",{class:"pane-header"}),this.$toolbar=$("<div/>",{class:"so-toolbar"}).appendTo(this.$header),this.$tabContainer=$("<div/>",{class:"pane-tabs"}).appendTo(this.$toolbar),this.$loadSpinner=$("<div/>",{class:"spinner",title:Craft.t("app","Loading"),"aria-label":Craft.t("app","Loading")}).appendTo(this.$toolbar),this.$editLink=$("<a/>",{target:"_blank",class:"btn header-btn hidden",title:Craft.t("app","Open in a new tab"),"aria-label":Craft.t("app","Open in a new tab"),"data-icon":"external"}).appendTo(this.$toolbar),this.$sidebarBtn=$("<button/>",{type:"button",class:"btn header-btn hidden sidebar-btn",title:Craft.t("app","Show sidebar"),"aria-label":Craft.t("app","Show sidebar"),"data-icon":"sidebar-".concat(Garnish.ltr?"right":"left"),"aria-expanded":"false"}).appendTo(this.$toolbar),this.addListener(this.$sidebarBtn,"click",(function(t){t.preventDefault(),n.showingSidebar?n.hideSidebar():n.showSidebar()})),this.$body=$("<div/>",{class:"so-body"}),this.$content=$("<div/>",{class:"so-content"}).appendTo(this.$body),this.$sidebar=$("<div/>",{class:"so-sidebar details hidden"}).appendTo(this.$body),this.$footer=$("<div/>",{class:"so-footer hidden"}),this.$noticeContainer=$("<div/>",{class:"so-notice"}).appendTo(this.$footer),$("<div/>",{class:"flex-grow"}).appendTo(this.$footer);var i=$("<div/>",{class:"flex flex-nowrap"}).appendTo(this.$footer);this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(i),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).appendTo(i);var r=this.$header.add(this.$body).add(this.$footer);this.base(r,{containerElement:"form",containerAttributes:{id:"cp-screen-".concat(Math.floor(1e8*Math.random())),action:"",method:"post",novalidate:"",class:"cp-screen"},closeOnEsc:!1,closeOnShadeClick:!1}),this.$container.data("cpScreen",this),this.on("beforeClose",(function(){n.hideSidebarIfOverlapping()})),Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0},(function(t){n.handleSubmit(t)})),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){n.closeMeMaybe()})),this.addListener(this.$cancelBtn,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$shade,"click",(function(){n.closeMeMaybe()})),this.addListener(this.$container,"click",(function(t){var e=$(event.target);!n.showingSidebar||e.closest(n.$sidebarBtn).length||e.closest(n.$sidebar).length||n.hideSidebarIfOverlapping()})),this.addListener(this.$container,"submit","handleSubmit"),this.load()},load:function(t,e){var n=this;return new Promise((function(t,i){n.trigger("beforeLoad"),n.showLoadSpinner(),n.cancelToken&&(n.ignoreFailedRequest=!0,n.cancelToken.cancel()),n.cancelToken=axios.CancelToken.source(),Craft.sendActionRequest("GET",n.action,$.extend({params:Object.assign({},n.getParams(),n.settings.params),cancelToken:n.cancelToken.token,headers:{"X-Craft-Container-Id":n.$container.attr("id")}},n.settings.requestOptions)).then((function(r){n.update(r.data).then((function(){!1!==e&&(n.$container.data("delta-names",r.data.deltaNames),n.$container.data("initial-delta-values",r.data.initialDeltaValues),n.$container.data("initialSerializedValue",n.$container.serialize())),t()})).catch((function(t){i(t)}))})).catch((function(t){n.ignoreFailedRequest||(Craft.cp.displayError(),i(t)),n.ignoreFailedRequest=!1})).finally((function(){n.hideLoadSpinner(),n.cancelToken=null}))}))},getParams:function(){return{}},updateHeaderVisibility:function(){var t=this.settings.showHeader||this.hasTabs||this.hasCpLink||this.showingLoadSpinner;t||this.hasSidebar?this.$header.removeClass("hidden"):this.$header.addClass("hidden"),t?this.$header.addClass("so-visible"):this.$header.removeClass("so-visible")},showLoadSpinner:function(){this.$loadSpinner.removeClass("hidden"),this.showingLoadSpinner=!0,this.updateHeaderVisibility()},hideLoadSpinner:function(){this.$loadSpinner.addClass("hidden"),this.showingLoadSpinner=!1,this.updateHeaderVisibility()},update:function(t){var e=this;return new Promise((function(n){if(e.namespace=t.namespace,t.bodyClass&&e.$body.addClass(t.bodyClass),e.$content.html(t.content),t.submitButtonLabel&&e.$saveBtn.text(t.submitButtonLabel),e.updateTabs(t.tabs),t.formAttributes&&Craft.setElementAttributes(e.$container,t.formAttributes),t.editUrl?(e.$editLink.removeClass("hidden").attr("href",t.editUrl),e.hasCpLink=!0):(e.$editLink.addClass("hidden"),e.hasCpLink=!1),t.actionMenu){var r=Craft.namespaceId("action-menu-label",e.namespace),s=Craft.namespaceId("action-menu",e.namespace);$("<label/>",{id:r,class:"visually-hidden",text:Craft.t("app","Actions")}).insertBefore(e.$editLink),e.$actionBtn=$("<button/>",{class:"btn action-btn header-btn",type:"button",title:Craft.t("app","Actions"),"aria-controls":s,"aria-describedby":r,"data-disclosure-trigger":"true"}).insertBefore(e.$editLink),$(t.actionMenu).insertBefore(e.$editLink),e.$actionBtn.disclosureMenu()}else e.$actionBtn=null;t.sidebar?(e.$sidebarBtn.removeClass("hidden"),e.$sidebar.html(t.sidebar),e.$sidebar.find("a").each((function(){this.hostname.length&&void 0===$(this).attr("target")&&$(this).attr("target","_blank")})),e.hasSidebar=!0,e.$container.width()>700?e.showSidebar():e.hideSidebar()):(e.hideSidebar(),e.$sidebarBtn.addClass("hidden"),e.$sidebar.addClass("hidden").html(""),e.hasSidebar=!1),t.notice?e.$noticeContainer.html(t.notice):e.$noticeContainer.empty(),e.updateHeaderVisibility(),e.$footer.removeClass("hidden"),Garnish.requestAnimationFrame(a(i().mark((function r(){return i().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return Craft.initUiElements(e.$content),i.next=3,Craft.appendHeadHtml(t.headHtml);case 3:return i.next=5,Craft.appendBodyHtml(t.bodyHtml);case 5:Craft.cp.elementThumbLoader.load($(e.$content)),t.sidebar&&(Craft.initUiElements(e.$sidebar),Craft.cp.elementThumbLoader.load(e.$sidebar)),Garnish.isMobileBrowser()||Craft.setFocusWithin(e.$content),n(),e.trigger("load");case 10:case"end":return i.stop()}}),r)}))))}))},updateTabs:function(t){var e=this;if(this.tabManager&&(this.tabManager.destroy(),this.tabManager=null,this.$tabContainer.html("")),this.hasTabs=!!t,this.hasTabs){var n=$(t);this.$tabContainer.replaceWith(n),this.$tabContainer=n,this.tabManager=new Craft.Tabs(this.$tabContainer),this.tabManager.on("deselectTab",(function(t){$(t.$tab.attr("href")).addClass("hidden")})),this.tabManager.on("selectTab",(function(t){$(t.$tab.attr("href")).removeClass("hidden"),Garnish.$win.trigger("resize"),e.$body.trigger("scroll")}))}},showSidebar:function(){var t=this;this.showingSidebar||(this.$container.addClass("showing-sidebar"),this.$body.scrollTop(0).addClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).removeClass("hidden"),this.$sidebar[0].offsetWidth,this.$sidebar.css(this._openedSidebarStyles()),Garnish.isMobileBrowser()||this.$sidebar.one("transitionend.so",(function(){Craft.setFocusWithin(t.$sidebar)})),Craft.trapFocusWithin(this.$sidebar),this.$sidebarBtn.addClass("active").attr({"aria-expanded":"true"}),Garnish.$win.trigger("resize"),this.$sidebar.trigger("scroll"),Garnish.uiLayerManager.addLayer({bubble:!0}),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(e){t.hideSidebarIfOverlapping()||e.bubbleShortcut()})),this.showingSidebar=!0)},hideSidebar:function(){var t=this;this.showingSidebar&&(this.$container.removeClass("showing-sidebar"),this.$body.removeClass("no-scroll"),this.$sidebar.off("transitionend.so").css(this._closedSidebarStyles()).one("transitionend.so",(function(){t.$sidebar.addClass("hidden"),t.$sidebarBtn.focus()})),this.$sidebarBtn.removeClass("active").attr({"aria-expanded":"false"}),Garnish.uiLayerManager.removeLayer(),this.showingSidebar=!1)},hideSidebarIfOverlapping:function(){return!(!this.showingSidebar||"absolute"!==this.$sidebar.css("position")||(this.hideSidebar(),0))},_openedSidebarStyles:function(){return n({},Garnish.ltr?"right":"left","0")},_closedSidebarStyles:function(){return n({},Garnish.ltr?"right":"left","-350px")},showSubmitSpinner:function(){this.$saveBtn.addClass("loading")},hideSubmitSpinner:function(){this.$saveBtn.removeClass("loading")},handleSubmit:function(t){var e=this;t.preventDefault(),setTimeout((function(){e.submit()}),1)},submit:function(){var t=this;this.showSubmitSpinner();var e=Craft.findDeltaData(this.$container.data("initialSerializedValue"),this.$container.serialize(),this.$container.data("delta-names"),null,this.$container.data("initial-delta-values"));Craft.sendActionRequest("POST",null,{data:e,headers:{"X-Craft-Namespace":this.namespace}}).then((function(e){t.handleSubmitResponse(e)})).catch((function(e){t.handleSubmitError(e)})).finally((function(){t.hideSubmitSpinner()}))},handleSubmitResponse:function(t){this.clearErrors();var e=t.data||{};e.message&&Craft.cp.displaySuccess(e.message,e.notificationSettings),e.modelClass&&e.modelId&&Craft.refreshComponentInstances(e.modelClass,e.modelId),this.trigger("submit",{response:t,data:e.modelName&&e[e.modelName]||{}}),this.settings.closeOnSubmit&&this.close()},handleSubmitError:function(t){if(!t.isAxiosError||!t.response||400===!t.response.status)throw Craft.cp.displayError(),t;var e=t.response.data||{};Craft.cp.displayError(e.message),e.errors&&this.showErrors(e.errors),e.errorSummary&&this.showErrorSummary(e.errorSummary,Object.keys(e.errors||{}).length)},showErrorSummary:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(Craft.ui.clearErrorSummary(this.$body),null!==this.tabManager){var n=this.tabManager.$tabs,i=n.filter(".error"),r=this.$content;n.each((function(n,a){var s=$(a).data("id"),o=r.find("#"+s);if(o.length>0){var l=o.data("layout-tab"),c=$(t),h=c.find("ul.errors li").length,u="";c.find("ul.errors li").each((function(t,e){var n=$(e).find("a").data("layout-tab");void 0!==n&&n!==l&&($(e).remove(),h--)})),h>0?(u=Craft.t("app","Found {num, number} {num, plural, =1{error} other{errors}} in this tab.",{num:h}),i.length-1>0&&(u+='<span class="visually-hidden">'+Craft.t("app","{total, number} {total, plural, =1{error} other{errors}} found in {num, number} {num, plural, =1{tab} other{tabs}}.",{total:e,num:i.length})+"</span>")):u=Craft.t("app","Found errors in other tabs."),c.find("h2").html(u),c.prependTo(o),Craft.ui.setFocusOnErrorSummary(o)}}))}else $(t).prependTo(this.$content),Craft.ui.setFocusOnErrorSummary(this.$content)},showErrors:function(t){var n,i=this;this.clearErrors();var r=(null===(n=this.tabManager)||void 0===n?void 0:n.menu)||[],a='<span data-icon="alert"><span class="visually-hidden">'+Craft.t("app","This tab contains errors")+"</span>\n</span>";Object.entries(t).forEach((function(t){var n=function(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t,2),s=n[0],o=n[1],l=i.$container.find('[data-error-key="'.concat(s,'"]'));if(l){Craft.ui.addErrorsToField(l,o),i.fieldsWithErrors.push(l);var c=Craft.ui.findTabAnchorForField(l,i.$container);if(c.length>0){0==i.tabManager.$menuBtn.hasClass("error")&&(i.tabManager.$menuBtn.addClass("error"),i.tabManager.$menuBtn.append('<span data-icon="alert"></span>'));for(var h=0;h<c.length;h++){var u=$(c[h]);if(0==u.hasClass("error")&&(u.addClass("error"),u.find(".tab-label").append(a),r.length)){var d=r.find("[data-id="+u.data("id")+"]");d.length>0&&0==d.hasClass("error")&&(d.addClass("error"),d.append(a))}}}}}))},clearErrors:function(){this.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)}))},isDirty:function(){var t=this,e=this.$container.data("initialSerializedValue");return void 0!==e&&e!==(this.$container.data("serializer")||function(){return t.$container.serialize()})()},closeMeMaybe:function(){this.isOpen&&(this.isDirty()&&!confirm(Craft.t("app","Are you sure you want to close this screen? Any changes will be lost."))||this.close())},close:function(){this.showingSidebar&&this.hideSidebar(),this.base(),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel())}},{defaults:{params:{},requestOptions:{},showHeader:null,closeOnSubmit:!0}})},9922:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){this.trigger=this.querySelector('button[type="button"]'),this.trigger?(this.target=document.getElementById(this.trigger.getAttribute("aria-controls")),this.target?(this.trigger.getAttribute("aria-expanded")||this.trigger.setAttribute("aria-expanded","false"),this.trigger.addEventListener("click",this.toggle.bind(this)),this.expanded="true"===this.trigger.getAttribute("aria-expanded"),this.expanded?this.open():this.close()):console.error("No target with id ".concat(this.trigger.getAttribute("aria-controls")," found for disclosure. "),this.trigger)):console.error("craft-disclosure elements must include a button",this)}},{key:"disconnectedCallback",value:function(){this.open(),this.trigger.removeEventListener("click",this.toggle.bind(this))}},{key:"toggle",value:function(){this.expanded?this.close():this.open()}},{key:"open",value:function(){this.trigger.setAttribute("aria-expanded","true"),this.expanded=!0,this.target.dataset.state="expanded",this.dispatchEvent(new CustomEvent("open"))}},{key:"close",value:function(){this.trigger.setAttribute("aria-expanded","false"),this.expanded=!1,this.target.dataset.state="collapsed",this.dispatchEvent(new CustomEvent("close"))}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-disclosure",o)},6959:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){var t=this;this.labelLink=this.querySelector(".label-link"),this.tooltip=null,this.labelLink?(this.$tabs=$("#tabs"),this.$tabs.length&&this.$tabs.data("tabs")&&this.$tabs.data("tabs").on("selectTab",(function(){t.update()})),this.update(),$((function(){t.update()}))):console.warn("No label link found in craft-element-label.")}},{key:"update",value:function(){this.desiredWidth=this.calculateWidth(this.innerText),this.hasOverflow=this.desiredWidth>this.scrollWidth,this.hasOverflow&&(this.tooltip=this.querySelector("craft-tooltip"),this.tooltip||this.createTooltip())}},{key:"createTooltip",value:function(){this.tooltip=document.createElement("craft-tooltip"),this.tooltip.setAttribute("aria-hidden","true"),this.tooltip.innerText=this.innerText;var t=this.querySelector(".context-label");t&&(this.tooltip.innerText=this.tooltip.innerText.replace(t.innerText," (".concat(t.innerText,")"))),this.labelLink.appendChild(this.tooltip)}},{key:"disconnectedCallback",value:function(){var t,e;null===(t=this.tooltip)||void 0===t||t.remove(),null===(e=this.$tabs.data("tabs"))||void 0===e||e.off("selectTab")}},{key:"calculateWidth",value:function(t){var e=document.createElement("span");Object.assign(e.style,{position:"absolute",visibility:"hidden",whiteSpace:"nowrap",fontFamily:"inherit"}),e.innerHTML=t,this.appendChild(e);var n=e.clientWidth;return this.removeChild(e),n}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-element-label",o)},147:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var i=0;i<e.length;i++){var r=e[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,n(r.key),r)}}function n(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}function i(t){var e="function"==typeof Map?new Map:void 0;return i=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(r())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var s=new(t.bind.apply(t,i));return n&&a(s,n.prototype),s}(t,arguments,s(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),a(n,t)},i(t)}function r(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(r=function(){return!!t})()}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t){return s=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},s(t)}var o=function(n){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,n,i){return n=s(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,r()?Reflect.construct(n,i||[],s(e).constructor):n.apply(e,i))}(this,i,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}(i,n),o=i,(l=[{key:"connectedCallback",value:function(){this.trigger=this.querySelector("#sidebar-trigger"),this.trigger&&(this.trigger.addEventListener("open",this.expand.bind(this)),this.trigger.addEventListener("close",this.collapse.bind(this))),this.items=this.querySelectorAll(".sidebar-action")}},{key:"disconnectedCallback",value:function(){this.trigger&&(this.trigger.removeEventListener("open",this.expand.bind(this)),this.trigger.removeEventListener("close",this.collapse.bind(this))),this.expand()}},{key:"createTooltips",value:function(){this.items&&this.items.forEach((function(t){var e,n=document.createElement("craft-tooltip");n.setAttribute("placement","right"),n.innerText=null===(e=t.querySelector(".label"))||void 0===e?void 0:e.innerText,t.append(n)}))}},{key:"destroyTooltips",value:function(){this.items&&this.items.forEach((function(t){var e=t.querySelector("craft-tooltip");null==e||e.remove()}))}},{key:"expand",value:function(){document.body.setAttribute("data-sidebar","expanded"),Craft.setCookie("sidebar","expanded"),this.destroyTooltips()}},{key:"collapse",value:function(){document.body.setAttribute("data-sidebar","collapsed"),Craft.setCookie("sidebar","collapsed"),this.createTooltips()}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),i}(i(HTMLElement));customElements.define("craft-global-sidebar",o)},4215:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,s(i.key),i)}}function n(t){var e="function"==typeof Map?new Map:void 0;return n=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(i())return Reflect.construct.apply(null,arguments);var a=[null];a.push.apply(a,e);var s=new(t.bind.apply(t,a));return n&&r(s,n.prototype),s}(t,arguments,a(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),r(n,t)},n(t)}function i(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(i=function(){return!!t})()}function r(t,e){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},r(t,e)}function a(t){return a=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},a(t)}function s(e){var n=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==t(n)?n:String(n)}var o,l,c,h=function(n){function s(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),function(e,n,r){return n=a(n),function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(e)}(e,i()?Reflect.construct(n,r||[],a(e).constructor):n.apply(e,r))}(this,s,arguments)}var o,l;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&r(t,e)}(s,n),o=s,(l=[{key:"hidden",get:function(){return this.getAttribute("hidden")}},{key:"hasOverflow",get:function(){var t,e;return(null===(t=this.content)||void 0===t?void 0:t.scrollWidth)>(null===(e=this.scroller)||void 0===e?void 0:e.clientWidth)}},{key:"connectedCallback",value:function(){this.ignoreScrollEvent=!1,this.animation=!1,this.scroller=document.querySelector(this.getAttribute("scroller")),this.content=document.querySelector(this.getAttribute("content")),this.scroller&&this.content&&(this.proxy=document.createElement("div"),this.proxy.style.height="1px",this.proxy.style.width=this.content.getBoundingClientRect().width+"px",this.appendChild(this.proxy),this.addEventListener("scroll",this.syncScroll(this.scroller,this)),this.scroller.addEventListener("scroll",this.syncScroll(this,this.scroller)),window.addEventListener("resize",this.handleResize.bind(this)),Object.assign(this.style,{display:this.hasOverflow?"block":"none",overflowX:"scroll"}))}},{key:"attributeChangedCallback",value:function(t,e,n){"hidden"===t&&(this.style.display=n?"none":"block")}},{key:"disconnectedCallback",value:function(){this.proxy.remove(),this.scroller.removeEventListener("scroll",this.syncScroll(this.scroller,this)),this.scroller.removeEventListener("scroll",this.syncScroll(this,this.scroller)),window.removeEventListener("resize",this.handleResize.bind(this))}},{key:"handleResize",value:function(){this.proxy.style.width=this.content.getBoundingClientRect().width+"px",this.hasOverflow?this.removeAttribute("hidden"):this.setAttribute("hidden","true")}},{key:"syncScroll",value:function(t,e){var n=this;return function(){if(n.ignoreScrollEvent)return!1;n.animation&&cancelAnimationFrame(n.animation),n.animation=requestAnimationFrame((function(){n.ignoreScrollEvent=!0,t.scrollLeft=e.scrollLeft,n.ignoreScrollEvent=!1}))}}}])&&e(o.prototype,l),Object.defineProperty(o,"prototype",{writable:!1}),s}(n(HTMLElement));o=h,c=["hidden"],(l=s(l="observedAttributes"))in o?Object.defineProperty(o,l,{value:c,enumerable:!0,configurable:!0,writable:!0}):o[l]=c,customElements.define("craft-proxy-scrollbar",h)},691:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||i(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||i(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(t,e){if(t){if("string"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function a(){"use strict";a=function(){return n};var e,n={},i=Object.prototype,r=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&r.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(a,s,o,l){var c=f(e[a],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&r.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var a;s(this,"_invoke",{value:function(t,e){function r(){return new n((function(n,r){i(t,e,n,r)}))}return a=a?a.then(r,r):r()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var a=-1,s=function t(){for(;++a<n.length;)if(r.call(n,a))return t.value=n[a],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function s(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){s(a,i,r,o,l,"next",t)}function l(t){s(a,i,r,o,l,"throw",t)}o(void 0)}))}}var l,c,h,u,d;Craft.CustomizeSourcesModal=Garnish.Modal.extend({elementIndex:null,$elementIndexSourcesContainer:null,$sidebar:null,$sidebarToggleBtn:null,$sourcesContainer:null,$sourcesHeader:null,$sourcesHeading:null,$sourceSettingsContainer:null,$sourceSettingsHeader:null,$addSourceMenu:null,addSourceMenu:null,$footer:null,$footerBtnContainer:null,$saveBtn:null,$cancelBtn:null,$loadingSpinner:null,sourceSort:null,sources:null,selectedSource:null,elementTypeName:null,baseSortOptions:null,availableTableAttributes:null,customFieldAttributes:null,conditionBuilderHtml:null,conditionBuilderJs:null,userGroups:null,init:function(t,e){var n=this;this.base(),this.setSettings(e,{resizable:!0}),this.elementIndex=t,this.$elementIndexSourcesContainer=this.elementIndex.$sidebar.children("nav").children("ul");var i=$('<form class="modal customize-sources-modal"/>').appendTo(Garnish.$bod);this.$sidebar=$('<div class="cs-sidebar block-types"/>').appendTo(i).attr({role:"navigation","aria-label":Craft.t("app","Source")}),this.$sourcesContainer=$('<div class="sources">').appendTo(this.$sidebar),this.$sourceSettingsContainer=$('<div class="source-settings">').appendTo(i),this.$footer=$('<div class="footer"/>').appendTo(i),this.$footerBtnContainer=$('<div class="buttons right"/>').appendTo(this.$footer),this.$cancelBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$footerBtnContainer),this.$saveBtn=Craft.ui.createSubmitButton({class:"disabled",label:Craft.t("app","Save"),spinner:!0}).appendTo(this.$footerBtnContainer),this.$loadingSpinner=$('<div class="spinner"/>').appendTo(this.$sourceSettingsContainer),this.setContainer(i),this.show(),Craft.sendActionRequest("POST","element-index-settings/get-customize-sources-modal-data",{data:{elementType:this.elementIndex.elementType}}).then((function(t){n.$saveBtn.removeClass("disabled"),n.buildModal(t.data)})).finally((function(){n.$loadingSpinner.remove(),Garnish.setFocusWithin(n.$sidebar)})),this.addListener(this.$cancelBtn,"click","hide"),this.addListener(this.$saveBtn,"click","save"),this.addListener(this.$container,"submit","save")},buildModal:(l=o(a().mark((function t(e){var n,i,r,s,o,l,c,h=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this.baseSortOptions=e.baseSortOptions,this.defaultSortOptions=e.defaultSortOptions,this.availableTableAttributes=e.availableTableAttributes,this.customFieldAttributes=e.customFieldAttributes,this.elementTypeName=e.elementTypeName,this.conditionBuilderHtml=e.conditionBuilderHtml,this.conditionBuilderJs=e.conditionBuilderJs,this.sites=e.sites,this.userGroups=e.userGroups,!e.headHtml){t.next=12;break}return t.next=12,Craft.appendHeadHtml(e.headHtml);case 12:if(!e.bodyHtml){t.next=15;break}return t.next=15,Craft.appendBodyHtml(e.bodyHtml);case 15:for(this.sourceSort=new Garnish.DragSort({handle:".move",axis:"y"}),this.sources=[],n=0;n<e.sources.length;n++)this.sources.push(this.addSource(e.sources[n]));this.selectedSource||void 0===this.sources[0]||this.sources[0].select(),i=$('<div class="buttons left" data-wrapper/>').appendTo(this.$footer),r=$("<button/>",{type:"button",class:"btn menubtn add icon","aria-label":Craft.t("app","Add…"),"aria-controls":"add-source-menu",title:Craft.t("app","Add…"),"data-disclosure-trigger":""}).appendTo(i),this.$addSourceMenu=$("<div/>",{id:"add-source-menu",class:"menu menu--disclosure"}).appendTo(i),s=function(t){var e=h.addSource(t,!0);Garnish.scrollContainerToElement(h.$sidebar,e.$item),e.select(),h.addSourceMenu.hide()},o=$("<button/>",{type:"button",class:"menu-item",text:Craft.t("app","New heading")}).on("click",(function(){s({type:"heading"}),h.focusLabelInput()})),l=$("<button/>",{type:"button",class:"menu-item",text:Craft.t("app","New custom source"),"data-type":"custom"}).on("click",(function(){var t=h.baseSortOptions.slice(0);t.push(h.defaultSortOptions),s({type:"custom",key:"custom:".concat(Craft.uuid()),sortOptions:t,defaultSort:[t[0].attr,t[1].defaultDir],tableAttributes:[],availableTableAttributes:[]}),h.focusLabelInput()})),c=$("<ul/>").append($("<li/>").append(o)).appendTo(this.$addSourceMenu),e.conditionBuilderHtml&&$("<li/>").append(l).appendTo(c),Craft.useMobileStyles()&&this.buildSidebarToggleView(),this.addListener(Garnish.$win,"resize",this.updateSidebarView),this.addSourceMenu=new Garnish.DisclosureMenu(r);case 30:case"end":return t.stop()}}),t,this)}))),function(t){return l.apply(this,arguments)}),focusLabelInput:function(){this.selectedSource.$labelInput.trigger("focus")},getSourceName:function(){return this.selectedSource?this.selectedSource.sourceData.label:this.sources[0].sourceData.label},updateSidebarView:function(){Craft.useMobileStyles()?this.$sidebarToggleBtn||this.buildSidebarToggleView():this.$sidebarToggleBtn&&this.resetView()},resetView:function(){this.$sourceSettingsHeader&&this.$sourceSettingsHeader.remove(),this.$sourcesHeader&&this.$sourcesHeader.remove(),this.$sidebarToggleBtn=null,this.$container.removeClass("sidebar-hidden")},updateHeading:function(){this.$sourcesHeading&&this.$sourcesHeading.text(this.getSourceName())},buildSidebarToggleView:function(){var t=this;this.$sourcesHeader=$('<div class="sources-header"/>').addClass("sidebar-header").prependTo(this.$sourcesContainer),this.$sidebarCloseBtn=Craft.ui.createButton({class:"nav-close close-btn"}).attr("aria-label",Craft.t("app","Close")).removeClass("btn").appendTo(this.$sourcesHeader),this.$sourcesHeading=$('<h1 class="main-heading"/>').text(this.getSourceName()),this.$sourceSettingsHeader=$('<div class="source-settings-header"/>').addClass("main-header").append(this.$sourcesHeading).prependTo(this.$sourceSettingsContainer),this.$sidebarToggleBtn=Craft.ui.createButton({toggle:!0,controls:"modal-sidebar",class:"nav-toggle"}).removeClass("btn").attr("aria-label",Craft.t("app","Show sidebar")).appendTo(this.$sourceSettingsHeader),this.closeSidebar(),this.addListener(this.$sidebarToggleBtn,"click",(function(){t.toggleSidebar()})),this.addListener(this.$sidebarCloseBtn,"click",(function(){t.toggleSidebar(),t.$sidebarToggleBtn.trigger("focus")}))},toggleSidebar:function(){this.sidebarIsOpen()?this.closeSidebar():this.openSidebar()},openSidebar:function(){var t=this;this.$container.removeClass("sidebar-hidden"),this.$sidebarToggleBtn.attr("aria-expanded","true"),this.$sidebar.find(":focusable").first().focus(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.closeSidebar(),Garnish.focusIsInside(t.$sidebar)&&t.$sidebarToggleBtn.focus()}))},closeSidebar:function(){this.$container.addClass("sidebar-hidden"),this.$sidebarToggleBtn&&this.$sidebarToggleBtn.attr("aria-expanded","false"),Garnish.uiLayerManager.currentLayer.$container.hasClass("cs-sidebar")&&Garnish.uiLayerManager.removeLayer()},sidebarIsOpen:function(){return"true"===this.$sidebarToggleBtn.attr("aria-expanded")},addSource:function(t,e){var n,i=$('<div class="customize-sources-item"/>').appendTo(this.$sourcesContainer),r=$('<div class="label customize-sources-item__btn"/>').attr({tabindex:"0",role:"button"}).appendTo(i),a=$('<input type="hidden"/>').appendTo(i);return $('<a class="move icon customize-sources-item__move" title="'.concat(Craft.t("app","Reorder"),'" role="button"></a>')).appendTo(i),"heading"===t.type?(i.addClass("heading"),a.attr("name","sourceOrder[][heading]"),(n=new Craft.CustomizeSourcesModal.Heading(this,i,r,a,t,e)).updateItemLabel(t.heading)):(a.attr("name","sourceOrder[][key]").val(t.key),(n="native"===t.type?new Craft.CustomizeSourcesModal.Source(this,i,r,a,t,e):new Craft.CustomizeSourcesModal.CustomSource(this,i,r,a,t,e)).updateItemLabel(t.label),t.key===this.elementIndex.rootSourceKey&&n.select()),this.sourceSort.addItems(i),n},save:function(t){var e=this;t&&t.preventDefault(),this.$saveBtn.hasClass("disabled")||this.$saveBtn.hasClass("loading")||(this.$saveBtn.addClass("loading"),Craft.sendActionRequest("POST","element-index-settings/save-customize-sources-modal-settings",{data:this.$container.serialize()+"&elementType=".concat(this.elementIndex.elementType)}).then((function(t){var n=t.data,i=null;e.selectedSource&&e.selectedSource.sourceData.key&&!n.disabledSourceKeys.includes(e.selectedSource.sourceData.key)?i=e.selectedSource.sourceData.key:e.elementIndex.sourceKey||(i=e.elementIndex.$visibleSources.first().data("key")),i&&e.elementIndex.selectSourceByKey(i),window.location.reload()})).catch((function(){Craft.cp.displayError(Craft.t("app","A server error occurred."))})).finally((function(){e.$saveBtn.removeClass("loading")})))},appendIndexSourceItem:function(t,e){if(e){var n=t.hasClass("heading");if(e.hasClass("heading")&&!n)t.appendTo(e.children("ul"));else{if(n){var i=e.parentsUntil(this.$elementIndexSourcesContainer,"li").last();i.length&&(e=i)}t.insertAfter(e)}}else t.prependTo(this.$elementIndexSourcesContainer)},destroy:function(){for(var t=0;t<this.sources.length;t++)this.sources[t].destroy();this.addSourceMenu&&(this.addSourceMenu.destroy(),this.$addSourceMenu.remove()),delete this.sources,this.base()}}),Craft.CustomizeSourcesModal.BaseSource=Garnish.Base.extend({modal:null,$item:null,$itemLabel:null,$itemInput:null,$settingsContainer:null,sourceData:null,isNew:null,init:function(t,e,n,i,r,a){this.modal=t,this.$item=e,this.$itemLabel=n,this.$itemInput=i,this.sourceData=r,this.isNew=a,this.$item.data("source",this),this.addListener(this.$itemLabel,"activate",this.select)},isHeading:function(){return!1},isNative:function(){return!1},isSelected:function(){return this.modal.selectedSource===this},select:function(){this.isSelected()||(this.modal.selectedSource&&this.modal.selectedSource.deselect(),this.$item.addClass("sel"),this.$itemLabel.attr({"aria-current":"true"}),this.modal.selectedSource=this,this.modal.updateHeading(),this.$settingsContainer?this.$settingsContainer.removeClass("hidden"):(this.$settingsContainer=$("<div/>").appendTo(this.modal.$sourceSettingsContainer),this.createSettings(this.$settingsContainer)),this.modal.$sourceSettingsContainer.scrollTop(0))},createSettings:(c=o(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(){return c.apply(this,arguments)}),getIndexSourceItem:function(){},deselect:function(){this.$item.removeClass("sel"),this.$itemLabel.attr({"aria-current":"false"}),this.modal.selectedSource=null,this.$settingsContainer.addClass("hidden")},updateItemLabel:function(t){t?this.$itemLabel.text(t):this.$itemLabel.html("&nbsp;")},destroy:function(){this.modal.sourceSort.removeItems(this.$item),this.modal.sources.splice($.inArray(this,this.modal.sources),1),this.isSelected()&&(this.deselect(),this.modal.sources.length&&this.modal.sources[0].select(),Garnish.setFocusWithin(this.modal.$sourceSettingsContainer)),this.$item.data("source",null),this.$item.remove(),this.$settingsContainer&&this.$settingsContainer.remove(),this.base()}}),Craft.CustomizeSourcesModal.Source=Craft.CustomizeSourcesModal.BaseSource.extend({$sortAttributeSelect:null,$sortDirectionPicker:null,$sortDirectionInput:null,sortDirectionListbox:null,isNative:function(){return!0},createSettings:(h=o(a().mark((function t(e){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:Craft.ui.createLightswitchField({label:Craft.t("app","Enabled"),name:"sources[".concat(this.sourceData.key,"][enabled]"),on:!this.sourceData.disabled}).appendTo(e),this.createSortField(e),this.createTableAttributesField(e);case 3:case"end":return t.stop()}}),t,this)}))),function(t){return h.apply(this,arguments)}),createSortField:function(t){var e=this,n=$('<div class="flex"/>'),i=this.sourceData.sortOptions.sort((function(t,e){return t.label===e.label?0:t.label<e.label?-1:1})).reduce((function(t,e){return t["structure"===e.attr?0:e.attr.startsWith("field:")?2:1].push(e),t}),[[],[],[]]);i[2].length&&i[2].unshift({optgroup:Craft.t("app","Fields")});var r=Craft.ui.createSelect({name:"sources[".concat(this.sourceData.key,"][defaultSort][0]"),options:i.flat().map((function(t){return t.optgroup?t:{label:Craft.escapeHtml(t.label),value:t.attr}})),value:this.sourceData.defaultSort[0]}).addClass("fullwidth").appendTo($("<div/>").appendTo(n));this.$sortAttributeSelect=r.children("select").attr("aria-label",Craft.t("app","Sort attribute")),this.$sortDirectionPicker=$("<section/>",{class:"btngroup btngroup--exclusive","aria-label":Craft.t("app","Sort direction")}).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort ascending"),"aria-label":Craft.t("app","Sort ascending"),"aria-pressed":"false","data-icon":"asc","data-dir":"asc"})).append($("<button/>",{type:"button",class:"btn",title:Craft.t("app","Sort descending"),"aria-label":Craft.t("app","Sort descending"),"aria-pressed":"false","data-icon":"desc","data-dir":"desc"})).appendTo(n),this.$sortDirectionInput=$("<input/>",{type:"hidden",name:"sources[".concat(this.sourceData.key,"][defaultSort][1]")}).appendTo(n),this.sortDirectionListbox=new Craft.Listbox(this.$sortDirectionPicker,{onChange:function(t){e.$sortDirectionInput.val(t.data("dir"))}}),this.$sortAttributeSelect.on("change",(function(){e.handleSortAttributeChange()})),this.handleSortAttributeChange(!0),Craft.ui.createField(n,{label:Craft.t("app","Default Sort"),fieldset:!0}).appendTo(t).addClass("sort-field")},handleSortAttributeChange:function(t){var e=this.$sortAttributeSelect.val();if("structure"===e)this.sortDirectionListbox.select(0),this.sortDirectionListbox.disable(),this.$sortDirectionPicker.addClass("disabled");else{this.sortDirectionListbox.enable(),this.$sortDirectionPicker.removeClass("disabled");var n=t?this.sourceData.defaultSort[1]:this.sourceData.sortOptions.find((function(t){return t.attr===e})).defaultDir;this.sortDirectionListbox.select("asc"===n?0:1)}},createTableAttributesField:function(t){var e=this.availableTableAttributes().sort((function(t,e){return t[1]===e[1]?0:t[1]<e[1]?-1:1}));if(this.sourceData.tableAttributes.length||e.length){var i="sources[".concat(this.sourceData.key,"][tableAttributes][]");$("<input/>",{type:"hidden",name:i,value:""}).appendTo(t),Craft.ui.createCheckboxSelectField({label:Craft.t("app","Default Table Columns"),instructions:Craft.t("app","Choose which table columns should be visible for this source by default."),name:i,options:e.map((function(t){var e=n(t,2),i=e[0];return{label:e[1],value:i}})),values:this.sourceData.tableAttributes.map((function(t){return n(t,1)[0]})),sortable:!0}).appendTo(t)}},availableTableAttributes:function(){var t=this.modal.availableTableAttributes.slice(0);return t.push.apply(t,e(this.sourceData.availableTableAttributes)),t},getIndexSourceItem:function(){var t=this.modal.elementIndex.getSourceByKey(this.sourceData.key);if(t)return t.closest("li")}}),Craft.CustomizeSourcesModal.CustomSource=Craft.CustomizeSourcesModal.Source.extend({$labelInput:null,createSettings:(u=o(a().mark((function t(e){var n,i,r,s,o,l=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=Craft.ui.createTextField({label:Craft.t("app","Label"),name:"sources[".concat(this.sourceData.key,"][label]"),value:this.sourceData.label}).appendTo(e),this.$labelInput=n.find(".text"),i="condition".concat(Math.floor(1e6*Math.random())),r=function(t){return t.replace(/__ID__/g,i).replace(/__SOURCE_KEY__(?=-)/g,Craft.formatInputId(l.sourceData.key)).replace(/__SOURCE_KEY__/g,l.sourceData.key)},s=this.sourceData.conditionBuilderHtml||r(this.modal.conditionBuilderHtml),o=this.sourceData.conditionBuilderJs||r(this.modal.conditionBuilderJs),Craft.ui.createField($("<div/>").append(s),{id:"criteria",label:Craft.t("app","{type} Criteria",{type:this.modal.elementTypeName})}).appendTo(e),!o){t.next=10;break}return t.next=10,Craft.appendBodyHtml(o);case 10:this.createSortField(e),this.createTableAttributesField(e),Craft.sites.length>1&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","Sites"),instructions:Craft.t("app","Choose which sites this source should be visible for."),name:"sources[".concat(this.sourceData.key,"][sites]"),options:Craft.sites.map((function(t){return{label:t.name,value:t.uid}})),values:this.sourceData.sites||"*",showAllOption:!0}).appendTo(e),this.modal.userGroups.length&&Craft.ui.createCheckboxSelectField({label:Craft.t("app","User Groups"),instructions:Craft.t("app","Choose which user groups should have access to this source."),name:"sources[".concat(this.sourceData.key,"][userGroups]"),options:this.modal.userGroups,values:this.sourceData.userGroups||"*",showAllOption:!0}).appendTo(e),e.append("<hr/>"),this.$deleteBtn=$('<a class="error delete pointer"/>').attr({role:"button",tabindex:"0"}).text(Craft.t("app","Delete custom source")).appendTo(e),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy");case 18:case"end":return t.stop()}}),t,this)}))),function(t){return u.apply(this,arguments)}),availableTableAttributes:function(){var t=this.base();return this.isNew&&t.push.apply(t,e(this.modal.customFieldAttributes)),t},handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},getIndexSourceItem:function(){var t,e=this.base();if(e?t=e.find(".label"):(t=$("<span/>",{class:"label"}),e=$("<li/>").append($("<a/>",{"data-key":this.sourceData.key}).append(t))),this.$labelInput){var n=this.$labelInput.val().trim();""===n&&(n=Craft.t("app","(blank)")),t.text(n)}return e}}),Craft.CustomizeSourcesModal.Heading=Craft.CustomizeSourcesModal.BaseSource.extend({$labelInput:null,$deleteBtn:null,isHeading:function(){return!0},createSettings:(d=o(a().mark((function t(e){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=Craft.ui.createTextField({label:Craft.t("app","Heading"),instructions:Craft.t("app","This can be left blank if you just want an unlabeled separator."),value:this.sourceData.heading||""}).appendTo(e),this.$labelInput=n.find(".text"),e.append("<hr/>"),this.$deleteBtn=$('<a class="error delete"/>').text(Craft.t("app","Delete heading")).attr({role:"button",tabindex:"0"}).appendTo(e),this.addListener(this.$labelInput,"input","handleLabelInputChange"),this.addListener(this.$deleteBtn,"activate","destroy");case 6:case"end":return t.stop()}}),t,this)}))),function(t){return d.apply(this,arguments)}),handleLabelInputChange:function(){this.updateItemLabel(this.$labelInput.val())},updateItemLabel:function(t){this.$itemLabel.html((t?Craft.escapeHtml(t):"<em>".concat(Craft.t("app","(blank)"),"</em>"))+"&nbsp;"),this.$itemInput.val(t)},getIndexSourceItem:function(){var t=(this.$labelInput?this.$labelInput.val():null)||this.sourceData.heading||"";return $('<li class="heading"/>').append($("<span/>").text(t)).append("<ul/>")}})},1519:function(){Craft.DataTableSorter=Garnish.DragSort.extend({$table:null,init:function(t,e){this.$table=$(t);var n=this.$table.children("tbody").children(":not(.filler)");(e=$.extend({},Craft.DataTableSorter.defaults,e)).container=this.$table.children("tbody"),e.helper=this.getHelper.bind(this),e.caboose="<tr/>",e.axis=Garnish.Y_AXIS,e.magnetStrength=4,e.helperLagBase=1.5,this.base(n,e)},getHelper:function(t){var e=$('<div class="'+this.settings.helperClass+'"/>').appendTo(Garnish.$bod),n=$("<table/>").appendTo(e),i=$("<tbody/>").appendTo(n);t.appendTo(i),n.width(this.$table.width()),n.prop("className",this.$table.prop("className"));for(var r=this.$table.find("tr:first").children(),a=t.children(),s=0;s<a.length;s++)$(a[s]).width($(r[s]).width());return e}},{defaults:{handle:".move",helperClass:"datatablesorthelper"}})},501:function(){Craft.DeleteUserModal=Garnish.Modal.extend({id:null,userId:null,$deleteActionRadios:null,$deleteSubmitBtn:null,userSelect:null,_deleting:!1,init:function(t,e){var n=this;this.id=Math.floor(1e9*Math.random()),this.userId=t,e=$.extend(Craft.DeleteUserModal.defaults,e);var i,r=$('<form class="modal fitted deleteusermodal" method="post" accept-charset="UTF-8">'+Craft.getCsrfInput()+'<input type="hidden" name="action" value="users/delete-user"/>'+(Array.isArray(this.userId)?"":'<input type="hidden" name="userId" value="'+this.userId+'"/>')+(e.redirect?'<input type="hidden" name="redirect" value="'+e.redirect+'"/>':"")+"</form>").appendTo(Garnish.$bod),a=$('<div class="body"><div class="content-summary"><p>'+Craft.t("app","What do you want to do with their content?")+'</p><ul class="bullets"></ul></div><div class="options"><label><input type="radio" name="contentAction" value="transfer"/> '+Craft.t("app","Transfer it to:")+'</label><div id="transferselect'+this.id+'" class="elementselect"><ul class="elements"></ul><button type="button" class="btn add icon dashed">'+Craft.t("app","Choose a user")+'</button></div></div><div><label class="error"><input type="radio" name="contentAction" value="delete"/> '+Craft.t("app","Delete their content")+"</label></div></div>").appendTo(r),s=$('<div class="buttons right"/>').appendTo(a),o=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(s),l=a.find(".content-summary");if(e.contentSummary.length)for(var c=0;c<e.contentSummary.length;c++)l.find("ul").append($("<li/>",{text:e.contentSummary[c]}));else l.find("ul").remove();if(this.$deleteActionRadios=a.find("input[type=radio]"),this.$deleteSubmitBtn=Craft.ui.createSubmitButton({class:"disabled",label:this._submitBtnLabel(!1),spinner:!0}).appendTo(s),Array.isArray(this.userId)){i=["and"];for(var h=0;h<this.userId.length;h++)i.push("not "+this.userId[h])}else i="not "+this.userId;this.userSelect=new Craft.BaseElementSelectInput({id:"transferselect"+this.id,name:"transferContentTo",elementType:"craft\\elements\\User",criteria:{id:i},limit:1,modalSettings:{closeOtherModals:!1},onSelectElements:function(){n.updateSizeAndPosition(),n.$deleteActionRadios.first().prop("checked")?n.validateDeleteInputs():n.$deleteActionRadios.first().trigger("click")},onRemoveElements:this.validateDeleteInputs.bind(this),selectable:!1,editable:!1}),this.addListener(o,"click","hide"),this.addListener(this.$deleteActionRadios,"change","validateDeleteInputs"),this.addListener(r,"submit","handleSubmit"),this.base(r,e)},_submitBtnLabel:function(t){var e=t?"Delete {num, plural, =1{user} other{users}} and content":"Delete {num, plural, =1{user} other{users}}";return Craft.t("app",e,{num:Array.isArray(this.userId)?this.userId.length:1})},validateDeleteInputs:function(){var t=!1;return this.$deleteActionRadios.eq(1).prop("checked")?(t=!0,this.$deleteSubmitBtn.find(".label").text(this._submitBtnLabel(!0))):(this.$deleteSubmitBtn.find(".label").text(this._submitBtnLabel(!1)),this.$deleteActionRadios.eq(0).prop("checked")&&(t=!!this.userSelect.totalSelected)),this.updateSizeAndPosition(),t?this.$deleteSubmitBtn.removeClass("disabled"):this.$deleteSubmitBtn.addClass("disabled"),t},handleSubmit:function(t){if(!this._deleting&&this.validateDeleteInputs()){this.$deleteSubmitBtn.addClass("loading"),this.disable(),this.userSelect.disable(),this._deleting=!0;try{!1===this.settings.onSubmit()&&t.preventDefault()}catch(e){throw t.preventDefault(),this.$deleteSubmitBtn.removeClass("loading"),e}}else t.preventDefault()},onFadeIn:function(){Garnish.isMobileBrowser(!0)||this.$deleteActionRadios.first().trigger("focus"),this.base()}},{defaults:{contentSummary:[],onSubmit:$.noop,redirect:null}})},2318:function(){Craft.DynamicGenerator=Craft.BaseInputGenerator.extend({callback:$.noop,init:function(t,e,n){this.callback=n,this.base(t,e)},generateTargetValue:function(t){return this.callback(t)}})},4755:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}Craft.EditableTable=Garnish.Base.extend({initialized:!1,id:null,baseName:null,columns:null,sorter:null,biggestId:-1,$table:null,$tbody:null,$addRowBtn:null,$tableParent:null,$statusMessage:null,rowCount:0,hasMaxRows:!1,hasMinRows:!1,radioCheckboxes:null,init:function(t,e,n,i){var r=this;this.id=t,this.baseName=e,this.columns=n,this.setSettings(i,Craft.EditableTable.defaults),this.radioCheckboxes={},this.$table=$("#"+t),this.$tbody=this.$table.children("tbody"),this.$tableParent=this.$table.parent(),this.$statusMessage=this.$tableParent.find("[data-status-message]");var a=this.$tbody.children();this.rowCount=a.length,this.$table.data("editable-table")&&(console.warn("Double-instantiating an editable table on an element"),this.$table.data("editable-table").destroy()),this.$table.data("editable-table",this),this.sorter=new Craft.DataTableSorter(this.$table,{helperClass:"editabletablesorthelper",copyDraggeeInputValuesToHelper:!0,onSortChange:function(){r.updateAllRows()}});for(var s=0;s<a.length;s++){var o=a.eq(s),l=parseInt(o.attr("data-id").substring(this.settings.rowIdPrefix.length));l>this.biggestId&&(this.biggestId=l)}if(this.isVisible()?this.initialize():window.setTimeout(this.initializeIfVisible.bind(this),500),this.settings.minRows&&this.rowCount<this.settings.minRows)for(var c=this.rowCount;c<this.settings.minRows;c++)this.addRow()},isVisible:function(){return this.$table.parent().height()>0},initialize:function(){var t=this;if(this.initialized)return!1;this.initialized=!0,this.removeListener(Garnish.$win,"resize");var e=this.$table.parent(".input");if(e.length&&this.$table.width()>e.width()&&e.css("overflow-x","auto"),this.$addRowBtn=this.$table.next(".add"),this.updateAddRowButton(),this.addListener(this.$addRowBtn,"activate","addRow"),this.settings.lazyInitRows)this.addListener(this.$tbody,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(e){var n=$(e.target),i=n.closest("tr");if(i.length&&!i.data("editable-table-row")){var r=n.hasClass("editable-table-preview")?n.next():null;t.createRowObj(i),setTimeout((function(){r&&!r.is(":focus")&&r.trigger("focus")}),100)}}));else for(var n=this.$tbody.children(),i=0;i<n.length;i++)this.createRowObj(n.eq(i));return!0},initializeIfVisible:function(){this.removeListener(Garnish.$win,"resize"),this.isVisible()?this.initialize():this.addListener(Garnish.$win,"resize","initializeIfVisible")},updateAddRowButton:function(){this.canAddRow()?(this.$addRowBtn.css("opacity","1"),this.$addRowBtn.css("pointer-events","auto"),this.$addRowBtn.attr("aria-disabled","false")):(this.$addRowBtn.css("opacity","0.2"),this.$addRowBtn.css("pointer-events","none"),this.$addRowBtn.attr("aria-disabled","true"))},updateAllRows:function(){if(!this.settings.staticRows)for(var t=this.$table.find("> tbody > tr"),e=0;e<t.length;e++)this.updateRow(t.eq(e))},updateRow:function(t){if(!this.settings.staticRows){var e=t.find("button.delete");e.length&&(e.attr("aria-label",Craft.t("app","Delete row {index}",{index:t.index()+1})),this.canDeleteRow()?e.removeAttr("disabled").removeClass("disabled"):e.attr("disabled","disabled").addClass("disabled"))}},updateDeleteRowButton:function(t){this.updateRow(this.$table.find('tr[data-id="'.concat(t,'"]')))},updateStatusMessage:function(){var t,e=this;this.$statusMessage.empty(),t=this.canAddRow()?Craft.t("app","Row could not be deleted. Minimum number of rows reached."):Craft.t("app","Row could not be added. Maximum number of rows reached."),setTimeout((function(){e.$statusMessage.text(t)}),250)},canDeleteRow:function(){return!!this.settings.allowDelete&&this.rowCount>this.settings.minRows},deleteRow:function(t){this.canDeleteRow()?(this.sorter.removeItems(t.$tr),t.$tr.remove(),this.rowCount--,this.updateAllRows(),this.updateAddRowButton(),0===this.rowCount?(this.$table.addClass("hidden"),this.$addRowBtn.trigger("focus")):this.$tbody.find(":focusable").last().trigger("focus"),this.settings.onDeleteRow(t.$tr),t.destroy()):this.updateStatusMessage()},canAddRow:function(){return!!this.settings.allowAdd&&(!this.settings.maxRows||this.rowCount<this.settings.maxRows)},addRow:function(t,e){if(this.canAddRow()){var n=this.settings.rowIdPrefix+(this.biggestId+1),i=this.createRow(n,this.columns,this.baseName,$.extend({},this.settings.defaultValues));e?i.prependTo(this.$tbody):i.appendTo(this.$tbody);var r=this.createRowObj(i);return this.sorter.addItems(i),!1!==t&&i.find("input:visible,textarea:visible,select:visible").first().trigger("focus"),this.rowCount++,this.updateAllRows(),this.updateAddRowButton(),this.$table.removeClass("hidden"),this.settings.onAddRow(i),r}this.updateStatusMessage()},createRow:function(t,e,n,i){return Craft.EditableTable.createRow(t,e,n,i,this.settings.allowReorder,this.settings.allowDelete)},getRowObj:function(t){return t.data("editable-table-row")||this.createRowObj(t)},createRowObj:function(t){return new Craft.EditableTable.Row(this,t)},focusOnPrevRow:function(t,e,n){var i,r=t.prev("tr");if((i=r.length?this.getRowObj(r):this.addRow(!1,!0))&&i.$tds[e])if($(i.$tds[e]).hasClass("disabled"))r&&this.focusOnPrevRow(r,e,n);else{var a=$("textarea,input.text",i.$tds[e]);a.length&&($(n).trigger("blur"),a.trigger("focus"))}},focusOnNextRow:function(t,e,n){var i,r=t.next("tr");if((i=r.length?this.getRowObj(r):this.addRow(!1))&&i.$tds[e])if($(i.$tds[e]).hasClass("disabled"))r&&this.focusOnNextRow(r,e,n);else{var a=$("textarea,input.text",i.$tds[e]);a.length&&($(n).trigger("blur"),a.trigger("focus"))}},importData:function(t,e,n){for(var i=t.split(/\r?\n|\r/),r=0;r<i.length;r++){for(var a=i[r].split("\t"),s=0;s<a.length;s++){var o=a[s];e.$tds.eq(n+s).find("textarea,input[type!=hidden]").val(o).trigger("input")}var l=e.$tr.next("tr");e=l.length?this.getRowObj(l):this.addRow(!1)}},destroy:function(){this.$table.removeData("editable-table"),this.base()}},{textualColTypes:["autosuggest","color","date","email","multiline","number","singleline","template","time","url"],defaults:{rowIdPrefix:"",defaultValues:{},allowAdd:!1,allowReorder:!1,allowDelete:!1,minRows:null,maxRows:null,lazyInitRows:!0,onAddRow:$.noop,onDeleteRow:$.noop},createRow:function(e,n,i,r,a,s){var o=$("<tr/>",{"data-id":e});for(var l in n)if(n.hasOwnProperty(l)){var c,h=n[l],u=void 0!==r[l]?r[l]:"";if("heading"===h.type)c=$("<th/>",{scope:"row",class:h.class,html:u});else{var d=i+"["+e+"]["+l+"]";switch(c=$("<td/>",{class:"".concat(h.class," ").concat(h.type,"-cell"),width:h.width}),Craft.inArray(h.type,Craft.EditableTable.textualColTypes)&&c.addClass("textual"),h.code&&c.addClass("code"),h.type){case"checkbox":$('<div class="checkbox-wrapper"/>').append(Craft.ui.createCheckbox({name:d,value:h.value||"1",checked:!!u})).appendTo(c);break;case"color":Craft.ui.createColorInput({name:d,value:"object"!==t(u)?u:null,small:!0}).appendTo(c);break;case"date":Craft.ui.createDateInput({name:d,value:u}).appendTo(c);break;case"lightswitch":Craft.ui.createLightswitch({name:d,value:h.value||"1",on:!!u,small:!0}).appendTo(c);break;case"select":Craft.ui.createSelect({name:d,options:h.options,value:u||function(){for(var t in h.options)if(h.options.hasOwnProperty(t)&&h.options[t].default)return void 0!==h.options[t].value?h.options[t].value:t;return null}(),class:"small"}).appendTo(c);break;case"time":Craft.ui.createTimeInput({name:d,value:u}).appendTo(c);break;case"email":case"url":Craft.ui.createTextInput({name:d,value:"object"!==t(u)?u:null,type:h.type,placeholder:h.placeholder||null}).appendTo(c);break;default:$("<textarea/>",{name:d,rows:h.rows||1,val:"object"!==t(u)?u:null,placeholder:h.placeholder}).appendTo(c)}}c.appendTo(o)}return a&&$("<td/>",{class:"thin action"}).append($("<a/>",{class:"move icon",title:Craft.t("app","Reorder"),role:"button",type:"button"})).appendTo(o),s&&$("<td/>",{class:"thin action"}).append($("<button/>",{class:"delete icon",title:Craft.t("app","Delete"),type:"button"})).appendTo(o),o}}),Craft.EditableTable.Row=Garnish.Base.extend({table:null,id:null,niceTexts:null,$tr:null,$tds:null,tds:null,$textareas:null,$deleteBtn:null,init:function(t,e){this.table=t,this.$tr=$(e),this.$tds=this.$tr.children(),this.tds=[],this.id=this.$tr.attr("data-id"),this.$tr.data("editable-table-row",this);var n=parseInt(this.id.substring(this.table.settings.rowIdPrefix.length));n>this.table.biggestId&&(this.table.biggestId=n),this.$textareas=$(),this.niceTexts=[];var i,r,a,s,o={},l=0;for(i in this.table.columns)if(this.table.columns.hasOwnProperty(i)){if(r=this.table.columns[i],a=this.tds[i]=this.$tds[l],Craft.inArray(r.type,Craft.EditableTable.textualColTypes)){$(".editable-table-preview",a).remove();var c=$("textarea",a);this.$textareas=this.$textareas.add(c),this.addListener(c,"focus","onTextareaFocus"),this.addListener(c,"mousedown","ignoreNextTextareaFocus"),this.niceTexts.push(new Garnish.NiceText(c,{onHeightChange:this.onTextareaHeightChange.bind(this)})),this.addListener(c,"keypress",{tdIndex:l,type:r.type},"handleKeypress"),this.addListener(c,"input",{type:r.type},"validateValue"),c.trigger("input"),"multiline"!==r.type&&this.addListener(c,"paste",{tdIndex:l,type:r.type},"handlePaste"),o[i]=c}else"checkbox"===r.type&&(s=$('input[type="checkbox"]',a),r.radioMode&&(void 0===this.table.radioCheckboxes[i]&&(this.table.radioCheckboxes[i]=[]),this.table.radioCheckboxes[i].push(s[0]),this.addListener(s,"change",{colId:i},"onRadioCheckboxChange")),r.toggle&&this.addListener(s,"change",{colId:i},(function(t){this.applyToggleCheckbox(t.data.colId)})));$(a).hasClass("disabled")||this.addListener(a,"click",{td:a},(function(t){t.target===t.data.td&&$(t.data.td).find("textarea,input,select,.lightswitch").focus()})),l++}for(i in this.onTextareaHeightChange(),this.table.columns)this.table.columns.hasOwnProperty(i)&&"checkbox"===(r=this.table.columns[i]).type&&r.toggle&&this.applyToggleCheckbox(i);for(i in this.table.columns)this.table.columns.hasOwnProperty(i)&&(!(r=this.table.columns[i]).autopopulate||void 0===o[r.autopopulate]||o[i].val()||o[r.autopopulate].val()||new Craft.HandleGenerator(o[i],o[r.autopopulate],{allowNonAlphaStart:!0}));var h=this.$tr.children().last().find(".delete");this.addListener(h,"click","deleteRow");var u=this.$tr.find("input,textarea,select,.lightswitch");this.addListener(u,"focus",(function(t){$(t.currentTarget).closest("td:not(.disabled)").addClass("focus")})),this.addListener(u,"blur",(function(t){$(t.currentTarget).closest("td").removeClass("focus")}))},onTextareaFocus:function(t){this.onTextareaHeightChange();var e=$(t.currentTarget);e.data("ignoreNextFocus")?e.data("ignoreNextFocus",!1):window.setTimeout((function(){Craft.selectFullValue(e)}),0)},onRadioCheckboxChange:function(t){if(t.currentTarget.checked)for(var e=0;e<this.table.radioCheckboxes[t.data.colId].length;e++){var n=this.table.radioCheckboxes[t.data.colId][e];n.checked=n===t.currentTarget}},applyToggleCheckbox:function(t){for(var e,n,i=this.table.columns[t],r=$('input[type="checkbox"]',this.tds[t]).prop("checked"),a=0;a<i.toggle.length;a++)e=i.toggle[a],this.table.colum,(n="!"===e[0])&&(e=e.substring(1)),r&&!n||!r&&n?$(this.tds[e]).removeClass("disabled").find("textarea, input").prop("disabled",!1):$(this.tds[e]).addClass("disabled").find("textarea, input").prop("disabled",!0)},ignoreNextTextareaFocus:function(t){$.data(t.currentTarget,"ignoreNextFocus",!0)},handleKeypress:function(t){var e=t.keyCode?t.keyCode:t.charCode,n=Garnish.isCtrlKeyPressed(t);if(e===Garnish.RETURN_KEY&&("multiline"!==t.data.type||n))return t.preventDefault(),void(t.shiftKey?this.table.focusOnPrevRow(this.$tr,t.data.tdIndex,t.currentTarget):this.table.focusOnNextRow(this.$tr,t.data.tdIndex,t.currentTarget))},handlePaste:function(t){var e=Craft.trim(t.originalEvent.clipboardData.getData("Text")," \n\r");e.match(/[\t\r\n]/)&&(t.preventDefault(),this.table.importData(e,this,t.data.tdIndex))},validateValue:function(t){if("multiline"!==t.data.type)if("number"!==t.data.type){var e=t.currentTarget.value.replace(/[\r\n]/g,"");e!==t.currentTarget.value&&(t.currentTarget.value=e)}else Craft.filterNumberInputVal(t.currentTarget)},onTextareaHeightChange:function(){for(var t=-1,e=0;e<this.niceTexts.length;e++)this.niceTexts[e].height>t&&(t=this.niceTexts[e].height);this.$textareas.css("min-height",t);var n=this.$textareas.filter(":visible").first().parent().height();n>t&&this.$textareas.css("min-height",n)},deleteRow:function(){this.table.deleteRow(this)}},{numericKeyCodes:[9,8,37,38,39,40,45,91,46,190,48,49,50,51,52,53,54,55,56,57]})},8468:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}var r,a;Craft.ElementActionTrigger=Garnish.Base.extend({elementIndex:null,maxLevels:null,newChildUrl:null,$trigger:null,$selectedItems:null,triggerEnabled:!0,init:function(t){if(this.elementIndex=Craft.currentElementIndex,this.elementIndex.triggers.push(this),$.isPlainObject(t)||(t={}),void 0!==t.batch&&(t.bulk=t.batch,delete t.batch),Object.defineProperty(t,"batch",{get:function(){return this.bulk},set:function(t){this.bulk=t}}),this.setSettings(t,Craft.ElementActionTrigger.defaults),this.$trigger=$("#".concat(this.elementIndex.namespaceId(t.type),"-actiontrigger")).data("trigger",this),this.settings.activate){this.$trigger.data("custom-handler",!0);var e=this.$trigger.find("button,.btn");e.length||(e=this.$trigger),this.addListener(e,"activate","handleTriggerActivation")}this.updateTrigger(),this.elementIndex.on("selectionChange",this.updateTrigger.bind(this))},updateTrigger:function(){0!==this.elementIndex.getSelectedElements().length&&(this.validateSelection()?this.enableTrigger():this.disableTrigger())},validateSelection:function(){var t=this;return this.$selectedItems=this.elementIndex.getSelectedElements(),!(!this.settings.bulk&&this.$selectedItems.length>1)&&(!this.settings.requireId||!this.$selectedItems.is('[data-id=""]'))&&("function"!=typeof this.settings.validateSelection||this._call((function(){return t.settings.validateSelection(t.$selectedItems,t.elementIndex)})))},enableTrigger:function(){this.triggerEnabled||(this.$trigger.removeClass("disabled").removeAttr("aria-disabled"),this.triggerEnabled=!0)},disableTrigger:function(){this.triggerEnabled&&(this.$trigger.addClass("disabled").attr("aria-disabled","true"),this.triggerEnabled=!1)},handleTriggerActivation:function(){var t=this;this.triggerEnabled&&this._call((function(){return t.settings.activate(t.$selectedItems,t.elementIndex)}))},_call:function(t){var e=Craft.elementIndex;Craft.elementIndex=this.elementIndex;var n=t();return Craft.elementIndex=e,n}},{defaults:{type:null,bulk:!0,requireId:!0,validateSelection:null,beforeActivate:(a=i(e().mark((function t(n,i){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t,e){return a.apply(this,arguments)}),activate:null,afterActivate:(r=i(e().mark((function t(n,i){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:case"end":return t.stop()}}),t)}))),function(t,e){return r.apply(this,arguments)})}})},5049:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function n(t){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?e(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):e(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function i(e,n,i){var r;return r=function(e,n){if("object"!=t(e)||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,"string");if("object"!=t(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(n),(n="symbol"==t(r)?r:String(r))in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i,e}function r(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=c(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function a(){"use strict";a=function(){return n};var e,n={},i=Object.prototype,r=i.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==i&&r.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(a,s,o,l){var c=f(e[a],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&r.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var a;s(this,"_invoke",{value:function(t,e){function r(){return new n((function(n,r){i(t,e,n,r)}))}return a=a?a.then(r,r):r()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var a=-1,s=function t(){for(;++a<n.length;)if(r.call(n,a))return t.value=n[a],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=r.call(s,"catchLoc"),c=r.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var a=i;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function s(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function o(t){s(a,i,r,o,l,"next",t)}function l(t){s(a,i,r,o,l,"throw",t)}o(void 0)}))}}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||c(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){if(t){if("string"==typeof t)return h(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var u;Craft.ElementEditor=Garnish.Base.extend({isFullPage:null,$container:null,$activityContainer:null,$tabContainer:null,$contentContainer:null,$sidebar:null,$spinner:null,$expandSiteStatusesBtn:null,$statusIcon:null,$previewBtn:null,metaModal:null,$nameTextInput:null,$saveMetaBtn:null,$siteStatusPane:null,$globalLightswitch:null,$siteLightswitches:null,$additionalSiteField:null,siteIds:null,newSiteIds:null,enableAutosave:null,lastSerializedValue:null,formObserver:null,cancelToken:null,ignoreFailedRequest:!1,queue:null,submittingForm:!1,draftElementIds:null,failed:!1,httpStatus:null,httpError:null,openingPreview:!1,preview:null,activatedPreviewToken:!1,previewTokenQueue:null,previewLinks:null,scrollY:null,hiddenTipsStorageKey:"Craft-"+Craft.systemUid+".TipField.hiddenTips",activityTooltips:null,get tipDismissBtn(){return this.$container.find(".tip-dismiss-btn")},get slideout(){return this.$container.data("slideout")},init:function(t,e){var n,i=this;if(this.$container=$(t),this.$container.data("elementEditor")&&(console.warn("Double-instantiating an element editor on an element."),this.$container.data("elementEditor").destroy()),this.$container.data("elementEditor",this),this.$container.attr("data-element-editor",""),this.setSettings(e,Craft.ElementEditor.defaults),this.isFullPage=[Craft.cp.$primaryForm[0],Craft.cp.$main[0]].includes(this.$container[0]),this.isFullPage?(this.$tabContainer=$("#tabs"),this.$contentContainer=$("#content"),this.$sidebar=$("#details .details")):(this.$tabContainer=this.slideout.$tabContainer,this.$contentContainer=this.slideout.$content,this.$sidebar=this.slideout.$sidebar),this.queue=this._createQueue(),this.previewTokenQueue=this._createQueue(),this.draftElementIds={},this.enableAutosave=Craft.autosaveDrafts,this.previewLinks=[],null!==(n=this.settings.previewTargets)&&void 0!==n&&n.length){var r,a=this.isFullPage?$("#action-btn"):this.slideout.$actionBtn,s=this.namespaceId("action-view"),o=null==a||null===(r=a.data("disclosureMenu"))||void 0===r?void 0:r.$container.find('a[id^="'.concat(s,'-"]'));if(null!=o&&o.length){var c=o.attr("href");o.data("targetUrl",c).attr("href",this.getTokenizedPreviewUrl(c,null,!1)),this.previewLinks.push(o)}}this.siteIds=Object.keys(this.settings.siteStatuses).map((function(t){return parseInt(t)})),this.$previewBtn=this.$container.find(".preview-btn");var h=this.isFullPage?$("#page-title"):this.slideout.$toolbar;if(this.$spinner=$("<div/>",{class:"revision-spinner spinner hidden",title:Craft.t("app","Saving")}).appendTo(h),this.$statusIcon=$("<div/>",{class:"revision-status ".concat(this.isFullPage?"invisible":"hidden")}).appendTo(h),this.$statusMessage=$("<div/>",{class:"revision-status-message visually-hidden","aria-live":"polite"}).appendTo(h),this.$expandSiteStatusesBtn=$(".expand-status-btn"),this.settings.canEditMultipleSites&&this.addListener(this.$expandSiteStatusesBtn,"click","expandSiteStatuses"),this.settings.previewTargets.length&&this.isFullPage){this.settings.enablePreview&&this.addListener(this.$previewBtn,"click","openPreview");var u=this.$container.find(".preview-btn-container");if(1===this.settings.previewTargets.length){var d=l(this.settings.previewTargets,1)[0];this.createPreviewLink(d).addClass("view-btn btn").attr("aria-label",Craft.t("app","View")).appendTo(u)}else this.createShareMenu(u)}if(this.settings.canSave){if("FORM"!==this.$container.prop("tagName"))throw"Element editors may only be used with forms.";this.isFullPage&&Craft.edition===Craft.Pro&&(this.$activityContainer=this.$container.find(".activity-container"),this._checkActivity()),this.$container.data("serializer",(function(){return i.serializeForm(!0)})),this.$container.data("initialSerializedValue",this.serializeForm(!0)),Garnish.requestAnimationFrame((function(){i.$container.data("initialSerializedValue",i.serializeForm(!0))})),this.isFullPage&&this.addListener(this.$container,"submit","handleSubmit"),this.settings.isProvisionalDraft?this.initForProvisionalDraft():this.settings.draftId&&!this.settings.isUnpublishedDraft?this.initForDraft():this.settings.canSaveCanonical||this.addListener(this.$container,"submit.saveShortcut",(function(t){t.saveShortcut&&(t.preventDefault(),i.saveDraft(),i.removeListener(i.$container,"submit.saveShortcut"))})),this.listenForChanges(),this.addListener(this.$statusIcon,"click",(function(){i.showStatusHud(i.$statusIcon)})),this.handleDismissibleTips(),this.isFullPage&&Craft.messageReceiver&&Craft.broadcaster.addEventListener("message",(function(t){if("saveDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&(t.data.draftId===i.settings.draftId||t.data.isProvisionalDraft&&!i.settings.draftId)||"saveElement"===t.data.event&&t.data.id===i.settings.canonicalId&&!i.settings.draftId)Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload();else if("deleteDraft"===t.data.event&&t.data.canonicalId===i.settings.canonicalId&&t.data.draftId===i.settings.draftId){var e=new URL(window.location.href);e.searchParams.delete("draftId"),e.href!==document.location.href?window.location.href=e:(Craft.setLocalStorage("scrollY",window.scrollY),window.location.reload())}})),this.activityTooltips={},this.isFullPage&&Craft.ui.setFocusOnErrorSummary(this.$container)}},_createQueue:function(){var t=this,e=new Craft.Queue;return e.on("beforeRun",(function(){t.showSpinner()})),e.on("afterRun",(function(){t.hideSpinner()})),e},get namespace(){return this.isFullPage?null:this.slideout.namespace},namespaceInputName:function(t){return Craft.namespaceInputName(t,this.namespace)},namespaceId:function(t){return Craft.namespaceId(t,this.namespace)},get listeningForChanges(){return!!this.formObserver},get pauseLevel(){var t,e;return null!==(t=null===(e=this.formObserver)||void 0===e?void 0:e._pauseLevel)&&void 0!==t?t:0},listenForChanges:function(){var t=this;this.formObserver||(this.formObserver=new Craft.FormObserver(this.$container,(function(){t.checkForm()})))},stopListeningForChanges:function(){if(this.formObserver)return this.formObserver.destroy(),void(this.formObserver=null)},pause:function(){var t;null===(t=this.formObserver)||void 0===t||t.pause()},resume:function(){var t;null===(t=this.formObserver)||void 0===t||t.resume()},initForProvisionalDraft:function(){var t=this,e=this.$container.find(".discard-changes-btn");if(!e.length){var n,i,r;this.isFullPage?(n=$("#content").height(),i=Garnish.$win.scrollTop(),r=Craft.cp.$noticeContainer):r=this.$container.find(".so-notice");var a=$("<div/>",{class:"draft-notice"}).append($("<div/>",{class:"draft-icon","aria-hidden":"true","data-icon":"edit"})).append($("<p/>",{text:Craft.t("app","Showing your unsaved changes.")})).appendTo(r);if(e=$("<button/>",{type:"button",class:"discard-changes-btn btn",text:Craft.t("app","Discard")}).appendTo(a),this.isFullPage){var s=$("#content").height()-n;if(Garnish.$win.scrollTop(i+s),Garnish.$win.scrollTop()===i){Craft.cp.$contentContainer.css("pointer-events","none"),$("#content-header").css("min-height","auto");var o=r.height();r.css({height:o-s,overflow:"hidden"}).velocity({height:o},"fast",(function(){$("#content-header").css("min-height",""),r.css({height:"",overflow:""}),setTimeout((function(){Craft.cp.$contentContainer.css("pointer-events","")}),300)}))}}}this.addListener(e,"keypress,keyup,change,focus,blur,click,mousedown,mouseup",(function(t){t.stopPropagation()})),this.addListener(e,"click",(function(){confirm(Craft.t("app","Are you sure you want to discard your changes?"))&&t.queue.unshift((function(){return new Promise((function(e,n){t.isFullPage?Craft.submitForm(t.$container,{action:"elements/delete-draft",redirect:t.settings.hashedCpEditUrl,params:{draftId:t.settings.draftId,provisional:1}}):Craft.sendActionRequest("POST","elements/delete-draft",{data:{elementId:t.settings.canonicalId,draftId:t.settings.draftId,provisional:1}}).then((function(e){Craft.cp.displaySuccess(e.data.message),t.slideout.close()})).catch(n)}))}))})),this.isFullPage||this.slideout.$cancelBtn.text(Craft.t("app","Close"))},initForDraft:function(){var t=this;this.createEditMetaAction(),this.settings.canSaveCanonical&&Garnish.uiLayerManager.registerShortcut({keyCode:Garnish.S_KEY,ctrl:!0,alt:!0},(function(){Craft.submitForm(t.$container,{action:"elements/apply-draft",redirect:t.settings.hashedCpEditUrl})}),0)},expandSiteStatuses:function(){var t=this;this.removeListener(this.$expandSiteStatusesBtn,"click"),this.$expandSiteStatusesBtn.velocity({opacity:0},"fast",(function(){t.$expandSiteStatusesBtn.remove()}));var e=this.$container.find(".enabled-for-site-".concat(this.settings.siteId,"-field"));if(this.$siteStatusPane=e.parent(),this.settings.revisionId)this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));else{e.addClass("nested");var n=Craft.ui.createLightswitchField({label:Craft.t("app","Enabled for all sites"),name:this.namespaceInputName("enabled")}).insertBefore(e);n.find("label").css("font-weight","bold"),this.$globalLightswitch=n.find(".lightswitch"),this.settings.revisionId||this._showField(n);var i=Object.values(this.settings.siteStatuses),r=i.includes(!0),a=i.includes(!1),s=r&&a?"-":r?"1":"",o=encodeURIComponent(this.namespaceInputName("enabledForSite[".concat(this.settings.siteId,"]")))+"="+(this.settings.enabledForSite?"1":"");this.$siteLightswitches=e.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this)),this._getOtherSupportedSites().forEach((function(e){return t._createSiteStatusField(e)}));for(var l=encodeURIComponent(this.namespaceInputName("enabled"))+"=".concat(s),c=0;c<this.$siteLightswitches.length;c++){var h=this.$siteLightswitches.eq(c).data("lightswitch").$input;l+="&"+encodeURIComponent(h.attr("name"))+"="+h.val()}this.$container.data("initialSerializedValue",this.$container.data("initialSerializedValue").replace(o,l)),this.lastSerializedValue&&(this.lastSerializedValue=this.lastSerializedValue.replace(o,l)),this.settings.additionalSites&&this.settings.additionalSites.length&&this.isFullPage&&this._createAddlSiteField(),this.$globalLightswitch.focus(),this.$globalLightswitch.on("change",this._updateSiteStatuses.bind(this)),this._updateGlobalStatus()}},_getOtherSupportedSites:function(){var t=this;return Craft.sites.filter((function(e){return e.id!=t.settings.siteId&&t.siteIds.includes(e.id)}))},_showField:function(t){var e=t.height();t.css({overflow:"hidden","min-height":"auto"}).height(0).velocity({height:e},"fast",(function(){t.css({overflow:"",height:"","min-height":""})}))},_removeField:function(t){t.css({overflow:"hidden","min-height":"auto"}).velocity({height:0},"fast",(function(){t.remove()}))},_updateGlobalStatus:function(){var t=!0,e=!0;this.$siteLightswitches.each((function(){if($(this).data("lightswitch").on?e=!1:t=!1,!t&&!e)return!1})),t?this.$globalLightswitch.data("lightswitch").turnOn(!0):e?this.$globalLightswitch.data("lightswitch").turnOff(!0):this.$globalLightswitch.data("lightswitch").turnIndeterminate(!0)},_updateSiteStatuses:function(){var t=this.$globalLightswitch.data("lightswitch").on;this.$siteLightswitches.each((function(){t?$(this).data("lightswitch").turnOn(!0):$(this).data("lightswitch").turnOff(!0)}))},_createSiteStatusField:function(t,e){var n=Craft.ui.createLightswitchField({fieldClass:"enabled-for-site-".concat(t.id,"-field"),label:t.name,name:this.namespaceInputName("enabledForSite[".concat(t.id,"]")),on:void 0!==e?e:!this.settings.siteStatuses.hasOwnProperty(t.id)||this.settings.siteStatuses[t.id],disabled:!!this.settings.revisionId});if(this.$additionalSiteField?n.insertBefore(this.$additionalSiteField):n.appendTo(this.$siteStatusPane),!this.settings.revisionId){n.addClass("nested");var i=n.find(".lightswitch").on("change",this._updateGlobalStatus.bind(this));this.$siteLightswitches=this.$siteLightswitches.add(i)}return this._showField(n),n},_createAddlSiteField:function(){var t,e=this,n=Craft.sites.filter((function(t){return!e.siteIds.includes(t.id)&&e.settings.additionalSites.some((function(e){return e.siteId==t.id}))}));if(n.length){var i="add-site-label",r=$("<span/>",{text:Craft.t("app","Add a site..."),class:"visually-hidden",id:i}),a=Craft.ui.createSelect({options:[{label:Craft.t("app","Add a site…")}].concat((t=n.map((function(t){return{label:t.name,value:t.id}})),function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||c(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())),labelledBy:i}).addClass("fullwidth");this.$additionalSiteField=Craft.ui.createField(a,{}).addClass("nested add").appendTo(this.$siteStatusPane),r.prependTo(this.$additionalSiteField);var s=a.find("select");s.on("change",(function(){var t=parseInt(s.val()),n=Craft.sites.find((function(e){return e.id===t}));if(n){var i=e.settings.additionalSites.find((function(t){return t.siteId==n.id}));e._createSiteStatusField(n,i.enabledByDefault),e._updateGlobalStatus(),s.val("").find('option[value="'.concat(t,'"]')).remove(),null===e.newSiteIds&&(e.newSiteIds=[]),e.siteIds.push(t),e.newSiteIds.push(t),1===s.find("option").length&&e._removeField(e.$additionalSiteField)}})),this._showField(this.$additionalSiteField)}},showStatusHud:function(t){var e;this.failed?(e='<p class="error"><strong>'.concat(this._saveFailMessage(),"</strong></p>"),this.httpError&&(e+='<p class="http-error code">'.concat(Craft.escapeHtml(this.httpError),"</p>")),400===this.httpStatus&&(e+='<button class="btn refresh-btn">'.concat(Craft.t("app","Refresh"),"</button>"))):e="<p>".concat(this._saveSuccessMessage(),"</p>");var n=new Garnish.HUD(t,e,{hudClass:"hud revision-status-hud",onHide:function(){n.destroy()}});n.$mainContainer.find(".refresh-btn").on("click",(function(){window.location.reload()}))},_saveSuccessMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes have been stored."):Craft.t("app","The draft has been saved.")},_saveFailMessage:function(){return this.settings.isProvisionalDraft||this.settings.isUnpublishedDraft?Craft.t("app","Your changes could not be stored."):Craft.t("app","The draft could not be saved.")},spinners:function(){return this.preview?this.$spinner.add(this.preview.$spinner):this.$spinner},showSpinner:function(){this.spinners().removeClass("hidden")},hideSpinner:function(){this.spinners().addClass("hidden")},statusIcons:function(){return this.preview?this.$statusIcon.add(this.preview.$statusIcon):this.$statusIcon},statusMessage:function(){return this.preview?this.$statusMessage.add(this.preview.$statusMessage):this.$statusMessage},createEditMetaAction:function(){if(this.isFullPage){var t=$("#action-menu").disclosureMenu().data("disclosureMenu"),e=t.getFirstDestructiveGroup(),n=t.addGroup(null,!0,e),i=t.addItem({type:"button",icon:"edit",label:Craft.t("app","Edit draft settings")},n);this.addListener(i,"click","showMetaModal")}},createPreviewLink:function(t,e){var n=this,i=$("<a/>",{href:this.getTokenizedPreviewUrl(t.url,null,!1),text:e||Craft.t("app","View"),target:"_blank",data:{targetUrl:t.url,targetLabel:t.label}});return this.addListener(i,"click",(function(){setTimeout((function(){n.activatePreviewToken()}),1)})),this.previewLinks.push(i),i},updatePreviewLinks:function(){var t=this;this.previewLinks.forEach((function(e){t.updatePreviewLinkHref(e),t.activatedPreviewToken&&t.removeListener(e,"click")}))},updatePreviewLinkHref:function(t){t.attr("href",this.getTokenizedPreviewUrl(t.data("targetUrl"),null,!1))},activatePreviewToken:function(){this.settings.isLive||(this.activatedPreviewToken=!0,this.updatePreviewLinks())},createShareMenu:function(t){var e=this,n=$("<button/>",{type:"button",class:"view-btn btn menubtn",text:Craft.t("app","View")}).appendTo(t),i=$("<div/>",{class:"menu"}).appendTo(t),r=$("<ul/>").appendTo(i);this.settings.previewTargets.forEach((function(t){$("<li/>").append(e.createPreviewLink(t,t.label)).appendTo(r)})),new Garnish.MenuBtn(n)},getPreviewTokenParams:function(){var t={elementType:this.settings.elementType,canonicalId:this.settings.canonicalId,siteId:this.settings.siteId,revisionId:this.settings.revisionId,previewToken:this.settings.previewToken};return this.settings.draftId&&!this.settings.isProvisionalDraft&&(t.draftId=this.settings.draftId),t},getPreviewToken:function(){var t=this;return this.previewTokenQueue.push((function(){return new Promise((function(e,n){t.activatedPreviewToken?e(t.settings.previewToken):Craft.sendActionRequest("POST","preview/create-token",{data:t.getPreviewTokenParams()}).then((function(){t.activatePreviewToken(),e(t.settings.previewToken)})).catch(n)}))}))},getTokenizedPreviewUrl:function(t,e,n){var i=this;void 0===n&&(n=!0);var r={};if(!e&&this.settings.isLive||(r[e||"x-craft-preview"]=Craft.randomString(10)),this.settings.siteToken&&(r[Craft.siteToken]=this.settings.siteToken),this.settings.isLive){var a=Craft.getUrl(t,r);return n?new Promise((function(t){t(a)})):a}if(!this.settings.previewToken)throw"Missing preview token";r[Craft.tokenParam]=this.settings.previewToken;var s=Craft.getUrl(t,r);if(this.activatedPreviewToken)return n?new Promise((function(t){t(s)})):s;if(n)return new Promise((function(t,e){i.getPreviewToken().then((function(){t(s)})).catch(e)}));var o=this.getPreviewTokenParams();return o.redirect=s,Craft.getActionUrl("preview/create-token",o)},getPreview:function(){var t=this;return this.preview||(this.preview=new Craft.Preview(this),this.enableAutosave||(this.preview.on("open",(function(){t.enableAutosave=!0,t.checkForm()})),this.preview.on("close",(function(){t.enableAutosave=!1;var e=t.statusIcons();e.hasClass("checkmark-icon")&&e.addClass("hidden")}))),this.preview.on("beforeOpen",(function(){var e;null===(e=t.formObserver)||void 0===e||e.pause()})),this.preview.on("close",(function(){var e;null===(e=t.formObserver)||void 0===e||e.resume(),t.scrollY&&(window.scrollTo(0,t.scrollY),t.scrollY=null)}))),this.preview},openPreview:(u=o(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Garnish.hasAttr(this.$previewBtn,"aria-disabled")){t.next=2;break}return t.abrupt("return");case 2:return this.$previewBtn.attr("aria-disabled",!0),this.$previewBtn.addClass("loading"),t.prev=4,t.next=7,this.checkForm();case 7:return this.openingPreview=!0,t.next=10,this.ensureIsDraftOrRevision(!0);case 10:this.scrollY=window.scrollY,this.getPreview().open();case 12:return t.prev=12,this.$previewBtn.removeAttr("aria-disabled"),this.$previewBtn.removeClass("loading"),this.openingPreview=!1,t.finish(12);case 17:case"end":return t.stop()}}),t,this,[[4,,12,17]])}))),function(){return u.apply(this,arguments)}),ensureIsDraftOrRevision:function(t){var e=this;return new Promise((function(n,i){if(e.settings.draftId||e.settings.revisionId)n();else{if(t&&e.serializeForm(!0)===e.$container.data("initialSerializedValue"))return void n();e.saveDraft().then(n).catch(i)}}))},setFormValue:function(t,e){var n=this;return o(a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!n.settings.revisionId){i.next=2;break}throw"Unable to set form values on a revision.";case 2:if(!n.$container.serialize().split("&").includes("".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(e)))){i.next=5;break}return i.abrupt("return");case 5:if($("<input/>",{type:"hidden",name:t,value:e}).prependTo(n.$container),!n.settings.canCreateDrafts){i.next=9;break}return i.next=9,n.saveDraft();case 9:case"end":return i.stop()}}),i)})))()},markDeltaNameAsModified:function(t){var e=this;return o(a().mark((function n(){var i;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((i=e.$container.data("modified-delta-names")||[]).includes(t)){n.next=6;break}return i.push(t),e.$container.data("modified-delta-names",i),n.next=6,e.saveDraft();case 6:case"end":return n.stop()}}),n)})))()},serializeForm:function(t){var e=this.$container.serialize();if(this.isPreviewActive()&&(e=e.replace("__PREVIEW_FIELDS__=1",this.preview.$editor.serialize())),t&&!this.settings.isUnpublishedDraft){var n=encodeURIComponent(this.namespaceInputName("action")),i=encodeURIComponent(this.namespaceInputName("redirect"));e=(e=e.replace(new RegExp("&".concat(Craft.escapeRegex(n),"=[^&]*")),"")).replace(new RegExp("&".concat(Craft.escapeRegex(i),"=[^&]*")),"")}return e.replace(/&elementindex-[^&]*/g,"")},checkForm:function(t){var e=this;return this.queue.push((function(){return new Promise((function(n,i){if(e.settings.revisionId)n();else if(void 0!==e.$container.data("initialSerializedValue")){var r=e.serializeForm(!0);t||r!==(e.lastSerializedValue||e.$container.data("initialSerializedValue"))?e.enableAutosave&&e.settings.canCreateDrafts?e._saveDraftInternal(r).then(n).catch((function(t){console.warn("Couldn’t save draft:",t),i(t)})):e.updateFieldLayout(r).then(n).catch((function(t){console.warn("Couldn’t update field layout:",t),i(t)})):n()}else setTimeout((function(){e.checkForm(t).then(n).catch(i)}),500)}))}))},isPreviewActive:function(){return this.preview&&this.preview.isActive},saveDraft:function(t){var e=this;return this.queue.push((function(){return new Promise((function(n,i){e._saveDraftInternal(e.serializeForm(!0),t).then(n).catch(i)}))}))},_saveDraftInternal:function(t,e){var a=this;return new Promise((function(e,s){if(a.submittingForm)s("Form already being submitted.");else{a.lastSerializedValue=t,a.failed=!1,a.httpStatus=null,a.httpError=null,a.cancelToken=axios.CancelToken.source(),a.statusIcons().velocity("stop").css("opacity","").removeClass("hidden invisible checkmark-icon alert-icon fade-out").addClass("hidden"),a.statusMessage().empty(),a.$saveMetaBtn&&a.$saveMetaBtn.addClass("active");var o,c=l(Craft.findModifiedDeltaNames(a.$container.data("initialSerializedValue"),t,a.$container.data("delta-names"),a.$container.data("initial-delta-values"),a.$container.data("modified-delta-names"),!0),1)[0],h=a.prepareData(t,null,!0),u=$(),d=r(c);try{for(d.s();!(o=d.n()).done;){var f=o.value,p=u=u.add(a.$container.find('.field[data-base-input-name="'.concat($.escapeSelector(f),'"]')));u=u.add(p).add(p.parentsUntil(a.$container,".field"))}}catch(t){d.e(t)}finally{d.f()}h.push($.param(i({},a.namespaceInputName("visibleLayoutElements"),a.settings.visibleLayoutElements))),!a.settings.isProvisionalDraft&&a.settings.draftId||h.push("".concat(a.namespaceInputName("provisional"),"=1"));var g=a.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");g&&h.push("".concat(a.namespaceInputName("selectedTab"),"=").concat(g)),Craft.sendActionRequest("POST","elements/save-draft",{cancelToken:a.cancelToken.token,headers:a._saveHeaders,data:h.join("&")}).then((function(i){a._afterSaveDraft(),a._afterUpdateFieldLayout(t,g,i);var r=!a.settings.draftId;r&&(a.settings.isProvisionalDraft=!0),a.isFullPage&&(i.data.title&&a.$container.find(".screen-title").text(i.data.title),i.data.docTitle&&(document.title=i.data.docTitle)),a.newSiteIds&&(a.newSiteIds.forEach((function(t){var e=a.settings.additionalSites.find((function(e){return e.siteId==t})),n=!e||void 0===e.enabledByDefault||e.enabledByDefault;Craft.cp.showSiteCrumbMenuItem(t),Craft.cp.setSiteCrumbMenuItemStatus(t,n?"enabled":"disabled")})),a.newSiteIds=null),a.settings.isProvisionalDraft?r&&(a.$container.find("input.action-input").attr("value","elements/apply-draft"),a.settings.elementId=i.data.elementId,a.settings.draftId=i.data.draftId,a.settings.isLive=!1,a.previewToken=null,a.initForProvisionalDraft()):(a.settings.draftName=i.data.draftName,a.isFullPage&&Craft.cp.updateContext(i.data.draftName,i.data.creator?Craft.t("app","Saved {timestamp} by {creator}",{timestamp:i.data.timestamp,creator:i.data.creator}):Craft.t("app","Saved {timestamp}",{timestamp:i.data.timestamp}))),i.data.previewTargets&&JSON.stringify(i.data.previewTargets)!==JSON.stringify(a.settings.previewTargets)&&a.updatePreviewTargets(i.data.previewTargets),r&&(a.updatePreviewLinks(),a.trigger("createProvisionalDraft")),a.$nameTextInput&&a.checkMetaValues(),$.isPlainObject(i.data.draftElementIds)&&(a.draftElementIds=n(n({},a.draftElementIds),i.data.draftElementIds));var s=i.data.modifiedAttributes.map((function(t){return t=a.namespaceInputName(t),['[name="'.concat(t,'"]'),'[name^="'.concat(t,'["]')]})).flat().join(",");u=u.add(a.$contentContainer.find(s).parentsUntil(a.$container,".flex-fields > .field")).add(a.$sidebar.find(s).closest(".field")).not(":has(> .status-badge)");for(var o=0;o<u.length;o++)u.eq(o).prepend($("<div/>",{class:"status-badge modified",title:Craft.t("app","This field has been modified.")}).append($("<span/>",{class:"visually-hidden",html:Craft.t("app","This field has been modified.")})));a.settings.updatedTimestamp=i.data.updatedTimestamp,a.settings.canonicalUpdatedTimestamp=i.data.canonicalUpdatedTimestamp,a.afterUpdate(t),Craft.broadcaster&&Craft.broadcaster.postMessage({pageId:Craft.pageId,event:"saveDraft",canonicalId:a.settings.canonicalId,draftId:a.settings.draftId,isProvisionalDraft:a.settings.isProvisionalDraft}),e()})).catch((function(t){a._afterSaveDraft(),a.ignoreFailedRequest||(a.failed=!0,t&&t.response&&(a.httpStatus=t.response.status,a.httpError=t.response.data?t.response.data.message:null),a._showFailStatus(),s(t)),a.ignoreFailedRequest=!1}))}}))},_afterSaveDraft:function(){this.$saveMetaBtn&&this.$saveMetaBtn.removeClass("active")},_showFailStatus:function(){this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden checkmark-icon").addClass("alert-icon"),this.setStatusMessage(this._saveFailMessage())},updateFieldLayout:function(t){var e=this;return new Promise((function(n,r){if(e.submittingForm)r("Form already being submitted.");else{e.lastSerializedValue=t,e.cancelToken=axios.CancelToken.source();var a=[],s=e.prepareData(t,e.settings.isUnpublishedDraft?null:function(t,e){e.length&&a.push(decodeURIComponent(e[0].split("=")[0]))}),o=i({},e.namespaceInputName("visibleLayoutElements"),e.settings.visibleLayoutElements);e.settings.isProvisionalDraft&&(o[e.namespaceInputName("provisional")]=1);var l=e.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id");l&&(o[e.namespaceInputName("selectedTab")]=l),s+="&".concat($.param(o)),Craft.sendActionRequest("POST","elements/update-field-layout",{cancelToken:e.cancelToken.token,headers:e._saveHeaders,data:s}).then((function(i){e._afterUpdateFieldLayout(t,l,i),n()})).catch((function(t){e._afterSaveDraft(),e.ignoreFailedRequest||(e.failed=!0,t&&t.response&&(e.httpStatus=t.response.status,e.httpError=t.response.data?t.response.data.message:null),e._showFailStatus(),r(t)),e.ignoreFailedRequest=!1}))}}))},prepareData:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=Craft.findDeltaData(this.$container.data("initialSerializedValue"),t,this.$container.data("delta-names"),e,this.$container.data("initial-delta-values"),this.$container.data("modified-delta-names"),!0);return this.settings.draftId&&(i.push("".concat(this.namespaceInputName("draftId"),"=").concat(this.settings.draftId)),this.settings.isProvisionalDraft&&i.push("".concat(this.namespaceInputName("provisional"),"=1"))),null!==this.settings.draftName&&i.push("".concat(this.namespaceInputName("draftName"),"=").concat(this.settings.draftName)),n?i:i.join("&")},get _saveHeaders(){var t={"content-type":"application/x-www-form-urlencoded"};return this.namespace&&(t["X-Craft-Namespace"]=this.namespace),t},getDraftElementId:function(t){return this.draftElementIds[t]||t},updatePreviewTargets:function(t){var e=this;t.forEach((function(t){var n=e.settings.previewTargets.find((function(e){return e.label===t.label}));n&&(n.url=t.url);var i=e.previewLinks.find((function(e){return e.data("targetLabel")===t.label}));i&&(i.data("targetUrl",t.url),e.updatePreviewLinkHref(i))}))},_afterUpdateFieldLayout:function(t,e,n){var i=this;return o(a().mark((function s(){var o,l,c,h,u,d,f,p,g,m,v,b,y,C,w,_,S,x,T;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:o=i.serializeForm(!0)===t,l=i.$contentContainer.children("[data-layout-tab]:not(.hidden)").data("id"),c=$(),h={},u=!1,d=r(n.data.missingElements);try{for(d.s();!(f=d.n()).done;){p=f.value,(g=i.$contentContainer.children('[data-layout-tab="'.concat(p.uid,'"]'))).length||(g=$("<div/>",{id:i.namespaceId(p.id),class:"flex-fields","data-id":p.id,"data-layout-tab":p.uid}),p.id!==e&&g.addClass("hidden"),g.appendTo(i.$contentContainer)),c=c.add(g),m=r(p.elements);try{for(m.s();!(v=m.n()).done;)!1!==(b=v.value).html?(h[p.uid]||(h[p.uid]=[]),h[p.uid].push(b.uid),"string"==typeof b.html&&(y=g.children('[data-layout-element="'.concat(b.uid,'"]')),C=$(b.html),y.length?y.replaceWith(C):C.appendTo(g),Craft.initUiElements(C),u=!0)):(w=g.children('[data-layout-element="'.concat(b.uid,'"]'))).length&&Garnish.hasAttr(w,"data-layout-element-placeholder")||(_=$("<div/>",{class:"hidden","data-layout-element":b.uid,"data-layout-element-placeholder":""}),w.length?w.replaceWith(_):_.appendTo(g),u=!0)}catch(t){m.e(t)}finally{m.f()}}}catch(t){d.e(t)}finally{d.f()}return(S=i.$contentContainer.children("[data-layout-tab]").not(c).not('[data-layout-tab=""]')).length&&(S.remove(),u=!0),c.filter(":not(.hidden)").length||c.first().removeClass("hidden"),i.settings.visibleLayoutElements=h,i.isFullPage?(Craft.cp.updateTabs(n.data.tabs),x=Craft.cp.tabManager):(i.slideout.updateTabs(n.data.tabs),x=i.slideout.tabManager),e&&l&&e!==l&&((T=x.$tabs.filter('[data-id="'.concat(l,'"]'))).length?x.selectTab(T):x.selectTab(x.$tabs.first())),a.next=15,Craft.appendHeadHtml(n.data.headHtml);case 15:return a.next=17,Craft.appendBodyHtml(n.data.bodyHtml);case 17:u&&(n.data.initialDeltaValues&&Object.assign(i.$container.data("initial-delta-values"),n.data.initialDeltaValues),o&&(i.lastSerializedValue=i.serializeForm(!0))),i.handleDismissibleTips();case 19:case"end":return a.stop()}}),s)})))()},afterUpdate:function(t){this.$container.data("initialSerializedValue",t),this.$container.data("initial-delta-values",{});var e=this.statusIcons().velocity("stop").css("opacity","").removeClass("hidden").addClass("checkmark-icon");this.setStatusMessage(this._saveSuccessMessage()),Craft.autosaveDrafts||e.velocity("stop").velocity({opacity:0},{delay:2e3,complete:function(){e.addClass("hidden")}}),this.trigger("update")},setStatusMessage:function(t){this.statusIcons().attr("title",t),this.statusMessage().empty().append($("<span/>",{class:"visually-hidden",text:t}))},showMetaModal:function(){var t=this;this.metaModal?this.metaModal.show():this.createMetaModal(),Garnish.isMobileBrowser(!0)||setTimeout((function(){t.$nameTextInput.trigger("focus")}),100)},createMetaModal:function(){var t=this,e=$("<form/>",{class:"modal fitted"}),n=$("<div/>",{class:"body"}).appendTo(e),i=$('<div class="field"><div class="heading"><label for="draft-name">'+Craft.t("app","Draft Name")+"</label></div></div>").appendTo(n),r=$('<div class="input"/>').appendTo(i);this.$nameTextInput=$('<input type="text" class="text fullwidth" id="draft-name"/>').appendTo(r).val(this.settings.draftName);var a=$('<div class="hud-footer flex flex-center"/>').appendTo(e);$('<div class="flex-grow"></div>').appendTo(a),this.$saveMetaBtn=$("<button/>",{type:"submit",class:"btn submit disabled","aria-disabled":"true",text:Craft.t("app","Save")}).appendTo(a),this.metaModal=new Garnish.Modal(e),this.addListener(this.$nameTextInput,"input","checkMetaValues"),this.addListener(e,"submit",(function(e){e.preventDefault(),t.saveMeta()})),this.metaModal.on("escape",(function(){t.$nameTextInput.val(t.settings.draftName)}))},checkMetaValues:function(){return this.$nameTextInput.val()&&this.$nameTextInput.val()!==this.settings.draftName?(this.$saveMetaBtn.removeClass("disabled"),this.$saveMetaBtn.removeAttr("aria-disabled"),!0):(this.$saveMetaBtn.addClass("disabled"),this.$saveMetaBtn.attr("aria-disabled","true"),!1)},shakeMetaModal:function(){Garnish.shake(this.metaModal.$container)},saveMeta:function(){var t=this;return new Promise((function(e,n){if(!t.checkMetaValues())return t.shakeMetaModal(),void n();t.settings.draftName=t.$nameTextInput.val(),t.metaModal.hide(),t.checkForm(!0).then(e).catch(n)}))},handleSubmit:function(t){var e=this;if(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!this.submittingForm)if(!this.settings.draftId||this.settings.isUnpublishedDraft||this.settings.isProvisionalDraft||void 0!==t.autosave&&!t.autosave||!(t.saveShortcut||t.customTrigger&&"elements/save-draft"===t.customTrigger.data("action"))||!this.enableAutosave){this.submittingForm=!0,Craft.cp.$confirmUnloadForms=Craft.cp.$confirmUnloadForms.not(this.$container),this.cancelToken&&(this.ignoreFailedRequest=!0,this.cancelToken.cancel()),this.trigger("beforeSubmit");var n=this.prepareData(this.serializeForm(!1));if(this.isFullPage){this.stopListeningForChanges();var i=Craft.createForm(n);i.appendTo(Garnish.$bod),i.submit()}else this.slideout.showSubmitSpinner(),Craft.sendActionRequest("POST",null,{headers:this._saveHeaders,data:n}).then((function(t){e.slideout.handleSubmitResponse(t)})).catch((function(t){e.slideout.handleSubmitError(t)})).finally((function(){e.submittingForm=!1,e.slideout.hideSubmitSpinner()}))}else this.checkForm(!0)},handleDismissibleTips:function(){var t=this;this.addListener(this.tipDismissBtn,"click",(function(e){t.hideTip(e)}))},getHiddenTipsUids:function(){return Craft.getLocalStorage("dismissedTips",[])},setHiddenTipsUids:function(t){Craft.setLocalStorage("dismissedTips",t)},hideTip:function(t){var e=t.target;if(e){var n=$(e).closest(".readable");if(n.length){var i=n.data("layout-element");if(n.remove(),"undefined"!=typeof Storage){var r=this.getHiddenTipsUids();r.includes(i)||(r.push(i),this.setHiddenTipsUids(r))}}}},_checkActivity:function(){var t=this;this.queue.push((function(){return new Promise((function(e,n){Craft.sendActionRequest("POST","elements/recent-activity",{params:{dontExtendSession:1},data:{elementType:t.settings.elementType,elementId:t.settings.canonicalId,draftId:t.settings.draftId,siteId:t.settings.siteId,provisional:t.settings.isProvisionalDraft}}).then((function(n){var i=n.data,r=null;if(t.activityTooltips&&(r=Object.values(t.activityTooltips).find((function(t){return t.$trigger[0]===document.activeElement}))),t.$activityContainer.html("").attr("role","region").attr("aria-label",Craft.t("app","Recent Activity")),i.activity.length){$("<h2/>",{class:"visually-hidden",text:Craft.t("app","Recent Activity")}).appendTo(t.$activityContainer);for(var a=$("<ul/>").appendTo(t.$activityContainer),s=0;s<i.activity.length;s++){var o=i.activity[s],l=$("<li/>").appendTo(a),c=$("<button/>",{type:"button",class:"activity-btn","aria-label":Craft.t("app","{name} active, more info",{name:o.userName}),"aria-expanded":"false"}).appendTo(l),h=$(o.userThumb).addClass("elementthumb").css("z-index",i.activity.length-s).appendTo(c);h.find("img,svg").attr("role","presentation"),Craft.cp.elementThumbLoader.load(l),h.find("title").remove(),void 0===t.activityTooltips[o.userId]?t.activityTooltips[o.userId]=new Craft.Tooltip(c,o.message):(t.activityTooltips[o.userId].$trigger=c,t.activityTooltips[o.userId].message=o.message,t.activityTooltips[o.userId]===r&&t.activityTooltips[o.userId].$trigger.focus())}}for(var u=function(){var e=f[d];i.activity.find((function(t){return t.userId==e}))||t.activityTooltips[e].hide()},d=0,f=Object.keys(t.activityTooltips);d<f.length;d++)u();var p=t.settings.updatedTimestamp&&t.settings.updatedTimestamp!==i.updatedTimestamp,g=t.settings.canonicalUpdatedTimestamp&&t.settings.canonicalUpdatedTimestamp!==i.canonicalUpdatedTimestamp;if(p||g){var m=Craft.ui.createButton({label:Craft.t("app","Reload"),spinner:!0});Craft.cp.displayNotice(Craft.t("app","This {type} has been updated.",{type:p&&t.settings.draftId&&!t.settings.isProvisionalDraft?Craft.t("app","draft"):Craft.elementTypeNames[t.settings.elementType]?Craft.elementTypeNames[t.settings.elementType][2]:Craft.t("app","element")}),{details:m}),m.on("click",(function(){window.location.reload()}))}t.settings.updatedTimestamp=i.updatedTimestamp,t.settings.canonicalUpdatedTimestamp=i.canonicalUpdatedTimestamp,setTimeout((function(){t._checkActivity()}),15e3),e()})).catch(n)}))}))}},{defaults:{additionalSites:[],canCreateDrafts:!1,canEditMultipleSites:!1,canSave:!1,canSaveCanonical:!1,elementId:null,canonicalId:null,draftId:null,draftName:null,elementType:null,enablePreview:!1,enabled:!1,enabledForSite:!1,hashedCpEditUrl:null,isLive:!1,isProvisionalDraft:!1,isUnpublishedDraft:!1,previewTargets:[],previewToken:null,revisionId:null,siteId:null,siteStatuses:null,siteToken:null,visibleLayoutElements:{},updatedTimestamp:null,canonicalUpdatedTimestamp:null}})},4211:function(){Craft.ElementEditorSlideout=Craft.CpScreenSlideout.extend({$element:null,init:function(t,e){var n=this;this.$element=$(t),e=Object.assign({},Craft.ElementEditorSlideout.defaults,e,{showHeader:!0}),this.base("elements/edit",e),this.on("load",(function(){var t=n.$container.data("elementEditor");t&&t.on("beforeSubmit",(function(){Object.keys(n.settings.saveParams).forEach((function(e){$("<input/>",{class:"hidden",name:t.namespaceInputName(e),value:n.settings.saveParams[e]}).appendTo(n.$container)}))}))})),this.on("submit",(function(t){if(Craft.broadcaster&&Craft.broadcaster.postMessage({event:"saveElement",id:t.response.data.element.id}),n.settings.onSaveElement){var e=Object.assign({},t.response.data,t.response.data.element);delete e.element,delete e.modelName,delete e.message,n.settings.onSaveElement(e)}Craft.Preview.refresh()}))},getParams:function(){var t={};return this.settings.elementType&&(t.elementType=this.settings.elementType),this.settings.elementId?t.elementId=this.settings.elementId:this.$element&&this.$element.data("id")&&(t.elementId=this.$element.data("id")),this.settings.draftId?t.draftId=this.settings.draftId:this.$element&&this.$element.data("draft-id")?t.draftId=this.$element.data("draft-id"):this.settings.revisionId?t.revisionId=this.settings.revisionId:this.$element&&this.$element.data("revision-id")&&(t.revisionId=this.$element.data("revision-id")),this.settings.siteId?t.siteId=this.settings.siteId:this.$element&&this.$element.data("site-id")&&(t.siteId=this.$element.data("site-id")),this.settings.prevalidate&&(t.prevalidate=1),t},handleSubmit:function(t){var e=this.$container.data("elementEditor");"submit"===t.type?e.handleSubmit(t):e.saveDraft().then((function(){e.handleSubmit(t)})).catch()}},{defaults:{elementId:null,draftId:null,revisionId:null,elementType:null,siteId:null,prevalidate:!1,saveParams:{},onSaveElement:null,validators:[],expandData:[]}})},7998:function(){Craft.ElementFieldSettings=Garnish.Base.extend({allowMultipleSources:null,$maintainHierarchyField:null,$maintainHierarchyButton:null,$sourcesField:null,$sourceSelect:null,$branchLimitField:null,$maxRelationsField:null,$minRelationsField:null,$viewModeField:null,init:function(t,e,n,i,r,a,s){this.allowMultipleSources=t,this.$maintainHierarchyField=$("#".concat(e)),this.$maintainHierarchyButton=this.$maintainHierarchyField.find("button"),this.$sourcesField=$("#".concat(n)),this.allowMultipleSources||(this.$sourceSelect=this.$sourcesField.find("select")),this.$branchLimitField=$("#".concat(i)),this.$minRelationsField=$("#".concat(r)),this.$maxRelationsField=$("#".concat(a)),this.$viewModeField=$("#".concat(s)),this.updateLimitFields(),this.addListener(this.$maintainHierarchyButton,"change","updateLimitFields"),this.allowMultipleSources?this.$sourcesField.find("[type=checkbox]").each(function(t,e){this.addListener($(e),"change","updateMaintainHierarchyField")}.bind(this)):this.addListener(this.$sourceSelect,"change","updateMaintainHierarchyField"),this.updateMaintainHierarchyField()},updateLimitFields:function(){!this.$maintainHierarchyField.hasClass("hidden")&&this.$maintainHierarchyButton.hasClass("on")?(this.$minRelationsField.addClass("hidden"),this.$maxRelationsField.addClass("hidden"),this.$branchLimitField.removeClass("hidden"),this.$viewModeField.addClass("hidden")):(this.$branchLimitField.addClass("hidden"),this.$minRelationsField.removeClass("hidden"),this.$maxRelationsField.removeClass("hidden"),this.$viewModeField.removeClass("hidden"))},updateMaintainHierarchyField:function(){var t;if(this.allowMultipleSources){var e=this.$sourcesField.find('[type="checkbox"]:checked');t=1===e.length&&e.data("structure-id")}else t=this.$sourceSelect.children("option:selected").data("structure-id");t?this.$maintainHierarchyField.removeClass("hidden"):this.$maintainHierarchyField.addClass("hidden"),this.updateLimitFields()}})},3663:function(){Craft.ElementTableSorter=Garnish.DragSort.extend({tableView:null,_helperMargin:null,_$firstRowCells:null,_$titleHelperCell:null,_titleHelperCellOuterWidth:null,_ancestors:null,_updateAncestorsFrame:null,_draggeeLevel:null,_draggeeLevelDelta:null,draggingLastElements:null,_loadingDraggeeLevelDelta:!1,_targetLevel:null,_targetLevelBounds:null,_positionChanged:null,init:function(t,e,n){this.tableView=t,this._helperMargin=this.tableView.elementIndex.actions?40:0,n=$.extend({},Craft.ElementTableSorter.defaults,n,{handle:".move",collapseDraggees:!0,singleHelper:!0,helperSpacingY:2,magnetStrength:4,helper:this.getHelper.bind(this),helperLagBase:1.5,axis:Garnish.Y_AXIS}),this.base(e,n)},findDraggee:function(){var t=this;this._draggeeLevel=this._targetLevel=this._level(this.$targetItem),this._draggeeLevelDelta=0;for(var e=$(this.$targetItem),n=this.$targetItem.next();n.length;){var i=this._level(n);if(i<=this._draggeeLevel)break;var r=i-this._draggeeLevel;r>this._draggeeLevelDelta&&(this._draggeeLevelDelta=r),e=e.add(n),n=n.next()}if(this.draggingLastElements=!n.length,this.settings.maxLevels&&this.draggingLastElements&&this.tableView.getMorePending()){this._loadingDraggeeLevelDelta=!0;var a=this._getAjaxBaseData(this.$targetItem);Craft.sendActionRequest("POST","structures/get-element-level-delta",{data:a}).then((function(e){t._loadingDraggeeLevelDelta=!1,t.dragging&&(t._draggeeLevelDelta=e.data.delta,t.drag(!1))}))}return e},getHelper:function(t){var e=$('<div class="elements datatablesorthelper"/>').appendTo(Garnish.$bod),n=$('<div class="tableview"/>').appendTo(e),i=$('<table class="data"/>').appendTo(n),r=$("<tbody/>").appendTo(i);t.appendTo(r),this._$firstRowCells=this.tableView.$elementContainer.children("tr:first").children();for(var a=t.children(),s=0;s<a.length;s++){var o=$(a[s]);if(o.hasClass("checkbox-cell"))o.remove();else{var l=$(this._$firstRowCells[s]),c=l[0].getBoundingClientRect().width;l.css("width",c+"px"),o.css("width",c+"px"),Garnish.hasAttr(l,"data-titlecell")&&(this._$titleHelperCell=o,this._titleHelperCellOuterWidth=c,o.children("div").css("padding-".concat(Craft.left),"24px"))}}return e},canInsertBefore:function(t){return!this._loadingDraggeeLevelDelta&&!1!==this._getLevelBounds(t.prev(),t)},canInsertAfter:function(t){return!this._loadingDraggeeLevelDelta&&!1!==this._getLevelBounds(t,t.next())},onDragStart:function(){this._ancestors=this._getAncestors(this.$targetItem,this._level(this.$targetItem)),this._setTargetLevelBounds(),this.tableView.maybeLoadMore(),this.base()},onDrag:function(){this.base(),this._updateIndent()},onInsertionPointChange:function(){this._setTargetLevelBounds(),this._updateAncestorsBeforeRepaint(),this.base()},onDragStop:function(){var t=this;if(this._positionChanged=!1,this.base(),this._targetLevel!=this._draggeeLevel){for(var e=this._targetLevel-this._draggeeLevel,n=0;n<this.$draggee.length;n++){var i=$(this.$draggee[n]),r=this._level(i)+e,a=24+this._getLevelIndent(r),s=i.find("[data-text-alternative]"),o=Craft.t("app","Level {num}",{num:r});i.data("level",r),i.find(".element").data("level",r),i.find("> [data-titlecell]:first > div").css("padding-".concat(Craft.left),a),s.text(o)}this._positionChanged=!0}if(this._positionChanged&&this.settings.structureId){for(var l,c=this._getAjaxBaseData(this.$draggee),h=this.$draggee.first().prev();h.length;){var u=this._level(h);if(u==this._targetLevel){c.prevId=h.data("id");break}if(u<this._targetLevel){c.parentId=h.data("id");var d=h.find("> th .toggle");d.hasClass("expanded")||(d.addClass("expanded"),l=this.tableView._createSpinnerRowAfter(h),this.tableView.elementSelect&&this.tableView.elementSelect.removeItems(this.$targetItem),this.removeItems(this.$targetItem),this.$targetItem.remove(),this.tableView._totalVisible--);break}h=h.prev()}Craft.sendActionRequest("POST","structures/move-element",{data:c}).then((function(e){Craft.cp.displaySuccess(Craft.t("app","New position saved.")),t.onPositionChange(),l&&l.parent().length&&(l.remove(),t.tableView._expandElement($toggle,!0)),Craft.cp.runQueue()})).catch((function(e){e.response,Craft.cp.displayError(Craft.t("app","A server error occurred.")),t.tableView.elementIndex.updateElements()}))}},onSortChange:function(){this.tableView.elementSelect&&this.tableView.elementSelect.resetItemOrder(),this._positionChanged=!0,this.base()},onPositionChange:function(){var t=this;Garnish.requestAnimationFrame((function(){t.trigger("positionChange"),t.settings.onPositionChange()}))},onReturnHelpersToDraggees:function(){if(this._$firstRowCells.css("width",""),this.draggingLastElements&&this.tableView.getMorePending()){this.tableView._totalVisible+=this.newDraggeeIndexes[0]-this.oldDraggeeIndexes[0];var t=this.$draggee.last().nextAll();t.length&&(this.removeItems(t),t.remove(),this.tableView.maybeLoadMore())}this.base()},_getLevelBounds:function(t,e){if(e&&e.length?this._getLevelBounds._minLevel=this._level(e):this._getLevelBounds._minLevel=1,t&&t.length?this._getLevelBounds._maxLevel=this._level(t)+1:this._getLevelBounds._maxLevel=1,this.settings.maxLevels){if(1!=this._getLevelBounds._minLevel&&this._getLevelBounds._minLevel+this._draggeeLevelDelta>this.settings.maxLevels)return!1;this._getLevelBounds._maxLevel+this._draggeeLevelDelta>this.settings.maxLevels&&(this._getLevelBounds._maxLevel=this.settings.maxLevels-this._draggeeLevelDelta,this._getLevelBounds._maxLevel<this._getLevelBounds._minLevel&&(this._getLevelBounds._maxLevel=this._getLevelBounds._minLevel))}return{min:this._getLevelBounds._minLevel,max:this._getLevelBounds._maxLevel}},_setTargetLevelBounds:function(){this._targetLevelBounds=this._getLevelBounds(this.$draggee.first().prev(),this.$draggee.last().next())},_updateIndent:function(t){this._updateIndent._mouseDist=this.realMouseX-this.mousedownX,"rtl"===Craft.orientation&&(this._updateIndent._mouseDist*=-1),this._updateIndent._indentationDist=Math.round(this._updateIndent._mouseDist/Craft.ElementTableSorter.LEVEL_INDENT),this._updateIndent._targetLevel=this._draggeeLevel+this._updateIndent._indentationDist,this._updateIndent._targetLevel<this._targetLevelBounds.min?(this._updateIndent._indentationDist+=this._targetLevelBounds.min-this._updateIndent._targetLevel,this._updateIndent._targetLevel=this._targetLevelBounds.min):this._updateIndent._targetLevel>this._targetLevelBounds.max&&(this._updateIndent._indentationDist-=this._updateIndent._targetLevel-this._targetLevelBounds.max,this._updateIndent._targetLevel=this._targetLevelBounds.max),this._targetLevel!==(this._targetLevel=this._updateIndent._targetLevel)&&this._updateAncestorsBeforeRepaint(),this._updateIndent._targetLevelMouseDiff=this._updateIndent._mouseDist-this._updateIndent._indentationDist*Craft.ElementTableSorter.LEVEL_INDENT,this._updateIndent._magnetImpact=Math.round(this._updateIndent._targetLevelMouseDiff/15),Math.abs(this._updateIndent._magnetImpact)>Craft.ElementTableSorter.MAX_GIVE&&(this._updateIndent._magnetImpact=(this._updateIndent._magnetImpact>0?1:-1)*Craft.ElementTableSorter.MAX_GIVE),this._updateIndent._closestLevelMagnetIndent=this._getLevelIndent(this._targetLevel)+this._updateIndent._magnetImpact,this.helpers[0].css("margin-".concat(Craft.left),this._updateIndent._closestLevelMagnetIndent+this._helperMargin),this._$titleHelperCell.css("width",this._titleHelperCellOuterWidth-this._updateIndent._closestLevelMagnetIndent)},_getLevelIndent:function(t){return(t-1)*Craft.ElementTableSorter.LEVEL_INDENT},_getAjaxBaseData:function(t){return{structureId:this.settings.structureId,elementId:t.data("id"),siteId:t.find(".element:first").data("site-id")}},_getAncestors:function(t,e){if(this._getAncestors._ancestors=[],0!=e)for(this._getAncestors._level=e,this._getAncestors._$prevRow=t.prev();this._getAncestors._$prevRow.length&&!(this._level(this._getAncestors._$prevRow)<this._getAncestors._level&&(this._getAncestors._ancestors.unshift(this._getAncestors._$prevRow),this._getAncestors._level=this._level(this._getAncestors._$prevRow),0==this._getAncestors._level));)this._getAncestors._$prevRow=this._getAncestors._$prevRow.prev();return this._getAncestors._ancestors},_level:function(t){return t.data("level")||1},_updateAncestorsBeforeRepaint:function(){this._updateAncestorsFrame&&Garnish.cancelAnimationFrame(this._updateAncestorsFrame),this._updateAncestorsFrame=Garnish.requestAnimationFrame(this._updateAncestors.bind(this))},_updateAncestors:function(){for(this._updateAncestorsFrame=null,this._updateAncestors._i=0;this._updateAncestors._i<this._ancestors.length;this._updateAncestors._i++)this._updateAncestors._$ancestor=this._ancestors[this._updateAncestors._i],this._updateAncestors._$ancestor.data("descendants",this._updateAncestors._$ancestor.data("descendants")-1),0==this._updateAncestors._$ancestor.data("descendants")&&this._updateAncestors._$ancestor.find("> th .toggle:first").remove();for(this._updateAncestors._newAncestors=this._getAncestors(this.$targetItem,this._targetLevel),this._updateAncestors._i=0;this._updateAncestors._i<this._updateAncestors._newAncestors.length;this._updateAncestors._i++)if(this._updateAncestors._$ancestor=this._updateAncestors._newAncestors[this._updateAncestors._i],this._updateAncestors._$ancestor.data("descendants",this._updateAncestors._$ancestor.data("descendants")+1),1==this._updateAncestors._$ancestor.data("descendants")){var t=this._updateAncestors._$ancestor.data("title");$('<button class="toggle expanded" type="button" aria-expanded="true" title="'+Craft.t("app","Show/hide children")+'" aria-label="'+Craft.t("app","Show {title} children",{title:t})+'"></button>').insertAfter(this._updateAncestors._$ancestor.find("> th .move:first"))}this._ancestors=this._updateAncestors._newAncestors,delete this._updateAncestors._i,delete this._updateAncestors._$ancestor,delete this._updateAncestors._newAncestors}},{HELPER_MARGIN:0,LEVEL_INDENT:48,MAX_GIVE:22,defaults:{structureId:null,maxLevels:1,onPositionChange:$.noop}})},8895:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.ElementThumbLoader=Garnish.Base.extend({queue:null,workers:[],init:function(){this.queue=[];for(var t=0;t<3;t++)this.workers.push(new Craft.ElementThumbLoader.Worker(this))},load:function(t){for(var e=this,n=t.find(".thumb[data-sizes]"),i=function(){var t=n.eq(r);if(t.is(":visible"))e.addToQueue(t[0]);else{var i="thumb"+Math.floor(1e6*Math.random());Craft.ElementThumbLoader.invisibleThumbs[i]=[e,t],Garnish.$doc.on("scroll.".concat(i),{$thumb:t,key:i},(function(n){t&&(delete Craft.ElementThumbLoader.invisibleThumbs[n.data.key],e.addToQueue(n.data.$thumb[0]))}))}},r=0;r<n.length;r++)i()},addToQueue:function(t){this.queue.push(t);for(var e=0;e<this.workers.length;e++)this.workers[e].active||this.workers[e].loadNext()},destroy:function(){for(var t=0;t<this.workers.length;t++)this.workers[t].destroy();this.base()}},{invisibleThumbs:{},retryAll:function(){for(var e in Craft.ElementThumbLoader.invisibleThumbs){var n=(a=Craft.ElementThumbLoader.invisibleThumbs[e],s=2,function(t){if(Array.isArray(t))return t}(a)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(a,s)||function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(a,s)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=n[0],r=n[1];delete Craft.ElementThumbLoader.invisibleThumbs[e],i.load(r.parent())}var a,s}}),Craft.ElementThumbLoader.Worker=Garnish.Base.extend({loader:null,active:!1,container:null,_interval:null,_timeout:null,init:function(t){this.loader=t},activate:function(){var t=this;this.active||(this.active=!0,this.clearInterval(),this._interval=setInterval((function(){t.loadNextIfRemoved()}),500))},deactivate:function(){this.active&&(this.active=!1,this.clearInterval(),this.clearTimeout())},clearInterval:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){this._interval&&(clearInterval(this._interval),this._interval=null)})),clearTimeout:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){this._timeout&&(clearTimeout(this._timeout),this._timeout=null)})),loadNext:function(){var t=this;if(this.clearTimeout(),this.container=this.loader.queue.shift(),void 0!==this.container){if(!this.loadNextIfRemoved()){var e=$(this.container);if(e.find("img").length)this.loadNext();else{this.activate(),this._timeout=setTimeout((function(){t.loadNext()}),3e4);var n=$("<img/>",{sizes:e.attr("data-sizes"),srcset:e.attr("data-srcset"),alt:e.attr("data-alt")||""});this.addListener(n,"load,abort,error","loadNext"),n.appendTo(e),picturefill({elements:[n[0]]})}}}else this.deactivate()},loadNextIfRemoved:function(){return!(!this.container||document.body.contains(this.container)||(this.loadNext(),0))}})},4233:function(){Craft.ElevatedSessionForm=Garnish.Base.extend({$form:null,inputs:null,init:function(t,e){if(this.$form=$(t),void 0!==e){this.inputs=[],e=$.makeArray(e);for(var n=0;n<e.length;n++)for(var i=$(e[n]),r=0;r<i.length;r++){var a=i.eq(r);this.inputs.push({input:a,val:Garnish.getInputPostVal(a)})}}this.addListener(this.$form,"submit","handleFormSubmit")},handleFormSubmit:function(t){if(Craft.elevatedSessionManager.fetchingTimeout)return t.preventDefault(),void t.stopImmediatePropagation();if(this.inputs){for(var e,n=!1,i=0;i<this.inputs.length;i++)if((e=this.inputs[i].input).data("passwordInput")&&(e=e.data("passwordInput").$currentInput),Garnish.getInputPostVal(e)!==this.inputs[i].val){n=!0;break}if(!n)return}t.preventDefault(),t.stopImmediatePropagation(),Craft.elevatedSessionManager.requireElevatedSession(this.submitForm.bind(this))},submitForm:function(){this.disable(),this.$form.trigger("submit"),this.enable()}})},1402:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.EntryIndex=Craft.BaseElementIndex.extend({publishableSections:null,$newEntryBtnGroup:null,$newEntryBtn:null,init:function(t,e,n){this.publishableSections=[],this.on("selectSource",this.updateButton.bind(this)),this.on("selectSite",this.updateButton.bind(this)),this.base(t,e,n)},afterInit:function(){var t=this.$sources.toArray().map((function(t){return $(t).data("handle")})).filter((function(t){return!!t}));this.publishableSections=Craft.publishableSections.filter((function(e){return t.includes(e.handle)})),this.base()},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSectionHandle){if("singles"===defaultSectionHandle)return"singles";for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("handle")===defaultSectionHandle)return e.data("key")}}return this.base()},updateButton:function(){var e=this;if(this.$source){var n,i;if("singles"===this.$source.data("key")?n="singles":(n=this.$source.data("handle"),i=this.$source.data("entry-type")),this.publishableSections.length){this.$newEntryBtnGroup&&this.$newEntryBtnGroup.remove();var r,a=this.publishableSections.find((function(t){return t.handle===n}));this.$newEntryBtnGroup=$('<div class="btngroup submit" data-wrapper/>');var s="new-entry-menu-"+Craft.randomString(10);if(a){var o="index"===this.settings.context?Craft.t("app","New {type}",{type:Craft.t("app","entry")}):Craft.t("app","New {section} entry",{section:a.name}),l="index"===this.settings.context?Craft.t("app","New entry in the {section} section",{section:a.name}):o,c="index"===this.settings.context?"link":null;this.$newEntryBtn=Craft.ui.createButton({label:o,ariaLabel:l,spinner:!0,role:c}).addClass("submit add icon").appendTo(this.$newEntryBtnGroup),this.addListener(this.$newEntryBtn,"click mousedown",(function(t){if("index"===e.settings.context&&("click"===t.type&&Garnish.isCtrlKeyPressed(t)||"mousedown"===t.type&&1===t.originalEvent.button)){var n={};i&&(n.type=i),window.open(Craft.getUrl("entries/".concat(a.handle,"/new"),n))}else"click"===t.type&&e._createEntry(a.id,i)})),this.publishableSections.length>1&&(r=$("<button/>",{type:"button",class:"btn submit menubtn btngroup-btn-last","aria-controls":s,"data-disclosure-trigger":"","aria-label":Craft.t("app","New entry, choose a section")}).appendTo(this.$newEntryBtnGroup))}else this.$newEntryBtn=r=Craft.ui.createButton({label:Craft.t("app","New {type}",{type:Craft.t("app","entry")}),ariaLabel:Craft.t("app","New entry, choose a section"),spinner:!0}).addClass("submit add icon menubtn btngroup-btn-last").attr("aria-controls",s).attr("data-disclosure-trigger","").appendTo(this.$newEntryBtnGroup);if(this.addButton(this.$newEntryBtnGroup),r){var h,u=$("<div/>",{id:s,class:"menu menu--disclosure"}).appendTo(this.$newEntryBtnGroup),d=$("<ul/>").appendTo(u),f=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(this.publishableSections);try{var p=function(){var t=h.value,n="index"===e.settings.context?"link":"button";if("index"===e.settings.context&&-1!==$.inArray(e.siteId,t.sites)||"index"!==e.settings.context&&t!==a){var i=$("<li/>").appendTo(d),s=$("<a/>",{role:"button"===n?"button":null,href:Craft.getUrl("entries/".concat(t.handle,"/new")),type:"button"===n?"button":null,text:Craft.t("app","New {section} entry",{section:t.name})}).appendTo(i);e.addListener(s,"activate",(function(){r.data("trigger").hide(),e._createEntry(t.id)})),"button"===n&&e.addListener(s,"keydown",(function(n){n.keyCode===Garnish.SPACE_KEY&&(n.preventDefault(),r.data("trigger").hide(),e._createEntry(t.id))}))}};for(f.s();!(h=f.n()).done;)p()}catch(t){f.e(t)}finally{f.f()}new Garnish.DisclosureMenu(r)}}if("index"===this.settings.context){var g="entries";n&&(g+="/"+n),Craft.setPath(g)}}},_createEntry:function(t,e){var n=this;if(this.$newEntryBtn.hasClass("loading"))console.warn("New entry creation already in progress.");else{var i=this.publishableSections.find((function(e){return e.id===t}));if(!i)throw"Invalid section ID: ".concat(t);this.$newEntryBtn.addClass("loading"),Craft.sendActionRequest("POST","entries/create",{data:{siteId:this.siteId,section:i.handle,type:e}}).then((function(t){var e=t.data;"index"===n.settings.context?document.location.href=Craft.getUrl(e.cpEditUrl,{fresh:1}):Craft.createElementEditor(n.elementType,{siteId:n.siteId,elementId:e.entry.id,draftId:e.entry.draftId,params:{fresh:1}}).on("submit",(function(){n.clearSearch(),n.setSelectedSortAttribute("dateCreated","desc"),n.selectElementAfterUpdate(e.entry.id),n.updateElements()}))})).finally((function(){n.$newEntryBtn.removeClass("loading")}))}}}),Craft.registerElementIndexClass("craft\\elements\\Entry",Craft.EntryIndex)},8201:function(){function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}function _slicedToArray(t,e){return _arrayWithHoles(t)||_iterableToArrayLimit(t,e)||_unsupportedIterableToArray(t,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function _iterableToArrayLimit(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _regeneratorRuntime(){"use strict";_regeneratorRuntime=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var C={};c(C,s,(function(){return this}));var $=Object.getPrototypeOf,w=$&&$($(P([])));w&&w!==n&&i.call(w,s)&&(C=w);var _=y.prototype=v.prototype=Object.create(C);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==_typeof(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(_typeof(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function asyncGeneratorStep(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function _asyncToGenerator(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){asyncGeneratorStep(a,i,r,s,o,"next",t)}function o(t){asyncGeneratorStep(a,i,r,s,o,"throw",t)}s(void 0)}))}}Craft.FieldLayoutDesigner=Garnish.Base.extend({$container:null,$innerContainer:null,$configInput:null,$tabContainer:null,$newTabBtn:null,$libraryContainer:null,$selectedLibrary:null,$fieldLibrary:null,$uiLibrary:null,$uiLibraryElements:null,$fieldSearch:null,$clearFieldSearchBtn:null,$fieldGroups:null,$fields:null,$createFieldBtn:null,tabGrid:null,elementDrag:null,_config:null,_$selectedFields:null,init:function(t,e){var n=this;this.$container=$(t),this.setSettings(e,Craft.FieldLayoutDesigner.defaults),this.$configInput=this.$container.children("input[data-config-input]"),this._config=JSON.parse(this.$configInput.val()),this._config.tabs||(this._config.tabs=[]),this._fieldHandles={},this.$innerContainer=this.$container.children(".fld-container");var i=this.$innerContainer.children(".fld-workspace");this.$tabContainer=i.children(".fld-tabs"),this.$newTabBtn=i.children(".fld-new-tab-btn"),this.$libraryContainer=this.$innerContainer.children(".fld-library"),this.$fieldLibrary=this.$selectedLibrary=this.$libraryContainer.children(".fld-field-library");var r=this.$fieldLibrary.children(".search");this.$fieldSearch=r.children("input"),this.$clearFieldSearchBtn=r.children(".clear"),this.$fieldGroups=this.$libraryContainer.find(".fld-field-group"),this.$fields=this.$fieldGroups.children(".fld-element"),this.$uiLibrary=this.$libraryContainer.children(".fld-ui-library"),this.$uiLibraryElements=this.$uiLibrary.children(),this.tabGrid=new Craft.Grid(this.$tabContainer,{itemSelector:".fld-tab",minColWidth:264,fillMode:"grid",snapToGrid:24});for(var a=this.$tabContainer.children(),s=0;s<a.length;s++)this.initTab($(a[s]));if(this.elementDrag=new Craft.FieldLayoutDesigner.ElementDrag(this),this.initLibraryElements(this.$libraryContainer.find(".fld-element")),this.settings.customizableTabs&&(this.tabDrag=new Craft.FieldLayoutDesigner.TabDrag(this),this.addListener(this.$newTabBtn,"activate","addTab")),this.settings.customizableUi){var o=this.$libraryContainer.children(".btngroup");new Craft.Listbox(o,{onChange:function(t){switch(t.data("library")){case"field":n.$fieldLibrary.removeClass("hidden"),n.$uiLibrary.addClass("hidden"),n.$createFieldBtn.removeClass("hidden");break;case"ui":n.$fieldLibrary.addClass("hidden"),n.$uiLibrary.removeClass("hidden"),n.$createFieldBtn.addClass("hidden")}}})}this.addListener(this.$fieldSearch,"input",(function(){n.updateFieldSearchResults()})),this.addListener(this.$fieldSearch,"keydown",(function(t){switch(t.keyCode){case Garnish.ESC_KEY:n.$fieldSearch.val("").trigger("input");break;case Garnish.RETURN_KEY:t.preventDefault()}})),this.addListener(this.$clearFieldSearchBtn,"click",(function(){n.$fieldSearch.val("").trigger("input")})),this.refreshSelectedFields(),this.$createFieldBtn=Craft.ui.createButton({label:Craft.t("app","New field"),class:"mt-m fullwidth add icon dashed"}).appendTo(this.$libraryContainer),this.addListener(this.$createFieldBtn,"activate",_asyncToGenerator(_regeneratorRuntime().mark((function t(){return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n.createField();case 1:case"end":return t.stop()}}),t)}))))},updateFieldSearchResults:function(){var t=this.$fieldSearch.val().toLowerCase().replace(/['"]/g,"");if(!t)return this.$fieldLibrary.find(".filtered").removeClass("filtered"),void this.$clearFieldSearchBtn.addClass("hidden");this.$clearFieldSearchBtn.removeClass("hidden");var e=this.$fields.filter('[data-keywords*="'.concat(t,'"]')).add(this.$fieldGroups.filter('[data-name*="'.concat(t,'"]')).children(".fld-element")).removeClass("filtered");this.$fields.not(e).addClass("filtered");for(var n=0;n<this.$fieldGroups.length;n++){var i=this.$fieldGroups.eq(n);i.find(".fld-element:not(.hidden):not(.filtered)").length?i.removeClass("filtered"):i.addClass("filtered")}},initTab:function(t){return new Craft.FieldLayoutDesigner.Tab(this,t)},removeFieldByHandle:function(t){this.$fields.filter('[data-attribute="'.concat(t,'"]:first')).removeClass("hidden").closest(".fld-field-group").removeClass("hidden")},addTab:function(){if(this.settings.customizableTabs){var t="";0===this.tabGrid.$items.length&&(t=Craft.t("app","Content"));var e=Craft.escapeHtml(prompt(Craft.t("app","Give your tab a name."),t));if(e){var n="menu-".concat(Math.floor(1e6*Math.random())),i=$('\n<div class="fld-tab">\n  <div class="tabs">\n    <div class="tab sel draggable">\n      <span>'.concat(e,'</span>\n    </div>\n  </div>\n  <div class="fld-tabcontent">\n    <button class="btn add icon dashed fullwidth fld-add-btn" type="button" aria-controls="').concat(n,'">\n      ').concat(Craft.t("app","Add"),'\n    </button>\n    <div id="').concat(n,'" class="menu menu--disclosure fld-library-menu"></div>\n  </div>\n</div>\n')),r=this.$tabContainer.children(".fld-tab:last");r.length?i.insertAfter(r):i.prependTo(this.$tabContainer),this.tabGrid.addItems(i),this.tabDrag.addItems(i),this.initTab(i).updatePositionInConfig()}}},get config(){return this._config},set config(t){this._config=t,this.$configInput.val(JSON.stringify(t))},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},refreshSelectedFields:function(){this._$selectedFields=this.$tabContainer.find(".fld-field")},refreshLibraryFields:function(){this.$fields=this.$fieldGroups.children(".fld-element");for(var t=0;t<this.$fieldGroups.length;t++){var e=this.$fieldGroups.eq(t);e.children(".fld-element").sort((function(t,e){return $(t).data("ui-label")>$(e).data("ui-label")?1:-1})).appendTo(e)}this.updateFieldSearchResults()},hasHandle:function(t){for(var e=0;e<this._$selectedFields.length;e++){var n=this._$selectedFields.eq(e).data("fld-element");if(t===(n.config.handle||n.attribute))return!0}return!1},createField:function(){var t=this;new Craft.CpScreenSlideout("fields/edit-field").on("submit",function(){var e=_asyncToGenerator(_regeneratorRuntime().mark((function e(n){var i,r,a,s,o;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=n.response,r=$(i.data.selectorHtml),t.$fieldGroups.last().append(r).removeClass("hidden"),t.refreshLibraryFields(),t.initLibraryElements(r),a=designer.$tabContainer.find(".fld-field[data-id=".concat(t.fieldId,"]")),s=0;s<a.length;s++)null===(o=a.eq(s).data("fld-element"))||void 0===o||o.refresh();case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())},initLibraryElements:function(t){var e=this;this.elementDrag.addItems(t),this.addListener(t,"activate",(function(t){var n=e.$libraryContainer.parent();if(n.is(".fld-library-menu")){var i=n.data("disclosureMenu"),r=$(t.currentTarget),a=e.cloneLibraryElementForSelection(r),s=i.$trigger.closest(".fld-tab").data("fld-tab");a.insertBefore(i.$trigger),s.initElement(a).updatePositionInConfig(),e.tabGrid.refreshCols(!0),i.hide()}}))},cloneLibraryElementForSelection:function(t){var e=t.clone().removeClass("unused");return Garnish.hasAttr(t,"data-is-multi-instance")||(t.css({visibility:"inherit",display:"field"}).addClass("hidden"),0===t.siblings(".fld-field:not(.hidden)").length&&t.closest(".fld-field-group").addClass("hidden")),this.elementDrag.addItems(e),e}},{defaults:{elementType:null,customizableTabs:!0,customizableUi:!0},createSlideout:function createSlideout(data,js){return _asyncToGenerator(_regeneratorRuntime().mark((function _callee3(){var $body,$footer,$cancelBtn,$contents,slideout;return _regeneratorRuntime().wrap((function _callee3$(_context3){for(;;)switch(_context3.prev=_context3.next){case 0:if($body=$("<div/>",{class:"fld-element-settings-body"}),$("<div/>",{class:"fields",html:data.settingsHtml}).appendTo($body),$footer=$("<div/>",{class:"fld-element-settings-footer"}),$("<div/>",{class:"flex-grow"}).appendTo($footer),$cancelBtn=Craft.ui.createButton({label:Craft.t("app","Close"),spinner:!0}).appendTo($footer),Craft.ui.createSubmitButton({class:"secondary",label:Craft.t("app","Apply"),spinner:!0}).appendTo($footer),$contents=$body.add($footer),slideout=new Craft.Slideout($contents,{containerElement:"form",containerAttributes:{action:"",method:"post",novalidate:"",class:"fld-element-settings"}}),slideout.on("open",(function(){Garnish.requestAnimationFrame((function(){slideout.$container.find(".text:first").trigger("focus")}))})),$cancelBtn.on("click",(function(){slideout.close()})),!data.headHtml){_context3.next=13;break}return _context3.next=13,Craft.appendHeadHtml(data.headHtml);case 13:if(!data.bodyHtml){_context3.next=16;break}return _context3.next=16,Craft.appendBodyHtml(data.bodyHtml);case 16:return js&&eval(js),Craft.initUiElements(slideout.$container),_context3.abrupt("return",slideout);case 19:case"end":return _context3.stop()}}),_callee3)})))()}}),Craft.FieldLayoutDesigner.Tab=Garnish.Base.extend({designer:null,uid:null,$container:null,$addBtn:null,slideout:null,destroyed:!1,init:function(t,e){var n=this;this.designer=t,this.$container=e,this.$container.data("fld-tab",this),this.uid=this.$container.data("uid"),this.uid||(this.uid=Craft.uuid(),this.config={uid:this.uid,name:this.$container.find(".tabs .tab span").text(),elements:[]}),this.designer.settings.customizableTabs&&this.createMenu();var i=this.$container.children(".fld-tabcontent");this.$addBtn=i.children(".fld-add-btn");var r=this.$addBtn.disclosureMenu({position:"below"}).data("disclosureMenu");r.on("beforeShow",(function(){n.designer.$libraryContainer.appendTo(r.$container)})),r.on("hide",(function(){n.designer.$libraryContainer.appendTo(n.designer.$innerContainer)}));for(var a=i.children().not(this.$addBtn),s=0;s<a.length;s++)this.initElement($(a[s]))},createMenu:function(){var t=this,e=this.$container.find(".tabs .tab"),n="actionmenu".concat(Math.floor(1e6*Math.random())),i=$("<button/>",{type:"button",class:"btn action-btn","data-disclosure-trigger":"true","aria-controls":n,"aria-haspopup":"true","aria-label":Craft.t("app","Actions"),title:Craft.t("app","Actions")}).appendTo(e),r=($("<div/>",{id:n,class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(e),i.disclosureMenu().data("disclosureMenu"));r.addItem({label:Craft.t("app","Settings"),icon:"gear",onActivate:function(){t.createSettings()}},r.addGroup());var a=r.addGroup(),s=r.addItem({label:"ltr"===Craft.orientation?Craft.t("app","Move to the left"):Craft.t("app","Move to the right"),icon:"ltr"===Craft.orientation?"arrow-left":"arrow-right",onActivate:function(){t.moveLeft()}},a),o=r.addItem({label:"ltr"===Craft.orientation?Craft.t("app","Move to the right"):Craft.t("app","Move to the left"),icon:"ltr"===Craft.orientation?"arrow-right":"arrow-left",onActivate:function(){t.moveRight()}},a);r.addItem({label:Craft.t("app","Remove"),icon:"xmark",destructive:!0,onActivate:function(){t.destroy()}},r.addGroup()),r.on("show",(function(){r.toggleItem(s,t.$container.prev(".fld-tab").length),r.toggleItem(o,t.$container.next(".fld-tab").length)}))},createSettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n,i,r;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Craft.sendActionRequest("POST","fields/render-layout-component-settings",{data:{uid:t.uid,layoutConfig:t.designer.config,elementType:t.designer.settings.elementType}});case 3:i=e.sent,n=i.data,e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),Craft.cp.displayError(null===e.t0||void 0===e.t0||null===(r=e.t0.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.message),e.t0;case 11:return t.settingsNamespace=n.namespace,e.next=14,Craft.FieldLayoutDesigner.createSlideout(n);case 14:t.slideout=e.sent,t.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()})),t.slideout.on("close",(function(){t.slideout.destroy(),t.slideout=null}));case 17:case"end":return e.stop()}}),e,null,[[0,7]])})))()},applySettings:function(){var t=this;if(this.slideout.$container.find('[name$="[name]"]').val()){var e=this.slideout.$container.find("button[type=submit]").addClass("loading"),n=$.extend({},this.config);delete n.elements,Craft.sendActionRequest("POST","fields/apply-layout-tab-settings",{data:{uid:this.uid,layoutConfig:this.designer.config,elementType:this.designer.settings.elementType,config:n,settingsNamespace:this.settingsNamespace,settings:this.slideout.$container.serialize()}}).then((function(e){t.updateConfig((function(t){return $.extend(e.data.config,{elements:t.elements})}));var n=t.$container.find(".tabs .tab"),i=n.children("button").detach();n.html(e.data.labelHtml).append(i),t.slideout.close()})).catch((function(t){Craft.cp.displayError(),console.error(t)})).finally((function(){e.removeClass("loading"),t.slideout.close()}))}else Craft.cp.displayError(Craft.t("app","You must specify a tab name."))},moveLeft:function(){var t=this.$container.prev(".fld-tab");t.length&&(this.$container.insertBefore(t),this.updatePositionInConfig())},moveRight:function(){var t=this.$container.next(".fld-tab");t.length&&(this.$container.insertAfter(t),this.updatePositionInConfig())},initElement:function(t){return new Craft.FieldLayoutDesigner.Element(this,t)},get index(){var t=this;return this.designer.config.tabs.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.designer.config.tabs.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid,elements:[]},this.config=e),e},set config(t){if(!this.destroyed){t.name&&t.name!==this.config.name&&this.$container.find(".tabs .tab span").text(t.name);var e=this.designer.config,n=this.index;if(-1!==n)e.tabs[n]=t;else{var i=$.inArray(this.$container[0],this.$container.parent().children(".fld-tab"));e.tabs.splice(i,0,t)}this.designer.config=e}},updateConfig:function(t){if(!this.destroyed){var e=t(this.config);!1!==e&&(this.config=e)}},updatePositionInConfig:function(){var t=this;this.destroyed||this.designer.updateConfig((function(e){var n=t.config,i=t.index,r=$.inArray(t.$container[0],t.$container.parent().children(".fld-tab"));return-1!==i&&e.tabs.splice(i,1),e.tabs.splice(r,0,n),e}))},destroy:function(){var t=this;if(!this.destroyed){this.destroyed=!0,this.designer.updateConfig((function(e){var n=t.index;return-1!==n&&(e.tabs.splice(n,1),e)}));for(var e=this.$container.find(".fld-element"),n=0;n<e.length;n++)e.eq(n).data("fld-element").destroy();this.designer.tabGrid.removeItems(this.$container),this.designer.tabDrag.removeItems(this.$container),this.$container.remove(),this.designer.refreshSelectedFields(),this.base()}}}),Craft.FieldLayoutDesigner.Element=Garnish.Base.extend({tab:null,$container:null,uid:null,isMandatory:!1,isMultiInstance:null,isField:!1,attribute:null,requirable:!1,thumbable:!1,previewable:!1,hasCustomWidth:!1,hasSettings:!1,settingsNamespace:null,slideout:null,defaultHandle:null,fieldId:null,fieldsWithErrors:null,init:function(t,e){this.tab=t,this.$container=e,this.uid=e.data("uid"),this.fieldId=e.data("id"),this.fieldsWithErrors=[];var n=!this.uid;if(n&&(this.uid=Craft.uuid(),this.config=$.extend(e.data("config"),{uid:this.uid})),this.initUi(),n&&this.isField){for(var i=this.defaultHandle,r=1;this.tab.designer.hasHandle(i);)r++,i=this.defaultHandle+r;i!==this.defaultHandle&&(this.config=$.extend({},this.config,{handle:i}),e.find(".fld-attribute-label").text(i)),this.tab.designer.refreshSelectedFields()}e.attr("data-keywords",null)},initUi:function(){var t=this;this.$container.data("fld-element",this),this.isMandatory=Garnish.hasAttr(this.$container,"data-mandatory"),this.isField=this.$container.hasClass("fld-field"),this.isMultiInstance=Garnish.hasAttr(this.$container,"data-is-multi-instance"),this.isField&&(this.requirable=Garnish.hasAttr(this.$container,"data-requirable"),this.thumbable=Garnish.hasAttr(this.$container,"data-thumbable"),this.previewable=Garnish.hasAttr(this.$container,"data-previewable"),this.attribute=this.$container.data("attribute"),this.defaultHandle=this.$container.data("default-handle")),this.hasCustomWidth=this.tab.designer.settings.customizableUi&&Garnish.hasAttr(this.$container,"data-has-custom-width"),this.hasCustomWidth&&new Craft.SlidePicker(this.config.width||100,{min:25,max:100,step:25,valueLabel:function(t){return Craft.t("app","{pct} width",{pct:"".concat(t,"%")})},onChange:function(e){t.updateConfig((function(t){return t.width=e,t}))}}).$container.appendTo(this.$container);var e="actionmenu".concat(Math.floor(1e6*Math.random())),n=$("<button/>",{type:"button",class:"btn action-btn","data-disclosure-trigger":"true","aria-controls":e,"aria-haspopup":"true","aria-label":Craft.t("app","Actions"),title:Craft.t("app","Actions")}).appendTo(this.$container);$("<div/>",{id:e,class:"menu menu--disclosure","data-disclosure-menu":"true"}).appendTo(this.$container);var i,r,a,s,o,l,c=n.disclosureMenu().data("disclosureMenu");if(this.hasSettings=Garnish.hasAttr(this.$container,"data-has-settings"),this.hasSettings&&(c.addItem({label:Craft.t("app","Settings"),icon:"gear",onActivate:function(){t.createSettings()}}),this.addListener(this.$container,"dblclick",(function(){t.createSettings()}))),this.fieldId&&c.addItem({label:Craft.t("app","Edit field"),icon:"pencil",onActivate:function(){t.showFieldEditor()}}),this.requirable||this.thumbable||this.previewable){var h=c.addGroup();this.requirable&&(i=c.addItem({label:Craft.t("app","Make required"),icon:"asterisk",iconColor:"rose",onActivate:function(){t.makeRequired()}},h),r=c.addItem({label:Craft.t("app","Make optional"),icon:"asterisk-slash",iconColor:"gray",onActivate:function(){t.dropRequired()}},h)),this.thumbable&&(a=c.addItem({label:Craft.t("app","Use for element thumbnails"),icon:"image",iconColor:"violet",onActivate:function(){t.makeThumbnail()}},h),s=c.addItem({label:Craft.t("app","Don’t use for element thumbnails"),icon:"image-slash",iconColor:"gray",onActivate:function(){t.dropThumbnail()}},h)),this.previewable&&(o=c.addItem({label:Craft.t("app","Show in element cards"),icon:"eye",iconColor:"blue",onActivate:function(){t.showInCards()}},h),l=c.addItem({label:Craft.t("app","Don’t show in element cards"),icon:"eye-slash",iconColor:"gray",onActivate:function(){t.omitFromCards()}},h))}var u=c.addGroup(),d=c.addItem({label:Craft.t("app","Move up"),icon:"arrow-up",onActivate:function(){t.moveUp()}},u),f=c.addItem({label:Craft.t("app","Move down"),icon:"arrow-down",onActivate:function(){t.moveDown()}},u);this.isMandatory||c.addItem({label:Craft.t("app","Remove"),icon:"xmark",destructive:!0,onActivate:function(){t.destroy()}},c.addGroup()),c.on("show",(function(){t.requirable&&(c.toggleItem(i,!t.config.required),c.toggleItem(r,t.config.required)),t.thumbable&&(c.toggleItem(a,!t.config.providesThumbs),c.toggleItem(s,t.config.providesThumbs)),t.previewable&&(c.toggleItem(o,!t.config.includeInCards),c.toggleItem(l,t.config.includeInCards)),c.toggleItem(d,t.$container.prev(".fld-element").length),c.toggleItem(f,t.$container.next(".fld-element").length)}))},createSettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n,i,r,a;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,Craft.sendActionRequest("POST","fields/render-layout-component-settings",{data:{uid:t.uid,layoutConfig:t.tab.designer.config,elementType:t.tab.designer.settings.elementType}});case 3:i=e.sent,n=i.data,e.next=11;break;case 7:throw e.prev=7,e.t0=e.catch(0),Craft.cp.displayError(null===e.t0||void 0===e.t0||null===(r=e.t0.response)||void 0===r||null===(r=r.data)||void 0===r?void 0:r.message),e.t0;case 11:return t.settingsNamespace=n.namespace,e.next=14,Craft.FieldLayoutDesigner.createSlideout(n);case 14:t.slideout=e.sent,t.slideout.$container.on("submit",(function(e){e.preventDefault(),t.applySettings()})),t.slideout.on("close",(function(){t.slideout.destroy(),t.slideout=null})),a=t.slideout.$container.find(".fields:first"),t.isField&&a.find('input[name$="[handle]"]').val(t.config.handle||""),t.trigger("createSettings");case 20:case"end":return e.stop()}}),e,null,[[0,7]])})))()},applySettings:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){var n;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.slideout.$container.find("button[type=submit]").addClass("loading"),e.prev=1,e.next=4,t.applyConfig((function(){return t.config}),!0);case 4:return e.prev=4,n.removeClass("loading"),e.finish(4);case 7:case"end":return e.stop()}}),e,null,[[1,,4,7]])})))()},showFieldEditor:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:new Craft.CpScreenSlideout("fields/edit-field",{params:{fieldId:t.fieldId,multiInstanceTypesOnly:t.isMultiInstance?1:0}}).on("submit",function(){var e=_asyncToGenerator(_regeneratorRuntime().mark((function e(n){var i,r,a,s,o,l,c;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=n.response,r=t.tab.designer,a=r.$fieldLibrary.find(".fld-field[data-id=".concat(t.fieldId,"]")),s=$(i.data.selectorHtml),a.replaceWith(s),r.refreshLibraryFields(),r.elementDrag.removeItems(a),r.elementDrag.addItems(s),o=r.$tabContainer.find(".fld-field[data-id=".concat(t.fieldId,"]")),l=0;l<o.length;l++)null===(c=o.eq(l).data("fld-element"))||void 0===c||c.refresh();case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());case 2:case"end":return e.stop()}}),e)})))()},makeRequired:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.required=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},dropRequired:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.required=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},makeThumbnail:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.providesThumbs=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},dropThumbnail:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.providesThumbs=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},showInCards:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.includeInCards=!0,t}));case 2:case"end":return e.stop()}}),e)})))()},omitFromCards:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t.includeInCards=!1,t}));case 2:case"end":return e.stop()}}),e)})))()},moveUp:function(){var t=this.$container.prev(".fld-element");t.length&&(this.$container.insertBefore(t),this.updatePositionInConfig())},moveDown:function(){var t=this.$container.next(".fld-element");t.length&&(this.$container.insertAfter(t),this.updatePositionInConfig())},applyConfig:function(t){var e=arguments,n=this;return _asyncToGenerator(_regeneratorRuntime().mark((function i(){var r,a,s,o,l,c,h,u,d,f,p,g,m,v;return _regeneratorRuntime().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(r=e.length>1&&void 0!==e[1]&&e[1],!1!==(a=t(n.config))){i.next=4;break}return i.abrupt("return");case 4:return n.fieldsWithErrors.forEach((function(t){Craft.ui.clearErrorsFromField(t)})),i.prev=5,i.next=8,Craft.sendActionRequest("POST","fields/apply-layout-element-settings",{data:{uid:n.uid,layoutConfig:n.tab.designer.config,elementType:n.tab.designer.settings.elementType,config:a,settingsNamespace:n.settingsNamespace,settings:r?n.slideout.$container.serialize():null}});case 8:o=i.sent,s=o.data,i.next=18;break;case 12:throw i.prev=12,i.t0=i.catch(5),(h=null===i.t0||void 0===i.t0||null===(l=i.t0.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.errors)&&Object.entries(h).forEach((function(t){var e=_slicedToArray(t,2),i=e[0],r=e[1],a=n.slideout.$container.find('[data-error-key="'.concat(i,'"]'));a&&(Craft.ui.addErrorsToField(a,r),n.fieldsWithErrors.push(a))})),Craft.cp.displayError(null===i.t0||void 0===i.t0||null===(c=i.t0.response)||void 0===c||null===(c=c.data)||void 0===c?void 0:c.message),i.t0;case 18:if(n.config=s.config,u=n.$container,d=$(s.selectorHtml),n.$container.replaceWith(d),n.$container=d,n.initUi(),(f=n.tab.designer).refreshSelectedFields(),f.elementDrag.removeItems(u),f.elementDrag.addItems(d),f.tabGrid.refreshCols(!0),n.slideout&&(n.slideout.close(),n.slideout.destroy(),n.slideout=null),n.config.providesThumbs)for(p=n.tab.designer.$tabContainer.find(".fld-field"),g=0;g<p.length;g++)m=p.eq(g),(v=m.data("fld-element"))&&v!==n&&v.config.providesThumbs&&v.applyConfig((function(t){return t.providesThumbs=!1,t}));case 31:case"end":return i.stop()}}),i,null,[[5,12]])})))()},refresh:function(){var t=this;return _asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.applyConfig((function(t){return t}));case 2:case"end":return e.stop()}}),e)})))()},get index(){var t=this,e=this.tab.config;return void 0===e?-1:e.elements.findIndex((function(e){return e.uid===t.uid}))},get config(){var t=this;if(!this.uid)throw"Tab is missing its UID";var e=this.tab.config.elements.find((function(e){return e.uid===t.uid}));return e||(e={uid:this.uid},this.config=e),e},set config(t){var e=this.tab.config,n=this.index;if(-1!==n)e.elements[n]=t;else{var i=$.inArray(this.$container[0],this.$container.parent().children(".fld-element"));e.elements.splice(i,0,t)}this.tab.config=e},updateConfig:function(t){var e=t(this.config);!1!==e&&(this.config=e)},updatePositionInConfig:function(){var t=this;this.tab.updateConfig((function(e){var n=t.config,i=t.index,r=$.inArray(t.$container[0],t.$container.parent().children(".fld-element"));return-1!==i&&e.elements.splice(i,1),e.elements.splice(r,0,n),e}))},destroy:function(){var t=this;this.tab.updateConfig((function(e){var n=t.index;return-1!==n&&(e.elements.splice(n,1),e)})),this.tab.designer.elementDrag.removeItems(this.$container),this.$container.remove(),this.isField&&(this.tab.designer.refreshSelectedFields(),this.isMultiInstance||this.tab.designer.removeFieldByHandle(this.defaultHandle)),this.base()}}),Craft.FieldLayoutDesigner.BaseDrag=Garnish.Drag.extend({designer:null,$insertion:null,showingInsertion:!1,$caboose:null,init:function(t,e){this.designer=t,this.base(this.findItems(),e)},onDragStart:function(){this.base(),this.$insertion=this.createInsertion(),this.$caboose=this.createCaboose(),this.$items=$().add(this.$items.add(this.$caboose)),Garnish.$bod.addClass("dragging")},removeCaboose:function(){this.$items=this.$items.not(this.$caboose),this.$caboose.remove()},swapDraggeeWithInsertion:function(){this.$insertion.insertBefore(this.$draggee),this.$draggee.detach(),this.$items=$().add(this.$items.not(this.$draggee).add(this.$insertion)),this.showingInsertion=!0},swapInsertionWithDraggee:function(){this.$insertion.replaceWith(this.$draggee),this.$items=$().add(this.$items.not(this.$insertion).add(this.$draggee)),this.showingInsertion=!1},setMidpoints:function(){for(var t=0;t<this.$items.length;t++){var e=$(this.$items[t]),n=e.offset();e.hasClass("unused")||e.data("midpoint",{left:n.left+e.outerWidth()/2,top:n.top+e.outerHeight()/2})}},getClosestItem:function(){for(this.getClosestItem._closestItem=null,this.getClosestItem._closestItemMouseDiff=null,this.getClosestItem._i=0;this.getClosestItem._i<this.$items.length;this.getClosestItem._i++)this.getClosestItem._$item=$(this.$items[this.getClosestItem._i]),this.getClosestItem._midpoint=this.getClosestItem._$item.data("midpoint"),this.getClosestItem._midpoint&&(this.getClosestItem._mouseDiff=Garnish.getDist(this.getClosestItem._midpoint.left,this.getClosestItem._midpoint.top,this.mouseX,this.mouseY),(null===this.getClosestItem._closestItem||this.getClosestItem._mouseDiff<this.getClosestItem._closestItemMouseDiff)&&(this.getClosestItem._closestItem=this.getClosestItem._$item[0],this.getClosestItem._closestItemMouseDiff=this.getClosestItem._mouseDiff));return this.getClosestItem._closestItem},checkForNewClosestItem:function(){this.checkForNewClosestItem._closestItem=this.getClosestItem(),this.checkForNewClosestItem._closestItem!==this.$insertion[0]&&(this.showingInsertion&&$.inArray(this.$insertion[0],this.$items)<$.inArray(this.checkForNewClosestItem._closestItem,this.$items)&&-1===$.inArray(this.checkForNewClosestItem._closestItem,this.$caboose)?this.$insertion.insertAfter(this.checkForNewClosestItem._closestItem):this.$insertion.insertBefore(this.checkForNewClosestItem._closestItem),this.designer.tabGrid.$items.length>0&&(this.$items=$().add(this.$items.add(this.$insertion)),this.showingInsertion=!0,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()))},onDragStop:function(){var t=this;this.showingInsertion&&this.swapInsertionWithDraggee(),this.removeCaboose(),this.designer.tabGrid.refreshCols(!0);var e=this.$draggee.offset();!e||0===e.top&&0===e.left?(this.$draggee.css({display:this.draggeeDisplay,visibility:"visible",opacity:0}).velocity({opacity:1},Garnish.FX_DURATION),this.helpers[0].velocity({opacity:0},Garnish.FX_DURATION,(function(){t._showDraggee()}))):this.returnHelpersToDraggees(),this.base(),Garnish.$bod.removeClass("dragging")}}),Craft.FieldLayoutDesigner.TabDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({init:function(t){this.base(t,{handle:".tab"})},findItems:function(){return this.designer.$tabContainer.find("> div.fld-tab")},onDragStart:function(){this.base(),this.swapDraggeeWithInsertion(),this.setMidpoints()},swapDraggeeWithInsertion:function(){this.base(),this.designer.tabGrid.removeItems(this.$draggee),this.designer.tabGrid.addItems(this.$insertion)},swapInsertionWithDraggee:function(){this.base(),this.designer.tabGrid.removeItems(this.$insertion),this.designer.tabGrid.addItems(this.$draggee)},onDrag:function(){this.checkForNewClosestItem(),this.base()},onDragStop:function(){this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:"hidden"}),this.$draggee.data("fld-tab").updatePositionInConfig()},createCaboose:function(){var t=$('<div class="fld-tab fld-tab-caboose"/>').appendTo(this.designer.$tabContainer);return this.designer.tabGrid.addItems(t),t},removeCaboose:function(){this.base(),this.designer.tabGrid.removeItems(this.$caboose)},createInsertion:function(){var t=this.$draggee.find(".tab");return $('\n<div class="fld-tab fld-insertion" style="height: '.concat(this.$draggee.height(),'px;">\n  <div class="tabs"><div class="tab sel draggable" style="width: ').concat(t.outerWidth(),"px; height: ").concat(t.outerHeight()+2,'px;"></div></div>\n  <div class="fld-tabcontent" style="height: ').concat(this.$draggee.find(".fld-tabcontent").height()-2,'px;"></div>\n</div>\n'))}}),Craft.FieldLayoutDesigner.ElementDrag=Craft.FieldLayoutDesigner.BaseDrag.extend({draggingLibraryElement:!1,draggingField:!1,draggingMultiInstanceElement:!1,originalTab:null,onDragStart:function(){this.base(),this.draggingLibraryElement=this.$draggee.hasClass("unused"),this.draggingField=this.$draggee.hasClass("fld-field"),this.draggingMultiInstanceElement=Garnish.hasAttr(this.$draggee,"data-is-multi-instance"),this.draggingLibraryElement&&this.draggingMultiInstanceElement&&this.$draggee.css({display:this.draggeeDisplay,visibility:"visible"}),this.draggingLibraryElement?this.originalTab=null:(this.originalTab=this.$draggee.closest(".fld-tab").data("fld-tab"),this.swapDraggeeWithInsertion()),this.setMidpoints()},onDrag:function(){this.isDraggeeMandatory()||this.isHoveringOverTab()?this.checkForNewClosestItem():this.showingInsertion&&(this.$insertion.remove(),this.$items=$().add(this.$items.not(this.$insertion)),this.showingInsertion=!1,this.designer.tabGrid.refreshCols(!0),this.setMidpoints()),this.base()},isDraggeeMandatory:function(){return Garnish.hasAttr(this.$draggee,"data-mandatory")},isHoveringOverTab:function(){for(var t=0;t<this.designer.tabGrid.$items.length;t++)if(Garnish.hitTest(this.mouseX,this.mouseY,this.designer.tabGrid.$items.eq(t)))return!0;return!1},findItems:function(){return this.designer.$tabContainer.find(".fld-element")},createCaboose:function(){for(var t=$(),e=this.designer.$tabContainer.find("> .fld-tab > .fld-tabcontent"),n=0;n<e.length;n++)t=t.add($("<div/>").insertBefore(e.eq(n).children(".fld-add-btn")));return t},createInsertion:function(){return $('<div class="fld-element fld-insertion" style="height: '.concat(this.$draggee.outerHeight(),'px;"/>'))},onDragStop:function(){var t=this.showingInsertion;if(t)this.draggingLibraryElement&&(this.$draggee=this.designer.cloneLibraryElementForSelection(this.$draggee));else if(!this.draggingLibraryElement){var e=this.draggingField?this.designer.$fields.filter('[data-attribute="'.concat(this.$draggee.data("attribute"),'"]:first')):this.designer.$uiLibraryElements.filter('[data-type="'.concat(this.$draggee.data("type"),'"]:first'));this.draggingField&&(e.removeClass("hidden"),e.closest(".fld-field-group").removeClass("hidden")),this.$draggee.data("fld-element").destroy(),this.$draggee=e}if(this.base(),this.$draggee.css({display:this.draggeeDisplay,visibility:this.draggingField||t?"hidden":"visible"}),t){var n,i=this.$draggee.closest(".fld-tab").data("fld-tab");if(this.draggingLibraryElement)n=i.initElement(this.$draggee);else if(n=this.$draggee.data("fld-element"),i!==this.originalTab){var r=n.config;this.originalTab.updateConfig((function(t){var e=n.index;return-1!==e&&(t.elements.splice(e,1),t)})),this.$draggee.data("fld-element").tab=i,n.config=r}n.updatePositionInConfig()}}})},3347:function(){Craft.FieldToggle=Garnish.Base.extend({$toggle:null,targetPrefix:null,targetSelector:null,reverseTargetSelector:null,_$target:null,_$reverseTarget:null,type:null,init:function(t){switch(this.$toggle=$(t),this.$toggle.data("fieldtoggle")&&(console.warn("Double-instantiating a field toggle on an element"),this.$toggle.data("fieldtoggle").destroy()),this.$toggle.data("fieldtoggle",this),this.type=this.getType(),"select"===this.type||"fieldset"===this.type?this.targetPrefix=this.$toggle.attr("data-target-prefix")||"":(this.targetSelector=this.normalizeTargetSelector(this.$toggle.data("target")),this.reverseTargetSelector=this.normalizeTargetSelector(this.$toggle.data("reverse-target"))),this.findTargets(),this.type){case"link":this.addListener(this.$toggle,"click","onToggleChange");break;case"fieldset":this.addListener(this.$toggle.find("input"),"change","onToggleChange");break;default:this.addListener(this.$toggle,"change","onToggleChange"),this.onToggleChange()}},normalizeTargetSelector:function(t){return t&&!t.match(/^[#\.]/)&&(t="#"+t),t},getType:function(){var t=this.$toggle.prop("nodeName");if("INPUT"===t&&"checkbox"===this.$toggle.attr("type")||"checkbox"===this.$toggle.attr("role")||"switch"===this.$toggle.attr("role"))return"checkbox";switch(t){case"SELECT":return Garnish.hasAttr(this.$toggle,"data-boolean-menu")?"booleanMenu":"select";case"A":return"link";default:return"fieldset"}},findTargets:function(){"select"===this.type||"fieldset"===this.type?this._$target=$(this.normalizeTargetSelector(this.targetPrefix+this.getToggleVal())):(this.targetSelector&&(this._$target=$(this.targetSelector)),this.reverseTargetSelector&&(this._$reverseTarget=$(this.reverseTargetSelector)))},getToggleVal:function(){switch(this.type){case"checkbox":return void 0!==this.$toggle.prop("checked")?this.$toggle.prop("checked"):"true"===this.$toggle.attr("aria-checked");case"booleanMenu":var t=this.$toggle.data("boolean");if(void 0!==t)return t;var e=this.$toggle.val();return e&&"0"!==e;default:var n;return null==(n="fieldset"===this.type?this.$toggle.find("input:checked:first").val():Garnish.getInputPostVal(this.$toggle))?null:n.replace(/[^\w]+/g,"-")}},onToggleChange:function(){"select"===this.type||"fieldset"===this.type?(this.hideTarget(this._$target),this.findTargets(),this.showTarget(this._$target)):(this.findTargets(),"link"===this.type?this.onToggleChange._show=this.$toggle.hasClass("collapsed")||!this.$toggle.hasClass("expanded"):this.onToggleChange._show=!!this.getToggleVal(),this.onToggleChange._show?(this.showTarget(this._$target),this.hideTarget(this._$reverseTarget)):(this.hideTarget(this._$target),this.showTarget(this._$reverseTarget)),delete this.onToggleChange._show)},showTarget:function(t){var e=this;if(t&&t.length){if(this.showTarget._currentHeight=t.height(),t.removeClass("hidden"),"select"!==this.type&&"fieldset"!==this.type){"link"===this.type&&(this.$toggle.removeClass("collapsed"),this.$toggle.addClass("expanded"));for(var n=0;n<t.length;n++)!function(t){"SPAN"!==t.prop("nodeName")&&(t.height("auto"),e.showTarget._targetHeight=t.height(),t.css({height:e.showTarget._currentHeight,overflow:"hidden"}),t.velocity("stop"),t.velocity({height:e.showTarget._targetHeight},"fast",(function(){t.css({height:"",overflow:""})})))}(t.eq(n));delete this.showTarget._targetHeight}delete this.showTarget._currentHeight,Garnish.$win.trigger("resize")}},hideTarget:function(t){if(t&&t.length)if("select"===this.type||"fieldset"===this.type)t.addClass("hidden");else{"link"===this.type&&(this.$toggle.removeClass("expanded"),this.$toggle.addClass("collapsed"));for(var e=0;e<t.length;e++)!function(t){t.hasClass("hidden")||("SPAN"===t.prop("nodeName")?t.addClass("hidden"):(t.css("overflow","hidden"),t.velocity("stop"),t.velocity({height:0},"fast",(function(){t.addClass("hidden")}))))}(t.eq(e))}},destroy:function(){this.$toggle.removeData("fieldtoggle"),this.base()}})},7606:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.FormObserver=Garnish.Base.extend({$container:null,_callback:null,_pauseLevel:0,_timeout:null,_recentKeypress:!1,_formData:null,_mutationObserver:null,_selectizeInputs:null,get isActive(){return 0===this._pauseLevel},init:function(e,n){var i=this;this.$container=$(e),this._callback=n,this._serialize(),this.addListener(this.$container,"change,input,keypress,keyup",(function(t){i.isActive&&(["keypress","keyup"].includes(t.type)&&(i._recentKeypress=!0),i._checkFormAfterDelay())})),this._mutationObserver=new MutationObserver((function(e){var n,r=t(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;i.isActive&&i._formChanged(a)&&i._checkFormAfterDelay();var s,o=t(a.addedNodes);try{for(o.s();!(s=o.n()).done;){var l=s.value;l instanceof Element&&i._initSelectizeInputs(l)}}catch(t){o.e(t)}finally{o.f()}"class"===a.attributeName&&a.target instanceof Element&&a.target.classList.contains("selectized")&&i._initSelectizeInput(a.target)}}catch(t){r.e(t)}finally{r.f()}})),this._mutationObserver.observe(this.$container[0],{childList:!0,subtree:!0,characterData:!0,attributeFilter:["name","value","disabled","class"]}),this._initSelectizeInputs(this.$container[0])},_formChanged:function(t){switch(t.type){case"childList":return"TEXTAREA"===t.target.nodeName&&t.target.hasAttribute("name")||this._hasNamedNodes(t.addedNodes)||this._hasNamedNodes(t.removedNodes);case"attributes":switch(t.attributeName){case"name":return!t.target.disabled;case"value":return t.target.hasAttribute("name")&&!t.target.disabled;case"disabled":return t.target.hasAttribute("name")}case"characterData":return t.target.parentNode instanceof Element&&t.target.parentNode.hasAttribute("name");default:return!1}},_initSelectizeInputs:function(e){if(e.classList.contains("selectized"))this._initSelectizeInput(e);else{var n,i=t(e.querySelectorAll(".selectized"));try{for(i.s();!(n=i.n()).done;){var r=n.value;this._initSelectizeInput(r)}}catch(t){i.e(t)}finally{i.f()}}},_initSelectizeInput:function(t){var e=this;this.removeAllListeners(t),this.addListener(t,"selectizedropdownopen",(function(){e.pause()})),this.addListener(t,"selectizedropdownclose",(function(){setTimeout((function(){e.resume()}),100)}))},_hasNamedNodes:function(e){var n,i=t(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r instanceof Element&&(r.hasAttribute("name")||r.querySelectorAll("[name]").length))return!0}}catch(t){i.e(t)}finally{i.f()}return!1},_checkFormAfterDelay:function(){var t=this;clearTimeout(this._timeout),this._timeout=setTimeout((function(){t.checkForm()}),this._recentKeypress?1e3:100)},checkForm:function(){clearTimeout(this._timeout),this._recentKeypress=!1,this._formData!==this._serialize()&&this._callback(this._formData)},_serialize:function(){return"FORM"===this.$container[0].nodeName?this._formData=this.$container.serialize():this._formData=$("<form/>").append(this.$container.clone()).serialize(),this._formData},pause:function(){this._pauseLevel++},resume:function(){if(0===this._pauseLevel)throw"Craft.FormObserver::resume() should only be called after pause().";this._pauseLevel--,this.isActive&&this.checkForm()},destroy:function(){this._mutationObserver.disconnect(),delete this._mutationObserver,this.base()}})},9478:function(){Craft.Grid=Garnish.Base.extend({$container:null,$items:null,items:null,totalCols:null,colGutterDrop:null,colPctWidth:null,possibleItemColspans:null,possibleItemPositionsByColspan:null,itemPositions:null,itemColspansByPosition:null,layouts:null,layout:null,itemHeights:null,leftPadding:null,_refreshingCols:!1,_refreshColsAfterRefresh:!1,_forceRefreshColsAfterRefresh:!1,init:function(t,e){var n=this;this.$container=$(t),this.$container.data("grid")&&(console.warn("Double-instantiating a grid on an element"),this.$container.data("grid").destroy()),this.$container.data("grid",this),this.setSettings(e,Craft.Grid.defaults),this.handleContainerHeightProxy=function(){n.refreshCols(!1,!0)},this.$items=this.$container.children(this.settings.itemSelector),this.setItems(),this.refreshCols(!0,!1),Garnish.$doc.ready((function(){n.refreshCols(!1,!1)}))},addItems:function(t){this.$items=$().add(this.$items.add(t)),this.setItems(),this.refreshCols(!0,!0)},removeItems:function(t){this.$items=$().add(this.$items.not(t)),this.setItems(),this.refreshCols(!0,!0)},resetItemOrder:function(){this.$items=$().add(this.$items),this.setItems(),this.refreshCols(!0,!0)},setItems:function(){for(this.setItems._={},this.items=[],this.setItems._.i=0;this.setItems._.i<this.$items.length;this.setItems._.i++)this.items.push($(this.$items[this.setItems._.i]));delete this.setItems._},refreshCols:function(t){if(this._refreshingCols)return this._refreshColsAfterRefresh=!0,void(t&&(this._forceRefreshColsAfterRefresh=!0));if(this._refreshingCols=!0,this.items.length)if(this.refreshCols._={},this.refreshCols._.oldHeight=this.$container[0].style.height,this.$container[0].style.height=1,this.refreshCols._.scrollHeight=this.$container[0].scrollHeight,this.$container[0].style.height=this.refreshCols._.oldHeight,0!==this.refreshCols._.scrollHeight)if(this.settings.cols?this.refreshCols._.totalCols=this.settings.cols:(this.refreshCols._.totalCols=Math.floor(this.$container.width()/this.settings.minColWidth),null!==this.totalCols&&this.refreshCols._.totalCols>this.totalCols&&(this.refreshCols._.totalCols=Math.floor((this.$container.width()-20)/this.settings.minColWidth)),this.settings.maxCols&&this.refreshCols._.totalCols>this.settings.maxCols&&(this.refreshCols._.totalCols=this.settings.maxCols)),0===this.refreshCols._.totalCols&&(this.refreshCols._.totalCols=1),!0===t||this.totalCols!==this.refreshCols._.totalCols||this.settings.snapToGrid){if(this.totalCols=this.refreshCols._.totalCols,this.colGutterDrop=this.settings.gutter*(this.totalCols-1)/this.totalCols,this.removeListener(this.$container,"resize"),"grid"===this.settings.fillMode)for(this.refreshCols._.itemIndex=0;this.refreshCols._.itemIndex<this.items.length;){for(this.refreshCols._.tallestItemHeight=-1,this.refreshCols._.colIndex=0,this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.i<this.refreshCols._.itemIndex+this.totalCols&&this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.refreshCols._.itemHeight=this.items[this.refreshCols._.i].height("auto").height(),this.refreshCols._.itemHeight>this.refreshCols._.tallestItemHeight&&(this.refreshCols._.tallestItemHeight=this.refreshCols._.itemHeight),this.refreshCols._.colIndex++;for(this.settings.snapToGrid&&(this.refreshCols._.remainder=this.refreshCols._.tallestItemHeight%this.settings.snapToGrid,this.refreshCols._.remainder&&(this.refreshCols._.tallestItemHeight+=this.settings.snapToGrid-this.refreshCols._.remainder)),this.refreshCols._.i=this.refreshCols._.itemIndex;this.refreshCols._.i<this.refreshCols._.itemIndex+this.totalCols&&this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.items[this.refreshCols._.i].height(this.refreshCols._.tallestItemHeight);this.refreshCols._.itemIndex+=this.totalCols}else if(this.removeListener(this.$items,"resize"),1===this.totalCols)this.$container.height("auto"),this.$items.show().css({position:"relative",width:"auto",top:0}).css(Craft.left,0);else{for(this.$items.css("position","absolute"),this.colPctWidth=100/this.totalCols,this.layouts=[],this.itemPositions=[],this.itemColspansByPosition=[],this.possibleItemColspans=[],this.possibleItemPositionsByColspan=[],this.itemHeightsByColspan=[],this.refreshCols._.item=0;this.refreshCols._.item<this.items.length;this.refreshCols._.item++)for(this.possibleItemColspans[this.refreshCols._.item]=[],this.possibleItemPositionsByColspan[this.refreshCols._.item]={},this.itemHeightsByColspan[this.refreshCols._.item]={},this.refreshCols._.$item=this.items[this.refreshCols._.item].show(),this.refreshCols._.positionRight="right"===this.refreshCols._.$item.data("position"),this.refreshCols._.positionLeft="left"===this.refreshCols._.$item.data("position"),this.refreshCols._.minColspan=this.refreshCols._.$item.data("colspan")?this.refreshCols._.$item.data("colspan"):this.refreshCols._.$item.data("min-colspan")?this.refreshCols._.$item.data("min-colspan"):1,this.refreshCols._.maxColspan=this.refreshCols._.$item.data("colspan")?this.refreshCols._.$item.data("colspan"):this.refreshCols._.$item.data("max-colspan")?this.refreshCols._.$item.data("max-colspan"):this.totalCols,this.refreshCols._.minColspan>this.totalCols&&(this.refreshCols._.minColspan=this.totalCols),this.refreshCols._.maxColspan>this.totalCols&&(this.refreshCols._.maxColspan=this.totalCols),this.refreshCols._.colspan=this.refreshCols._.minColspan;this.refreshCols._.colspan<=this.refreshCols._.maxColspan;this.refreshCols._.colspan++)for(this.refreshCols._.$item.css("width",this.getItemWidthCss(this.refreshCols._.colspan)),this.itemHeightsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=this.refreshCols._.$item.outerHeight(),this.possibleItemColspans[this.refreshCols._.item].push(this.refreshCols._.colspan),this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan]=[],this.refreshCols._.positionLeft?(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=0):this.refreshCols._.positionRight?(this.refreshCols._.minPosition=this.totalCols-this.refreshCols._.colspan,this.refreshCols._.maxPosition=this.refreshCols._.minPosition):(this.refreshCols._.minPosition=0,this.refreshCols._.maxPosition=this.totalCols-this.refreshCols._.colspan),this.refreshCols._.position=this.refreshCols._.minPosition;this.refreshCols._.position<=this.refreshCols._.maxPosition;this.refreshCols._.position++)this.possibleItemPositionsByColspan[this.refreshCols._.item][this.refreshCols._.colspan].push(this.refreshCols._.position);for(this.refreshCols._.colHeights=[],this.refreshCols._.i=0;this.refreshCols._.i<this.totalCols;this.refreshCols._.i++)this.refreshCols._.colHeights.push(0);for(this.createLayouts(0,[],[],this.refreshCols._.colHeights,0),this.refreshCols._.layoutTotalCols=[],this.refreshCols._.i=0;this.refreshCols._.i<this.layouts.length;this.refreshCols._.i++)for(this.refreshCols._.layoutTotalCols[this.refreshCols._.i]=0,this.refreshCols._.j=0;this.refreshCols._.j<this.totalCols;this.refreshCols._.j++)this.layouts[this.refreshCols._.i].colHeights[this.refreshCols._.j]&&this.refreshCols._.layoutTotalCols[this.refreshCols._.i]++;for(this.refreshCols._.highestTotalCols=Math.max.apply(null,this.refreshCols._.layoutTotalCols),this.refreshCols._.i=this.layouts.length-1;this.refreshCols._.i>=0;this.refreshCols._.i--)this.refreshCols._.layoutTotalCols[this.refreshCols._.i]!==this.refreshCols._.highestTotalCols&&this.layouts.splice(this.refreshCols._.i,1);for(this.refreshCols._.layoutHeights=[],this.refreshCols._.i=0;this.refreshCols._.i<this.layouts.length;this.refreshCols._.i++)this.refreshCols._.layoutHeights.push(Math.max.apply(null,this.layouts[this.refreshCols._.i].colHeights));for(this.refreshCols._.shortestHeight=Math.min.apply(null,this.refreshCols._.layoutHeights),this.refreshCols._.shortestLayouts=[],this.refreshCols._.emptySpaces=[],this.refreshCols._.i=0;this.refreshCols._.i<this.refreshCols._.layoutHeights.length;this.refreshCols._.i++)if(this.refreshCols._.layoutHeights[this.refreshCols._.i]===this.refreshCols._.shortestHeight){for(this.refreshCols._.shortestLayouts.push(this.layouts[this.refreshCols._.i]),this.refreshCols._.emptySpace=this.layouts[this.refreshCols._.i].emptySpace,this.refreshCols._.j=0;this.refreshCols._.j<this.totalCols;this.refreshCols._.j++)this.refreshCols._.emptySpace+=this.refreshCols._.shortestHeight-this.layouts[this.refreshCols._.i].colHeights[this.refreshCols._.j];this.refreshCols._.emptySpaces.push(this.refreshCols._.emptySpace)}for(this.layout=this.refreshCols._.shortestLayouts[$.inArray(Math.min.apply(null,this.refreshCols._.emptySpaces),this.refreshCols._.emptySpaces)],this.refreshCols._.i=0;this.refreshCols._.i<this.items.length;this.refreshCols._.i++)this.refreshCols._.css={width:this.getItemWidthCss(this.layout.colspans[this.refreshCols._.i])},this.refreshCols._.css[Craft.left]=this.getItemLeftPosCss(this.layout.positions[this.refreshCols._.i]),this.items[this.refreshCols._.i].css(this.refreshCols._.css);this.isSimpleLayout()?(this.$container.height("auto"),this.$items.css({position:"relative",top:0,"margin-bottom":this.settings.gutter+"px"})):(this.$items.css("position","absolute"),this.positionItems(),this.addListener(this.$items,"resize","onItemResize"))}this.completeRefreshCols(),this.addListener(this.$container,"resize",this.handleContainerHeightProxy),this.onRefreshCols()}else this.completeRefreshCols();else this.completeRefreshCols();else this.completeRefreshCols()},completeRefreshCols:function(){var t=this;if(void 0!==this.refreshCols._&&delete this.refreshCols._,this._refreshingCols=!1,this._refreshColsAfterRefresh){var e=this._forceRefreshColsAfterRefresh;this._refreshColsAfterRefresh=!1,this._forceRefreshColsAfterRefresh=!1,Garnish.requestAnimationFrame((function(){t.refreshCols(e)}))}},getItemWidth:function(t){return this.colPctWidth*t},getItemWidthCss:function(t){return"calc("+this.getItemWidth(t)+"% - "+this.colGutterDrop+"px)"},getItemWidthInPx:function(t){return this.getItemWidth(t)/100*this.$container.width()-this.colGutterDrop},getItemLeftPosCss:function(t){return"calc(("+this.getItemWidth(1)+"% + "+(this.settings.gutter-this.colGutterDrop)+"px) * "+t+")"},getItemLeftPosInPx:function(t){return(this.getItemWidth(1)/100*this.$container.width()+(this.settings.gutter-this.colGutterDrop))*t},createLayouts:function(t,e,n,i,r){new Craft.Grid.LayoutGenerator(this).createLayouts(t,e,n,i,r)},isSimpleLayout:function(){for(this.isSimpleLayout._={},this.isSimpleLayout._.i=0;this.isSimpleLayout._.i<this.layout.positions.length;this.isSimpleLayout._.i++)if(0!==this.layout.positions[this.isSimpleLayout._.i])return delete this.isSimpleLayout._,!1;return delete this.isSimpleLayout._,!0},positionItems:function(){for(this.positionItems._={},this.positionItems._.colHeights=[],this.positionItems._.i=0;this.positionItems._.i<this.totalCols;this.positionItems._.i++)this.positionItems._.colHeights.push(0);for(this.positionItems._.i=0;this.positionItems._.i<this.items.length;this.positionItems._.i++){for(this.positionItems._.endingCol=this.layout.positions[this.positionItems._.i]+this.layout.colspans[this.positionItems._.i]-1,this.positionItems._.affectedColHeights=[],this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.affectedColHeights.push(this.positionItems._.colHeights[this.positionItems._.col]);for(this.positionItems._.top=Math.max.apply(null,this.positionItems._.affectedColHeights),this.positionItems._.top>0&&(this.positionItems._.top+=this.settings.gutter),this.items[this.positionItems._.i].css("top",this.positionItems._.top),this.positionItems._.col=this.layout.positions[this.positionItems._.i];this.positionItems._.col<=this.positionItems._.endingCol;this.positionItems._.col++)this.positionItems._.colHeights[this.positionItems._.col]=this.positionItems._.top+this.itemHeightsByColspan[this.positionItems._.i][this.layout.colspans[this.positionItems._.i]]}this.$container.height(Math.max.apply(null,this.positionItems._.colHeights)),delete this.positionItems._},onItemResize:function(t){this.onItemResize._={},t.stopPropagation(),this.onItemResize._.item=$.inArray(t.currentTarget,this.$items),-1!==this.onItemResize._.item&&(this.onItemResize._.newHeight=this.items[this.onItemResize._.item].outerHeight(),this.onItemResize._.newHeight!==this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]&&(this.itemHeightsByColspan[this.onItemResize._.item][this.layout.colspans[this.onItemResize._.item]]=this.onItemResize._.newHeight,this.positionItems(!1))),delete this.onItemResize._},onRefreshCols:function(){this.trigger("refreshCols"),this.settings.onRefreshCols()},destroy:function(){this.$container.removeData("grid"),this.base()}},{defaults:{itemSelector:".item",cols:null,maxCols:null,minColWidth:320,gutter:14,fillMode:"top",colClass:"col",snapToGrid:null,onRefreshCols:$.noop}}),Craft.Grid.LayoutGenerator=Garnish.Base.extend({grid:null,_:null,init:function(t){this.grid=t},createLayouts:function(t,e,n,i,r){for(this._={},this._.c=0;this._.c<this.grid.possibleItemColspans[t].length;this._.c++){for(this._.colspan=this.grid.possibleItemColspans[t][this._.c],this._.tallestColHeightsByPosition=[],this._.p=0;this._.p<this.grid.possibleItemPositionsByColspan[t][this._.colspan].length;this._.p++){for(this._.position=this.grid.possibleItemPositionsByColspan[t][this._.colspan][this._.p],this._.colHeightsForPosition=[],this._.endingCol=this._.position+this._.colspan-1,this._.col=this._.position;this._.col<=this._.endingCol;this._.col++)this._.colHeightsForPosition.push(i[this._.col]);this._.tallestColHeightsByPosition[this._.p]=Math.max.apply(null,this._.colHeightsForPosition)}for(this._.p=$.inArray(Math.min.apply(null,this._.tallestColHeightsByPosition),this._.tallestColHeightsByPosition),this._.position=this.grid.possibleItemPositionsByColspan[t][this._.colspan][this._.p],this._.positions=e.slice(0),this._.colspans=n.slice(0),this._.colHeights=i.slice(0),this._.emptySpace=r,this._.positions.push(this._.position),this._.colspans.push(this._.colspan),this._.tallestColHeight=this._.tallestColHeightsByPosition[this._.p],this._.endingCol=this._.position+this._.colspan-1,this._.col=this._.position;this._.col<=this._.endingCol;this._.col++)this._.emptySpace+=this._.tallestColHeight-this._.colHeights[this._.col],this._.colHeights[this._.col]=this._.tallestColHeight+this.grid.itemHeightsByColspan[t][this._.colspan];t===this.grid.items.length-1?this.grid.layouts.push({positions:this._.positions,colspans:this._.colspans,colHeights:this._.colHeights,emptySpace:this._.emptySpace}):this.grid.createLayouts(t+1,this._.positions,this._.colspans,this._.colHeights,this._.emptySpace)}delete this._}})},2387:function(){Craft.HandleGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){var e=t.replace(/<(.*?)>/g,"");e=(e=e.replace(/['"‘’“”\[\]\(\)\{\}:]/g,"")).toLowerCase(),e=Craft.asciiString(e),this.settings.allowNonAlphaStart||(e=e.replace(/^[^a-z]+/,""));var n=Craft.filterArray(e.split(/[^a-z0-9]+/));if(e="","snake"===Craft.handleCasing)return n.join("_");for(var i=0;i<n.length;i++)"pascal"!==Craft.handleCasing&&0===i?e+=n[i]:e+=n[i].charAt(0).toUpperCase()+n[i].substring(1);return e}})},6607:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}Craft.IconPicker=Craft.BaseInputGenerator.extend({$container:null,$preview:null,$chooseBtn:null,$removeBtn:null,$input:null,modal:null,cancelToken:null,$searchInput:null,$iconListContainer:null,$iconList:null,defaultListHtml:null,init:function(t){var e=this;this.$container=$(t),this.$preview=this.$container.children(".icon-picker--icon"),this.$chooseBtn=this.$container.children(".icon-picker--choose-btn"),this.$removeBtn=this.$container.children(".icon-picker--remove-btn"),this.$input=this.$container.children("input"),this.addListener(this.$chooseBtn,"activate",(function(){e.showModal()})),this.addListener(this.$removeBtn,"activate",(function(){e.removeIcon()}))},showModal:function(){this.modal?this.modal.show():this.createModal()},createModal:function(){var t=this,e=$('<div class="modal icon-picker-modal"/>'),n=$('<div class="body"/>').appendTo(e),i=$('<div class="texticon"/>').appendTo(n);$('<span class="texticon-icon search icon" aria-hidden="true"/>').appendTo(i),this.$searchInput=Craft.ui.createTextInput({name:"search",class:"clearable",placeholder:Craft.t("app","Search")}).attr("aria-label",Craft.t("app","Search")).appendTo(i);var r=$("<button/>",{class:"clear-btn hidden",title:Craft.t("app","Clear search"),"aria-label":Craft.t("app","Clear search")}).appendTo(i);this.$iconListContainer=$('<div class="icon-picker-modal--list"/>').appendTo(n),this.$iconList=$('<ul tabindex="-1"/>').appendTo(this.$iconListContainer);var a=$('<div class="spinner spinner-absolute"/>').appendTo(this.$iconListContainer);$('<span class="visually-hidden"/>').text(Craft.t("app","Loading")).appendTo(a);var s=new Craft.FormObserver(i,(function(){t.updateIcons()}));this.addListener(this.$searchInput,"input,change",(function(){t.$searchInput.val()?r.removeClass("hidden"):r.addClass("hidden")})),this.addListener(r,"activate",(function(){t.$searchInput.val("").trigger("change"),s.checkForm()})),this.addListener(this.$iconList,"click",(function(e){var n;if("BUTTON"===e.target.nodeName)n=$(e.target);else if(!(n=$(e.target).closest("button")).length)return;t.selectIcon(n)})),this.modal=new Garnish.Modal(e),this.updateIcons()},updateIcons:function(){var t=this;return i(e().mark((function n(){var i;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.loadIcons();case 2:i=e.sent,t.$iconList.html(i);case 4:case"end":return e.stop()}}),n)})))()},loadIcons:function(){var t=this;return i(e().mark((function n(){var i,r,a;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.cancelToken&&t.cancelToken.cancel(),""!==(i=t.$searchInput.val())||null===t.defaultListHtml){e.next=4;break}return e.abrupt("return",t.defaultListHtml);case 4:return t.$iconListContainer.addClass("loading"),t.cancelToken=axios.CancelToken.source(),e.prev=6,e.next=9,Craft.sendActionRequest("POST","app/icon-picker-options",{data:{search:i},cancelToken:t.cancelToken.token});case 9:return r=e.sent,a=r.data.listHtml,""===i&&(t.defaultListHtml=a),e.abrupt("return",a);case 13:return e.prev=13,t.$iconListContainer.removeClass("loading"),t.cancelToken=null,e.finish(13);case 17:case"end":return e.stop()}}),n,null,[[6,,13,17]])})))()},selectIcon:function(t){this.modal.hide();var e=t.attr("title");this.$preview.html(t.html()).attr("title",e).attr("aria-label",e),this.$input.val(e),this.$chooseBtn.children(".label").text(Craft.t("app","Change")),this.$chooseBtn.trigger("focus"),this.$removeBtn.removeClass("hidden")},removeIcon:function(){this.$preview.html("").removeAttr("title").removeAttr("aria-label"),this.$input.val(""),this.$chooseBtn.children(".label").text(Craft.t("app","Choose")),this.$removeBtn.addClass("hidden")}})},7966:function(){Craft.ImageUpload=Garnish.Base.extend({$container:null,progressBar:null,uploader:null,init:function(t){this.setSettings(t,Craft.ImageUpload.defaults),this.$container=$(this.settings.containerSelector),this.initImageUpload()},initImageUpload:function(){this.progressBar=new Craft.ProgressBar($('<div class="progress-shade"></div>').appendTo(this.$container));var t={url:Craft.getActionUrl(this.settings.uploadAction),formData:this.settings.postParameters,fileInput:this.$container.find(this.settings.fileInputSelector),paramName:this.settings.uploadParamName};void 0!==Craft.csrfTokenName&&void 0!==Craft.csrfTokenValue&&(t.formData[Craft.csrfTokenName]=Craft.csrfTokenValue),t.events={},t.events.fileuploadstart=this._onUploadStart.bind(this),t.events.fileuploadprogressall=this._onUploadProgress.bind(this),t.events.fileuploaddone=this._onUploadComplete.bind(this),t.events.fileuploadfail=this._onUploadFailure.bind(this),this.uploader=Craft.createUploader(null,this.$container,t),this.initButtons()},initButtons:function(){var t=this;this.$container.find(this.settings.uploadButtonSelector).on("click",(function(e){t.$container.find(t.settings.fileInputSelector).trigger("click")})),this.$container.find(this.settings.deleteButtonSelector).on("click",(function(e){confirm(Craft.t("app","Are you sure you want to delete this image?"))&&($(e.currentTarget).parent().append('<div class="blocking-modal"></div>'),Craft.sendActionRequest("POST",t.settings.deleteAction,{data:t.settings.postParameters}).then((function(e){var n=e.data;t.refreshImage(n)})))}))},refreshImage:function(t){this.$container.replaceWith(this.$container=$(t.html)),this.settings.onAfterRefreshImage(t),Craft.cp.elementThumbLoader.load(this.$container),this.initImageUpload()},_onUploadStart:function(t){this.progressBar.$progressBar.css({top:Math.round(this.$container.outerHeight()/2)-6}),this.$container.addClass("uploading"),this.progressBar.resetProgressBar(),this.progressBar.showProgressBar()},_onUploadProgress:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=parseInt(e.loaded/e.total*100,10);this.progressBar.setProgressPercentage(n)},_onUploadComplete:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.refreshImage(e.result),this.uploader.isLastUpload()&&(this.progressBar.hideProgressBar(),this.$container.removeClass("uploading"))},_onUploadFailure:function(t){var e,n,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=i.response(),a=(null==r||null===(e=r.jqXHR)||void 0===e?void 0:e.responseJSON)||{},s=a.message,o=a.filename,l=a.errors,c=void 0===l?{}:l;o=o||(null==i||null===(n=i.files)||void 0===n?void 0:n[0].name);var h=c?Object.values(c).flat():[];s||(s=h.length?h.join("\n"):o?Craft.t("app","Upload failed for “{filename}”.",{filename:o}):Craft.t("app","Upload failed.")),Craft.cp.displayError(s),this.progressBar.hideProgressBar(),this.$container.removeClass("uploading")}},{defaults:{postParameters:{},uploadAction:"",deleteAction:"",fileInputSelector:"",onAfterRefreshImage:$.noop,containerSelector:null,uploadButtonSelector:null,deleteButtonSelector:null,uploadParamName:"files"}})},657:function(){Craft.InfoIcon=Garnish.Base.extend({$container:null,$icon:null,$liveRegion:null,content:null,hud:null,init:function(t){var e=this;if(this.$icon=$(t),this.$liveRegion=$("<span/>",{role:"status",class:"visually-hidden"}),this.$icon.data("infoicon")?(console.warn("Double-instantiating an info icon on an element"),this.content=this.$icon.data("infoicon").content,this.$icon.data("infoicon").destroy()):(this.content=this.$icon.html(),this.$icon.html("").attr({tabindex:0,role:"button",type:"button","aria-label":Craft.t("app","More info")}).wrap($("<span/>",{class:"infoicon-container"})),this.$container=this.$icon.parent(),this.$container.append(this.$liveRegion)),this.$icon.data("infoicon",this),this.$icon[0].previousSibling&&this.$icon[0].previousSibling.nodeType===Node.TEXT_NODE&&!this.$icon.parent().hasClass("nowrap")){var n=this.$icon[0].previousSibling.nodeValue.match(/[^\s\-]+\s*$/);n&&(this.$icon[0].previousSibling.nodeValue=this.$icon[0].previousSibling.nodeValue.substring(0,n.index),$("<span/>",{class:"nowrap",html:n[0].replace(/\s+$/,"")+" "}).insertAfter(this.$icon[0].previousSibling).append(this.$icon))}this.addListener(this.$icon,"click",(function(t){t.preventDefault(),t.stopPropagation(),e.showHud()})),this.addListener(this.$icon,"keydown",(function(t){e.hud&&e.hud.showing||![Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)||(t.preventDefault(),t.stopPropagation(),e.showHud())}))},showHud:function(t){var e=this;this.hud?this.hud.show():(this.hud=new Garnish.HUD(this.$icon,this.content,{hudClass:"hud info-hud",closeOtherHUDs:!1,onShow:function(){Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY,(function(){e.hud.hide()})),e.$liveRegion.html(""),setTimeout((function(){e.$liveRegion.html(e.content)}),200)},onHide:function(){e.$liveRegion.html("")}}),Craft.initUiElements(this.hud.$body))},destroy:function(){this.$icon.removeData("infoicon"),this.base()}})},4487:function(){Craft.LightSwitch=Garnish.Base.extend({settings:null,$outerContainer:null,$innerContainer:null,$input:null,small:!1,on:!1,indeterminate:!1,dragger:null,dragStartMargin:null,init:function(t,e){if(this.$outerContainer=$(t),this.$outerContainer.data("lightswitch")&&(console.warn("Double-instantiating a lightswitch on an element"),this.$outerContainer.data("lightswitch").destroy()),this.$outerContainer.data("lightswitch",this),this.small=this.$outerContainer.hasClass("small"),this.setSettings(e,Craft.LightSwitch.defaults),this.$innerContainer=this.$outerContainer.find(".lightswitch-container:first"),this.$input=this.$outerContainer.find("input:first"),!this.$input.prop("disabled")){this.on=this.$outerContainer.hasClass("on"),this.indeterminate=this.$outerContainer.hasClass("indeterminate"),this.addListener(this.$outerContainer,"mousedown","_onMouseDown"),this.addListener(this.$outerContainer,"keydown","_onKeyDown"),this.dragger=new Garnish.BaseDrag(this.$outerContainer,{axis:Garnish.X_AXIS,ignoreHandleSelector:null,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)});var n=this.$outerContainer.parent(".lightswitch-inner-container");n.length&&(this.addListener(n.children('span[data-toggle="off"]'),"click",this.turnOff),this.addListener(n.children('span[data-toggle="on"]'),"click",this.turnOn))}},turnOn:function(t){var e=!this.on;if(this.on=!0,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,0);else{var n={};n["margin-"+Craft.left]=0,this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(this.settings.value),this.$outerContainer.addClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","true"),e&&!0!==t&&this.onChange()},turnOff:function(t){var e=this.on||this.indeterminate;if(this.on=!1,this.indeterminate=!1,this.$outerContainer.addClass("dragging"),Garnish.prefersReducedMotion())this.$innerContainer.css("margin-"+Craft.left,this._getOffMargin());else{var n={};n["margin-"+Craft.left]=this._getOffMargin(),this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this))}this.$input.val(""),this.$outerContainer.removeClass("on"),this.$outerContainer.removeClass("indeterminate"),this.$outerContainer.attr("aria-checked","false"),e&&!0!==t&&this.onChange()},turnIndeterminate:function(t){var e=!this.indeterminate;this.on=!1,this.indeterminate=!0,this.$outerContainer.addClass("dragging");var n={};n["margin-"+Craft.left]=this._getOffMargin()/2,this.$innerContainer.velocity("stop").velocity(n,Craft.LightSwitch.animationDuration,this._onSettle.bind(this)),this.$input.val(this.settings.indeterminateValue),this.$outerContainer.removeClass("on"),this.$outerContainer.addClass("indeterminate"),this.$outerContainer.attr("aria-checked","mixed"),e&&!0!==t&&this.onChange()},toggle:function(){this.indeterminate||!this.on?this.turnOn():this.turnOff()},onChange:function(){this.trigger("change"),this.settings.onChange(this.on),this.$outerContainer.trigger("change")},_onMouseDown:function(){this.addListener(Garnish.$doc,"mouseup","_onMouseUp")},_onMouseUp:function(){this.removeListener(Garnish.$doc,"mouseup"),this.dragger.dragging||this.toggle()},_onKeyDown:function(t){switch(t.keyCode){case Garnish.SPACE_KEY:this.toggle(),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?this.turnOn():this.turnOff(),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?this.turnOff():this.turnOn(),t.preventDefault()}},_getMargin:function(){return parseInt(this.$innerContainer.css("margin-"+Craft.left))},_onDragStart:function(){this.$outerContainer.addClass("dragging"),this.dragStartMargin=this._getMargin()},_onDrag:function(){var t;(t="ltr"===Craft.orientation?this.dragStartMargin+this.dragger.mouseDistX:this.dragStartMargin-this.dragger.mouseDistX)<this._getOffMargin()?t=this._getOffMargin():t>0&&(t=0),this.$innerContainer.css("margin-"+Craft.left,t)},_onDragStop:function(){this._getMargin()>this._getOffMargin()/2?this.turnOn():this.turnOff()},_onSettle:function(){this.$outerContainer.removeClass("dragging")},destroy:function(){this.$outerContainer.removeData("lightswitch"),this.base(),this.dragger.destroy()},_getOffMargin:function(){return this.small?-10:-12}},{animationDuration:100,defaults:{value:"1",indeterminateValue:"-",onChange:$.noop}})},6966:function(){Craft.Listbox=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,selectedOptionIndex:null,init:function(t,e){var n=this;this.$container=$(t),this.setSettings(e,Craft.Listbox.defaults),this.$container.data("listbox")&&(console.warn("Double-instantiating a listbox on an element"),this.$container.data("listbox").destroy()),this.$container.data("listbox",this),this.$options=this.$container.find("button,[role=option]"),this.$selectedOption=this.$options.filter("[aria-pressed=true],[aria-selected=true]").removeAttr("aria-selected").attr("aria-pressed","true"),this.$selectedOption.length?this.selectedOptionIndex=this.$options.index(this.$selectedOption):this.$selectedOption=null,this.addListener(this.$options,"click",(function(t){n.select(n.$options.index($(t.currentTarget))),t.preventDefault()}))},select:function(t){t<0||t>=this.$options.length||t===this.selectedOptionIndex||(this.$selectedOption&&this.$selectedOption.removeClass(this.settings.selectedClass).attr("aria-pressed","false"),this.$selectedOption=this.$options.eq(t).addClass(this.settings.selectedClass).attr("aria-pressed","true"),this.selectedOptionIndex=t,this.settings.onChange(this.$selectedOption,t),this.trigger("change",{$selectedOption:this.$selectedOption,selectedOptionIndex:t}))},disable:function(){this.base(),this.$container.attr("aria-disabled","true")},enable:function(){this.base(),this.$container.removeAttr("aria-disabled")},destroy:function(){this.$container.removeData("listbox"),this.base()}},{defaults:{selectedClass:"active",focusClass:"focus",onChange:$.noop}})},5080:function(){function t(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.LivePreview=Garnish.Base.extend({$extraFields:null,$trigger:null,$shade:null,$editorContainer:null,$editor:null,$dragHandle:null,$previewContainer:null,$iframeContainer:null,$iframe:null,$fieldPlaceholder:null,previewUrl:null,token:null,basePostData:null,inPreviewMode:!1,fields:null,lastPostData:null,updateIframeInterval:null,loading:!1,checkAgain:!1,dragger:null,dragStartEditorWidth:null,_slideInOnIframeLoad:!1,_scrollX:null,_scrollY:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){var e=this;this.setSettings(t,Craft.LivePreview.defaults),this.settings.previewUrl?this.previewUrl=this.settings.previewUrl:this.previewUrl=Craft.baseSiteUrl.replace(/\/+$/,"")+"/","https:"===document.location.protocol&&(this.previewUrl=this.previewUrl.replace(/^http:/,"https:")),this.basePostData=$.extend({},this.settings.previewParams),this.$extraFields=$(this.settings.extraFields),this.$trigger=$(this.settings.trigger),this.$fieldPlaceholder=$("<div/>"),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.LivePreview.defaultEditorWidth),this.addListener(this.$trigger,"activate","toggle"),Craft.cp.on("beforeSaveShortcut",(function(){e.inPreviewMode&&e.moveFieldsBack()})),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e<Craft.LivePreview.minEditorWidthInPx&&(t=(e=Craft.LivePreview.minEditorWidthInPx)/Garnish.$win.width()),this._editorWidth=t,this._editorWidthInPx=e},toggle:function(){this.inPreviewMode?this.exit():this.enter()},enter:function(){var t=this;if(!this.inPreviewMode)if(this.token){if(this.trigger("beforeEnter"),this.trigger("beforeOpen"),$(document.activeElement).trigger("blur"),!this.$editor){this.$shade=$("<div/>",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewContainer=$("<div/>",{class:"lp-preview-container"}).appendTo(Garnish.$bod),this.$iframeContainer=$("<div/>",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$editorContainer=$("<div/>",{class:"lp-editor-container"}).appendTo(Garnish.$bod);var e=$("<header/>",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("<form/>",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("<div/>",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var n=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(e);$("<div/>",{class:"flex-grow"}).appendTo(e);var i=$("<button/>",{type:"button",class:"btn submit",text:Craft.t("app","Save")}).appendTo(e);this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(n,"click","exit"),this.addListener(i,"click","save")}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];for(var r=$(this.settings.fields),a=0;a<r.length;a++){var s=$(r[a]),o=this._getClone(s);this.$fieldPlaceholder.insertAfter(s),s.detach(),this.$fieldPlaceholder.replaceWith(o),s.appendTo(this.$editor),this.fields.push({$field:s,$clone:o})}this.updateIframe()?this._slideInOnIframeLoad=!0:this.slideIn(),Craft.ElementThumbLoader.retryAll(),Garnish.uiLayerManager.addLayer(this.$sidebar),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.exit()})),this.inPreviewMode=!0,this.trigger("enter"),this.trigger("open")}else this.createToken()},createToken:function(){var t=this,e={previewAction:this.settings.previewAction};Craft.sendActionRequest("POST","live-preview/create-token",{data:e}).then((function(e){t.token=e.data.token,t.enter()}))},save:function(){Craft.cp.submitPrimaryForm()},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;$("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,"slow",(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,"slow",(function(){t.updateIframeInterval=setInterval(t.updateIframe.bind(t),1e3)}))},exit:function(){var t=this;this.inPreviewMode&&(this.trigger("beforeExit"),this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),this.updateIframeInterval&&clearInterval(this.updateIframeInterval),this.moveFieldsBack(),this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,"slow",(function(){for(var e=0;e<t.fields.length;e++)t.fields[e].$newClone.remove();t.$editorContainer.hide(),t.trigger("slideOut")})),this.$previewContainer.velocity("stop").animateRight(-this.getIframeWidth(),"slow",(function(){t.$previewContainer.hide()})),Craft.ElementThumbLoader.retryAll(),this.inPreviewMode=!1,this.trigger("exit"),this.trigger("close"))},moveFieldsBack:function(){for(var t=0;t<this.fields.length;t++){var e=this.fields[t];e.$newClone=this._getClone(e.$field),this.$fieldPlaceholder.insertAfter(e.$field),e.$field.detach(),this.$fieldPlaceholder.replaceWith(e.$newClone),e.$clone.replaceWith(e.$field)}Garnish.$win.trigger("resize")},getIframeWidth:function(){return Garnish.$win.width()-this.editorWidthInPx},updateWidths:function(){this.$editorContainer.css("width",this.editorWidthInPx+"px"),this.$previewContainer.width(this.getIframeWidth())},updateIframe:function(t){if(t&&(this.lastPostData=null),!this.inPreviewMode)return!1;if(this.loading)return this.checkAgain=!0,!1;var e=$.extend(Garnish.getPostData(this.$editor),Garnish.getPostData(this.$extraFields));if(this.lastPostData&&Craft.compare(e,this.lastPostData,!1))return!1;this.lastPostData=e,this.loading=!0;var n=this.$iframe?$(this.$iframe[0].contentWindow.document):null;return this._scrollX=n?n.scrollLeft():0,this._scrollY=n?n.scrollTop():0,$.ajax({url:this.previewUrl+(-1!==this.previewUrl.indexOf("?")?"&":"?")+Craft.tokenParam+"="+this.token,method:"POST",data:$.extend({},e,this.basePostData),headers:{"X-Craft-Token":this.token},xhrFields:{withCredentials:!0},crossDomain:!0,success:this.handleSuccess.bind(this),error:this.handleError.bind(this)}),!0},forceUpdateIframe:function(){return this.updateIframe(!0)},handleSuccess:function(t){var e=this,n=t+'<script type="text/javascript">window.scrollTo('+this._scrollX+", "+this._scrollY+");<\/script>",i=$('<iframe class="lp-preview" frameborder="0"/>');this.$iframe?i.insertBefore(this.$iframe):i.appendTo(this.$iframeContainer),this.addListener(i,"load",(function(){this.$iframe&&this.$iframe.remove(),this.$iframe=i,this._slideInOnIframeLoad&&(this.slideIn(),this._slideInOnIframeLoad=!1),this.removeListener(i,"load")})),Garnish.requestAnimationFrame((function(){i[0].contentWindow.document.open(),i[0].contentWindow.document.write(n),i[0].contentWindow.document.close(),e.onResponse()}))},handleError:function(){this.onResponse()},onResponse:function(){this.loading=!1,this.checkAgain&&(this.checkAgain=!1,this.updateIframe())},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths(),this.trigger("drag")},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],defaults:{trigger:".livepreviewbtn",fields:null,extraFields:null,previewUrl:null,previewAction:null,previewParams:{}},getActive:function(){var e,n=function(e,n){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=function(e,n){if(e){if("string"==typeof e)return t(e,n);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?t(e,n):void 0}}(e))||n&&e&&"number"==typeof e.length){i&&(e=i);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(e)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}(Craft.LivePreview.instances);try{for(n.s();!(e=n.n()).done;){var i=e.value;if(i.inPreviewMode)return i}}catch(t){n.e(t)}finally{n.f()}}}),Craft.LivePreview.init=function(t){Craft.livePreview=new Craft.LivePreview(t)}},8683:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function i(t){return function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))}}function r(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==n.return||n.return()}finally{if(l)throw s}}}}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}var s;Craft.NestedElementManager=Garnish.Base.extend({$container:null,elementType:null,$createBtn:null,$elements:null,elementSort:null,elementIndex:null,elementEditor:null,init:function(t,e,n){var i=this;if(this.$container=$(t),this.elementType=e,this.setSettings(n,Craft.NestedElementManager.defaults),this.$container.data("nestedElementManager")&&(console.warn("Double-instantiating a nested element manager on an element"),this.$container.data("nestedElementManager").destroy()),this.$container.data("nestedElementManager",this),"cards"===this.settings.mode?this.$container.is(":has(.elements)")&&this.initCards():this.initElementIndex(),this.settings.canCreate){if(this.$createBtn=Craft.ui.createButton({label:this.settings.createButtonLabel,spinner:!0}).addClass("add icon disabled"),"cards"===this.settings.mode){var a=$("<div/>").appendTo(this.$container);this.$createBtn.addClass("dashed").appendTo(a),this.updateCreateBtn()}else this.$createBtn.appendTo(this.elementIndex.$toolbar);if(Array.isArray(this.settings.createAttributes)){var s,o="menu-".concat(Math.floor(1e6*Math.random())),l=$("<div/>",{id:o,class:"menu menu--disclosure"}).insertAfter(this.$createBtn),c=$("<ul/>").appendTo(l),h=r(this.settings.createAttributes);try{var u=function(){var t=s.value,e=$("<li/>").appendTo(c),n="";if(t.icon){var r=$('<span class="icon">'.concat(t.icon,"</span>"));t.color&&r.addClass(t.color),n+=r.prop("outerHTML")}n+='<span class="label">'.concat(t.label,"</span>");var a=$("<button/>",{type:"button",class:"menu-item",html:n}).appendTo(e);i.addListener(a,"activate",(function(e){e.preventDefault(),i.$createBtn.data("disclosureMenu").hide(),i.createElement(t.attributes)}))};for(h.s();!(s=h.n()).done;)u()}catch(t){h.e(t)}finally{h.f()}this.$createBtn.attr("aria-controls",o).attr("data-disclosure-trigger","true").addClass("menubtn").disclosureMenu()}else this.addListener(this.$createBtn,"activate",(function(t){t.preventDefault(),i.createElement(i.settings.createAttributes)}))}setTimeout((function(){i.elementEditor=i.$container.closest("form").data("elementEditor"),i.elementEditor&&i.elementEditor.on("update",(function(){i.settings.ownerId=i.elementEditor.getDraftElementId(i.settings.ownerId),i.elementIndex&&(i.elementIndex.settings.criteria[i.settings.ownerIdParam]=i.settings.ownerId)}))}),100)},initCards:function(){var t=this;this.$elements=this.$container.children(".elements"),this.$elements.length||(this.$elements=$("<ul/>",{class:"elements ".concat(this.settings.showInGrid?"card-grid":"cards")}).prependTo(this.$container),this.$container.children(".zilch").addClass("hidden")),this.settings.sortable&&(this.elementSort=new Garnish.DragSort({container:this.$elements,handle:"> .element > .card-actions-container > .card-actions > .move",ignoreHandleSelector:null,collapseDraggees:!0,magnetStrength:4,helperLagBase:1.5,onSortChange:function(){t.onSortChange(t.elementSort.$draggee)}}));var e,n=r(this.$elements.children().toArray());try{for(n.s();!(e=n.n()).done;){var i=e.value;this.initElement($(i).children(".element"))}}catch(t){n.e(t)}finally{n.f()}},deinitCards:function(){this.$elements&&(this.$elements.remove(),this.$elements=null,this.elementSort.destroy(),this.elementSort=null,this.$container.children(".zilch").removeClass("hidden"))},initElementIndex:function(){var t,n,r,a,s,o=this;this.elementIndex=Craft.createElementIndex(this.elementType,this.$container,Object.assign({context:"embedded-index",sortable:this.settings.sortable},this.settings.indexSettings,{canDuplicateElements:function(t){return o.canCreate(t.length)},canDeleteElements:function(t){return o.canDelete(t.length)},onBeforeDuplicateElements:(s=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return s.apply(this,arguments)}),onDuplicateElements:(a=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return a.apply(this,arguments)}),onBeforeDeleteElements:(r=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return r.apply(this,arguments)}),onDeleteElements:(n=i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.markAsDirty();case 2:case"end":return t.stop()}}),t)}))),function(){return n.apply(this,arguments)}),onBeforeUpdateElements:function(){o.$createBtn&&o.$createBtn.addClass("disabled")},onCountResults:function(){o.updateCreateBtn()},onSortChange:(t=i(e().mark((function t(n){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,o.onSortChange(n);case 2:case"end":return t.stop()}}),t)}))),function(e){return t.apply(this,arguments)})}))},markAsDirty:function(){var t=this;return i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.elementEditor||!t.settings.baseInputName){e.next=3;break}return e.next=3,t.elementEditor.setFormValue(t.settings.baseInputName,"*");case 3:case"end":return e.stop()}}),n)})))()},getBaseActionData:function(){var t=this;return i(e().mark((function n(){return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.markAsDirty();case 2:return e.abrupt("return",{ownerElementType:t.settings.ownerElementType,ownerId:t.settings.ownerId,ownerSiteId:t.settings.ownerSiteId,attribute:t.settings.attribute});case 3:case"end":return e.stop()}}),n)})))()},onSortChange:function(t){var n=this;return i(e().mark((function i(){var r,a,s,o,l;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=parseInt(t.find(".element").data("id")),a=n.getElementIds(),e.t0=Object,e.next=5,n.getBaseActionData();case 5:return e.t1=e.sent,e.t2={elementIds:[r],offset:n.getBaseElementOffset()+a.indexOf(r)},s=e.t0.assign.call(e.t0,e.t1,e.t2),e.prev=8,e.next=11,Craft.sendActionRequest("POST","nested-elements/reorder",{data:s});case 11:o=e.sent,Craft.cp.displayNotice(o.data.message),e.next=18;break;case 15:e.prev=15,e.t3=e.catch(8),Craft.cp.displayError(null===e.t3||void 0===e.t3||null===(l=e.t3.response)||void 0===l||null===(l=l.data)||void 0===l?void 0:l.message);case 18:return e.next=20,n.markAsDirty();case 20:case"end":return e.stop()}}),i,null,[[8,15]])})))()},updateCreateBtn:function(){this.$createBtn&&(this.canCreate()?this.$createBtn.removeClass("disabled"):this.$createBtn.addClass("disabled"))},canCreate:function(t){if(!this.settings.canCreate)return!1;if(!this.settings.maxElements)return!0;var e=this.getTotalElements();return null!==e&&e+(t||1)<=this.settings.maxElements},canDelete:function(t){if(!this.settings.minElements)return!0;var e=this.getTotalElements();return null!==e&&e-(t||1)>=this.settings.minElements},getElementIds:function(){return("cards"===this.settings.mode?this.$elements.find("> li > .element").toArray():this.elementIndex.view.getAllElements().toArray().map((function(t){return t.querySelector(".element")}))).map((function(t){return t.getAttribute("data-id")})).filter((function(t){return t})).map((function(t){return parseInt(t)}))},getTotalElements:function(){return"cards"===this.settings.mode?this.$elements?this.$elements.children().length:0:this.elementIndex.isIndexBusy?null:this.elementIndex.totalUnfilteredResults},getBaseElementOffset:function(){return"cards"===this.settings.mode?0:this.elementIndex.settings.batchSize*(this.elementIndex.page-1)},createElement:(s=i(e().mark((function t(n){var r,a,s,o=this;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.$createBtn&&this.$createBtn.addClass("loading"),t.prev=1,t.next=4,this.markAsDirty();case 4:return n=Object.assign({elementType:this.elementType,ownerId:this.settings.ownerId,siteId:this.settings.ownerSiteId},n),t.next=7,Craft.sendActionRequest("POST","elements/create",{data:n});case 7:r=t.sent,a=r.data,Craft.createElementEditor(this.elementType,{siteId:a.element.siteId,elementId:a.element.id,draftId:a.element.draftId,params:{fresh:1}}).on("submit",i(e().mark((function t(){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return"cards"===o.settings.mode?o.addElementCard(a.element):(o.elementIndex.clearSearch(),o.elementIndex.updateElements()),t.next=3,o.markAsDirty();case 3:case"end":return t.stop()}}),t)})))),t.next=16;break;case 13:t.prev=13,t.t0=t.catch(1),Craft.cp.displayError(null===t.t0||void 0===t.t0||null===(s=t.t0.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.message);case 16:return t.prev=16,this.$createBtn&&this.$createBtn.removeClass("loading"),t.finish(16);case 19:case"end":return t.stop()}}),t,this,[[1,13,16,19]])}))),function(t){return s.apply(this,arguments)}),initElement:function(t){var e=this;Garnish.hasAttr(t,"data-editable")&&this.addListener(t,"dblclick,taphold",(function(n){$(n.target).closest("a[href],button,[role=button]").length||Craft.createElementEditor(e.elementType,t)})),this.settings.sortable&&this.elementSort.addItems(t.parent());var n=t.find(".action-btn").disclosureMenu().data("disclosureMenu");if(Garnish.hasAttr(t,"data-deletable")){var i=n.addGroup();n.addItem({icon:"trash",label:this.settings.deleteLabel||Craft.t("app","Delete"),destructive:!0,onActivate:function(){confirm(e.settings.deleteConfirmationMessage)&&e.deleteElement(t)}},i)}},deleteElement:function(t){var n=this;return i(e().mark((function i(){var r,a,s;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Object,e.next=3,n.getBaseActionData();case 3:return e.t1=e.sent,e.t2={elementId:t.data("id")},r=e.t0.assign.call(e.t0,e.t1,e.t2),e.prev=6,e.next=9,Craft.sendActionRequest("POST","nested-elements/delete",{data:r});case 9:a=e.sent,Craft.cp.displayNotice(a.data.message),e.next=17;break;case 13:throw e.prev=13,e.t3=e.catch(6),Craft.cp.displayError(null===e.t3||void 0===e.t3||null===(s=e.t3.response)||void 0===s||null===(s=s.data)||void 0===s?void 0:s.message),e.t3;case 17:return n.settings.sortable&&n.elementSort.removeItems(t),t.parent().remove(),0===n.$elements.children().length&&n.deinitCards(),n.$createBtn&&(n.updateCreateBtn(),n.canCreate()&&n.$createBtn.focus()),e.next=23,n.markAsDirty();case 23:case"end":return e.stop()}}),i,null,[[6,13]])})))()},addElementCard:function(t){var n=this;this.$createBtn&&this.$createBtn.addClass("loading"),Craft.sendActionRequest("POST","app/render-elements",{data:{elements:[{type:this.elementType,id:t.id,siteId:t.siteId,instances:[{context:"field",ui:"card",sortable:this.settings.sortable,showActionMenu:!0}]}]}}).then(function(){var r=i(e().mark((function i(r){var a,s,o;return e().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return a=r.data,n.$elements||n.initCards(),s=$("<li/>").appendTo(n.$elements),o=$(a.elements[t.id][0]).appendTo(s),n.initElement(o),e.next=7,Craft.appendHeadHtml(a.headHtml);case 7:return e.next=9,Craft.appendBodyHtml(a.bodyHtml);case 9:Craft.cp.elementThumbLoader.load(o),n.updateCreateBtn();case 11:case"end":return e.stop()}}),i)})));return function(t){return r.apply(this,arguments)}}()).catch((function(t){var e,n,i;throw Craft.cp.displayError(null==t||null===(e=t.response)||void 0===e||null===(e=e.data)||void 0===e?void 0:e.message),null!==(n=null==t||null===(i=t.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.message)&&void 0!==n?n:t})).finally((function(){n.$createBtn&&n.$createBtn.removeClass("loading").focus()}))},destroy:function(){this.$container.removeData("nestedElementManager"),this.base()}},{ownerId:null,defaults:{mode:"cards",showInGrid:!1,ownerElementType:null,ownerId:null,ownerSiteId:null,attribute:null,sortable:!1,indexSettings:{},canCreate:!1,minElements:null,maxElements:null,createButtonLabel:Craft.t("app","Create"),ownerIdParam:null,createAttributes:null,fieldHandle:null,baseInputName:null,deleteLabel:null,deleteConfirmationMessage:null}})},7439:function(){Craft.PasswordInput=Garnish.Base.extend({$passwordWrapper:null,$passwordInput:null,$textInput:null,$currentInput:null,$showPasswordToggle:null,showingPassword:null,init:function(t,e){this.$passwordInput=$(t),this.$passwordWrapper=this.$passwordInput.parent(".passwordwrapper"),this.settings=$.extend({},Craft.PasswordInput.defaults,e),this.$passwordInput.data("passwordInput")&&(console.warn("Double-instantiating a password input on an element"),this.$passwordInput.data("passwordInput").destroy()),this.$passwordInput.data("passwordInput",this),this.$showPasswordToggle=$('<button type="button" class="invisible" />'),this.$showPasswordToggle.addClass("password-toggle"),this.$showPasswordToggle.insertAfter(this.$passwordInput),this.initInputFocusEvents(this.$passwordInput),this.addListener(this.$showPasswordToggle,"click","onClick"),this.hidePassword(),this.addListener(this.$passwordWrapper.closest("form"),"submit","hidePassword")},setCurrentInput:function(t){this.$currentInput&&(t.insertAfter(this.$currentInput),this.$currentInput.detach(),t.trigger("focus"),t.val(this.$currentInput.val())),this.$currentInput=t,this.addListener(this.$currentInput,"keypress,keyup,change,blur","onInputChange")},updateToggleLabel:function(t){this.$showPasswordToggle.text(t)},initInputFocusEvents:function(t){this.addListener(t,"focus",(function(){this.$passwordWrapper.addClass("focus")})),this.addListener(t,"blur",(function(){this.$passwordWrapper.removeClass("focus")}))},showPassword:function(){this.showingPassword||(this.$textInput||(this.$textInput=this.$passwordInput.clone(!0),this.$textInput.attr({type:"text",autocapitalize:"off"}),this.initInputFocusEvents(this.$textInput)),this.setCurrentInput(this.$textInput),this.updateToggleLabel(Craft.t("app","Hide")),this.showingPassword=!0)},hidePassword:function(){!1!==this.showingPassword&&(this.setCurrentInput(this.$passwordInput),this.updateToggleLabel(Craft.t("app","Show")),this.showingPassword=!1)},togglePassword:function(){this.showingPassword?this.hidePassword():this.showPassword(),this.settings.onToggleInput(this.$currentInput)},onInputChange:function(){this.$currentInput.val()?this.$showPasswordToggle.removeClass("invisible"):this.$showPasswordToggle.addClass("invisible")},onClick:function(t){if(this.$currentInput[0].setSelectionRange){var e=this.$currentInput[0].selectionStart,n=this.$currentInput[0].selectionEnd;this.togglePassword(),this.$currentInput[0].setSelectionRange(e,n)}else this.togglePassword()},destroy:function(){this.$passwordInput.removeData("passwordInput"),this.base()}},{defaults:{onToggleInput:$.noop}})},5328:function(){function t(t,n){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!i){if(Array.isArray(t)||(i=function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t))||n&&t&&"number"==typeof t.length){i&&(t=i);var r=0,a=function(){};return{s:a,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,l=!1;return{s:function(){i=i.call(t)},n:function(){var t=i.next();return o=t.done,t},e:function(t){l=!0,s=t},f:function(){try{o||null==i.return||i.return()}finally{if(l)throw s}}}}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function n(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function i(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?n(Object(i),!0).forEach((function(e){var n,a,s,o;n=t,a=e,s=i[e],o=function(t,e){if("object"!=r(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=r(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(a),(a="symbol"==r(o)?o:String(o))in n?Object.defineProperty(n,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):n[a]=s})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):n(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}Craft.Preview=Garnish.Base.extend({elementEditor:null,formObserver:null,$shade:null,$editorContainer:null,$editor:null,$spinner:null,$statusIcon:null,$dragHandle:null,$previewWrapper:null,$previewContainer:null,$previewSkipLink:null,$bumperLink:null,$notifier:null,$iframeContainer:null,$previewHeader:null,$targetBtn:null,$targetMenu:null,$deviceTypeContainer:null,$orientationBtn:null,$refreshBtn:null,$deviceMask:null,$devicePreviewContainer:null,$iframe:null,iframeLoaded:!1,$tempInput:null,$fieldPlaceholder:null,isActive:!1,isVisible:!1,activeTarget:0,animationDuration:"slow",currentDeviceType:"desktop",deviceOrientation:null,deviceWidth:"",deviceHeight:"",deviceMaskDimensions:{phone:{width:375,height:753},tablet:{width:768,height:1110}},draftId:null,url:null,fields:null,iframeHeight:null,scrollTop:null,scrollLeft:null,dragger:null,dragStartEditorWidth:null,_updateIframeProxy:null,_editorWidth:null,_editorWidthInPx:null,init:function(t){this.elementEditor=t,this._updateIframeProxy=this.updateIframe.bind(this),this.$tempInput=$("<input/>",{type:"hidden",name:"__PREVIEW_FIELDS__",value:"1"}),this.$fieldPlaceholder=$("<div/>"),this.editorWidth=Craft.getLocalStorage("LivePreview.editorWidth",Craft.Preview.defaultEditorWidth),Craft.Preview.instances.push(this)},get editorWidth(){return this._editorWidth},get editorWidthInPx(){return this._editorWidthInPx},set editorWidth(t){var e;t>=1?(e=t,t/=Garnish.$win.width()):e=Math.round(t*Garnish.$win.width()),e<Craft.Preview.minEditorWidthInPx&&(t=(e=Craft.Preview.minEditorWidthInPx)/Garnish.$win.width()),this._editorWidth=t,this._editorWidthInPx=e},open:function(){var t=this;if(!this.isActive){if(this.isActive=!0,this.trigger("beforeOpen"),$(document.activeElement).trigger("blur"),!this.$editor){var e=Craft.t("app","Skip to {title}",{title:Craft.t("app","Top of preview")});this.$shade=$("<div/>",{class:"modal-shade dark"}).appendTo(Garnish.$bod),this.$previewWrapper=$("<div/>",{role:"dialog","aria-modal":"true","aria-labelledby":"lp-preview-heading"}).appendTo(Garnish.$bod),this.$modalLabel=$("<h2/>",{id:"lp-preview-heading",class:"visually-hidden",html:Craft.t("app","Preview")}).appendTo(this.$previewWrapper),this.$editorContainer=$("<div/>",{class:"lp-editor-container"}).appendTo(this.$previewWrapper),this.$previewContainer=$("<div/>",{class:"lp-preview-container",id:"lp-preview-container"}).appendTo(this.$previewWrapper),this.$notifier=$("<span/>",{class:"visually-hidden",role:"status"}).appendTo(this.$previewContainer);var n=$("<header/>",{class:"flex"}).appendTo(this.$editorContainer);this.$editor=$("<form/>",{class:"lp-editor"}).appendTo(this.$editorContainer),this.$dragHandle=$("<div/>",{class:"lp-draghandle"}).appendTo(this.$editorContainer);var i=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Close Preview")}).appendTo(n);if($("<div/>",{class:"flex-grow"}).appendTo(n),this.$spinner=$("<div/>",{class:"spinner hidden",title:Craft.t("app","Saving")}).appendTo(n),this.$statusIcon=$("<div/>",{class:"invisible"}).appendTo(n),this.$statusMessage=$("<span/>",{class:"visually-hidden","aria-live":"polite"}).appendTo(n),this.$previewSkipLink=$("<a/>",{class:"skip-link btn",href:"#lp-preview-container",html:e}).appendTo(n),Craft.Pro){if(this.$previewHeader=$("<header/>",{class:"lp-preview-header"}).appendTo(this.$previewContainer),this.elementEditor.settings.previewTargets.length>1){this.$targetBtn=$("<button/>",{type:"button",class:"btn menubtn",text:this.elementEditor.settings.previewTargets[0].label}).appendTo(this.$previewHeader),this.$targetMenu=$("<div/>",{class:"menu lp-target-menu"}).insertAfter(this.$targetBtn);for(var r,a=$("<ul/>",{class:"padded"}).appendTo(this.$targetMenu),s=0;s<this.elementEditor.settings.previewTargets.length;s++)r=$("<li/>").appendTo(a),$("<a/>",{data:{target:s},text:this.elementEditor.settings.previewTargets[s].label,class:0===s?"sel":null}).appendTo(r);new Garnish.MenuBtn(this.$targetBtn,{onOptionSelect:function(e){t.switchTarget($(e).data("target"))}}),$('<div class="flex-grow"/>').appendTo(this.$previewHeader)}this._buildDeviceTypeFieldset(),$('<div class="flex-grow"/>').appendTo(this.$previewHeader);var o=$('<div class="buttons"/>').appendTo(this.$previewHeader);this.$orientationBtn=$("<button/>",{type:"button",class:"btn disabled","data-icon":"rotate","aria-disabled":"true",text:Craft.t("app","Rotate"),"aria-label":Craft.t("app","Rotate")}).appendTo(o),this.addListener(this.$orientationBtn,"click","switchOrientation"),this.$refreshBtn=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Refresh"),"data-icon":"refresh"}).appendTo(o),this.addListener(this.$refreshBtn,"click",(function(){t.updateIframe(!1,!0)})),this.deviceOrientation=Craft.getLocalStorage("LivePreview.orientation")}this.$iframeContainer=$("<div/>",{class:"lp-iframe-container"}).appendTo(this.$previewContainer),this.$devicePreviewContainer=$("<div/>",{class:"lp-device-preview-container"}).appendTo(this.$iframeContainer),this.$deviceMask=$("<div/>",{class:"lp-device-mask"}).appendTo(this.$iframeContainer),this.$bumperLink=$("<a/>",{class:"skip-link btn lp-preview-container__bumper-link",html:e,href:"#lp-preview-container"}),this.$bumperLink.appendTo(this.$previewContainer),this.dragger=new Garnish.BaseDrag(this.$dragHandle,{axis:Garnish.X_AXIS,onDragStart:this._onDragStart.bind(this),onDrag:this._onDrag.bind(this),onDragStop:this._onDragStop.bind(this)}),this.addListener(i,"click","close"),this.addListener(this.$statusIcon,"click",(function(){t.elementEditor.showStatusHud(t.$statusIcon)}))}this.handleWindowResize(),this.addListener(Garnish.$win,"resize","handleWindowResize"),this.$editorContainer.css(Craft.left,-this.editorWidthInPx+"px"),this.$previewContainer.css(Craft.right,-this.getIframeWidth()),this.fields=[];var l=$("#content .field").not($("#content .field .field"));if(l.length){this.$tempInput.insertBefore(l.get(0));for(var c=0;c<l.length;c++){var h=$(l[c]),u=this._getClone(h);this.$fieldPlaceholder.insertAfter(h),h.detach(),this.$fieldPlaceholder.replaceWith(u),h.appendTo(this.$editor),this.fields.push({$field:h,$clone:u})}}this.updateIframe(),this.formObserver=new Craft.FormObserver(this.$editor,(function(){t.elementEditor.checkForm()})),this.elementEditor.on("update",this._updateIframeProxy),Craft.ElementThumbLoader.retryAll(),this.trigger("open")}},_getDeviceTypeTranslation:function(t){var e;switch(t){case"phone":e=Craft.t("app","Mobile");break;case"tablet":e=Craft.t("app","Tablet");break;default:e=Craft.t("app","Desktop")}return e},_getDeviceOrientationTranslation:function(t){return"portrait"===t?Craft.t("app","Portrait"):Craft.t("app","Landscape")},_buildDeviceTypeFieldset:function(){var t=this;this.$deviceTypeContainer=$("<section/>",{class:"btngroup lp-device-type","aria-label":Craft.t("app","Device type")}).appendTo(this.$previewHeader),$("<button/>",{type:"button",class:"btn lp-device-type-btn--desktop active",title:Craft.t("app","Desktop"),"aria-label":Craft.t("app","Desktop"),"aria-pressed":"true",data:{width:"",height:"",deviceType:"desktop"}}).appendTo(this.$deviceTypeContainer),$("<button/>",{type:"button",class:"btn lp-device-type-btn--tablet",title:Craft.t("app","Tablet"),"aria-label":Craft.t("app","Tablet"),"aria-pressed":"false",data:{width:768,height:1024,deviceType:"tablet"}}).appendTo(this.$deviceTypeContainer),$("<button/>",{type:"button",class:"btn lp-device-type-btn--phone",title:Craft.t("app","Mobile"),"aria-label":Craft.t("app","Mobile"),"aria-pressed":"false",data:{width:375,height:667,deviceType:"phone"}}).appendTo(this.$deviceTypeContainer),this.deviceBtnGroup=new Craft.Listbox(this.$deviceTypeContainer,{onChange:function(e){t.switchDeviceType(e)}})},_activeTarget:function(){return this.elementEditor.settings.previewTargets[this.activeTarget]},_autoRefresh:function(){var t=this._activeTarget();return void 0===r(t.refresh)||!!t.refresh},switchTarget:function(t){this.activeTarget=t,this.$targetBtn.text(this.elementEditor.settings.previewTargets[t].label),this.$targetMenu.find("a.sel").removeClass("sel"),this.$targetMenu.find("a").eq(t).addClass("sel"),this.updateIframe(!0),this.trigger("switchTarget",{previewTarget:this.elementEditor.settings.previewTargets[t]})},handleWindowResize:function(){this.editorWidth=this.editorWidth,this.updateWidths()},slideIn:function(){var t=this;this.isActive&&!this.isVisible&&($("html").addClass("noscroll"),this.$shade.velocity("fadeIn"),this.$editorContainer.show().velocity("stop").animateLeft(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.trigger("slideIn"),Garnish.$win.trigger("resize")})),this.$previewContainer.show().velocity("stop").animateRight(0,Garnish.getUserPreferredAnimationDuration(this.animationDuration)),this.isVisible=!0,Garnish.uiLayerManager.addLayer(this.$previewWrapper),Garnish.hideModalBackgroundLayers(),Craft.setFocusWithin(this.$previewWrapper),Craft.trapFocusWithin(this.$previewWrapper),Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){t.close()})))},close:function(){var t=this;this.isActive&&this.isVisible&&(this.trigger("beforeClose"),$("html").removeClass("noscroll"),this.removeListener(Garnish.$win,"resize"),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$tempInput.detach(),this.moveFieldsBack(),Garnish.prefersReducedMotion()?this.$shade.velocity("fadeOut"):this.$shade.delay(200).velocity("fadeOut"),this.$editorContainer.velocity("stop").animateLeft(-this.editorWidthInPx,Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){for(var e=0;e<t.fields.length;e++)t.fields[e].$newClone.remove();t.$editorContainer.hide(),t.trigger("slideOut")})),this.$previewContainer.velocity("stop").animateRight(-this.getIframeWidth(),Garnish.getUserPreferredAnimationDuration(this.animationDuration),(function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating"),t.$previewContainer.hide()})),this.formObserver.destroy(),this.formObserver=null,this.elementEditor.off("update",this._updateIframeProxy),Craft.ElementThumbLoader.retryAll(),this.elementEditor.$previewBtn&&this.elementEditor.$previewBtn.focus(),this.isActive=!1,this.isVisible=!1,this.trigger("close"))},moveFieldsBack:function(){for(var t=0;t<this.fields.length;t++){var e=this.fields[t];e.$newClone=this._getClone(e.$field),this.$fieldPlaceholder.insertAfter(e.$field),e.$field.detach(),this.$fieldPlaceholder.replaceWith(e.$newClone),e.$clone.replaceWith(e.$field)}Garnish.$win.trigger("resize"),Garnish.$doc.trigger("scroll")},getIframeWidth:function(){return Garnish.$win.width()-this.editorWidthInPx},updateWidths:function(){this.$editorContainer.css("width",this.editorWidthInPx+"px"),this.$previewContainer.width(this.getIframeWidth()),this._devicePreviewIsActive()&&this.updateDevicePreview()},_useIframeResizer:function(){return!1!==Craft.previewIframeResizerOptions},updateIframe:function(t,e){var n=this;if(!this.isActive)return!1;t=!0===t,this.draftId===(this.draftId=this.elementEditor.settings.draftId)&&this.$iframe||(e=!0);var i=this._activeTarget();void 0===e&&(e=t||this._autoRefresh()),this.trigger("beforeUpdateIframe",{previewTarget:i,resetScroll:t,refresh:e}),e?this.elementEditor.getTokenizedPreviewUrl(i.url,"x-craft-live-preview").then((function(e){var i;t?(n.scrollTop=null,n.scrollLeft=null):n.iframeLoaded&&n.$iframe&&(n._useIframeResizer()?(n.iframeHeight=n.$iframe.height(),n.scrollTop=n.$iframeContainer.scrollTop(),n.scrollLeft=n.$iframeContainer.scrollLeft()):(i=Craft.isSameHost(e))&&n.$iframe[0].contentWindow&&(n.scrollTop=$(n.$iframe[0].contentWindow.document).scrollTop(),n.scrollLeft=$(n.$iframe[0].contentWindow.document).scrollLeft())),n.iframeLoaded=!1;var r=$("<iframe/>",{class:"lp-preview",frameborder:0,src:e,title:Craft.t("app","Preview")});n.$iframe?n.$iframe.replaceWith(r):r.appendTo(n.$devicePreviewContainer),n._useIframeResizer()?(t||null===n.iframeHeight||(r.height(n.iframeHeight),n.$iframeContainer.scrollTop(n.scrollTop),n.$iframeContainer.scrollLeft(n.scrollLeft)),iFrameResize($.extend({checkOrigin:!1,scrolling:!0,onInit:function(t){n.iframeLoaded=!0,n.iframeHeight=null,n.scrollTop=null,n.scrollLeft=null,t.scrolling="no"}},Craft.previewIframeResizerOptions||{}),r[0])):r.on("load",(function(){n.iframeLoaded=!0,!t&&i&&r[0].contentWindow.scrollTo(n.scrollLeft||0,n.scrollTop||0)})),n.url=e,n.$iframe=r,n._devicePreviewIsActive()&&n.updateDevicePreview(),n.trigger("afterUpdateIframe",{previewTarget:n.elementEditor.settings.previewTargets[n.activeTarget],$iframe:n.$iframe}),n.slideIn()})):this.slideIn()},_devicePreviewIsActive:function(){return"desktop"!==this.currentDeviceType},_updateNotifier:function(){var t=this;this.$notifier.html="";var e="desktop"===this.currentDeviceType?"Previewing {type} device":"Previewing {type} device in {orientation}",n={type:this._getDeviceTypeTranslation(this.currentDeviceType)};"desktop"!==this.currentDeviceType&&(n=i(i({},n),{orientation:this._getDeviceOrientationTranslation(this.deviceOrientation)}));var r=Craft.t("app",e,n);setTimeout((function(){t.$notifier.text(r)}),200)},switchDeviceType:function(t){this.$iframeContainer.removeClass("lp-iframe-container--rotating");var e=t.data("deviceType");if(e===this.currentDeviceType)return!1;this.currentDeviceType=e,this.deviceWidth=t.data("width"),this.deviceHeight=t.data("height"),"desktop"===this.currentDeviceType?(this.$orientationBtn.addClass("disabled").attr("aria-disabled","true"),this.$iframeContainer.removeClass("lp-iframe-container--has-device-preview")):(this.$orientationBtn.removeClass("disabled").removeAttr("aria-disabled"),this.$iframeContainer.addClass("lp-iframe-container--has-device-preview")),"tablet"===this.currentDeviceType?this.$iframeContainer.addClass("lp-iframe-container--tablet"):this.$iframeContainer.removeClass("lp-iframe-container--tablet"),this._updateNotifier(),"desktop"!==this.currentDeviceType&&this.updateDevicePreview()},switchOrientation:function(){var t=this;if(!this._devicePreviewIsActive())return!1;this.deviceOrientation&&"portrait"!==this.deviceOrientation?this.deviceOrientation="portrait":this.deviceOrientation="landscape",Craft.setLocalStorage("LivePreview.orientation",this.deviceOrientation),this.$iframeContainer.addClass("lp-iframe-container--rotating"),this.updateDevicePreview(),this._updateNotifier(),setTimeout((function(){t.$iframeContainer.removeClass("lp-iframe-container--rotating")}),300)},updateDevicePreview:function(){var t=1,e=1,n=1,i=this.$previewContainer.height()-50-48,r=this.$previewContainer.width()-48,a=this.deviceMaskDimensions[this.currentDeviceType].height,s=this.deviceMaskDimensions[this.currentDeviceType].width;"landscape"===this.deviceOrientation?(r<a&&(t=r/a),i<s&&(e=i/s)):(i<a&&(t=i/a),r<s&&(e=r/s)),n=t,e<t&&(n=e);var o=-100/n/2,l="landscape"===this.deviceOrientation?"-90deg":"0deg";this.$deviceMask.css({width:this.deviceMaskDimensions[this.currentDeviceType].width+"px",height:this.deviceMaskDimensions[this.currentDeviceType].height+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%) rotate("+l+")"}),"landscape"===this.deviceOrientation?this.$devicePreviewContainer.css({width:this.deviceHeight+"px",height:this.deviceWidth+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%)",marginTop:0,marginLeft:"-"+12*n+"px"}):this.$devicePreviewContainer.css({width:this.deviceWidth+"px",height:this.deviceHeight+"px",transform:"scale("+n+") translate("+o+"%, "+o+"%)",marginTop:"-"+12*n+"px",marginLeft:0})},_getClone:function(t){var e=t.clone();return Garnish.copyInputValues(t,e),e.attr("id",""),e.find("[id]").attr("id",""),e.find("[name]").prop("disabled",!0),e},_onDragStart:function(){this.dragStartEditorWidth=this.editorWidthInPx,this.$previewContainer.addClass("dragging")},_onDrag:function(){"ltr"===Craft.orientation?this.editorWidth=this.dragStartEditorWidth+this.dragger.mouseDistX:this.editorWidth=this.dragStartEditorWidth-this.dragger.mouseDistX,this.updateWidths(),this.trigger("drag")},_onDragStop:function(){this.$previewContainer.removeClass("dragging"),Craft.setLocalStorage("LivePreview.editorWidth",this.editorWidth)},destroy:function(){var t=this;Craft.Preview.instances=Craft.Preview.instances.filter((function(e){return e!==t})),this.base()}},{defaultEditorWidth:.33,minEditorWidthInPx:320,instances:[],refresh:function(){var e,n=t(Craft.Preview.instances);try{for(n.s();!(e=n.n()).done;)e.value.updateIframe()}catch(t){n.e(t)}finally{n.f()}var i,r=t(Craft.LivePreview.instances);try{for(r.s();!(i=r.n()).done;)i.value.forceUpdateIframe()}catch(t){r.e(t)}finally{r.f()}},getActive:function(){var e,n=t(Craft.Preview.instances);try{for(n.s();!(e=n.n()).done;){var i=e.value;if(i.isActive)return i}}catch(t){n.e(t)}finally{n.f()}}})},6419:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(){"use strict";e=function(){return i};var n,i={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(n){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}i.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,e,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:n,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,e,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,e){var i=e.method,r=t.iterator[i];if(r===n)return e.delegate=null,"throw"===i&&t.iterator.return&&(e.method="return",e.arg=n,L(t,e),"throw"===e.method)||"return"!==i&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,e.arg);if("throw"===a.type)return e.method="throw",e.arg=a.arg,e.delegate=null,b;var s=a.arg;return s?s.done?(e[t.resultName]=s.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,b):s:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(e){if(e||""===e){var i=e[l];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,s=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=n,t.done=!0,t};return s.next=s}}throw new TypeError(t(e)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),i.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},i.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},i.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),i.AsyncIterator=I,i.async=function(t,e,n,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,n,r),a);return i.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),i.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},i.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(P),!t)for(var e in this)"t"===e.charAt(0)&&a.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function i(i,r){return o.type="throw",o.arg=t,e.next=i,r&&(e.method="next",e.arg=n),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,i){return this.delegate={iterator:M(t),resultName:e,nextLoc:i},"next"===this.method&&(this.arg=n),b}},i}function n(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}Craft.PreviewFileModal=Garnish.Modal.extend({assetId:null,$spinner:null,$triggerElement:null,$bumperButtonStart:null,$bumperButtonEnd:null,elementSelect:null,type:null,loaded:null,requestId:0,init:function(t,e,n){var i=this;if(void 0===n&&jQuery.isPlainObject(e)&&(n=e,e=null),n=$.extend(this.defaultSettings,n),this.$triggerElement=Garnish.getFocusedElement(),n.onHide=this._onHide.bind(this),Craft.PreviewFileModal.openInstance){var r=Craft.PreviewFileModal.openInstance;return r.assetId!==t&&(r.loadAsset(t,n.startingWidth,n.startingHeight),r.elementSelect=e),this.destroy()}Craft.PreviewFileModal.openInstance=this,this.elementSelect=e,this.$container=$('<div class="modal previewmodal loading"/>').appendTo(Garnish.$bod),this.base(this.$container,$.extend({resizable:!0},n)),this.$container&&(this.$container.velocity("stop"),this.$container.show().css("opacity",1),this.$shade.velocity("stop"),this.$shade.show().css("opacity",1),Garnish.setFocusWithin(this.$container)),this.$bumperButtonStart=Craft.ui.createButton({html:Craft.t("app","Close Preview"),class:"skip-link"}),this.addListener(this.$bumperButtonStart,"click",(function(){i.hide()})),this.$bumperButtonEnd=this.$bumperButtonStart.clone(!0),this.loadAsset(t,n.startingWidth,n.startingHeight)},_onHide:function(){return Craft.PreviewFileModal.openInstance=null,this.elementSelect?this.elementSelect.focusItem(this.elementSelect.$items.filter("[data-id=".concat(this.assetId,"]"))):this.$triggerElement&&this.$triggerElement.length&&this.$triggerElement.trigger("focus"),this.$shade.remove(),this.destroy()},_addBumperButtons:function(){this.$container.prepend(this.$bumperButtonStart).append(this.$bumperButtonEnd)},_addModalName:function(){var t="preview-heading";$("<h1/>",{class:"visually-hidden",id:t,text:Craft.t("app","Preview file")}).prependTo(this.$container),this.$container.attr("aria-labelledby",t)},selfDestruct:function(){var t=Craft.PreviewFileModal.openInstance;return t.hide(),t.$shade.remove(),t.destroy(),Craft.PreviewFileModal.openInstance=null,Craft.focalPoint.destruct(),Craft.focalPoint=null,!0},loadAsset:function(t,i,r){var a=this;this.assetId=t,this.$container.empty(),this.loaded=!1,this.desiredHeight=null,this.desiredWidth=null;var s=.66*Garnish.$win.height(),o=Math.min(s/3*4,Garnish.$win.width()-2*this.settings.minGutter);if(s=o/4*3,i&&r){var l=i/r;o=Math.min(i,Garnish.$win.width()-2*this.settings.minGutter),(o=(s=Math.min(o/l,Garnish.$win.height()-2*this.settings.minGutter))*l)>Math.min(i,Garnish.$win.width()-2*this.settings.minGutter)&&(s=(o=Math.min(i,Garnish.$win.width()-2*this.settings.minGutter))/l)}this._resizeContainer(o,s),this.$spinner=$('<div class="spinner centeralign"></div>').appendTo(this.$container);var c=this.$container.height()/2-this.$spinner.height()/2+"px",h=this.$container.width()/2-this.$spinner.width()/2+"px";this.$spinner.css({left:h,top:c,position:"absolute"}),this.requestId++;var u={assetId:t,requestId:this.requestId},d=function(){a.$container.removeClass("loading"),a.$spinner.remove(),a.loaded=!0};Craft.sendActionRequest("POST","assets/preview-file",{data:u}).then(function(){var t,i=(t=e().mark((function t(n){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(d(),n.data.requestId==a.requestId){t.next=3;break}return t.abrupt("return");case 3:if(n.data.previewHtml){t.next=8;break}return a.$container.addClass("zilch"),a.$container.append($("<p/>",{text:Craft.t("app","No preview available.")})),a._addBumperButtons(),t.abrupt("return");case 8:return a.$container.removeClass("zilch"),a.$container.attr("data-asset-id",a.assetId),a.$container.append(n.data.previewHtml),a._addBumperButtons(),a._addModalName(),t.next=15,Craft.appendHeadHtml(n.data.headHtml);case 15:return t.next=17,Craft.appendBodyHtml(n.data.bodyHtml);case 17:case"end":return t.stop()}}),t)})),function(){var e=this,i=arguments;return new Promise((function(r,a){var s=t.apply(e,i);function o(t){n(s,r,a,o,l,"next",t)}function l(t){n(s,r,a,o,l,"throw",t)}o(void 0)}))});return function(t){return i.apply(this,arguments)}}()).catch((function(t){var e=t.response;d(),Craft.cp.displayError(e.data.message),a.hide()}))},_resizeContainer:function(t,e){this.$container.css({width:t,"min-width":t,"max-width":t,height:e,"min-height":e,"max-height":e,top:(Garnish.$win.height()-e)/2,left:(Garnish.$win.width()-t)/2})}},{openInstance:null,defaultSettings:{minGutter:50,startingWidth:null,startingHeight:null},resizePreviewImage:function(){var t=Craft.PreviewFileModal.openInstance;if(t){var e=.66*Garnish.$win.height(),n=Math.min(e/3*4,Garnish.$win.width()-2*t.settings.minGutter);e=n/4*3;var i,r=t.$container.find("img");if(r.css({width:n,height:e}),t.loaded&&r.length){var a=r.data("maxwidth"),s=r.data("maxheight");i=a/s;var o=t.desiredWidth?t.desiredWidth:t.getWidth(),l=t.desiredHeight?t.desiredHeight:t.getHeight(),c=Math.min(o,a),h=Math.round(Math.min(s,c/i));h>l&&(h=l),c=Math.round(h*i),r.css({width:c,height:h}),t._resizeContainer(c,h),t.desiredWidth=c,t.desiredHeight=h}t.base(),t.loaded&&r.length&&(n=Math.round(Math.min(Math.max(r.height()*i),Garnish.$win.width()-2*t.settings.minGutter)),e=Math.round(Math.min(Math.max(n/i),Garnish.$win.height()-2*t.settings.minGutter)),(n=Math.round(e*i))>Math.min(n,Garnish.$win.width()-2*t.settings.minGutter)&&(e=(n=Math.min(n,Garnish.$win.width()-2*t.settings.minGutter))/i),t._resizeContainer(n,e),r.css({width:n,height:e}),window.imageFocalPoint&&window.imageFocalPoint.renderFocal())}}})},872:function(){Craft.ProgressBar=Garnish.Base.extend({$progressBar:null,$innerProgressBar:null,$progressBarStatus:null,_itemCount:0,_processedItemCount:0,_displaySteps:!1,init:function(t,e){e&&(this._displaySteps=!0),this.$progressBar=$('<div class="progressbar pending hidden"/>').appendTo(t),this.$innerProgressBar=$('<div class="progressbar-inner"/>').appendTo(this.$progressBar),this.$progressBarStatus=$('<div class="progressbar-status hidden" />').insertAfter(this.$progressBar),this.resetProgressBar()},resetProgressBar:function(){this.setProgressPercentage(100),this.$progressBar.addClass("pending"),this.setItemCount(1),this.setProcessedItemCount(0),this.$progressBarStatus.html(""),this._displaySteps&&this.$progressBar.addClass("has-status")},hideProgressBar:function(){this.$progressBar.addClass("hidden"),this.$progressBarStatus.addClass("hidden")},showProgressBar:function(){this.$progressBar.removeClass("hidden"),this.$progressBarStatus.removeClass("hidden")},setItemCount:function(t){this._itemCount=t},incrementItemCount:function(t){this._itemCount+=t},setProcessedItemCount:function(t){this._processedItemCount=t},incrementProcessedItemCount:function(t){this._processedItemCount+=t},updateProgressBar:function(){this._itemCount=Math.max(this._itemCount,1);var t=Math.min(100,Math.round(100*this._processedItemCount/this._itemCount));this.setProgressPercentage(t),this._displaySteps&&this.$progressBarStatus.html(this._processedItemCount+" / "+this._itemCount)},setProgressPercentage:function(t,e){0===t?this.$progressBar.addClass("pending"):(this.$progressBar.removeClass("pending"),e?this.$innerProgressBar.velocity("stop").velocity({width:t+"%"},"fast"):this.$innerProgressBar.velocity("stop").width(t+"%"))}})},1396:function(){Craft.PromptHandler=Garnish.Base.extend({modal:null,$modalContainerDiv:null,$prompt:null,$promptApplyToRemainingContainer:null,$promptApplyToRemainingCheckbox:null,$promptApplyToRemainingLabel:null,$pomptChoices:null,_prompts:[],_promptBatchCallback:$.noop,_promptBatchReturnData:[],_promptBatchNum:0,resetPrompts:function(){this._prompts=[],this._promptBatchCallback=$.noop,this._promptBatchReturnData=[],this._promptBatchNum=0},addPrompt:function(t){this._prompts.push(t)},getPromptCount:function(){return this._prompts.length},showBatchPrompts:function(t){this._promptBatchCallback=t,this._promptBatchReturnData=[],this._promptBatchNum=0,this._showNextPromptInBatch()},_showNextPromptInBatch:function(){var t=this._prompts[this._promptBatchNum].prompt,e=this._prompts.length-(this._promptBatchNum+1);this._showPrompt(t.message,t.choices,this._handleBatchPromptSelection.bind(this),e,t.modalSettings)},_handleBatchPromptSelection:function(t,e){var n=this._prompts[this._promptBatchNum],i=this._prompts.length-(this._promptBatchNum+1),r=$.extend(n,{choice:t});this._promptBatchReturnData.push(r),i?(this._promptBatchNum++,e?this._handleBatchPromptSelection(t,!0):this._showNextPromptInBatch()):"function"==typeof this._promptBatchCallback&&this._promptBatchCallback(this._promptBatchReturnData)},_showPrompt:function(t,e,n,i,r){this._promptCallback=n,null===this.modal&&(this.modal=new Garnish.Modal(Object.assign({closeOtherModals:!1},r))),null===this.$modalContainerDiv&&(this.$modalContainerDiv=$('<div class="modal fitted prompt-modal"></div>').addClass().appendTo(Garnish.$bod)),this.$prompt=$('<div class="body"></div>').appendTo(this.$modalContainerDiv.empty()),this.$promptMessage=$('<p class="prompt-msg"/>').appendTo(this.$prompt),this.$promptChoices=$('<div class="options"></div>').appendTo(this.$prompt),this.$promptApplyToRemainingContainer=$('<label class="assets-applytoremaining"/>').appendTo(this.$prompt).hide(),this.$promptApplyToRemainingCheckbox=$('<input type="checkbox"/>').appendTo(this.$promptApplyToRemainingContainer),this.$promptApplyToRemainingLabel=$("<span/>").appendTo(this.$promptApplyToRemainingContainer),this.$promptButtons=$('<div class="buttons right"/>').appendTo(this.$prompt),this.modal.setContainer(this.$modalContainerDiv),this.$promptMessage.html(t);for(var a=$("<button/>",{type:"button",class:"btn",text:Craft.t("app","Cancel")}).appendTo(this.$promptButtons),s=$("<button/>",{type:"submit",class:"btn submit disabled",text:Craft.t("app","OK")}).appendTo(this.$promptButtons),o=0;o<e.length;o++){var l=$('<div><label><input type="radio" name="promptAction" value="'+e[o].value+'"/> '+e[o].title+"</label></div>").appendTo(this.$promptChoices).find("input");this.addListener(l,"click",(function(){s.removeClass("disabled")}))}this.addListener(s,"activate",(function(t){var e=$(t.currentTarget).parents(".modal").find("input[name=promptAction]:checked").val(),n=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice(e,n)})),this.addListener(a,"activate",(function(){var t=this.$promptApplyToRemainingCheckbox.prop("checked");this._selectPromptChoice("cancel",t)})),i&&(this.$promptApplyToRemainingContainer.show(),this.$promptApplyToRemainingLabel.html(" "+Craft.t("app","Apply this to the {number} remaining conflicts?",{number:i}))),this.modal.show(),this.modal.removeListener(Garnish.Modal.$shade,"click"),this.addListener(Garnish.Modal.$shade,"click","_cancelPrompt")},_selectPromptChoice:function(t,e){var n=this;this.$prompt.fadeOut("fast",(function(){n.modal.hide(),n._promptCallback(t,e)}))},_cancelPrompt:function(){this._selectPromptChoice("cancel",!0)}})},8960:function(){Craft.Queue=Garnish.Base.extend({running:!1,paused:!1,pausedForVisibility:!1,jobs:null,get length(){return this.jobs.length},get isPaused(){return this.paused||this.pausedForVisibility},init:function(){var t=this;this.jobs=[],Garnish.$doc.on("visibilitychange",(function(){t.pausedForVisibility&&Craft.isVisible()&&(t.pausedForVisibility=!1,t._resume())}))},push:function(t){return this._add(t,"push")},unshift:function(t){return this._add(t,"unshift")},pause:function(){this.paused||(this.paused=!0,this.pausedForVisibility||this.trigger("pause"))},resume:function(){this.paused&&(this.paused=!1,this._resume())},_add:function(t,e){var n=this;return new Promise((function(i,r){n.jobs[e]((function(){return new Promise((function(e,n){t().then((function(t){i(t),e()})).catch((function(t){r(t),n()}))}))})),n.running||(n.trigger("beforeRun"),n.running=!0,n._exec())}))},clear:function(){this.jobs.length=0},_exec:function(){var t=this;if(!this.jobs.length)return this.running=!1,void this.trigger("afterRun");this.pausedForVisibility||Craft.isVisible()||(this.pausedForVisibility=!0,this.paused||this.trigger("pause")),this.paused||this.pausedForVisibility||(this.trigger("beforeExec"),this.jobs.shift()().finally((function(){t.trigger("afterExec"),t._exec()})))},_resume:function(){this.isPaused||(this.trigger("resume"),this._exec())}}),Craft.queue=new Craft.Queue},4070:function(){!function(t){Craft.SlidePicker=Garnish.Base.extend({min:null,max:null,totalSteps:null,value:null,label:null,describedBy:null,$container:null,$buttons:null,init:function(e,n){var i=this;this.setSettings(n,Craft.SlidePicker.defaults),this.$container=t("<div/>",{class:"slide-picker",role:"slider",tabindex:0}),this.refresh(),this.setValue(e,!1),this.addListener(this.$container,"keydown",(function(t){switch(t.keyCode){case Garnish.UP_KEY:i.setValue(i.value+i.settings.step),t.preventDefault();break;case Garnish.DOWN_KEY:i.setValue(i.value-i.settings.step),t.preventDefault();break;case Garnish.RIGHT_KEY:"ltr"===Craft.orientation?i.setValue(i.value+i.settings.step):i.setValue(i.value-i.settings.step),t.preventDefault();break;case Garnish.LEFT_KEY:"ltr"===Craft.orientation?i.setValue(i.value-i.settings.step):i.setValue(i.value+i.settings.step),t.preventDefault();break;case Garnish.HOME_KEY:i.setValue(i.min),t.preventDefault();break;case Garnish.END_KEY:i.setValue(i.max),t.preventDefault()}}))},refresh:function(){var e=this;if(this.min=this._min(),this.max=this._max(),this.totalSteps=(this.max-this.min)/this.settings.step,this.label=this.settings.label,this.describedBy=this.settings.describedBy,!Number.isInteger(this.totalSteps))throw"Invalid SlidePicker config";this.$buttons&&this.$buttons.remove(),this.$container.attr("aria-valuemin",this.min),this.$container.attr("aria-valuemax",this.max),this.label&&this.$container.attr("aria-label",this.label),this.describedBy&&this.$container.attr("aria-describedby",this.describedBy),this.$buttons=t();for(var n=this.min;n<=this.max;n+=this.settings.step)this.$buttons=this.$buttons.add(t("<a/>",{title:this.settings.valueLabel(n),data:{value:n}}));if(this.$buttons.appendTo(this.$container),null!==this.value){var i=this.value;this.value=null,this.setValue(i,!1)}this.addListener(this.$buttons,"mouseover",(function(n){e.$buttons.removeClass("active-hover last-active-hover"),t(n.currentTarget).addClass("active-hover last-active-hover").prevAll().addClass("active-hover")})),this.addListener(this.$buttons,"mouseout",(function(){e.$buttons.removeClass("active-hover")})),this.addListener(this.$buttons,"click",(function(n){e.setValue(t.data(n.currentTarget,"value")),n.stopPropagation(),e.$container.focus()}))},setValue:function(t,e){if(t=Math.max(Math.min(t,this.max),this.min),this.value!==(this.value=t)){this.$container.attr({"aria-valuenow":this.value,"aria-valuetext":this.settings.valueLabel(this.value)}),this.$buttons.removeClass("last-active active");var n=this.$buttons.eq((this.value-this.min)/this.settings.step);n.add(n.prevAll()).addClass("active"),n.addClass("last-active"),!1!==e&&this.settings.onChange(t)}},_min:function(){return"function"==typeof this.settings.min?this.settings.min():this.settings.min},_max:function(){return"function"==typeof this.settings.max?this.settings.max():this.settings.max}},{defaults:{min:0,max:100,step:10,valueLabel:null,onChange:t.noop}})}(jQuery)},5763:function(){Craft.SlideRuleInput=Garnish.Base.extend({$container:null,$options:null,$selectedOption:null,$input:null,value:null,startPositionX:null,init:function(t,e){var n=this;this.setSettings(e,Craft.SlideRuleInput.defaultSettings),this.value=0,this.graduationsMin=-70,this.graduationsMax=70,this.slideMin=-45,this.slideMax=45,this.$container=$("#"+t),this.$overlay=$('<div class="overlay"></div>').appendTo(this.$container),this.$cursor=$('<div class="cursor"></div>').appendTo(this.$container),this.$graduations=$('<div class="graduations"></div>').appendTo(this.$container),this.$graduationsUl=$("<ul></ul>").appendTo(this.$graduations),this.$container.attr({role:"slider",tabindex:"0","aria-valuemin":this.slideMin,"aria-valuemax":this.slideMax,"aria-valuenow":"0","aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:0})});for(var i=this.graduationsMin;i<=this.graduationsMax;i++){var r=$('<li class="graduation" data-graduation="'+i+'"><div class="label">'+i+"</div></li>").appendTo(this.$graduationsUl);i%5==0&&r.addClass("main-graduation"),0===i&&r.addClass("selected")}this.$options=this.$container.find(".graduation"),this.addListener(this.$container,"resize",this._handleResize.bind(this)),this.addListener(this.$container,"tapstart",this._handleTapStart.bind(this)),this.addListener(Garnish.$bod,"tapmove",this._handleTapMove.bind(this)),this.addListener(Garnish.$bod,"tapend",this._handleTapEnd.bind(this)),this.addListener(this.$container,"keydown",this._handleKeypress.bind(this)),setTimeout((function(){n.graduationsCalculatedWidth=10*(n.$options.length-1),n.$graduationsUl.css("left",-n.graduationsCalculatedWidth/2+n.$container.width()/2)}),50)},_handleResize:function(){var t=this.valueToPosition(this.value);this.$graduationsUl.css("left",t)},_handleKeypress:function(t){var e=parseInt(this.$container.attr("aria-valuenow"),10);switch(t.keyCode){case Garnish.UP_KEY:case Garnish.RIGHT_KEY:this.setValue(e+1);break;case Garnish.DOWN_KEY:case Garnish.LEFT_KEY:this.setValue(e-1);break;case Garnish.PAGE_UP_KEY:this.setValue(e+10);break;case Garnish.PAGE_DOWN_KEY:this.setValue(e-10);break;case Garnish.HOME_KEY:this.setValue(this.slideMin);break;case Garnish.END_KEY:this.setValue(this.slideMax)}this.onChange()},_handleTapStart:function(t,e){t.preventDefault(),this.startPositionX=e.position.x,this.startLeft=this.$graduationsUl.position().left,this.dragging=!0,this.onStart()},_handleTapMove:function(t,e){if(this.dragging){t.preventDefault();var n=this.startPositionX-e.position.x,i=this.startLeft-n,r=this.positionToValue(i);this.setValue(r),this.onChange()}},setValue:function(t){var e=this.valueToPosition(t);t<this.slideMin?(t=this.slideMin,e=this.valueToPosition(t)):t>this.slideMax&&(t=this.slideMax,e=this.valueToPosition(t)),this.$graduationsUl.css("left",e),t>=this.slideMin&&t<=this.slideMax&&(this.$options.removeClass("selected"),$.each(this.$options,(function(e,n){$(n).data("graduation")>0&&$(n).data("graduation")<=t&&$(n).addClass("selected"),$(n).data("graduation")<0&&$(n).data("graduation")>=t&&$(n).addClass("selected"),0==$(n).data("graduation")&&$(n).addClass("selected")}))),this.$container.attr({"aria-valuenow":t,"aria-valuetext":Craft.t("app","{num, number} {num, plural, =1{degree} other{degrees}}",{num:parseInt(t,10)})}),this.value=t},_handleTapEnd:function(t){this.dragging&&(t.preventDefault(),this.dragging=!1,this.onEnd())},positionToValue:function(t){var e=-1*this.graduationsMin,n=-1*(this.graduationsMin-this.graduationsMax);return(this.$graduations.width()/2+-1*t)/this.graduationsCalculatedWidth*n-e},valueToPosition:function(t){var e=-1*this.graduationsMin,n=-1*(this.graduationsMin-this.graduationsMax);return-((t+e)*this.graduationsCalculatedWidth/n-this.$graduations.width()/2)},onStart:function(){"function"==typeof this.settings.onChange&&this.settings.onStart(this)},onChange:function(){"function"==typeof this.settings.onChange&&this.settings.onChange(this)},onEnd:function(){"function"==typeof this.settings.onChange&&this.settings.onEnd(this)},defaultSettings:{onStart:$.noop,onChange:$.noop,onEnd:$.noop}})},5759:function(){!function(t){Craft.Slideout=Garnish.Base.extend({$outerContainer:null,$container:null,$shade:null,isOpen:!1,useMobileStyles:null,init:function(e,n){this.setSettings(n,Craft.Slideout.defaults),this.$outerContainer=t("<div/>",{class:"slideout-container hidden"}),this.$container=t("<".concat(this.settings.containerElement,"/>"),this.settings.containerAttributes).attr("data-slideout","").addClass("slideout").append(e).data("slideout",this).appendTo(this.$outerContainer),this.$container.attr("id")&&(Craft.Slideout.instances[this.$container.attr("id")]=this),Garnish.addModalAttributes(this.$outerContainer),Craft.trapFocusWithin(this.$container),this.settings.autoOpen&&this.open()},open:function(){var e=this;if(!this.isOpen){this.setTriggerElement(document.activeElement),this._cancelTransitionListeners();var n=Craft.Preview.getActive()||Craft.LivePreview.getActive();if(this.useMobileStyles=n||Craft.useMobileStyles(),this.$outerContainer.removeClass("so-mobile so-lp"),this.$container.removeClass("so-mobile so-lp"),n?(this.$outerContainer.addClass("so-lp"),this.$container.addClass("so-lp")):this.useMobileStyles&&this.$container.addClass("so-mobile"),n||!this.useMobileStyles?(this.$shade||(this.$shade=t('<div class="slideout-shade"/>'),this.settings.closeOnShadeClick&&this.addListener(this.$shade,"click",(function(t){t.stopPropagation(),e.close()}))),this.$shade.appendTo(Garnish.$bod).show()):this.$shade&&(this.$shade.remove(),delete this.$shade),this.$outerContainer.appendTo(Garnish.$bod).removeClass("hidden"),n){this.updateWidthsForPreviewPane(n);var i=function(){e.isOpen&&e.updateWidthsForPreviewPane(n)};n.on("drag",i),n.on("beforeClose",(function(){n.off("drag",i)}))}this.useMobileStyles?this.$container.css("top","100vh").css(Garnish.ltr?"left":"right",""):this.$container.css("top","").css(Garnish.ltr?"left":"right","100vw"),this.$container.one("transitionend.slideout",(function(){Craft.setFocusWithin(e.$container)})),this.$shade&&(this.$shade[0].offsetWidth,this.$shade.addClass("so-visible")),this.$container[0].offsetWidth,Craft.Slideout.addPanel(this),this.enable(),Garnish.uiLayerManager.addLayer(this.$outerContainer),Garnish.hideModalBackgroundLayers(),this.settings.closeOnEsc&&Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY,(function(){e.close()})),this.isOpen=!0,this.trigger("open")}},updateWidthsForPreviewPane:function(t){var e=t.$editorContainer.width()-1;this.$shade&&this.$shade.width(e),this.$outerContainer.css("width","calc(".concat(e,"px - var(--m) * 2)"))},setTriggerElement:function(t){this.settings.triggerElement=t},close:function(){var t=this;this.isOpen&&(this.trigger("beforeClose"),this.disable(),this.isOpen=!1,this._cancelTransitionListeners(),this.$shade&&this.$shade.removeClass("so-visible").one("transitionend.slideout",(function(){t.$shade.hide()})),Craft.Slideout.removePanel(this),Garnish.uiLayerManager.removeLayer(),Garnish.resetModalBackgroundLayerVisibility(),this.$container.one("transitionend.slideout",(function(){t.$outerContainer.addClass("hidden"),t.trigger("close")})),this.settings.triggerElement&&this.settings.triggerElement.focus())},_cancelTransitionListeners:function(){this.$shade&&this.$shade.off("transitionend.slideout"),this.$container.off("transitionend.slideout")},destroy:function(){var t=this;this.$shade&&(this.$shade.remove(),this.$shade=null),this.$outerContainer.remove(),this.$outerContainer=null,this.$container=null,Craft.Slideout.instances=Craft.filterObject(Craft.Slideout.instances,(function(e){return e!==t})),this.base()}},{defaults:{containerElement:"div",containerAttributes:{},autoOpen:!0,closeOnEsc:!0,closeOnShadeClick:!0,triggerElement:null},instances:{},openPanels:[],addPanel:function(t){Craft.Slideout.openPanels.unshift(t),t.useMobileStyles?t.$container.css("top",0):Craft.Slideout.updateStyles()},removePanel:function(t){Craft.Slideout.openPanels=Craft.Slideout.openPanels.filter((function(e){return e!==t})),t.useMobileStyles?t.$container.css("top","100vh"):(t.$container.css(Garnish.ltr?"left":"right","100vw"),Craft.Slideout.updateStyles())},updateStyles:function(){var t=Craft.Slideout.openPanels.length;Craft.Slideout.openPanels.forEach((function(e,n){e.$container.css(Garnish.ltr?"left":"right","".concat((t-n)/t*45,"vw"))})),0!==t?Garnish.$bod.addClass("no-scroll"):Garnish.$bod.removeClass("no-scroll")}})}(jQuery)},5185:function(){Craft.SlugGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).replace(/['"‘’“”\[\]\(\)\{\}:]/g,""),Craft.limitAutoSlugsToAscii&&(t=Craft.asciiString(t,this.settings.charMap)),Craft.allowUppercaseInSlug||(t=t.toLowerCase());var e=Craft.filterArray(XRegExp.matchChain(t,[XRegExp("[\\p{L}\\p{N}\\p{M}]+")]));return e.length?e.join(Craft.slugWordSeparator):""}})},8030:function(){Craft.Structure=Garnish.Base.extend({id:null,$container:null,state:null,structureDrag:null,init:function(t,e,n){this.id=t,this.$container=$(e),this.setSettings(n,Craft.Structure.defaults),this.$container.data("structure")&&(console.warn("Double-instantiating a structure on an element"),this.$container.data("structure").destroy()),this.$container.data("structure",this),this.state={},this.settings.storageKey&&$.extend(this.state,Craft.getLocalStorage(this.settings.storageKey,{})),void 0===this.state.collapsedElementIds&&(this.state.collapsedElementIds=[]);for(var i=this.$container.find("ul").prev(".row"),r=0;r<i.length;r++){var a=$(i[r]),s=a.parent(),o=$('<div class="toggle" title="'+Craft.t("app","Show/hide children")+'"/>').prependTo(a);-1!==$.inArray(a.children(".element").data("id"),this.state.collapsedElementIds)&&s.addClass("collapsed"),this.initToggle(o)}this.settings.sortable&&(this.structureDrag=new Craft.StructureDrag(this,this.settings.maxLevels)),this.settings.newChildUrl&&this.initNewChildMenus(this.$container.find(".add"))},initToggle:function(t){var e=this;t.on("click",(function(t){var n=$(t.currentTarget).closest("li"),i=n.children(".row").find(".element:first").data("id"),r=$.inArray(i,e.state.collapsedElementIds);n.hasClass("collapsed")?(n.removeClass("collapsed"),-1!==r&&e.state.collapsedElementIds.splice(r,1)):(n.addClass("collapsed"),-1===r&&e.state.collapsedElementIds.push(i)),e.settings.storageKey&&Craft.setLocalStorage(e.settings.storageKey,e.state)}))},initNewChildMenus:function(t){this.addListener(t,"click","onNewChildMenuClick")},onNewChildMenuClick:function(t){var e=$(t.currentTarget);if(!e.data("menubtn")){var n=e.parent().children(".element").data("id"),i=Craft.getUrl(this.settings.newChildUrl,"parentId="+n);$('<div class="menu"><ul><li><a href="'+i+'">'+Craft.t("app","New child")+"</a></li></ul></div>").insertAfter(e),new Garnish.MenuBtn(e).showMenu()}},getIndent:function(t){return Craft.Structure.baseIndent+(t-1)*Craft.Structure.nestedIndent},addElement:function(t){var e=$('<li data-level="1"/>').appendTo(this.$container),n=$('<div class="row" style="margin-'+Craft.left+": -"+Craft.Structure.baseIndent+"px; padding-"+Craft.left+": "+Craft.Structure.baseIndent+'px;">').appendTo(e);if(n.append(t),this.settings.sortable&&(n.append('<a class="move icon" title="'+Craft.t("app","Move")+'"></a>'),this.structureDrag.addItems(e)),this.settings.newChildUrl){var i=$('<a class="add icon" title="'+Craft.t("app","New child")+'"></a>').appendTo(n);this.initNewChildMenus(i)}n.css("margin-bottom",-30),n.velocity({"margin-bottom":0},"fast")},removeElement:function(t){var e,n=this,i=t.parent().parent();this.settings.sortable&&this.structureDrag.removeItems(i),i.siblings().length||(e=i.parent()),i.css("visibility","hidden").velocity({marginBottom:-i.height()},"fast",(function(){i.remove(),void 0!==e&&n._removeUl(e)}))},_removeUl:function(t){t.siblings(".row").children(".toggle").remove(),t.remove()},destroy:function(){this.$container.removeData("structure"),this.base()}},{baseIndent:8,nestedIndent:35,defaults:{storageKey:null,sortable:!1,newChildUrl:null,maxLevels:null}})},3096:function(){Craft.StructureDrag=Garnish.Drag.extend({structure:null,maxLevels:null,draggeeLevel:null,$helperLi:null,$targets:null,draggeeHeight:null,init:function(t,e){this.structure=t,this.maxLevels=e,this.$insertion=$('<li class="draginsertion"/>');var n=this.structure.$container.find("li");this.base(n,{handle:".element:first, .move:first",helper:this.getHelper.bind(this)})},getHelper:function(t){this.$helperLi=t;var e=$('<ul class="structure draghelper"/>').append(t);return t.css("padding-"+Craft.left,this.$draggee.css("padding-"+Craft.left)),t.find(".move").removeAttr("title"),e},onDragStart:function(){var t=this;this.$targets=$(),this.findTargets(this.structure.$container),this.draggeeLevel=0;var e=this.$draggee;do{this.draggeeLevel++,e=e.find("> ul > li")}while(e.length);this.draggeeHeight=this.$draggee.height(),this.$draggee.velocity({height:0},"fast",(function(){t.$draggee.addClass("hidden")})),this.base(),this.addListener(Garnish.$doc,"keydown",(function(t){t.keyCode===Garnish.ESC_KEY&&this.cancelDrag()}))},findTargets:function(t){for(var e=t.children().not(this.$draggee),n=0;n<e.length;n++){var i=$(e[n]);this.$targets=this.$targets.add(i.children(".row")),i.hasClass("collapsed")||this.findTargets(i.children("ul"))}},onDrag:function(){for(this._.$closestTarget&&(this._.$closestTarget.removeClass("draghover"),this.$insertion.remove()),this._.$closestTarget=null,this._.closestTargetPos=null,this._.closestTargetYDiff=null,this._.closestTargetOffset=null,this._.closestTargetHeight=null,this._.i=0;this._.i<this.$targets.length&&(this._.$target=$(this.$targets[this._.i]),this._.targetOffset=this._.$target.offset(),this._.targetHeight=this._.$target.outerHeight(),this._.targetYMidpoint=this._.targetOffset.top+this._.targetHeight/2,this._.targetYDiff=Math.abs(this.mouseY-this._.targetYMidpoint),0===this._.i||this.mouseY>=this._.targetOffset.top+5&&this._.targetYDiff<this._.closestTargetYDiff);this._.i++)this._.$closestTarget=this._.$target,this._.closestTargetPos=this._.i,this._.closestTargetYDiff=this._.targetYDiff,this._.closestTargetOffset=this._.targetOffset,this._.closestTargetHeight=this._.targetHeight;if(this._.$closestTarget)if(0===this._.closestTargetPos&&this.mouseY<this._.closestTargetOffset.top+5)this.$insertion.prependTo(this.structure.$container);else if(this._.$closestTargetLi=this._.$closestTarget.parent(),this._.closestTargetLevel=this._.$closestTargetLi.data("level"),this._.closestTargetPos<this.$targets.length-1?(this._.$nextTargetLi=$(this.$targets[this._.closestTargetPos+1]).parent(),this._.nextTargetLevel=this._.$nextTargetLi.data("level")):(this._.$nextTargetLi=null,this._.nextTargetLevel=null),this._.hoveringBetweenRows=this.mouseY>=this._.closestTargetOffset.top+this._.closestTargetHeight-5,this._.$nextTargetLi&&this._.nextTargetLevel==this._.closestTargetLevel)this._.hoveringBetweenRows?(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel-1)&&this.$insertion.insertAfter(this._.$closestTargetLi):(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover");else if(this._.$nextTargetLi&&this._.nextTargetLevel>this._.closestTargetLevel)(!this.maxLevels||this.maxLevels>=this._.nextTargetLevel+this.draggeeLevel-1)&&(this._.hoveringBetweenRows?this.$insertion.insertBefore(this._.$nextTargetLi):(this._.$closestTarget.addClass("draghover"),this.$insertion.appendTo(this._.$closestTargetLi.children("ul"))));else if(this._.hoveringBetweenRows){for(this._.draggeeX=this.mouseX-this.targetItemMouseDiffX,"rtl"===Craft.orientation&&(this._.draggeeX+=this.$helperLi.width()),this._.$parentLis=this._.$closestTarget.parentsUntil(this.structure.$container,"li"),this._.$closestParentLi=null,this._.closestParentLiXDiff=null,this._.closestParentLevel=null,this._.i=0;this._.i<this._.$parentLis.length;this._.i++)this._.$parentLi=$(this._.$parentLis[this._.i]),this._.parentLiX=this._.$parentLi.offset().left,"rtl"===Craft.orientation&&(this._.parentLiX+=this._.$parentLi.width()),this._.parentLiXDiff=Math.abs(this._.parentLiX-this._.draggeeX),this._.parentLevel=this._.$parentLi.data("level"),(!this.maxLevels||this.maxLevels>=this._.parentLevel+this.draggeeLevel-1)&&(!this._.$closestParentLi||this._.parentLiXDiff<this._.closestParentLiXDiff&&(!this._.$nextTargetLi||this._.parentLevel>=this._.nextTargetLevel))&&(this._.$closestParentLi=this._.$parentLi,this._.closestParentLiXDiff=this._.parentLiXDiff,this._.closestParentLevel=this._.parentLevel);this._.$closestParentLi&&this.$insertion.insertAfter(this._.$closestParentLi)}else(!this.maxLevels||this.maxLevels>=this._.closestTargetLevel+this.draggeeLevel)&&this._.$closestTarget.addClass("draghover")},cancelDrag:function(){this.$insertion.remove(),this._.$closestTarget&&this._.$closestTarget.removeClass("draghover"),this.onMouseUp()},onDragStop:function(){var t=this;if(this._.$closestTarget&&(this.$insertion.parent().length||this._.$closestTarget.hasClass("draghover"))){var e,n;if(this.$draggee.siblings().length||(e=this.$draggee.parent()),this.$insertion.parent().length){var i=this.$insertion.next().add(this.$insertion.prev());-1===$.inArray(this.$draggee[0],i)?(this.$insertion.replaceWith(this.$draggee),n=!0):(this.$insertion.remove(),n=!1)}else{var r=this._.$closestTargetLi.children("ul");if(e&&r.length&&r[0]===e[0])n=!1;else{if(r.length)this._.$closestTargetLi.hasClass("collapsed")&&this._.$closestTarget.children(".toggle").trigger("click");else{var a=$('<div class="toggle" title="'+Craft.t("app","Show/hide children")+'"/>').prependTo(this._.$closestTarget);this.structure.initToggle(a),r=$("<ul>").appendTo(this._.$closestTargetLi)}this.$draggee.appendTo(r),n=!0}}if(this._.$closestTarget.removeClass("draghover"),n){e&&this.structure._removeUl(e);var s,o=this.$draggee.parentsUntil(this.structure.$container,"li").length+1;o!=this.$draggee.data("level")&&(1==this.$draggee.data("level")?((s={})["padding-"+Craft.left]=38,this.$helperLi.velocity(s,"fast")):1==o&&((s={})["padding-"+Craft.left]=Craft.Structure.baseIndent,this.$helperLi.velocity(s,"fast")),this.setLevel(this.$draggee,o));var l=this.$draggee.children(".row").children(".element"),c={structureId:this.structure.id,elementId:l.data("id"),siteId:l.data("site-id"),prevId:this.$draggee.prev().children(".row").children(".element").data("id"),parentId:this.$draggee.parent("ul").parent("li").children(".row").children(".element").data("id")};Craft.sendActionRequest("POST","structures/move-element",{data:c}).then((function(t){Craft.cp.displaySuccess(Craft.t("app","New order saved."))}))}}this.$draggee.velocity("stop").removeClass("hidden").velocity({height:this.draggeeHeight},"fast",(function(){t.$draggee.css("height","auto")})),this.returnHelpersToDraggees(),this.base()},setLevel:function(t,e){t.data("level",e);var n=this.structure.getIndent(e),i={};i["margin-"+Craft.left]="-"+n+"px",i["padding-"+Craft.left]=n+"px",this.$draggee.children(".row").css(i);for(var r=t.children("ul").children(),a=0;a<r.length;a++)this.setLevel($(r[a]),e+1)}})},53:function(){function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}function e(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||function(t,e){if(t){if("string"==typeof t)return n(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?n(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function i(){"use strict";i=function(){return n};var e,n={},r=Object.prototype,a=r.hasOwnProperty,s=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},l=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",h=o.toStringTag||"@@toStringTag";function u(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(e){u=function(t,e,n){return t[e]=n}}function d(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),o=new A(i||[]);return s(a,"_invoke",{value:E(t,n,o)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}n.wrap=d;var p="suspendedStart",g="suspendedYield",m="executing",v="completed",b={};function y(){}function C(){}function $(){}var w={};u(w,l,(function(){return this}));var _=Object.getPrototypeOf,S=_&&_(_(M([])));S&&S!==r&&a.call(S,l)&&(w=S);var x=$.prototype=y.prototype=Object.create(w);function T(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function I(e,n){function i(r,s,o,l){var c=f(e[r],e,s);if("throw"!==c.type){var h=c.arg,u=h.value;return u&&"object"==t(u)&&a.call(u,"__await")?n.resolve(u.__await).then((function(t){i("next",t,o,l)}),(function(t){i("throw",t,o,l)})):n.resolve(u).then((function(t){h.value=t,o(h)}),(function(t){return i("throw",t,o,l)}))}l(c.arg)}var r;s(this,"_invoke",{value:function(t,e){function a(){return new n((function(n,r){i(t,e,n,r)}))}return r=r?r.then(a,a):a()}})}function E(t,n,i){var r=p;return function(a,s){if(r===m)throw new Error("Generator is already running");if(r===v){if("throw"===a)throw s;return{value:e,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=L(o,i);if(l){if(l===b)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=m;var c=f(t,n,i);if("normal"===c.type){if(r=i.done?v:g,c.arg===b)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=v,i.method="throw",i.arg=c.arg)}}}function L(t,n){var i=n.method,r=t.iterator[i];if(r===e)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),b;var a=f(r,t.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var s=a.arg;return s?s.done?(n[t.resultName]=s.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,b):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function k(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(k,this),this.reset(!0)}function M(n){if(n||""===n){var i=n[l];if(i)return i.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,s=function t(){for(;++r<n.length;)if(a.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=e,t.done=!0,t};return s.next=s}}throw new TypeError(t(n)+" is not iterable")}return C.prototype=$,s(x,"constructor",{value:$,configurable:!0}),s($,"constructor",{value:C,configurable:!0}),C.displayName=u($,h,"GeneratorFunction"),n.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===C||"GeneratorFunction"===(e.displayName||e.name))},n.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,$):(t.__proto__=$,u(t,h,"GeneratorFunction")),t.prototype=Object.create(x),t},n.awrap=function(t){return{__await:t}},T(I.prototype),u(I.prototype,c,(function(){return this})),n.AsyncIterator=I,n.async=function(t,e,i,r,a){void 0===a&&(a=Promise);var s=new I(d(t,e,i,r),a);return n.isGeneratorFunction(e)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},T(x),u(x,h,"Generator"),u(x,l,(function(){return this})),u(x,"toString",(function(){return"[object Generator]"})),n.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},n.values=M,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(P),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function i(i,r){return o.type="throw",o.arg=t,n.next=i,r&&(n.method="next",n.arg=e),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var s=this.tryEntries[r],o=s.completion;if("root"===s.tryLoc)return i("end");if(s.tryLoc<=this.prev){var l=a.call(s,"catchLoc"),c=a.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return i(s.catchLoc,!0);if(this.prev<s.finallyLoc)return i(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return i(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return i(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}r&&("break"===t||"continue"===t)&&r.tryLoc<=e&&e<=r.finallyLoc&&(r=null);var s=r?r.completion:{};return s.type=t,s.arg=e,r?(this.method="next",this.next=r.finallyLoc,b):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),P(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;P(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,i){return this.delegate={iterator:M(t),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=e),b}},n}function r(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var s=t.apply(e,n);function o(t){r(s,i,a,o,l,"next",t)}function l(t){r(s,i,a,o,l,"throw",t)}o(void 0)}))}}var s;Craft.TableElementIndexView=Craft.BaseElementIndexView.extend({$table:null,$tableCaption:null,$selectedSortHeader:null,$statusMessage:null,$editBtn:null,$saveBtn:null,$cancelBtn:null,tableSort:null,_totalVisiblePostStructureTableDraggee:null,_morePendingPostStructureTableDraggee:!1,_broadcastListener:null,initialSerializedValue:null,getElementContainer:function(){return this.$table=this.$container.find("table:first"),this.$table.children("tbody:first")},afterInit:function(){var t=this;this.$tableCaption=this.$table.find("caption"),this.initTableHeaders(),this.createScrollbar(),(this.settings.sortable||this.elementIndex.isAdministrative&&"structure"===this.elementIndex.viewMode&&Garnish.hasAttr(this.$table,"data-structure-id"))&&!this.elementIndex.inlineEditing&&(this.tableSort=new Craft.ElementTableSorter(this,this.getAllElements(),{structureId:this.$table.data("structure-id"),maxLevels:this.$table.attr("data-max-levels"),onSortChange:function(){t.settings.onSortChange(t.tableSort.$draggee)}})),"structure"!==this.elementIndex.viewMode||this.elementIndex.inlineEditing||this.addListener(this.$elementContainer,"click",(function(t){var e=$(t.target);e.hasClass("toggle")&&!1===this._collapseElement(e)&&this._expandElement(e)})),this.elementIndex.isAdministrative&&!1!==this.elementIndex.settings.inlineEditable&&this.$elementContainer.has("> tr[data-id] > th .element[data-editable]")&&this.initForInlineEditing(),Craft.messageReceiver&&(this._broadcastListener=function(e){if("saveElement"===e.data.event){var n=t.$table.find('> tbody > tr[data-id="'.concat(e.data.id,'"]'));if(n.length){var i={elementType:t.elementIndex.elementType,source:t.elementIndex.sourceKey,id:e.data.id,siteId:t.elementIndex.siteId};Craft.sendActionRequest("POST","element-indexes/element-table-html",{data:i}).then((function(t){for(var e=t.data,i=0;i<n.length;i++){var r=n.eq(i);for(var a in r.find("> th[data-titlecell] .element").replaceWith(e.elementHtml),e.attributeHtml)e.attributeHtml.hasOwnProperty(a)&&r.find('> td[data-attr="'.concat(a,'"]')).html(e.attributeHtml[a])}Craft.cp.elementThumbLoader.load(n)}))}}},Craft.messageReceiver.addEventListener("message",this._broadcastListener))},initForInlineEditing:function(){var t=this;this.elementIndex.inlineEditing?(Craft.initUiElements(this.$elementContainer),this.initialSerializedValue=this.serializeInputs(),this.$saveBtn=Craft.ui.createSubmitButton({label:Craft.t("app","Save"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.$cancelBtn=Craft.ui.createButton({label:Craft.t("app","Cancel"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.addListener(this.$saveBtn,"activate",(function(){t.$saveBtn.addClass("loading"),t.saveChanges().then((function(e){if(e.errors){for(var n in e.errors)if(e.errors.hasOwnProperty(n)){var i=t.$elementContainer.children('[data-id="'.concat(n,'"]'));for(var r in e.errors[n])i.find('[name*="'.concat(r,'"]')).closest("td").addClass("errors")}return t.elementIndex.setIndexAvailable(),void Craft.cp.displayError(Craft.t("app","Could not save due to validation errors."))}Craft.cp.displaySuccess(Craft.t("app","Changes saved.")),t.elementIndex.inlineEditing=!1,t.elementIndex.updateElements(!0,!1)})).catch((function(){t.elementIndex.setIndexAvailable(),Craft.cp.displayError()})).finally((function(){t.$saveBtn.removeClass("loading")}))})),this.addListener(this.$cancelBtn,"activate",(function(){t.$cancelBtn.addClass("loading"),t.elementIndex.inlineEditing=!1,t.elementIndex.updateElements(!0,!1)})),this.addListener(this.$elementContainer,"keydown",(function(e){e.keyCode===Garnish.RETURN_KEY&&Garnish.isCtrlKeyPressed(e)?t.$saveBtn.trigger("click"):e.keyCode===Garnish.S_KEY&&Garnish.isCtrlKeyPressed(e)&&(e.stopPropagation(),e.preventDefault(),t.$saveBtn.trigger("click"))}))):(this.$editBtn=Craft.ui.createButton({label:Craft.t("app","Edit"),spinner:!0}).insertBefore(this.elementIndex.$exportBtn),this.addListener(this.$editBtn,"activate",(function(){t.$editBtn.addClass("loading"),t.elementIndex.inlineEditing=!0,t.elementIndex.updateElements(!0,!1)})))},serializeInputs:function(){var t=Garnish.getPostData(this.$elementContainer),e=[];for(var n in t)e.push(encodeURIComponent("".concat(n,"=").concat(t[n])));return e.join("&")},getDeltaInputChanges:function(){var t=this,e=this.$elementContainer.children().toArray().map((function(e){return"".concat(t.elementIndex.nestedInputNamespace,"[element-").concat($(e).data("id"),"]")}));return Craft.findDeltaData(this.initialSerializedValue,this.serializeInputs(),e)},haveInputsChanged:function(){return this.serializeInputs()!==this.initialSerializedValue},saveChanges:(s=a(i().mark((function t(){var e,n;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e=this.getDeltaInputChanges()){t.next=3;break}return t.abrupt("return",{});case 3:return e+="&"+$.param({elementType:this.elementIndex.elementType,siteId:this.elementIndex.siteId,namespace:this.elementIndex.nestedInputNamespace}),t.next=6,Craft.sendActionRequest("POST","element-indexes/save-elements",{data:e});case 6:return n=t.sent,t.abrupt("return",n.data);case 8:case"end":return t.stop()}}),t,this)}))),function(){return s.apply(this,arguments)}),initTableHeaders:function(){if(!this.settings.sortable&&!this.elementIndex.inlineEditing){var t,n;if("structure"===this.elementIndex.viewMode)t="structure",n="asc";else{var i=e(this.elementIndex.getSortAttributeAndDirection(),2);t=i[0],n=i[1]}for(var r=this.$table.children("thead").children().children("[data-attribute]"),a=0;a<r.length;a++){var s=r.eq(a),o=s.attr("data-attribute"),l="none";o===t?(this.$selectedSortHeader=s,l="asc"===n?"ascending":"descending",s.addClass("ordered "+n),this.makeColumnSortable(s,!0)):this.elementIndex.getSortOption(o)&&this.makeColumnSortable(s),s.attr("aria-sort",l)}}},makeColumnSortable:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];t.addClass("orderable");var n=t.html(),i=this.$tableCaption.find("[data-sort-instructions]"),r=$("<button/>",{id:"".concat(this.elementIndex.idPrefix,"-").concat(t.attr("data-attribute")),type:"button","aria-pressed":"false"}).html(n);i.length&&r.attr("aria-describedby",i.attr("id")),e?(r.attr("aria-pressed","true"),r.on("click",this._handleSelectedSortHeaderClick.bind(this))):r.on("click",this._handleUnselectedSortHeaderClick.bind(this)),t.empty().append(r)},isVerticalList:function(){return!0},getTotalVisible:function(){return this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee:this._totalVisible},setTotalVisible:function(t){this._isStructureTableDraggingLastElements()?this._totalVisiblePostStructureTableDraggee=t:this._totalVisible=t},getMorePending:function(){return this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee:this._morePending},setMorePending:function(t){this._isStructureTableDraggingLastElements()?this._morePendingPostStructureTableDraggee=t:this._morePending=this._morePendingPostStructureTableDraggee=t},getLoadMoreParams:function(){var t=this.base();return this._isStructureTableDraggingLastElements()&&(t.criteria.positionedAfter=this.tableSort.$targetItem.data("id")),t},appendElements:function(t){this.base(t),this.tableSort&&this.tableSort.addItems(t),Craft.cp.updateResponsiveTables()},_collapseElement:function(t,e){if(!e&&!t.hasClass("expanded"))return!1;t.removeClass("expanded"),t.attr("aria-expanded","false");for(var n=t.closest("tr"),i=n.data("id"),r=n.data("level"),a=n.next();a.length;){if(!Garnish.hasAttr(a,"data-spinnerrow")){if(a.data("level")<=r)break;this.elementSelect&&this.elementSelect.removeItems(a),this.tableSort&&this.tableSort.removeItems(a),this._totalVisible--}var s=a.next();a.remove(),a=s}this.elementIndex.instanceState.collapsedElementIds||(this.elementIndex.instanceState.collapsedElementIds=[]),this.elementIndex.instanceState.collapsedElementIds.push(i),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds),this.maybeLoadMore()},_expandElement:function(t,e){var n=this;if(!e&&t.hasClass("expanded"))return!1;if(t.addClass("expanded"),t.attr("aria-expanded","true"),this.elementIndex.instanceState.collapsedElementIds){var r=t.closest("tr"),s=r.data("id"),o=$.inArray(s,this.elementIndex.instanceState.collapsedElementIds);if(-1!==o){this.elementIndex.instanceState.collapsedElementIds.splice(o,1),this.elementIndex.setInstanceState("collapsedElementIds",this.elementIndex.instanceState.collapsedElementIds);var l=this._createSpinnerRowAfter(r),c=$.extend(!0,{},this.settings.params);c.criteria.descendantOf=s,Craft.sendActionRequest("POST",this.settings.loadMoreElementsAction,{data:c}).then(function(){var t=a(i().mark((function t(e){var r,a,s,o;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(l.parent().length){t.next=2;break}return t.abrupt("return");case 2:return r=$(e.data.html),a=n._totalVisible+r.length,(s=n.settings.batchSize&&r.length===n.settings.batchSize)?(o=l.nextAll(),n.elementSelect&&n.elementSelect.removeItems(o),n.tableSort&&n.tableSort.removeItems(o),o.remove(),a-=o.length):s=n._morePending,l.replaceWith(r),n.thumbLoader.load(r),(n.elementIndex.actions||n.settings.selectable)&&(n.elementSelect.addItems(r.filter(":not(.disabled)")),n.elementIndex.updateActionTriggers()),n.tableSort&&n.tableSort.addItems(r),t.next=12,Craft.appendHeadHtml(e.data.headHtml);case 12:return t.next=14,Craft.appendBodyHtml(e.data.bodyHtml);case 14:Craft.cp.updateResponsiveTables(),n.setTotalVisible(a),n.setMorePending(s),n.maybeLoadMore();case 18:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}()).catch((function(t){Craft.cp.displayError(),l.parent().length}))}}},_createSpinnerRowAfter:function(t){return $('<tr data-spinnerrow><td class="centeralign" colspan="'+t.children().length+'"><div class="spinner"/></td></tr>').insertAfter(t)},_isStructureTableDraggingLastElements:function(){return this.tableSort&&this.tableSort.dragging&&this.tableSort.draggingLastElements},_handleSelectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var n="asc"===this.elementIndex.getSelectedSortDirection()?"desc":"asc";this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortDirection(n),this._handleSortHeaderClick(t,e)}},_handleUnselectedSortHeaderClick:function(t){var e=$(t.currentTarget).closest("th");if(!e.hasClass("loading")){var n=e.attr("data-attribute");this.elementIndex.selectViewMode("table"),this.elementIndex.setSelectedSortAttribute(n),this._handleSortHeaderClick(t,e)}},_handleSortHeaderClick:function(t,e){this.$selectedSortHeader&&this.$selectedSortHeader.removeClass("ordered asc desc"),e.addClass("ordered loading"),this.elementIndex.updateElements(),this.elementIndex.setIndexAvailable()},_updateTableAttributes:function(t,e){var n=t.closest("tr");for(var i in e)e.hasOwnProperty(i)&&n.children('[data-attr="'+i+'"]:first').html(e[i])},destroy:function(){this.$editBtn?this.$editBtn.remove():this.$cancelBtn&&(this.$saveBtn.remove(),this.$cancelBtn.remove()),this._broadcastListener&&(Craft.messageReceiver.removeEventListener("message",this._broadcastListener),delete this._broadcastListener),this.base()},createScrollbar:function(){var t=this,n=document.querySelector("#content > #footer"),i=document.createElement("craft-proxy-scrollbar");i.setAttribute("scroller",".tablepane"),i.setAttribute("content",".tablepane > table"),i.style.bottom="".concat(n.getBoundingClientRect().height+2,"px");var r=$(i);new IntersectionObserver((function(n){e(n,1)[0].intersectionRatio<1?r.insertAfter(t.$container):r.remove()}),{rootMargin:"0px 0px -1px 0px",threshold:[1]}).observe(n)}})},7745:function(){Craft.Tabs=Garnish.Base.extend({$container:null,$tablist:null,$menuBtn:null,$tabs:null,$firstTab:null,$lastTab:null,$selectedTab:null,$focusableTab:null,menu:null,init:function(t){var e=this;this.$container=$(t),this.$tablist=this.$container.find('> [role="tablist"]:first'),this.$tabs=this.$tablist.find('> [role="tab"]'),this.$firstTab=this.$tabs.first(),this.$lastTab=this.$tabs.last(),this.$selectedTab=this.$tabs.filter(".sel:first"),this.$focusableTab=this.$tabs.filter("[tabindex=0]:first"),this.$menuBtn=this.$container.find("> .menubtn:first").disclosureMenu(),this.menu=this.$menuBtn.data("trigger").$container,this.$container.data("tabs")&&(console.warn("Double-instantiating a tab manager on an element"),this.$container.data("tabs").destroy()),this.$container.data("tabs",this);for(var n=0;n<this.$tabs.length;n++){var i=this.$tabs.eq(n),r=i.attr("href");r&&"#"===r.charAt(0)&&(this.addListener(i,"keydown",(function(t){[Garnish.SPACE_KEY,Garnish.RETURN_KEY].includes(t.keyCode)&&(t.preventDefault(),e.selectTab(t.currentTarget,!0))})),this.addListener(i,"click",(function(t){t.preventDefault(),e.selectTab(t.currentTarget,!0)}))),this.addListener(i,"keydown",(function(t){var n;[Garnish.LEFT_KEY,Garnish.RIGHT_KEY].includes(t.keyCode)&&$.contains(e.$tablist[0],t.currentTarget)?n=t.keyCode===("ltr"===Craft.orientation?Garnish.LEFT_KEY:Garnish.RIGHT_KEY)?(n=$(t.currentTarget).prevAll('[role="tab"]:not(.hidden):first')).length?n:e.$lastTab:(n=$(t.currentTarget).nextAll('[role="tab"]:not(.hidden):first')).length?n:e.$firstTab:t.keyCode!==Garnish.HOME_KEY&&t.keyCode!==Garnish.END_KEY||(n=t.keyCode===Garnish.HOME_KEY?e.$firstTab:e.$lastTab),n&&(t.preventDefault(),e.makeTabFocusable(n),n.focus(),e.scrollToTab(n))}))}this.updateMenuBtn(),Garnish.$win.on("resize",(function(){e.updateMenuBtn()}));var a=this.getMenuOptions();this.addListener(a,"activate",(function(t){var n=$(t.currentTarget),i=n.attr("href");i&&"#"===i.charAt(0)&&t.preventDefault(),e.selectTab(n.data("id")),e.$menuBtn.data("trigger").hide()}))},getMenuOptions:function(){return this.menu.find("a")},selectTab:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this._getTab(t);if(n[0]!==this.$selectedTab[0]){this.deselectTab(),this.$selectedTab=n.addClass("sel").attr("aria-selected","true"),this.makeTabFocusable(n),e&&n.trigger("focus"),this.scrollToTab(n),this.getMenuOptions().removeClass("sel").removeAttr("aria-current"),this.getMenuOptions().filter('[data-id="'.concat(n.data("id"),'"]')).addClass("sel").attr("aria-current","true"),this.trigger("selectTab",{$tab:n}),$("#content").trigger("scroll");var i=n.closest(".slideout-container");i.length&&i.find(".so-content").trigger("scroll")}},deselectTab:function(){var t=this.$selectedTab.removeClass("sel").attr("aria-selected","false");this.$selectedTab=null,this.trigger("deselectTab",{$tab:t})},makeTabFocusable:function(t){var e=this._getTab(t);e[0]!==this.$focusableTab[0]&&(this.$focusableTab.attr("tabindex","-1"),this.$focusableTab=e.attr("tabindex","0"))},scrollToTab:function(t){var e=this._getTab(t),n=this.$tablist.scrollLeft(),i=e.offset().left-this.$tablist.offset().left,r=!1;if(i<0)r=n+i-24;else{var a=e.outerWidth(),s=this.$tablist.prop("clientWidth");i+a>s&&(r=n+(i-(s-a))+24)}!1!==r&&this.$tablist.scrollLeft(r)},updateMenuBtn:function(){Math.floor(this.$tablist.prop("scrollWidth")-48)>this.$container.prop("clientWidth")?(this.$tablist.addClass("scrollable"),this.$menuBtn.removeClass("hidden")):(this.$tablist.removeClass("scrollable"),this.$menuBtn.addClass("hidden"))},_getTab:function(t){if(t instanceof jQuery)return t;if(t instanceof HTMLElement)return $(t);if("string"!=typeof t)throw"Invalid tab ID";var e=this.$tabs.filter('[data-id="'.concat(t,'"]'));if(!e.length)throw"Invalid tab ID: ".concat(t);return e},destroy:function(){this.$container.removeData("tabs"),this.base()}})},5074:function(){Craft.TagSelectInput=Craft.BaseElementSelectInput.extend({searchTimeout:null,searchMenu:null,$container:null,$elementsContainer:null,$elements:null,$addTagInput:null,$spinner:null,_ignoreBlur:!1,init:function(t){var e=this;if(!$.isPlainObject(t)){for(var n={},i=["id","name","tagGroupId","sourceElementId"],r=0;r<i.length&&void 0!==arguments[r];r++)n[i[r]]=arguments[r];t=n}this.base($.extend({},Craft.TagSelectInput.defaults,t)),this.$addTagInput=this.$container.children(".add").children(".text"),this.$spinner=this.$addTagInput.next(),this.addListener(this.$addTagInput,"input",(function(){e.searchTimeout&&clearTimeout(e.searchTimeout),e.searchTimeout=setTimeout(e.searchForTags.bind(e),500)})),this.addListener(this.$addTagInput,"keydown",(function(t){switch(t.keyCode===Garnish.RETURN_KEY&&t.preventDefault(),t.keyCode){case Garnish.RETURN_KEY:return t.preventDefault(),void(this.searchMenu&&this.selectTag(this.searchMenu.$options.filter(".hover")));case Garnish.DOWN_KEY:if(t.preventDefault(),this.searchMenu){var e=this.searchMenu.$options.filter(".hover");if(e.length){var n=e.parent().nextAll().find("button:not(.disabled)").first();n.length&&this.focusOption(n)}else this.focusOption(this.searchMenu.$options.eq(0))}return;case Garnish.UP_KEY:if(t.preventDefault(),this.searchMenu){var i=this.searchMenu.$options.filter(".hover");if(i.length){var r=i.parent().prevAll().find("button:not(.disabled)").last();r.length&&this.focusOption(r)}else this.focusOption(this.searchMenu.$options.eq(this.searchMenu.$options.length-1))}return}})),this.addListener(this.$addTagInput,"focus",(function(){this.searchMenu&&this.searchMenu.show()})),this.addListener(this.$addTagInput,"blur",(function(){var t=this;this._ignoreBlur?this._ignoreBlur=!1:setTimeout((function(){t.searchMenu&&t.searchMenu.hide()}),1)}))},focusOption:function(t){this.searchMenu.$options.removeClass("hover"),t.addClass("hover"),this.searchMenu.$menuList.attr("aria-activedescendant",t.attr("id"))},getAddElementsBtn:function(){return[]},getElementSortAxis:function(){return"x"},searchForTags:function(){var t=this;if(this.searchMenu&&this.killSearchMenu(),this.$addTagInput.val()){this.$spinner.removeClass("hidden");for(var e=[],n=0;n<this.$elements.length;n++){var i=$(this.$elements[n]).data("id");i&&e.push(i)}this.settings.sourceElementId&&!this.settings.allowSelfRelations&&e.push(this.settings.sourceElementId);var r={search:this.$addTagInput.val(),tagGroupId:this.settings.tagGroupId,excludeIds:e};Craft.sendActionRequest("POST","tags/search-for-tags",{data:r}).then((function(e){t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden");for(var n,i=$('<div class="menu tagmenu"/>').appendTo(Garnish.$bod),a=$("<ul/>").appendTo(i),s=0;s<e.data.tags.length;s++)n=$("<li/>").appendTo(a),$('<button class="menu-item" data-icon="tag"/>').appendTo(n).text(e.data.tags[s].title).data("id",e.data.tags[s].id).addClass(e.data.tags[s].exclude?"disabled":"");e.data.exactMatch||(n=$("<li/>").appendTo(a),$('<button class="menu-item" data-icon="plus"/>').appendTo(n).text(r.search)),a.find("button:not(.disabled):first").addClass("hover"),t.searchMenu=new Garnish.Menu(i,{attachToElement:t.$addTagInput,onOptionSelect:t.selectTag.bind(t)}),t.addListener(i,"mousedown",(function(){t._ignoreBlur=!0})),t.searchMenu.show()})).catch((function(e){e.response,t.searchMenu&&t.killSearchMenu(),t.$spinner.addClass("hidden")}))}else this.$spinner.addClass("hidden")},selectTag:function(t){var e=this,n=$(t);if(!n.hasClass("disabled")){var i=n.data("id"),r=n.text(),a=$("<div/>",{class:"chip element small removable","data-id":i,"data-site-id":this.settings.targetSiteId,"data-label":r,"data-editable":"1"}),s=$("<li/>").appendTo(this.$elementsContainer);a.appendTo(s);var o=$("<div/>",{class:"chip-content"}).appendTo(a),l=$("<div/>",{class:"label"}).appendTo(o),c=$("<a/>",{class:"label-link"}).appendTo(l);$("<span/>",{class:"title",text:r}).appendTo(c),$("<div/>",{class:"chip-actions"}).appendTo(o);var h=$("<input/>",{type:"hidden",name:this.settings.name+"[]",value:i}).appendTo(o);if(this.$elements=this.$elements.add(a),this.addElements(a),this.killSearchMenu(),this.$addTagInput.val(""),this.$addTagInput.trigger("focus"),!i){a.addClass("loading disabled");var u={groupId:this.settings.tagGroupId,title:r};Craft.sendActionRequest("POST","tags/create-tag",{data:u}).then((function(t){a.attr("data-id",t.data.id),h.val(t.data.id),a.removeClass("loading disabled")})).catch((function(t){t.response,e.removeElement(a),Craft.cp.displayError(Craft.t("app","A server error occurred."))}))}}},killSearchMenu:function(){this.searchMenu.hide(),this.searchMenu.destroy(),this.searchMenu=null}},{defaults:{tagGroupId:null}})},3958:function(){Craft.ThumbsElementIndexView=Craft.BaseElementIndexView.extend({getElementContainer:function(){return this.$container.children("ul")}})},3079:function(){Craft.Tooltip=Garnish.Base.extend({_$trigger:null,_message:null,hud:null,$p:null,hoverTimeout:null,triggerHit:!1,shownViaHover:!1,init:function(t,e){var n=this;this.$trigger=$(t),this.message=e,"BUTTON"!==this.$trigger[0].tagName&&"button"!==this.$trigger.attr("role")&&console.error("Toggletip buttons need to be <button> elements."),this.addListener(Garnish.$bod,"mousemove",(function(t){n.triggerHit!==(n.triggerHit=Garnish.hitTest(t.pageX,t.pageY,n._$trigger))&&(n.triggerHit?n.showing||(n.hoverTimeout=setTimeout((function(){n.show(),n.shownViaHover=!0}),500)):(clearTimeout(n.hoverTimeout),n.shownViaHover&&n.hide()))}))},get showing(){return this.hud&&this.hud.showing},get $trigger(){return this._$trigger},set $trigger(t){var e=this;this._$trigger&&this.removeAllListeners(this._$trigger),this._$trigger=t,this._$trigger.on("blur",(function(){e.hide()})),this._$trigger.on("activate",(function(){e.showing&&e.shownViaHover?e.shownViaHover=!1:e.toggle(),e._$trigger.focus()})),this.hud&&(this.hud.$trigger=t,this.hud.showing&&this.hud.updateSizeAndPosition(!0))},get message(){return this._message},set message(t){this._message=t,this.$p&&this.$p.text(t)},show:function(t){var e=this;this.shownViaHover=!1,this.showing||(this.$trigger.attr("aria-expanded","true"),this.hud?this.hud.show():(this.$p=$("<p/>",{text:this._message}),this.hud=new Craft.Tooltip.HUD(this._$trigger,this.$p,{hudClass:"hud tooltip-hud",withShade:!1,onShow:function(){e.onShow()},onHide:function(){e.onHide()}})))},hide:function(){this.showing&&(this.$trigger.attr("aria-expanded","false"),this.hud&&this.hud.hide())},toggle:function(){this.showing?this.hide():this.show()},onShow:function(){clearTimeout(this.hoverTimeout),this.$p.text(this.message)},onHide:function(){clearTimeout(this.hoverTimeout),this.$p.text("")}}),Craft.Tooltip.HUD=Garnish.HUD.extend({init:function(t,e,n){this.base(t,e,n),this.$hud.attr("role","status")},showContainer:function(){this.$hud.removeClass("visually-hidden")},hideContainer:function(){this.$hud.addClass("visually-hidden")}})},1592:function(){Craft.ui={createButton:function(t){var e=$("<button/>",{type:t.type||"button",class:"btn"});return t.id&&e.attr("id",t.id),t.class&&e.addClass(t.class),t.ariaLabel&&e.attr("aria-label",t.ariaLabel),t.role&&e.attr("role",t.role),t.html?e.html(t.html):t.label?e.append($('<div class="label"/>').text(t.label)):e.addClass("btn-empty"),t.toggle&&e.attr("aria-expanded","false"),t.controls&&e.attr("aria-controls",t.controls),t.spinner&&e.append($('<div class="spinner spinner-absolute"/>')),e},createSubmitButton:function(t){var e=this.createButton(Object.assign({},t,{type:"submit",label:t.label||Craft.t("app","Submit")}));return e.addClass("submit"),e},createTextInput:function(t){t=$.extend({autocomplete:!1},t);var e=$("<input/>",{attr:{class:"text",type:t.type||"text",inputmode:t.inputmode,id:t.id,size:t.size,name:t.name,value:t.value,maxlength:t.maxlength,autofocus:this.getAutofocusValue(t.autofocus),autocomplete:"boolean"==typeof t.autocomplete?t.autocomplete?"on":"off":t.autocomplete,disabled:this.getDisabledValue(t.disabled),readonly:t.readonly,title:t.title,placeholder:t.placeholder,step:t.step,min:t.min,max:t.max}});return t.class&&e.addClass(t.class),t.placeholder&&e.addClass("nicetext"),"password"===t.type&&e.addClass("password"),t.disabled&&e.addClass("disabled"),t.size||e.addClass("fullwidth"),t.showCharsLeft&&t.maxlength&&e.attr("data-show-chars-left").css("padding-"+("ltr"===Craft.orientation?"right":"left"),7.2*t.maxlength.toString().length+14+"px"),(t.placeholder||t.showCharsLeft)&&new Garnish.NiceText(e),"password"===t.type?$('<div class="passwordwrapper"/>').append(e):e},createTextField:function(t){return t.id||(t.id="text"+Math.floor(1e9*Math.random())),this.createField(this.createTextInput(t),t)},createPasswordInput:function(t){return this.createTextInput(Object.assign({},t,{type:"password"}))},createPasswordField:function(t){return this.createTextField(Object.assign({},t,{type:"password"}))},createCopyTextInput:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),n=t.buttonId||"".concat(e,"-btn"),i=$("<div/>",{class:"copytext"}),r=this.createTextInput($.extend({},t,{readonly:!0})).appendTo(i);return $("<button/>",{type:"button",id:n,class:"btn","data-icon":"clipboard",title:Craft.t("app","Copy to clipboard"),"aria-label":Craft.t("app","Copy to clipboard")}).appendTo(i).on("click",(function(){r[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),i.trigger("copy"),r[0].setSelectionRange(0,0)})),i},createCopyTextBtn:function(t){var e=t.id||"copytext"+Math.floor(1e9*Math.random()),n=t.value,i=$("<div/>",{class:"copytextbtn-wrapper"}),r=$("<div/>",{id:e,class:"copytextbtn",role:"button",title:Craft.t("app","Copy to clipboard"),tabindex:"0"}).appendTo(i);t.class&&r.addClass(t.class);var a=$("<input/>",{value:n,readonly:!0,size:n.length,tabindex:"-1","aria-hidden":"true",class:"visually-hidden"}).insertBefore(r);$("<span/>",{text:n,class:"copytextbtn__value"}).appendTo(r),$("<span/>",{class:"visually-hidden",text:Craft.t("app","Copy to clipboard")}).appendTo(r),$("<span/>",{class:"copytextbtn__icon","data-icon":"clipboard","aria-hidden":"true"}).appendTo(r);var s=function(){a[0].select(),document.execCommand("copy"),Craft.cp.displayNotice(Craft.t("app","Copied to clipboard.")),r.trigger("copy"),a[0].setSelectionRange(0,0),r.focus()};return r.on("activate",(function(){s()})),r.on("keydown",(function(t){t.keyCode===Garnish.SPACE_KEY&&(s(),t.preventDefault())})),i},createCopyTextField:function(t){return t.id||(t.id="copytext"+Math.floor(1e9*Math.random())),this.createField(this.createCopyTextInput(t),t)},createCopyTextPrompt:function(t){var e=$("<div/>",{class:"modal fitted"}),n=$("<div/>",{class:"body"}).appendTo(e);this.createCopyTextField($.extend({size:Math.max(Math.min(t.value.length,50),25)},t)).appendTo(n);var i=n.find("label");i.length>0&&i.attr("id")&&e.attr("aria-labelledby",i.attr("id"));var r=new Garnish.Modal(e,{closeOtherModals:!1});return e.on("copy",(function(){r.hide()})),e},createTextarea:function(t){var e=$("<textarea/>",{class:"text",rows:t.rows||2,cols:t.cols||50,id:t.id,name:t.name,maxlength:t.maxlength,autofocus:t.autofocus&&!Garnish.isMobileBrowser(!0),disabled:!!t.disabled,placeholder:t.placeholder,html:t.value});return t.showCharsLeft&&e.attr("data-show-chars-left",""),t.class&&e.addClass(t.class),t.size||e.addClass("fullwidth"),e},createTextareaField:function(t){return t.id||(t.id="textarea"+Math.floor(1e9*Math.random())),this.createField(this.createTextarea(t),t)},createSelect:function(t){var e=$("<div/>",{class:"select"});t.class&&e.addClass(t.class);var n=$("<select/>",{id:t.id,name:t.name,autofocus:t.autofocus&&Garnish.isMobileBrowser(!0),disabled:t.disabled,"data-target-prefix":t.targetPrefix,"aria-labelledby":t.labelledBy}).appendTo(e);if($.isPlainObject(t.options)){var i=[];for(var r in t.options)if(t.options.hasOwnProperty(r)){var a=t.options[r];$.isPlainObject(a)?void 0!==a.optgroup?i.push(a):i.push({label:a.label,value:void 0!==a.value?a.value:r,disabled:void 0!==a.disabled&&a.disabled}):i.push({label:a,value:r})}t.options=i}for(var s=null,o=0;o<t.options.length;o++){var l=t.options[o];void 0!==l.optgroup?s=$("<optgroup/>",{label:l.optgroup}).appendTo(n):$("<option/>",{value:l.value,selected:l.value==t.value,disabled:void 0!==l.disabled&&l.disabled,html:l.label}).appendTo(s||n)}return t.toggle&&(n.addClass("fieldtoggle"),new Craft.FieldToggle(n)),e},createSelectField:function(t){return t.id||(t.id="select"+Math.floor(1e9*Math.random())),this.createField(this.createSelect(t),t)},createCheckbox:function(t){var e=t.id||"checkbox"+Math.floor(1e9*Math.random()),n=$("<input/>",{type:"checkbox",value:void 0!==t.value?t.value:"1",id:e,class:"checkbox",name:t.name,checked:t.checked?"checked":null,autofocus:this.getAutofocusValue(t.autofocus),disabled:this.getDisabledValue(t.disabled),"data-target":t.toggle,"data-reverse-target":t.reverseToggle});t.class&&n.addClass(t.class),(t.toggle||t.reverseToggle)&&(n.addClass("fieldtoggle"),new Craft.FieldToggle(n));var i=$("<label/>",{for:e,html:t.label});return t.name&&(t.name.length<3||"[]"!==t.name.slice(-2))?$([$("<input/>",{type:"hidden",name:t.name,value:""})[0],n[0],i[0]]):$([n[0],i[0]])},createCheckboxField:function(t){t.id||(t.id="checkbox"+Math.floor(1e9*Math.random()));var e=$('<div class="field checkboxfield"/>',{id:"".concat(t.id,"-field")});return t.first&&e.addClass("first"),t.instructions&&e.addClass("has-instructions"),this.createCheckbox(t).appendTo(e),t.instructions&&$('<div class="instructions"/>').text(t.instructions).appendTo(e),e},createCheckboxSelect:function(t){var e=$('<fieldset class="checkbox-select"/>');t.class&&e.addClass(t.class);var n=t.values||[],i=!1;if(t.showAllOption){var r=t.allValue||"*";n===r&&(n=t.options.map((function(t){return t.value})),i=!0),$("<div/>").appendTo(e).append(this.createCheckbox({id:t.id,class:"all",label:"<b>"+(t.allLabel||Craft.t("app","All"))+"</b>",name:t.name,value:r,checked:i,autofocus:t.autofocus})),t.options=t.options.filter((function(t){return t.value!==r}))}else i=!1;Array.isArray(n)||(n=[]),t.sortable&&t.options.sort((function(t,e){var i=n.indexOf(t.value),r=n.indexOf(e.value);return-1===i&&(i=n.length),-1===r&&(r=n.length),i-r}));for(var a=0;a<t.options.length;a++){var s=t.options[a],o=$("<div/>",{class:"checkbox-select-item"}).appendTo(e);t.sortable&&$("<div/>",{class:"icon move"}).appendTo(o),this.createCheckbox({label:Craft.escapeHtml(s.label),name:t.name?Craft.ensureEndsWith(t.name,"[]"):null,value:s.value,checked:i||n.includes(s.value),disabled:i}).appendTo(o)}if(new Garnish.CheckboxSelect(e),t.sortable){var l=new Garnish.DragSort(e.children(":not(.all)"),{handle:".move",axis:"y"});e.data("dragSort",l)}return e},createCheckboxSelectField:function(t){return t.fieldset=!0,t.id||(t.id="checkboxselect"+Math.floor(1e9*Math.random())),this.createField(this.createCheckboxSelect(t),t)},createLightswitch:function(t){var e=t.value||"1",n=t.indeterminateValue||"-",i=$("<button/>",{type:"button",class:"lightswitch","data-value":e,"data-indeterminate-value":n,id:t.id,role:"switch","aria-checked":t.on?"true":t.indeterminate?"mixed":"false","aria-labelledby":t.labelId,"data-target":t.toggle,"data-reverse-target":t.reverseToggle});return t.on?i.addClass("on"):t.indeterminate&&i.addClass("indeterminate"),t.small&&i.addClass("small"),t.disabled&&i.addClass("disabled"),$('<div class="lightswitch-container"><div class="handle"></div></div>').appendTo(i),t.name&&$("<input/>",{type:"hidden",name:t.name,value:t.on?e:t.indeterminate?n:"",disabled:t.disabled}).appendTo(i),(t.toggle||t.reverseToggle)&&(i.addClass("fieldtoggle"),new Craft.FieldToggle(i)),new Craft.LightSwitch(i,{onChange:t.onChange||$.noop}),i},createLightswitchField:function(t){return t.id||(t.id="lightswitch"+Math.floor(1e9*Math.random())),t.labelId||(t.labelId="".concat(t.id,"-label")),this.createField(this.createLightswitch(t),t).addClass("lightswitch-field")},createColorInput:function(t){var e=t.id||"color"+Math.floor(1e9*Math.random()),n=t.containerId||e+"-container",i=t.name||null,r=t.value||null,a=t.small||!1,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{id:n,class:"flex color-container"}),c=$("<div/>",{class:"color static"+(a?" small":"")}).appendTo(l),h=($("<div/>",{class:"color-preview",style:t.value?{backgroundColor:t.value}:null}).appendTo(c),$("<div/>",{class:"color-input-container"}).append($("<div/>",{class:"color-hex-indicator light code","aria-hidden":"true",text:"#"})).appendTo(l));return this.createTextInput({id:e,name:i,value:Craft.ltrim(r,"#"),size:10,class:"color-input",autofocus:s,disabled:o,"aria-label":Craft.t("app","Color hex value")}).appendTo(h),new Craft.ColorInput(l),l},createColorField:function(t){return t.fieldset=!0,o,t.id||(t.id="color"+Math.floor(1e9*Math.random())),this.createField(this.createColorInput(t),t)},createDateInput:function(t){var e=Garnish.isMobileBrowser(),n=(t.id||"date"+Math.floor(1e9*Math.random()))+"-date",i=t.name||null,r=i?i+"[date]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{class:"datewrapper"}),c=this.createTextInput({id:n,type:e?"date":"text",class:!(!e||a)&&"empty-value",name:r,value:a?e?a.toISOString().split("T")[0]:Craft.formatDate(a):"",placeholder:" ",autocomplete:!1,autofocus:s,disabled:o}).appendTo(l);return $('<div data-icon="date"></div>').appendTo(l),i&&$("<input/>",{type:"hidden",name:i+"[timezone]",val:Craft.timezone}).appendTo(l),e?c.datetimeinput():c.datepicker($.extend({defaultDate:a||new Date},Craft.datepickerOptions)),t.hasOuterContainer?l:$('<div class="datetimewrapper"/>').append(l).datetime()},createDateField:function(t){return t.id||(t.id="date"+Math.floor(1e9*Math.random())),this.createField(this.createDateInput(t),t)},createDateRangePicker:function(t){var e=new Date,n=new Date(e.getFullYear(),e.getMonth(),e.getDate());t=$.extend({class:"",options:["today","thisWeek","thisMonth","thisYear","past7Days","past30Days","past90Days","pastYear"],onChange:$.noop,selected:null,startDate:null,endDate:null},t);var i,r,a=$("<div/>",{class:"menu"}),s=$("<ul/>",{class:"padded"}).appendTo(a),o=$("<a/>").addClass("sel").text(Craft.t("app","All")).data("handle","all");$("<li/>").append(o).appendTo(s);for(var l=0;l<t.options.length;l++){var c=t.options[l];switch(c){case"today":i={label:Craft.t("app","Today"),startDate:n,endDate:n};break;case"thisWeek":var h=e.getDay()-Craft.datepickerOptions.firstDay;h<0&&(h+=7),i={label:Craft.t("app","This week"),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-h),endDate:n};break;case"thisMonth":i={label:Craft.t("app","This month"),startDate:new Date(e.getFullYear(),e.getMonth()),endDate:n};break;case"thisYear":i={label:Craft.t("app","This year"),startDate:new Date(e.getFullYear(),0),endDate:n};break;case"past7Days":i={label:Craft.t("app","Past {num} days",{num:7}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-7),endDate:n};break;case"past30Days":i={label:Craft.t("app","Past {num} days",{num:30}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-30),endDate:n};break;case"past90Days":i={label:Craft.t("app","Past {num} days",{num:90}),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-90),endDate:n};break;case"pastYear":i={label:Craft.t("app","Past year"),startDate:new Date(e.getFullYear(),e.getMonth(),e.getDate()-365),endDate:n}}var u=$("<li/>"),d=$("<a/>",{text:i.label}).data("handle",c).data("startDate",i.startDate).data("endDate",i.endDate).data("startTime",i.startDate?i.startDate.getTime():null).data("endTime",i.endDate?i.endDate.getTime():null);t.selected&&c==t.selected&&(r=d[0]),u.append(d),u.appendTo(s)}$("<hr/>").appendTo(a);var f=$("<div/>",{class:"flex flex-nowrap padded"}).appendTo(a),p=this.createDateField({label:Craft.t("app","From")}).appendTo(f).find("input"),g=this.createDateField({label:Craft.t("app","To")}).appendTo(f).find("input"),m=p.add(g);m.on("keyup",(function(t){t.keyCode===Garnish.ESC_KEY&&$(this).data("datepicker")&&$(this).data("datepicker").dpDiv.is(":visible")&&t.stopPropagation()})),p.data("datepicker")&&p.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()})),g.data("datepicker")&&g.data("datepicker").dpDiv.on("mousedown",(function(t){t.stopPropagation()}));var v=new Garnish.Menu(a,{onOptionSelect:function(e){var n=$(e);y.text(n.text()),v.setPositionRelativeToAnchor(),a.find(".sel").removeClass("sel"),n.addClass("sel"),p.hasClass("hasDatepicker")?(p.datepicker("setDate",n.data("startDate")),g.datepicker("setDate",n.data("endDate"))):(p.val(n.data("startDate")),g.val(n.data("endDate"))),t.onChange(n.data("startDate")||null,n.data("endDate")||null,n.data("handle"))}});m.on("change",(function(){var e=null,n=null;if(p.hasClass("hasDatepicker"))e=p.datepicker("getDate"),n=g.datepicker("getDate");else{var i=p.val();""!==i&&(e=new Date(Date.parse(i)));var r=g.val();""!==r&&(n=new Date(Date.parse(r)))}for(var o,l=e?e.getTime():null,c=n?n.getTime():null,h=s.find("a"),u=!1,d=0;d<h.length;d++)if(l===((o=h.eq(d)).data("startTime")||null)&&c===(o.data("endTime")||null)){v.selectOption(o[0]),u=!0,t.onChange(null,null,o.data("handle"));break}u||(a.find(".sel").removeClass("sel"),f.addClass("sel"),l||c?l&&c?y.text(p.val()+" - "+g.val()):l?y.text(Craft.t("app","From {date}",{date:p.val()})):y.text(Craft.t("app","To {date}",{date:g.val()})):y.text(Craft.t("app","All")),v.setPositionRelativeToAnchor(),t.onChange(e,n,"custom"))})),v.on("hide",(function(){p.datepicker("hide"),g.datepicker("hide")}));var b="btn menubtn";t.class&&(b=b+" "+t.class);var y=$("<button/>",{type:"button",class:b,"data-icon":"date",text:Craft.t("app","All")});if(new Garnish.MenuBtn(y,v),r&&v.selectOption(r),t.startDate)if(p.hasClass("hasDatepicker"))p.datepicker("setDate",t.startDate);else{var C=t.startDate.getTimezoneOffset(),w=new Date(t.startDate.getTime()-60*C*1e3);p.val(w.toISOString().split("T")[0])}if(t.endDate)if(g.hasClass("hasDatepicker"))g.datepicker("setDate",t.endDate);else{var _=t.endDate.getTimezoneOffset(),S=new Date(t.endDate.getTime()-60*_*1e3);g.val(S.toISOString().split("T")[0])}return(t.startDate||t.endDate)&&m.trigger("change"),y},createTimeInput:function(t){var e=Garnish.isMobileBrowser(),n=(t.id||"time"+Math.floor(1e9*Math.random()))+"-time",i=t.name||null,r=i?i+"[time]":null,a=t.value&&"function"==typeof t.value.getMonth?t.value:null,s=t.autofocus&&Garnish.isMobileBrowser(!0),o=t.disabled||!1,l=$("<div/>",{class:"timewrapper"}),c=this.createTextInput({id:n,type:e?"time":"text",class:!(!e||a)&&"empty-value",name:r,placeholder:" ",autocomplete:!1,autofocus:s,disabled:o}).appendTo(l);return $('<div data-icon="time"></div>').appendTo(l),i&&$("<input/>",{type:"hidden",name:i+"[timezone]",val:Craft.timezone}).appendTo(l),e?(a&&c.val(a.toISOString().split("T")[1]),c.datetimeinput()):(c.timepicker(Craft.timepickerOptions),a&&c.timepicker("setTime",3600*a.getHours()+60*a.getMinutes()+a.getSeconds())),t.hasOuterContainer?l:$('<div class="datetimewrapper"/>').append(l).datetime()},createTimeField:function(t){return t.id||(t.id="time"+Math.floor(1e9*Math.random())),this.createField(this.createTimeInput(t),t)},createField:function(t,e){var n=e.label&&"__blank__"!==e.label?e.label:null,i=$(e.fieldset?"<fieldset/>":"<div/>",{class:"field",id:e.fieldId||(e.id?e.id+"-field":null)});if(e.first&&i.addClass("first"),e.fieldClass&&i.addClass(e.fieldClass),n&&e.fieldset&&$("<legend/>",{text:n,class:"visually-hidden","data-label":n}).appendTo(i),n){var r=$('<div class="heading"/>').appendTo(i);$(e.fieldset?"<legend/>":"<label/>",{id:e.labelId||(e.id?"".concat(e.id,"-").concat(e.fieldset?"legend":"label"):null),class:e.required?"required":null,for:!e.fieldset&&e.id||null,text:n}).appendTo(r)}if(e.instructions&&$('<div class="instructions"/>').text(e.instructions).appendTo(i),$('<div class="input"/>').append(t).appendTo(i),e.tip){var a=$('<p class="notice has-icon"/>');$('<span class="icon" aria-hidden="true"/>').appendTo(a),$('<span class="visually-hidden"/>').text(Craft.t("app","Tip")+": ").appendTo(a),$("<span/>").text(e.tip).appendTo(a),a.appendTo(i)}if(e.warning){var s=$('<p class="warning has-icon"/>');$('<span class="icon" aria-hidden="true"/>').appendTo(s),$('<span class="visually-hidden"/>').text(Craft.t("app","Warning")+": ").appendTo(s),$("<span/>").text(e.warning).appendTo(s),s.appendTo(i)}return e.errors&&this.addErrorsToField(i,e.errors),i},createErrorList:function(t,e){var n=$('<ul class="errors" tabindex="-1"/>');return e&&n.attr("id",e),t&&this.addErrorsToList(n,t),n},addErrorsToList:function(t,e){for(var n=0;n<e.length;n++)$("<li/>").text(e[n].replaceAll("*","")).appendTo(t)},addErrorsToField:function(t,e){if(e){t.addClass("has-errors"),t.children(".input").addClass("errors");var n=t.attr("id"),i="";n&&(i=n.replace(new RegExp("(-field)$"),"-errors"));var r=t.children("ul.errors");r.length||(r=this.createErrorList(null,i).appendTo(t)),this.addErrorsToList(r,e)}},clearErrorsFromField:function(t){t.removeClass("has-errors"),t.children(".input").removeClass("errors"),t.children("ul.errors").remove()},clearErrorSummary:function(t){t.find(".error-summary").remove()},setFocusOnErrorSummary:function(t){var e=this,n=t.find(".error-summary");n.length>0&&(n.trigger("focus"),n.find("a").on("click",(function(n){0==$(n.currentTarget).hasClass("cross-site-validate")&&(n.preventDefault(),e.anchorSummaryErrorToField(n.currentTarget,t))})))},findErrorsContainerByErrorKey:function(t,e){var n=t.find('[data-error-key="'.concat(e,'"]')).find("ul.errors");return $(n)},anchorSummaryErrorToField:function(t,e){var n=$(t).attr("data-field-error-key");if(n){var i=this.findErrorsContainerByErrorKey(e,n);if(i){var r=this.findTabAnchorForField(i,e);if(r.length>0)for(var a=0;a<r.length;a++){var s=$(r[a]);"false"==s.attr("aria-selected")&&s.click()}var o=i.parents(".collapsed, .is-collapsed");if(o.length>0)for(var l=o.length;l>0;l--){var c=$(o[l-1]);null!=c.data("block")?c.data("block").expand():c.find(".titlebar").trigger("doubletap")}var h=i.parents(".field:first");h.is(":visible")?h.attr("tabindex","-1").trigger("focus"):setTimeout((function(){h.attr("tabindex","-1").trigger("focus")}),201)}}},findTabAnchorForField:function(t,e){var n=t.parents('div[data-id^=tab][role="tabpanel"]'),i=[];return n.each((function(t,n){var r=e.find('[role="tablist"]').find('a[href="#'+$(n).attr("id")+'"]');i.push(r)})),i},getAutofocusValue:function(t){return t&&!Garnish.isMobileBrowser(!0)?"autofocus":null},getDisabledValue:function(t){return t?"disabled":null}}},1752:function(){function t(t,n){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,n)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?e(t,n):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}Craft.Uploader=Craft.BaseUploader.extend({uploader:null,_totalFileCounter:0,_validFileCounter:0,_onFileAdd:null,init:function(e,n){var i=this;n=$.extend({},Craft.Uploader.defaults,n),this.base(e,n),delete this.settings.events,this.uploader=this.$element.fileupload(this.settings),Object.entries(this.events).forEach((function(e){var n=t(e,2),r=n[0],a=n[1];i.$element.on(r,a)})),this._onFileAdd=this.onFileAdd.bind(this),this.$element.on("fileuploadadd",this._onFileAdd)},setParams:function(t){this.base(t),this.uploader.data("blueimpFileupload")&&this.uploader.fileupload("option",{formData:this.formData})},getInProgress:function(){return this.uploader.fileupload("active")},onFileAdd:function(t,e){var n=this;t.stopPropagation();var i=!1;return this.allowedKinds&&(this._extensionList||this._createExtensionList(),i=!0),e.process().done((function(){var t=e.files[0],r=!0;if(i){var a=t.name.match(/\.([a-z0-4_]+)$/i)[1];-1===$.inArray(a.toLowerCase(),n._extensionList)&&(r=!1,n._rejectedFiles.type.push("“"+t.name+"”"))}t.size>n.settings.maxFileSize&&(n._rejectedFiles.size.push("“"+t.name+"”"),r=!1),r&&"function"==typeof n.settings.canAddMoreFiles&&!n.settings.canAddMoreFiles(n._validFileCounter)&&(n._rejectedFiles.limit.push("“"+t.name+"”"),r=!1),r&&(n._validFileCounter++,e.submit()),++n._totalFileCounter===e.originalFiles.length&&(n._totalFileCounter=0,n._validFileCounter=0,n.processErrorMessages())})),!0},destroy:function(){var e=this;this.uploader.fileupload("instance")&&this.uploader.fileupload("destroy"),this.$element.off("fileuploadadd",this._onFileAdd),Object.entries(this.events).forEach((function(n){var i=t(n,2),r=i[0],a=i[1];e.$element.off(r,a)}))}},{defaults:{autoUpload:!1,sequentialUploads:!0,maxFileSize:Craft.maxUploadSize,replaceFileInput:!1,createAction:"assets/upload",replaceAction:"assets/replace-file",deleteAction:"assets/delete-asset"}})},7e3:function(){Craft.UriFormatGenerator=Craft.BaseInputGenerator.extend({generateTargetValue:function(t){t=(t=t.replace(/<(.*?)>/g,"")).toLowerCase(),t=(t=(t=Craft.asciiString(t)).replace(/^[^a-z]+/,"")).replace(/[^a-z0-9]+$/,"");var e=Craft.filterArray(t.split(/[^a-z0-9]+/)).join(Craft.slugWordSeparator);return e&&this.settings.suffix&&(e+=this.settings.suffix),e}})},8654:function(){Craft.UserIndex=Craft.BaseElementIndex.extend({init:function(t,e,n){this.on("selectSource",this.updateUrl.bind(this)),this.base(t,e,n)},getDefaultSourceKey:function(){if("index"===this.settings.context&&"undefined"!=typeof defaultSourceSlug)for(var t=0;t<this.$sources.length;t++){var e=$(this.$sources[t]);if(e.data("slug")===defaultSourceSlug)return e.data("key")}return this.base()},updateUrl:function(){if("index"===this.settings.context){var t="users",e=this.$source.data("slug");e&&(t+="/".concat(e)),Craft.setPath(t)}}}),Craft.registerElementIndexClass("craft\\elements\\User",Craft.UserIndex)},9712:function(){Craft.VolumeFolderSelectorModal=Craft.BaseElementSelectorModal.extend({init:function(t){(t=Object.assign({},Craft.VolumeFolderSelectorModal.defaults,t,{showSiteMenu:!1})).indexSettings.disabledFolderIds=t.disabledFolderIds,this.base("craft\\elements\\Asset",t)},getElementIndexParams:function(){return Object.assign({},this.base(),{foldersOnly:!0})},hasSelection:function(){return this.base()||this.elementIndex&&this.elementIndex.sourcePath.length&&void 0!==this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId&&!this.settings.disabledFolderIds.includes(this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId)},getElementInfo:function(t){return[{folderId:t.length?parseInt(t.find(".element:first").data("folder-id")):this.elementIndex.sourcePath[this.elementIndex.sourcePath.length-1].folderId}]},getIndexSettings:function(){var t=this;return Object.assign(this.base(),{foldersOnly:!0,canSelectElement:function(e){var n=e.find(".element:first").data("folder-id");return n&&!t.settings.disabledFolderIds.includes(n)}})}},{defaults:{disabledFolderIds:[],indexSettings:{}}})},5537:function(){},9383:function(){},6558:function(t,e,n){var i=n(5537);i.__esModule&&(i=i.default),"string"==typeof i&&(i=[[t.id,i,""]]),i.locals&&(t.exports=i.locals),(0,n(9673).Z)("3790022a",i,!0,{})},2179:function(t,e,n){var i=n(9383);i.__esModule&&(i=i.default),"string"==typeof i&&(i=[[t.id,i,""]]),i.locals&&(t.exports=i.locals),(0,n(9673).Z)("80058a3c",i,!0,{})},9673:function(t,e,n){"use strict";function i(t,e){for(var n=[],i={},r=0;r<e.length;r++){var a=e[r],s=a[0],o={id:t+":"+r,css:a[1],media:a[2],sourceMap:a[3]};i[s]?i[s].parts.push(o):n.push(i[s]={id:s,parts:[o]})}return n}n.d(e,{Z:function(){return p}});var r="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!r)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var a={},s=r&&(document.head||document.getElementsByTagName("head")[0]),o=null,l=0,c=!1,h=function(){},u=null,d="data-vue-ssr-id",f="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function p(t,e,n,r){c=n,u=r||{};var s=i(t,e);return g(s),function(e){for(var n=[],r=0;r<s.length;r++){var o=s[r];(l=a[o.id]).refs--,n.push(l)}for(e?g(s=i(t,e)):s=[],r=0;r<n.length;r++){var l;if(0===(l=n[r]).refs){for(var c=0;c<l.parts.length;c++)l.parts[c]();delete a[l.id]}}}}function g(t){for(var e=0;e<t.length;e++){var n=t[e],i=a[n.id];if(i){i.refs++;for(var r=0;r<i.parts.length;r++)i.parts[r](n.parts[r]);for(;r<n.parts.length;r++)i.parts.push(v(n.parts[r]));i.parts.length>n.parts.length&&(i.parts.length=n.parts.length)}else{var s=[];for(r=0;r<n.parts.length;r++)s.push(v(n.parts[r]));a[n.id]={id:n.id,refs:1,parts:s}}}}function m(){var t=document.createElement("style");return t.type="text/css",s.appendChild(t),t}function v(t){var e,n,i=document.querySelector("style["+d+'~="'+t.id+'"]');if(i){if(c)return h;i.parentNode.removeChild(i)}if(f){var r=l++;i=o||(o=m()),e=C.bind(null,i,r,!1),n=C.bind(null,i,r,!0)}else i=m(),e=$.bind(null,i),n=function(){i.parentNode.removeChild(i)};return e(t),function(i){if(i){if(i.css===t.css&&i.media===t.media&&i.sourceMap===t.sourceMap)return;e(t=i)}else n()}}var b,y=(b=[],function(t,e){return b[t]=e,b.filter(Boolean).join("\n")});function C(t,e,n,i){var r=n?"":i.css;if(t.styleSheet)t.styleSheet.cssText=y(e,r);else{var a=document.createTextNode(r),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(a,s[e]):t.appendChild(a)}}function $(t,e){var n=e.css,i=e.media,r=e.sourceMap;if(i&&t.setAttribute("media",i),u.ssrId&&t.setAttribute(d,e.id),r&&(n+="\n/*# sourceURL="+r.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}}},__webpack_module_cache__={};function __webpack_require__(t){var e=__webpack_module_cache__[t];if(void 0!==e)return e.exports;var n=__webpack_module_cache__[t]={id:t,exports:{}};return __webpack_modules__[t](n,n.exports,__webpack_require__),n.exports}__webpack_require__.d=function(t,e){for(var n in e)__webpack_require__.o(e,n)&&!__webpack_require__.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},__webpack_require__.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var __webpack_exports__={};!function(){"use strict";function t(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i,t))&&(n<r||void 0===n&&r>=r)&&(n=r)}return n}function n(t){return t}__webpack_require__(2179),__webpack_require__(6558);var i=1,r=2,a=3,s=4,o=1e-6;function l(t){return"translate("+t+",0)"}function c(t){return"translate(0,"+t+")"}function h(t){return e=>+t(e)}function u(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),n=>+t(n)+e}function d(){return!this.__axis}function f(t,e){var f=[],p=null,g=null,m=6,v=6,b=3,y="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,C=t===i||t===s?-1:1,$=t===s||t===r?"x":"y",w=t===i||t===a?l:c;function _(l){var c=null==p?e.ticks?e.ticks.apply(e,f):e.domain():p,_=null==g?e.tickFormat?e.tickFormat.apply(e,f):n:g,S=Math.max(m,0)+b,x=e.range(),T=+x[0]+y,I=+x[x.length-1]+y,E=(e.bandwidth?u:h)(e.copy(),y),L=l.selection?l.selection():l,k=L.selectAll(".domain").data([null]),P=L.selectAll(".tick").data(c,e).order(),A=P.exit(),M=P.enter().append("g").attr("class","tick"),B=P.select("line"),D=P.select("text");k=k.merge(k.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),P=P.merge(M),B=B.merge(M.append("line").attr("stroke","currentColor").attr($+"2",C*m)),D=D.merge(M.append("text").attr("fill","currentColor").attr($,C*S).attr("dy",t===i?"0em":t===a?"0.71em":"0.32em")),l!==L&&(k=k.transition(l),P=P.transition(l),B=B.transition(l),D=D.transition(l),A=A.transition(l).attr("opacity",o).attr("transform",(function(t){return isFinite(t=E(t))?w(t+y):this.getAttribute("transform")})),M.attr("opacity",o).attr("transform",(function(t){var e=this.parentNode.__axis;return w((e&&isFinite(e=e(t))?e:E(t))+y)}))),A.remove(),k.attr("d",t===s||t===r?v?"M"+C*v+","+T+"H"+y+"V"+I+"H"+C*v:"M"+y+","+T+"V"+I:v?"M"+T+","+C*v+"V"+y+"H"+I+"V"+C*v:"M"+T+","+y+"H"+I),P.attr("opacity",1).attr("transform",(function(t){return w(E(t)+y)})),B.attr($+"2",C*m),D.attr($,C*S).text(_),L.filter(d).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===r?"start":t===s?"end":"middle"),L.each((function(){this.__axis=E}))}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return f=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(f=null==t?[]:Array.from(t),_):f.slice()},_.tickValues=function(t){return arguments.length?(p=null==t?null:Array.from(t),_):p&&p.slice()},_.tickFormat=function(t){return arguments.length?(g=t,_):g},_.tickSize=function(t){return arguments.length?(m=v=+t,_):m},_.tickSizeInner=function(t){return arguments.length?(m=+t,_):m},_.tickSizeOuter=function(t){return arguments.length?(v=+t,_):v},_.tickPadding=function(t){return arguments.length?(b=+t,_):b},_.offset=function(t){return arguments.length?(y=+t,_):y},_}function p(t){return f(r,t)}function g(t){return f(a,t)}function m(t){return f(s,t)}function v(){}function b(t){return null==t?v:function(){return this.querySelector(t)}}function y(){return[]}function C(t){return null==t?y:function(){return this.querySelectorAll(t)}}function w(t){return function(){return this.matches(t)}}function _(t){return function(e){return e.matches(t)}}var S=Array.prototype.find;function x(){return this.firstElementChild}var T=Array.prototype.filter;function I(){return Array.from(this.children)}function E(t){return new Array(t.length)}function L(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function k(t,e,n,i,r,a){for(var s,o=0,l=e.length,c=a.length;o<c;++o)(s=e[o])?(s.__data__=a[o],i[o]=s):n[o]=new L(t,a[o]);for(;o<l;++o)(s=e[o])&&(r[o]=s)}function P(t,e,n,i,r,a,s){var o,l,c,h=new Map,u=e.length,d=a.length,f=new Array(u);for(o=0;o<u;++o)(l=e[o])&&(f[o]=c=s.call(l,l.__data__,o,e)+"",h.has(c)?r[o]=l:h.set(c,l));for(o=0;o<d;++o)c=s.call(t,a[o],o,a)+"",(l=h.get(c))?(i[o]=l,l.__data__=a[o],h.delete(c)):n[o]=new L(t,a[o]);for(o=0;o<u;++o)(l=e[o])&&h.get(f[o])===l&&(r[o]=l)}function A(t){return t.__data__}function M(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function B(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}L.prototype={constructor:L,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var D="http://www.w3.org/1999/xhtml",O={svg:"http://www.w3.org/2000/svg",xhtml:D,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function F(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),O.hasOwnProperty(e)?{space:O[e],local:t}:t}function R(t){return function(){this.removeAttribute(t)}}function H(t){return function(){this.removeAttributeNS(t.space,t.local)}}function G(t,e){return function(){this.setAttribute(t,e)}}function N(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function j(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function U(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function z(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function V(t){return function(){this.style.removeProperty(t)}}function q(t,e,n){return function(){this.style.setProperty(t,e,n)}}function W(t,e,n){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,n)}}function Y(t,e){return t.style.getPropertyValue(e)||z(t).getComputedStyle(t,null).getPropertyValue(e)}function K(t){return function(){delete this[t]}}function X(t,e){return function(){this[t]=e}}function J(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function Q(t){return t.trim().split(/^|\s+/)}function Z(t){return t.classList||new tt(t)}function tt(t){this._node=t,this._names=Q(t.getAttribute("class")||"")}function et(t,e){for(var n=Z(t),i=-1,r=e.length;++i<r;)n.add(e[i])}function nt(t,e){for(var n=Z(t),i=-1,r=e.length;++i<r;)n.remove(e[i])}function it(t){return function(){et(this,t)}}function rt(t){return function(){nt(this,t)}}function at(t,e){return function(){(e.apply(this,arguments)?et:nt)(this,t)}}function st(){this.textContent=""}function ot(t){return function(){this.textContent=t}}function lt(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function ct(){this.innerHTML=""}function ht(t){return function(){this.innerHTML=t}}function ut(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function dt(){this.nextSibling&&this.parentNode.appendChild(this)}function ft(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function pt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===D&&e.documentElement.namespaceURI===D?e.createElement(t):e.createElementNS(n,t)}}function gt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function mt(t){var e=F(t);return(e.local?gt:pt)(e)}function vt(){return null}function bt(){var t=this.parentNode;t&&t.removeChild(this)}function yt(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Ct(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function $t(t){return function(){var e=this.__on;if(e){for(var n,i=0,r=-1,a=e.length;i<a;++i)n=e[i],t.type&&n.type!==t.type||n.name!==t.name?e[++r]=n:this.removeEventListener(n.type,n.listener,n.options);++r?e.length=r:delete this.__on}}}function wt(t,e,n){return function(){var i,r=this.__on,a=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(r)for(var s=0,o=r.length;s<o;++s)if((i=r[s]).type===t.type&&i.name===t.name)return this.removeEventListener(i.type,i.listener,i.options),this.addEventListener(i.type,i.listener=a,i.options=n),void(i.value=e);this.addEventListener(t.type,a,n),i={type:t.type,name:t.name,value:e,listener:a,options:n},r?r.push(i):this.__on=[i]}}function _t(t,e,n){var i=z(t),r=i.CustomEvent;"function"==typeof r?r=new r(e,n):(r=i.document.createEvent("Event"),n?(r.initEvent(e,n.bubbles,n.cancelable),r.detail=n.detail):r.initEvent(e,!1,!1)),t.dispatchEvent(r)}function St(t,e){return function(){return _t(this,t,e)}}function xt(t,e){return function(){return _t(this,t,e.apply(this,arguments))}}tt.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Tt=[null];function It(t,e){this._groups=t,this._parents=e}function Et(){return new It([[document.documentElement]],Tt)}It.prototype=Et.prototype={constructor:It,select:function(t){"function"!=typeof t&&(t=b(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s,o=e[r],l=o.length,c=i[r]=new Array(l),h=0;h<l;++h)(a=o[h])&&(s=t.call(a,a.__data__,h,o))&&("__data__"in a&&(s.__data__=a.__data__),c[h]=s);return new It(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}(t):C(t);for(var e=this._groups,n=e.length,i=[],r=[],a=0;a<n;++a)for(var s,o=e[a],l=o.length,c=0;c<l;++c)(s=o[c])&&(i.push(t.call(s,s.__data__,c,o)),r.push(s));return new It(i,r)},selectChild:function(t){return this.select(null==t?x:function(t){return function(){return S.call(this.children,t)}}("function"==typeof t?t:_(t)))},selectChildren:function(t){return this.selectAll(null==t?I:function(t){return function(){return T.call(this.children,t)}}("function"==typeof t?t:_(t)))},filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s=e[r],o=s.length,l=i[r]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new It(i,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,A);var n,i=e?P:k,r=this._parents,a=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var s=a.length,o=new Array(s),l=new Array(s),c=new Array(s),h=0;h<s;++h){var u=r[h],d=a[h],f=d.length,p=M(t.call(u,u&&u.__data__,h,r)),g=p.length,m=l[h]=new Array(g),v=o[h]=new Array(g);i(u,d,m,v,c[h]=new Array(f),p,e);for(var b,y,C=0,$=0;C<g;++C)if(b=m[C]){for(C>=$&&($=C+1);!(y=v[$])&&++$<g;);b._next=y||null}}return(o=new It(o,r))._enter=l,o._exit=c,o},enter:function(){return new It(this._enter||this._groups.map(E),this._parents)},exit:function(){return new It(this._exit||this._groups.map(E),this._parents)},join:function(t,e,n){var i=this.enter(),r=this,a=this.exit();return"function"==typeof t?(i=t(i))&&(i=i.selection()):i=i.append(t+""),null!=e&&(r=e(r))&&(r=r.selection()),null==n?a.remove():n(a),i&&r?i.merge(r).order():r},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,i=e._groups,r=n.length,a=i.length,s=Math.min(r,a),o=new Array(r),l=0;l<s;++l)for(var c,h=n[l],u=i[l],d=h.length,f=o[l]=new Array(d),p=0;p<d;++p)(c=h[p]||u[p])&&(f[p]=c);for(;l<r;++l)o[l]=n[l];return new It(o,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var i,r=t[e],a=r.length-1,s=r[a];--a>=0;)(i=r[a])&&(s&&4^i.compareDocumentPosition(s)&&s.parentNode.insertBefore(i,s),s=i);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=B);for(var n=this._groups,i=n.length,r=new Array(i),a=0;a<i;++a){for(var s,o=n[a],l=o.length,c=r[a]=new Array(l),h=0;h<l;++h)(s=o[h])&&(c[h]=s);c.sort(e)}return new It(r,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var i=t[e],r=0,a=i.length;r<a;++r){var s=i[r];if(s)return s}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,i=e.length;n<i;++n)for(var r,a=e[n],s=0,o=a.length;s<o;++s)(r=a[s])&&t.call(r,r.__data__,s,a);return this},attr:function(t,e){var n=F(t);if(arguments.length<2){var i=this.node();return n.local?i.getAttributeNS(n.space,n.local):i.getAttribute(n)}return this.each((null==e?n.local?H:R:"function"==typeof e?n.local?U:j:n.local?N:G)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?V:"function"==typeof e?W:q)(t,e,null==n?"":n)):Y(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?K:"function"==typeof e?J:X)(t,e)):this.node()[t]},classed:function(t,e){var n=Q(t+"");if(arguments.length<2){for(var i=Z(this.node()),r=-1,a=n.length;++r<a;)if(!i.contains(n[r]))return!1;return!0}return this.each(("function"==typeof e?at:e?it:rt)(n,e))},text:function(t){return arguments.length?this.each(null==t?st:("function"==typeof t?lt:ot)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?ct:("function"==typeof t?ut:ht)(t)):this.node().innerHTML},raise:function(){return this.each(dt)},lower:function(){return this.each(ft)},append:function(t){var e="function"==typeof t?t:mt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:mt(t),i=null==e?vt:"function"==typeof e?e:b(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(bt)},clone:function(t){return this.select(t?Ct:yt)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var i,r,a=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),s=a.length;if(!(arguments.length<2)){for(o=e?wt:$t,i=0;i<s;++i)this.each(o(a[i],e,n));return this}var o=this.node().__on;if(o)for(var l,c=0,h=o.length;c<h;++c)for(i=0,l=o[c];i<s;++i)if((r=a[i]).type===l.type&&r.name===l.name)return l.value},dispatch:function(t,e){return this.each(("function"==typeof e?xt:St)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var i,r=t[e],a=0,s=r.length;a<s;++a)(i=r[a])&&(yield i)}};var Lt=Et,kt={value:()=>{}};function Pt(){for(var t,e=0,n=arguments.length,i={};e<n;++e){if(!(t=arguments[e]+"")||t in i||/[\s.]/.test(t))throw new Error("illegal type: "+t);i[t]=[]}return new At(i)}function At(t){this._=t}function Mt(t,e){for(var n,i=0,r=t.length;i<r;++i)if((n=t[i]).name===e)return n.value}function Bt(t,e,n){for(var i=0,r=t.length;i<r;++i)if(t[i].name===e){t[i]=kt,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=n&&t.push({name:e,value:n}),t}At.prototype=Pt.prototype={constructor:At,on:function(t,e){var n,i,r=this._,a=(i=r,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),s=-1,o=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s<o;)if(n=(t=a[s]).type)r[n]=Bt(r[n],t.name,e);else if(null==e)for(n in r)r[n]=Bt(r[n],t.name,null);return this}for(;++s<o;)if((n=(t=a[s]).type)&&(n=Mt(r[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new At(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,i,r=new Array(n),a=0;a<n;++a)r[a]=arguments[a+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(a=0,n=(i=this._[t]).length;a<n;++a)i[a].value.apply(e,r)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var i=this._[t],r=0,a=i.length;r<a;++r)i[r].value.apply(e,n)}};var Dt,Ot,Ft=Pt,Rt=0,Ht=0,Gt=0,Nt=1e3,jt=0,Ut=0,zt=0,Vt="object"==typeof performance&&performance.now?performance:Date,qt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Wt(){return Ut||(qt(Yt),Ut=Vt.now()+zt)}function Yt(){Ut=0}function Kt(){this._call=this._time=this._next=null}function Xt(t,e,n){var i=new Kt;return i.restart(t,e,n),i}function Jt(){Ut=(jt=Vt.now())+zt,Rt=Ht=0;try{!function(){Wt(),++Rt;for(var t,e=Dt;e;)(t=Ut-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Rt}()}finally{Rt=0,function(){for(var t,e,n=Dt,i=1/0;n;)n._call?(i>n._time&&(i=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:Dt=e);Ot=t,Zt(i)}(),Ut=0}}function Qt(){var t=Vt.now(),e=t-jt;e>Nt&&(zt-=e,jt=t)}function Zt(t){Rt||(Ht&&(Ht=clearTimeout(Ht)),t-Ut>24?(t<1/0&&(Ht=setTimeout(Jt,t-Vt.now()-zt)),Gt&&(Gt=clearInterval(Gt))):(Gt||(jt=Vt.now(),Gt=setInterval(Qt,Nt)),Rt=1,qt(Jt)))}function te(t,e,n){var i=new Kt;return e=null==e?0:+e,i.restart((n=>{i.stop(),t(n+e)}),e,n),i}Kt.prototype=Xt.prototype={constructor:Kt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?Wt():+n)+(null==e?0:+e),this._next||Ot===this||(Ot?Ot._next=this:Dt=this,Ot=this),this._call=t,this._time=n,Zt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Zt())}};var ee=Ft("start","end","cancel","interrupt"),ne=[],ie=0,re=3;function ae(t,e,n,i,r,a){var s=t.__transition;if(s){if(n in s)return}else t.__transition={};!function(t,e,n){var i,r=t.__transition;function a(l){var c,h,u,d;if(1!==n.state)return o();for(c in r)if((d=r[c]).name===n.name){if(d.state===re)return te(a);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete r[c]):+c<e&&(d.state=6,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete r[c])}if(te((function(){n.state===re&&(n.state=4,n.timer.restart(s,n.delay,n.time),s(l))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=re,i=new Array(u=n.tween.length),c=0,h=-1;c<u;++c)(d=n.tween[c].value.call(t,t.__data__,n.index,n.group))&&(i[++h]=d);i.length=h+1}}function s(e){for(var r=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(o),n.state=5,1),a=-1,s=i.length;++a<s;)i[a].call(t,r);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),o())}function o(){for(var i in n.state=6,n.timer.stop(),delete r[e],r)return;delete t.__transition}r[e]=n,n.timer=Xt((function(t){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=t&&a(t-n.delay)}),0,n.time)}(t,n,{name:e,index:i,group:r,on:ee,tween:ne,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:ie})}function se(t,e){var n=le(t,e);if(n.state>ie)throw new Error("too late; already scheduled");return n}function oe(t,e){var n=le(t,e);if(n.state>re)throw new Error("too late; already running");return n}function le(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function ce(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var he,ue=180/Math.PI,de={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function fe(t,e,n,i,r,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*n+e*i)&&(n-=t*l,i-=e*l),(o=Math.sqrt(n*n+i*i))&&(n/=o,i/=o,l/=o),t*i<e*n&&(t=-t,e=-e,l=-l,s=-s),{translateX:r,translateY:a,rotate:Math.atan2(e,t)*ue,skewX:Math.atan(l)*ue,scaleX:s,scaleY:o}}function pe(t,e,n,i){function r(t){return t.length?t.pop()+" ":""}return function(a,s){var o=[],l=[];return a=t(a),s=t(s),function(t,i,r,a,s,o){if(t!==r||i!==a){var l=s.push("translate(",null,e,null,n);o.push({i:l-4,x:ce(t,r)},{i:l-2,x:ce(i,a)})}else(r||a)&&s.push("translate("+r+e+a+n)}(a.translateX,a.translateY,s.translateX,s.translateY,o,l),function(t,e,n,a){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),a.push({i:n.push(r(n)+"rotate(",null,i)-2,x:ce(t,e)})):e&&n.push(r(n)+"rotate("+e+i)}(a.rotate,s.rotate,o,l),function(t,e,n,a){t!==e?a.push({i:n.push(r(n)+"skewX(",null,i)-2,x:ce(t,e)}):e&&n.push(r(n)+"skewX("+e+i)}(a.skewX,s.skewX,o,l),function(t,e,n,i,a,s){if(t!==n||e!==i){var o=a.push(r(a)+"scale(",null,",",null,")");s.push({i:o-4,x:ce(t,n)},{i:o-2,x:ce(e,i)})}else 1===n&&1===i||a.push(r(a)+"scale("+n+","+i+")")}(a.scaleX,a.scaleY,s.scaleX,s.scaleY,o,l),a=s=null,function(t){for(var e,n=-1,i=l.length;++n<i;)o[(e=l[n]).i]=e.x(t);return o.join("")}}}var ge=pe((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?de:fe(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),me=pe((function(t){return null==t?de:(he||(he=document.createElementNS("http://www.w3.org/2000/svg","g")),he.setAttribute("transform",t),(t=he.transform.baseVal.consolidate())?fe((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):de)}),", ",")",")");function ve(t,e){var n,i;return function(){var r=oe(this,t),a=r.tween;if(a!==n)for(var s=0,o=(i=n=a).length;s<o;++s)if(i[s].name===e){(i=i.slice()).splice(s,1);break}r.tween=i}}function be(t,e,n){var i,r;if("function"!=typeof n)throw new Error;return function(){var a=oe(this,t),s=a.tween;if(s!==i){r=(i=s).slice();for(var o={name:e,value:n},l=0,c=r.length;l<c;++l)if(r[l].name===e){r[l]=o;break}l===c&&r.push(o)}a.tween=r}}function ye(t,e,n){var i=t._id;return t.each((function(){var t=oe(this,i);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return le(t,i).value[e]}}function Ce(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function $e(t,e){var n=Object.create(t.prototype);for(var i in e)n[i]=e[i];return n}function we(){}var _e=.7,Se=1/_e,xe="\\s*([+-]?\\d+)\\s*",Te="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Ie="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Ee=/^#([0-9a-f]{3,8})$/,Le=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),ke=new RegExp(`^rgb\\(${Ie},${Ie},${Ie}\\)$`),Pe=new RegExp(`^rgba\\(${xe},${xe},${xe},${Te}\\)$`),Ae=new RegExp(`^rgba\\(${Ie},${Ie},${Ie},${Te}\\)$`),Me=new RegExp(`^hsl\\(${Te},${Ie},${Ie}\\)$`),Be=new RegExp(`^hsla\\(${Te},${Ie},${Ie},${Te}\\)$`),De={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Oe(){return this.rgb().formatHex()}function Fe(){return this.rgb().formatRgb()}function Re(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=Ee.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?He(e):3===n?new je(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Ge(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Ge(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Le.exec(t))?new je(e[1],e[2],e[3],1):(e=ke.exec(t))?new je(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Pe.exec(t))?Ge(e[1],e[2],e[3],e[4]):(e=Ae.exec(t))?Ge(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=Me.exec(t))?Ye(e[1],e[2]/100,e[3]/100,1):(e=Be.exec(t))?Ye(e[1],e[2]/100,e[3]/100,e[4]):De.hasOwnProperty(t)?He(De[t]):"transparent"===t?new je(NaN,NaN,NaN,0):null}function He(t){return new je(t>>16&255,t>>8&255,255&t,1)}function Ge(t,e,n,i){return i<=0&&(t=e=n=NaN),new je(t,e,n,i)}function Ne(t,e,n,i){return 1===arguments.length?function(t){return t instanceof we||(t=Re(t)),t?new je((t=t.rgb()).r,t.g,t.b,t.opacity):new je}(t):new je(t,e,n,null==i?1:i)}function je(t,e,n,i){this.r=+t,this.g=+e,this.b=+n,this.opacity=+i}function Ue(){return`#${We(this.r)}${We(this.g)}${We(this.b)}`}function ze(){const t=Ve(this.opacity);return`${1===t?"rgb(":"rgba("}${qe(this.r)}, ${qe(this.g)}, ${qe(this.b)}${1===t?")":`, ${t})`}`}function Ve(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function qe(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function We(t){return((t=qe(t))<16?"0":"")+t.toString(16)}function Ye(t,e,n,i){return i<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Xe(t,e,n,i)}function Ke(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof we||(t=Re(t)),!t)return new Xe;if(t instanceof Xe)return t;var e=(t=t.rgb()).r/255,n=t.g/255,i=t.b/255,r=Math.min(e,n,i),a=Math.max(e,n,i),s=NaN,o=a-r,l=(a+r)/2;return o?(s=e===a?(n-i)/o+6*(n<i):n===a?(i-e)/o+2:(e-n)/o+4,o/=l<.5?a+r:2-a-r,s*=60):o=l>0&&l<1?0:s,new Xe(s,o,l,t.opacity)}function Xe(t,e,n,i){this.h=+t,this.s=+e,this.l=+n,this.opacity=+i}function Je(t){return(t=(t||0)%360)<0?t+360:t}function Qe(t){return Math.max(0,Math.min(1,t||0))}function Ze(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function tn(t,e,n,i,r){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*n+(1+3*t+3*a-3*s)*i+s*r)/6}Ce(we,Re,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Oe,formatHex:Oe,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Ke(this).formatHsl()},formatRgb:Fe,toString:Fe}),Ce(je,Ne,$e(we,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?_e:Math.pow(_e,t),new je(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new je(qe(this.r),qe(this.g),qe(this.b),Ve(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ue,formatHex:Ue,formatHex8:function(){return`#${We(this.r)}${We(this.g)}${We(this.b)}${We(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:ze,toString:ze})),Ce(Xe,(function(t,e,n,i){return 1===arguments.length?Ke(t):new Xe(t,e,n,null==i?1:i)}),$e(we,{brighter(t){return t=null==t?Se:Math.pow(Se,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,i=n+(n<.5?n:1-n)*e,r=2*n-i;return new je(Ze(t>=240?t-240:t+120,r,i),Ze(t,r,i),Ze(t<120?t+240:t-120,r,i),this.opacity)},clamp(){return new Xe(Je(this.h),Qe(this.s),Qe(this.l),Ve(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Ve(this.opacity);return`${1===t?"hsl(":"hsla("}${Je(this.h)}, ${100*Qe(this.s)}%, ${100*Qe(this.l)}%${1===t?")":`, ${t})`}`}}));var en=t=>()=>t;function nn(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):en(isNaN(t)?e:t)}var rn=function t(e){var n=function(t){return 1==(t=+t)?nn:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(i){return Math.pow(t+i*e,n)}}(e,n,t):en(isNaN(e)?n:e)}}(e);function i(t,e){var i=n((t=Ne(t)).r,(e=Ne(e)).r),r=n(t.g,e.g),a=n(t.b,e.b),s=nn(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=r(e),t.b=a(e),t.opacity=s(e),t+""}}return i.gamma=t,i}(1);function an(t){return function(e){var n,i,r=e.length,a=new Array(r),s=new Array(r),o=new Array(r);for(n=0;n<r;++n)i=Ne(e[n]),a[n]=i.r||0,s[n]=i.g||0,o[n]=i.b||0;return a=t(a),s=t(s),o=t(o),i.opacity=1,function(t){return i.r=a(t),i.g=s(t),i.b=o(t),i+""}}}an((function(t){var e=t.length-1;return function(n){var i=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),r=t[i],a=t[i+1],s=i>0?t[i-1]:2*r-a,o=i<e-1?t[i+2]:2*a-r;return tn((n-i/e)*e,s,r,a,o)}})),an((function(t){var e=t.length;return function(n){var i=Math.floor(((n%=1)<0?++n:n)*e),r=t[(i+e-1)%e],a=t[i%e],s=t[(i+1)%e],o=t[(i+2)%e];return tn((n-i/e)*e,r,a,s,o)}}));var sn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,on=new RegExp(sn.source,"g");function ln(t,e){var n,i,r,a=sn.lastIndex=on.lastIndex=0,s=-1,o=[],l=[];for(t+="",e+="";(n=sn.exec(t))&&(i=on.exec(e));)(r=i.index)>a&&(r=e.slice(a,r),o[s]?o[s]+=r:o[++s]=r),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:ce(n,i)})),a=on.lastIndex;return a<e.length&&(r=e.slice(a),o[s]?o[s]+=r:o[++s]=r),o.length<2?l[0]?function(t){return function(e){return t(e)+""}}(l[0].x):function(t){return function(){return t}}(e):(e=l.length,function(t){for(var n,i=0;i<e;++i)o[(n=l[i]).i]=n.x(t);return o.join("")})}function cn(t,e){var n;return("number"==typeof e?ce:e instanceof Re?rn:(n=Re(e))?(e=n,rn):ln)(t,e)}function hn(t){return function(){this.removeAttribute(t)}}function un(t){return function(){this.removeAttributeNS(t.space,t.local)}}function dn(t,e,n){var i,r,a=n+"";return function(){var s=this.getAttribute(t);return s===a?null:s===i?r:r=e(i=s,n)}}function fn(t,e,n){var i,r,a=n+"";return function(){var s=this.getAttributeNS(t.space,t.local);return s===a?null:s===i?r:r=e(i=s,n)}}function pn(t,e,n){var i,r,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttribute(t))===(o=l+"")?null:s===i&&o===r?a:(r=o,a=e(i=s,l));this.removeAttribute(t)}}function gn(t,e,n){var i,r,a;return function(){var s,o,l=n(this);if(null!=l)return(s=this.getAttributeNS(t.space,t.local))===(o=l+"")?null:s===i&&o===r?a:(r=o,a=e(i=s,l));this.removeAttributeNS(t.space,t.local)}}function mn(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,r)),n}return r._value=e,r}function vn(t,e){var n,i;function r(){var r=e.apply(this,arguments);return r!==i&&(n=(i=r)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,r)),n}return r._value=e,r}function bn(t,e){return function(){se(this,t).delay=+e.apply(this,arguments)}}function yn(t,e){return e=+e,function(){se(this,t).delay=e}}function Cn(t,e){return function(){oe(this,t).duration=+e.apply(this,arguments)}}function $n(t,e){return e=+e,function(){oe(this,t).duration=e}}var wn=Lt.prototype.constructor;function _n(t){return function(){this.style.removeProperty(t)}}var Sn=0;function xn(t,e,n,i){this._groups=t,this._parents=e,this._name=n,this._id=i}function Tn(){return++Sn}var In=Lt.prototype;xn.prototype=function(t){return Lt().transition(t)}.prototype={constructor:xn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=b(t));for(var i=this._groups,r=i.length,a=new Array(r),s=0;s<r;++s)for(var o,l,c=i[s],h=c.length,u=a[s]=new Array(h),d=0;d<h;++d)(o=c[d])&&(l=t.call(o,o.__data__,d,c))&&("__data__"in o&&(l.__data__=o.__data__),u[d]=l,ae(u[d],e,n,d,u,le(o,n)));return new xn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=C(t));for(var i=this._groups,r=i.length,a=[],s=[],o=0;o<r;++o)for(var l,c=i[o],h=c.length,u=0;u<h;++u)if(l=c[u]){for(var d,f=t.call(l,l.__data__,u,c),p=le(l,n),g=0,m=f.length;g<m;++g)(d=f[g])&&ae(d,e,n,g,f,p);a.push(f),s.push(l)}return new xn(a,s,e,n)},selectChild:In.selectChild,selectChildren:In.selectChildren,filter:function(t){"function"!=typeof t&&(t=w(t));for(var e=this._groups,n=e.length,i=new Array(n),r=0;r<n;++r)for(var a,s=e[r],o=s.length,l=i[r]=[],c=0;c<o;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&l.push(a);return new xn(i,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,i=e.length,r=n.length,a=Math.min(i,r),s=new Array(i),o=0;o<a;++o)for(var l,c=e[o],h=n[o],u=c.length,d=s[o]=new Array(u),f=0;f<u;++f)(l=c[f]||h[f])&&(d[f]=l);for(;o<i;++o)s[o]=e[o];return new xn(s,this._parents,this._name,this._id)},selection:function(){return new wn(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Tn(),i=this._groups,r=i.length,a=0;a<r;++a)for(var s,o=i[a],l=o.length,c=0;c<l;++c)if(s=o[c]){var h=le(s,e);ae(s,t,n,c,o,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new xn(i,this._parents,t,n)},call:In.call,nodes:In.nodes,node:In.node,size:In.size,empty:In.empty,each:In.each,on:function(t,e){var n=this._id;return arguments.length<2?le(this.node(),n).on.on(t):this.each(function(t,e,n){var i,r,a=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?se:oe;return function(){var s=a(this,t),o=s.on;o!==i&&(r=(i=o).copy()).on(e,n),s.on=r}}(n,t,e))},attr:function(t,e){var n=F(t),i="transform"===n?me:cn;return this.attrTween(t,"function"==typeof e?(n.local?gn:pn)(n,i,ye(this,"attr."+t,e)):null==e?(n.local?un:hn)(n):(n.local?fn:dn)(n,i,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var i=F(t);return this.tween(n,(i.local?mn:vn)(i,e))},style:function(t,e,n){var i="transform"==(t+="")?ge:cn;return null==e?this.styleTween(t,function(t,e){var n,i,r;return function(){var a=Y(this,t),s=(this.style.removeProperty(t),Y(this,t));return a===s?null:a===n&&s===i?r:r=e(n=a,i=s)}}(t,i)).on("end.style."+t,_n(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var i,r,a;return function(){var s=Y(this,t),o=n(this),l=o+"";return null==o&&(this.style.removeProperty(t),l=o=Y(this,t)),s===l?null:s===i&&l===r?a:(r=l,a=e(i=s,o))}}(t,i,ye(this,"style."+t,e))).each(function(t,e){var n,i,r,a,s="style."+e,o="end."+s;return function(){var l=oe(this,t),c=l.on,h=null==l.value[s]?a||(a=_n(e)):void 0;c===n&&r===h||(i=(n=c).copy()).on(o,r=h),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,n){var i,r,a=n+"";return function(){var s=Y(this,t);return s===a?null:s===i?r:r=e(i=s,n)}}(t,i,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,n){var i,r;function a(){var a=e.apply(this,arguments);return a!==r&&(i=(r=a)&&function(t,e,n){return function(i){this.style.setProperty(t,e.call(this,i),n)}}(t,a,n)),i}return a._value=e,a}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(ye(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function i(){var i=t.apply(this,arguments);return i!==n&&(e=(n=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var i,r=le(this.node(),n).tween,a=0,s=r.length;a<s;++a)if((i=r[a]).name===t)return i.value;return null}return this.each((null==e?ve:be)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?bn:yn)(e,t)):le(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?Cn:$n)(e,t)):le(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){oe(this,t).ease=e}}(e,t)):le(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;oe(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,i=n._id,r=n.size();return new Promise((function(a,s){var o={value:s},l={value:function(){0==--r&&a()}};n.each((function(){var n=oe(this,i),r=n.on;r!==t&&((e=(t=r).copy())._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),n.on=e})),0===r&&a()}))},[Symbol.iterator]:In[Symbol.iterator]};var En={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Ln(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}Lt.prototype.interrupt=function(t){return this.each((function(){!function(t,e){var n,i,r,a=t.__transition,s=!0;if(a){for(r in e=null==e?null:e+"",a)(n=a[r]).name===e?(i=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(i?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete a[r]):s=!1;s&&delete t.__transition}}(this,t)}))},Lt.prototype.transition=function(t){var e,n;t instanceof xn?(e=t._id,t=t._name):(e=Tn(),(n=En).time=Wt(),t=null==t?null:t+"");for(var i=this._groups,r=i.length,a=0;a<r;++a)for(var s,o=i[a],l=o.length,c=0;c<l;++c)(s=o[c])&&ae(s,t,e,c,o,n||Ln(s,e));return new xn(i,this._parents,t,e)};const{abs:kn,max:Pn,min:An}=Math;function Mn(t){return{type:t}}function Bn(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,i=t.slice(0,n);return[i.length>1?i[0]+i.slice(2):i,+t.slice(n+1)]}function Dn(t){return(t=Bn(Math.abs(t)))?t[1]:NaN}["w","e"].map(Mn),["n","s"].map(Mn),["n","w","e","s","nw","ne","sw","se"].map(Mn);var On,Fn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Rn(t){if(!(e=Fn.exec(t)))throw new Error("invalid format: "+t);var e;return new Hn({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Hn(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Gn(t,e){var n=Bn(t,e);if(!n)return t+"";var i=n[0],r=n[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}Rn.prototype=Hn.prototype,Hn.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var Nn={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Gn(100*t,e),r:Gn,s:function(t,e){var n=Bn(t,e);if(!n)return t+"";var i=n[0],r=n[1],a=r-(On=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,s=i.length;return a===s?i:a>s?i+new Array(a-s+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Bn(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function jn(t){return t}var Un,zn,Vn,qn=Array.prototype.map,Wn=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Yn(t){var e,n,i=void 0===t.grouping||void 0===t.thousands?jn:(e=qn.call(t.grouping,Number),n=t.thousands+"",function(t,i){for(var r=t.length,a=[],s=0,o=e[0],l=0;r>0&&o>0&&(l+o+1>i&&(o=Math.max(1,i-l)),a.push(t.substring(r-=o,r+o)),!((l+=o+1)>i));)o=e[s=(s+1)%e.length];return a.reverse().join(n)}),r=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",o=void 0===t.numerals?jn:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(qn.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"−":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Rn(t)).fill,n=t.align,u=t.sign,d=t.symbol,f=t.zero,p=t.width,g=t.comma,m=t.precision,v=t.trim,b=t.type;"n"===b?(g=!0,b="g"):Nn[b]||(void 0===m&&(m=12),v=!0,b="g"),(f||"0"===e&&"="===n)&&(f=!0,e="0",n="=");var y="$"===d?r:"#"===d&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",C="$"===d?a:/[%p]/.test(b)?l:"",$=Nn[b],w=/[defgprs%]/.test(b);function _(t){var r,a,l,d=y,_=C;if("c"===b)_=$(t)+_,t="";else{var S=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:$(Math.abs(t),m),v&&(t=function(t){t:for(var e,n=t.length,i=1,r=-1;i<n;++i)switch(t[i]){case".":r=e=i;break;case"0":0===r&&(r=i),e=i;break;default:if(!+t[i])break t;r>0&&(r=0)}return r>0?t.slice(0,r)+t.slice(e+1):t}(t)),S&&0==+t&&"+"!==u&&(S=!1),d=(S?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===b?Wn[8+On/3]:"")+_+(S&&"("===u?")":""),w)for(r=-1,a=t.length;++r<a;)if(48>(l=t.charCodeAt(r))||l>57){_=(46===l?s+t.slice(r+1):t.slice(r))+_,t=t.slice(0,r);break}}g&&!f&&(t=i(t,1/0));var x=d.length+t.length+_.length,T=x<p?new Array(p-x+1).join(e):"";switch(g&&f&&(t=i(T+t,T.length?p-_.length:1/0),T=""),n){case"<":t=d+t+_+T;break;case"=":t=d+T+t+_;break;case"^":t=T.slice(0,x=T.length>>1)+d+t+_+T.slice(x);break;default:t=T+d+t+_}return o(t)}return m=void 0===m?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,m)):Math.max(0,Math.min(20,m)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var n=u(((t=Rn(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Dn(e)/3))),r=Math.pow(10,-i),a=Wn[8+i/3];return function(t){return n(r*t)+a}}}}Un=Yn({thousands:",",grouping:[3],currency:["$",""]}),zn=Un.format,Vn=Un.formatPrefix;const Kn=Math.sqrt(50),Xn=Math.sqrt(10),Jn=Math.sqrt(2);function Qn(t,e,n){const i=(e-t)/Math.max(0,n),r=Math.floor(Math.log10(i)),a=i/Math.pow(10,r),s=a>=Kn?10:a>=Xn?5:a>=Jn?2:1;let o,l,c;return r<0?(c=Math.pow(10,-r)/s,o=Math.round(t*c),l=Math.round(e*c),o/c<t&&++o,l/c>e&&--l,c=-c):(c=Math.pow(10,r)*s,o=Math.round(t/c),l=Math.round(e/c),o*c<t&&++o,l*c>e&&--l),l<o&&.5<=n&&n<2?Qn(t,e,2*n):[o,l,c]}function Zn(t,e,n){return Qn(t=+t,e=+e,n=+n)[2]}function ti(t,e,n){n=+n;const i=(e=+e)<(t=+t),r=i?Zn(e,t,n):Zn(t,e,n);return(i?-1:1)*(r<0?1/-r:r)}function ei(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function ni(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function ii(t){let e,n,i;function r(t,i,r=0,a=t.length){if(r<a){if(0!==e(i,i))return a;do{const e=r+a>>>1;n(t[e],i)<0?r=e+1:a=e}while(r<a)}return r}return 2!==t.length?(e=ei,n=(e,n)=>ei(t(e),n),i=(e,n)=>t(e)-n):(e=t===ei||t===ni?t:ri,n=t,i=t),{left:r,center:function(t,e,n=0,a=t.length){const s=r(t,e,n,a-1);return s>n&&i(t[s-1],e)>-i(t[s],e)?s-1:s},right:function(t,i,r=0,a=t.length){if(r<a){if(0!==e(i,i))return a;do{const e=r+a>>>1;n(t[e],i)<=0?r=e+1:a=e}while(r<a)}return r}}}function ri(){return 0}const ai=ii(ei),si=ai.right;ai.left,ii((function(t){return null===t?NaN:+t})).center;var oi=si;function li(t,e){var n,i=e?e.length:0,r=t?Math.min(i,t.length):0,a=new Array(r),s=new Array(i);for(n=0;n<r;++n)a[n]=di(t[n],e[n]);for(;n<i;++n)s[n]=e[n];return function(t){for(n=0;n<r;++n)s[n]=a[n](t);return s}}function ci(t,e){var n=new Date;return t=+t,e=+e,function(i){return n.setTime(t*(1-i)+e*i),n}}function hi(t,e){var n,i={},r={};for(n in null!==t&&"object"==typeof t||(t={}),null!==e&&"object"==typeof e||(e={}),e)n in t?i[n]=di(t[n],e[n]):r[n]=e[n];return function(t){for(n in i)r[n]=i[n](t);return r}}function ui(t,e){e||(e=[]);var n,i=t?Math.min(e.length,t.length):0,r=e.slice();return function(a){for(n=0;n<i;++n)r[n]=t[n]*(1-a)+e[n]*a;return r}}function di(t,e){var n,i,r=typeof e;return null==e||"boolean"===r?en(e):("number"===r?ce:"string"===r?(n=Re(e))?(e=n,rn):ln:e instanceof Re?rn:e instanceof Date?ci:(i=e,!ArrayBuffer.isView(i)||i instanceof DataView?Array.isArray(e)?li:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?hi:ce:ui))(t,e)}function fi(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function pi(t){return+t}var gi=[0,1];function mi(t){return t}function vi(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:(n=isNaN(e)?NaN:.5,function(){return n});var n}function bi(t,e,n){var i=t[0],r=t[1],a=e[0],s=e[1];return r<i?(i=vi(r,i),a=n(s,a)):(i=vi(i,r),a=n(a,s)),function(t){return a(i(t))}}function yi(t,e,n){var i=Math.min(t.length,e.length)-1,r=new Array(i),a=new Array(i),s=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<i;)r[s]=vi(t[s],t[s+1]),a[s]=n(e[s],e[s+1]);return function(e){var n=oi(t,e,1,i)-1;return a[n](r[n](e))}}function Ci(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function $i(){return function(){var t,e,n,i,r,a,s=gi,o=gi,l=di,c=mi;function h(){var t,e,n,l=Math.min(s.length,o.length);return c!==mi&&(t=s[0],e=s[l-1],t>e&&(n=t,t=e,e=n),c=function(n){return Math.max(t,Math.min(e,n))}),i=l>2?yi:bi,r=a=null,u}function u(e){return null==e||isNaN(e=+e)?n:(r||(r=i(s.map(t),o,l)))(t(c(e)))}return u.invert=function(n){return c(e((a||(a=i(o,s.map(t),ce)))(n)))},u.domain=function(t){return arguments.length?(s=Array.from(t,pi),h()):s.slice()},u.range=function(t){return arguments.length?(o=Array.from(t),h()):o.slice()},u.rangeRound=function(t){return o=Array.from(t),l=fi,h()},u.clamp=function(t){return arguments.length?(c=!!t||mi,h()):c!==mi},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(n=t,u):n},function(n,i){return t=n,e=i,h()}}()(mi,mi)}function wi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}function _i(t){var e=t.domain;return t.ticks=function(t){var n=e();return function(t,e,n){if(!((n=+n)>0))return[];if((t=+t)==(e=+e))return[t];const i=e<t,[r,a,s]=i?Qn(e,t,n):Qn(t,e,n);if(!(a>=r))return[];const o=a-r+1,l=new Array(o);if(i)if(s<0)for(let t=0;t<o;++t)l[t]=(a-t)/-s;else for(let t=0;t<o;++t)l[t]=(a-t)*s;else if(s<0)for(let t=0;t<o;++t)l[t]=(r+t)/-s;else for(let t=0;t<o;++t)l[t]=(r+t)*s;return l}(n[0],n[n.length-1],null==t?10:t)},t.tickFormat=function(t,n){var i=e();return function(t,e,n,i){var r,a=ti(t,e,n);switch((i=Rn(null==i?",f":i)).type){case"s":var s=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(r=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Dn(e)/3)))-Dn(Math.abs(t)))}(a,s))||(i.precision=r),Vn(i,s);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(r=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Dn(e)-Dn(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=r-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Dn(Math.abs(t)))}(a))||(i.precision=r-2*("%"===i.type))}return zn(i)}(i[0],i[i.length-1],null==t?10:t,n)},t.nice=function(n){null==n&&(n=10);var i,r,a=e(),s=0,o=a.length-1,l=a[s],c=a[o],h=10;for(c<l&&(r=l,l=c,c=r,r=s,s=o,o=r);h-- >0;){if((r=Zn(l,c,n))===i)return a[s]=l,a[o]=c,e(a);if(r>0)l=Math.floor(l/r)*r,c=Math.ceil(c/r)*r;else{if(!(r<0))break;l=Math.ceil(l*r)/r,c=Math.floor(c*r)/r}i=r}return t},t}function Si(){var t=$i();return t.copy=function(){return Ci(t,Si())},wi.apply(t,arguments),_i(t)}const xi=1e3,Ti=6e4,Ii=36e5,Ei=864e5,Li=6048e5,ki=31536e6,Pi=new Date,Ai=new Date;function Mi(t,e,n,i){function r(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return r.floor=e=>(t(e=new Date(+e)),e),r.ceil=n=>(t(n=new Date(n-1)),e(n,1),t(n),n),r.round=t=>{const e=r(t),n=r.ceil(t);return t-e<n-t?e:n},r.offset=(t,n)=>(e(t=new Date(+t),null==n?1:Math.floor(n)),t),r.range=(n,i,a)=>{const s=[];if(n=r.ceil(n),a=null==a?1:Math.floor(a),!(n<i&&a>0))return s;let o;do{s.push(o=new Date(+n)),e(n,a),t(n)}while(o<n&&n<i);return s},r.filter=n=>Mi((e=>{if(e>=e)for(;t(e),!n(e);)e.setTime(e-1)}),((t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!n(t););else for(;--i>=0;)for(;e(t,1),!n(t););})),n&&(r.count=(e,i)=>(Pi.setTime(+e),Ai.setTime(+i),t(Pi),t(Ai),Math.floor(n(Pi,Ai))),r.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?e=>i(e)%t==0:e=>r.count(0,e)%t==0):r:null)),r}const Bi=Mi((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Bi.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Mi((e=>{e.setTime(Math.floor(e/t)*t)}),((e,n)=>{e.setTime(+e+n*t)}),((e,n)=>(n-e)/t)):Bi:null),Bi.range;const Di=Mi((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*xi)}),((t,e)=>(e-t)/xi),(t=>t.getUTCSeconds())),Oi=(Di.range,Mi((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*xi)}),((t,e)=>{t.setTime(+t+e*Ti)}),((t,e)=>(e-t)/Ti),(t=>t.getMinutes()))),Fi=(Oi.range,Mi((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*Ti)}),((t,e)=>(e-t)/Ti),(t=>t.getUTCMinutes()))),Ri=(Fi.range,Mi((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*xi-t.getMinutes()*Ti)}),((t,e)=>{t.setTime(+t+e*Ii)}),((t,e)=>(e-t)/Ii),(t=>t.getHours()))),Hi=(Ri.range,Mi((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*Ii)}),((t,e)=>(e-t)/Ii),(t=>t.getUTCHours()))),Gi=(Hi.range,Mi((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ti)/Ei),(t=>t.getDate()-1))),Ni=(Gi.range,Mi((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Ei),(t=>t.getUTCDate()-1))),ji=(Ni.range,Mi((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/Ei),(t=>Math.floor(t/Ei))));function Ui(t){return Mi((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ti)/Li))}ji.range;const zi=Ui(0),Vi=Ui(1),qi=Ui(2),Wi=Ui(3),Yi=Ui(4),Ki=Ui(5),Xi=Ui(6);function Ji(t){return Mi((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/Li))}zi.range,Vi.range,qi.range,Wi.range,Yi.range,Ki.range,Xi.range;const Qi=Ji(0),Zi=Ji(1),tr=Ji(2),er=Ji(3),nr=Ji(4),ir=Ji(5),rr=Ji(6),ar=(Qi.range,Zi.range,tr.range,er.range,nr.range,ir.range,rr.range,Mi((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),sr=(ar.range,Mi((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),or=(sr.range,Mi((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));or.every=t=>isFinite(t=Math.floor(t))&&t>0?Mi((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,n)=>{e.setFullYear(e.getFullYear()+n*t)})):null,or.range;const lr=Mi((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));function cr(t,e,n,i,r,a){const s=[[Di,1,xi],[Di,5,5e3],[Di,15,15e3],[Di,30,3e4],[a,1,Ti],[a,5,3e5],[a,15,9e5],[a,30,18e5],[r,1,Ii],[r,3,108e5],[r,6,216e5],[r,12,432e5],[i,1,Ei],[i,2,1728e5],[n,1,Li],[e,1,2592e6],[e,3,7776e6],[t,1,ki]];function o(e,n,i){const r=Math.abs(n-e)/i,a=ii((([,,t])=>t)).right(s,r);if(a===s.length)return t.every(ti(e/ki,n/ki,i));if(0===a)return Bi.every(Math.max(ti(e,n,i),1));const[o,l]=s[r/s[a-1][2]<s[a][2]/r?a-1:a];return o.every(l)}return[function(t,e,n){const i=e<t;i&&([t,e]=[e,t]);const r=n&&"function"==typeof n.range?n:o(t,e,n),a=r?r.range(t,+e+1):[];return i?a.reverse():a},o]}lr.every=t=>isFinite(t=Math.floor(t))&&t>0?Mi((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,n)=>{e.setUTCFullYear(e.getUTCFullYear()+n*t)})):null,lr.range;const[hr,ur]=cr(lr,sr,Qi,ji,Hi,Fi),[dr,fr]=cr(or,ar,zi,Gi,Ri,Oi);function pr(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function gr(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function mr(t,e,n){return{y:t,m:e,d:n,H:0,M:0,S:0,L:0}}function vr(t){var e=t.dateTime,n=t.date,i=t.time,r=t.periods,a=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,c=Ir(r),h=Er(r),u=Ir(a),d=Er(a),f=Ir(s),p=Er(s),g=Ir(o),m=Er(o),v=Ir(l),b=Er(l),y={a:function(t){return s[t.getDay()]},A:function(t){return a[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return o[t.getMonth()]},c:null,d:Kr,e:Kr,f:ta,g:ua,G:fa,H:Xr,I:Jr,j:Qr,L:Zr,m:ea,M:na,p:function(t){return r[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:Oa,s:Fa,S:ia,u:ra,U:aa,V:oa,w:la,W:ca,x:null,X:null,y:ha,Y:da,Z:pa,"%":Da},C={a:function(t){return s[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return o[t.getUTCMonth()]},c:null,d:ga,e:ga,f:Ca,g:Pa,G:Ma,H:ma,I:va,j:ba,L:ya,m:$a,M:wa,p:function(t){return r[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:Oa,s:Fa,S:_a,u:Sa,U:xa,V:Ia,w:Ea,W:La,x:null,X:null,y:ka,Y:Aa,Z:Ba,"%":Da},$={a:function(t,e,n){var i=f.exec(e.slice(n));return i?(t.w=p.get(i[0].toLowerCase()),n+i[0].length):-1},A:function(t,e,n){var i=u.exec(e.slice(n));return i?(t.w=d.get(i[0].toLowerCase()),n+i[0].length):-1},b:function(t,e,n){var i=v.exec(e.slice(n));return i?(t.m=b.get(i[0].toLowerCase()),n+i[0].length):-1},B:function(t,e,n){var i=g.exec(e.slice(n));return i?(t.m=m.get(i[0].toLowerCase()),n+i[0].length):-1},c:function(t,n,i){return S(t,e,n,i)},d:Hr,e:Hr,f:Vr,g:Dr,G:Br,H:Nr,I:Nr,j:Gr,L:zr,m:Rr,M:jr,p:function(t,e,n){var i=c.exec(e.slice(n));return i?(t.p=h.get(i[0].toLowerCase()),n+i[0].length):-1},q:Fr,Q:Wr,s:Yr,S:Ur,u:kr,U:Pr,V:Ar,w:Lr,W:Mr,x:function(t,e,i){return S(t,n,e,i)},X:function(t,e,n){return S(t,i,e,n)},y:Dr,Y:Br,Z:Or,"%":qr};function w(t,e){return function(n){var i,r,a,s=[],o=-1,l=0,c=t.length;for(n instanceof Date||(n=new Date(+n));++o<c;)37===t.charCodeAt(o)&&(s.push(t.slice(l,o)),null!=(r=$r[i=t.charAt(++o)])?i=t.charAt(++o):r="e"===i?" ":"0",(a=e[i])&&(i=a(n,r)),s.push(i),l=o+1);return s.push(t.slice(l,o)),s.join("")}}function _(t,e){return function(n){var i,r,a=mr(1900,void 0,1);if(S(a,t,n+="",0)!=n.length)return null;if("Q"in a)return new Date(a.Q);if("s"in a)return new Date(1e3*a.s+("L"in a?a.L:0));if(e&&!("Z"in a)&&(a.Z=0),"p"in a&&(a.H=a.H%12+12*a.p),void 0===a.m&&(a.m="q"in a?a.q:0),"V"in a){if(a.V<1||a.V>53)return null;"w"in a||(a.w=1),"Z"in a?(r=(i=gr(mr(a.y,0,1))).getUTCDay(),i=r>4||0===r?Zi.ceil(i):Zi(i),i=Ni.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(r=(i=pr(mr(a.y,0,1))).getDay(),i=r>4||0===r?Vi.ceil(i):Vi(i),i=Gi.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),r="Z"in a?gr(mr(a.y,0,1)).getUTCDay():pr(mr(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(r+5)%7:a.w+7*a.U-(r+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,gr(a)):pr(a)}}function S(t,e,n,i){for(var r,a,s=0,o=e.length,l=n.length;s<o;){if(i>=l)return-1;if(37===(r=e.charCodeAt(s++))){if(r=e.charAt(s++),!(a=$[r in $r?e.charAt(s++):r])||(i=a(t,n,i))<0)return-1}else if(r!=n.charCodeAt(i++))return-1}return i}return y.x=w(n,y),y.X=w(i,y),y.c=w(e,y),C.x=w(n,C),C.X=w(i,C),C.c=w(e,C),{format:function(t){var e=w(t+="",y);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=w(t+="",C);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}var br,yr,Cr,$r={"-":"",_:" ",0:"0"},wr=/^\s*\d+/,_r=/^%/,Sr=/[\\^$*+?|[\]().{}]/g;function xr(t,e,n){var i=t<0?"-":"",r=(i?-t:t)+"",a=r.length;return i+(a<n?new Array(n-a+1).join(e)+r:r)}function Tr(t){return t.replace(Sr,"\\$&")}function Ir(t){return new RegExp("^(?:"+t.map(Tr).join("|")+")","i")}function Er(t){return new Map(t.map(((t,e)=>[t.toLowerCase(),e])))}function Lr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.w=+i[0],n+i[0].length):-1}function kr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.u=+i[0],n+i[0].length):-1}function Pr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.U=+i[0],n+i[0].length):-1}function Ar(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.V=+i[0],n+i[0].length):-1}function Mr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.W=+i[0],n+i[0].length):-1}function Br(t,e,n){var i=wr.exec(e.slice(n,n+4));return i?(t.y=+i[0],n+i[0].length):-1}function Dr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),n+i[0].length):-1}function Or(t,e,n){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(n,n+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),n+i[0].length):-1}function Fr(t,e,n){var i=wr.exec(e.slice(n,n+1));return i?(t.q=3*i[0]-3,n+i[0].length):-1}function Rr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.m=i[0]-1,n+i[0].length):-1}function Hr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.d=+i[0],n+i[0].length):-1}function Gr(t,e,n){var i=wr.exec(e.slice(n,n+3));return i?(t.m=0,t.d=+i[0],n+i[0].length):-1}function Nr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.H=+i[0],n+i[0].length):-1}function jr(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.M=+i[0],n+i[0].length):-1}function Ur(t,e,n){var i=wr.exec(e.slice(n,n+2));return i?(t.S=+i[0],n+i[0].length):-1}function zr(t,e,n){var i=wr.exec(e.slice(n,n+3));return i?(t.L=+i[0],n+i[0].length):-1}function Vr(t,e,n){var i=wr.exec(e.slice(n,n+6));return i?(t.L=Math.floor(i[0]/1e3),n+i[0].length):-1}function qr(t,e,n){var i=_r.exec(e.slice(n,n+1));return i?n+i[0].length:-1}function Wr(t,e,n){var i=wr.exec(e.slice(n));return i?(t.Q=+i[0],n+i[0].length):-1}function Yr(t,e,n){var i=wr.exec(e.slice(n));return i?(t.s=+i[0],n+i[0].length):-1}function Kr(t,e){return xr(t.getDate(),e,2)}function Xr(t,e){return xr(t.getHours(),e,2)}function Jr(t,e){return xr(t.getHours()%12||12,e,2)}function Qr(t,e){return xr(1+Gi.count(or(t),t),e,3)}function Zr(t,e){return xr(t.getMilliseconds(),e,3)}function ta(t,e){return Zr(t,e)+"000"}function ea(t,e){return xr(t.getMonth()+1,e,2)}function na(t,e){return xr(t.getMinutes(),e,2)}function ia(t,e){return xr(t.getSeconds(),e,2)}function ra(t){var e=t.getDay();return 0===e?7:e}function aa(t,e){return xr(zi.count(or(t)-1,t),e,2)}function sa(t){var e=t.getDay();return e>=4||0===e?Yi(t):Yi.ceil(t)}function oa(t,e){return t=sa(t),xr(Yi.count(or(t),t)+(4===or(t).getDay()),e,2)}function la(t){return t.getDay()}function ca(t,e){return xr(Vi.count(or(t)-1,t),e,2)}function ha(t,e){return xr(t.getFullYear()%100,e,2)}function ua(t,e){return xr((t=sa(t)).getFullYear()%100,e,2)}function da(t,e){return xr(t.getFullYear()%1e4,e,4)}function fa(t,e){var n=t.getDay();return xr((t=n>=4||0===n?Yi(t):Yi.ceil(t)).getFullYear()%1e4,e,4)}function pa(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+xr(e/60|0,"0",2)+xr(e%60,"0",2)}function ga(t,e){return xr(t.getUTCDate(),e,2)}function ma(t,e){return xr(t.getUTCHours(),e,2)}function va(t,e){return xr(t.getUTCHours()%12||12,e,2)}function ba(t,e){return xr(1+Ni.count(lr(t),t),e,3)}function ya(t,e){return xr(t.getUTCMilliseconds(),e,3)}function Ca(t,e){return ya(t,e)+"000"}function $a(t,e){return xr(t.getUTCMonth()+1,e,2)}function wa(t,e){return xr(t.getUTCMinutes(),e,2)}function _a(t,e){return xr(t.getUTCSeconds(),e,2)}function Sa(t){var e=t.getUTCDay();return 0===e?7:e}function xa(t,e){return xr(Qi.count(lr(t)-1,t),e,2)}function Ta(t){var e=t.getUTCDay();return e>=4||0===e?nr(t):nr.ceil(t)}function Ia(t,e){return t=Ta(t),xr(nr.count(lr(t),t)+(4===lr(t).getUTCDay()),e,2)}function Ea(t){return t.getUTCDay()}function La(t,e){return xr(Zi.count(lr(t)-1,t),e,2)}function ka(t,e){return xr(t.getUTCFullYear()%100,e,2)}function Pa(t,e){return xr((t=Ta(t)).getUTCFullYear()%100,e,2)}function Aa(t,e){return xr(t.getUTCFullYear()%1e4,e,4)}function Ma(t,e){var n=t.getUTCDay();return xr((t=n>=4||0===n?nr(t):nr.ceil(t)).getUTCFullYear()%1e4,e,4)}function Ba(){return"+0000"}function Da(){return"%"}function Oa(t){return+t}function Fa(t){return Math.floor(+t/1e3)}function Ra(t){return new Date(t)}function Ha(t){return t instanceof Date?+t:+new Date(+t)}function Ga(t,e,n,i,r,a,s,o,l,c){var h=$i(),u=h.invert,d=h.domain,f=c(".%L"),p=c(":%S"),g=c("%I:%M"),m=c("%I %p"),v=c("%a %d"),b=c("%b %d"),y=c("%B"),C=c("%Y");function $(t){return(l(t)<t?f:o(t)<t?p:s(t)<t?g:a(t)<t?m:i(t)<t?r(t)<t?v:b:n(t)<t?y:C)(t)}return h.invert=function(t){return new Date(u(t))},h.domain=function(t){return arguments.length?d(Array.from(t,Ha)):d().map(Ra)},h.ticks=function(e){var n=d();return t(n[0],n[n.length-1],null==e?10:e)},h.tickFormat=function(t,e){return null==e?$:c(e)},h.nice=function(t){var n=d();return t&&"function"==typeof t.range||(t=e(n[0],n[n.length-1],null==t?10:t)),t?d(function(t,e){var n,i=0,r=(t=t.slice()).length-1,a=t[i],s=t[r];return s<a&&(n=i,i=r,r=n,n=a,a=s,s=n),t[i]=e.floor(a),t[r]=e.ceil(s),t}(n,t)):h},h.copy=function(){return Ci(h,Ga(t,e,n,i,r,a,s,o,l,c))},h}function Na(){return wi.apply(Ga(dr,fr,or,ar,zi,Gi,Ri,Oi,Di,yr).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function ja(t){return"string"==typeof t?new It([[document.querySelector(t)]],[document.documentElement]):new It([[t]],Tt)}function Ua(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function za(t){return function(){return t}}function Va(t){this._context=t}function qa(t){return new Va(t)}br=vr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),yr=br.format,Cr=br.parse,br.utcFormat,br.utcParse,Array.prototype.slice,Va.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};const Wa=Math.PI,Ya=2*Wa,Ka=1e-6,Xa=Ya-Ka;function Ja(t){this._+=t[0];for(let e=1,n=t.length;e<n;++e)this._+=arguments[e]+t[e]}class Qa{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?Ja:function(t){let e=Math.floor(t);if(!(e>=0))throw new Error(`invalid digits: ${t}`);if(e>15)return Ja;const n=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;e<i;++e)this._+=Math.round(arguments[e]*n)/n+t[e]}}(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,n,i){this._append`Q${+t},${+e},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(t,e,n,i,r,a){this._append`C${+t},${+e},${+n},${+i},${this._x1=+r},${this._y1=+a}`}arcTo(t,e,n,i,r){if(t=+t,e=+e,n=+n,i=+i,(r=+r)<0)throw new Error(`negative radius: ${r}`);let a=this._x1,s=this._y1,o=n-t,l=i-e,c=a-t,h=s-e,u=c*c+h*h;if(null===this._x1)this._append`M${this._x1=t},${this._y1=e}`;else if(u>Ka)if(Math.abs(h*o-l*c)>Ka&&r){let d=n-a,f=i-s,p=o*o+l*l,g=d*d+f*f,m=Math.sqrt(p),v=Math.sqrt(u),b=r*Math.tan((Wa-Math.acos((p+u-g)/(2*m*v)))/2),y=b/v,C=b/m;Math.abs(y-1)>Ka&&this._append`L${t+y*c},${e+y*h}`,this._append`A${r},${r},0,0,${+(h*d>c*f)},${this._x1=t+C*o},${this._y1=e+C*l}`}else this._append`L${this._x1=t},${this._y1=e}`}arc(t,e,n,i,r,a){if(t=+t,e=+e,a=!!a,(n=+n)<0)throw new Error(`negative radius: ${n}`);let s=n*Math.cos(i),o=n*Math.sin(i),l=t+s,c=e+o,h=1^a,u=a?i-r:r-i;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>Ka||Math.abs(this._y1-c)>Ka)&&this._append`L${l},${c}`,n&&(u<0&&(u=u%Ya+Ya),u>Xa?this._append`A${n},${n},0,1,${h},${t-s},${e-o}A${n},${n},0,1,${h},${this._x1=l},${this._y1=c}`:u>Ka&&this._append`A${n},${n},0,${+(u>=Wa)},${h},${this._x1=t+n*Math.cos(r)},${this._y1=e+n*Math.sin(r)}`)}rect(t,e,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Za(t){let e=3;return t.digits=function(n){if(!arguments.length)return e;if(null==n)e=null;else{const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);e=t}return t},()=>new Qa(e)}function ts(t){return t[0]}function es(t){return t[1]}function ns(t,e){var n=za(!0),i=null,r=qa,a=null,s=Za(o);function o(o){var l,c,h,u=(o=Ua(o)).length,d=!1;for(null==i&&(a=r(h=s())),l=0;l<=u;++l)!(l<u&&n(c=o[l],l,o))===d&&((d=!d)?a.lineStart():a.lineEnd()),d&&a.point(+t(c,l,o),+e(c,l,o));if(h)return a=null,h+""||null}return t="function"==typeof t?t:void 0===t?ts:za(t),e="function"==typeof e?e:void 0===e?es:za(e),o.x=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),o):t},o.y=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),o):e},o.defined=function(t){return arguments.length?(n="function"==typeof t?t:za(!!t),o):n},o.curve=function(t){return arguments.length?(r=t,null!=i&&(a=r(i)),o):r},o.context=function(t){return arguments.length?(null==t?i=a=null:a=r(i=t),o):i},o}function is(t,e,n){this.k=t,this.x=e,this.y=n}function rs(){rs=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var C={};c(C,s,(function(){return this}));var $=Object.getPrototypeOf,w=$&&$($(P([])));w&&w!==n&&i.call(w,s)&&(C=w);var _=y.prototype=v.prototype=Object.create(C);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==us(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(us(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function as(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function ss(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){as(a,i,r,s,o,"next",t)}function o(t){as(a,i,r,s,o,"throw",t)}s(void 0)}))}}function os(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=cs(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){throw t})),f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){o=!0,a=t})),f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function ls(t){return function(t){if(Array.isArray(t))return hs(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||cs(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function cs(t,e){if(t){if("string"==typeof t)return hs(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?hs(t,e):void 0}}function hs(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function us(t){return us="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},us(t)}Qa.prototype,is.prototype={constructor:is,scale:function(t){return 1===t?this:new is(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new is(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},new is(1,0,0),is.prototype;var ds,fs,ps,gs=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;if(jQuery.htmlPrefilter=function(t){return t.replace(gs,"<$1></$2>")},$.extend(Craft,{navHeight:48,isIterable:function(t){return t&&"function"==typeof t[Symbol.iterator]},index:function(t,e){if(t instanceof NodeList||this.isIterable(t))t=Array.from(t);else if(!Array.isArray(t))throw"The first argument passed to Craft.index() must be an array, NodeList, or iterable object.";if("string"==typeof e){var n=e;e=function(t){return t[n]}}return Object.fromEntries(t.map((function(t){return[e(t),t]})))},group:function(t,e){if(!Array.isArray(t))throw"The first argument passed to Craft.group() must be an array.";var n={};return t.reduce((function(t,i,r){var a="string"==typeof e?i[e]:e(i,r);return n.hasOwnProperty(a)||(n[a]=[[],a],t.push(n[a])),n[a][0].push(i),t}),[])},t:function(t,e,n){return void 0!==Craft.translations[t]&&void 0!==Craft.translations[t][e]&&(e=Craft.translations[t][e]),n?this.formatMessage(e,n):e},formatMessage:function(t,e){var n;if(!1===(n=this._tokenizePattern(t)))throw"Message pattern is invalid.";for(var i=0;i<n.length;i++){var r=n[i];if("object"===us(r)&&!1===(n[i]=this._parseToken(r,e)))throw"Message pattern is invalid."}return n.join("")},_tokenizePattern:function(t){var e,n,i=1,r=ls(t);if(-1===(e=n=r.indexOf("{")))return[t];for(var a=[r.slice(0,n).join("")];;){var s=r.indexOf("{",n+1),o=r.indexOf("}",n+1);if(-1===s&&(s=!1),-1===o&&(o=!1),!1===s&&!1===o)break;if(!1===s&&(s=r.length),o>s?(i++,n=s):(i--,n=o),0===i&&(a.push(r.slice(e+1,n).join("").split(",",3)),e=n+1,a.push(r.slice(e,s).join("")),e=s),0!==i&&(!1===s||!1===o))break}return 0===i&&a},_parseToken:function(t,e){var n=this,i=t[0].trim();if(void 0===e[i])return"{".concat(t.join(","),"}");var r=e[i],a=void 0!==t[1]?t[1].trim():"none";switch(a){case"number":return function(){var e=void 0!==t[2]?t[2].trim():null;if(null!==e&&"integer"!==e)throw"Message format 'number' is only supported for integer values.";var n,i=Craft.formatNumber(r);return null===e&&-1!==(n="".concat(r).indexOf("."))&&(i+=".".concat(r.substring(n+1))),i}();case"none":return r;case"select":return function(){if(void 0===t[2])return!1;for(var i=n._tokenizePattern(t[2]),a=i.length,s=!1,o=0;o+1<a;o++){if(Array.isArray(i[o])||!Array.isArray(i[o+1]))return!1;var l=i[o++].trim();(!1===s&&"other"===l||l==r)&&(s=i[o].join(","))}return!1!==s&&n.formatMessage(s,e)}();case"plural":return function(){if(void 0===t[2])return!1;for(var i=n._tokenizePattern(t[2]),a=i.length,s=!1,o=0,l=0;l+1<a;l++){if("object"===us(i[l])||"object"!==us(i[l+1]))return!1;var c=i[l++].trim(),h=ls(c);if(1===l&&"offset:"===c.substring(0,7)){var u=ls(c.replace(/[\n\r\t]/g," ")).indexOf(" ",7);if(-1===u)throw"Message pattern is invalid.";o=parseInt(h.slice(7,u).join("").trim()),c=h.slice(u+1,u+1+h.length).join("").trim()}(!1===s&&"other"===c||"="===c[0]&&parseInt(h.slice(1,1+h.length).join(""))===r||"one"===c&&r-o==1)&&(s=("string"==typeof i[l]?[i[l]]:i[l]).map((function(t){return t.replace("#",r-o)})).join(","))}return!1!==s&&n.formatMessage(s,e)}();default:throw"Message format '".concat(a,"' is not supported.")}},formatDate:function(t){return"object"!==us(t)&&(t=new Date(t)),$.datepicker.formatDate(Craft.datepickerOptions.dateFormat,t)},formatNumber:function(t,e){return void 0===e&&(e=",.0f"),Yn(d3FormatLocaleDefinition).format(e)(t)},shortcutText:function(t,e,n){return"Mac"===Craft.clientOs?(n?"⌥":"")+(e?"⇧":"")+"⌘"+t:"Ctrl+"+(n?"Alt+":"")+(e?"Shift+":"")+t},escapeHtml:function(t){return $("<div/>").text(t).html()},escapeRegex:function(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},getText:function(t){return $("<div/>").html(t).text()},encodeUriComponent:function(t){t=encodeURIComponent(t);var e={"!":"%21","*":"%2A","'":"%27","(":"%28",")":"%29"};for(var n in e){var i=new RegExp("\\"+n,"g");t=t.replace(i,e[n])}return t},selectFullValue:function(t){var e=$(t),n=e.val();if(void 0!==e[0].setSelectionRange){var i=2*n.length;e[0].setSelectionRange(0,i)}else e.val(n)},formatInputId:function(t){var e=t.replace(/^[^A-Za-z]+/,"");return(e=this.rtrim(e.replace(/[^A-Za-z0-9_.]+/g,"-"),"-"))||this.randomString(10)},getUrl:function(t,e,n){"string"!=typeof t&&(t="");var i=null;if($.isPlainObject(e))void 0!==e["#"]&&(i=e["#"],delete e["#"]);else if("string"==typeof e){var r=e.indexOf("#");-1!==r&&(i=e.substring(r+1),e=e.substring(0,r)),e=Object.fromEntries(new URLSearchParams(e).entries())}else e={};var a=t.indexOf("#");-1!==a&&(i||(i=t.substring(a+1)),t=t.substring(0,a));var s,o=t.indexOf("?");if(-1!==o&&(e=$.extend(Object.fromEntries(new URLSearchParams(t.substring(o+1)).entries()),e),t=t.substring(0,o)),-1!==t.search("://")||"/"===t[0])return t+($.isEmptyObject(e)?"":"?".concat($.param(e)))+(i?"#".concat(i):"");if(t=Craft.trim(t,"/"),n){if(s=n,t&&Craft.pathParam){var l=s.match(new RegExp("[&?]"+Craft.escapeRegex(Craft.pathParam)+"=[^&]+"));l&&(s=s.replace(l[0],Craft.rtrim(l[0],"/")+"/"+t),t="")}}else s=Craft.baseUrl;return-1!==(o=s.indexOf("?"))&&(e=$.extend(Object.fromEntries(new URLSearchParams(s.substring(o+1)).entries()),e),s=s.substring(0,o)),!Craft.omitScriptNameInUrls&&t&&(Craft.usePathInfo||!Craft.pathParam?-1===s.search(Craft.scriptName)&&(s=Craft.rtrim(s,"/")+"/"+Craft.scriptName):(void 0!==e[Craft.pathParam]&&(t=e[Craft.pathParam].trimEnd()+(t?"/"+t:"")),e[Craft.pathParam]=t,t=null)),t&&(s=Craft.rtrim(s,"/")+"/"+t),$.isEmptyObject(e)||(s+="?".concat($.param(e))),i&&(s+="#".concat(i)),s},getCpUrl:function(t,e){return this.getUrl(t,e,Craft.baseCpUrl)},getSiteUrl:function(t,e){return this.getUrl(t,e,Craft.baseSiteUrl)},getActionUrl:function(t,e){return Craft.getUrl(t,e,Craft.actionUrl)},redirectTo:function(t){document.location.href=this.getUrl(t)},setUrl:function(t){if("undefined"!=typeof history){t.match(/#/)||(t+=document.location.hash),history.replaceState({},"",t);var e,n=os(document.querySelectorAll("#site-crumb-menu a[href]"));try{for(n.s();!(e=n.n()).done;){var i=e.value,r=this.getQueryParam("site",i.href);i.href=this.getUrl(t,{site:r})}}catch(t){n.e(t)}finally{n.f()}}},setPath:function(t){this.path=t,this.setUrl(Craft.getUrl(t,document.location.search))},setQueryParam:function(t,e){var n=document.location.origin+document.location.pathname,i=this.getQueryParams();null!=e&&!1!==e?i[t]=e:delete i[t],this.setUrl(Craft.getUrl(n,i))},getPageUrl:function(t){var e=document.location.origin+document.location.pathname;e=Craft.rtrim(e,"/");var n=document.location.search?document.location.search.substring(1):"";if("?"===Craft.pageTrigger[0]){var i=Craft.pageTrigger.substring(1);if(document.location.search){var r=Object.fromEntries(new URLSearchParams(n).entries());delete r[i],n=$.param(r)}1!==t&&(n+=(""!==n?"&":"")+"".concat(i,"=").concat(t))}else e=e.replace(new RegExp("/"+Craft.escapeRegex(Craft.pageTrigger)+"\\d+$"),""),1!==t&&(e+="/".concat(Craft.pageTrigger).concat(t));return e+(n?"?".concat(n):"")+document.location.hash},getCsrfInput:function(){return Craft.csrfTokenName?'<input type="hidden" name="'+Craft.csrfTokenName+'" value="'+Craft.csrfTokenValue+'"/>':""},postActionRequest:function(t,e,n,i){"function"==typeof e&&(i=n,n=e,e={}),(i=i||{}).contentType&&i.contentType.match(/\bjson\b/)&&("object"===us(e)&&(e=JSON.stringify(e)),i.contentType="application/json; charset=utf-8");var r=$.ajax($.extend({url:Craft.getActionUrl(t),type:"POST",dataType:"json",headers:this._actionHeaders(),data:e,success:n,error:function(t,e,i){4===t.readyState&&(400!==t.status&&(void 0!==Craft.cp?Craft.cp.displayError():alert(Craft.t("app","A server error occurred."))),n&&n(400===t.status?t.responseJSON:null,e,t))}},i));return"function"==typeof i.send&&i.send(r),r},_actionHeaders:function(){var t={"X-Registered-Asset-Bundles":ls(new Set(Craft.registeredAssetBundles)).join(","),"X-Registered-Js-Files":ls(new Set(Craft.registeredJsFiles)).join(",")};return Craft.csrfTokenValue&&(t["X-CSRF-Token"]=Craft.csrfTokenValue),t},sendActionRequest:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if($.isPlainObject(e)&&(i=e,e=null),"POST"===t.toUpperCase()&&e&&i.data)if("string"==typeof i.data){var r=i&&i.headers&&i.headers["X-Craft-Namespace"],a=this.namespaceInputName("action",r);i.data+="&".concat(a,"=").concat(e)}else delete i.data.action;return new Promise((function(r,a){(i=i?$.extend({},i):{}).method=t,i.url=e?Craft.getActionUrl(e):Craft.getCpUrl(),i.headers=$.extend({"X-Requested-With":"XMLHttpRequest"},i.headers||{},n._actionHeaders()),i.params=$.extend({},i.params||{},{v:(new Date).getTime()}),axios.request(i).then(r).catch(a)}))},sendApiRequest:function(t,e){var n=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return new Promise((function(r,a){var s=(i=i?$.extend({},i):{}).cancelToken||null;n._getApiHeaders(s).then((function(o){i.method=t,i.baseURL=Craft.baseApiUrl,i.url=e,i.headers=$.extend(o,i.headers||{}),i.params=$.extend(Craft.apiParams||{},i.params||{},{v:(new Date).getTime()}),n._apiHeaders||(i.params.processCraftHeaders=1),Craft.httpProxy&&(i.proxy=Craft.httpProxy),axios.request(i).then((function(t){n._processApiHeaders(t.headers,s).then((function(){r(t.data)})).catch(a)})).catch(a)})).catch(a)}))},_loadingApiHeaders:!1,_apiHeaders:null,_apiHeaderWaitlist:[],_getApiHeaders:function(t){var n=this;return new Promise((function(i,r){n._loadingApiHeaders?n._apiHeaderWaitlist.push([i,r]):n._apiHeaders?i(n._apiHeaders):(n._loadingApiHeaders=!0,n.sendActionRequest("POST","app/api-headers",{cancelToken:t}).then((function(t){n._loadingApiHeaders?i(t.data):r(e)})).catch((function(t){n._rejectApiRequests(r,t)})))}))},_processApiHeaders:function(t,n){var i=this;return new Promise((function(r,a){i._apiHeaders?r():i.sendActionRequest("POST","app/process-api-response-headers",{data:{headers:t},cancelToken:n}).then((function(t){if(i._loadingApiHeaders)for(i._apiHeaders=t.data,i._loadingApiHeaders=!1,r();i._apiHeaderWaitlist.length;)i._apiHeaderWaitlist.shift()[0](i._apiHeaders);else a(e)})).catch((function(t){i._rejectApiRequests(a,t)}))}))},_rejectApiRequests:function(t,e){for(this._loadingApiHeaders=!1,t(e);this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1](e)},clearCachedApiHeaders:function(){for(this._apiHeaders=null,this._loadingApiHeaders=!1;this._apiHeaderWaitlist.length;)this._apiHeaderWaitlist.shift()[1]()},downloadFromUrl:function(t,e,n){return new Promise((function(i,r){var a=new XMLHttpRequest;a.open(t,e,!0),"object"===us(n)?(a.setRequestHeader("Content-Type","application/json; charset=UTF-8"),n=JSON.stringify(n)):a.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),a.responseType="blob",a.onload=function(){if(200===a.status){var t=a.getResponseHeader("content-disposition"),e=/"([^"]*)"/.exec(t),n=null!=e&&e[1]?e[1]:"Download",s=a.getResponseHeader("content-type"),o=new Blob([a.response],{type:s}),l=document.createElement("a");l.href=window.URL.createObjectURL(o),l.download=n,document.body.appendChild(l),l.click(),document.body.removeChild(l),i()}else r()},a.send(n)}))},stringToArray:function(t){if("string"!=typeof t)return t;for(var e=t.split(","),n=0;n<e.length;n++)e[n]=$.trim(e[n]);return e},findDeltaData:function(t,e,n){var i,r,a,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],c=arguments.length>6&&void 0!==arguments[6]&&arguments[6],h=(r=this.findModifiedDeltaNames(t,e,n,o,l),a=2,function(t){if(Array.isArray(t))return t}(r)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(r,a)||cs(r,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=h[0],d=h[1],f=d.__root__,p=os(u);try{for(p.s();!(i=p.n()).done;){var g=i.value;(f=f.concat(d[g])).push("modifiedDeltaNames[]=".concat(g)),s&&s(g,d[g])}}catch(t){p.e(t)}finally{p.f()}return c?f:f.join("&")},findModifiedDeltaNames:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],a=arguments.length>5&&void 0!==arguments[5]&&arguments[5];t="string"==typeof t?t:"",e="string"==typeof e?e:"",Array.isArray(n)||(n=[]),$.isPlainObject(i)||(i={}),Array.isArray(r)||(r=[]),n.sort((function(t,e){return t.length===e.length?0:a?t.length<e.length?1:-1:t.length>e.length?1:-1}));var s,o=this._groupParamsByDeltaNames(t.split("&"),n,!1,i),l=this._groupParamsByDeltaNames(e.split("&"),n,!0,!1),c=os(n);try{for(c.s();!(s=c.n()).done;){var h=s.value;r.includes(h)||"object"!==us(l[h])||"object"===us(o[h])&&JSON.stringify(o[h])===JSON.stringify(l[h])||r.push(h)}}catch(t){c.e(t)}finally{c.f()}return[r,l]},_groupParamsByDeltaNames:function(t,e,n,i){var r={};n&&(r.__root__=[]);var a,s=os(e=e.sort((function(t,e){return e.length-t.length})));try{for(s.s();!(a=s.n()).done;)r[a.value]=[]}catch(t){s.e(t)}finally{s.f()}var o,l=function(t){return encodeURIComponent(t).replace("%3D","=")},c=os(t=t.map((function(t){return decodeURIComponent(t)})));try{t:for(c.s();!(o=c.n()).done;){var h,u=o.value,d=os(e);try{for(d.s();!(h=d.n()).done;){var f=h.value,p=u.substring(0,f.length+1);if(["".concat(f,"="),"".concat(f,"[")].includes(p)){void 0===r[f]&&(r[f]=[]),r[f].push(l(u));continue t}}}catch(t){d.e(t)}finally{d.f()}n&&r.__root__.push(l(u))}}catch(t){c.e(t)}finally{c.f()}if(i){var g=function(t,e){return Array.isArray(e)||$.isPlainObject(e)?e=$.param(e):"string"==typeof e?e=encodeURIComponent(e):null===e&&(e=""),"".concat(encodeURIComponent(t),"=").concat(e)};for(var m in i)if(i.hasOwnProperty(m))if($.isPlainObject(i[m]))for(var v in r[m]=[],i[m])i[m].hasOwnProperty(v)&&r[m].push(g("".concat(m,"[").concat(v,"]"),i[m][v]));else r[m]=[g(m,i[m])]}return r},expandPostArray:function(t){var e,n={};for(var i in t)if(t.hasOwnProperty(i)){var r,a=t[i],s=i.match(/^(\w+)(\[.*)?/);if(s[2])for(r=s[2].match(/\[[^\[\]]*\]/g),e=0;e<r.length;e++)r[e]=r[e].substring(1,r[e].length-1);else r=[];r.unshift(s[1]);var o=n;for(e=0;e<r.length;e++)e<r.length-1?("object"!==us(o[r[e]])&&(r[e+1]&&parseInt(r[e+1])!=r[e+1]?o[r[e]]={}:o[r[e]]=[]),o=o[r[e]]):(r[e]||(r[e]=o.length),o[r[e]]=a)}return n},createForm:function(t){var e=$("<form/>",{attr:{method:"post",action:"","accept-charset":"UTF-8"}});if("string"==typeof t)for(var n,i=t.split("&"),r=0;r<i.length;r++)n=i[r].split("=",2),$("<input/>",{type:"hidden",name:decodeURIComponent(n[0]),value:decodeURIComponent(n[1]||"")}).appendTo(e);return e},compare:function(t,e,n){if(us(t)!==us(e))return!1;if("object"===us(t)&&null!==t&&null!==e){if(t.length!==e.length)return!1;if(Array.isArray(t)!==Array.isArray(e))return!1;if(!Array.isArray(t))if(void 0===n||!0===n){if(!Craft.compare(Craft.getObjectKeys(t).sort(),Craft.getObjectKeys(e).sort()))return!1}else if(!Craft.compare(Craft.getObjectKeys(t),Craft.getObjectKeys(e)))return!1;for(var i in t)if(t.hasOwnProperty(i)&&!Craft.compare(t[i],e[i]))return!1;return!0}return t===e},getObjectKeys:function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e},escapeChars:function(t){Array.isArray(t)||(t=t.split());for(var e="",n=0;n<t.length;n++)e+="\\"+t[n];return e},ltrim:function(t,e){if(!t)return t;if(void 0===e)return t.trimStart();var n=new RegExp("^["+Craft.escapeChars(e)+"]+");return t.replace(n,"")},rtrim:function(t,e){if(!t)return t;if(void 0===e)return t.trimEnd();var n=new RegExp("["+Craft.escapeChars(e)+"]+$");return t.replace(n,"")},trim:function(t,e){return t?void 0===e?t.trim():(t=Craft.ltrim(t,e),t=Craft.rtrim(t,e)):t},startsWith:function(t,e){return t.startsWith(e)},ensureStartsWith:function(t,e){return t.startsWith(e)||(t=e+t),t},ensureEndsWith:function(t,e){return t.endsWith(e)||(t+=e),t},filterArray:function(t,e){for(var n=[],i=0;i<t.length;i++)("function"==typeof e?e(t[i],i):t[i])&&n.push(t[i]);return n},filterObject:function(t,e){return void 0===e&&(e=function(t){return!!t}),Object.fromEntries(Object.entries(t).filter(e))},inArray:function(t,e){return $.isPlainObject(e)&&(e=Object.values(e)),e.includes(t)},removeFromArray:function(t,e){var n=$.inArray(t,e);return-1!==n&&(e.splice(n,1),!0)},getLast:function(t){return t.length?t[t.length-1]:null},uppercaseFirst:function(t){return t.charAt(0).toUpperCase()+t.slice(1)},lowercaseFirst:function(t){return t.charAt(0).toLowerCase()+t.slice(1)},parseUrl:function(t){var e=t.match(/^(?:(https?):\/\/|\/\/)([^\/\:]*)(?:\:(\d+))?(\/[^\?]*)?(?:\?([^#]*))?(#.*)?/);return e?{scheme:e[1],host:e[2]+(e[3]?":"+e[3]:""),hostname:e[2],port:e[3]||null,path:e[4]||"/",query:e[5]||null,hash:e[6]||null}:{}},getQueryParams:function(t){var e;if(t){var n=t.match(/\?.+/);if(!n)return{};e=n[0]}else e=window.location.search;return Object.fromEntries(new URLSearchParams(e).entries())},getQueryParam:function(t,e){return this.getQueryParams(e)[t]},isSameHost:function(t){var e=this.parseUrl(document.location.href);if(!e)return!1;var n=this.parseUrl(t);return!!n&&e.host===n.host},secondsToHumanTimeDuration:function(t,e){void 0===e&&(e=!0);var n=604800,i=Math.floor(t/n);t%=n;var r=Math.floor(t/86400);t%=86400;var a,s=Math.floor(t/3600);t%=3600,e?(a=Math.floor(t/60),t%=60):(a=Math.round(t/60),t=0);var o=[];return i&&o.push(i+" "+(1===i?Craft.t("app","week"):Craft.t("app","weeks"))),r&&o.push(r+" "+(1===r?Craft.t("app","day"):Craft.t("app","days"))),s&&o.push(s+" "+(1===s?Craft.t("app","hour"):Craft.t("app","hours"))),!a&&(e||i||r||s)||o.push(a+" "+(1===a?Craft.t("app","minute"):Craft.t("app","minutes"))),!t&&(!e||i||r||s||a)||o.push(t+" "+(1===t?Craft.t("app","second"):Craft.t("app","seconds"))),o.join(", ")},asciiString:function(t,e){t=t.normalize("NFC");for(var n,i="",r=0;r<t.length;r++)n=t.charAt(r),i+="string"==typeof(e||Craft.asciiCharMap)[n]?(e||Craft.asciiCharMap)[n]:n;return i},uuid:function(){return"function"==typeof crypto.randomUUID?crypto.randomUUID():([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))},namespaceInputName:function(t,e){return e?t.replace(/([^'"\[\]]+)([^'"]*)/,"".concat(e,"[$1]$2")):t},namespaceId:function(t,e){return(e?"".concat(Craft.formatInputId(e),"-"):"")+Craft.formatInputId(t)},randomString:function(t){for(var e="",n=0;n<t;n++)e+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".charAt(Math.floor(62*Math.random()));return e},createErrorList:function(t){for(var e=$(document.createElement("ul")).addClass("errors"),n=0;n<t.length;n++){var i=$(document.createElement("li"));i.appendTo(e),i.html(t[n])}return e},_existingCss:null,_existingJs:null,_appendHtml:(ps=ss(rs().mark((function t(e,n){var i,r=this;return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}return t.abrupt("return");case 2:i=$.parseHTML(e.trim(),!0).filter((function(t){if("LINK"===t.nodeName&&t.href)return r._existingCss||(r._existingCss=$("link[href]").toArray().map((function(t){return t.href.replace(/&/g,"&amp;")}))),!r._existingCss.includes(t.href)&&(r._existingCss.push(t.href),!0);if("SCRIPT"===t.nodeName&&t.src){if(r._existingJs||(r._existingJs=$("script[src]").toArray().map((function(t){return t.src.replace(/&/g,"&amp;")}))),t.src.startsWith(r.resourceBaseUrl)&&!r.isSameHost(t.src)&&(t.src=r.getActionUrl("app/resource-js",{url:t.src})),r._existingJs.includes(t.src))return!1;r._existingJs.push(t.src)}return!0})),n.append(i);case 4:case"end":return t.stop()}}),t)}))),function(t,e){return ps.apply(this,arguments)}),appendHeadHtml:(fs=ss(rs().mark((function t(e){return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._appendHtml(e,$("head"));case 2:case"end":return t.stop()}}),t,this)}))),function(t){return fs.apply(this,arguments)}),appendBodyHtml:(ds=ss(rs().mark((function t(e){return rs().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._appendHtml(e,Garnish.$bod);case 2:case"end":return t.stop()}}),t,this)}))),function(t){return ds.apply(this,arguments)}),appendFootHtml:function(t){console.warn("Craft.appendFootHtml() is deprecated. Craft.appendBodyHtml() should be used instead."),this.appendBodyHtml(t)},initUiElements:function(t){$(".grid",t).grid(),$(".info",t).infoicon(),$(".checkbox-select",t).checkboxselect(),$(".fieldtoggle",t).fieldtoggle(),$(".lightswitch",t).lightswitch(),$(".nicetext",t).nicetext(),$(".datetimewrapper",t).datetime(),$('.datewrapper > input[type="date"], .timewrapper > input[type="time"]',t).datetimeinput(),$(".formsubmit",t).formsubmit(),$(".menubtn:not([data-disclosure-trigger])",t).menubtn(),$("[data-disclosure-trigger]",t).disclosureMenu(),$("a",t).each((function(){this.hostname.length&&this.hostname!==location.hostname&&void 0===$(this).attr("target")&&$(this).attr("rel","noopener").attr("target","_blank")}))},_elementIndexClasses:{},_elementSelectorModalClasses:{},_elementEditorClasses:{},_uploaderClasses:{},_authFormHandlers:{},registerElementIndexClass:function(t,e){if(void 0!==this._elementIndexClasses[t])throw"An element index class has already been registered for the element type “"+t+"”.";this._elementIndexClasses[t]=e},registerUploaderClass:function(t,e){if(void 0!==this._uploaderClasses[t])throw"An asset uploader class has already been registered for the filesystem type “"+t+"”.";this._uploaderClasses[t]=e},registerElementSelectorModalClass:function(t,e){if(void 0!==this._elementSelectorModalClasses[t])throw"An element selector modal class has already been registered for the element type “"+t+"”.";this._elementSelectorModalClasses[t]=e},registerAuthFormHandler:function(t,e){if(void 0!==this._authFormHandlers[t])throw"An authentication form handler has already been registered for the method “".concat(t,"”.");this._authFormHandlers[t]=e},createElementIndex:function(t,e,n){return new(void 0!==this._elementIndexClasses[t]?this._elementIndexClasses[t]:Craft.BaseElementIndex)(t,e,n)},createUploader:function(t,e,n){var i=new(void 0!==this._uploaderClasses[t]?this._uploaderClasses[t]:Craft.Uploader)(e,n);return i.fsType=t,i},createElementSelectorModal:function(t,e){return new(void 0!==this._elementSelectorModalClasses[t]?this._elementSelectorModalClasses[t]:Craft.BaseElementSelectorModal)(t,e)},createAuthFormHandler:function(t,e,n,i){if(void 0===this._authFormHandlers[t])throw'No authentication form has been registered for the method "'.concat(t,'".');if(e instanceof jQuery){if(!e.length)throw"No form element specified.";e=e[0]}return i||(i=function(t){Craft.cp.displayError(t)}),new this._authFormHandlers[t](e,n,i)},createElementEditor:function(t,e,n){return void 0===n&&$.isPlainObject(e)?(n=e,e=null):"object"!==us(n)&&(n={}),n.elementType||(n.elementType=t),new Craft.ElementEditorSlideout(e,n)},getLocalStorage:function(t,e){return t="Craft-"+Craft.systemUid+"."+t,"undefined"!=typeof localStorage&&void 0!==localStorage[t]?JSON.parse(localStorage[t]):e},setLocalStorage:function(t,e){if("undefined"!=typeof localStorage){t="Craft-"+Craft.systemUid+"."+t;try{localStorage[t]=JSON.stringify(e)}catch(t){}}},removeLocalStorage:function(t){"undefined"!=typeof localStorage&&localStorage.removeItem("Craft-".concat(Craft.systemUid,".").concat(t))},getCookie:function(t){return document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)Craft-".concat(Craft.systemUid,":").concat(t,"\\s*\\=\\s*([^;]*).*$)|^.*$")),"$1")},setCookie:function(t,e,n){n=$.extend({},this.defaultCookieOptions,n);var i="Craft-".concat(Craft.systemUid,":").concat(t,"=").concat(encodeURIComponent(e));n.path&&(i+=";path=".concat(n.path)),n.domain&&(i+=";domain=".concat(n.domain)),n.maxAge?i+=";max-age-in-seconds=".concat(n.maxAge):n.expires&&(i+=";expires=".concat(n.expires.toUTCString())),n.secure&&(i+=";secure"),document.cookie=i},removeCookie:function(t){this.setCookie(t,"",new Date("1970-01-01T00:00:00"))},getElementInfo:function(t){var e=$(t);return e.hasClass("element")||(e=e.find(".element:first")),{id:e.data("id"),siteId:e.data("site-id"),label:e.data("label"),status:e.data("status"),url:e.data("url"),hasThumb:e.hasClass("has-thumb"),$element:e}},setElementSize:function(t,e){var n=$(t);if("small"!==e&&"large"!==e&&(e="small"),!n.hasClass(e)){var i="small"===e?"large":"small";if(n.addClass(e).removeClass(i),n.hasClass("has-thumb")){var r=n.find("> .thumb > img"),a=$("<img/>",{sizes:("small"===e?"30":"100")+"px",srcset:r.attr("srcset")||r.attr("data-pfsrcset")});r.replaceWith(a),picturefill({elements:[a[0]]})}}},refreshElementInstances:function(t){var e=$('div.element[data-id="'.concat(t,'"][data-settings]'));if(e.length){for(var n={},i=0;i<e.length;i++){var r=e.eq(i),a=r.data("site-id");void 0===n[a]&&(n[a]={key:i,type:r.data("type"),id:t,siteId:a,instances:[]}),n[a].instances.push(r.data("settings"))}var s={elements:Object.values(n)};Craft.sendActionRequest("POST","app/render-elements",{data:s}).then((function(n){for(var i=n.data.elements[t]||{},r=0,a=Object.keys(i);r<a.length;r++){var s,o=a[r],l=e.eq(o),c=$(i[o]),h=os(c[0].attributes);try{for(h.s();!(s=h.n()).done;){var u=s.value;"class"===u.name?l.addClass(u.value):l.attr(u.name,u.value)}}catch(t){h.e(t)}finally{h.f()}var d=l.find("> .chip-content .chip-actions,> .card-actions-container .card-actions").detach(),f=l.find("input,button").detach();if(l.html(c.html()),d.length){var p=d.find("span.status"),g=c.find("span.status");p.length&&g.length&&p[0].classList!==g[0].classList&&d.find("span.status").replaceWith(g),l.find("> .chip-content .chip-actions,> .card-actions-container .card-actions").replaceWith(d)}f.length&&f.appendTo(l)}Craft.cp.elementThumbLoader.load(e)}))}},refreshComponentInstances:function(t,e){var n=$('div.chip[data-type="'.concat($.escapeSelector(t),'"][data-id="').concat(e,'"][data-settings]'));if(n.length){for(var i=[],r=0;r<n.length;r++)i.push(n.eq(r).data("settings"));var a={components:[{type:t,id:e,instances:i}]};Craft.sendActionRequest("POST","app/render-components",{data:a}).then((function(i){for(var r=i.data,a=0;a<r.components[t][e].length;a++){var s,o=n.eq(a),l=$(r.components[t][e][a]),c=os(l[0].attributes);try{for(c.s();!(s=c.n()).done;){var h=s.value;"class"===h.name?o.addClass(h.value):o.attr(h.name,h.value)}}catch(t){c.e(t)}finally{c.f()}var u=o.find(".chip-actions").detach(),d=o.find("input,button").detach();o.html(l.html()),u.length&&o.find(".chip-actions").replaceWith(u),d.length&&d.appendTo(o)}}))}},addActionsToChip:function(t,e){if(null!=e&&e.length){var n=$(t).find("> .chip-content > .chip-actions, > .card-actions-container > .card-actions"),i=n.find(".action-btn");if(!i.length){var r="actions-".concat(Math.floor(1e6*Math.random())),a="".concat(r,"-label"),s=$("<label/>",{id:a,class:"visually-hidden",text:Craft.t("app","Actions")}).appendTo(n);i=$("<button/>",{class:"btn action-btn",type:"button",title:Craft.t("app","Actions"),"aria-controls":r,"aria-describedby":a,"data-disclosure-trigger":"true"}).insertAfter(s),$("<div/>",{id:r,class:"menu menu--disclosure"}).insertAfter(i)}var o=i.disclosureMenu().data("disclosureMenu"),l=e.filter((function(t){return!t.destructive})),c=e.filter((function(t){return t.destructive}));l.length&&o.addItems(l,o.addGroup()),c.length&&o.addItems(c,o.addGroup()),Craft.initUiElements(o.$container)}},submitForm:function(t,e){var n=this;void 0===e&&(e={}),e.confirm&&!confirm(e.confirm)||(e.requireElevatedSession?Craft.elevatedSessionManager.requireElevatedSession((function(){n._submitFormInternal(t,e)})):this._submitFormInternal(t,e))},_submitFormInternal:function(t,e){var n,i=null!==(n=e.namespace)&&void 0!==n?n:null;if(e.action&&$("<input/>",{type:"hidden",name:this.namespaceInputName("action",i),val:e.action}).appendTo(t),e.redirect&&$("<input/>",{type:"hidden",name:this.namespaceInputName("redirect",i),val:e.redirect}).appendTo(t),e.params)for(var r in e.params){var a=e.params[r];$("<input/>",{type:"hidden",name:this.namespaceInputName(r,i),val:a}).appendTo(t)}e.retainScroll&&this.setLocalStorage("scrollY",window.scrollY),t.trigger($.extend({type:"submit"},e.data))},trapFocusWithin:function(t){Garnish.trapFocusWithin(t)},setFocusWithin:function(t){Garnish.setFocusWithin(t)},filterInputVal:function(t,e){for(var n=$(t),i=n.val(),r=n[0].selectionStart,a="",s=0;s<i.length;s++)i[s].match(e)?a+=i[s]:s<r&&r--;a!==i&&(n.val(a),n[0].setSelectionRange(r,r))},filterNumberInputVal:function(t){this.filterInputVal(t,/[0-9.,\-]/)},setElementAttributes:function(t,e){var n=$(t);for(var i in e)if(e.hasOwnProperty(i)){var r=e[i];if(null===r||!1===r)n.removeAttr(i);else if(!0===r)n.attr(i,"");else if(Array.isArray(r)||$.isPlainObject(r))if(Craft.dataAttributes.includes(i)){for(var a in r=Object.assign({},r))if(r.hasOwnProperty(a)){var s=r[a];null!==s&&!1!==s&&(s=$.isPlainObject(s)||Array.isArray(s)?JSON.stringify(s):!0===s?"":this.escapeHtml(s),n.attr("".concat(i,"-").concat(a),s))}}else if("class"===i){$.isPlainObject(r)&&(r=Object.values(r));var o,l=os(r);try{for(l.s();!(o=l.n()).done;){var c=o.value;n.addClass(c)}}catch(t){l.e(t)}finally{l.f()}}else"style"===i?n.css(r):n.attr(i,JSON.stringify(r));else n.attr(i,this.escapeHtml(r))}},isVisible:function(){return void 0===document.visibilityState||"visible"===document.visibilityState},useMobileStyles:function(){return Garnish.isMobileBrowser()||document.body.clientWidth<600}}),Craft.pageId=Craft.uuid(),"undefined"!=typeof BroadcastChannel){var ms="CraftCMS:".concat(Craft.appId);Craft.broadcaster=new BroadcastChannel(ms),Craft.messageReceiver=new BroadcastChannel(ms),Craft.broadcaster.addEventListener("message",(function(t){switch(t.data.event){case"beforeTrackJobProgress":Craft.cp.cancelJobTracking();break;case"trackJobProgress":if(Craft.cp.setJobData(t.data.jobData),Craft.cp.jobInfo.length){var e=Craft.cp.getNextJobDelay()+1e3;Craft.cp.trackJobProgress(e)}}})),Craft.messageReceiver.addEventListener("message",(function(t){"saveElement"===t.data.event&&Craft.refreshElementInstances(t.data.id)}))}function vs(t){const e=new Uint8Array(t);let n="";for(const t of e)n+=String.fromCharCode(t);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function bs(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),n=(4-e.length%4)%4,i=e.padEnd(e.length+n,"="),r=atob(i),a=new ArrayBuffer(r.length),s=new Uint8Array(a);for(let t=0;t<r.length;t++)s[t]=r.charCodeAt(t);return a}function ys(){return void 0!==window?.PublicKeyCredential&&"function"==typeof window.PublicKeyCredential}function Cs(t){const{id:e}=t;return{...t,id:bs(e),transports:t.transports}}$.extend($.fn,{animateLeft:function(t,e,n,i){return"ltr"===Craft.orientation?this.velocity({left:t},e,n,i):this.velocity({right:t},e,n,i)},animateRight:function(t,e,n,i){return"ltr"===Craft.orientation?this.velocity({right:t},e,n,i):this.velocity({left:t},e,n,i)},disable:function(){return this.each((function(){var t=$(this);t.addClass("disabled"),t.data("activatable")&&t.removeAttr("tabindex")}))},enable:function(){return this.each((function(){var t=$(this);t.removeClass("disabled"),t.data("activatable")&&t.attr("tabindex","0")}))},grid:function(){return this.each((function(){var t=$(this),e={};t.data("item-selector")&&(e.itemSelector=t.data("item-selector")),t.data("cols")&&(e.cols=parseInt(t.data("cols"))),t.data("max-cols")&&(e.maxCols=parseInt(t.data("max-cols"))),t.data("min-col-width")&&(e.minColWidth=parseInt(t.data("min-col-width"))),t.data("mode")&&(e.mode=t.data("mode")),t.data("fill-mode")&&(e.fillMode=t.data("fill-mode")),t.data("col-class")&&(e.colClass=t.data("col-class")),t.data("snap-to-grid")&&(e.snapToGrid=!!t.data("snap-to-grid")),new Craft.Grid(this,e)}))},infoicon:function(){return this.each((function(){new Craft.InfoIcon(this)}))},checkboxselect:function(){return this.each((function(){$.data(this,"checkboxSelect")||new Garnish.CheckboxSelect(this)}))},fieldtoggle:function(){return this.each((function(){$.data(this,"fieldtoggle")||new Craft.FieldToggle(this)}))},lightswitch:function(t,e,n){return"settings"===t?("string"==typeof e?(t={})[e]=n:t=e,this.each((function(){var e=$.data(this,"lightswitch");e&&e.setSettings(t)}))):($.isPlainObject(t)||(t={}),this.each((function(){var e=$.extend({},t);Garnish.hasAttr(this,"data-value")&&(e.value=$(this).attr("data-value")),Garnish.hasAttr(this,"data-indeterminate-value")&&(e.indeterminateValue=$(this).attr("data-indeterminate-value")),$.data(this,"lightswitch")||new Craft.LightSwitch(this,e)})))},nicetext:function(){return this.each((function(){$.data(this,"nicetext")||new Garnish.NiceText(this)}))},formsubmit:function(){return this.on("activate",(function(t){var e,n=$(t.currentTarget),i=n.data("params")||{};n.data("param")&&(i[n.data("param")]=n.data("value"));var r=null;if("false"===n.attr("data-form"))e=Craft.createForm().addClass("hidden").append(Craft.getCsrfInput()).appendTo(Garnish.$bod);else{var a=n.closest(".menu--disclosure").length?n.closest(".menu--disclosure").data("trigger").$trigger:n.data("menu")?n.data("menu").$anchor:n;0==a.parents(".slideout").length?e=a.attr("data-form")?$("#"+a.attr("data-form")):n.attr("data-form")?$("#"+n.attr("data-form")):a.closest("form"):(e=a.closest("form"),r=a.parents(".slideout").data("cpScreen").namespace),a.data("disclosureMenu")&&a.data("disclosureMenu").hide()}Craft.submitForm(e,{confirm:n.data("confirm"),action:n.data("action"),redirect:n.data("redirect"),requireElevatedSession:Garnish.hasAttr(n,"data-require-elevated-session"),namespace:r,params:i,data:$.extend({customTrigger:n},n.data("event-data"))})}))},menubtn:function(){return this.each((function(){var t=$(this);if(!t.data("menubtn")&&t.next().hasClass("menu")){var e={};t.data("menu-anchor")&&(e.menuAnchor=t.data("menu-anchor")),new Garnish.MenuBtn(t,e)}}))},disclosureMenu:function(t){return this.each((function(){var e=$(this);!e.data("trigger")&&e.attr("aria-controls")&&new Garnish.DisclosureMenu(e,t)}))},datetime:function(){return this.each((function(){var t=$(this),e=t.find('input:not([name$="[timezone]"])'),n=function(){for(var n=!1,i=0;i<e.length;i++)if(e.eq(i).val()&&!e.eq(i).is(":disabled")){n=!0;break}if(n){if(!t.children(".clear-btn").length)var r=$("<button/>",{type:"button",class:"clear-btn",title:Craft.t("app","Clear"),"aria-label":Craft.t("app","Clear")}).appendTo(t).on("click",(function(){for(var t=0;t<e.length;t++)e.eq(t).val("").trigger("input").trigger("change");r.remove(),e.first().filter('[type="text"]').focus()}))}else t.children(".clear-btn").remove()};e.on("change",n),n()}))},datetimeinput:function(){return this.each((function(){var t=$(this),e=function(){""===t.val()?t.addClass("empty-value"):t.removeClass("empty-value")};t.on("input",e),e()}))}}),Garnish.NiceText.charsLeftHtml=function(t){return Craft.t("app",'<span class="visually-hidden">Characters left:</span> {chars, number}',{chars:t})},Garnish.$doc.ready((function(){Craft.initUiElements()})),__webpack_require__(1592),__webpack_require__(8960),__webpack_require__(5774),__webpack_require__(8495),__webpack_require__(5970),__webpack_require__(4993),__webpack_require__(8843),__webpack_require__(4918),__webpack_require__(5759),__webpack_require__(8167),__webpack_require__(4211),__webpack_require__(1157),__webpack_require__(7745),__webpack_require__(8895),__webpack_require__(463),__webpack_require__(7452),__webpack_require__(6872),__webpack_require__(2495),__webpack_require__(1016),__webpack_require__(5077),__webpack_require__(4606),__webpack_require__(8391),__webpack_require__(9222),__webpack_require__(525),__webpack_require__(313),__webpack_require__(3778),__webpack_require__(6617),Craft.charts={},Craft.charts.DataTable=Garnish.Base.extend({columns:null,rows:null,init:function(t){var e=t.columns,n=t.rows;n.forEach((function(t){$.each(t,(function(n){var i;switch(e[n].type){case"date":i=Cr("%Y-%m-%d"),t[n]=i(t[n]);break;case"datetime":i=Cr("%Y-%m-%d %H:00:00"),t[n]=i(t[n]);break;case"percent":t[n]=t[n]/100;break;case"number":t[n]=+t[n]}}))})),this.columns=e,this.rows=n}}),Craft.charts.Tip=Garnish.Base.extend({$container:null,$tip:null,init:function(t){this.$container=t,this.$tip=$('<div class="tooltip"></div>').appendTo(this.$container),this.hide()},setContent:function(t){this.$tip.html(t)},setPosition:function(t){this.$tip.css("left","".concat(t.left,"px")),this.$tip.css("top","".concat(t.top,"px"))},show:function(){this.$tip.css("display","block")},hide:function(){this.$tip.css("display","none")}}),Craft.charts.BaseChart=Garnish.Base.extend({$container:null,$chart:null,chartBaseClass:"cp-chart",dataTable:null,formatLocale:null,timeFormatLocale:null,orientation:null,svg:null,width:null,height:null,init:function(t,e){var n=this;this.$container=t,this.setSettings(Craft.charts.BaseChart.defaults),this.setSettings(e);var i={formats:window.d3Formats,formatLocaleDefinition:window.d3FormatLocaleDefinition,timeFormatLocaleDefinition:window.d3TimeFormatLocaleDefinition};this.setSettings(i),ja(window).on("resize",(function(){n.resize()}))},setSettings:function(t,e){var n=void 0===this.settings?{}:this.settings;this.settings=$.extend(!0,{},n,e,t)},draw:function(t,e){this.setSettings(e),this.dataTable=t,this.formatLocale=Yn(this.settings.formatLocaleDefinition),this.timeFormatLocale=vr(this.settings.timeFormatLocaleDefinition),this.orientation=this.settings.orientation,this.$chart&&this.$chart.remove();var n=this.chartBaseClass;this.settings.chartClass&&(n+=" "+this.settings.chartClass),this.$chart=$('<div class="'.concat(n,'" />')).appendTo(this.$container)},resize:function(){this.draw(this.dataTable,this.settings)},onAfterDrawTicks:function(){$(".tick",this.$chart).each((function(t,e){var n=$("text",e);n.clone().appendTo(e),n.attr("stroke","#ffffff"),n.attr("stroke-width",3)}))}},{defaults:{formatLocaleDefinition:null,timeFormatLocaleDefinition:null,formats:{numberFormat:",.2f",percentFormat:",.2%",currencyFormat:"$,.2f",shortDateFormats:{day:"%-m/%-d",month:"%-m/%y",year:"%Y"}},margin:{top:0,right:0,bottom:0,left:0},chartClass:null,colors:["#0594D1","#DE3800","#FF9A00","#009802","#9B009B"]}}),Craft.charts.Area=Craft.charts.BaseChart.extend({tip:null,drawingArea:null,init:function(t,e){this.base(t,Craft.charts.Area.defaults),this.setSettings(e)},draw:function(t,e){this.base(t,e),this.tip&&(this.tip=null);var n=this.getChartMargin();this.width=this.$chart.width()-n.left-n.right,this.height=this.$chart.height()-n.top-n.bottom;var i={width:this.width+(n.left+n.right),height:this.height+(n.top+n.bottom),translateX:"rtl"!==this.orientation?n.left:n.right,translateY:n.top};this.svg=ja(this.$chart.get(0)).append("svg").attr("width",i.width).attr("height",i.height),this.drawingArea=this.svg.append("g").attr("transform","translate(".concat(i.translateX,",").concat(i.translateY,")")),this.drawTicks(),this.drawAxes(),this.drawChart(),this.drawTipTriggers()},drawTicks:function(){var t=g(this.getX(!0)).tickFormat(this.getXFormatter()).ticks(3);this.drawingArea.append("g").attr("class","x ticks-axis").attr("transform","translate(0, ".concat(this.height,")")).call(t);var e,n=this.getY();"rtl"!==this.orientation?(e=m(n).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").call(e)):(e=p(n).tickFormat(this.getYFormatter()).tickValues(this.getYTickValues()).ticks(2),this.drawingArea.append("g").attr("class","y ticks-axis").attr("transform","translate(".concat(this.width,",0)")).call(e)),this.onAfterDrawTicks()},drawAxes:function(){if(this.settings.xAxis.showAxis){var t=g(this.getX()).ticks(0).tickSizeOuter(0);this.drawingArea.append("g").attr("class","x axis").attr("transform","translate(0, ".concat(this.height,")")).call(t)}if(this.settings.yAxis.showAxis){var e,n=this.getY();"rtl"===this.orientation?(e=m(n).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(this.width-0,", 0)")).call(e)):(e=p(n).ticks(0),this.drawingArea.append("g").attr("class","y axis").attr("transform","translate(".concat(0,", 0)")).call(e))}},drawChart:function(){var t=this.getX(!0),e=this.getY();if(this.settings.xAxis.gridlines){var n=g(t);this.drawingArea.append("g").attr("class","x grid-line").attr("transform","translate(0,".concat(this.height,")")).call(n.tickSize(-this.height,0,0).tickFormat(""))}if(this.settings.yAxis.gridlines){var i=m(e);this.drawingArea.append("g").attr("class","y grid-line").attr("transform","translate(0 , 0)").call(i.tickSize(-this.width,0).tickFormat("").tickValues(this.getYTickValues()).ticks(2))}var r=ns().x((function(e){return t(e[0])})).y((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-line").append("path").datum(this.dataTable.rows).style("fill","none").style("stroke",this.settings.colors[0]).style("stroke-width","3px").attr("d",r);var a=function(t,e,n){var i=null,r=za(!0),a=null,s=qa,o=null,l=Za(c);function c(c){var h,u,d,f,p,g=(c=Ua(c)).length,m=!1,v=new Array(g),b=new Array(g);for(null==a&&(o=s(p=l())),h=0;h<=g;++h){if(!(h<g&&r(f=c[h],h,c))===m)if(m=!m)u=h,o.areaStart(),o.lineStart();else{for(o.lineEnd(),o.lineStart(),d=h-1;d>=u;--d)o.point(v[d],b[d]);o.lineEnd(),o.areaEnd()}m&&(v[h]=+t(f,h,c),b[h]=+e(f,h,c),o.point(i?+i(f,h,c):v[h],n?+n(f,h,c):b[h]))}if(p)return o=null,p+""||null}function h(){return ns().defined(r).curve(s).context(a)}return t="function"==typeof t?t:void 0===t?ts:za(+t),e="function"==typeof e?e:za(void 0===e?0:+e),n="function"==typeof n?n:void 0===n?es:za(+n),c.x=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),i=null,c):t},c.x0=function(e){return arguments.length?(t="function"==typeof e?e:za(+e),c):t},c.x1=function(t){return arguments.length?(i=null==t?null:"function"==typeof t?t:za(+t),c):i},c.y=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),n=null,c):e},c.y0=function(t){return arguments.length?(e="function"==typeof t?t:za(+t),c):e},c.y1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:za(+t),c):n},c.lineX0=c.lineY0=function(){return h().x(t).y(e)},c.lineY1=function(){return h().x(t).y(n)},c.lineX1=function(){return h().x(i).y(e)},c.defined=function(t){return arguments.length?(r="function"==typeof t?t:za(!!t),c):r},c.curve=function(t){return arguments.length?(s=t,null!=a&&(o=s(a)),c):s},c.context=function(t){return arguments.length?(null==t?a=o=null:o=s(a=t),c):a},c}().x((function(e){return t(e[0])})).y0(this.height).y1((function(t){return e(t[1])}));this.drawingArea.append("g").attr("class","chart-area").append("path").datum(this.dataTable.rows).style("fill",this.settings.colors[0]).style("fill-opacity","0.3").attr("d",a),this.settings.plots&&this.drawingArea.append("g").attr("class","plots").selectAll("circle").data(this.dataTable.rows).enter().append("circle").style("fill",this.settings.colors[0]).attr("class",(function(t,e){return"plot plot-".concat(e)})).attr("r",4).attr("cx",(function(e){return t(e[0])})).attr("cy",(function(t){return e(t[1])}))},drawTipTriggers:function(){var t=this;if(this.settings.tips){this.tip||(this.tip=new Craft.charts.Tip(this.$chart));var e=this.getChartMargin(),n=(this.drawingArea.select(".x path.domain").node().getTotalLength()-e.left-e.right-12)/(this.dataTable.rows.length-1),i=Math.max(0,n),r=this.getX(!0),a=this.getY();this.drawingArea.append("g").attr("class","tip-triggers").selectAll("rect").data(this.dataTable.rows).enter().append("rect").attr("class",(function(t,e){return"tip-trigger tip-trigger-".concat(e)})).attr("data-index",(function(t,e){return e})).style("fill","transparent").style("fill-opacity","1").attr("width",i).attr("height",this.height).attr("x",(function(t){return r(t[0])-i/2})).on("mouseover",(function(e,n){var i=ja(e.target).attr("data-index");t.drawingArea.select(".plot-"+i).attr("r",5);var s=$("<div />"),o=$('<div class="x-value" />').appendTo(s),l=$('<div class="y-value" />').appendTo(s);o.html(t.getXFormatter()(n[0])),l.html(t.getYFormatter()(n[1]));var c=s.get(0);t.tip.setContent(c);var h,u=t.getChartMargin(),d=24,f=a(n[1])+d;"rtl"!==t.orientation?(h=r(n[0])+u.left+d,t.$chart.offset().left+h+t.tip.$tip.width()>t.$chart.offset().left+t.$chart.width()-d&&(h=r(n[0])-(t.tip.$tip.width()+d))):h=r(n[0])-(t.tip.$tip.width()+u.left+d),h<0&&(h=r(n[0])+u.left+d);var p={top:f,left:h};t.tip.setPosition(p),t.tip.show()})).on("mouseout",(function(e,n){var i=ja(e.target).attr("data-index");t.drawingArea.select(".plot-"+i).attr("r",4),t.tip.hide()}))}},getChartMargin:function(){var t=this,e=this.settings.margin,n=this.getYTickValues(),i=0;return $.each(n,(function(e,n){var r=8*t.getYFormatter()(n).length;r>i&&(i=r)})),i+=10,e.left=i,e},getX:function(e){var n=function(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let i=-1;for(let r of t)null!=(r=e(r,++i))&&(n>r||void 0===n&&r>=r)&&(n=r)}return n}(this.dataTable.rows,(function(t){return t[0]})),i=t(this.dataTable.rows,(function(t){return t[0]})),r=[n,i];"rtl"===this.orientation&&(r=[i,n]);var a=0,s=0;e&&(a=0,s=0);var o=Na().range([a,this.width-s]);return o.domain(r),o},getY:function(){var t=[0,this.getYMaxValue()],e=Si().range([this.height,0]);return e.domain(t),e},getXFormatter:function(){return this.settings.xAxis.formatter!==$.noop?this.settings.xAxis.formatter(this):Craft.charts.utils.getTimeFormatter(this.timeFormatLocale,this.settings)},getYFormatter:function(){return this.settings.yAxis.formatter!==$.noop?this.settings.yAxis.formatter(this):Craft.charts.utils.getNumberFormatter(this.formatLocale,this.dataTable.columns[1].type,this.settings)},getYMaxValue:function(){var e=t(this.dataTable.rows,(function(t){return t[1]}));return 0===e&&(e=1),e},getYTickValues:function(){var t=this.getYMaxValue();return t>1?[t/2,t]:[0,t]}},{defaults:{chartClass:"area",margin:{top:25,right:5,bottom:25,left:0},plots:!0,tips:!0,xAxis:{gridlines:!1,showAxis:!0,formatter:$.noop},yAxis:{gridlines:!0,showAxis:!1,formatter:$.noop}}}),Craft.charts.utils={getDuration:function(t){var e=parseInt(t,10),n={hours:Math.floor(e/3600),minutes:Math.floor((e-3600*n.hours)/60),seconds:e-3600*n.hours-60*n.minutes};return n.hours<10&&(n.hours="0".concat(n.hours)),n.minutes<10&&(n.minutes="0".concat(n.minutes)),n.seconds<10&&(n.seconds="0".concat(n.seconds)),"".concat(n.hours,":").concat(n.minutes,":").concat(n.seconds)},getTimeFormatter:function(t,e){switch(e.dataScale){case"year":return t.format("%Y");case"month":return t.format(e.formats.shortDateFormats.month);case"hour":return t.format("".concat(e.formats.shortDateFormats.day," %H:00:00"));default:return t.format(e.formats.shortDateFormats.day)}},getNumberFormatter:function(t,e,n){switch(e){case"currency":return t.format(n.formats.currencyFormat);case"percent":return t.format(n.formats.percentFormat);case"time":return Craft.charts.utils.getDuration;case"number":return t.format(n.formats.numberFormat)}}},__webpack_require__(3352),__webpack_require__(3048),__webpack_require__(691),__webpack_require__(1519),__webpack_require__(501),__webpack_require__(2318),__webpack_require__(4755),__webpack_require__(8468),__webpack_require__(5049),__webpack_require__(7998),__webpack_require__(3663),__webpack_require__(4233);class $s extends Error{code;constructor({message:t,code:e,cause:n,name:i}){super(t,{cause:n}),this.name=i??n.name,this.code=e}}const ws=new class{controller;createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}},_s=["cross-platform","platform"];function Ss(t){if(t&&!(_s.indexOf(t)<0))return t}async function xs(t,e=!1){if(!ys())throw new Error("WebAuthn is not supported in this browser");let n;0!==t.allowCredentials?.length&&(n=t.allowCredentials?.map(Cs));const i={...t,challenge:bs(t.challenge),allowCredentials:n},r={};if(e){if(!await async function(){const t=window.PublicKeyCredential;return void 0!==t.isConditionalMediationAvailable&&t.isConditionalMediationAvailable()}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete*='webauthn']").length<1)throw Error('No <input> with `"webauthn"` in its `autocomplete` attribute was detected');r.mediation="conditional",i.allowCredentials=[]}let a;r.publicKey=i,r.signal=ws.createNewAbortSignal();try{a=await navigator.credentials.get(r)}catch(t){throw function({error:t,options:e}){const{publicKey:n}=e;if(!n)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new $s({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new $s({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=window.location.hostname;if("localhost"!==(i=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(i))return new $s({message:`${window.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(n.rpId!==e)return new $s({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new $s({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var i;return t}({error:t,options:r})}if(!a)throw new Error("Authentication was not completed");const{id:s,rawId:o,response:l,type:c}=a;let h;return l.userHandle&&(h=function(t){return new TextDecoder("utf-8").decode(t)}(l.userHandle)),{id:s,rawId:vs(o),response:{authenticatorData:vs(l.authenticatorData),clientDataJSON:vs(l.clientDataJSON),signature:vs(l.signature),userHandle:h},type:c,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Ss(a.authenticatorAttachment)}}async function Ts(){return!!ys()&&PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}function Is(t){return Is="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Is(t)}function Es(){Es=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var C={};c(C,s,(function(){return this}));var $=Object.getPrototypeOf,w=$&&$($(P([])));w&&w!==n&&i.call(w,s)&&(C=w);var _=y.prototype=v.prototype=Object.create(C);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==Is(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(Is(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function Ls(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function ks(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){Ls(a,i,r,s,o,"next",t)}function o(t){Ls(a,i,r,s,o,"throw",t)}s(void 0)}))}}function Ps(t){return Ps="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ps(t)}function As(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return Ms(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ms(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var i=0,r=function(){};return{s:r,n:function(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,s=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return s=t.done,t},e:function(t){o=!0,a=t},f:function(){try{s||null==n.return||n.return()}finally{if(o)throw a}}}}function Ms(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function Bs(){Bs=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},a="function"==typeof Symbol?Symbol:{},s=a.iterator||"@@iterator",o=a.asyncIterator||"@@asyncIterator",l=a.toStringTag||"@@toStringTag";function c(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{c({},"")}catch(t){c=function(t,e,n){return t[e]=n}}function h(t,e,n,i){var a=e&&e.prototype instanceof v?e:v,s=Object.create(a.prototype),o=new k(i||[]);return r(s,"_invoke",{value:T(t,n,o)}),s}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=h;var d="suspendedStart",f="suspendedYield",p="executing",g="completed",m={};function v(){}function b(){}function y(){}var C={};c(C,s,(function(){return this}));var $=Object.getPrototypeOf,w=$&&$($(P([])));w&&w!==n&&i.call(w,s)&&(C=w);var _=y.prototype=v.prototype=Object.create(C);function S(t){["next","throw","return"].forEach((function(e){c(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function n(r,a,s,o){var l=u(t[r],t,a);if("throw"!==l.type){var c=l.arg,h=c.value;return h&&"object"==Ps(h)&&i.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,s,o)}),(function(t){n("throw",t,s,o)})):e.resolve(h).then((function(t){c.value=t,s(c)}),(function(t){return n("throw",t,s,o)}))}o(l.arg)}var a;r(this,"_invoke",{value:function(t,i){function r(){return new e((function(e,r){n(t,i,e,r)}))}return a=a?a.then(r,r):r()}})}function T(e,n,i){var r=d;return function(a,s){if(r===p)throw new Error("Generator is already running");if(r===g){if("throw"===a)throw s;return{value:t,done:!0}}for(i.method=a,i.arg=s;;){var o=i.delegate;if(o){var l=I(o,i);if(l){if(l===m)continue;return l}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===d)throw r=g,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=p;var c=u(e,n,i);if("normal"===c.type){if(r=i.done?g:f,c.arg===m)continue;return{value:c.arg,done:i.done}}"throw"===c.type&&(r=g,i.method="throw",i.arg=c.arg)}}}function I(e,n){var i=n.method,r=e.iterator[i];if(r===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var a=u(r,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,m;var s=a.arg;return s?s.done?(n[e.resultName]=s.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):s:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function L(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function k(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(i.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(Ps(e)+" is not iterable")}return b.prototype=y,r(_,"constructor",{value:y,configurable:!0}),r(y,"constructor",{value:b,configurable:!0}),b.displayName=c(y,l,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,c(t,l,"GeneratorFunction")),t.prototype=Object.create(_),t},e.awrap=function(t){return{__await:t}},S(x.prototype),c(x.prototype,o,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,i,r,a){void 0===a&&(a=Promise);var s=new x(h(t,n,i,r),a);return e.isGeneratorFunction(n)?s:s.next().then((function(t){return t.done?t.value:s.next()}))},S(_),c(_,l,"Generator"),c(_,s,(function(){return this})),c(_,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var i in e)n.push(i);return n.reverse(),function t(){for(;n.length;){var i=n.pop();if(i in e)return t.value=i,t.done=!1,t}return t.done=!0,t}},e.values=P,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(L),!e)for(var n in this)"t"===n.charAt(0)&&i.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(i,r){return o.type="throw",o.arg=e,n.next=i,r&&(n.method="next",n.arg=t),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var s=this.tryEntries[a],o=s.completion;if("root"===s.tryLoc)return r("end");if(s.tryLoc<=this.prev){var l=i.call(s,"catchLoc"),c=i.call(s,"finallyLoc");if(l&&c){if(this.prev<s.catchLoc)return r(s.catchLoc,!0);if(this.prev<s.finallyLoc)return r(s.finallyLoc)}else if(l){if(this.prev<s.catchLoc)return r(s.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<s.finallyLoc)return r(s.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var s=a?a.completion:{};return s.type=t,s.arg=e,a?(this.method="next",this.next=a.finallyLoc,m):this.complete(s)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),L(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var r=i.arg;L(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function Ds(t,e,n,i,r,a,s){try{var o=t[a](s),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(i,r)}function Os(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var a=t.apply(e,n);function s(t){Ds(a,i,r,s,o,"next",t)}function o(t){Ds(a,i,r,s,o,"throw",t)}s(void 0)}))}}Craft.ElevatedSessionManager=Garnish.Base.extend({fetchingTimeout:!1,loginModal:null,showingLoginModal:!1,onSuccess:null,onCancel:null,success:!1,requireElevatedSession:function(t,e,n){var i=this;return ks(Es().mark((function r(){var a,s;return Es().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i.onSuccess=t,i.onCancel=e,i.fetchingTimeout=!0,r.prev=3,r.next=6,Craft.sendActionRequest("POST","users/get-elevated-session-timeout");case 6:s=r.sent,a=s.data;case 8:return r.prev=8,i.fetchingTimeout=!1,r.finish(8);case 11:!1===a.timeout||a.timeout>=(n||Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout)?i.onSuccess():i.showLoginModal();case 12:case"end":return r.stop()}}),r,null,[[3,,8,11]])})))()},showLoginModal:function(){var t=this;return ks(Es().mark((function e(){var n,i,r;return Es().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.showingLoginModal){e.next=2;break}return e.abrupt("return");case 2:return t.showingLoginModal=!0,t.loginModal&&t.loginModal.destroy(),e.next=6,Craft.sendActionRequest("POST","users/login-modal",{data:{email:Craft.userEmail,forElevatedSession:!0}});case 6:n=e.sent,i=n.data,r=$(i.html),t.loginModal=new Garnish.Modal(r,{closeOtherModals:!1,hideOnEsc:!1,hideOnShadeClick:!1,shadeClass:"modal-shade dark login-modal-shade",onFadeIn:function(){var e=ks(Es().mark((function e(){return Es().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return Craft.initUiElements(r),new Craft.LoginForm(r.find(".login-container"),{showPasskeyBtn:Craft.userHasPasskeys,onLogin:function(){t.success=!0,t.loginModal.hide()}}),e.next=4,Craft.appendHeadHtml(i.headHtml);case 4:return e.next=6,Craft.appendBodyHtml(i.bodyHtml);case 6:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),onFadeOut:function(){t.loginModal.destroy(),t.loginModal=null},onHide:function(){t.showingLoginModal=!1,t.success?t.onSuccess():t.onCancel&&t.onCancel()}});case 10:case"end":return e.stop()}}),e)})))()}},{minSafeElevatedSessionTimeout:5}),Craft.elevatedSessionManager=new Craft.ElevatedSessionManager,__webpack_require__(1402),__webpack_require__(8201),__webpack_require__(7606),__webpack_require__(9712),__webpack_require__(3347),__webpack_require__(9478),__webpack_require__(2387),__webpack_require__(6607),__webpack_require__(7966),__webpack_require__(657),__webpack_require__(4487),__webpack_require__(6966),__webpack_require__(5080),Craft.LoginForm=Garnish.Base.extend({$container:null,$form:null,$usernameInput:null,$passwordInput:null,$rememberMeCheckbox:null,$forgotPasswordLink:null,$submitBtn:null,submitBtn:null,$errors:null,$altMethodContainer:null,$passkeyBtn:null,modal:null,resetPasswordForm:null,validateOnInput:!1,init:function(t,e){var n=this;return Os(Bs().mark((function i(){return Bs().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(n.$container=$(t),n.$form=n.$container.find(".login-form"),n.$usernameInput=n.$form.find(".login-username"),n.$passwordInput=n.$form.find(".login-password"),n.$rememberMeCheckbox=n.$form.find(".login-remember-me"),n.$forgotPasswordLink=n.$form.find(".login-forgot-password"),n.$submitBtn=n.$form.find("button.submit"),n.$errors=n.$container.find(".login-errors"),n.$altMethodContainer=n.$container.find(".alternative-login-methods"),n.$passkeyBtn=n.$altMethodContainer.find(".login-passkey-btn"),n.setSettings(e,Craft.LoginForm.defaults),n.modal=n.$container.closest(".modal").data("modal"),n.submitBtn=new Garnish.MultiFunctionBtn(n.$submitBtn,{changeButtonText:!0}),new Craft.PasswordInput(n.$passwordInput,{onToggleInput:function(t){n.removeListener(n.$passwordInput,"input"),n.$passwordInput=t,n.addListener(n.$passwordInput,"input","onInput")}}),n.addListener(n.$usernameInput,"input","onInput"),n.addListener(n.$passwordInput,"input","onInput"),n.addListener(n.$forgotPasswordLink,"activate","showResetPasswordForm"),n.addListener(n.$form,"submit","onSubmit"),Garnish.isMobileBrowser()||(n.$usernameInput.val()?n.$passwordInput.trigger("focus"):n.$usernameInput.trigger("focus")),i.t0=n.settings.showPasskeyBtn&&ys(),!i.t0){i.next=24;break}return i.next=23,Ts();case 23:i.t0=i.sent;case 24:if(!i.t0){i.next=28;break}n.$passkeyBtn.removeClass("hidden"),n.onResize(),n.addListener(n.$passkeyBtn,"activate",(function(){n.loginWithPasskey()}));case 28:n.$altMethodContainer.children().filter(".btn:not(.hidden)").length&&n.$altMethodContainer.removeClass("hidden");case 29:case"end":return i.stop()}}),i)})))()},validate:function(){var t=Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val());if(!0!==t)return t;var e=this.$passwordInput.val().length;return e<Craft.minPasswordLength?Craft.t("yii","{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.",{attribute:Craft.t("app","Password"),min:Craft.minPasswordLength}):!(e>Craft.maxPasswordLength)||Craft.t("yii","{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.",{attribute:Craft.t("app","Password"),max:Craft.maxPasswordLength})},onInput:function(){this.validateOnInput&&!0===this.validate()&&this.clearErrors()},onSubmit:function(t){var e=this;t.preventDefault();var n=this.validate();if(!0!==n)return this.showError(n),void(this.validateOnInput=!0);this.clearErrors(),this.submitBtn.busyEvent();var i={loginName:this.$usernameInput.val(),password:this.$passwordInput.val(),rememberMe:this.$rememberMeCheckbox.prop("checked")?"y":""};Craft.sendActionRequest("POST","users/login",{data:i}).then((function(t){var n=t.data;n.authMethod?e.show2faForm(n):(e.submitBtn.successEvent(),e.settings.onLogin(n.returnUrl))})).catch((function(t){var n;e.submitBtn.failureEvent(),Garnish.shake(e.$form,"left"),e.showError((null==t||null===(n=t.response)||void 0===n||null===(n=n.data)||void 0===n?void 0:n.message)||Craft.t("app","A server error occurred.")),e.submitBtn.failureEvent()}))},showResetPasswordForm:function(){this.clearErrors(),this.$form.addClass("hidden"),this.resetPasswordForm||(this.resetPasswordForm=new Craft.LoginForm.ResetPasswordForm(this,this.$container)),this.resetPasswordForm.$form.removeClass("hidden"),this.resetPasswordForm.$usernameInput.val(this.$usernameInput.val()),Garnish.isMobileBrowser()||this.resetPasswordForm.$usernameInput.trigger("focus"),this.onResize()},show2faForm:function(t){var e=this;return Os(Bs().mark((function n(){var i,r,a,s,o,l,c,h,u;return Bs().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return e.clearErrors(),e.$form.addClass("hidden"),i=$(t.authForm).insertAfter(e.$form),n.next=5,Craft.appendHeadHtml(t.headHtml);case 5:return n.next=7,Craft.appendBodyHtml(t.bodyHtml);case 7:if(Craft.initUiElements(i),Craft.createAuthFormHandler(t.authMethod,i,(function(){e.settings.onLogin(t.returnUrl)}),(function(t){e.showError(t)})),Garnish.isMobileBrowser()||setTimeout((function(){i.find(":focusable:first").trigger("focus")}),100),t.otherMethods.length){r=$("<hr/>").insertAfter(i),a=$('<div class="login-alt-container"/>').insertAfter(r),s=Craft.ui.createButton({label:Craft.t("app","Try another way"),spinner:!0}).addClass("menubtn").appendTo(a),o=$('<div class="menu login-alt-menu"/>').appendTo(a),l=$("<ul/>").appendTo(o),c=As(t.otherMethods);try{for(c.s();!(h=c.n()).done;)u=h.value,$("<li/>").append($("<a/>",{text:u.name,"data-method":u.class})).appendTo(l)}catch(t){c.e(t)}finally{c.f()}new Garnish.MenuBtn(s,{onOptionSelect:function(t){s.addClass("loading"),Craft.sendActionRequest("post","users/auth-form",{data:{method:$(t).data("method")}}).then((function(t){var n=t.data;i.remove(),r.remove(),a.remove(),console.log(n),e.show2faForm(n)})).finally((function(){s.removeClass("loading")}))}})}e.onResize();case 12:case"end":return n.stop()}}),n)})))()},showError:function(t){this.clearErrors(),$('<p style="display: none;">'+t+"</p>").appendTo(this.$errors).velocity("fadeIn"),this.$errors.removeClass("hidden"),this.onResize()},clearErrors:function(){this.$errors.empty().addClass("hidden"),this.onResize()},onResize:function(){var t=this;this.modal&&Garnish.requestAnimationFrame((function(){t.modal.updateSizeAndPosition()}))},loginWithPasskey:function(){var t=this;return Os(Bs().mark((function e(){var n,i,r,a,s;return Bs().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.$passkeyBtn.hasClass("loading")){e.next=2;break}return e.abrupt("return");case 2:return t.$passkeyBtn.addClass("loading"),e.prev=3,e.next=6,Craft.sendActionRequest("POST","auth/passkey-request-options");case 6:return n=e.sent,e.next=9,xs(n.data.options);case 9:return i=e.sent,e.next=12,Craft.sendActionRequest("POST","users/login-with-passkey",{data:{requestOptions:JSON.stringify(n.data.options),response:JSON.stringify(i)}});case 12:r=e.sent,t.settings.onLogin(r.data.returnUrl),e.next=20;break;case 16:e.prev=16,e.t0=e.catch(3),(s=null===e.t0||void 0===e.t0||null===(a=e.t0.response)||void 0===a||null===(a=a.data)||void 0===a?void 0:a.message)&&t.showError(s);case 20:return e.prev=20,t.$passkeyBtn.removeClass("loading"),e.finish(20);case 23:case"end":return e.stop()}}),e,null,[[3,16,20,23]])})))()}},{validateUsernameOrEmail:function(t){return 0===t.length?Craft.useEmailAsUsername?Craft.t("app","Invalid email."):Craft.t("app","Invalid username or email."):!(Craft.useEmailAsUsername&&!t.match(".+@.+..+"))||Craft.t("app","Invalid email.")},defaults:{showPasskeyBtn:!0,onLogin:function(t){window.location.href=t}}}),Craft.LoginForm.ResetPasswordForm=Garnish.Base.extend({loginForm:null,$container:null,$form:null,$usernameInput:null,$submitBtn:null,$backBtn:null,validateOnInput:!1,init:function(t,e){this.loginForm=t,this.$container=$(e),this.$form=this.$container.find(".login-reset-password").removeClass("hidden"),this.$usernameInput=this.$form.find(".login-username"),this.$submitBtn=this.$form.find("button.submit"),this.$backBtn=this.$form.find(".login-reset-back-btn"),this.addListener(this.$usernameInput,"input","onInput"),this.addListener(this.$form,"submit","onSubmit"),this.addListener(this.$backBtn,"activate","showLoginForm")},validate:function(){return Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val())},onInput:function(){this.validateOnInput&&!0===this.validate()&&this.loginForm.clearErrors()},onSubmit:function(t){var e=this;t.preventDefault();var n=this.validate();if(!0!==n)return this.loginForm.showError(n),void(this.validateOnInput=!0);this.loginForm.clearErrors(),this.$submitBtn.addClass("loading");var i={loginName:this.$usernameInput.val()};Craft.sendActionRequest("POST","users/send-password-reset-email",{data:i}).then((function(t){new Craft.LoginForm.ResetPasswordForm.MessageSentModal})).catch((function(t){e.showError(t&&t.response&&t.response.data&&t.response.data.message||Craft.t("app","A server error occurred."))})).finally((function(){e.$submitBtn.removeClass("loading")}))},showLoginForm:function(){this.loginForm.clearErrors(),this.$form.addClass("hidden"),this.loginForm.$form.removeClass("hidden"),this.loginForm.$usernameInput.val(this.$usernameInput.val()),Garnish.isMobileBrowser()||this.loginForm.$usernameInput.trigger("focus"),this.loginForm.onResize()}}),Craft.LoginForm.ResetPasswordForm.MessageSentModal=Garnish.Modal.extend({init:function(){var t=$('<div class="modal fitted email-sent"><div class="body">'+Craft.t("app","Check your email for instructions to reset your password.")+"</div></div>").appendTo(Garnish.$bod);this.base(t)},hide:function(){}}),__webpack_require__(8683),__webpack_require__(7439),__webpack_require__(5328),__webpack_require__(6419),__webpack_require__(872),__webpack_require__(1396),__webpack_require__(4070),__webpack_require__(5763),__webpack_require__(5185),__webpack_require__(8030),__webpack_require__(3096),__webpack_require__(53),__webpack_require__(5074),__webpack_require__(3958),__webpack_require__(3079),__webpack_require__(1752),__webpack_require__(7e3),__webpack_require__(8654),__webpack_require__(147),__webpack_require__(9922);const Fs=Math.min,Rs=Math.max,Hs=Math.round,Gs=(Math.floor,t=>({x:t,y:t})),Ns={left:"right",right:"left",bottom:"top",top:"bottom"},js={start:"end",end:"start"};function Us(t,e,n){return Rs(t,Fs(e,n))}function zs(t,e){return"function"==typeof t?t(e):t}function Vs(t){return t.split("-")[0]}function qs(t){return t.split("-")[1]}function Ws(t){return"x"===t?"y":"x"}function Ys(t){return"y"===t?"height":"width"}function Ks(t){return["top","bottom"].includes(Vs(t))?"y":"x"}function Xs(t){return Ws(Ks(t))}function Js(t){return t.replace(/start|end/g,(t=>js[t]))}function Qs(t){return t.replace(/left|right|bottom|top/g,(t=>Ns[t]))}function Zs(t){return"number"!=typeof t?function(t){return{top:0,right:0,bottom:0,left:0,...t}}(t):{top:t,right:t,bottom:t,left:t}}function to(t){return{...t,top:t.y,left:t.x,right:t.x+t.width,bottom:t.y+t.height}}function eo(t,e,n){let{reference:i,floating:r}=t;const a=Ks(e),s=Xs(e),o=Ys(s),l=Vs(e),c="y"===a,h=i.x+i.width/2-r.width/2,u=i.y+i.height/2-r.height/2,d=i[o]/2-r[o]/2;let f;switch(l){case"top":f={x:h,y:i.y-r.height};break;case"bottom":f={x:h,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:u};break;case"left":f={x:i.x-r.width,y:u};break;default:f={x:i.x,y:i.y}}switch(qs(e)){case"start":f[s]-=d*(n&&c?-1:1);break;case"end":f[s]+=d*(n&&c?-1:1)}return f}async function no(t,e){var n;void 0===e&&(e={});const{x:i,y:r,platform:a,rects:s,elements:o,strategy:l}=t,{boundary:c="clippingAncestors",rootBoundary:h="viewport",elementContext:u="floating",altBoundary:d=!1,padding:f=0}=zs(e,t),p=Zs(f),g=o[d?"floating"===u?"reference":"floating":u],m=to(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(g)))||n?g:g.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:c,rootBoundary:h,strategy:l})),v="floating"===u?{...s.floating,x:i,y:r}:s.reference,b=await(null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),y=await(null==a.isElement?void 0:a.isElement(b))&&await(null==a.getScale?void 0:a.getScale(b))||{x:1,y:1},C=to(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:v,offsetParent:b,strategy:l}):v);return{top:(m.top-C.top+p.top)/y.y,bottom:(C.bottom-m.bottom+p.bottom)/y.y,left:(m.left-C.left+p.left)/y.x,right:(C.right-m.right+p.right)/y.x}}const io=function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var n,i;const{x:r,y:a,placement:s,middlewareData:o}=e,l=await async function(t,e){const{placement:n,platform:i,elements:r}=t,a=await(null==i.isRTL?void 0:i.isRTL(r.floating)),s=Vs(n),o=qs(n),l="y"===Ks(n),c=["left","top"].includes(s)?-1:1,h=a&&l?-1:1,u=zs(e,t);let{mainAxis:d,crossAxis:f,alignmentAxis:p}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return o&&"number"==typeof p&&(f="end"===o?-1*p:p),l?{x:f*h,y:d*c}:{x:d*c,y:f*h}}(e,t);return s===(null==(n=o.offset)?void 0:n.placement)&&null!=(i=o.arrow)&&i.alignmentOffset?{}:{x:r+l.x,y:a+l.y,data:{...l,placement:s}}}}};function ro(t){return oo(t)?(t.nodeName||"").toLowerCase():"#document"}function ao(t){var e;return(null==t||null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function so(t){var e;return null==(e=(oo(t)?t.ownerDocument:t.document)||window.document)?void 0:e.documentElement}function oo(t){return t instanceof Node||t instanceof ao(t).Node}function lo(t){return t instanceof Element||t instanceof ao(t).Element}function co(t){return t instanceof HTMLElement||t instanceof ao(t).HTMLElement}function ho(t){return"undefined"!=typeof ShadowRoot&&(t instanceof ShadowRoot||t instanceof ao(t).ShadowRoot)}function uo(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=vo(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&!["inline","contents"].includes(r)}function fo(t){return["table","td","th"].includes(ro(t))}function po(t){const e=go(),n=vo(t);return"none"!==n.transform||"none"!==n.perspective||!!n.containerType&&"normal"!==n.containerType||!e&&!!n.backdropFilter&&"none"!==n.backdropFilter||!e&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((t=>(n.willChange||"").includes(t)))||["paint","layout","strict","content"].some((t=>(n.contain||"").includes(t)))}function go(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function mo(t){return["html","body","#document"].includes(ro(t))}function vo(t){return ao(t).getComputedStyle(t)}function bo(t){return lo(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function yo(t){if("html"===ro(t))return t;const e=t.assignedSlot||t.parentNode||ho(t)&&t.host||so(t);return ho(e)?e.host:e}function Co(t){const e=yo(t);return mo(e)?t.ownerDocument?t.ownerDocument.body:t.body:co(e)&&uo(e)?e:Co(e)}function $o(t,e,n){var i;void 0===e&&(e=[]),void 0===n&&(n=!0);const r=Co(t),a=r===(null==(i=t.ownerDocument)?void 0:i.body),s=ao(r);return a?e.concat(s,s.visualViewport||[],uo(r)?r:[],s.frameElement&&n?$o(s.frameElement):[]):e.concat(r,$o(r,[],n))}function wo(t){const e=vo(t);let n=parseFloat(e.width)||0,i=parseFloat(e.height)||0;const r=co(t),a=r?t.offsetWidth:n,s=r?t.offsetHeight:i,o=Hs(n)!==a||Hs(i)!==s;return o&&(n=a,i=s),{width:n,height:i,$:o}}function _o(t){return lo(t)?t:t.contextElement}function So(t){const e=_o(t);if(!co(e))return Gs(1);const n=e.getBoundingClientRect(),{width:i,height:r,$:a}=wo(e);let s=(a?Hs(n.width):n.width)/i,o=(a?Hs(n.height):n.height)/r;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}const xo=Gs(0);function To(t){const e=ao(t);return go()&&e.visualViewport?{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}:xo}function Io(t,e,n,i){void 0===e&&(e=!1),void 0===n&&(n=!1);const r=t.getBoundingClientRect(),a=_o(t);let s=Gs(1);e&&(i?lo(i)&&(s=So(i)):s=So(t));const o=function(t,e,n){return void 0===e&&(e=!1),!(!n||e&&n!==ao(t))&&e}(a,n,i)?To(a):Gs(0);let l=(r.left+o.x)/s.x,c=(r.top+o.y)/s.y,h=r.width/s.x,u=r.height/s.y;if(a){const t=ao(a),e=i&&lo(i)?ao(i):i;let n=t,r=n.frameElement;for(;r&&i&&e!==n;){const t=So(r),e=r.getBoundingClientRect(),i=vo(r),a=e.left+(r.clientLeft+parseFloat(i.paddingLeft))*t.x,s=e.top+(r.clientTop+parseFloat(i.paddingTop))*t.y;l*=t.x,c*=t.y,h*=t.x,u*=t.y,l+=a,c+=s,n=ao(r),r=n.frameElement}}return to({width:h,height:u,x:l,y:c})}const Eo=[":popover-open",":modal"];function Lo(t){return Eo.some((e=>{try{return t.matches(e)}catch(t){return!1}}))}function ko(t){return Io(so(t)).left+bo(t).scrollLeft}function Po(t,e,n){let i;if("viewport"===e)i=function(t,e){const n=ao(t),i=so(t),r=n.visualViewport;let a=i.clientWidth,s=i.clientHeight,o=0,l=0;if(r){a=r.width,s=r.height;const t=go();(!t||t&&"fixed"===e)&&(o=r.offsetLeft,l=r.offsetTop)}return{width:a,height:s,x:o,y:l}}(t,n);else if("document"===e)i=function(t){const e=so(t),n=bo(t),i=t.ownerDocument.body,r=Rs(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),a=Rs(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let s=-n.scrollLeft+ko(t);const o=-n.scrollTop;return"rtl"===vo(i).direction&&(s+=Rs(e.clientWidth,i.clientWidth)-r),{width:r,height:a,x:s,y:o}}(so(t));else if(lo(e))i=function(t,e){const n=Io(t,!0,"fixed"===e),i=n.top+t.clientTop,r=n.left+t.clientLeft,a=co(t)?So(t):Gs(1);return{width:t.clientWidth*a.x,height:t.clientHeight*a.y,x:r*a.x,y:i*a.y}}(e,n);else{const n=To(t);i={...e,x:e.x-n.x,y:e.y-n.y}}return to(i)}function Ao(t,e){const n=yo(t);return!(n===e||!lo(n)||mo(n))&&("fixed"===vo(n).position||Ao(n,e))}function Mo(t,e,n){const i=co(e),r=so(e),a="fixed"===n,s=Io(t,!0,a,e);let o={scrollLeft:0,scrollTop:0};const l=Gs(0);if(i||!i&&!a)if(("body"!==ro(e)||uo(r))&&(o=bo(e)),i){const t=Io(e,!0,a,e);l.x=t.x+e.clientLeft,l.y=t.y+e.clientTop}else r&&(l.x=ko(r));return{x:s.left+o.scrollLeft-l.x,y:s.top+o.scrollTop-l.y,width:s.width,height:s.height}}function Bo(t,e){return co(t)&&"fixed"!==vo(t).position?e?e(t):t.offsetParent:null}function Do(t,e){const n=ao(t);if(!co(t)||Lo(t))return n;let i=Bo(t,e);for(;i&&fo(i)&&"static"===vo(i).position;)i=Bo(i,e);return i&&("html"===ro(i)||"body"===ro(i)&&"static"===vo(i).position&&!po(i))?n:i||function(t){let e=yo(t);for(;co(e)&&!mo(e);){if(po(e))return e;e=yo(e)}return null}(t)||n}const Oo={convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{elements:e,rect:n,offsetParent:i,strategy:r}=t;const a="fixed"===r,s=so(i),o=!!e&&Lo(e.floating);if(i===s||o&&a)return n;let l={scrollLeft:0,scrollTop:0},c=Gs(1);const h=Gs(0),u=co(i);if((u||!u&&!a)&&(("body"!==ro(i)||uo(s))&&(l=bo(i)),co(i))){const t=Io(i);c=So(i),h.x=t.x+i.clientLeft,h.y=t.y+i.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-l.scrollLeft*c.x+h.x,y:n.y*c.y-l.scrollTop*c.y+h.y}},getDocumentElement:so,getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:i,strategy:r}=t;const a=[..."clippingAncestors"===n?function(t,e){const n=e.get(t);if(n)return n;let i=$o(t,[],!1).filter((t=>lo(t)&&"body"!==ro(t))),r=null;const a="fixed"===vo(t).position;let s=a?yo(t):t;for(;lo(s)&&!mo(s);){const e=vo(s),n=po(s);n||"fixed"!==e.position||(r=null),(a?!n&&!r:!n&&"static"===e.position&&r&&["absolute","fixed"].includes(r.position)||uo(s)&&!n&&Ao(t,s))?i=i.filter((t=>t!==s)):r=e,s=yo(s)}return e.set(t,i),i}(e,this._c):[].concat(n),i],s=a[0],o=a.reduce(((t,n)=>{const i=Po(e,n,r);return t.top=Rs(i.top,t.top),t.right=Fs(i.right,t.right),t.bottom=Fs(i.bottom,t.bottom),t.left=Rs(i.left,t.left),t}),Po(e,s,r));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:Do,getElementRects:async function(t){const e=this.getOffsetParent||Do,n=this.getDimensions;return{reference:Mo(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,...await n(t.floating)}}},getClientRects:function(t){return Array.from(t.getClientRects())},getDimensions:function(t){const{width:e,height:n}=wo(t);return{width:e,height:n}},getScale:So,isElement:lo,isRTL:function(t){return"rtl"===vo(t).direction}},Fo=function(t){return void 0===t&&(t={}),{name:"shift",options:t,async fn(e){const{x:n,y:i,placement:r}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:o={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...l}=zs(t,e),c={x:n,y:i},h=await no(e,l),u=Ks(Vs(r)),d=Ws(u);let f=c[d],p=c[u];if(a){const t="y"===d?"bottom":"right";f=Us(f+h["y"===d?"top":"left"],f,f-h[t])}if(s){const t="y"===u?"bottom":"right";p=Us(p+h["y"===u?"top":"left"],p,p-h[t])}const g=o.fn({...e,[d]:f,[u]:p});return{...g,data:{x:g.x-n,y:g.y-i}}}}},Ro=t=>({name:"arrow",options:t,async fn(e){const{x:n,y:i,placement:r,rects:a,platform:s,elements:o,middlewareData:l}=e,{element:c,padding:h=0}=zs(t,e)||{};if(null==c)return{};const u=Zs(h),d={x:n,y:i},f=Xs(r),p=Ys(f),g=await s.getDimensions(c),m="y"===f,v=m?"top":"left",b=m?"bottom":"right",y=m?"clientHeight":"clientWidth",C=a.reference[p]+a.reference[f]-d[f]-a.floating[p],$=d[f]-a.reference[f],w=await(null==s.getOffsetParent?void 0:s.getOffsetParent(c));let _=w?w[y]:0;_&&await(null==s.isElement?void 0:s.isElement(w))||(_=o.floating[y]||a.floating[p]);const S=C/2-$/2,x=_/2-g[p]/2-1,T=Fs(u[v],x),I=Fs(u[b],x),E=T,L=_-g[p]-I,k=_/2-g[p]/2+S,P=Us(E,k,L),A=!l.arrow&&null!=qs(r)&&k!==P&&a.reference[p]/2-(k<E?T:I)-g[p]/2<0,M=A?k<E?k-E:k-L:0;return{[f]:d[f]+M,data:{[f]:P,centerOffset:k-P-M,...A&&{alignmentOffset:M}},reset:A}}});function Ho(t){return Ho="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ho(t)}function Go(t,e,n){return(e=Vo(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function No(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var i,r,a,s,o=[],l=!0,c=!1;try{if(a=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(o.push(i.value),o.length!==e);l=!0);}catch(t){c=!0,r=t}finally{try{if(!l&&null!=n.return&&(s=n.return(),Object(s)!==s))return}finally{if(c)throw r}}return o}}(t,e)||jo(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function jo(t,e){if(t){if("string"==typeof t)return Uo(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Uo(t,e):void 0}}function Uo(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function zo(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,Vo(i.key),i)}}function Vo(t){var e=function(t,e){if("object"!=Ho(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!=Ho(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==Ho(e)?e:String(e)}function qo(t){var e="function"==typeof Map?new Map:void 0;return qo=function(t){if(null===t||!function(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(e){return"function"==typeof t}}(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,n)}function n(){return function(t,e,n){if(Wo())return Reflect.construct.apply(null,arguments);var i=[null];i.push.apply(i,e);var r=new(t.bind.apply(t,i));return n&&Yo(r,n.prototype),r}(t,arguments,Ko(this).constructor)}return n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),Yo(n,t)},qo(t)}function Wo(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(Wo=function(){return!!t})()}function Yo(t,e){return Yo=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Yo(t,e)}function Ko(t){return Ko=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},Ko(t)}var Xo=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),function(t,e,n){return e=Ko(e),function(t,e){if(e&&("object"===Ho(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,Wo()?Reflect.construct(e,n||[],Ko(t).constructor):e.apply(t,n))}(this,e,arguments)}var n,i;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Yo(t,e)}(e,t),n=e,i=[{key:"connectedCallback",value:function(){var t=this;this.arrowElement=this.querySelector(".arrow"),this.arrow="false"!==this.getAttribute("arrow"),this.offset=this.hasAttribute("offset")?parseInt(this.getAttribute("offset"),10):8,this.placement=this.getAttribute("placement")||"bottom",this.direction=getComputedStyle(this).direction,this.delay=this.getAttribute("delay")||500,this.delayTimeout=null,this.arrow&&!this.arrowElement&&(this.renderInner(),this.renderArrow()),this.listeners=[["mouseenter",this.show,this.delay],["focus",this.show,0],["mouseleave",this.hide,0],["blur",this.hide,0]],this.listeners.forEach((function(e){var n,i=No(e,3),r=i[0],a=i[1],s=i[2];null===(n=t.parentElement)||void 0===n||n.addEventListener(r,a.bind(t,s))})),document.addEventListener("keyup",this.handleKeyUp.bind(this)),this.update(),this.hide()}},{key:"disconnectedCallback",value:function(){var t=this;this.hide(),this.listeners.length&&this.listeners.forEach((function(e){var n,i=No(e,2),r=i[0],a=i[1];null===(n=t.parentElement)||void 0===n||n.removeEventListener(r,a.bind(t))})),document.removeEventListener("keyup",this.handleKeyUp.bind(this))}},{key:"handleKeyUp",value:function(t){"Escape"===t.key&&this.hide()}},{key:"renderInner",value:function(){this.inner=document.createElement("span"),this.inner.classList.add("inner"),this.inner.innerText=this.innerText,this.innerHTML="",this.appendChild(this.inner)}},{key:"renderArrow",value:function(){this.arrowElement=document.createElement("span"),this.arrowElement.classList.add("arrow"),this.inner.appendChild(this.arrowElement)}},{key:"show",value:function(t){var e=this;this.update(),this.delayTimeout=setTimeout((function(){Object.assign(e.style,{opacity:1,transform:["left","right"].includes(e.getStaticSide())?"translateX(0)":"translateY(0)",pointerEvents:"auto"})}),t)}},{key:"hide",value:function(){this.delayTimeout&&clearTimeout(this.delayTimeout),Object.assign(this.style,{opacity:0,transform:this.getInitialTransform(),pointerEvents:"none"})}},{key:"getInitialTransform",value:function(){return{top:"translateY(-".concat(this.offset,"px)"),right:"translateX(".concat(this.offset,"px)"),bottom:"translateY(".concat(this.offset,"px)"),left:"translateX(-".concat(this.offset,"px)")}[this.getStaticSide()]}},{key:"getStaticSide",value:function(){return{top:"bottom",right:"left",bottom:"top",left:"right"}[this.placement.split("-")[0]]}},{key:"update",value:function(){var t,e,n=this;((t,e,n)=>{const i=new Map,r={platform:Oo,...n},a={...r.platform,_c:i};return(async(t,e,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:a=[],platform:s}=n,o=a.filter(Boolean),l=await(null==s.isRTL?void 0:s.isRTL(e));let c=await s.getElementRects({reference:t,floating:e,strategy:r}),{x:h,y:u}=eo(c,i,l),d=i,f={},p=0;for(let n=0;n<o.length;n++){const{name:a,fn:g}=o[n],{x:m,y:v,data:b,reset:y}=await g({x:h,y:u,initialPlacement:i,placement:d,strategy:r,middlewareData:f,rects:c,platform:s,elements:{reference:t,floating:e}});h=null!=m?m:h,u=null!=v?v:u,f={...f,[a]:{...f[a],...b}},y&&p<=50&&(p++,"object"==typeof y&&(y.placement&&(d=y.placement),y.rects&&(c=!0===y.rects?await s.getElementRects({reference:t,floating:e,strategy:r}):y.rects),({x:h,y:u}=eo(c,d,l))),n=-1)}return{x:h,y:u,placement:d,strategy:r,middlewareData:f}})(t,e,{...r,platform:a})})(this.parentElement,this,{strategy:"fixed",placement:this.placement,middleware:[(void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:r,middlewareData:a,rects:s,initialPlacement:o,platform:l,elements:c}=t,{mainAxis:h=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:g=!0,...m}=zs(e,t);if(null!=(n=a.arrow)&&n.alignmentOffset)return{};const v=Vs(r),b=Vs(o)===o,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),C=d||(b||!g?[Qs(o)]:function(t){const e=Qs(t);return[Js(t),e,Js(e)]}(o));d||"none"===p||C.push(...function(t,e,n,i){const r=qs(t);let a=function(t,e,n){const i=["left","right"],r=["right","left"],a=["top","bottom"],s=["bottom","top"];switch(t){case"top":case"bottom":return n?e?r:i:e?i:r;case"left":case"right":return e?a:s;default:return[]}}(Vs(t),"start"===n,i);return r&&(a=a.map((t=>t+"-"+r)),e&&(a=a.concat(a.map(Js)))),a}(o,g,p,y));const $=[o,...C],w=await no(t,m),_=[];let S=(null==(i=a.flip)?void 0:i.overflows)||[];if(h&&_.push(w[v]),u){const t=function(t,e,n){void 0===n&&(n=!1);const i=qs(t),r=Xs(t),a=Ys(r);let s="x"===r?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return e.reference[a]>e.floating[a]&&(s=Qs(s)),[s,Qs(s)]}(r,s,y);_.push(w[t[0]],w[t[1]])}if(S=[...S,{placement:r,overflows:_}],!_.every((t=>t<=0))){var x,T;const t=((null==(x=a.flip)?void 0:x.index)||0)+1,e=$[t];if(e)return{data:{index:t,overflows:S},reset:{placement:e}};let n=null==(T=S.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:T.placement;if(!n)switch(f){case"bestFit":{var I;const t=null==(I=S.map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:I[0];t&&(n=t);break}case"initialPlacement":n=o}if(r!==n)return{reset:{placement:n}}}return{}}}),Fo({padding:10}),io(0)].concat((t=this.arrow?[Ro({element:this.arrowElement})]:[],function(t){if(Array.isArray(t))return Uo(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||jo(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))}).then((function(t){var e=t.x,i=t.y,r=t.middlewareData,a=t.placement;if(n.placement=a,Object.assign(n.style,Go({left:"".concat(e,"px"),top:"".concat(i,"px")},"padding".concat(Craft.uppercaseFirst(n.getStaticSide())),"".concat(n.offset,"px"))),n.arrowElement){var s=r.arrow,o=s.x,l=s.y;n.arrowElement.dataset.placement=a,Object.assign(n.arrowElement.style,Go({left:null!=o?"".concat(o,"px"):"",top:null!=l?"".concat(l,"px"):"",right:"",bottom:""},n.getStaticSide(),"-4px"))}}))}}],i&&zo(n.prototype,i),Object.defineProperty(n,"prototype",{writable:!1}),e}(qo(HTMLElement));customElements.define("craft-tooltip",Xo),__webpack_require__(6959),__webpack_require__(4215)}()})();
 //# sourceMappingURL=cp.js.map
\ No newline at end of file
diff --git a/src/web/assets/cp/dist/cp.js.map b/src/web/assets/cp/dist/cp.js.map
index 03ec46a6d97..8bb134a5f19 100644
--- a/src/web/assets/cp/dist/cp.js.map
+++ b/src/web/assets/cp/dist/cp.js.map
@@ -1 +1 @@
-{"version":3,"file":"cp.js","mappings":"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","sources":["webpack:///./js/Accordion.js","webpack:///./js/AdminTable.js","webpack:///./js/AssetImageEditor.js","webpack:///./js/AssetIndex.js","webpack:///./js/AssetMover.js","webpack:///./js/AssetSelectInput.js","webpack:///./js/AssetSelectorModal.js","webpack:///./js/AssetsFieldSettings.js","webpack:///./js/AuthManager.js","webpack:///./js/BaseElementIndex.js","webpack:///./js/BaseElementIndexView.js","webpack:///./js/BaseElementSelectInput.js","webpack:///./js/BaseElementSelectorModal.js","webpack:///./js/BaseInputGenerator.js","webpack:///./js/BaseUploader.js","webpack:///./js/CP.js","webpack:///./js/CardsElementIndexView.js","webpack:///./js/CategoryIndex.js","webpack:///./js/CategorySelectInput.js","webpack:///./js/ColorInput.js","webpack:///./js/ComponentSelectInput.js","webpack:///./js/CpModal.js","webpack:///./js/CpScreenSlideout.js","webpack:///./js/CraftDisclosure.js","webpack:///./js/CraftElementLabel.js","webpack:///./js/CraftGlobalSidebar.js","webpack:///./js/CustomizeSourcesModal.js","webpack:///./js/DataTableSorter.js","webpack:///./js/DeleteUserModal.js","webpack:///./js/DynamicGenerator.js","webpack:///./js/EditableTable.js","webpack:///./js/ElementActionTrigger.js","webpack:///./js/ElementEditor.js","webpack:///./js/ElementEditorSlideout.js","webpack:///./js/ElementFieldSettings.js","webpack:///./js/ElementTableSorter.js","webpack:///./js/ElementThumbLoader.js","webpack:///./js/ElevatedSessionForm.js","webpack:///./js/EntryIndex.js","webpack:///./js/FieldLayoutDesigner.js","webpack:///./js/FieldToggle.js","webpack:///./js/FormObserver.js","webpack:///./js/Grid.js","webpack:///./js/HandleGenerator.js","webpack:///./js/IconPicker.js","webpack:///./js/ImageUpload.js","webpack:///./js/InfoIcon.js","webpack:///./js/LightSwitch.js","webpack:///./js/Listbox.js","webpack:///./js/LivePreview.js","webpack:///./js/NestedElementManager.js","webpack:///./js/PasswordInput.js","webpack:///./js/Preview.js","webpack:///./js/PreviewFileModal.js","webpack:///./js/ProgressBar.js","webpack:///./js/PromptHandler.js","webpack:///./js/Queue.js","webpack:///./js/SlidePicker.js","webpack:///./js/SlideRuleInput.js","webpack:///./js/Slideout.js","webpack:///./js/SlugGenerator.js","webpack:///./js/Structure.js","webpack:///./js/StructureDrag.js","webpack:///./js/TableElementIndexView.js","webpack:///./js/Tabs.js","webpack:///./js/TagSelectInput.js","webpack:///./js/ThumbsElementIndexView.js","webpack:///./js/Tooltip.js","webpack:///./js/UI.js","webpack:///./js/Uploader.js","webpack:///./js/UriFormatGenerator.js","webpack:///./js/UserIndex.js","webpack:///./js/VolumeFolderSelectorModal.js","webpack:///./css/charts.scss?4afb","webpack:///./css/craft.scss?1b58","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///../../../../../node_modules/d3-array/src/max.js","webpack:///../../../../../node_modules/d3-axis/src/identity.js","webpack:///../../../../../node_modules/d3-axis/src/axis.js","webpack:///../../../../../node_modules/d3-selection/src/selector.js","webpack:///../../../../../node_modules/d3-selection/src/selectorAll.js","webpack:///../../../../../node_modules/d3-selection/src/matcher.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectChild.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectChildren.js","webpack:///../../../../../node_modules/d3-selection/src/selection/sparse.js","webpack:///../../../../../node_modules/d3-selection/src/selection/enter.js","webpack:///../../../../../node_modules/d3-selection/src/selection/data.js","webpack:///../../../../../node_modules/d3-selection/src/selection/sort.js","webpack:///../../../../../node_modules/d3-selection/src/namespaces.js","webpack:///../../../../../node_modules/d3-selection/src/namespace.js","webpack:///../../../../../node_modules/d3-selection/src/selection/attr.js","webpack:///../../../../../node_modules/d3-selection/src/window.js","webpack:///../../../../../node_modules/d3-selection/src/selection/style.js","webpack:///../../../../../node_modules/d3-selection/src/selection/property.js","webpack:///../../../../../node_modules/d3-selection/src/selection/classed.js","webpack:///../../../../../node_modules/d3-selection/src/selection/text.js","webpack:///../../../../../node_modules/d3-selection/src/selection/html.js","webpack:///../../../../../node_modules/d3-selection/src/selection/raise.js","webpack:///../../../../../node_modules/d3-selection/src/selection/lower.js","webpack:///../../../../../node_modules/d3-selection/src/creator.js","webpack:///../../../../../node_modules/d3-selection/src/selection/insert.js","webpack:///../../../../../node_modules/d3-selection/src/selection/remove.js","webpack:///../../../../../node_modules/d3-selection/src/selection/clone.js","webpack:///../../../../../node_modules/d3-selection/src/selection/on.js","webpack:///../../../../../node_modules/d3-selection/src/selection/dispatch.js","webpack:///../../../../../node_modules/d3-selection/src/selection/index.js","webpack:///../../../../../node_modules/d3-selection/src/selection/select.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectAll.js","webpack:///../../../../../node_modules/d3-selection/src/array.js","webpack:///../../../../../node_modules/d3-selection/src/selection/filter.js","webpack:///../../../../../node_modules/d3-selection/src/constant.js","webpack:///../../../../../node_modules/d3-selection/src/selection/exit.js","webpack:///../../../../../node_modules/d3-selection/src/selection/join.js","webpack:///../../../../../node_modules/d3-selection/src/selection/merge.js","webpack:///../../../../../node_modules/d3-selection/src/selection/order.js","webpack:///../../../../../node_modules/d3-selection/src/selection/call.js","webpack:///../../../../../node_modules/d3-selection/src/selection/nodes.js","webpack:///../../../../../node_modules/d3-selection/src/selection/node.js","webpack:///../../../../../node_modules/d3-selection/src/selection/size.js","webpack:///../../../../../node_modules/d3-selection/src/selection/empty.js","webpack:///../../../../../node_modules/d3-selection/src/selection/each.js","webpack:///../../../../../node_modules/d3-selection/src/selection/append.js","webpack:///../../../../../node_modules/d3-selection/src/selection/datum.js","webpack:///../../../../../node_modules/d3-selection/src/selection/iterator.js","webpack:///../../../../../node_modules/d3-dispatch/src/dispatch.js","webpack:///../../../../../node_modules/d3-timer/src/timer.js","webpack:///../../../../../node_modules/d3-timer/src/timeout.js","webpack:///../../../../../node_modules/d3-transition/src/transition/schedule.js","webpack:///../../../../../node_modules/d3-interpolate/src/number.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/decompose.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/parse.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/index.js","webpack:///../../../../../node_modules/d3-transition/src/transition/tween.js","webpack:///../../../../../node_modules/d3-color/src/define.js","webpack:///../../../../../node_modules/d3-color/src/color.js","webpack:///../../../../../node_modules/d3-interpolate/src/basis.js","webpack:///../../../../../node_modules/d3-interpolate/src/constant.js","webpack:///../../../../../node_modules/d3-interpolate/src/color.js","webpack:///../../../../../node_modules/d3-interpolate/src/rgb.js","webpack:///../../../../../node_modules/d3-interpolate/src/basisClosed.js","webpack:///../../../../../node_modules/d3-interpolate/src/string.js","webpack:///../../../../../node_modules/d3-transition/src/transition/interpolate.js","webpack:///../../../../../node_modules/d3-transition/src/transition/attr.js","webpack:///../../../../../node_modules/d3-transition/src/transition/attrTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/delay.js","webpack:///../../../../../node_modules/d3-transition/src/transition/duration.js","webpack:///../../../../../node_modules/d3-transition/src/transition/selection.js","webpack:///../../../../../node_modules/d3-transition/src/transition/style.js","webpack:///../../../../../node_modules/d3-transition/src/transition/index.js","webpack:///../../../../../node_modules/d3-transition/src/transition/select.js","webpack:///../../../../../node_modules/d3-transition/src/transition/selectAll.js","webpack:///../../../../../node_modules/d3-transition/src/transition/filter.js","webpack:///../../../../../node_modules/d3-transition/src/transition/merge.js","webpack:///../../../../../node_modules/d3-transition/src/transition/transition.js","webpack:///../../../../../node_modules/d3-transition/src/transition/on.js","webpack:///../../../../../node_modules/d3-transition/src/transition/styleTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/text.js","webpack:///../../../../../node_modules/d3-transition/src/transition/textTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/remove.js","webpack:///../../../../../node_modules/d3-transition/src/transition/ease.js","webpack:///../../../../../node_modules/d3-transition/src/transition/easeVarying.js","webpack:///../../../../../node_modules/d3-transition/src/transition/end.js","webpack:///../../../../../node_modules/d3-transition/src/selection/transition.js","webpack:///../../../../../node_modules/d3-ease/src/cubic.js","webpack:///../../../../../node_modules/d3-transition/src/selection/index.js","webpack:///../../../../../node_modules/d3-transition/src/selection/interrupt.js","webpack:///../../../../../node_modules/d3-transition/src/interrupt.js","webpack:///../../../../../node_modules/d3-brush/src/brush.js","webpack:///../../../../../node_modules/d3-format/src/formatDecimal.js","webpack:///../../../../../node_modules/d3-format/src/exponent.js","webpack:///../../../../../node_modules/d3-format/src/formatSpecifier.js","webpack:///../../../../../node_modules/d3-format/src/formatPrefixAuto.js","webpack:///../../../../../node_modules/d3-format/src/formatRounded.js","webpack:///../../../../../node_modules/d3-format/src/formatTypes.js","webpack:///../../../../../node_modules/d3-format/src/identity.js","webpack:///../../../../../node_modules/d3-format/src/locale.js","webpack:///../../../../../node_modules/d3-format/src/defaultLocale.js","webpack:///../../../../../node_modules/d3-format/src/formatGroup.js","webpack:///../../../../../node_modules/d3-format/src/formatNumerals.js","webpack:///../../../../../node_modules/d3-format/src/formatTrim.js","webpack:///../../../../../node_modules/d3-array/src/ticks.js","webpack:///../../../../../node_modules/d3-array/src/ascending.js","webpack:///../../../../../node_modules/d3-array/src/descending.js","webpack:///../../../../../node_modules/d3-array/src/bisector.js","webpack:///../../../../../node_modules/d3-array/src/bisect.js","webpack:///../../../../../node_modules/d3-array/src/number.js","webpack:///../../../../../node_modules/d3-interpolate/src/array.js","webpack:///../../../../../node_modules/d3-interpolate/src/date.js","webpack:///../../../../../node_modules/d3-interpolate/src/object.js","webpack:///../../../../../node_modules/d3-interpolate/src/numberArray.js","webpack:///../../../../../node_modules/d3-interpolate/src/value.js","webpack:///../../../../../node_modules/d3-interpolate/src/round.js","webpack:///../../../../../node_modules/d3-scale/src/number.js","webpack:///../../../../../node_modules/d3-scale/src/continuous.js","webpack:///../../../../../node_modules/d3-scale/src/constant.js","webpack:///../../../../../node_modules/d3-scale/src/init.js","webpack:///../../../../../node_modules/d3-scale/src/linear.js","webpack:///../../../../../node_modules/d3-scale/src/tickFormat.js","webpack:///../../../../../node_modules/d3-format/src/precisionPrefix.js","webpack:///../../../../../node_modules/d3-format/src/precisionRound.js","webpack:///../../../../../node_modules/d3-format/src/precisionFixed.js","webpack:///../../../../../node_modules/d3-time/src/duration.js","webpack:///../../../../../node_modules/d3-time/src/interval.js","webpack:///../../../../../node_modules/d3-time/src/millisecond.js","webpack:///../../../../../node_modules/d3-time/src/second.js","webpack:///../../../../../node_modules/d3-time/src/minute.js","webpack:///../../../../../node_modules/d3-time/src/hour.js","webpack:///../../../../../node_modules/d3-time/src/day.js","webpack:///../../../../../node_modules/d3-time/src/week.js","webpack:///../../../../../node_modules/d3-time/src/month.js","webpack:///../../../../../node_modules/d3-time/src/year.js","webpack:///../../../../../node_modules/d3-time/src/ticks.js","webpack:///../../../../../node_modules/d3-time-format/src/locale.js","webpack:///../../../../../node_modules/d3-time-format/src/defaultLocale.js","webpack:///../../../../../node_modules/d3-scale/src/time.js","webpack:///../../../../../node_modules/d3-scale/src/nice.js","webpack:///../../../../../node_modules/d3-selection/src/select.js","webpack:///../../../../../node_modules/d3-shape/src/array.js","webpack:///../../../../../node_modules/d3-shape/src/constant.js","webpack:///../../../../../node_modules/d3-shape/src/curve/linear.js","webpack:///../../../../../node_modules/d3-path/src/path.js","webpack:///../../../../../node_modules/d3-shape/src/path.js","webpack:///../../../../../node_modules/d3-shape/src/point.js","webpack:///../../../../../node_modules/d3-shape/src/line.js","webpack:///../../../../../node_modules/d3-zoom/src/transform.js","webpack:///./js/Craft.js","webpack:///../../../../../node_modules/@simplewebauthn/browser/dist/bundle/index.js","webpack:///./js/Chart.js","webpack:///../../../../../node_modules/d3-shape/src/area.js","webpack:///../../../../../node_modules/d3-array/src/min.js","webpack:///./js/ElevatedSessionManager.js","webpack:///./js/LoginForm.js","webpack:///../../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack:///../../../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack:///../../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack:///../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack:///./js/CraftTooltip.js"],"sourcesContent":["/** global: Craft */\n/** global: Garnish */\n/**\n * Accordion\n */\nCraft.Accordion = Garnish.Base.extend({\n  $trigger: null,\n  targetSelector: null,\n\n  _$target: null,\n\n  init: function (trigger) {\n    this.$trigger = $(trigger);\n\n    // Is this already an accordion trigger?\n    if (this.$trigger.data('accordion')) {\n      console.warn('Double-instantiating an accordion trigger on an element');\n      this.$trigger.data('accordion').destroy();\n    }\n\n    this.$trigger.data('accordion', this);\n    this.targetSelector = this.$trigger.attr('aria-controls')\n      ? `#${this.$trigger.attr('aria-controls')}`\n      : null;\n\n    if (this.targetSelector) {\n      this._$target = $(this.targetSelector);\n    }\n\n    this.addListener(this.$trigger, 'click', 'onTriggerClick');\n    this.addListener(this.$trigger, 'keypress', (event) => {\n      const key = event.keyCode;\n\n      if (key === Garnish.SPACE_KEY || key === Garnish.RETURN_KEY) {\n        event.preventDefault();\n        this.onTriggerClick();\n      }\n    });\n  },\n\n  onTriggerClick: function () {\n    const isOpen = this.$trigger.attr('aria-expanded') === 'true';\n\n    if (isOpen) {\n      this.hideTarget(this._$target);\n    } else {\n      this.showTarget(this._$target);\n    }\n  },\n\n  showTarget: function ($target) {\n    if ($target && $target.length) {\n      this.showTarget._currentHeight = $target.height();\n\n      $target.removeClass('hidden');\n\n      this.$trigger\n        .removeClass('collapsed')\n        .addClass('expanded')\n        .attr('aria-expanded', 'true');\n\n      for (let i = 0; i < $target.length; i++) {\n        (($t) => {\n          if ($t.prop('nodeName') !== 'SPAN') {\n            $t.height('auto');\n            this.showTarget._targetHeight = $t.height();\n            $t.css({\n              height: this.showTarget._currentHeight,\n              overflow: 'hidden',\n            });\n\n            $t.velocity('stop');\n\n            $t.velocity(\n              {height: this.showTarget._targetHeight},\n              Garnish.getUserPreferredAnimationDuration('fast'),\n              function () {\n                $t.css({\n                  height: '',\n                  overflow: '',\n                });\n              }\n            );\n          }\n        })($target.eq(i));\n      }\n\n      delete this.showTarget._targetHeight;\n      delete this.showTarget._currentHeight;\n\n      // Trigger a resize event in case there are any grids in the target that need to initialize\n      Garnish.$win.trigger('resize');\n    }\n  },\n\n  hideTarget: function ($target) {\n    if ($target && $target.length) {\n      this.$trigger\n        .removeClass('expanded')\n        .addClass('collapsed')\n        .attr('aria-expanded', 'false');\n\n      for (let i = 0; i < $target.length; i++) {\n        (($t) => {\n          if ($t.hasClass('hidden')) {\n            return;\n          }\n          if ($t.prop('nodeName') === 'SPAN') {\n            $t.addClass('hidden');\n          } else {\n            $t.css('overflow', 'hidden');\n            $t.velocity('stop');\n            $t.velocity(\n              {height: 0},\n              Garnish.getUserPreferredAnimationDuration('fast'),\n              function () {\n                $t.addClass('hidden');\n              }\n            );\n          }\n        })($target.eq(i));\n      }\n    }\n  },\n\n  destroy: function () {\n    this.$trigger.removeData('accordion');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Admin table class\n */\nCraft.AdminTable = Garnish.Base.extend(\n  {\n    settings: null,\n    totalItems: null,\n    sorter: null,\n\n    $noItems: null,\n    $table: null,\n    $tbody: null,\n    $deleteBtns: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.AdminTable.defaults);\n\n      if (!this.settings.allowDeleteAll) {\n        this.settings.minItems = 1;\n      }\n\n      this.$noItems = $(this.settings.noItemsSelector);\n      this.$table = $(this.settings.tableSelector);\n      this.$tbody = this.$table.children('tbody');\n      this.totalItems = this.$tbody.children().length;\n\n      if (this.settings.sortable) {\n        this.sorter = new Craft.DataTableSorter(this.$table, {\n          onSortChange: this.reorderItems.bind(this),\n        });\n      }\n\n      this.$deleteBtns = this.$table.find('.delete:not(.disabled)');\n      this.addListener(this.$deleteBtns, 'click', 'handleDeleteBtnClick');\n      this.addListener(this.$deleteBtns, 'keydown', (event) => {\n        if (\n          event.keyCode === Garnish.SPACE_KEY ||\n          event.keyCode === Garnish.RETURN_KEY\n        ) {\n          event.preventDefault();\n          this.handleDeleteBtnClick(event);\n        }\n      });\n\n      this.updateUI();\n    },\n\n    addRow: function (row) {\n      if (this.settings.maxItems && this.totalItems >= this.settings.maxItems) {\n        // Sorry pal.\n        return;\n      }\n\n      var $row = $(row).appendTo(this.$tbody),\n        $deleteBtn = $row.find('.delete');\n\n      if (this.settings.sortable) {\n        this.sorter.addItems($row);\n      }\n\n      this.$deleteBtns = this.$deleteBtns.add($deleteBtn);\n\n      this.addListener($deleteBtn, 'click', 'handleDeleteBtnClick');\n      this.totalItems++;\n\n      this.updateUI();\n    },\n\n    reorderItems: function () {\n      if (!this.settings.sortable) {\n        return;\n      }\n\n      // Get the new field order\n      var ids = [];\n\n      for (var i = 0; i < this.sorter.$items.length; i++) {\n        var id = $(this.sorter.$items[i]).attr(this.settings.idAttribute);\n        ids.push(id);\n      }\n\n      // Send it to the server\n      var data = {\n        ids: JSON.stringify(ids),\n      };\n\n      Craft.sendActionRequest('POST', this.settings.reorderAction, {data})\n        .then((response) => {\n          this.onReorderItems(ids);\n          Craft.cp.displaySuccess(\n            Craft.t('app', this.settings.reorderSuccessMessage)\n          );\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(\n            Craft.t('app', this.settings.reorderFailMessage)\n          );\n        });\n    },\n\n    handleDeleteBtnClick: function (event) {\n      if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n        // Sorry pal.\n        return;\n      }\n\n      var $row = $(event.target).closest('tr');\n\n      if (this.confirmDeleteItem($row)) {\n        this.deleteItem($row);\n      }\n    },\n\n    confirmDeleteItem: function ($row) {\n      if (!this.settings.confirmDeleteMessage) {\n        return true;\n      }\n\n      var name = this.getItemName($row);\n      return confirm(\n        Craft.t('app', this.settings.confirmDeleteMessage, {name})\n      );\n    },\n\n    deleteItem: function ($row) {\n      var data = {\n        id: this.getItemId($row),\n      };\n\n      Craft.sendActionRequest('POST', this.settings.deleteAction, {data})\n        .then((response) => this.handleDeleteItemSuccess(response.data, $row))\n        .catch(({response}) =>\n          this.handleDeleteItemFailure(response.data, $row)\n        );\n    },\n\n    handleDeleteItemFailure: function (data, $row) {\n      var id = this.getItemId($row),\n        name = this.getItemName($row);\n\n      Craft.cp.displayError(\n        Craft.t('app', this.settings.deleteFailMessage, {name})\n      );\n    },\n\n    handleDeleteItemSuccess: function (data, $row) {\n      var id = this.getItemId($row),\n        name = this.getItemName($row);\n\n      if (this.sorter) {\n        this.sorter.removeItems($row);\n      }\n\n      $row.remove();\n      this.totalItems--;\n      this.updateUI();\n      this.onDeleteItem(id);\n\n      if (this.settings.deleteSuccessMessage) {\n        Craft.cp.displaySuccess(\n          Craft.t('app', this.settings.deleteSuccessMessage, {name})\n        );\n      }\n    },\n\n    onReorderItems: function (ids) {\n      this.settings.onReorderItems(ids);\n    },\n\n    onDeleteItem: function (id) {\n      this.settings.onDeleteItem(id);\n    },\n\n    getItemId: function ($row) {\n      return $row.attr(this.settings.idAttribute);\n    },\n\n    getItemName: function ($row) {\n      return Craft.escapeHtml($row.attr(this.settings.nameAttribute));\n    },\n\n    updateUI: function () {\n      // Show the \"No Whatever Exists\" message if there aren't any\n      if (this.totalItems === 0) {\n        this.$table.hide();\n        this.$noItems.removeClass('hidden');\n      } else {\n        this.$table.show();\n        this.$noItems.addClass('hidden');\n      }\n\n      // Disable the sort buttons if there's only one row\n      if (this.settings.sortable) {\n        var $moveButtons = this.$table.find('.move');\n\n        if (this.totalItems === 1) {\n          $moveButtons.addClass('disabled');\n        } else {\n          $moveButtons.removeClass('disabled');\n        }\n      }\n\n      // Disable the delete buttons if we've reached the minimum items\n      if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n        this.$deleteBtns.addClass('disabled');\n      } else {\n        this.$deleteBtns.removeClass('disabled');\n      }\n\n      // Hide the New Whatever button if we've reached the maximum items\n      if (this.settings.newItemBtnSelector) {\n        if (\n          this.settings.maxItems &&\n          this.totalItems >= this.settings.maxItems\n        ) {\n          $(this.settings.newItemBtnSelector).addClass('hidden');\n        } else {\n          $(this.settings.newItemBtnSelector).removeClass('hidden');\n        }\n      }\n    },\n  },\n  {\n    defaults: {\n      tableSelector: null,\n      noItemsSelector: null,\n      newItemBtnSelector: null,\n      idAttribute: 'data-id',\n      nameAttribute: 'data-name',\n      sortable: false,\n      allowDeleteAll: true,\n      minItems: 0,\n      maxItems: null,\n      reorderAction: null,\n      deleteAction: null,\n      reorderSuccessMessage: Craft.t('app', 'New order saved.'),\n      reorderFailMessage: Craft.t('app', 'Couldn’t save new order.'),\n      confirmDeleteMessage: Craft.t(\n        'app',\n        'Are you sure you want to delete “{name}”?'\n      ),\n      deleteSuccessMessage: Craft.t('app', '“{name}” deleted.'),\n      deleteFailMessage: Craft.t('app', 'Couldn’t delete “{name}”.'),\n      onReorderItems: $.noop,\n      onDeleteItem: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Asset image editor class\n */\n\nCraft.AssetImageEditor = Garnish.Modal.extend(\n  {\n    // jQuery objects\n    $body: null,\n    $footer: null,\n    $imageTools: null,\n    $buttons: null,\n    $cancelBtn: null,\n    $replaceBtn: null,\n    $saveBtn: null,\n    $focalPointBtn: null,\n    $editorContainer: null,\n    $straighten: null,\n    $croppingCanvas: null,\n    $spinner: null,\n    $constraintContainer: null,\n    $constraintRadioInputs: null,\n    $customConstraints: null,\n\n    // FabricJS objects\n    canvas: null,\n    image: null,\n    viewport: null,\n    focalPoint: null,\n    grid: null,\n    croppingCanvas: null,\n    clipper: null,\n    croppingRectangle: null,\n    cropperHandles: null,\n    cropperGrid: null,\n    croppingShade: null,\n\n    // Image state attributes\n    imageStraightenAngle: 0,\n    viewportRotation: 0,\n    originalWidth: 0,\n    originalHeight: 0,\n    imageVerticeCoords: null,\n    zoomRatio: 1,\n\n    // Editor state attributes\n    animationInProgress: false,\n    currentView: '',\n    assetId: null,\n    cacheBust: null,\n    draggingCropper: false,\n    scalingCropper: false,\n    draggingFocal: false,\n    previousMouseX: 0,\n    previousMouseY: 0,\n    shiftKeyHeld: false,\n    editorHeight: 0,\n    editorWidth: 0,\n    cropperState: false,\n    scaleFactor: 1,\n    flipData: {},\n    focalPointState: false,\n    maxImageSize: null,\n    lastLoadedDimensions: null,\n    imageIsLoading: false,\n    mouseMoveEvent: null,\n    croppingConstraint: false,\n    constraintOrientation: 'landscape',\n    showingCustomConstraint: false,\n    saving: false,\n\n    // Rendering proxy functions\n    renderImage: null,\n    renderCropper: null,\n\n    _queue: null,\n\n    init: function (assetId, settings) {\n      this._queue = new Craft.Queue();\n\n      this.cacheBust = Date.now();\n\n      this.setSettings(settings, Craft.AssetImageEditor.defaults);\n\n      if (this.settings.allowDegreeFractions === null) {\n        this.settings.allowDegreeFractions = Craft.isImagick;\n      }\n\n      if (Garnish.prefersReducedMotion()) {\n        this.settings.animationDuration = 1;\n      }\n\n      this.assetId = assetId;\n      this.flipData = {x: 0, y: 0};\n\n      // Build the modal\n      this.$container = $(\n        '<form class=\"modal fitted imageeditor\"></form>'\n      ).appendTo(Garnish.$bod);\n      this.$body = $('<div class=\"body\"></div>').appendTo(this.$container);\n      this.$footer = $('<div class=\"footer\"/>').appendTo(this.$container);\n\n      this.base(this.$container, this.settings);\n\n      this.$buttons = $('<div class=\"buttons right\"/>').appendTo(this.$footer);\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn cancel',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo(this.$buttons);\n\n      if (this.settings.allowSavingAsNew) {\n        this.$saveBtn = Craft.ui\n          .createButton({\n            class: 'save copy',\n            label: Craft.t('app', 'Save as a new asset'),\n            spinner: true,\n          })\n          .appendTo(this.$buttons);\n        this.addListener(this.$saveBtn, 'activate', this.saveImage);\n      }\n\n      this.$replaceBtn = Craft.ui\n        .createSubmitButton({\n          class: 'save replace',\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .appendTo(this.$buttons);\n\n      this.addListener(this.$replaceBtn, 'activate', this.saveImage);\n      this.addListener(this.$cancelBtn, 'activate', this.hide);\n      this.removeListener(this.$shade, 'click');\n\n      this.maxImageSize = this.getMaxImageSize();\n      Craft.sendActionRequest('POST', 'assets/image-editor', {\n        data: {assetId},\n      }).then((response) => this.loadEditor(response.data));\n    },\n\n    /**\n     * Get the max image size that is viewable in the editor currently\n     */\n    getMaxImageSize: function () {\n      var browserViewportWidth =\n        Garnish.$doc.get(0).documentElement.clientWidth;\n      var browserViewportHeight =\n        Garnish.$doc.get(0).documentElement.clientHeight;\n\n      return (\n        Math.max(browserViewportHeight, browserViewportWidth) *\n        (window.devicePixelRatio > 1 ? 2 : 1)\n      );\n    },\n\n    /**\n     * Load the editor markup and start loading components and the image.\n     *\n     * @param {Object} data\n     */\n    loadEditor: function (data) {\n      if (!data.html) {\n        Craft.cp.displayError(\n          Craft.t('app', 'Could not load the image editor.')\n        );\n      }\n\n      this.$body.html(data.html);\n      this.$tabs = $('.tabs li', this.$body);\n      this.$viewsContainer = $('.views', this.$body);\n      this.$views = $('> div', this.$viewsContainer);\n      this.$imageTools = $('.image-container .image-tools', this.$body);\n      this.$editorContainer = $('.image-container .image', this.$body);\n      this.$constraintContainer = $('.constraint-group', this.$body);\n      this.$constraintRadioInputs = $(\n        '[name=\"constraint\"]',\n        this.$constraintContainer\n      );\n      this.$focalPointBtn = $('.focal-point', this.$body);\n      this.editorHeight = this.$editorContainer.innerHeight();\n      this.editorWidth = this.$editorContainer.innerWidth();\n\n      this._showSpinner();\n\n      this.updateSizeAndPosition();\n\n      $customConstraintWrapper = this.$constraintRadioInputs\n        .filter('[value=\"custom\"]')\n        .parent();\n\n      // Add custom constraint inputs to fieldset\n      this.$customConstraints = $('<div/>', {\n        class: 'constraint custom hidden',\n        'data-constraint': 'custom',\n      })\n        .append(\n          $('<input/>', {\n            type: 'text',\n            class: 'custom-constraint-w',\n            size: 3,\n            value: 1,\n            'aria-label': Craft.t('app', 'Width unit'),\n          })\n        )\n        .append(\n          $('<span/>', {\n            class: 'custom-constraint-spacer',\n            text: 'x',\n            'aria-hidden': 'true',\n          })\n        )\n        .append(\n          $('<input/>', {\n            type: 'text',\n            class: 'custom-constraint-h',\n            size: 3,\n            value: 1,\n            'aria-label': Craft.t('app', 'Height unit'),\n          })\n        )\n        .appendTo($customConstraintWrapper);\n\n      // Specify which get flipped on orientation change\n      this.$constraintRadioInputs\n        .filter(function () {\n          const regex = /^\\d*\\.\\d+$/;\n          const value = $(this).val();\n          return regex.test(value);\n        })\n        .addClass('flip');\n\n      // Load the canvas on which we'll host our image and set up the proxy render function\n      this.canvas = new fabric.StaticCanvas('image-canvas');\n\n      // Set up the cropping canvas jquery element for tracking all the nice events\n      this.$croppingCanvas = $('#cropping-canvas', this.$editorContainer);\n      this.$croppingCanvas.width(this.editorWidth);\n      this.$croppingCanvas.height(this.editorHeight);\n\n      this.canvas.enableRetinaScaling = true;\n      this.renderImage = () => {\n        Garnish.requestAnimationFrame(this.canvas.renderAll.bind(this.canvas));\n      };\n\n      // Load the image from URL\n      var imageUrl = Craft.getActionUrl('assets/edit-image', {\n        assetId: this.assetId,\n        size: this.maxImageSize,\n        cacheBust: this.cacheBust,\n      });\n\n      // Load image and set up the initial properties\n      fabric.Image.fromURL(imageUrl, (imageObject) => {\n        this.image = imageObject;\n        this.image.set({\n          originX: 'center',\n          originY: 'center',\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n        });\n        this.canvas.add(this.image);\n\n        this.originalHeight = this.image.getHeight();\n        this.originalWidth = this.image.getWidth();\n        this.zoomRatio = 1;\n\n        this.lastLoadedDimensions = this.getScaledImageDimensions();\n\n        // Set up the image bounding box, viewport and position everything\n        this._setFittedImageVerticeCoordinates();\n        this._repositionEditorElements();\n\n        // Set up the focal point\n        var focalState = {\n          imageDimensions: this.getScaledImageDimensions(),\n          offsetX: 0,\n          offsetY: 0,\n        };\n\n        var focal = false;\n        if (data.focalPoint) {\n          // Transform the focal point coordinates from relative to absolute\n          var focalData = data.focalPoint;\n\n          // Resolve for the current image dimensions.\n          var adjustedX = focalState.imageDimensions.width * focalData.x;\n          var adjustedY = focalState.imageDimensions.height * focalData.y;\n\n          focalState.offsetX = adjustedX - focalState.imageDimensions.width / 2;\n          focalState.offsetY =\n            adjustedY - focalState.imageDimensions.height / 2;\n\n          focal = true;\n        }\n\n        this.storeFocalPointState(focalState);\n\n        if (focal) {\n          this._createFocalPoint();\n        }\n\n        this._createViewport();\n        this.storeCropperState();\n\n        // Add listeners to buttons\n        this._addControlListeners();\n\n        // Add mouse event listeners\n        this.addListener(\n          this.$croppingCanvas,\n          'mousemove,touchmove',\n          this._handleMouseMove\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mousedown,touchstart',\n          this._handleMouseDown\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mouseup,touchend',\n          this._handleMouseUp\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mouseout,touchcancel',\n          this._handleMouseOut\n        );\n\n        this._hideSpinner();\n\n        // Render it, finally\n        this.renderImage();\n\n        // Make sure verything gets fired for the first tab\n        this.$tabs.first().trigger('click');\n      });\n    },\n\n    /**\n     * Reload the image to better fit the current available image editor viewport.\n     */\n    _reloadImage: function () {\n      if (this.imageIsLoading) {\n        return;\n      }\n\n      this.imageIsLoading = true;\n      this.maxImageSize = this.getMaxImageSize();\n\n      // Load the image from URL\n      var imageUrl = Craft.getActionUrl('assets/edit-image', {\n        assetId: this.assetId,\n        size: this.maxImageSize,\n        cacheBust: this.cacheBust,\n      });\n\n      this.image.setSrc(imageUrl, (imageObject) => {\n        this.originalHeight = imageObject.getHeight();\n        this.originalWidth = imageObject.getWidth();\n        this.lastLoadedDimensions = {\n          width: this.originalHeight,\n          height: this.originalWidth,\n        };\n        this.updateSizeAndPosition();\n        this.renderImage();\n        this.imageIsLoading = false;\n      });\n    },\n\n    /**\n     * Update the modal size and position on browser resize\n     */\n    updateSizeAndPosition: function () {\n      if (!this.$container) {\n        return;\n      }\n\n      // Fullscreen modal\n      var innerWidth = window.innerWidth;\n      var innerHeight = window.innerHeight;\n\n      this.$container.css({\n        width: innerWidth,\n        'min-width': innerWidth,\n        left: 0,\n\n        height: innerHeight,\n        'min-height': innerHeight,\n        top: 0,\n      });\n\n      this.$body.css({\n        height: innerHeight - (this.$footer.outerHeight() - 1),\n      });\n\n      if (innerWidth < innerHeight) {\n        this.$container.addClass('vertical');\n      } else {\n        this.$container.removeClass('vertical');\n      }\n\n      // If image is already loaded, make sure it looks pretty.\n      if (this.$editorContainer && this.image) {\n        this._repositionEditorElements();\n      }\n    },\n\n    /**\n     * Reposition the editor elements to accurately reflect the editor state with current dimensions\n     */\n    _repositionEditorElements: function () {\n      // Remember what the dimensions were before the resize took place\n      var previousEditorDimensions = {\n        width: this.editorWidth,\n        height: this.editorHeight,\n      };\n\n      this.editorHeight = this.$editorContainer.innerHeight();\n      this.editorWidth = this.$editorContainer.innerWidth();\n\n      this.canvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      var currentScaledDimensions = this.getScaledImageDimensions();\n\n      // If we're cropping now, we have to reposition the cropper correctly in case\n      // the area for image changes, forcing the image size to change as well.\n      if (this.currentView === 'crop') {\n        this.zoomRatio = this.getZoomToFitRatio(\n          this.getScaledImageDimensions()\n        );\n        var previouslyOccupiedArea = this._getBoundingRectangle(\n          this.imageVerticeCoords\n        );\n        this._setFittedImageVerticeCoordinates();\n        this._repositionCropper(previouslyOccupiedArea);\n      } else {\n        // Otherwise just recalculate the image zoom ratio\n        this.zoomRatio =\n          this.getZoomToCoverRatio(this.getScaledImageDimensions()) *\n          this.scaleFactor;\n      }\n\n      // Reposition the image relatively to the previous editor dimensions.\n      this._repositionImage(previousEditorDimensions);\n      this._repositionViewport();\n      this._repositionFocalPoint(previousEditorDimensions);\n      this._zoomImage();\n\n      this.renderImage();\n\n      if (\n        currentScaledDimensions.width / this.lastLoadedDimensions.width > 1.5 ||\n        currentScaledDimensions.height / this.lastLoadedDimensions.height > 1.5\n      ) {\n        this._reloadImage();\n      }\n    },\n\n    /**\n     * Reposition image based on how the editor dimensions have changed.\n     * This ensures keeping the image center offset, if there is any.\n     *\n     * @param {Object} previousEditorDimensions\n     */\n    _repositionImage: function (previousEditorDimensions) {\n      this.image.set({\n        left:\n          this.image.left -\n          (previousEditorDimensions.width - this.editorWidth) / 2,\n        top:\n          this.image.top -\n          (previousEditorDimensions.height - this.editorHeight) / 2,\n      });\n    },\n\n    /**\n     * Create the viewport for image editor.\n     */\n    _createViewport: function () {\n      this.viewport = new fabric.Rect({\n        width: this.image.width,\n        height: this.image.height,\n        fill: 'rgba(127,0,0,1)',\n        originX: 'center',\n        originY: 'center',\n        globalCompositeOperation: 'destination-in', // This clips everything outside of the viewport\n        left: this.image.left,\n        top: this.image.top,\n      });\n      this.canvas.add(this.viewport);\n      this.renderImage();\n    },\n\n    /**\n     * Create the focal point.\n     */\n    _createFocalPoint: function () {\n      var focalPointState = this.focalPointState;\n      var sizeFactor =\n        this.getScaledImageDimensions().width /\n        focalPointState.imageDimensions.width;\n\n      var focalX =\n        focalPointState.offsetX *\n        sizeFactor *\n        this.zoomRatio *\n        this.scaleFactor;\n      var focalY =\n        focalPointState.offsetY *\n        sizeFactor *\n        this.zoomRatio *\n        this.scaleFactor;\n\n      // Adjust by image margins\n      focalX += this.image.left;\n      focalY += this.image.top;\n\n      var deltaX = 0;\n      var deltaY = 0;\n\n      // When creating a fresh focal point, drop it dead in the center of the viewport, not the image.\n      if (\n        this.viewport &&\n        focalPointState.offsetX === 0 &&\n        focalPointState.offsetY === 0\n      ) {\n        if (this.currentView !== 'crop') {\n          deltaX = this.viewport.left - this.image.left;\n          deltaY = this.viewport.top - this.image.top;\n        } else {\n          // Unless we have a cropper showing, in which case drop it in the middle of the cropper\n          deltaX = this.clipper.left - this.image.left;\n          deltaY = this.clipper.top - this.image.top;\n        }\n\n        // Bump focal to middle of viewport\n        focalX += deltaX;\n        focalY += deltaY;\n\n        // Reflect changes in saved state\n        focalPointState.offsetX +=\n          deltaX / (sizeFactor * this.zoomRatio * this.scaleFactor);\n        focalPointState.offsetY +=\n          deltaY / (sizeFactor * this.zoomRatio * this.scaleFactor);\n      }\n\n      this.focalPoint = new fabric.Group(\n        [\n          new fabric.Circle({\n            radius: 8,\n            fill: 'rgba(0,0,0,0.5)',\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,0.8)',\n            left: 0,\n            top: 0,\n            originX: 'center',\n            originY: 'center',\n          }),\n          new fabric.Circle({\n            radius: 1,\n            fill: 'rgba(255,255,255,0)',\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,0.8)',\n            left: 0,\n            top: 0,\n            originX: 'center',\n            originY: 'center',\n          }),\n        ],\n        {\n          originX: 'center',\n          originY: 'center',\n          left: focalX,\n          top: focalY,\n        }\n      );\n\n      this.storeFocalPointState(focalPointState);\n      this.canvas.add(this.focalPoint);\n    },\n\n    /**\n     * Toggle focal point\n     */\n    toggleFocalPoint: function () {\n      if (!this.focalPoint) {\n        this._createFocalPoint();\n        this.$focalPointBtn.attr('aria-pressed', 'true');\n      } else {\n        this.canvas.remove(this.focalPoint);\n        this.focalPoint = null;\n        this.$focalPointBtn.attr('aria-pressed', 'false');\n      }\n\n      this.renderImage();\n    },\n\n    /**\n     * Reposition the viewport to handle editor resizing.\n     */\n    _repositionViewport: function () {\n      if (this.viewport) {\n        var dimensions = {\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n        };\n\n        // If we're cropping, nothing exciting happens for the viewport\n        if (this.currentView === 'crop') {\n          dimensions.width = this.editorWidth;\n          dimensions.height = this.editorHeight;\n        } else {\n          // If this is the first initial reposition, no cropper state yet\n          if (this.cropperState) {\n            // Recall the state\n            var state = this.cropperState;\n\n            var scaledImageDimensions = this.getScaledImageDimensions();\n            // Make sure we have the correct current image size\n            var sizeFactor =\n              scaledImageDimensions.width / state.imageDimensions.width;\n\n            // Set the viewport dimensions\n            dimensions.width = state.width * sizeFactor * this.zoomRatio;\n            dimensions.height = state.height * sizeFactor * this.zoomRatio;\n\n            // Adjust the image position to show the correct part of the image in the viewport\n            this.image.set({\n              left: this.editorWidth / 2 - state.offsetX * sizeFactor,\n              top: this.editorHeight / 2 - state.offsetY * sizeFactor,\n            });\n          } else {\n            $.extend(dimensions, this.getScaledImageDimensions());\n          }\n        }\n        this.viewport.set(dimensions);\n      }\n    },\n\n    _repositionFocalPoint: function (previousEditorDimensions) {\n      if (this.focalPoint) {\n        var offsetX = this.focalPoint.left - this.editorWidth / 2;\n        var offsetY = this.focalPoint.top - this.editorHeight / 2;\n\n        var currentWidth = this.image.width;\n        var newWidth = this.getScaledImageDimensions().width * this.zoomRatio;\n        var ratio = newWidth / currentWidth / this.scaleFactor;\n\n        offsetX -= (previousEditorDimensions.width - this.editorWidth) / 2;\n        offsetY -= (previousEditorDimensions.height - this.editorHeight) / 2;\n\n        offsetX *= ratio;\n        offsetY *= ratio;\n\n        this.focalPoint.set({\n          left: this.editorWidth / 2 + offsetX,\n          top: this.editorHeight / 2 + offsetY,\n        });\n      }\n    },\n\n    /**\n     * Return true if the image orientation has changed\n     */\n    hasOrientationChanged: function () {\n      return this.viewportRotation % 180 !== 0;\n    },\n\n    /**\n     * Return the current image dimensions that would be used in the current image area with no straightening or rotation applied.\n     */\n    getScaledImageDimensions: function () {\n      if (typeof this.getScaledImageDimensions._ === 'undefined') {\n        this.getScaledImageDimensions._ = {};\n      }\n\n      this.getScaledImageDimensions._.imageRatio =\n        this.originalHeight / this.originalWidth;\n      this.getScaledImageDimensions._.editorRatio =\n        this.editorHeight / this.editorWidth;\n\n      this.getScaledImageDimensions._.dimensions = {};\n      if (\n        this.getScaledImageDimensions._.imageRatio >\n        this.getScaledImageDimensions._.editorRatio\n      ) {\n        this.getScaledImageDimensions._.dimensions.height = Math.min(\n          this.editorHeight,\n          this.originalHeight\n        );\n        this.getScaledImageDimensions._.dimensions.width = Math.round(\n          this.originalWidth /\n            (this.originalHeight /\n              this.getScaledImageDimensions._.dimensions.height)\n        );\n      } else {\n        this.getScaledImageDimensions._.dimensions.width = Math.min(\n          this.editorWidth,\n          this.originalWidth\n        );\n        this.getScaledImageDimensions._.dimensions.height = Math.round(\n          this.originalHeight *\n            (this.getScaledImageDimensions._.dimensions.width /\n              this.originalWidth)\n        );\n      }\n\n      return this.getScaledImageDimensions._.dimensions;\n    },\n\n    /**\n     * Set the image dimensions to reflect the current zoom ratio.\n     */\n    _zoomImage: function () {\n      if (typeof this._zoomImage._ === 'undefined') {\n        this._zoomImage._ = {};\n      }\n\n      this._zoomImage._.imageDimensions = this.getScaledImageDimensions();\n      this.image.set({\n        width: this._zoomImage._.imageDimensions.width * this.zoomRatio,\n        height: this._zoomImage._.imageDimensions.height * this.zoomRatio,\n      });\n    },\n\n    /**\n     * Gets previous tab element from currently-active.\n     */\n    _getPrevTab: function () {\n      const activeTabIndex = this._getActiveTabIndex();\n\n      if (activeTabIndex < 0) return;\n\n      let newTabIndex;\n\n      if (activeTabIndex > 0) {\n        newTabIndex = activeTabIndex - 1;\n      } else {\n        newTabIndex = this.$tabs.length - 1;\n      }\n\n      return this.$tabs.eq(newTabIndex);\n    },\n\n    /**\n     * Gets next tab element from currently-active.\n     */\n    _getNextTab: function () {\n      const activeTabIndex = this._getActiveTabIndex();\n\n      if (activeTabIndex < 0) return;\n\n      let newTabIndex;\n\n      if (activeTabIndex < this.$tabs.length - 1) {\n        newTabIndex = activeTabIndex + 1;\n      } else {\n        newTabIndex = 0;\n      }\n\n      return this.$tabs.eq(newTabIndex);\n    },\n\n    /**\n     * Gets active tab element\n     */\n    _getActiveTab: function () {\n      return this.$tabs.filter('[aria-selected=\"true\"]');\n    },\n\n    /**\n     * Gets index of active tab among sibling tabs\n     */\n    _getActiveTabIndex: function () {\n      const $activeTab = this._getActiveTab();\n\n      if (!$activeTab.length) return;\n\n      return $activeTab.index();\n    },\n\n    /**\n     * Set up listeners for the controls.\n     */\n    _addControlListeners: function () {\n      // Tabs\n      this.addListener(this.$tabs, 'click', this._handleTabClick);\n      this.addListener(this.$tabs, 'keydown', (event) => {\n        switch (event.keyCode) {\n          case Garnish.LEFT_KEY:\n          case Garnish.UP_KEY:\n            event.preventDefault();\n            const $prevTab = this._getPrevTab();\n            this.activateTab($prevTab);\n            break;\n          case Garnish.RIGHT_KEY:\n          case Garnish.DOWN_KEY:\n            event.preventDefault();\n            const $nextTab = this._getNextTab();\n            this.activateTab($nextTab);\n            break;\n        }\n      });\n\n      // Focal point\n      this.addListener(this.$focalPointBtn, 'click', this.toggleFocalPoint);\n\n      // Rotate controls\n      this.addListener($('.rotate-left'), 'click', function () {\n        this.rotateImage(-90);\n      });\n      this.addListener($('.rotate-right'), 'click', function () {\n        this.rotateImage(90);\n      });\n      this.addListener($('.flip-vertical'), 'click', function () {\n        this.flipImage('y');\n      });\n      this.addListener($('.flip-horizontal'), 'click', function () {\n        this.flipImage('x');\n      });\n\n      // Straighten slider\n      this.straighteningInput = new Craft.SlideRuleInput('slide-rule', {\n        onStart: () => {\n          this._showGrid();\n        },\n        onChange: (slider) => {\n          this.straighten(slider);\n        },\n        onEnd: () => {\n          this._hideGrid();\n          this._cleanupFocalPointAfterStraighten();\n        },\n      });\n\n      // Cropper scale modifier key\n      this.addListener(Garnish.$doc, 'keydown', function (ev) {\n        if (ev.keyCode === Garnish.SHIFT_KEY) {\n          this.shiftKeyHeld = true;\n        }\n      });\n      this.addListener(Garnish.$doc, 'keyup', function (ev) {\n        if (ev.keyCode === Garnish.SHIFT_KEY) {\n          this.shiftKeyHeld = false;\n        }\n      });\n\n      this.addListener(\n        this.$constraintRadioInputs,\n        'change',\n        this._handleConstraintChange\n      );\n      this.addListener(\n        $('.orientation input', this.$container),\n        'click',\n        this._handleOrientationClick\n      );\n      this.addListener(\n        $('.constraint-group .custom input', this.$container),\n        'keyup',\n        this._applyCustomConstraint\n      );\n    },\n\n    /**\n     * Handle a constraint button click.\n     *\n     * @param {Object} ev\n     */\n    _handleConstraintClick: function (ev) {\n      var constraint = $(ev.currentTarget).data('constraint');\n      var $target = $(ev.currentTarget);\n      $target.siblings().removeClass('active');\n      $target.addClass('active');\n\n      if (constraint == 'custom') {\n        this._showCustomConstraint();\n        this._applyCustomConstraint();\n        return;\n      }\n\n      this._hideCustomConstraint();\n\n      this.setCroppingConstraint(constraint);\n      this.enforceCroppingConstraint();\n    },\n\n    /**\n     * Handle a constraint change.\n     *\n     * @param {Object} ev\n     */\n    _handleConstraintChange: function (ev) {\n      const constraint = $(ev.target).val();\n\n      if (constraint == 'custom') {\n        this._showCustomConstraint();\n        this._applyCustomConstraint();\n        return;\n      }\n\n      this._hideCustomConstraint();\n\n      this.setCroppingConstraint(constraint);\n      this.enforceCroppingConstraint();\n    },\n\n    /**\n     * Handle an orientation switch click.\n     *\n     * @param {Object} ev\n     */\n    _handleOrientationClick: function (ev) {\n      if (ev.currentTarget.value === this.constraintOrientation) {\n        return;\n      }\n      this.constraintOrientation = ev.currentTarget.value;\n\n      const $constraints = $('.flip', this.$constraintContainer);\n\n      for (var i = 0; i < $constraints.length; i++) {\n        var $constraint = $($constraints[i]);\n        const labelSelector = 'label[for=\"' + $constraint.attr('id') + '\"]';\n        const $label = $(labelSelector, this.$constraintContainer);\n        $constraint.val(1 / $constraint.val());\n        $label.html(\n          $label.text().split(':').reverse().join(':').replace(/\\s/g, '')\n        );\n      }\n\n      $constraints.filter(':checked').trigger('change');\n    },\n\n    /**\n     * Apply the custom ratio set in the inputs\n     */\n    _applyCustomConstraint: function () {\n      var constraint = this._getCustomConstraint();\n\n      if (constraint.w > 0 && constraint.h > 0) {\n        this.setCroppingConstraint(constraint.w / constraint.h);\n        this.enforceCroppingConstraint();\n      }\n    },\n\n    /**\n     * Get the custom constraint.\n     *\n     * @returns {{w: *, h: *}}\n     */\n    _getCustomConstraint: function () {\n      var w = parseFloat($('.custom-constraint-w').val());\n      var h = parseFloat($('.custom-constraint-h').val());\n      return {\n        w: isNaN(w) ? 0 : w,\n        h: isNaN(h) ? 0 : h,\n      };\n    },\n\n    /**\n     * Set the custom constraint.\n     *\n     * @param {number} w\n     * @param {number} h\n     */\n    _setCustomConstraint: function (w, h) {\n      $('.custom-constraint-w').val(parseFloat(w));\n      $('.custom-constraint-h').val(parseFloat(h));\n    },\n\n    /**\n     * Hide the custom constraint inputs.\n     */\n    _hideCustomConstraint: function () {\n      this.showingCustomConstraint = false;\n      this.$customConstraints.addClass('hidden');\n      $('.orientation', this.$container).removeClass('hidden');\n    },\n\n    /**\n     * Show the custom constraint inputs.\n     */\n    _showCustomConstraint: function () {\n      if (this.showingCustomConstraint) {\n        return;\n      }\n\n      this.showingCustomConstraint = true;\n      this.$customConstraints.removeClass('hidden');\n      $('.orientation', this.$container).addClass('hidden');\n    },\n\n    /**\n     * Handle tab click.\n     *\n     * @param {Object} ev\n     */\n    _handleTabClick: function (ev) {\n      if (!this.animationInProgress) {\n        var $tab = $(ev.currentTarget);\n        this.activateTab($tab);\n      }\n    },\n\n    /**\n     * Activate a tab.\n     *\n     * @param {(jQuery|HTMLElement|string)} tab\n     */\n\n    activateTab: function (tab) {\n      const view = $(tab).data('view');\n      this.$tabs.removeClass('selected').attr({\n        'aria-selected': 'false',\n        tabindex: '-1',\n      });\n      $(tab)\n        .addClass('selected')\n        .attr({\n          'aria-selected': 'true',\n          tabindex: '0',\n        })\n        .trigger('focus');\n      this.showView(view);\n    },\n\n    /**\n     * Show a view.\n     *\n     * @param {string} view\n     */\n    showView: function (view) {\n      if (this.currentView === view) {\n        return;\n      }\n\n      this.$views.addClass('hidden');\n      var $view = this.$views.filter('[data-view=\"' + view + '\"]');\n      $view.removeClass('hidden');\n\n      if (view === 'rotate') {\n        this.enableSlider();\n      } else {\n        this.disableSlider();\n      }\n\n      // Now that most likely our editor dimensions have changed, time to reposition stuff\n      this.updateSizeAndPosition();\n\n      // See if we have to enable or disable crop mode as we transition between tabs\n      if (this.currentView === 'crop' && view !== 'crop') {\n        this._queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              this.disableCropMode();\n              resolve();\n            })\n        );\n      } else if (this.currentView !== 'crop' && view === 'crop') {\n        this._queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              this.enableCropMode();\n              resolve();\n            })\n        );\n      }\n\n      // Mark the current view\n      this.currentView = view;\n    },\n\n    /**\n     * Store the current cropper state.\n     *\n     * Cropper state is always assumed to be saved at a zoom ratio of 1 to be used\n     * as the basis for recalculating the cropper position and dimensions.\n     *\n     * @param {Object} [state]\n     */\n    storeCropperState: function (state) {\n      if (typeof this.storeCropperState._ === 'undefined') {\n        this.storeCropperState._ = {};\n      }\n\n      // If we're asked to store a specific state.\n      if (state) {\n        this.cropperState = state;\n      } else if (this.clipper) {\n        this.storeCropperState._.zoomFactor = 1 / this.zoomRatio;\n\n        this.cropperState = {\n          offsetX:\n            (this.clipper.left - this.image.left) *\n            this.storeCropperState._.zoomFactor,\n          offsetY:\n            (this.clipper.top - this.image.top) *\n            this.storeCropperState._.zoomFactor,\n          height: this.clipper.height * this.storeCropperState._.zoomFactor,\n          width: this.clipper.width * this.storeCropperState._.zoomFactor,\n          imageDimensions: this.getScaledImageDimensions(),\n        };\n      } else {\n        this.storeCropperState._.dimensions = this.getScaledImageDimensions();\n        this.cropperState = {\n          offsetX: 0,\n          offsetY: 0,\n          height: this.storeCropperState._.dimensions.height,\n          width: this.storeCropperState._.dimensions.width,\n          imageDimensions: this.storeCropperState._.dimensions,\n        };\n      }\n    },\n\n    /**\n     * Store focal point coordinates in a manner that is not tied to zoom ratio and rotation.\n     */\n    storeFocalPointState: function (state) {\n      if (typeof this.storeFocalPointState._ === 'undefined') {\n        this.storeFocalPointState._ = {};\n      }\n\n      // If we're asked to store a specific state.\n      if (state) {\n        this.focalPointState = state;\n      } else if (this.focalPoint) {\n        this.storeFocalPointState._.zoomFactor = 1 / this.zoomRatio;\n        this.focalPointState = {\n          offsetX:\n            ((this.focalPoint.left - this.image.left) *\n              this.storeFocalPointState._.zoomFactor) /\n            this.scaleFactor,\n          offsetY:\n            ((this.focalPoint.top - this.image.top) *\n              this.storeFocalPointState._.zoomFactor) /\n            this.scaleFactor,\n          imageDimensions: this.getScaledImageDimensions(),\n        };\n      }\n    },\n\n    /**\n     * Rotate the image along with the viewport.\n     *\n     * @param {number} degrees\n     */\n    rotateImage: function (degrees) {\n      if (!this.animationInProgress) {\n        // We're not that kind of an establishment, sir.\n        if (degrees !== 90 && degrees !== -90) {\n          return false;\n        }\n\n        this.animationInProgress = true;\n        this.viewportRotation += degrees;\n\n        // Normalize the viewport rotation angle so it's between 0 and 359\n        this.viewportRotation = parseInt(\n          (this.viewportRotation + 360) % 360,\n          10\n        );\n\n        var newAngle = this.image.angle + degrees;\n        var scaledImageDimensions = this.getScaledImageDimensions();\n        var imageZoomRatio;\n\n        if (this.hasOrientationChanged()) {\n          imageZoomRatio = this.getZoomToCoverRatio({\n            height: scaledImageDimensions.width,\n            width: scaledImageDimensions.height,\n          });\n        } else {\n          imageZoomRatio = this.getZoomToCoverRatio(scaledImageDimensions);\n        }\n\n        // In cases when for some reason we've already zoomed in on the image,\n        // use existing zoom.\n        if (this.zoomRatio > imageZoomRatio) {\n          imageZoomRatio = this.zoomRatio;\n        }\n\n        var viewportProperties = {\n          angle: degrees === 90 ? '+=90' : '-=90',\n        };\n\n        var imageProperties = {\n          angle: newAngle,\n          width: scaledImageDimensions.width * imageZoomRatio,\n          height: scaledImageDimensions.height * imageZoomRatio,\n        };\n\n        var scaleFactor = 1;\n        if (this.scaleFactor < 1) {\n          scaleFactor = 1 / this.scaleFactor;\n          this.scaleFactor = 1;\n        } else {\n          if (this.viewport.width > this.editorHeight) {\n            scaleFactor = this.editorHeight / this.viewport.width;\n          } else if (this.viewport.height > this.editorWidth) {\n            scaleFactor = this.editorWidth / this.viewport.height;\n          }\n          this.scaleFactor = scaleFactor;\n        }\n\n        if (scaleFactor < 1) {\n          imageProperties.width *= scaleFactor;\n          imageProperties.height *= scaleFactor;\n        }\n\n        var state = this.cropperState;\n\n        // Make sure we reposition the image as well to focus on the same image area\n        var deltaX = state.offsetX;\n        var deltaY = state.offsetY;\n        var angleInRadians = degrees * (Math.PI / 180);\n\n        // Calculate how the cropper would need to move in a circle to maintain\n        // the focus on the same region if the image was rotated with zoom intact.\n        var newDeltaX =\n          deltaX * Math.cos(angleInRadians) - deltaY * Math.sin(angleInRadians);\n        var newDeltaY =\n          deltaX * Math.sin(angleInRadians) + deltaY * Math.cos(angleInRadians);\n\n        var sizeFactor =\n          scaledImageDimensions.width / state.imageDimensions.width;\n\n        var modifiedDeltaX =\n          newDeltaX * sizeFactor * this.zoomRatio * this.scaleFactor;\n        var modifiedDeltaY =\n          newDeltaY * sizeFactor * this.zoomRatio * this.scaleFactor;\n\n        imageProperties.left = this.editorWidth / 2 - modifiedDeltaX;\n        imageProperties.top = this.editorHeight / 2 - modifiedDeltaY;\n\n        state.offsetX = newDeltaX;\n        state.offsetY = newDeltaY;\n\n        var temp = state.width;\n        state.width = state.height;\n        state.height = temp;\n\n        this.storeCropperState(state);\n\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n        }\n\n        this.viewport.animate(viewportProperties, {\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            // If we're zooming the image in or out, better do the same to viewport\n            var temp = this.viewport.height * scaleFactor;\n            this.viewport.height = this.viewport.width * scaleFactor;\n            this.viewport.width = temp;\n            this.viewport.set({angle: 0});\n          },\n        });\n\n        // Animate the rotation and dimension change\n        this.image.animate(imageProperties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            var cleanAngle = parseFloat((this.image.angle + 360) % 360);\n            this.image.set({angle: cleanAngle});\n            this.animationInProgress = false;\n            if (this.focalPoint) {\n              this._adjustFocalPointByAngle(degrees);\n              this.straighten(this.straighteningInput);\n              this.canvas.add(this.focalPoint);\n            } else {\n              this._resetFocalPointPosition();\n            }\n          },\n        });\n      }\n    },\n\n    /**\n     * Flip an image along an axis.\n     *\n     * @param {string} axis\n     */\n    flipImage: function (axis) {\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        if (this.hasOrientationChanged()) {\n          axis = axis === 'y' ? 'x' : 'y';\n        }\n\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n        } else {\n          this._resetFocalPointPosition();\n        }\n\n        var editorCenter = {x: this.editorWidth / 2, y: this.editorHeight / 2};\n        this.straighteningInput.setValue(-this.imageStraightenAngle);\n        this.imageStraightenAngle = -this.imageStraightenAngle;\n        var properties = {\n          angle: this.viewportRotation + this.imageStraightenAngle,\n        };\n\n        var deltaY, deltaX;\n        var cropperState = this.cropperState;\n        var focalPointState = this.focalPointState;\n\n        // Reposition the image, viewport, and stored cropper and focal point states.\n        if (\n          (axis === 'y' && this.hasOrientationChanged()) ||\n          (axis !== 'y' && !this.hasOrientationChanged())\n        ) {\n          cropperState.offsetX = -cropperState.offsetX;\n          focalPointState.offsetX = -focalPointState.offsetX;\n          deltaX = this.image.left - editorCenter.x;\n          properties.left = editorCenter.x - deltaX;\n        } else {\n          cropperState.offsetY = -cropperState.offsetY;\n          focalPointState.offsetY = -focalPointState.offsetY;\n          deltaY = this.image.top - editorCenter.y;\n          properties.top = editorCenter.y - deltaY;\n        }\n\n        if (axis === 'y') {\n          properties.scaleY = this.image.scaleY * -1;\n          this.flipData.y = 1 - this.flipData.y;\n        } else {\n          properties.scaleX = this.image.scaleX * -1;\n          this.flipData.x = 1 - this.flipData.x;\n        }\n\n        this.storeCropperState(cropperState);\n        this.storeFocalPointState(focalPointState);\n\n        this.image.animate(properties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            this.animationInProgress = false;\n            if (this.focalPoint) {\n              // Well this is handy\n              this._adjustFocalPointByAngle(0);\n              this.canvas.add(this.focalPoint);\n            }\n          },\n        });\n      }\n    },\n\n    /**\n     * Perform the straightening with input slider.\n     *\n     * @param {Craft.SlideRuleInput} slider\n     */\n    straighten: function (slider) {\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        var previousAngle = this.image.angle;\n\n        this.imageStraightenAngle =\n          (this.settings.allowDegreeFractions\n            ? parseFloat(slider.value)\n            : Math.round(parseFloat(slider.value))) % 360;\n\n        // Straighten the image\n        this.image.set({\n          angle: this.viewportRotation + this.imageStraightenAngle,\n        });\n\n        // Set the new zoom ratio\n        this.zoomRatio =\n          this.getZoomToCoverRatio(this.getScaledImageDimensions()) *\n          this.scaleFactor;\n        this._zoomImage();\n\n        if (this.cropperState) {\n          this._adjustEditorElementsOnStraighten(previousAngle);\n        }\n\n        this.renderImage();\n\n        this.animationInProgress = false;\n      }\n    },\n\n    /**\n     * Adjust the cropped viewport when straightening the image to correct for\n     * bumping into edges, keeping focus on the cropped area center and to\n     * maintain the illusion that the image is being straightened relative to the viewport center.\n     *\n     * @param {integer} previousAngle integer the previous image angle before straightening\n     */\n    _adjustEditorElementsOnStraighten: function (previousAngle) {\n      var scaledImageDimensions = this.getScaledImageDimensions();\n      var angleDelta = this.image.angle - previousAngle;\n      var state = this.cropperState;\n\n      var currentZoomRatio = this.zoomRatio;\n      var adjustmentRatio = 1;\n\n      var deltaX, deltaY, newCenterX, newCenterY, sizeFactor;\n\n      do {\n        // Get the cropper center coordinates\n        var cropperCenterX = state.offsetX;\n        var cropperCenterY = state.offsetY;\n        var angleInRadians = angleDelta * (Math.PI / 180);\n\n        // Calculate how the cropper would need to move in a circle to maintain\n        // the focus on the same region if the image was rotated with zoom intact.\n        newCenterX =\n          cropperCenterX * Math.cos(angleInRadians) -\n          cropperCenterY * Math.sin(angleInRadians);\n        newCenterY =\n          cropperCenterX * Math.sin(angleInRadians) +\n          cropperCenterY * Math.cos(angleInRadians);\n\n        sizeFactor = scaledImageDimensions.width / state.imageDimensions.width;\n\n        // Figure out the final image offset to keep the viewport focused where we need it\n        deltaX = newCenterX * currentZoomRatio * sizeFactor;\n        deltaY = newCenterY * currentZoomRatio * sizeFactor;\n\n        // If the image would creep in the viewport, figure out how to math around it.\n        var imageVertices = this.getImageVerticeCoords(currentZoomRatio);\n        var rectangle = {\n          width: this.viewport.width,\n          height: this.viewport.height,\n          left: this.editorWidth / 2 - this.viewport.width / 2 + deltaX,\n          top: this.editorHeight / 2 - this.viewport.height / 2 + deltaY,\n        };\n        adjustmentRatio = this._getZoomRatioToFitRectangle(\n          rectangle,\n          imageVertices\n        );\n        currentZoomRatio = currentZoomRatio * adjustmentRatio;\n\n        // If we had to make adjustments, do the calculations again\n      } while (adjustmentRatio !== 1);\n\n      // Reposition the image correctly\n      this.image.set({\n        left: this.editorWidth / 2 - deltaX,\n        top: this.editorHeight / 2 - deltaY,\n      });\n\n      // Finally, store the new cropper state to reflect the rotation change.\n      state.offsetX = newCenterX;\n      state.offsetY = newCenterY;\n      state.width = this.viewport.width / currentZoomRatio / sizeFactor;\n      state.height = this.viewport.height / currentZoomRatio / sizeFactor;\n\n      this.storeCropperState(state);\n\n      // Zoom the image in and we're done.\n      this.zoomRatio = currentZoomRatio;\n\n      if (this.focalPoint) {\n        this._adjustFocalPointByAngle(angleDelta);\n\n        if (!this._isCenterInside(this.focalPoint, this.viewport)) {\n          this.focalPoint.set({opacity: 0});\n        } else {\n          this.focalPoint.set({opacity: 1});\n        }\n      } else if (angleDelta !== 0) {\n        this._resetFocalPointPosition();\n      }\n\n      this._zoomImage();\n    },\n\n    /**\n     * If focal point is active and outside of viewport after straightening, reset it.\n     */\n    _cleanupFocalPointAfterStraighten: function () {\n      if (\n        this.focalPoint &&\n        !this._isCenterInside(this.focalPoint, this.viewport)\n      ) {\n        this.focalPoint.set({opacity: 1});\n        var state = this.focalPointState;\n        state.offsetX = 0;\n        state.offsetY = 0;\n        this.storeFocalPointState(state);\n        this.toggleFocalPoint();\n      }\n    },\n\n    /**\n     * Reset focal point to the middle of image.\n     */\n    _resetFocalPointPosition: function () {\n      var state = this.focalPointState;\n      state.offsetX = 0;\n      state.offsetY = 0;\n      this.storeFocalPointState(state);\n    },\n\n    /**\n     * Returns true if a center of an object is inside another rectangle shaped object that is not rotated.\n     *\n     * @param {Object} object\n     * @param {Object} containingObject\n     * @returns {boolean}\n     */\n    _isCenterInside: function (object, containingObject) {\n      return (\n        object.left > containingObject.left - containingObject.width / 2 &&\n        object.top > containingObject.top - containingObject.height / 2 &&\n        object.left < containingObject.left + containingObject.width / 2 &&\n        object.top < containingObject.top + containingObject.height / 2\n      );\n    },\n\n    /**\n     * Adjust the focal point by an angle in degrees.\n     * @param {number} angle\n     */\n    _adjustFocalPointByAngle: function (angle) {\n      var angleInRadians = angle * (Math.PI / 180);\n      var state = this.focalPointState;\n\n      var focalX = state.offsetX;\n      var focalY = state.offsetY;\n\n      // Calculate how the focal point would need to move in a circle to keep on the same spot\n      // on the image if it was rotated with zoom intact.\n      var newFocalX =\n        focalX * Math.cos(angleInRadians) - focalY * Math.sin(angleInRadians);\n      var newFocalY =\n        focalX * Math.sin(angleInRadians) + focalY * Math.cos(angleInRadians);\n      var sizeFactor =\n        this.getScaledImageDimensions().width / state.imageDimensions.width;\n\n      var adjustedFocalX = newFocalX * sizeFactor * this.zoomRatio;\n      var adjustedFocalY = newFocalY * sizeFactor * this.zoomRatio;\n\n      this.focalPoint.left = this.image.left + adjustedFocalX;\n      this.focalPoint.top = this.image.top + adjustedFocalY;\n\n      state.offsetX = newFocalX;\n      state.offsetY = newFocalY;\n      this.storeFocalPointState(state);\n    },\n\n    /**\n     * Get the zoom ratio required to fit a rectangle within another rectangle, that is defined by vertices.\n     * If the rectangle fits, 1 will be returned.\n     *\n     * @param {Object} rectangle\n     * @param {Object} containingVertices\n     */\n    _getZoomRatioToFitRectangle: function (rectangle, containingVertices) {\n      var rectangleVertices = this._getRectangleVertices(rectangle);\n      var vertex;\n\n      // Check if any of the viewport vertices end up out of bounds\n      for (\n        var verticeIndex = 0;\n        verticeIndex < rectangleVertices.length;\n        verticeIndex++\n      ) {\n        vertex = rectangleVertices[verticeIndex];\n\n        if (!this.arePointsInsideRectangle([vertex], containingVertices)) {\n          break;\n        }\n\n        vertex = false;\n      }\n\n      // If there's no vertex set after loop, it means that all of them are inside the image rectangle\n      var adjustmentRatio;\n\n      if (!vertex) {\n        adjustmentRatio = 1;\n      } else {\n        // Find out which edge got crossed by the vertex\n        var edge = this._getEdgeCrossed(containingVertices, vertex);\n\n        var rectangleCenter = {\n          x: rectangle.left + rectangle.width / 2,\n          y: rectangle.top + rectangle.height / 2,\n        };\n\n        // Calculate how much further that edge needs to be.\n        // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line#Line_defined_by_two_points\n        var distanceFromVertexToEdge =\n          Math.abs(\n            (edge[1].y - edge[0].y) * vertex.x -\n              (edge[1].x - edge[0].x) * vertex.y +\n              edge[1].x * edge[0].y -\n              edge[1].y * edge[0].x\n          ) /\n          Math.sqrt(\n            Math.pow(edge[1].y - edge[0].y, 2) +\n              Math.pow(edge[1].x - edge[0].x, 2)\n          );\n        var distanceFromCenterToEdge =\n          Math.abs(\n            (edge[1].y - edge[0].y) * rectangleCenter.x -\n              (edge[1].x - edge[0].x) * rectangleCenter.y +\n              edge[1].x * edge[0].y -\n              edge[1].y * edge[0].x\n          ) /\n          Math.sqrt(\n            Math.pow(edge[1].y - edge[0].y, 2) +\n              Math.pow(edge[1].x - edge[0].x, 2)\n          );\n\n        // Adjust the zoom ratio\n        adjustmentRatio =\n          (distanceFromVertexToEdge + distanceFromCenterToEdge) /\n          distanceFromCenterToEdge;\n      }\n\n      return adjustmentRatio;\n    },\n\n    /**\n     * Save the image.\n     *\n     * @param {Object} ev\n     */\n    saveImage: function (ev) {\n      var $button = $(ev.currentTarget);\n      if (this.saving) {\n        return false;\n      }\n\n      this.saving = true;\n      $button.addClass('loading');\n      const replace = $button.hasClass('replace');\n\n      var postData = {\n        assetId: this.assetId,\n        viewportRotation: this.viewportRotation,\n        imageRotation: this.imageStraightenAngle,\n        replace: replace ? 1 : 0,\n      };\n\n      if (this.cropperState) {\n        var cropData = {};\n\n        cropData.height = this.cropperState.height;\n        cropData.width = this.cropperState.width;\n        cropData.offsetX = this.cropperState.offsetX;\n        cropData.offsetY = this.cropperState.offsetY;\n\n        postData.imageDimensions = this.cropperState.imageDimensions;\n\n        postData.cropData = cropData;\n      } else {\n        postData.imageDimensions = this.getScaledImageDimensions();\n      }\n\n      if (this.focalPoint) {\n        postData.focalPoint = this.focalPointState;\n      }\n\n      postData.flipData = this.flipData;\n      postData.zoom = this.zoomRatio;\n\n      Craft.sendActionRequest('POST', 'assets/save-image', {data: postData})\n        .then(({data}) => {\n          this.onSave(data);\n          if (replace && Craft.broadcaster) {\n            Craft.broadcaster.postMessage({\n              event: 'saveElement',\n              id: this.assetId,\n            });\n          }\n          this.hide();\n          Craft.cp.runQueue();\n\n          // Refresh Live Preview\n          Craft.Preview.refresh();\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(response.data.message);\n        })\n        .finally(() => {\n          this.$buttons.find('.btn').removeClass('loading');\n          this.saving = false;\n        });\n    },\n\n    /**\n     * Return image zoom ratio depending on the straighten angle to cover a viewport by given dimensions.\n     *\n     * @param {Object} dimensions\n     */\n    getZoomToCoverRatio: function (dimensions) {\n      // Convert the angle to radians\n      var angleInRadians =\n        Math.abs(this.imageStraightenAngle) * (Math.PI / 180);\n\n      // Calculate the dimensions of the scaled image using the magic of math\n      var scaledWidth =\n        Math.sin(angleInRadians) * dimensions.height +\n        Math.cos(angleInRadians) * dimensions.width;\n      var scaledHeight =\n        Math.sin(angleInRadians) * dimensions.width +\n        Math.cos(angleInRadians) * dimensions.height;\n\n      // Calculate the ratio\n      return Math.max(\n        scaledWidth / dimensions.width,\n        scaledHeight / dimensions.height\n      );\n    },\n\n    /**\n     * Return image zoom ratio depending on the straighten angle to fit inside a viewport by given dimensions.\n     *\n     * @param {Object} dimensions\n     */\n    getZoomToFitRatio: function (dimensions) {\n      // Get the bounding box for a rotated image\n      var boundingBox = this._getImageBoundingBox(dimensions);\n\n      // Scale the bounding box to fit\n      var scale = 1;\n      if (\n        boundingBox.height > this.editorHeight ||\n        boundingBox.width > this.editorWidth\n      ) {\n        var vertScale = this.editorHeight / boundingBox.height;\n        var horiScale = this.editorWidth / boundingBox.width;\n        scale = Math.min(horiScale, vertScale);\n      }\n\n      return scale;\n    },\n\n    /**\n     * Return the combined zoom ratio to fit a rectangle inside image that's been zoomed to fit.\n     */\n    getCombinedZoomRatio: function (dimensions) {\n      return (\n        this.getZoomToCoverRatio(dimensions) /\n        this.getZoomToFitRatio(dimensions)\n      );\n    },\n\n    /**\n     * Draw the grid.\n     *\n     * @private\n     */\n    _showGrid: function () {\n      if (!this.grid) {\n        var strokeOptions = {\n          strokeWidth: 1,\n          stroke: 'rgba(255,255,255,0.5)',\n        };\n\n        var lineCount = 8;\n        var gridWidth = this.viewport.width;\n        var gridHeight = this.viewport.height;\n        var xStep = gridWidth / (lineCount + 1);\n        var yStep = gridHeight / (lineCount + 1);\n\n        var grid = [\n          new fabric.Rect({\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,1)',\n            originX: 'center',\n            originY: 'center',\n            width: gridWidth,\n            height: gridHeight,\n            left: gridWidth / 2,\n            top: gridHeight / 2,\n            fill: 'rgba(255,255,255,0)',\n          }),\n        ];\n\n        var i;\n        for (i = 1; i <= lineCount; i++) {\n          grid.push(\n            new fabric.Line(\n              [i * xStep, 0, i * xStep, gridHeight],\n              strokeOptions\n            )\n          );\n        }\n        for (i = 1; i <= lineCount; i++) {\n          grid.push(\n            new fabric.Line([0, i * yStep, gridWidth, i * yStep], strokeOptions)\n          );\n        }\n\n        this.grid = new fabric.Group(grid, {\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n          originX: 'center',\n          originY: 'center',\n          angle: this.viewport.angle,\n        });\n\n        this.canvas.add(this.grid);\n        this.renderImage();\n      }\n    },\n\n    /**\n     * Hide the grid\n     */\n    _hideGrid: function () {\n      this.canvas.remove(this.grid);\n      this.grid = null;\n      this.renderImage();\n    },\n\n    /**\n     * Remove all the events when hiding the editor.\n     */\n    onFadeOut: function () {\n      this.destroy();\n    },\n\n    /**\n     * Make sure underlying content is not scrolled by accident.\n     */\n    show: function () {\n      this.base();\n      Garnish.$bod.addClass('no-scroll');\n    },\n\n    /**\n     * Allow the content to scroll.\n     */\n    hide: function () {\n      this.removeAllListeners();\n      this.straighteningInput.removeAllListeners();\n      Garnish.$bod.removeClass('no-scroll');\n      this.base();\n    },\n\n    /**\n     * onSave callback.\n     */\n    onSave: function (data) {\n      this.settings.onSave(data);\n      this.trigger('save');\n    },\n\n    /**\n     * Enable the rotation slider.\n     */\n    enableSlider: function () {\n      this.$imageTools.removeClass('hidden');\n    },\n\n    /**\n     * Disable the rotation slider.\n     */\n    disableSlider: function () {\n      this.$imageTools.addClass('hidden');\n    },\n\n    /**\n     * Switch to crop mode.\n     */\n    enableCropMode: function () {\n      var imageDimensions = this.getScaledImageDimensions();\n      this.zoomRatio = this.getZoomToFitRatio(imageDimensions);\n\n      var viewportProperties = {\n        width: this.editorWidth,\n        height: this.editorHeight,\n      };\n\n      var imageProperties = {\n        width: imageDimensions.width * this.zoomRatio,\n        height: imageDimensions.height * this.zoomRatio,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      };\n\n      var callback = () => {\n        this._setFittedImageVerticeCoordinates();\n\n        // Restore cropper\n        var state = this.cropperState;\n        var scaledImageDimensions = this.getScaledImageDimensions();\n        var sizeFactor =\n          scaledImageDimensions.width / state.imageDimensions.width;\n\n        // Restore based on the stored information\n        var cropperData = {\n          left: this.image.left + state.offsetX * sizeFactor * this.zoomRatio,\n          top: this.image.top + state.offsetY * sizeFactor * this.zoomRatio,\n          width: state.width * sizeFactor * this.zoomRatio,\n          height: state.height * sizeFactor * this.zoomRatio,\n        };\n\n        this._showCropper(cropperData);\n\n        if (this.focalPoint) {\n          sizeFactor =\n            scaledImageDimensions.width /\n            this.focalPointState.imageDimensions.width;\n          this.focalPoint.left =\n            this.image.left +\n            this.focalPointState.offsetX * sizeFactor * this.zoomRatio;\n          this.focalPoint.top =\n            this.image.top +\n            this.focalPointState.offsetY * sizeFactor * this.zoomRatio;\n          this.canvas.add(this.focalPoint);\n        }\n      };\n\n      this._editorModeTransition(callback, imageProperties, viewportProperties);\n    },\n\n    /**\n     * Switch out of crop mode.\n     */\n    disableCropMode: function () {\n      var viewportProperties = {};\n\n      this._hideCropper();\n      var imageDimensions = this.getScaledImageDimensions();\n      var targetZoom =\n        this.getZoomToCoverRatio(imageDimensions) * this.scaleFactor;\n      var inverseZoomFactor = targetZoom / this.zoomRatio;\n      this.zoomRatio = targetZoom;\n\n      var imageProperties = {\n        width: imageDimensions.width * this.zoomRatio,\n        height: imageDimensions.height * this.zoomRatio,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      };\n\n      var offsetX = this.clipper.left - this.image.left;\n      var offsetY = this.clipper.top - this.image.top;\n\n      var imageOffsetX = offsetX * inverseZoomFactor;\n      var imageOffsetY = offsetY * inverseZoomFactor;\n      imageProperties.left = this.editorWidth / 2 - imageOffsetX;\n      imageProperties.top = this.editorHeight / 2 - imageOffsetY;\n\n      // Calculate the cropper dimensions after all the zooming\n      viewportProperties.height = this.clipper.height * inverseZoomFactor;\n      viewportProperties.width = this.clipper.width * inverseZoomFactor;\n\n      if (\n        !this.focalPoint ||\n        (this.focalPoint &&\n          !this._isCenterInside(this.focalPoint, this.clipper))\n      ) {\n        if (this.focalPoint) {\n          this.toggleFocalPoint();\n        }\n\n        this._resetFocalPointPosition();\n      }\n\n      var callback = () => {\n        // Reposition focal point correctly\n        if (this.focalPoint) {\n          var sizeFactor =\n            this.getScaledImageDimensions().width /\n            this.focalPointState.imageDimensions.width;\n          this.focalPoint.left =\n            this.image.left +\n            this.focalPointState.offsetX * sizeFactor * this.zoomRatio;\n          this.focalPoint.top =\n            this.image.top +\n            this.focalPointState.offsetY * sizeFactor * this.zoomRatio;\n          this.canvas.add(this.focalPoint);\n        }\n      };\n\n      this._editorModeTransition(callback, imageProperties, viewportProperties);\n    },\n\n    /**\n     * @callback editorModeTransitionCallback\n     */\n    /**\n     * Transition between cropping end editor modes\n     *\n     * @param {editorModeTransitionCallback}\n     * @param {Object} imageProperties\n     * @param {Object} viewportProperties\n     * @private\n     */\n    _editorModeTransition: function (\n      callback,\n      imageProperties,\n      viewportProperties\n    ) {\n      this._queue.pause();\n\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        // Without this it looks semi-broken during animation\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n          this.renderImage();\n        }\n\n        this.image.animate(imageProperties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            callback();\n            this.animationInProgress = false;\n            this.renderImage();\n            this._queue.resume();\n          },\n        });\n\n        this.viewport.animate(viewportProperties, {\n          duration: this.settings.animationDuration,\n        });\n      }\n    },\n\n    _showSpinner: function () {\n      if (!this.$spinner) {\n        this.$spinner = $('<div class=\"spinner big spinner-absolute\"/>');\n      }\n      this.$spinner.appendTo(this.$container.find('.image'));\n    },\n\n    _hideSpinner: function () {\n      this.$spinner.remove();\n    },\n\n    /**\n     * Show the cropper.\n     *\n     * @param {Object} clipperData\n     */\n    _showCropper: function (clipperData) {\n      this._setupCropperLayer(clipperData);\n      this._redrawCropperElements();\n      this.renderCropper();\n    },\n\n    /**\n     * Hide the cropper.\n     */\n    _hideCropper: function () {\n      if (this.clipper) {\n        this.croppingCanvas.remove(this.clipper);\n        this.croppingCanvas.remove(this.croppingShade);\n        this.croppingCanvas.remove(this.cropperHandles);\n        this.croppingCanvas.remove(this.cropperGrid);\n        this.croppingCanvas.remove(this.croppingRectangle);\n\n        this.croppingCanvas = null;\n        this.renderCropper = null;\n      }\n    },\n\n    /**\n     * Draw the cropper.\n     *\n     * @param {Object} clipperData\n     */\n    _setupCropperLayer: function (clipperData) {\n      // Set up the canvas for cropper\n      this.croppingCanvas = new fabric.StaticCanvas('cropping-canvas', {\n        backgroundColor: 'rgba(0,0,0,0)',\n        hoverCursor: 'default',\n        selection: false,\n      });\n\n      this.croppingCanvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      this.renderCropper = () =>\n        Garnish.requestAnimationFrame(\n          this.croppingCanvas.renderAll.bind(this.croppingCanvas)\n        );\n\n      $('#cropping-canvas', this.$editorContainer).css({\n        position: 'absolute',\n        top: 0,\n        left: 0,\n      });\n\n      this.croppingShade = new fabric.Rect({\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n        originX: 'center',\n        originY: 'center',\n        width: this.editorWidth,\n        height: this.editorHeight,\n        fill: 'rgba(0,0,0,0.7)',\n      });\n\n      // Calculate the cropping rectangle size\n      var imageDimensions = this.getScaledImageDimensions();\n      var rectangleRatio =\n        this.imageStraightenAngle === 0\n          ? 1\n          : this.getCombinedZoomRatio(imageDimensions) * 1.2;\n      var rectWidth = imageDimensions.width / rectangleRatio;\n      var rectHeight = imageDimensions.height / rectangleRatio;\n\n      if (this.hasOrientationChanged()) {\n        var temp = rectHeight;\n        rectHeight = rectWidth;\n        rectWidth = temp;\n      }\n\n      // Set up the cropping viewport rectangle\n      this.clipper = new fabric.Rect({\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n        originX: 'center',\n        originY: 'center',\n        width: rectWidth,\n        height: rectHeight,\n        stroke: 'black',\n        fill: 'rgba(128,0,0,1)',\n        strokeWidth: 0,\n      });\n\n      // Set from clipper data\n      if (clipperData) {\n        this.clipper.set(clipperData);\n      }\n\n      this.clipper.globalCompositeOperation = 'destination-out';\n      this.croppingCanvas.add(this.croppingShade);\n      this.croppingCanvas.add(this.clipper);\n    },\n\n    /**\n     * Redraw the cropper boundaries\n     */\n    _redrawCropperElements: function () {\n      if (typeof this._redrawCropperElements._ === 'undefined') {\n        this._redrawCropperElements._ = {};\n      }\n\n      if (this.cropperHandles) {\n        this.croppingCanvas.remove(this.cropperHandles);\n        this.croppingCanvas.remove(this.cropperGrid);\n        this.croppingCanvas.remove(this.croppingRectangle);\n      }\n      this._redrawCropperElements._.lineOptions = {\n        strokeWidth: 4,\n        stroke: 'rgb(255,255,255)',\n        fill: false,\n      };\n\n      this._redrawCropperElements._.gridOptions = {\n        strokeWidth: 2,\n        stroke: 'rgba(255,255,255,0.5)',\n      };\n\n      // Draw the handles\n      this._redrawCropperElements._.pathGroup = [\n        new fabric.Path(\n          'M 0,10 L 0,0 L 10,0',\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M ' +\n            (this.clipper.width - 8) +\n            ',0 L ' +\n            (this.clipper.width + 4) +\n            ',0 L ' +\n            (this.clipper.width + 4) +\n            ',10',\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M ' +\n            (this.clipper.width + 4) +\n            ',' +\n            (this.clipper.height - 8) +\n            ' L' +\n            (this.clipper.width + 4) +\n            ',' +\n            (this.clipper.height + 4) +\n            ' L ' +\n            (this.clipper.width - 8) +\n            ',' +\n            (this.clipper.height + 4),\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M 10,' +\n            (this.clipper.height + 4) +\n            ' L 0,' +\n            (this.clipper.height + 4) +\n            ' L 0,' +\n            (this.clipper.height - 8),\n          this._redrawCropperElements._.lineOptions\n        ),\n      ];\n\n      this.cropperHandles = new fabric.Group(\n        this._redrawCropperElements._.pathGroup,\n        {\n          left: this.clipper.left,\n          top: this.clipper.top,\n          originX: 'center',\n          originY: 'center',\n        }\n      );\n\n      // Don't forget the rectangle\n      this.croppingRectangle = new fabric.Rect({\n        left: this.clipper.left,\n        top: this.clipper.top,\n        width: this.clipper.width,\n        height: this.clipper.height,\n        fill: 'rgba(0,0,0,0)',\n        stroke: 'rgba(255,255,255,0.8)',\n        strokeWidth: 2,\n        originX: 'center',\n        originY: 'center',\n      });\n\n      this.cropperGrid = new fabric.Group(\n        [\n          new fabric.Line(\n            [\n              this.clipper.width * 0.33,\n              0,\n              this.clipper.width * 0.33,\n              this.clipper.height,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              this.clipper.width * 0.66,\n              0,\n              this.clipper.width * 0.66,\n              this.clipper.height,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              0,\n              this.clipper.height * 0.33,\n              this.clipper.width,\n              this.clipper.height * 0.33,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              0,\n              this.clipper.height * 0.66,\n              this.clipper.width,\n              this.clipper.height * 0.66,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n        ],\n        {\n          left: this.clipper.left,\n          top: this.clipper.top,\n          originX: 'center',\n          originY: 'center',\n        }\n      );\n\n      this._redrawCropperElements._.cropTextTop =\n        this.croppingRectangle.top + this.clipper.height / 2 + 12;\n      this._redrawCropperElements._.cropTextBackgroundColor = 'rgba(0,0,0,0)';\n\n      if (\n        this._redrawCropperElements._.cropTextTop + 12 >\n        this.editorHeight - 2\n      ) {\n        this._redrawCropperElements._.cropTextTop -= 24;\n        this._redrawCropperElements._.cropTextBackgroundColor =\n          'rgba(0,0,0,0.5)';\n      }\n\n      this.croppingCanvas.add(this.cropperHandles);\n      this.croppingCanvas.add(this.cropperGrid);\n      this.croppingCanvas.add(this.croppingRectangle);\n    },\n\n    /**\n     * Reposition the cropper when the image editor dimensions change.\n     *\n     * @param {Object} previousImageArea\n     */\n    _repositionCropper: function (previousImageArea) {\n      if (!this.croppingCanvas) {\n        return;\n      }\n\n      // Get the current clipper offset relative to center\n      var currentOffset = {\n        x: this.clipper.left - this.croppingCanvas.width / 2,\n        y: this.clipper.top - this.croppingCanvas.height / 2,\n      };\n\n      // Resize the cropping canvas\n      this.croppingCanvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      // Check by what factor will the new final bounding box be different\n      var currentArea = this._getBoundingRectangle(this.imageVerticeCoords);\n      var areaFactor = currentArea.width / previousImageArea.width;\n\n      // Adjust the cropper size to scale along with the bounding box\n      this.clipper.width = Math.round(this.clipper.width * areaFactor);\n      this.clipper.height = Math.round(this.clipper.height * areaFactor);\n\n      // Adjust the coordinates: re-position clipper in relation to the new center to adjust\n      // for editor size changes and then multiply by the size factor to adjust for image size changes\n      this.clipper.left = this.editorWidth / 2 + currentOffset.x * areaFactor;\n      this.clipper.top = this.editorHeight / 2 + currentOffset.y * areaFactor;\n\n      // Resize the cropping shade\n      this.croppingShade.set({\n        width: this.editorWidth,\n        height: this.editorHeight,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      });\n\n      this._redrawCropperElements();\n      this.renderCropper();\n    },\n\n    /**\n     * Get the dimensions of a bounding rectangle by a set of four coordinates.\n     *\n     * @param {Object} coordinateSet\n     */\n    _getBoundingRectangle: function (coordinateSet) {\n      return {\n        width:\n          Math.max(\n            coordinateSet.a.x,\n            coordinateSet.b.x,\n            coordinateSet.c.x,\n            coordinateSet.d.x\n          ) -\n          Math.min(\n            coordinateSet.a.x,\n            coordinateSet.b.x,\n            coordinateSet.c.x,\n            coordinateSet.d.x\n          ),\n        height:\n          Math.max(\n            coordinateSet.a.y,\n            coordinateSet.b.y,\n            coordinateSet.c.y,\n            coordinateSet.d.y\n          ) -\n          Math.min(\n            coordinateSet.a.y,\n            coordinateSet.b.y,\n            coordinateSet.c.y,\n            coordinateSet.d.y\n          ),\n      };\n    },\n\n    /**\n     * Handle the mouse being clicked.\n     *\n     * @param {Object} ev\n     */\n    _handleMouseDown: function (ev) {\n      // Focal before resize before dragging\n      var focal = this.focalPoint && this._isMouseOver(ev, this.focalPoint);\n      var move = this.croppingCanvas && this._isMouseOver(ev, this.clipper);\n      var handle = this.croppingCanvas && this._cropperHandleHitTest(ev);\n\n      if (handle || move || focal) {\n        this.previousMouseX = ev.pageX;\n        this.previousMouseY = ev.pageY;\n\n        if (focal) {\n          this.draggingFocal = true;\n        } else if (handle) {\n          this.scalingCropper = handle;\n        } else if (move) {\n          this.draggingCropper = true;\n        }\n      }\n    },\n\n    /**\n     * Handle the mouse being moved.\n     *\n     * @param {Object} ev\n     */\n    _handleMouseMove: function (ev) {\n      if (this.mouseMoveEvent !== null) {\n        Garnish.requestAnimationFrame(this._handleMouseMoveInternal.bind(this));\n      }\n      this.mouseMoveEvent = ev;\n    },\n\n    _handleMouseMoveInternal: function () {\n      if (this.mouseMoveEvent === null) {\n        return;\n      }\n\n      if (this.focalPoint && this.draggingFocal) {\n        this._handleFocalDrag(this.mouseMoveEvent);\n        this.storeFocalPointState();\n        this.renderImage();\n      } else if (this.draggingCropper || this.scalingCropper) {\n        if (this.draggingCropper) {\n          this._handleCropperDrag(this.mouseMoveEvent);\n        } else {\n          this._handleCropperResize(this.mouseMoveEvent);\n        }\n\n        this._redrawCropperElements();\n\n        this.storeCropperState();\n        this.renderCropper();\n      } else {\n        this._setMouseCursor(this.mouseMoveEvent);\n      }\n\n      this.previousMouseX = this.mouseMoveEvent.pageX;\n      this.previousMouseY = this.mouseMoveEvent.pageY;\n\n      this.mouseMoveEvent = null;\n    },\n\n    /**\n     * Handle mouse being released.\n     */\n    _handleMouseUp: function () {\n      this.draggingCropper = false;\n      this.scalingCropper = false;\n      this.draggingFocal = false;\n    },\n\n    /**\n     * Handle mouse out\n     *\n     * @param {Object} ev\n     */\n    _handleMouseOut: function (ev) {\n      this._handleMouseUp(ev);\n      this.mouseMoveEvent = ev;\n      this._handleMouseMoveInternal();\n    },\n\n    /**\n     * Handle cropper being dragged.\n     *\n     * @param {Object} ev\n     */\n    _handleCropperDrag: function (ev) {\n      if (typeof this._handleCropperDrag._ === 'undefined') {\n        this._handleCropperDrag._ = {};\n      }\n\n      this._handleCropperDrag._.deltaX = ev.pageX - this.previousMouseX;\n      this._handleCropperDrag._.deltaY = ev.pageY - this.previousMouseY;\n\n      if (\n        this._handleCropperDrag._.deltaX === 0 &&\n        this._handleCropperDrag._.deltaY === 0\n      ) {\n        return false;\n      }\n\n      this._handleCropperDrag._.rectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      this._handleCropperDrag._.vertices = this._getRectangleVertices(\n        this._handleCropperDrag._.rectangle,\n        this._handleCropperDrag._.deltaX,\n        this._handleCropperDrag._.deltaY\n      );\n\n      // If this would drag it outside of the image\n      if (\n        !this.arePointsInsideRectangle(\n          this._handleCropperDrag._.vertices,\n          this.imageVerticeCoords\n        )\n      ) {\n        // Try to find the furthest point in the same general direction where we can drag it\n\n        // Delta iterator setup\n        this._handleCropperDrag._.dxi = 0;\n        this._handleCropperDrag._.dyi = 0;\n        this._handleCropperDrag._.xStep =\n          this._handleCropperDrag._.deltaX > 0 ? -1 : 1;\n        this._handleCropperDrag._.yStep =\n          this._handleCropperDrag._.deltaY > 0 ? -1 : 1;\n\n        // The furthest we can move\n        this._handleCropperDrag._.furthest = 0;\n        this._handleCropperDrag._.furthestDeltas = {};\n\n        // Loop through every combination of dragging it not so far\n        for (\n          this._handleCropperDrag._.dxi = Math.min(\n            Math.abs(this._handleCropperDrag._.deltaX),\n            10\n          );\n          this._handleCropperDrag._.dxi >= 0;\n          this._handleCropperDrag._.dxi--\n        ) {\n          for (\n            this._handleCropperDrag._.dyi = Math.min(\n              Math.abs(this._handleCropperDrag._.deltaY),\n              10\n            );\n            this._handleCropperDrag._.dyi >= 0;\n            this._handleCropperDrag._.dyi--\n          ) {\n            this._handleCropperDrag._.vertices = this._getRectangleVertices(\n              this._handleCropperDrag._.rectangle,\n              this._handleCropperDrag._.dxi *\n                (this._handleCropperDrag._.deltaX > 0 ? 1 : -1),\n              this._handleCropperDrag._.dyi *\n                (this._handleCropperDrag._.deltaY > 0 ? 1 : -1)\n            );\n\n            if (\n              this.arePointsInsideRectangle(\n                this._handleCropperDrag._.vertices,\n                this.imageVerticeCoords\n              )\n            ) {\n              if (\n                this._handleCropperDrag._.dxi + this._handleCropperDrag._.dyi >\n                this._handleCropperDrag._.furthest\n              ) {\n                this._handleCropperDrag._.furthest =\n                  this._handleCropperDrag._.dxi + this._handleCropperDrag._.dyi;\n                this._handleCropperDrag._.furthestDeltas = {\n                  x:\n                    this._handleCropperDrag._.dxi *\n                    (this._handleCropperDrag._.deltaX > 0 ? 1 : -1),\n                  y:\n                    this._handleCropperDrag._.dyi *\n                    (this._handleCropperDrag._.deltaY > 0 ? 1 : -1),\n                };\n              }\n            }\n          }\n        }\n\n        // REALLY can't drag along the cursor movement\n        if (this._handleCropperDrag._.furthest == 0) {\n          return;\n        } else {\n          this._handleCropperDrag._.deltaX =\n            this._handleCropperDrag._.furthestDeltas.x;\n          this._handleCropperDrag._.deltaY =\n            this._handleCropperDrag._.furthestDeltas.y;\n        }\n      }\n\n      this.clipper.set({\n        left: this.clipper.left + this._handleCropperDrag._.deltaX,\n        top: this.clipper.top + this._handleCropperDrag._.deltaY,\n      });\n    },\n\n    /**\n     * Handle focal point being dragged.\n     *\n     * @param {Object} ev\n     */\n    _handleFocalDrag: function (ev) {\n      if (typeof this._handleFocalDrag._ === 'undefined') {\n        this._handleFocalDrag._ = {};\n      }\n\n      if (this.focalPoint) {\n        this._handleFocalDrag._.deltaX = ev.pageX - this.previousMouseX;\n        this._handleFocalDrag._.deltaY = ev.pageY - this.previousMouseY;\n\n        if (\n          this._handleFocalDrag._.deltaX === 0 &&\n          this._handleFocalDrag._.deltaY === 0\n        ) {\n          return;\n        }\n\n        this._handleFocalDrag._.newX =\n          this.focalPoint.left + this._handleFocalDrag._.deltaX;\n        this._handleFocalDrag._.newY =\n          this.focalPoint.top + this._handleFocalDrag._.deltaY;\n\n        // Just make sure that the focal point stays inside the image\n        if (this.currentView === 'crop') {\n          if (\n            !this.arePointsInsideRectangle(\n              [\n                {\n                  x: this._handleFocalDrag._.newX,\n                  y: this._handleFocalDrag._.newY,\n                },\n              ],\n              this.imageVerticeCoords\n            )\n          ) {\n            return;\n          }\n        } else {\n          if (\n            !(\n              this.viewport.left -\n                this.viewport.width / 2 -\n                this._handleFocalDrag._.newX <\n                0 &&\n              this.viewport.left +\n                this.viewport.width / 2 -\n                this._handleFocalDrag._.newX >\n                0 &&\n              this.viewport.top -\n                this.viewport.height / 2 -\n                this._handleFocalDrag._.newY <\n                0 &&\n              this.viewport.top +\n                this.viewport.height / 2 -\n                this._handleFocalDrag._.newY >\n                0\n            )\n          ) {\n            return;\n          }\n        }\n\n        this.focalPoint.set({\n          left: this.focalPoint.left + this._handleFocalDrag._.deltaX,\n          top: this.focalPoint.top + this._handleFocalDrag._.deltaY,\n        });\n      }\n    },\n\n    /**\n     * Set the cropping constraint\n     * @param {string} constraint\n     */\n    setCroppingConstraint: function (constraint) {\n      // In case this caused the sidebar width to change.\n      this.updateSizeAndPosition();\n\n      switch (constraint) {\n        case 'none':\n          this.croppingConstraint = false;\n          break;\n\n        case 'original':\n          this.croppingConstraint = this.originalWidth / this.originalHeight;\n          break;\n\n        case 'current':\n          this.croppingConstraint = this.clipper.width / this.clipper.height;\n          break;\n\n        case 'custom':\n          break;\n        default:\n          this.croppingConstraint = parseFloat(constraint);\n\n          break;\n      }\n    },\n\n    /**\n     * Enforce the cropping constraint\n     */\n    enforceCroppingConstraint: function () {\n      if (typeof this.enforceCroppingConstraint._ === 'undefined') {\n        this.enforceCroppingConstraint._ = {};\n      }\n\n      if (this.animationInProgress || !this.croppingConstraint) {\n        return;\n      }\n\n      this.animationInProgress = true;\n\n      // Mock the clipping rectangle for collision tests\n      this.enforceCroppingConstraint._.rectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      // If wider than it should be\n      if (this.clipper.width > this.clipper.height * this.croppingConstraint) {\n        this.enforceCroppingConstraint._.previousHeight =\n          this.enforceCroppingConstraint._.rectangle.height;\n\n        // Make it taller!\n        this.enforceCroppingConstraint._.rectangle.height =\n          this.clipper.width / this.croppingConstraint;\n\n        // Getting really awkward having to convert between 0;0 being center or top-left corner.\n        this.enforceCroppingConstraint._.rectangle.top -=\n          (this.enforceCroppingConstraint._.rectangle.height -\n            this.enforceCroppingConstraint._.previousHeight) /\n          2;\n\n        // If the clipper would end up out of bounds, make it narrower instead.\n        if (\n          !this.arePointsInsideRectangle(\n            this._getRectangleVertices(\n              this.enforceCroppingConstraint._.rectangle\n            ),\n            this.imageVerticeCoords\n          )\n        ) {\n          this.enforceCroppingConstraint._.rectangle.width =\n            this.clipper.height * this.croppingConstraint;\n          this.enforceCroppingConstraint._.rectangle.height =\n            this.enforceCroppingConstraint._.rectangle.width /\n            this.croppingConstraint;\n        }\n      } else {\n        // Follow the same pattern, if taller than it should be.\n        this.enforceCroppingConstraint._.previousWidth =\n          this.enforceCroppingConstraint._.rectangle.width;\n        this.enforceCroppingConstraint._.rectangle.width =\n          this.clipper.height * this.croppingConstraint;\n        this.enforceCroppingConstraint._.rectangle.left -=\n          (this.enforceCroppingConstraint._.rectangle.width -\n            this.enforceCroppingConstraint._.previousWidth) /\n          2;\n\n        if (\n          !this.arePointsInsideRectangle(\n            this._getRectangleVertices(\n              this.enforceCroppingConstraint._.rectangle\n            ),\n            this.imageVerticeCoords\n          )\n        ) {\n          this.enforceCroppingConstraint._.rectangle.height =\n            this.clipper.width / this.croppingConstraint;\n          this.enforceCroppingConstraint._.rectangle.width =\n            this.enforceCroppingConstraint._.rectangle.height *\n            this.croppingConstraint;\n        }\n      }\n\n      this.enforceCroppingConstraint._.properties = {\n        height: this.enforceCroppingConstraint._.rectangle.height,\n        width: this.enforceCroppingConstraint._.rectangle.width,\n      };\n\n      // Make sure to redraw cropper handles and gridlines when resizing\n      this.clipper.animate(this.enforceCroppingConstraint._.properties, {\n        onChange: () => {\n          this._redrawCropperElements();\n          this.croppingCanvas.renderAll();\n        },\n        duration: this.settings.animationDuration,\n        onComplete: () => {\n          this._redrawCropperElements();\n          this.animationInProgress = false;\n          this.renderCropper();\n          this.storeCropperState();\n        },\n      });\n    },\n\n    /**\n     * Handle cropper being resized.\n     *\n     * @param {Object} ev\n     */\n    _handleCropperResize: function (ev) {\n      if (typeof this._handleCropperResize._ === 'undefined') {\n        this._handleCropperResize._ = {};\n      }\n\n      // Size deltas\n      this._handleCropperResize._.deltaX = ev.pageX - this.previousMouseX;\n      this._handleCropperResize._.deltaY = ev.pageY - this.previousMouseY;\n\n      if (this.scalingCropper === 'b' || this.scalingCropper === 't') {\n        this._handleCropperResize._.deltaX = 0;\n      }\n\n      if (this.scalingCropper === 'l' || this.scalingCropper === 'r') {\n        this._handleCropperResize._.deltaY = 0;\n      }\n\n      if (\n        this._handleCropperResize._.deltaX === 0 &&\n        this._handleCropperResize._.deltaY === 0\n      ) {\n        return;\n      }\n\n      // Translate from center-center origin to absolute coords\n      this._handleCropperResize._.startingRectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      this._handleCropperResize._.rectangle =\n        this._calculateNewCropperSizeByDeltas(\n          this._handleCropperResize._.startingRectangle,\n          this._handleCropperResize._.deltaX,\n          this._handleCropperResize._.deltaY,\n          this.scalingCropper\n        );\n\n      if (\n        this._handleCropperResize._.rectangle.height < 30 ||\n        this._handleCropperResize._.rectangle.width < 30\n      ) {\n        return;\n      }\n\n      if (\n        !this.arePointsInsideRectangle(\n          this._getRectangleVertices(this._handleCropperResize._.rectangle),\n          this.imageVerticeCoords\n        )\n      ) {\n        return;\n      }\n\n      // Translate back to center-center origin.\n      this.clipper.set({\n        top:\n          this._handleCropperResize._.rectangle.top +\n          this._handleCropperResize._.rectangle.height / 2,\n        left:\n          this._handleCropperResize._.rectangle.left +\n          this._handleCropperResize._.rectangle.width / 2,\n        width: this._handleCropperResize._.rectangle.width,\n        height: this._handleCropperResize._.rectangle.height,\n      });\n\n      this._redrawCropperElements();\n    },\n\n    _calculateNewCropperSizeByDeltas: function (\n      startingRectangle,\n      deltaX,\n      deltaY,\n      cropperDirection\n    ) {\n      if (typeof this._calculateNewCropperSizeByDeltas._ === 'undefined') {\n        this._calculateNewCropperSizeByDeltas._ = {};\n      }\n\n      // Center deltas\n      this._calculateNewCropperSizeByDeltas._.topDelta = 0;\n      this._calculateNewCropperSizeByDeltas._.leftDelta = 0;\n\n      this._calculateNewCropperSizeByDeltas._.rectangle = startingRectangle;\n      this._calculateNewCropperSizeByDeltas._.deltaX = deltaX;\n      this._calculateNewCropperSizeByDeltas._.deltaY = deltaY;\n\n      // Lock the aspect ratio if needed\n      if (this.croppingConstraint) {\n        this._calculateNewCropperSizeByDeltas._.change = 0;\n\n        // Take into account the mouse direction and figure out the \"real\" change in cropper size\n        switch (cropperDirection) {\n          case 't':\n            this._calculateNewCropperSizeByDeltas._.change =\n              -this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'b':\n            this._calculateNewCropperSizeByDeltas._.change =\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'r':\n            this._calculateNewCropperSizeByDeltas._.change =\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'l':\n            this._calculateNewCropperSizeByDeltas._.change =\n              -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tr':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? -this._calculateNewCropperSizeByDeltas._.deltaY\n                : this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tl':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? -this._calculateNewCropperSizeByDeltas._.deltaY\n                : -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'br':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? this._calculateNewCropperSizeByDeltas._.deltaY\n                : this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'bl':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? this._calculateNewCropperSizeByDeltas._.deltaY\n                : -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n        }\n\n        if (this.croppingConstraint > 1) {\n          this._calculateNewCropperSizeByDeltas._.deltaX =\n            this._calculateNewCropperSizeByDeltas._.change;\n          this._calculateNewCropperSizeByDeltas._.deltaY =\n            this._calculateNewCropperSizeByDeltas._.deltaX /\n            this.croppingConstraint;\n        } else {\n          this._calculateNewCropperSizeByDeltas._.deltaY =\n            this._calculateNewCropperSizeByDeltas._.change;\n          this._calculateNewCropperSizeByDeltas._.deltaX =\n            this._calculateNewCropperSizeByDeltas._.deltaY *\n            this.croppingConstraint;\n        }\n\n        this._calculateNewCropperSizeByDeltas._.rectangle.height +=\n          this._calculateNewCropperSizeByDeltas._.deltaY;\n        this._calculateNewCropperSizeByDeltas._.rectangle.width +=\n          this._calculateNewCropperSizeByDeltas._.deltaX;\n\n        // Make the cropper compress/expand relative to the correct edge to make it feel \"right\"\n        switch (cropperDirection) {\n          case 't':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX / 2;\n            break;\n          case 'b':\n            this._calculateNewCropperSizeByDeltas._.rectangle.left +=\n              -this._calculateNewCropperSizeByDeltas._.deltaX / 2;\n            break;\n          case 'r':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top +=\n              -this._calculateNewCropperSizeByDeltas._.deltaY / 2;\n            break;\n          case 'l':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY / 2;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tr':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'tl':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'bl':\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n        }\n      } else {\n        // Lock the aspect ratio\n        if (\n          this.shiftKeyHeld &&\n          (cropperDirection === 'tl' ||\n            cropperDirection === 'tr' ||\n            cropperDirection === 'bl' ||\n            cropperDirection === 'br')\n        ) {\n          this._calculateNewCropperSizeByDeltas._.ratio;\n          if (Math.abs(deltaX) > Math.abs(deltaY)) {\n            this._calculateNewCropperSizeByDeltas._.ratio =\n              startingRectangle.width / startingRectangle.height;\n            this._calculateNewCropperSizeByDeltas._.deltaY =\n              this._calculateNewCropperSizeByDeltas._.deltaX /\n              this._calculateNewCropperSizeByDeltas._.ratio;\n            this._calculateNewCropperSizeByDeltas._.deltaY *=\n              cropperDirection === 'tr' || cropperDirection === 'bl' ? -1 : 1;\n          } else {\n            this._calculateNewCropperSizeByDeltas._.ratio =\n              startingRectangle.width / startingRectangle.height;\n            this._calculateNewCropperSizeByDeltas._.deltaX =\n              this._calculateNewCropperSizeByDeltas._.deltaY *\n              this._calculateNewCropperSizeByDeltas._.ratio;\n            this._calculateNewCropperSizeByDeltas._.deltaX *=\n              cropperDirection === 'tr' || cropperDirection === 'bl' ? -1 : 1;\n          }\n        }\n\n        if (cropperDirection.match(/t/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.top +=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n          this._calculateNewCropperSizeByDeltas._.rectangle.height -=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n        }\n        if (cropperDirection.match(/b/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.height +=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n        }\n        if (cropperDirection.match(/r/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.width +=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n        }\n        if (cropperDirection.match(/l/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.left +=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n          this._calculateNewCropperSizeByDeltas._.rectangle.width -=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n        }\n      }\n\n      this._calculateNewCropperSizeByDeltas._.rectangle.top =\n        this._calculateNewCropperSizeByDeltas._.rectangle.top;\n      this._calculateNewCropperSizeByDeltas._.rectangle.left =\n        this._calculateNewCropperSizeByDeltas._.rectangle.left;\n      this._calculateNewCropperSizeByDeltas._.rectangle.width =\n        this._calculateNewCropperSizeByDeltas._.rectangle.width;\n      this._calculateNewCropperSizeByDeltas._.rectangle.height =\n        this._calculateNewCropperSizeByDeltas._.rectangle.height;\n\n      return this._calculateNewCropperSizeByDeltas._.rectangle;\n    },\n\n    /**\n     * Set mouse cursor by it's position over cropper.\n     *\n     * @param {Object} ev\n     */\n    _setMouseCursor: function (ev) {\n      if (typeof this._setMouseCursor._ === 'undefined') {\n        this._setMouseCursor._ = {};\n      }\n\n      if (Garnish.isMobileBrowser(true)) {\n        return;\n      }\n      this._setMouseCursor._.cursor = 'default';\n      this._setMouseCursor._.handle =\n        this.croppingCanvas && this._cropperHandleHitTest(ev);\n      if (this.focalPoint && this._isMouseOver(ev, this.focalPoint)) {\n        this._setMouseCursor._.cursor = 'pointer';\n      } else if (this._setMouseCursor._.handle) {\n        if (\n          this._setMouseCursor._.handle === 't' ||\n          this._setMouseCursor._.handle === 'b'\n        ) {\n          this._setMouseCursor._.cursor = 'ns-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'l' ||\n          this._setMouseCursor._.handle === 'r'\n        ) {\n          this._setMouseCursor._.cursor = 'ew-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'tl' ||\n          this._setMouseCursor._.handle === 'br'\n        ) {\n          this._setMouseCursor._.cursor = 'nwse-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'bl' ||\n          this._setMouseCursor._.handle === 'tr'\n        ) {\n          this._setMouseCursor._.cursor = 'nesw-resize';\n        }\n      } else if (this.croppingCanvas && this._isMouseOver(ev, this.clipper)) {\n        this._setMouseCursor._.cursor = 'move';\n      }\n\n      $('.body').css('cursor', this._setMouseCursor._.cursor);\n    },\n\n    /**\n     * Test whether the mouse cursor is on any cropper handles.\n     *\n     * @param {Object} ev\n     */\n    _cropperHandleHitTest: function (ev) {\n      if (typeof this._cropperHandleHitTest._ === 'undefined') {\n        this._cropperHandleHitTest._ = {};\n      }\n\n      this._cropperHandleHitTest._.parentOffset = this.$croppingCanvas.offset();\n      this._cropperHandleHitTest._.mouseX =\n        ev.pageX - this._cropperHandleHitTest._.parentOffset.left;\n      this._cropperHandleHitTest._.mouseY =\n        ev.pageY - this._cropperHandleHitTest._.parentOffset.top;\n\n      // Compensate for center origin coordinate-wise\n      this._cropperHandleHitTest._.lb =\n        this.clipper.left - this.clipper.width / 2;\n      this._cropperHandleHitTest._.rb =\n        this._cropperHandleHitTest._.lb + this.clipper.width;\n      this._cropperHandleHitTest._.tb =\n        this.clipper.top - this.clipper.height / 2;\n      this._cropperHandleHitTest._.bb =\n        this._cropperHandleHitTest._.tb + this.clipper.height;\n\n      // Left side top/bottom\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb - 3\n      ) {\n        if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.tb + 10 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.tb - 3\n        ) {\n          return 'tl';\n        } else if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.bb + 3 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.bb - 10\n        ) {\n          return 'bl';\n        }\n      }\n      // Right side top/bottom\n      if (\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.rb - 13 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb + 3\n      ) {\n        if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.tb + 10 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.tb - 3\n        ) {\n          return 'tr';\n        } else if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.bb + 2 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.bb - 10\n        ) {\n          return 'br';\n        }\n      }\n\n      // Left or right\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.lb + 3 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb - 3 &&\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb - 10 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb + 10\n      ) {\n        return 'l';\n      }\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb + 1 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.rb - 5 &&\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb - 10 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb + 10\n      ) {\n        return 'r';\n      }\n\n      // Top or bottom\n      if (\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.tb + 4 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb - 2 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb - 10\n      ) {\n        return 't';\n      }\n      if (\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb + 2 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.bb - 4 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb - 10\n      ) {\n        return 'b';\n      }\n\n      return false;\n    },\n\n    /**\n     * Test whether the mouse cursor is on a fabricJS object.\n     *\n     * @param {Object} event\n     * @param {Object} object\n     * @returns {boolean}\n     */\n    _isMouseOver: function (event, object) {\n      if (typeof this._isMouseOver._ === 'undefined') {\n        this._isMouseOver._ = {};\n      }\n\n      this._isMouseOver._.parentOffset = this.$croppingCanvas.offset();\n      this._isMouseOver._.mouseX =\n        event.pageX - this._isMouseOver._.parentOffset.left;\n      this._isMouseOver._.mouseY =\n        event.pageY - this._isMouseOver._.parentOffset.top;\n\n      // Compensate for center origin coordinate-wise\n      this._isMouseOver._.lb = object.left - object.width / 2;\n      this._isMouseOver._.rb = this._isMouseOver._.lb + object.width;\n      this._isMouseOver._.tb = object.top - object.height / 2;\n      this._isMouseOver._.bb = this._isMouseOver._.tb + object.height;\n\n      return (\n        this._isMouseOver._.mouseX >= this._isMouseOver._.lb &&\n        this._isMouseOver._.mouseX <= this._isMouseOver._.rb &&\n        this._isMouseOver._.mouseY >= this._isMouseOver._.tb &&\n        this._isMouseOver._.mouseY <= this._isMouseOver._.bb\n      );\n    },\n\n    /**\n     * Get vertices of a rectangle defined by left,top,height and width properties.\n     * Optionally it's possible to provide offsetX and offsetY values.\n     * Left and top properties of rectangle reference the top-left corner.\n     *\n     * @param {Object} rectangle\n     * @param {number} [offsetX]\n     * @param {number} [offsetY]\n     */\n    _getRectangleVertices: function (rectangle, offsetX, offsetY) {\n      if (typeof this._getRectangleVertices._ === 'undefined') {\n        this._getRectangleVertices._ = {};\n      }\n\n      if (typeof offsetX === 'undefined') {\n        offsetX = 0;\n      }\n      if (typeof offsetY === 'undefined') {\n        offsetY = 0;\n      }\n\n      this._getRectangleVertices._.topLeft = {\n        x: rectangle.left + offsetX,\n        y: rectangle.top + offsetY,\n      };\n\n      this._getRectangleVertices._.topRight = {\n        x: this._getRectangleVertices._.topLeft.x + rectangle.width,\n        y: this._getRectangleVertices._.topLeft.y,\n      };\n      this._getRectangleVertices._.bottomRight = {\n        x: this._getRectangleVertices._.topRight.x,\n        y: this._getRectangleVertices._.topRight.y + rectangle.height,\n      };\n      this._getRectangleVertices._.bottomLeft = {\n        x: this._getRectangleVertices._.topLeft.x,\n        y: this._getRectangleVertices._.bottomRight.y,\n      };\n\n      return [\n        this._getRectangleVertices._.topLeft,\n        this._getRectangleVertices._.topRight,\n        this._getRectangleVertices._.bottomRight,\n        this._getRectangleVertices._.bottomLeft,\n      ];\n    },\n\n    /**\n     * Set image vertice coordinates for an image that's been zoomed to fit.\n     */\n    _setFittedImageVerticeCoordinates: function () {\n      this.imageVerticeCoords = this.getImageVerticeCoords('fit');\n    },\n\n    /**\n     * Get image vertice coords by a zoom mode and taking into account the straightening angle.\n     * The zoomMode can be either \"cover\", \"fit\" or a discrete float value.\n     *\n     * @param {string} zoomMode\n     */\n    getImageVerticeCoords: function (zoomMode) {\n      var angleInRadians =\n        -1 *\n        ((this.hasOrientationChanged() ? 90 : 0) + this.imageStraightenAngle) *\n        (Math.PI / 180);\n\n      var imageDimensions = this.getScaledImageDimensions();\n\n      var ratio;\n\n      if (typeof zoomMode === 'number') {\n        ratio = zoomMode;\n      } else if (zoomMode === 'cover') {\n        ratio = this.getZoomToCoverRatio(imageDimensions);\n      } else {\n        ratio = this.getZoomToFitRatio(imageDimensions);\n      }\n\n      // Get the dimensions of the scaled image\n      var scaledHeight = imageDimensions.height * ratio;\n      var scaledWidth = imageDimensions.width * ratio;\n\n      // Calculate the segments of the containing box for the image.\n      // When referring to top/bottom or right/left segments, these are on the\n      // right-side and bottom projection of the containing box for the zoomed out image.\n      var topVerticalSegment = Math.cos(angleInRadians) * scaledHeight;\n      var bottomVerticalSegment = Math.sin(angleInRadians) * scaledWidth;\n      var rightHorizontalSegment = Math.cos(angleInRadians) * scaledWidth;\n      var leftHorizontalSegment = Math.sin(angleInRadians) * scaledHeight;\n\n      // Calculate the offsets from editor box for the image-containing box\n      var verticalOffset =\n        (this.editorHeight - (topVerticalSegment + bottomVerticalSegment)) / 2;\n      var horizontalOffset =\n        (this.editorWidth - (leftHorizontalSegment + rightHorizontalSegment)) /\n        2;\n\n      // Finally, calculate the image vertice coordinates\n      return {\n        a: {\n          x: horizontalOffset + rightHorizontalSegment,\n          y: verticalOffset,\n        },\n        b: {\n          x: this.editorWidth - horizontalOffset,\n          y: verticalOffset + topVerticalSegment,\n        },\n        c: {\n          x: horizontalOffset + leftHorizontalSegment,\n          y: this.editorHeight - verticalOffset,\n        },\n        d: {\n          x: horizontalOffset,\n          y: verticalOffset + bottomVerticalSegment,\n        },\n      };\n    },\n\n    /**\n     * Debug stuff by continuously rendering a fabric object on canvas.\n     *\n     * @param {Object} fabricObj\n     */\n    _debug: function (fabricObj) {\n      this.canvas.remove(this.debugger);\n      this.debugger = fabricObj;\n      this.canvas.add(this.debugger);\n    },\n\n    /**\n     * Given an array of points in the form of {x: int, y:int} and a rectangle in the form of\n     * {a:{x:int, y:int}, b:{x:int, y:int}, c:{x:int, y:int}} (the fourth vertice is unnecessary)\n     * return true if the point is in the rectangle.\n     *\n     * Adapted from: http://stackoverflow.com/a/2763387/2040791\n     *\n     * @param {Object} points\n     * @param {Object} rectangle\n     */\n    arePointsInsideRectangle: function (points, rectangle) {\n      if (typeof this.arePointsInsideRectangle._ === 'undefined') {\n        this.arePointsInsideRectangle._ = {};\n      }\n\n      // Pre-calculate the vectors and scalar products for two rectangle edges\n      this.arePointsInsideRectangle._.ab = this._getVector(\n        rectangle.a,\n        rectangle.b\n      );\n      this.arePointsInsideRectangle._.bc = this._getVector(\n        rectangle.b,\n        rectangle.c\n      );\n      this.arePointsInsideRectangle._.scalarAbAb = this._getScalarProduct(\n        this.arePointsInsideRectangle._.ab,\n        this.arePointsInsideRectangle._.ab\n      );\n      this.arePointsInsideRectangle._.scalarBcBc = this._getScalarProduct(\n        this.arePointsInsideRectangle._.bc,\n        this.arePointsInsideRectangle._.bc\n      );\n\n      for (\n        this.arePointsInsideRectangle._.i = 0;\n        this.arePointsInsideRectangle._.i < points.length;\n        this.arePointsInsideRectangle._.i++\n      ) {\n        this.arePointsInsideRectangle._.point =\n          points[this.arePointsInsideRectangle._.i];\n\n        // Calculate the vectors for two rectangle sides and for\n        // the vector from vertices a and b to the point P\n        this.arePointsInsideRectangle._.ap = this._getVector(\n          rectangle.a,\n          this.arePointsInsideRectangle._.point\n        );\n        this.arePointsInsideRectangle._.bp = this._getVector(\n          rectangle.b,\n          this.arePointsInsideRectangle._.point\n        );\n\n        // Calculate scalar or dot products for some vector combinations\n        this.arePointsInsideRectangle._.scalarAbAp = this._getScalarProduct(\n          this.arePointsInsideRectangle._.ab,\n          this.arePointsInsideRectangle._.ap\n        );\n        this.arePointsInsideRectangle._.scalarBcBp = this._getScalarProduct(\n          this.arePointsInsideRectangle._.bc,\n          this.arePointsInsideRectangle._.bp\n        );\n\n        this.arePointsInsideRectangle._.projectsOnAB =\n          0 <= this.arePointsInsideRectangle._.scalarAbAp &&\n          this.arePointsInsideRectangle._.scalarAbAp <=\n            this.arePointsInsideRectangle._.scalarAbAb;\n        this.arePointsInsideRectangle._.projectsOnBC =\n          0 <= this.arePointsInsideRectangle._.scalarBcBp &&\n          this.arePointsInsideRectangle._.scalarBcBp <=\n            this.arePointsInsideRectangle._.scalarBcBc;\n\n        if (\n          !(\n            this.arePointsInsideRectangle._.projectsOnAB &&\n            this.arePointsInsideRectangle._.projectsOnBC\n          )\n        ) {\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns an object representing the vector between points a and b.\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getVector: function (a, b) {\n      return {x: b.x - a.x, y: b.y - a.y};\n    },\n\n    /**\n     * Returns the scalar product of two vectors\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getScalarProduct: function (a, b) {\n      return a.x * b.x + a.y * b.y;\n    },\n\n    /**\n     * Returns the magnitude of a vector_redrawCropperElements\n     * .\n     *\n     * @param {Object} vector\n     */\n    _getVectorMagnitude: function (vector) {\n      return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n    },\n\n    /**\n     * Returns the angle between two vectors in degrees with two decimal points\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getAngleBetweenVectors: function (a, b) {\n      return (\n        Math.round(\n          ((Math.acos(\n            Math.min(\n              1,\n              this._getScalarProduct(a, b) /\n                (this._getVectorMagnitude(a) * this._getVectorMagnitude(b))\n            )\n          ) *\n            180) /\n            Math.PI) *\n            100\n        ) / 100\n      );\n    },\n\n    /**\n     * Return the rectangle edge crossed by an imaginary line drawn from editor center to a vertex\n     *\n     * @param {Object} rectangle\n     * @param {Object} vertex\n     *\n     * @returns {*}\n     */\n    _getEdgeCrossed: function (rectangle, vertex) {\n      // Determine over which edge the vertex is\n      var edgePoints = [\n        [rectangle.a, rectangle.b],\n        [rectangle.b, rectangle.c],\n        [rectangle.c, rectangle.d],\n        [rectangle.d, rectangle.a],\n      ];\n\n      var centerPoint = {x: this.editorWidth / 2, y: this.editorHeight / 2};\n      var smallestDiff = 180;\n      var edgeCrossed = null;\n\n      // Test each edge\n      for (var edgeIndex = 0; edgeIndex < edgePoints.length; edgeIndex++) {\n        var edge = edgePoints[edgeIndex];\n        var toCenter = this._getVector(edge[0], centerPoint);\n        var edgeVector = this._getVector(edge[0], edge[1]);\n        var toVertex = this._getVector(edge[0], vertex);\n\n        // If the angle between toCenter/toVertex is the sum of\n        // angles between edgeVector/toCenter and edgeVector/toVertex, it means that\n        // the edgeVector is between the other two meaning that this is the offending vertex.\n        // To avoid the rounding errors, we'll take the closest match\n        var diff = Math.abs(\n          this._getAngleBetweenVectors(toCenter, toVertex) -\n            (this._getAngleBetweenVectors(toCenter, edgeVector) +\n              this._getAngleBetweenVectors(edgeVector, toVertex))\n        );\n\n        if (diff < smallestDiff) {\n          smallestDiff = diff;\n          edgeCrossed = edge;\n        }\n      }\n\n      return edgeCrossed;\n    },\n\n    /**\n     * Get the image bounding box by image scaled dimensions, taking ingo account the straightening angle.\n     *\n     * @param {Object} dimensions\n     */\n    _getImageBoundingBox: function (dimensions) {\n      var box = {};\n\n      var angleInRadians =\n        Math.abs(this.imageStraightenAngle) * (Math.PI / 180);\n\n      var proportion = dimensions.height / dimensions.width;\n      box.height =\n        dimensions.width *\n        (Math.sin(angleInRadians) + Math.cos(angleInRadians) * proportion);\n      box.width =\n        dimensions.width *\n        (Math.cos(angleInRadians) + Math.sin(angleInRadians) * proportion);\n\n      if (this.hasOrientationChanged()) {\n        var temp = box.width;\n        box.width = box.height;\n        box.height = temp;\n      }\n\n      return box;\n    },\n  },\n  {\n    defaults: {\n      animationDuration: 100,\n      allowSavingAsNew: true,\n      onSave: $.noop,\n      allowDegreeFractions: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset index class\n */\nCraft.AssetIndex = Craft.BaseElementIndex.extend(\n  {\n    $includeSubfoldersContainer: null,\n    $includeSubfoldersCheckbox: null,\n    showingIncludeSubfoldersCheckbox: false,\n\n    $uploadButton: null,\n    $uploadInput: null,\n    $progressBar: null,\n\n    uploader: null,\n    promptHandler: null,\n    progressBar: null,\n    currentFolderId: null,\n\n    $listedFolders: null,\n    itemDrag: null,\n\n    _uploadTotalFiles: 0,\n    _uploadFileProgress: {},\n    _currentUploaderSettings: {},\n    _includeSubfolders: null,\n\n    init: function (elementType, $container, settings) {\n      settings = Object.assign({}, Craft.AssetIndex.defaults, settings);\n      this.setSettings(settings, Craft.BaseElementIndex.defaults);\n\n      if (this.settings.context === 'index') {\n        // remember whether includeSubfolders was set in the query string,\n        // before the URL is updated\n        const queryParams = Craft.getQueryParams();\n        if (queryParams.includeSubfolders !== undefined) {\n          this._includeSubfolders = !!parseInt(queryParams.includeSubfolders);\n        }\n      }\n\n      this.base(elementType, $container, this.settings);\n\n      if (this.settings.context === 'index') {\n        this.itemDrag = new Garnish.DragDrop({\n          activeDropTargetClass: 'sel',\n          minMouseDist: 10,\n          hideDraggee: false,\n          moveHelperToCursor: true,\n          activeDropTargetClass: 'active-drop-target',\n          handle: (item) => $(item).closest('tr,li'),\n          filter: () => {\n            const $container = this.itemDrag.$targetItem.closest('tr,li');\n            this.view.elementSelect.selectItem($container);\n            return this._findDraggableItems(this.view.getSelectedElements());\n          },\n          helper: ($item, index) =>\n            $('<div class=\"offset-drag-helper\"/>')\n              .append($item)\n              .css({\n                opacity: Math.max(0.9 - 0.05 * index, 0),\n                width: '',\n                height: '',\n              }),\n          dropTargets: () => {\n            // volume sources\n            let $dropTargets = $(\n              this.$visibleSources\n                .toArray()\n                .filter(\n                  (source) =>\n                    Garnish.hasAttr(source, 'data-folder-id') &&\n                    Garnish.hasAttr(source, 'data-can-move-peer-files-to')\n                )\n            );\n            if (this.sourcePath.length <= 1) {\n              // exclude the current source since we're already at the root of it\n              $dropTargets = $dropTargets.not(this.$source);\n            } else {\n              // parent folders in the source path\n              for (let i = 0; i < this.sourcePath.length - 1; i++) {\n                const step = this.sourcePath[i];\n                if (step.folderId) {\n                  $dropTargets = $dropTargets.add(step.$btn);\n                }\n              }\n            }\n            // folders in the elements listing\n            if (this.$listedFolders) {\n              $dropTargets = $dropTargets\n                .add(\n                  this.$listedFolders\n                    .filter('[data-folder-id]')\n                    .closest('tr,li')\n                )\n                .not(this.view.getSelectedElements());\n            }\n            return $dropTargets;\n          },\n          onDragStart: () => {\n            Garnish.$bod.addClass('dragging');\n            this.itemDrag.$draggee.closest('tr,li').addClass('draggee');\n          },\n          onDragStop: () => {\n            Garnish.$bod.removeClass('dragging');\n\n            const $draggee = this.itemDrag.$draggee;\n            const targetFolderId = this._targetFolderId(\n              this.itemDrag.$activeDropTarget\n            );\n\n            if (!targetFolderId) {\n              $draggee.closest('tr,li').removeClass('draggee');\n              this.itemDrag.returnHelpersToDraggees();\n              return;\n            }\n\n            this.itemDrag.fadeOutHelpers();\n\n            const $folders = $draggee.filter('[data-is-folder]');\n            const $assets = $draggee.not($folders);\n            const folderIds = $folders.toArray().map((item) => {\n              return parseInt($(item).data('folder-id'));\n            });\n            const assetIds = $assets.toArray().map((item) => {\n              return parseInt($(item).data('id'));\n            });\n\n            const mover = new Craft.AssetMover();\n            mover\n              .moveFolders(folderIds, targetFolderId)\n              .then((totalFoldersMoved) => {\n                mover\n                  .moveAssets(assetIds, targetFolderId)\n                  .then((totalAssetsMoved) => {\n                    const totalItemsMoved =\n                      totalFoldersMoved + totalAssetsMoved;\n                    if (totalItemsMoved) {\n                      Craft.cp.displayNotice(\n                        Craft.t(\n                          'app',\n                          '{totalItems, plural, =1{Item} other{Items}} moved.',\n                          {\n                            totalItems: totalItemsMoved,\n                          }\n                        )\n                      );\n                      Craft.elementIndex.updateElements(true);\n                    } else {\n                      $draggee.closest('tr,li').removeClass('draggee');\n                    }\n                  });\n              });\n          },\n        });\n\n        this.addListener(Garnish.$win, 'resize,scroll', '_positionProgressBar');\n      } else {\n        this.addListener(this.$main, 'scroll', '_positionProgressBar');\n\n        if (this.settings.modal) {\n          this.settings.modal.on(\n            'updateSizeAndPosition',\n            this._positionProgressBar.bind(this)\n          );\n        }\n      }\n    },\n\n    _findDraggableItems: function ($items) {\n      return $(\n        $items\n          .toArray()\n          .map((item) => $(item).find('.element:first')[0])\n          .filter((item) => item && Garnish.hasAttr(item, 'data-movable'))\n      );\n    },\n\n    _targetFolderId: function ($dropTarget) {\n      if (!$dropTarget || !$dropTarget.length) {\n        return false;\n      }\n\n      // source?\n      if ($dropTarget.is(this.$visibleSources)) {\n        return $dropTarget.data('folder-id');\n      }\n\n      // source path step?\n      for (let i = 0; i < this.sourcePath.length - 1; i++) {\n        const step = this.sourcePath[i];\n        if ($dropTarget.is(step.$btn)) {\n          return step.folderId;\n        }\n      }\n\n      // folder in the element listing?\n      return $dropTarget.find('.element:first').data('folder-id') || false;\n    },\n\n    afterInit: function () {\n      if (!this.settings.foldersOnly) {\n        this.initForFiles();\n      }\n\n      this.base();\n    },\n\n    /**\n     * Initialize the uploader.\n     *\n     * @private\n     */\n    initForFiles: function () {\n      this.promptHandler = new Craft.PromptHandler();\n      this.progressBar = new Craft.ProgressBar(this.$main, false);\n    },\n\n    createUploadInputs: function () {\n      this.$uploadButton?.remove();\n      this.$uploadInput?.remove();\n\n      this.$uploadButton = $('<button/>', {\n        type: 'button',\n        class: 'btn submit',\n        'data-icon': 'upload',\n        style: 'position: relative; overflow: hidden;',\n        'aria-label': Craft.t('app', 'Upload files'),\n        text: Craft.t('app', 'Upload files'),\n      });\n      this.addButton(this.$uploadButton);\n\n      this.$uploadInput = $(\n        '<input type=\"file\" multiple=\"multiple\" name=\"assets-upload\" />'\n      )\n        .hide()\n        .insertBefore(this.$uploadButton);\n\n      this.$uploadButton.on('click', () => {\n        if (this.$uploadButton.hasClass('disabled')) {\n          return;\n        }\n        if (!this.isIndexBusy) {\n          this.$uploadButton\n            .parent()\n            .find('input[name=assets-upload]')\n            .trigger('click');\n        }\n      });\n    },\n\n    onSelectSource: function () {\n      if (!this.settings.foldersOnly) {\n        this.currentFolderId =\n          this.currentFolderId || this.$source.data('folder-id');\n        const fsType = this.$source.data('fs-type');\n\n        this.createUploadInputs();\n\n        if (\n          this.currentFolderId &&\n          Garnish.hasAttr(this.$source, 'data-can-upload')\n        ) {\n          this.uploader?.destroy();\n          this.$uploadButton.removeClass('disabled');\n\n          const options = {\n            fileInput: this.$uploadInput,\n            dropZone: this.$container,\n            events: {\n              fileuploadstart: this._onUploadStart.bind(this),\n              fileuploadprogressall: this._onUploadProgress.bind(this),\n              fileuploaddone: this._onUploadSuccess.bind(this),\n              fileuploadalways: this._onUploadAlways.bind(this),\n              fileuploadfail: this._onUploadFailure.bind(this),\n            },\n          };\n\n          if (this.settings?.criteria?.kind) {\n            options.allowedKinds = this.settings.criteria.kind;\n          }\n\n          this._currentUploaderSettings = options;\n\n          this.uploader = Craft.createUploader(\n            fsType,\n            this.$uploadButton,\n            options\n          );\n          this.uploader.setParams({\n            folderId: this.currentFolderId,\n          });\n        } else {\n          this.$uploadButton.addClass('disabled');\n        }\n      }\n\n      this.base();\n    },\n\n    onSourcePathChange: function () {\n      const currentFolder = this.sourcePath.length\n        ? this.sourcePath[this.sourcePath.length - 1]\n        : null;\n      this.currentFolderId = currentFolder?.folderId;\n\n      if (!this.settings.foldersOnly && this.currentFolderId) {\n        this.uploader?.setParams({\n          folderId: this.currentFolderId,\n        });\n\n        // will the user be allowed to move items in this folder?\n        const canMoveSubItems =\n          this.context === 'index' && !!currentFolder.canMoveSubItems;\n        this.settings.selectable = this.settings.selectable || canMoveSubItems;\n        this.settings.multiSelect =\n          this.settings.multiSelect || canMoveSubItems;\n      }\n\n      this.base();\n    },\n\n    startSearching: function () {\n      // Does this source have subfolders?\n      if (\n        !this.settings.hideSidebar &&\n        this.sourcePath.length &&\n        this.sourcePath[this.sourcePath.length - 1].hasChildren\n      ) {\n        if (this.$includeSubfoldersContainer === null) {\n          var id =\n            'includeSubfolders-' + Math.floor(Math.random() * 1000000000);\n\n          this.$includeSubfoldersContainer = $(\n            '<div style=\"margin-bottom: -25px; opacity: 0;\"/>'\n          ).insertAfter(this.$search);\n          var $subContainer = $('<div style=\"padding-top: 5px;\"/>').appendTo(\n            this.$includeSubfoldersContainer\n          );\n          this.$includeSubfoldersCheckbox = $(\n            '<input type=\"checkbox\" id=\"' + id + '\" class=\"checkbox\"/>'\n          ).appendTo($subContainer);\n          $('<label class=\"light smalltext\" for=\"' + id + '\"/>')\n            .text(' ' + Craft.t('app', 'Search in subfolders'))\n            .appendTo($subContainer);\n\n          this.addListener(\n            this.$includeSubfoldersCheckbox,\n            'change',\n            function () {\n              this.setSelecetedSourceState(\n                'includeSubfolders',\n                this.$includeSubfoldersCheckbox.prop('checked')\n              );\n              this.updateElements();\n            }\n          );\n        } else {\n          this.$includeSubfoldersContainer\n            .velocity('stop')\n            .removeClass('hidden');\n        }\n\n        let checked;\n        if (this._includeSubfolders !== null) {\n          checked = this._includeSubfolders;\n          this._includeSubfolders = null;\n        } else {\n          checked = this.getSelectedSourceState('includeSubfolders', false);\n        }\n        this.$includeSubfoldersCheckbox.prop('checked', checked);\n\n        this.$includeSubfoldersContainer.velocity(\n          {\n            marginBottom: 0,\n            opacity: 1,\n          },\n          'fast'\n        );\n\n        this.showingIncludeSubfoldersCheckbox = true;\n      }\n\n      this.base();\n    },\n\n    stopSearching: function () {\n      if (this.showingIncludeSubfoldersCheckbox) {\n        this.$includeSubfoldersContainer.velocity('stop');\n\n        this.$includeSubfoldersContainer.velocity(\n          {\n            marginBottom: -25,\n            opacity: 0,\n          },\n          {\n            duration: 'fast',\n            complete: () => {\n              this.$includeSubfoldersContainer.addClass('hidden');\n            },\n          }\n        );\n\n        this.showingIncludeSubfoldersCheckbox = false;\n      }\n\n      this.base();\n    },\n\n    getViewSettings: function () {\n      const settings = {};\n\n      if (this.settings.context === 'index') {\n        // Allow folders to be selected\n        settings.canSelectElement = () => true;\n      }\n\n      return settings;\n    },\n\n    getViewParams: function () {\n      const data = Object.assign(this.base(), {\n        showFolders: this.settings.showFolders && !this.trashed,\n        foldersOnly: this.settings.foldersOnly,\n      });\n\n      if (\n        this.showingIncludeSubfoldersCheckbox &&\n        this.$includeSubfoldersCheckbox.prop('checked')\n      ) {\n        data.criteria.includeSubfolders = true;\n      }\n\n      return data;\n    },\n\n    /**\n     * React on upload submit.\n     *\n     * @private\n     */\n    _onUploadStart: function () {\n      this.setIndexBusy();\n\n      // Initial values\n      this._positionProgressBar();\n      this.progressBar.resetProgressBar();\n      this.progressBar.showProgressBar();\n\n      this.promptHandler.resetPrompts();\n    },\n\n    /**\n     * Update uploaded byte count.\n     */\n    _onUploadProgress: function (event, data = null) {\n      data = event instanceof CustomEvent ? event.detail : data;\n\n      var progress = parseInt(Math.min(data.loaded / data.total, 1) * 100, 10);\n      this.progressBar.setProgressPercentage(progress);\n    },\n\n    /**\n     * On upload success.\n     *\n     * @param {Object} event\n     * @param {Object} data\n     * @private\n     */\n    _onUploadSuccess: function (event, data = null) {\n      const result = event instanceof CustomEvent ? event.detail : data.result;\n\n      // Add the uploaded file to the selected ones, if appropriate\n      this.selectElementAfterUpdate(result.assetId);\n\n      // If there is a prompt, add it to the queue\n      if (result.conflict) {\n        result.prompt = {\n          message: Craft.t('app', result.conflict, {file: result.filename}),\n          choices: [\n            {value: 'keepBoth', title: Craft.t('app', 'Keep both')},\n            {value: 'replace', title: Craft.t('app', 'Replace it')},\n          ],\n          modalSettings: {\n            hideOnEsc: false,\n            hideOnShadeClick: false,\n          },\n        };\n\n        this.promptHandler.addPrompt(result);\n      }\n\n      Craft.cp.runQueue();\n    },\n\n    /**\n     * On upload complete no matter what (success, fail, or abort).\n     */\n    _onUploadAlways: function () {\n      if (this.uploader.isLastUpload()) {\n        this.progressBar.hideProgressBar();\n        this.setIndexAvailable();\n\n        if (this.promptHandler.getPromptCount()) {\n          this.promptHandler.showBatchPrompts(this._uploadFollowup.bind(this));\n        } else {\n          this._updateAfterUpload();\n        }\n      }\n    },\n\n    /**\n     * On Upload Failure.\n     */\n    _onUploadFailure: function (event, data = null) {\n      const response =\n        event instanceof CustomEvent ? event.detail : data?.jqXHR?.responseJSON;\n\n      let {message, filename, errors} = response || {};\n      filename = filename || data?.files?.[0].name;\n      let errorMessages = errors ? Object.values(errors).flat() : [];\n\n      if (!message) {\n        if (errorMessages.length) {\n          message = errorMessages.join('\\n');\n        } else if (filename) {\n          message = Craft.t('app', 'Upload failed for “{filename}”.', {\n            filename,\n          });\n        } else {\n          message = Craft.t('app', 'Upload failed.');\n        }\n      }\n\n      Craft.cp.displayError(message);\n    },\n\n    /**\n     * Update the elements after an upload, setting sort to dateModified descending, if not using index.\n     *\n     * @private\n     */\n    _updateAfterUpload: function () {\n      if (this.settings.context !== 'index') {\n        this.clearSearch();\n        this.setSelectedSortAttribute('dateCreated', 'desc');\n      }\n      this.updateElements();\n    },\n\n    /**\n     * Follow up to an upload that triggered at least one conflict resolution prompt.\n     *\n     * @param {Object} returnData\n     * @private\n     */\n    _uploadFollowup: function (returnData) {\n      this.setIndexBusy();\n      this.progressBar.resetProgressBar();\n\n      this.promptHandler.resetPrompts();\n\n      var finalCallback = () => {\n        this.progressBar.hideProgressBar();\n        this.setIndexAvailable();\n        this._updateAfterUpload();\n      };\n\n      this.progressBar.setItemCount(returnData.length);\n\n      var doFollowup = (parameterArray, parameterIndex, callback) => {\n        var data = {};\n        var action = null;\n        const {replaceAction, deleteAction} = this.uploader.settings;\n\n        const followupAlways = () => {\n          parameterIndex++;\n          this.progressBar.incrementProcessedItemCount(1);\n          this.progressBar.updateProgressBar();\n\n          if (parameterIndex === parameterArray.length) {\n            callback();\n          } else {\n            doFollowup(parameterArray, parameterIndex, callback);\n          }\n        };\n        const followupSuccess = (data) => {\n          if (data.assetId) {\n            this.selectElementAfterUpdate(data.assetId);\n          }\n\n          followupAlways();\n        };\n        const followupFailure = (data) => {\n          Craft.cp.displayError(data.message);\n          followupAlways();\n        };\n\n        if (parameterArray[parameterIndex].choice === 'replace') {\n          action = replaceAction;\n          data.sourceAssetId = parameterArray[parameterIndex].assetId;\n\n          if (parameterArray[parameterIndex].conflictingAssetId) {\n            data.assetId = parameterArray[parameterIndex].conflictingAssetId;\n          } else {\n            data.targetFilename = parameterArray[parameterIndex].filename;\n          }\n        } else if (parameterArray[parameterIndex].choice === 'cancel') {\n          action = deleteAction;\n          data.assetId = parameterArray[parameterIndex].assetId;\n        }\n\n        if (!action) {\n          // We don't really need to do another request, so let's pretend that already happened\n          followupSuccess({\n            assetId: parameterArray[parameterIndex].assetId,\n          });\n        } else {\n          Craft.sendActionRequest('POST', action, {data})\n            .then((response) => followupSuccess(response.data))\n            .catch(({response}) => followupFailure(response.data));\n        }\n      };\n\n      this.progressBar.showProgressBar();\n      doFollowup(returnData, 0, finalCallback);\n    },\n\n    /**\n     * Perform actions after updating elements\n     * @private\n     */\n    onUpdateElements: function () {\n      this._onUpdateElements(false, this.view.getAllElements());\n      this.view.on('appendElements', (ev) => {\n        this._onUpdateElements(true, ev.newElements);\n      });\n\n      this.base();\n    },\n\n    /**\n     * Do the after-update initializations\n     * @private\n     */\n    _onUpdateElements: function (append, $newElements) {\n      this.removeListener(this.$elements, 'keydown');\n      this.addListener(this.$elements, 'keydown', this._onKeyDown.bind(this));\n      if (this.view.elementSelect) {\n        this.view.elementSelect.on(\n          'focusItem',\n          this._onElementFocus.bind(this)\n        );\n      }\n\n      this.$listedFolders = $newElements.find(\n        '.element[data-is-folder][data-folder-name]'\n      );\n      for (let i = 0; i < this.$listedFolders.length; i++) {\n        const $folder = this.$listedFolders.eq(i);\n        const $label = $folder.find('.label');\n        const $link = $label.find('.label-link');\n        const folderId = parseInt($folder.data('folder-id'));\n        const folderName = $folder.data('folder-name');\n        const label = Craft.t('app', '{name} folder', {\n          name: folderName,\n        });\n        if (this.settings.disabledFolderIds.includes(folderId)) {\n          $label.attr('aria-label', label);\n          $newElements.has($folder).addClass('disabled');\n          continue;\n        }\n        const sourcePath = $folder.data('source-path');\n        if (sourcePath) {\n          $link.attr({\n            href: Craft.getCpUrl(sourcePath[sourcePath.length - 1].uri),\n            role: 'button',\n            'aria-label': label,\n          });\n          this.addListener($link, 'activate', (ev) => {\n            this.sourcePath = sourcePath;\n            this.clearSearch(false);\n            this.updateElements().then(() => {\n              const firstFocusableEl = this.$elements.find(\n                ':focusable:not(.selectallcontainer)'\n              )[0];\n              if (firstFocusableEl) {\n                firstFocusableEl.focus();\n              }\n            });\n          });\n        }\n      }\n\n      if (this.itemDrag) {\n        const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n        const canMoveSubItems = !!(\n          currentFolder &&\n          currentFolder.folderId &&\n          currentFolder.canMoveSubItems\n        );\n        if (!canMoveSubItems || !append) {\n          this.itemDrag.removeAllItems();\n        }\n        if (canMoveSubItems) {\n          this.itemDrag.addItems(this._findDraggableItems($newElements));\n        }\n      }\n    },\n\n    /**\n     * Handle a keypress\n     * @private\n     */\n    _onKeyDown: function (ev) {\n      if (ev.keyCode === Garnish.SPACE_KEY && ev.shiftKey) {\n        if (Craft.PreviewFileModal.openInstance) {\n          Craft.PreviewFileModal.openInstance.selfDestruct();\n        } else if (this.view.elementSelect) {\n          var $element = this.view.elementSelect.$focusedItem.find('.element');\n\n          if ($element.length) {\n            this._loadPreview($element);\n          }\n        }\n\n        ev.stopPropagation();\n        return false;\n      }\n    },\n\n    /**\n     * Handle element being focused\n     * @private\n     */\n    _onElementFocus: function (ev) {\n      var $element = $(ev.item).find('.element');\n\n      if (Craft.PreviewFileModal.openInstance && $element.length) {\n        this._loadPreview($element);\n      }\n    },\n\n    /**\n     * Load the preview for an asset\n     * @private\n     */\n    _loadPreview: function ($element) {\n      var settings = {};\n\n      if ($element.data('image-width')) {\n        settings.startingWidth = $element.data('image-width');\n        settings.startingHeight = $element.data('image-height');\n      }\n\n      new Craft.PreviewFileModal(\n        $element.data('id'),\n        this.view.elementSelect,\n        settings\n      );\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathLabel: function () {\n      return Craft.t('app', 'Volume path');\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathActionLabel: function () {\n      return Craft.t('app', 'Folder actions');\n    },\n\n    getSourcePathActions: function () {\n      const actions = [];\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n\n      if (currentFolder.canCreate) {\n        actions.push({\n          label: Craft.t('app', 'New subfolder'),\n          onSelect: () => {\n            this._createSubfolder();\n          },\n        });\n      }\n\n      if (this.settings.context === 'index') {\n        if (currentFolder.canRename) {\n          actions.push({\n            label: Craft.t('app', 'Rename folder'),\n            onSelect: () => {\n              this._renameFolder();\n            },\n          });\n\n          if (\n            currentFolder.canMove &&\n            this.getMoveTargetSourceKeys(true).length\n          ) {\n            actions.push({\n              label: Craft.t('app', 'Move folder'),\n              onSelect: () => {\n                this._moveFolder();\n              },\n            });\n          }\n\n          if (currentFolder.canDelete) {\n            actions.push({\n              label: Craft.t('app', 'Delete folder'),\n              destructive: true,\n              onSelect: () => {\n                this.deleteCurrentFolder();\n              },\n            });\n          }\n        }\n      }\n\n      return actions;\n    },\n\n    _createSubfolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const subfolderName = prompt(\n        Craft.t('app', 'Enter the name of the folder')\n      );\n\n      if (subfolderName) {\n        const data = {\n          parentId: currentFolder.folderId,\n          folderName: subfolderName,\n        };\n\n        this.setIndexBusy();\n\n        Craft.sendActionRequest('POST', 'assets/create-folder', {data})\n          .then((response) => {\n            this.setIndexAvailable();\n            Craft.cp.displayNotice(Craft.t('app', 'Folder created.'));\n            this.updateElements(true);\n          })\n          .catch(({response}) => {\n            this.setIndexAvailable();\n            Craft.cp.displayError(response.data.message);\n          });\n      }\n    },\n\n    deleteCurrentFolder: async function () {\n      if (\n        await this.deleteFolder(this.sourcePath[this.sourcePath.length - 1])\n      ) {\n        this.sourcePath = this.sourcePath.slice(0, this.sourcePath.length - 1);\n        this.updateElements();\n      }\n    },\n\n    deleteFolder: async function (folder) {\n      if (\n        !confirm(\n          Craft.t('app', 'Really delete folder “{folder}”?', {\n            folder: folder.label,\n          })\n        )\n      ) {\n        return false;\n      }\n\n      this.setIndexBusy();\n\n      try {\n        await Craft.sendActionRequest('POST', 'assets/delete-folder', {\n          data: {\n            folderId: folder.folderId,\n          },\n        });\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n        return false;\n      } finally {\n        this.setIndexAvailable();\n      }\n\n      Craft.cp.displayNotice(Craft.t('app', 'Folder deleted.'));\n      return true;\n    },\n\n    /**\n     * Rename\n     */\n    _renameFolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const newName = prompt(\n        Craft.t('app', 'Rename folder'),\n        currentFolder.label\n      );\n\n      if (!newName || newName === currentFolder.label) {\n        return;\n      }\n\n      this.setIndexBusy();\n\n      Craft.sendActionRequest('POST', 'assets/rename-folder', {\n        data: {\n          folderId: currentFolder.folderId,\n          newName: newName,\n        },\n      })\n        .then((response) => {\n          Craft.cp.displayNotice(Craft.t('app', 'Folder renamed.'));\n          const sourcePath = this.sourcePath.slice();\n          sourcePath[sourcePath.length - 1].label = response.data.newName;\n          sourcePath[sourcePath.length - 1].uri =\n            sourcePath[sourcePath.length - 2].uri + `/${response.data.newName}`;\n          this.sourcePath = sourcePath;\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(response.data.message);\n        })\n        .finally(() => {\n          this.setIndexAvailable();\n        });\n    },\n\n    getMoveTargetSourceKeys: function (peerFiles) {\n      const attr = peerFiles\n        ? 'data-can-move-peer-files-to'\n        : 'data-can-move-to';\n      return this.$sources\n        .toArray()\n        .filter((source) => {\n          const volumeHandle = $(source).data('volume-handle');\n          return (\n            volumeHandle &&\n            volumeHandle !== 'temp' &&\n            Garnish.hasAttr(source, attr)\n          );\n        })\n        .map((source) => $(source).data('key'));\n    },\n\n    _moveFolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const parentFolder = this.sourcePath[this.sourcePath.length - 2];\n\n      const disabledFolderIds = [currentFolder.folderId];\n      if (parentFolder) {\n        disabledFolderIds.push(parentFolder.folderId);\n      }\n\n      new Craft.VolumeFolderSelectorModal({\n        sources: this.getMoveTargetSourceKeys(true),\n        showTitle: true,\n        modalTitle: Craft.t('app', 'Move to'),\n        selectBtnLabel: Craft.t('app', 'Move'),\n        disabledFolderIds: disabledFolderIds,\n        indexSettings: {\n          defaultSource: this.sourceKey,\n          defaultSourcePath: this.sourcePath.slice(\n            0,\n            this.sourcePath.length - 1\n          ),\n        },\n        onSelect: ([targetFolder]) => {\n          this.$sourcePathActionsBtn.focus();\n          const mover = new Craft.AssetMover();\n          mover\n            .moveFolders([currentFolder.folderId], targetFolder.folderId)\n            .then((totalFoldersMoved) => {\n              if (totalFoldersMoved) {\n                Craft.cp.displayNotice(\n                  Craft.t(\n                    'app',\n                    '{totalItems, plural, =1{Item} other{Items}} moved.',\n                    {\n                      totalItems: totalFoldersMoved,\n                    }\n                  )\n                );\n                this.sourcePath = this.sourcePath.slice(\n                  0,\n                  this.sourcePath.length - 1\n                );\n                this.clearSearch(false);\n                this.updateElements();\n              }\n            });\n        },\n      });\n    },\n\n    _positionProgressBar: function () {\n      if (!this.progressBar) {\n        this.progressBar = new Craft.ProgressBar(this.$main, true);\n      }\n\n      var $container = $(),\n        scrollTop = 0,\n        offset = 0;\n\n      if (this.settings.context === 'index') {\n        $container = this.progressBar.$progressBar.closest('#content');\n        scrollTop = Garnish.$win.scrollTop();\n      } else {\n        $container = this.progressBar.$progressBar.closest('.main');\n        scrollTop = this.$main.scrollTop();\n      }\n\n      var containerTop = $container.offset().top;\n      var diff = scrollTop - containerTop;\n      var windowHeight = Garnish.$win.height();\n\n      if ($container.height() > windowHeight) {\n        offset = windowHeight / 2 - 6 + diff;\n      } else {\n        offset = $container.height() / 2 - 6;\n      }\n\n      if (this.settings.context !== 'index') {\n        offset = scrollTop + ($container.height() / 2 - 6);\n      }\n\n      this.progressBar.$progressBar.css({\n        top: offset,\n      });\n    },\n  },\n  {\n    defaults: {\n      showFolders: true,\n      foldersOnly: false,\n      disabledFolderIds: [],\n    },\n  }\n);\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\Asset', Craft.AssetIndex);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset mover class\n */\nCraft.AssetMover = Garnish.Base.extend({\n  moveAssets: function (assetIds, targetFolderId) {\n    const requests = assetIds.map((assetId) => {\n      return {\n        for: 'asset',\n        action: 'assets/move-asset',\n        params: {\n          assetId,\n          folderId: targetFolderId,\n        },\n      };\n    });\n    return this._batchMoveRequests(requests, {\n      conflictChoices: [\n        {\n          value: 'keepBoth',\n          title: Craft.t('app', 'Keep both'),\n        },\n        {\n          value: 'replace',\n          title: Craft.t('app', 'Replace it'),\n        },\n      ],\n      handleConflictChoice: function (prompt) {\n        const params = {\n          folderId: prompt.request.params.folderId,\n          assetId: prompt.assetId,\n        };\n        switch (prompt.choice) {\n          case 'replace':\n            params.force = true;\n            break;\n          case 'keepBoth':\n            params.filename = prompt.suggestedFilename;\n            break;\n        }\n        return {\n          action: 'assets/move-asset',\n          params,\n        };\n      },\n    });\n  },\n\n  moveFolders: function (folderIds, targetFolderId) {\n    return new Promise((resolve, reject) => {\n      const transferList = [];\n      const folderIdsToDelete = [];\n\n      const requests = folderIds.map((folderId) => {\n        return {\n          for: 'folder',\n          action: 'assets/move-folder',\n          params: {\n            folderId,\n            parentId: targetFolderId,\n          },\n          onSuccess: (response) => {\n            if (response.transferList.length) {\n              transferList.push(...response.transferList);\n            }\n            folderIdsToDelete.push(folderId);\n          },\n        };\n      });\n\n      this._batchMoveRequests(requests, {\n        conflictChoices: [\n          {\n            value: 'replace',\n            title: Craft.t(\n              'app',\n              'Replace the folder (all existing files will be deleted)'\n            ),\n          },\n          {\n            value: 'merge',\n            title: Craft.t(\n              'app',\n              'Merge the folder (any conflicting files will be replaced)'\n            ),\n          },\n        ],\n        handleConflictChoice: function (prompt) {\n          const params = {\n            folderId: prompt.folderId,\n            parentId: prompt.parentId,\n          };\n          switch (prompt.choice) {\n            case 'replace':\n              params.force = true;\n              break;\n            case 'merge':\n              params.merge = true;\n              break;\n          }\n          return {\n            action: 'assets/move-folder',\n            params,\n          };\n        },\n      })\n        .then((totalMoved) => {\n          this._processTransferList(transferList).then(() => {\n            this._deleteFolders(folderIdsToDelete).then(() => {\n              resolve(totalMoved);\n            });\n          });\n        })\n        .catch(reject);\n    });\n  },\n\n  _processTransferList: function (transferList) {\n    return this._batchRequests(\n      transferList.map((params) => {\n        return {\n          action: 'assets/move-asset',\n          params,\n        };\n      })\n    );\n  },\n\n  _deleteFolders: function (folderIds) {\n    return this._batchRequests(\n      folderIds.map((folderId) => {\n        return {\n          action: 'assets/delete-folder',\n          params: {folderId},\n        };\n      })\n    );\n  },\n\n  _batchMoveRequests: function (requests, settings) {\n    return new Promise((resolve) => {\n      let totalMoved = 0;\n\n      this._batchRequests(requests).then((responses) => {\n        Craft.elementIndex.promptHandler.resetPrompts();\n\n        // Loop through all the responses\n        for (const response of responses) {\n          if (response.success) {\n            totalMoved++;\n          }\n\n          // Push prompt into prompt array\n          if (response.conflict) {\n            Craft.elementIndex.promptHandler.addPrompt(\n              Object.assign({}, response, {\n                prompt: {\n                  message: response.conflict,\n                  choices: settings.conflictChoices,\n                },\n              })\n            );\n          }\n\n          if (response.error) {\n            Craft.cp.displayError(response.error);\n          }\n        }\n\n        if (!Craft.elementIndex.promptHandler.getPromptCount()) {\n          resolve(totalMoved);\n          return;\n        }\n\n        Craft.elementIndex.promptHandler.showBatchPrompts((prompts) => {\n          Craft.elementIndex.promptHandler.resetPrompts();\n          const nextRequests = [];\n          for (const prompt of prompts) {\n            if (prompt.choice === 'cancel') {\n              continue;\n            }\n            if (settings.handleConflictChoice) {\n              const nextRequest = settings.handleConflictChoice(prompt);\n              if (prompt.request && prompt.request.onSuccess) {\n                nextRequest.onSuccess = prompt.request.onSuccess;\n              }\n              nextRequests.push(nextRequest);\n            }\n          }\n          this._batchMoveRequests(nextRequests, settings).then(\n            (nextTotalMoved) => {\n              resolve(totalMoved + nextTotalMoved);\n            }\n          );\n        });\n      });\n    });\n  },\n\n  _batchRequests: function (requests) {\n    return new Promise((resolve) => {\n      if (!requests.length) {\n        resolve([]);\n        return;\n      }\n\n      Craft.elementIndex.setIndexBusy();\n      Craft.elementIndex._positionProgressBar();\n      Craft.elementIndex.progressBar.resetProgressBar();\n      Craft.elementIndex.progressBar.setItemCount(requests.length);\n      Craft.elementIndex.progressBar.showProgressBar();\n\n      const responses = [];\n      let activeRequests = requests.length;\n\n      for (const request of requests) {\n        Craft.sendActionRequest('POST', request.action, {\n          data: request.params,\n        })\n          .then((response) => {\n            responses.push(\n              Object.assign(\n                {\n                  success: true,\n                },\n                response.data,\n                {request}\n              )\n            );\n            if (request.onSuccess) {\n              request.onSuccess(response.data);\n            }\n          })\n          .catch((failure) => {\n            if (failure.response && failure.response.data) {\n              responses.push(\n                Object.assign(\n                  {\n                    success: false,\n                  },\n                  failure.response.data,\n                  {request}\n                )\n              );\n            }\n          })\n          .finally(() => {\n            // Was that the last one?\n            if (--activeRequests === 0) {\n              Craft.elementIndex.setIndexAvailable();\n              Craft.elementIndex.progressBar.hideProgressBar();\n              // If assets were just merged we should get the reference tags updated right away\n              Craft.cp.runQueue();\n              resolve(responses);\n            } else {\n              Craft.elementIndex.progressBar.incrementProcessedItemCount(1);\n              Craft.elementIndex.progressBar.updateProgressBar();\n            }\n          });\n      }\n    });\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset select input\n */\nCraft.AssetSelectInput = Craft.BaseElementSelectInput.extend({\n  $uploadBtn: null,\n  uploader: null,\n  progressBar: null,\n  openPreviewTimeout: null,\n\n  init: function () {\n    this.base.apply(this, arguments);\n    if (this.settings.canUpload) {\n      this._attachUploader();\n    }\n\n    this.updateAddElementsBtn();\n\n    this.addListener(\n      this.$elementsContainer,\n      'keydown',\n      this._onKeyDown.bind(this)\n    );\n    this.elementSelect.on('focusItem', this._onElementFocus.bind(this));\n  },\n\n  elementSelectSettings() {\n    return Object.assign(this.base(), {\n      makeFocusable: true,\n    });\n  },\n\n  /**\n   * Handle a keypress\n   * @private\n   */\n  _onKeyDown: function (ev) {\n    if (ev.keyCode === Garnish.SPACE_KEY && ev.shiftKey) {\n      this.openPreview();\n      ev.stopPropagation();\n      return false;\n    }\n  },\n\n  clearOpenPreviewTimeout: function () {\n    if (this.openPreviewTimeout) {\n      clearTimeout(this.openPreviewTimeout);\n      this.openPreviewTimeout = null;\n    }\n  },\n\n  openPreview: function ($element) {\n    if (Craft.PreviewFileModal.openInstance) {\n      Craft.PreviewFileModal.openInstance.selfDestruct();\n    } else {\n      if (!$element) {\n        $element = this.$elements\n          .filter(':focus')\n          .add(this.$elements.has(':focus'));\n      }\n\n      if ($element.length) {\n        this._loadPreview($element);\n      }\n    }\n  },\n\n  /**\n   * Handle element being focused\n   * @private\n   */\n  _onElementFocus: function (ev) {\n    var $element = $(ev.item);\n\n    if (Craft.PreviewFileModal.openInstance && $element.length) {\n      this._loadPreview($element);\n    }\n  },\n\n  /**\n   * Load the preview for an asset\n   * @private\n   */\n  _loadPreview: function ($element) {\n    var settings = {\n      minGutter: 50,\n    };\n\n    if ($element.data('image-width')) {\n      settings.startingWidth = $element.data('image-width');\n      settings.startingHeight = $element.data('image-height');\n    }\n\n    new Craft.PreviewFileModal(\n      $element.data('id'),\n      this.elementSelect,\n      settings\n    );\n  },\n\n  /**\n   * Attach the uploader with drag event handler\n   */\n  _attachUploader: function () {\n    this.progressBar = new Craft.ProgressBar(\n      $('<div class=\"progress-shade\"></div>').appendTo(this.$container)\n    );\n\n    if (this.$addElementBtn) {\n      this.$uploadBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn dashed',\n        'data-icon': 'upload',\n        'aria-label':\n          this.settings.limit == 1\n            ? Craft.t('app', 'Upload a file')\n            : Craft.t('app', 'Upload files'),\n        'aria-describedby': this.settings.describedBy,\n        text:\n          this.settings.limit == 1\n            ? Craft.t('app', 'Upload a file')\n            : Craft.t('app', 'Upload files'),\n      }).insertAfter(this.$addElementBtn);\n      this.$fileInput = $('<input/>', {\n        type: 'file',\n        class: 'hidden',\n        multiple: this.settings.limit != 1,\n      }).insertAfter(this.$uploadBtn);\n\n      // Trigger a window resize in case the field is inside an element editor HUD\n      Garnish.$win.trigger('resize');\n    }\n\n    var options = {\n      dropZone: this.$container,\n      fileInput: this.$fileInput,\n    };\n\n    if (typeof this.settings.criteria.kind !== 'undefined') {\n      options.allowedKinds = this.settings.criteria.kind;\n    }\n\n    options.canAddMoreFiles = this.canAddMoreFiles.bind(this);\n\n    options.events = {};\n    options.events.fileuploadstart = this._onUploadStart.bind(this);\n    options.events.fileuploadprogressall = this._onUploadProgress.bind(this);\n    options.events.fileuploaddone = this._onUploadComplete.bind(this);\n    options.events.fileuploadfail = this._onUploadFailure.bind(this);\n\n    this.uploader = Craft.createUploader(\n      this.settings.fsType,\n      this.$container,\n      options\n    );\n\n    const params = {\n      fieldId: this.settings.fieldId,\n    };\n    if (this.settings.sourceElementId) {\n      params.elementId = this.settings.sourceElementId;\n    }\n    if (this.settings.criteria.siteId) {\n      params.siteId = this.settings.criteria.siteId;\n    }\n    this.uploader.setParams(params);\n\n    if (this.$uploadBtn) {\n      this.$uploadBtn.on('click', (ev) => {\n        // We can't store a reference to the file input, because it gets replaced with a new input\n        // each time a new file is uploaded - see https://stackoverflow.com/a/25034721/1688568\n        this.$uploadBtn.next('input[type=file]').trigger('click');\n      });\n    }\n  },\n\n  enableAddElementsBtn: function () {\n    if (this.$uploadBtn) {\n      this.$uploadBtn.removeClass('hidden');\n    }\n\n    this.base();\n  },\n\n  disableAddElementsBtn: function () {\n    if (this.$uploadBtn) {\n      this.$uploadBtn.addClass('hidden');\n    }\n\n    this.base();\n  },\n\n  /**\n   * Add the freshly uploaded file to the input field.\n   */\n  selectUploadedFile: function (element) {\n    // Check if we're able to add new elements\n    if (!this.canAddMoreElements()) {\n      return;\n    }\n\n    var $newElement = element.$element;\n\n    $newElement.appendTo(this.$elementsContainer);\n\n    var margin = -($newElement.outerWidth() + 10);\n\n    this.$addElementBtn.css('margin-' + Craft.left, margin + 'px');\n\n    var animateCss = {};\n    animateCss['margin-' + Craft.left] = 0;\n    this.$addElementBtn.velocity(animateCss, 'fast');\n\n    this.addElements($newElement);\n\n    delete this.modal;\n  },\n\n  /**\n   * On upload start.\n   */\n  _onUploadStart: function () {\n    this.progressBar.$progressBar.css({\n      top: Math.round(this.$container.outerHeight() / 2) - 6,\n    });\n\n    this.$container.addClass('uploading');\n    this.progressBar.resetProgressBar();\n    this.progressBar.showProgressBar();\n  },\n\n  /**\n   * On upload progress.\n   */\n  _onUploadProgress: function (event, data = null) {\n    data = event instanceof CustomEvent ? event.detail : data;\n\n    var progress = parseInt(Math.min(data.loaded / data.total, 1) * 100, 10);\n    this.progressBar.setProgressPercentage(progress);\n  },\n\n  /**\n   * On a file being uploaded.\n   */\n  _onUploadComplete: function (event, data = null) {\n    const result = event instanceof CustomEvent ? event.detail : data.result;\n\n    Craft.sendActionRequest('POST', 'app/render-elements', {\n      data: {\n        elements: [\n          {\n            type: 'craft\\\\elements\\\\Asset',\n            id: result.assetId,\n            siteId: this.settings.criteria.siteId,\n            instances: [\n              {\n                context: 'field',\n                ui: ['list', 'large'].includes(this.settings.viewMode)\n                  ? 'chip'\n                  : 'card',\n                size: this.settings.viewMode === 'large' ? 'large' : 'small',\n              },\n            ],\n          },\n        ],\n      },\n    })\n      .then(async ({data}) => {\n        const elementInfo = Craft.getElementInfo(\n          data.elements[result.assetId][0]\n        );\n        this.selectElements([elementInfo]);\n\n        await Craft.appendHeadHtml(data.headHtml);\n        await Craft.appendBodyHtml(data.bodyHtml);\n\n        // Last file\n        if (this.uploader.isLastUpload()) {\n          this.progressBar.hideProgressBar();\n          this.$container.removeClass('uploading');\n          this.$container.trigger('change');\n        }\n      })\n      .catch((error) => {\n        if (error && error.response) {\n          Craft.cp.displayError(response.data.message);\n        } else {\n          Craft.cp.displayError();\n          throw error;\n        }\n      });\n\n    Craft.cp.runQueue();\n  },\n\n  /**\n   * On Upload Failure.\n   */\n  _onUploadFailure: function (event, data = null) {\n    const response =\n      event instanceof CustomEvent ? event.detail : data?.jqXHR?.responseJSON;\n\n    let {message, filename, errors} = response || {};\n\n    filename = filename || data?.files?.[0].name;\n\n    let errorMessages = errors ? Object.values(errors).flat() : [];\n\n    if (!message) {\n      if (errorMessages.length) {\n        message = errorMessages.join('\\n');\n      } else if (filename) {\n        message = Craft.t('app', 'Upload failed for “{filename}”.', {filename});\n      } else {\n        message = Craft.t('app', 'Upload failed.');\n      }\n    }\n\n    Craft.cp.displayError(message);\n    this.progressBar.hideProgressBar();\n    this.$container.removeClass('uploading');\n  },\n\n  /**\n   * We have to take into account files about to be added as well\n   */\n  canAddMoreFiles: function (slotsTaken) {\n    return (\n      !this.settings.limit ||\n      this.$elements.length + slotsTaken < this.settings.limit\n    );\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset selector modal class\n */\nCraft.AssetSelectorModal = Craft.BaseElementSelectorModal.extend(\n  {\n    $selectTransformBtn: null,\n    _selectedTransform: null,\n\n    init: function (elementType, settings) {\n      settings = $.extend({}, Craft.AssetSelectorModal.defaults, settings);\n\n      this.base(elementType, settings);\n\n      if (settings.transforms.length) {\n        this.createSelectTransformButton(settings.transforms);\n      }\n    },\n\n    createSelectTransformButton: function (transforms) {\n      if (!transforms || !transforms.length) {\n        return;\n      }\n\n      var $btnGroup = $('<div class=\"btngroup\"/>').appendTo(\n        this.$primaryButtons\n      );\n      this.$selectBtn.appendTo($btnGroup);\n\n      this.$selectTransformBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn menubtn disabled',\n        text: Craft.t('app', 'Select transform'),\n      }).appendTo($btnGroup);\n\n      var $menu = $('<div class=\"menu\" data-align=\"right\"></div>').insertAfter(\n          this.$selectTransformBtn\n        ),\n        $menuList = $('<ul></ul>').appendTo($menu);\n\n      for (var i = 0; i < transforms.length; i++) {\n        $(\n          '<li><a data-transform=\"' +\n            transforms[i].handle +\n            '\">' +\n            transforms[i].name +\n            '</a></li>'\n        ).appendTo($menuList);\n      }\n\n      var MenuButton = new Garnish.MenuBtn(this.$selectTransformBtn, {\n        onOptionSelect: this.onSelectTransform.bind(this),\n      });\n      MenuButton.disable();\n\n      this.$selectTransformBtn.data('menuButton', MenuButton);\n    },\n\n    onSelectionChange: function (ev) {\n      var $selectedElements = this.elementIndex.getSelectedElements(),\n        allowTransforms = false;\n\n      if ($selectedElements.length && this.settings.transforms.length) {\n        allowTransforms = true;\n      }\n\n      var MenuBtn = null;\n\n      if (this.$selectTransformBtn) {\n        MenuBtn = this.$selectTransformBtn.data('menuButton');\n      }\n\n      if (allowTransforms) {\n        if (MenuBtn) {\n          MenuBtn.enable();\n        }\n\n        this.$selectTransformBtn.removeClass('disabled');\n      } else if (this.$selectTransformBtn) {\n        if (MenuBtn) {\n          MenuBtn.disable();\n        }\n\n        this.$selectTransformBtn.addClass('disabled');\n      }\n\n      this.base();\n    },\n\n    onSelectTransform: function (option) {\n      var transform = $(option).data('transform');\n      this.selectImagesWithTransform(transform);\n    },\n\n    selectImagesWithTransform: function (transform) {\n      // First we must get any missing transform URLs\n      if (\n        typeof Craft.AssetSelectorModal.transformUrls[transform] === 'undefined'\n      ) {\n        Craft.AssetSelectorModal.transformUrls[transform] = {};\n      }\n\n      var $selectedElements = this.elementIndex.getSelectedElements(),\n        imageIdsWithMissingUrls = [];\n\n      for (var i = 0; i < $selectedElements.length; i++) {\n        var $item = $($selectedElements[i]),\n          elementId = Craft.getElementInfo($item).id;\n\n        if (\n          typeof Craft.AssetSelectorModal.transformUrls[transform][\n            elementId\n          ] === 'undefined'\n        ) {\n          imageIdsWithMissingUrls.push(elementId);\n        }\n      }\n\n      if (imageIdsWithMissingUrls.length) {\n        this.showFooterSpinner();\n\n        this.fetchMissingTransformUrls(\n          imageIdsWithMissingUrls,\n          transform,\n          () => {\n            this.hideFooterSpinner();\n            this.selectImagesWithTransform(transform);\n          }\n        );\n      } else {\n        this._selectedTransform = transform;\n        this.selectElements();\n        this._selectedTransform = null;\n      }\n    },\n\n    fetchMissingTransformUrls: function (\n      imageIdsWithMissingUrls,\n      transform,\n      callback\n    ) {\n      var elementId = imageIdsWithMissingUrls.pop();\n\n      var data = {\n        assetId: elementId,\n        handle: transform,\n      };\n\n      Craft.sendActionRequest('POST', 'assets/generate-transform', {data})\n        .then((response) => {\n          Craft.AssetSelectorModal.transformUrls[transform][elementId] =\n            response.data.url || false;\n        })\n        .catch(() => {\n          Craft.AssetSelectorModal.transformUrls[transform][elementId] = false;\n        })\n        .finally(() => {\n          // More to load?\n          if (imageIdsWithMissingUrls.length) {\n            this.fetchMissingTransformUrls(\n              imageIdsWithMissingUrls,\n              transform,\n              callback\n            );\n          } else {\n            callback();\n          }\n        });\n    },\n\n    getElementInfo: function ($selectedElements) {\n      var info = this.base($selectedElements);\n\n      if (this._selectedTransform) {\n        for (var i = 0; i < info.length; i++) {\n          var elementId = info[i].id;\n\n          if (\n            typeof Craft.AssetSelectorModal.transformUrls[\n              this._selectedTransform\n            ][elementId] !== 'undefined' &&\n            Craft.AssetSelectorModal.transformUrls[this._selectedTransform][\n              elementId\n            ] !== false\n          ) {\n            info[i].url =\n              Craft.AssetSelectorModal.transformUrls[this._selectedTransform][\n                elementId\n              ];\n          }\n        }\n      }\n\n      return info;\n    },\n\n    onSelect: function (elementInfo) {\n      this.settings.onSelect(elementInfo, this._selectedTransform);\n    },\n  },\n  {\n    defaults: {\n      canSelectImageTransforms: false,\n      transforms: [],\n    },\n\n    transformUrls: {},\n  }\n);\n\n// Register it!\nCraft.registerElementSelectorModalClass(\n  'craft\\\\elements\\\\Asset',\n  Craft.AssetSelectorModal\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Assets field settings\n */\nCraft.AssetsFieldSettings = Garnish.Base.extend({\n  $useSingleFolderInput: null,\n  $sourceInputs: null,\n  $defaultUploadLocationSelect: null,\n  $defaultUploadLocationOptions: null,\n\n  init: function (\n    useSingleFolderToggleId,\n    sourcesFieldId,\n    defaultUploadLocationId\n  ) {\n    this.$useSingleFolderInput = $(`#${useSingleFolderToggleId}`);\n    this.$sourceInputs = $(`#${sourcesFieldId} input`);\n    this.$defaultUploadLocationSelect = $(`#${defaultUploadLocationId}`);\n    this.$defaultUploadLocationOptions =\n      this.$defaultUploadLocationSelect.children('option');\n    this.updateDefaultUploadLocationSelect();\n\n    // Give CheckboxSelect a chance to register its change event first\n    Garnish.requestAnimationFrame(() => {\n      this.addListener(\n        this.$useSingleFolderInput,\n        'change',\n        'updateDefaultUploadLocationSelect'\n      );\n      this.addListener(\n        this.$sourceInputs,\n        'change',\n        'updateDefaultUploadLocationSelect'\n      );\n    });\n  },\n\n  updateDefaultUploadLocationSelect: function () {\n    if (this.$useSingleFolderInput.prop('checked')) {\n      return;\n    }\n\n    const defaultUploadLocationVal = this.$defaultUploadLocationSelect.val();\n    let firstEnabledValue;\n\n    for (let i = 0; i < this.$sourceInputs.length; i++) {\n      const $input = this.$sourceInputs.eq(i);\n      const val = $input.val();\n      const checked = $input.prop('checked');\n      if (val === '*') {\n        if (checked) {\n          this.$defaultUploadLocationOptions.prop('disabled', false);\n          return;\n        }\n      } else {\n        this.getOption(val).prop('disabled', !checked);\n        if (checked && !firstEnabledValue) {\n          firstEnabledValue = val;\n        }\n      }\n    }\n\n    const $selectedOption = this.getOption(defaultUploadLocationVal);\n    if (\n      !$selectedOption.length ||\n      ($selectedOption.prop('disabled') && firstEnabledValue)\n    ) {\n      this.$defaultUploadLocationSelect.val(firstEnabledValue);\n    }\n  },\n\n  getOption: function (val) {\n    return this.$defaultUploadLocationOptions.filter(`[value=\"${val}\"]`);\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * AuthManager class\n */\nCraft.AuthManager = Garnish.Base.extend(\n  {\n    remainingSessionTime: null,\n    checkRemainingSessionTimer: null,\n    showLoginModalTimer: null,\n    decrementLogoutWarningInterval: null,\n\n    showingLogoutWarningModal: false,\n    showingLoginModal: false,\n\n    logoutWarningModal: null,\n    loginModal: null,\n\n    $logoutWarningPara: null,\n    $passwordInput: null,\n    $loginBtn: null,\n    loginBtn: null,\n\n    /**\n     * Init\n     */\n    init: function () {\n      if (Craft.username) {\n        this.updateRemainingSessionTime(Craft.remainingSessionTime, false);\n      }\n    },\n\n    /**\n     * Sets a timer for the next time to check the auth timeout.\n     */\n    setCheckRemainingSessionTimer: function (seconds) {\n      if (this.checkRemainingSessionTimer) {\n        clearTimeout(this.checkRemainingSessionTimer);\n      }\n\n      this.checkRemainingSessionTimer = setTimeout(\n        this.checkRemainingSessionTime.bind(this),\n        seconds * 1000\n      );\n    },\n\n    /**\n     * Pings the server to see how many seconds are left on the current user session, and handles the response.\n     */\n    async checkRemainingSessionTime(extendSession) {\n      const url = Craft.getActionUrl(\n        'users/session-info',\n        !extendSession ? 'dontExtendSession=1' : null\n      );\n      try {\n        const {data} = await Craft.sendActionRequest('GET', url);\n        if (typeof Craft.csrfTokenValue !== 'undefined') {\n          Craft.csrfTokenValue = data.csrfTokenValue;\n        }\n        this.updateRemainingSessionTime(data.timeout, data.isGuest);\n      } catch (e) {\n        this.updateRemainingSessionTime(-1, false);\n      }\n    },\n\n    /**\n     * Updates our record of the auth timeout, and handles it.\n     */\n    updateRemainingSessionTime: function (remainingSessionTime, isGuest) {\n      this.remainingSessionTime = parseInt(remainingSessionTime);\n\n      // Are we within the warning window?\n      if (\n        this.remainingSessionTime !== -1 &&\n        this.remainingSessionTime < Craft.AuthManager.minSafeSessionTime\n      ) {\n        // Is there still time to renew the session?\n        if (!isGuest || this.remainingSessionTime) {\n          if (!this.showingLogoutWarningModal) {\n            // Show the warning modal\n            this.showLogoutWarningModal();\n          }\n\n          const seconds = Math.min(\n            Craft.AuthManager.checkInterval,\n            this.remainingSessionTime\n          );\n          this.setCheckRemainingSessionTimer(Math.max(1, seconds));\n        } else {\n          // Show the login modal\n          if (!this.showingLoginModal) {\n            this.hideLogoutWarningModal();\n            this.showLoginModal();\n          }\n          this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);\n        }\n      } else {\n        // Everything's good!\n        this.hideLogoutWarningModal();\n        this.hideLoginModal();\n\n        // Will be be within the minSafeSessionTime before the next update?\n        if (\n          this.remainingSessionTime !== -1 &&\n          this.remainingSessionTime <\n            Craft.AuthManager.minSafeSessionTime +\n              Craft.AuthManager.checkInterval\n        ) {\n          this.setCheckRemainingSessionTimer(\n            this.remainingSessionTime - Craft.AuthManager.minSafeSessionTime + 1\n          );\n        } else {\n          this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);\n        }\n      }\n    },\n\n    /**\n     * Shows the logout warning modal.\n     */\n    showLogoutWarningModal: function () {\n      var quickShow;\n\n      if (this.showingLoginModal) {\n        this.hideLoginModal(true);\n        quickShow = true;\n      } else {\n        quickShow = false;\n      }\n\n      this.showingLogoutWarningModal = true;\n\n      if (!this.logoutWarningModal) {\n        let $form = $(\n          '<form id=\"logoutwarningmodal\" class=\"modal alert fitted\"/>'\n        );\n        let $body = $('<div class=\"body\"/>').appendTo($form);\n        let $buttons = $('<div class=\"buttons right\"/>').appendTo($body);\n        let $logoutBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Sign out now'),\n        }).appendTo($buttons);\n        let $renewSessionBtn = $('<button/>', {\n          type: 'submit',\n          class: 'btn submit',\n          text: Craft.t('app', 'Keep me signed in'),\n        }).appendTo($buttons);\n\n        this.$logoutWarningPara = $('<p/>').prependTo($body);\n\n        this.logoutWarningModal = new Garnish.Modal($form, {\n          autoShow: false,\n          closeOtherModals: false,\n          hideOnEsc: false,\n          hideOnShadeClick: false,\n          shadeClass: 'modal-shade dark logoutwarningmodalshade',\n          onFadeIn: function () {\n            if (!Garnish.isMobileBrowser(true)) {\n              // Auto-focus the renew button\n              setTimeout(function () {\n                $renewSessionBtn.trigger('focus');\n              }, 100);\n            }\n          },\n        });\n\n        this.addListener($logoutBtn, 'activate', 'logout');\n        this.addListener($form, 'submit', 'renewSession');\n      }\n\n      if (quickShow) {\n        this.logoutWarningModal.quickShow();\n      } else {\n        this.logoutWarningModal.show();\n      }\n\n      this.updateLogoutWarningMessage();\n\n      this.decrementLogoutWarningInterval = setInterval(\n        this.decrementLogoutWarning.bind(this),\n        1000\n      );\n    },\n\n    /**\n     * Updates the logout warning message indicating that the session is about to expire.\n     */\n    updateLogoutWarningMessage: function () {\n      this.$logoutWarningPara.text(\n        Craft.t('app', 'Your session will expire in {time}.', {\n          time: Craft.secondsToHumanTimeDuration(this.remainingSessionTime),\n        })\n      );\n\n      this.logoutWarningModal.updateSizeAndPosition();\n    },\n\n    decrementLogoutWarning: function () {\n      if (this.remainingSessionTime > 0) {\n        this.remainingSessionTime--;\n        this.updateLogoutWarningMessage();\n      }\n\n      if (this.remainingSessionTime === 0) {\n        clearInterval(this.decrementLogoutWarningInterval);\n      }\n    },\n\n    /**\n     * Hides the logout warning modal.\n     */\n    hideLogoutWarningModal: function (quick) {\n      this.showingLogoutWarningModal = false;\n\n      if (this.logoutWarningModal) {\n        if (quick) {\n          this.logoutWarningModal.quickHide();\n        } else {\n          this.logoutWarningModal.hide();\n        }\n\n        if (this.decrementLogoutWarningInterval) {\n          clearInterval(this.decrementLogoutWarningInterval);\n        }\n      }\n    },\n\n    /**\n     * Shows the login modal.\n     */\n    async showLoginModal() {\n      if (this.showingLoginModal) {\n        return;\n      }\n\n      this.showingLoginModal = true;\n\n      if (this.loginModal) {\n        this.loginModal.destroy();\n      }\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'users/login-modal',\n        {\n          data: {\n            email: Craft.userEmail,\n          },\n        }\n      );\n      const $container = $(data.html);\n\n      this.loginModal = new Garnish.Modal($container, {\n        closeOtherModals: false,\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        shadeClass: 'modal-shade dark blurred login-modal-shade',\n        onFadeIn: async () => {\n          Craft.initUiElements($container);\n          new Craft.LoginForm($container.find('.login-container'), {\n            showPasskeyBtn: Craft.userHasPasskeys,\n            onLogin: () => {\n              this.loginModal.hide();\n            },\n          });\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n        },\n        onFadeOut: () => {\n          this.loginModal?.destroy();\n          this.loginModal = null;\n        },\n        onHide: () => {\n          this.showingLoginModal = false;\n        },\n      });\n    },\n\n    /**\n     * Hides the login modal.\n     */\n    hideLoginModal: function (quick) {\n      if (this.loginModal) {\n        if (quick) {\n          this.loginModal.quickHide();\n        } else {\n          this.loginModal.hide();\n        }\n        // reset the modal\n        this.loginModal.destroy();\n        this.loginModal = null;\n      }\n    },\n\n    logout: function () {\n      $.get({\n        url: Craft.getActionUrl('users/logout'),\n        dataType: 'json',\n        success: () => {\n          Craft.redirectTo('');\n        },\n      });\n    },\n\n    renewSession: function (ev) {\n      if (ev) {\n        ev.preventDefault();\n      }\n\n      this.hideLogoutWarningModal();\n      this.checkRemainingSessionTime(true);\n    },\n\n    closeModal: function () {\n      this.loginBtn.successEvent();\n      this.hideLoginModal();\n      this.checkRemainingSessionTime();\n    },\n  },\n  {\n    checkInterval: 60,\n    minSafeSessionTime: 120,\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Element index class\n */\nCraft.BaseElementIndex = Garnish.Base.extend(\n  {\n    initialized: false,\n    elementType: null,\n    idPrefix: null,\n\n    instanceState: null,\n    _sourceStates: null,\n    sourceStatesStorageKey: null,\n\n    searchTimeout: null,\n    sourceSelect: null,\n    sourceNav: null,\n\n    $container: null,\n    $main: null,\n    isIndexBusy: false,\n\n    $sidebar: null,\n    showingSidebar: null,\n    hasImplicitSource: false,\n    sourceKey: null,\n    rootSourceKey: null,\n    sourceViewModes: null,\n    $source: null,\n    $rootSource: null,\n    sourcesByKey: null,\n    $visibleSources: null,\n\n    $sourceActionsContainer: null,\n    $sourceActionsBtn: null,\n\n    $toolbar: null,\n    toolbarOffset: null,\n\n    $srStatusContainer: null,\n    $searchContainer: null,\n    $search: null,\n    $filterBtn: null,\n    searching: false,\n    searchText: null,\n    sortByScore: null,\n    trashed: false,\n    drafts: false,\n    $clearSearchBtn: null,\n\n    $statusMenuBtn: null,\n    $statusMenuContainer: null,\n    statusMenu: null,\n    status: null,\n\n    $siteMenuBtn: null,\n    siteMenu: null,\n    siteId: null,\n\n    sourcePaths: null,\n    $sourcePathOuterContainer: null,\n    $sourcePathInnerContainer: null,\n    $sourcePathOverflowBtnContainer: null,\n    $sourcePathActionsBtn: null,\n\n    $elements: null,\n    $updateSpinner: null,\n    $viewModeBtnContainer: null,\n    viewModeBtns: null,\n    _viewParams: null,\n    _previousViewParams: null,\n    _viewMode: null,\n    view: null,\n    _autoSelectElements: null,\n    $countSpinner: null,\n    $countContainer: null,\n    $actionsContainer: null,\n    $actionMenuBtn: null,\n    page: 1,\n    resultSet: null,\n    totalResults: null,\n    totalUnfilteredResults: null,\n    $exportBtn: null,\n\n    actions: null,\n    actionsHeadHtml: null,\n    actionsBodyHtml: null,\n    $selectAllContainer: null,\n    $selectAllCheckbox: null,\n    showingActionTriggers: false,\n    exporters: null,\n    exportersByType: null,\n    triggers: null,\n    _$triggers: null,\n\n    _cancelToken: null,\n\n    viewMenus: null,\n    activeViewMenu: null,\n    filterHuds: null,\n\n    _activeElement: null,\n\n    inlineEditing: false,\n    nestedInputNamespace: null,\n\n    get viewMode() {\n      if (this._viewMode === 'structure' && !this.canSort) {\n        // return the default\n        return this.validateViewMode(null);\n      }\n\n      return this.validateViewMode(this._viewMode);\n    },\n\n    set viewMode(viewMode) {\n      this._viewMode = viewMode ? this.validateViewMode(viewMode) : null;\n    },\n\n    get paginated() {\n      return !!(this.isAdministrative && this.viewMode !== 'structure');\n    },\n\n    get selectable() {\n      return (\n        !!(this.actions || this.settings.selectable) && !this.inlineEditing\n      );\n    },\n\n    get multiSelect() {\n      return !!(\n        this.actions ||\n        (this.settings.selectable && this.settings.multiSelect)\n      );\n    },\n\n    get sortable() {\n      return this.settings.sortable && this.canSort && !this.inlineEditing;\n    },\n\n    get canSort() {\n      return (\n        this.isAdministrative &&\n        !this.status &&\n        !this.trashed &&\n        !this.drafts &&\n        !this.searching &&\n        !this.hasActiveFilter\n      );\n    },\n\n    get isAdministrative() {\n      return ['index', 'embedded-index'].includes(this.settings.context);\n    },\n\n    get hasActiveFilter() {\n      return (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey] &&\n        this.filterHuds[this.siteId][this.sourceKey].isActive\n      );\n    },\n\n    get baseCriteria() {\n      const criteria = {};\n      if (this.$source) {\n        Object.assign(criteria, this.$source.data('criteria'));\n      }\n      if (this.settings.criteria) {\n        Object.assign(criteria, this.settings.criteria);\n      }\n      if (this.sourcePath.length) {\n        const currentStep = this.sourcePath[this.sourcePath.length - 1];\n        if (currentStep.criteria) {\n          Object.assign(criteria, currentStep.criteria);\n        }\n      }\n      return criteria;\n    },\n\n    get sourceStates() {\n      if (this.hasImplicitSource) {\n        return {\n          __IMP__: this.instanceState.source || {},\n        };\n      }\n\n      return this._sourceStates;\n    },\n\n    set sourceStates(sourceStates) {\n      if (this.hasImplicitSource) {\n        this.setInstanceState('source', sourceStates.__IMP__ || {});\n      } else {\n        this._sourceStates = sourceStates;\n        Craft.setLocalStorage(this.sourceStatesStorageKey, this.sourceStates);\n      }\n    },\n\n    /**\n     * Constructor\n     */\n    init: function (elementType, $container, settings) {\n      this.elementType = elementType;\n      this.$container = $container;\n      this.setSettings(settings, Craft.BaseElementIndex.defaults);\n\n      this.$container.data('elementIndex', this);\n\n      this.nestedInputNamespace = `elementindex-${Math.floor(\n        Math.random() * 100000\n      )}`;\n      this.sourcePaths = {};\n\n      // Define an ID prefix that can be used for dynamically created elements\n      // ---------------------------------------------------------------------\n\n      this.idPrefix = Craft.randomString(10);\n\n      // Find the DOM elements\n      // ---------------------------------------------------------------------\n\n      this.$main = this.$container.find('.main');\n      this.$toolbar = this.$container.find(this.settings.toolbarSelector);\n      this.$statusMenuBtn = this.$toolbar.find('.statusmenubtn:first');\n      this.$statusMenuContainer = this.$statusMenuBtn.parent();\n      this.$siteMenuBtn = this.$container.find('.sitemenubtn:first');\n\n      this.$searchContainer = this.$toolbar.find('.search-container:first');\n      this.$search = this.$searchContainer.children('input:first');\n      this.$filterBtn = this.$searchContainer.children('.filter-btn:first');\n      this.$clearSearchBtn = this.$searchContainer.children('.clear-btn:first');\n\n      this.$sidebar = this.$container.find('.sidebar:first');\n      this.$sourceActionsContainer = this.$sidebar.find(\n        `#${this.namespaceId('source-actions')}`\n      );\n      this.$sourceActionsContainer = this.$sidebar.find('#source-actions');\n      this.$srStatusContainer = this.$container.find('[data-status-message]');\n\n      this.$elements = this.$container.find('.elements:first');\n      this.$updateSpinner = this.$elements.find('.spinner');\n\n      if (!this.$updateSpinner.length) {\n        this.$updateSpinner = $('<div/>', {\n          class: 'update-spinner spinner spinner-absolute',\n        }).appendTo(this.$elements);\n      }\n\n      this.$countSpinner = this.$container.find(\n        `#${this.namespaceId('count-spinner')}`\n      );\n      this.$countContainer = this.$container.find(\n        `#${this.namespaceId('count-container')}`\n      );\n      this.$actionsContainer = this.$container.find(\n        `#${this.namespaceId('actions-container')}`\n      );\n      this.$exportBtn = this.$container.find(\n        `#${this.namespaceId('export-btn')}`\n      );\n\n      // Hide sidebar if needed\n      if (this.settings.hideSidebar) {\n        this.$sidebar.hide();\n        $('.body, .content', this.$container).removeClass('has-sidebar');\n      }\n\n      // Find the sources\n      // ---------------------------------------------------------------------\n\n      const $sources = this.findSources();\n\n      // Is there just an implicit source?\n      if ($sources.length === 1 && $sources.data('key') === '__IMP__') {\n        this.hasImplicitSource = true;\n      }\n\n      // Set the state objects\n      // ---------------------------------------------------------------------\n\n      this.instanceState = this.getDefaultInstanceState();\n\n      // Instance states (selected source) are stored by a custom storage key defined in the settings\n      if (this.settings.storageKey) {\n        $.extend(\n          this.instanceState,\n          Craft.getLocalStorage(this.settings.storageKey),\n          {}\n        );\n      }\n\n      // Source states (view mode, etc.) are stored by the element type and context\n      if (!this.hasImplicitSource) {\n        this._sourceStates = {};\n\n        this.sourceStatesStorageKey =\n          'BaseElementIndex.' + this.elementType + '.' + this.settings.context;\n        Object.assign(\n          this._sourceStates,\n          Craft.getLocalStorage(this.sourceStatesStorageKey, {})\n        );\n      }\n\n      // Initialize the sources\n      // ---------------------------------------------------------------------\n\n      if (!this.initSources($sources)) {\n        return;\n      }\n\n      // Initialize the status menu\n      // ---------------------------------------------------------------------\n\n      if (this.$statusMenuBtn.length) {\n        this.statusMenu = this.$statusMenuBtn.menubtn().data('menubtn').menu;\n        this.statusMenu.on('optionselect', this._handleStatusChange.bind(this));\n      }\n\n      // Initialize the site menu\n      // ---------------------------------------------------------------------\n\n      // Is there a site menu?\n      if (this.$siteMenuBtn.length) {\n        this.siteMenu = this.$siteMenuBtn.menubtn().data('menubtn').menu;\n\n        // Figure out the initial site\n        var $option = this.siteMenu.$options.filter('.sel:first');\n\n        if (!$option.length) {\n          $option = this.siteMenu.$options.first();\n        }\n\n        if ($option.length) {\n          this._setSite($option.data('site-id'));\n        } else {\n          // No site options -- they must not have any site permissions\n          this.settings.criteria = {id: '0'};\n        }\n\n        this.siteMenu.on('optionselect', this._handleSiteChange.bind(this));\n\n        if (this.siteId) {\n          // Should we be using a different default site?\n          var defaultSiteId =\n            this.settings.defaultSiteId || Craft.cp.getSiteId();\n\n          if (defaultSiteId && defaultSiteId != this.siteId) {\n            // Is that one available here?\n            var $storedSiteOption = this.siteMenu.$options.filter(\n              '[data-site-id=\"' + defaultSiteId + '\"]:first'\n            );\n\n            if ($storedSiteOption.length) {\n              // Todo: switch this to siteMenu.selectOption($storedSiteOption) once Menu is updated to support that\n              $storedSiteOption.trigger('click');\n            }\n          }\n        }\n      } else if (\n        this.settings.criteria &&\n        this.settings.criteria.siteId &&\n        this.settings.criteria.siteId !== '*'\n      ) {\n        this._setSite(this.settings.criteria.siteId);\n      } else {\n        this._setSite(Craft.siteId);\n      }\n\n      // Don't let the criteria override the selected site\n      if (this.settings.criteria && this.settings.criteria.siteId) {\n        delete this.settings.criteria.siteId;\n      }\n\n      // Initialize the search input\n      // ---------------------------------------------------------------------\n\n      // Automatically update the elements after new search text has been sitting for a 1/2 second\n      this.addListener(this.$search, 'input', () => {\n        if (!this.searching && this.$search.val()) {\n          this.startSearching();\n        } else if (this.searching && !this.$search.val()) {\n          this.stopSearching();\n        }\n\n        if (this.searchTimeout) {\n          clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(\n          this.updateElementsIfSearchTextChanged.bind(this),\n          500\n        );\n      });\n\n      // Update the elements when the Return key is pressed\n      this.addListener(this.$search, 'keypress', (ev) => {\n        if (ev.keyCode === Garnish.RETURN_KEY) {\n          ev.preventDefault();\n\n          if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n          }\n\n          this.updateElementsIfSearchTextChanged();\n        }\n      });\n\n      // Clear the search when the X button is clicked\n      this.addListener(this.$clearSearchBtn, 'click', () => {\n        this.clearSearch(true);\n\n        if (!Garnish.isMobileBrowser(true)) {\n          this.$search.trigger('focus');\n        }\n      });\n\n      // Autofocus the Search box, unless this is an embedded index\n      if (\n        this.settings.context !== 'embedded-index' &&\n        !Garnish.isMobileBrowser(true) &&\n        Craft.disableAutofocus === false\n      ) {\n        this.$search.trigger('focus');\n      }\n\n      // View menus\n      this.viewMenus = {};\n\n      // Filter HUDs\n      this.filterHuds = {};\n      this.addListener(this.$filterBtn, 'click', 'showFilterHud');\n\n      // Set the default status\n      // ---------------------------------------------------------------------\n\n      const queryParams =\n        this.settings.context === 'index' ? Craft.getQueryParams() : {};\n\n      if (queryParams.status) {\n        let selector;\n        switch (queryParams.status) {\n          case 'trashed':\n            selector = '[data-trashed]';\n            break;\n          case 'drafts':\n            selector = '[data-drafts]';\n            break;\n          default:\n            selector = `[data-status=\"${queryParams.status}\"]`;\n        }\n\n        const $option = this.statusMenu.$options.filter(selector);\n        if ($option.length) {\n          this.statusMenu.selectOption($option[0]);\n        } else {\n          Craft.setQueryParam('status', null);\n        }\n      }\n\n      // Initialize the Export button\n      // ---------------------------------------------------------------------\n\n      this.addListener(this.$exportBtn, 'click', '_showExportHud');\n\n      // Let everyone know that the UI is initialized\n      // ---------------------------------------------------------------------\n\n      this.initialized = true;\n      this.afterInit();\n\n      // Select the initial source + source path\n      // ---------------------------------------------------------------------\n\n      // Grab the localStorage step key up front, so we don's lose track of it when the default source's default\n      // source path is selected\n      let stepKey;\n      if (this.settings.context === 'index') {\n        if (queryParams.sourcePathStep !== undefined) {\n          stepKey = queryParams.sourcePathStep;\n        } else {\n          stepKey = this.getSelectedSourceState('sourcePathStep');\n        }\n      } else {\n        stepKey = this.instanceState.sourcePathStep || null;\n      }\n\n      this.selectDefaultSource();\n\n      const sourcePath = this.getDefaultSourcePath();\n\n      // If no default source path was explicitly configured, or it's set to the root of the volume, use the localStorage key\n      if ((!sourcePath || sourcePath.length == 1) && stepKey) {\n        this.loadSourcePathByKey(stepKey).then((sourcePath) => {\n          if (sourcePath) {\n            // Filter out any source path steps that are above the source's root\n            const lastSourceKey = this.sourceKey.split('/').slice(-1)[0];\n            const sourceRootIndex = sourcePath.findIndex(\n              (p) => p.key === lastSourceKey\n            );\n            if (sourceRootIndex !== -1) {\n              this.sourcePath = sourcePath.slice(sourceRootIndex);\n            }\n          }\n          this.afterSetInitialSource(queryParams);\n        });\n      } else {\n        if (sourcePath) {\n          this.sourcePath = sourcePath;\n        }\n        this.afterSetInitialSource(queryParams);\n      }\n    },\n\n    afterInit: function () {\n      this.onAfterInit();\n    },\n\n    namespaceInputName(name) {\n      return Craft.namespaceInputName(name, this.settings.namespace);\n    },\n\n    namespaceId(id) {\n      return Craft.namespaceId(id, this.settings.namespace);\n    },\n\n    loadSourcePathByKey: function (stepKey) {\n      return new Promise((resolve, reject) => {\n        // If the step key is equal to the current source key, then it represents the root. No source path needed.\n        if (stepKey === this.sourceKey) {\n          resolve([]);\n          return;\n        }\n\n        const params = this.getViewParams();\n        params.stepKey = stepKey;\n\n        Craft.sendActionRequest('POST', 'element-indexes/source-path', {\n          data: params,\n        })\n          .then(({data}) => {\n            resolve(data.sourcePath);\n          })\n          .catch(reject);\n      });\n    },\n\n    afterSetInitialSource: function (queryParams) {\n      // Resize handler\n      // ---------------------------------------------------------------------\n\n      if (this.settings.context === 'index') {\n        this.addListener(Garnish.$win, 'resize', 'handleResize');\n      }\n\n      this.handleResize();\n\n      // Respect initial search\n      // ---------------------------------------------------------------------\n      // Has to go after selecting the default source because selecting a source\n      // clears out search params\n\n      if (queryParams.search) {\n        this.startSearching();\n        this.searchText = queryParams.search;\n      }\n\n      // Respect the initial filters\n      // ---------------------------------------------------------------------\n\n      if (queryParams.filters) {\n        this.createFilterHud({\n          showOnInit: false,\n          serialized: queryParams.filters,\n        });\n      }\n\n      // Select the default sort attribute/direction\n      // ---------------------------------------------------------------------\n\n      if (queryParams.sort) {\n        const lastDashPos = queryParams.sort.lastIndexOf('-');\n        if (lastDashPos !== -1) {\n          const attr = queryParams.sort.substring(0, lastDashPos);\n          const dir = queryParams.sort.substring(lastDashPos + 1);\n          this.setSelectedSortAttribute(attr, dir);\n        }\n      }\n\n      // Load the first batch of elements!\n      // ---------------------------------------------------------------------\n\n      // Default to whatever page is in the URL\n      this.setPage(Craft.pageNum);\n\n      this.updateElements(true);\n    },\n\n    handleResize: function () {\n      if (this.sourcePath.length && this.settings.showSourcePath) {\n        this._updateSourcePathVisibility();\n      }\n    },\n\n    _createCancelToken: function () {\n      this._cancelToken = axios.CancelToken.source();\n      return this._cancelToken.token;\n    },\n\n    _cancelRequests: function () {\n      if (this._cancelToken) {\n        this._cancelToken.cancel();\n      }\n    },\n\n    getSourceContainer: function () {\n      return this.$sidebar.find('nav > ul');\n    },\n\n    getSourceLabel: function () {\n      return this.$source.data('label');\n    },\n\n    getItemLabel: function () {\n      return Craft.elementTypeNames[this.elementType]\n        ? Craft.elementTypeNames[this.elementType][2]\n        : this.settings.elementTypeName.toLowerCase();\n    },\n\n    getItemsLabel: function () {\n      return Craft.elementTypeNames[this.elementType]\n        ? Craft.elementTypeNames[this.elementType][3]\n        : this.settings.elementTypePluralName.toLowerCase();\n    },\n\n    getFirstItemNumber: function (total) {\n      return Math.min(this.settings.batchSize * (this.page - 1) + 1, total);\n    },\n\n    getLastItemNumber: function (first, total) {\n      return Math.min(first + (this.settings.batchSize - 1), total);\n    },\n\n    get $sources() {\n      if (!this.sourceNav) {\n        return undefined;\n      }\n\n      return this.sourceNav.$items;\n    },\n\n    getSite: function () {\n      if (!this.siteId) {\n        return undefined;\n      }\n      return Craft.sites.find((s) => s.id == this.siteId);\n    },\n\n    initSources: function ($sources) {\n      if (typeof $sources === 'undefined') {\n        $sources = this.findSources();\n      }\n\n      // No source, no party.\n      if ($sources.length === 0) {\n        return false;\n      }\n\n      if (!this.sourceNav) {\n        this.sourceNav = new SourceNav(this.$sidebar.find('nav'), {\n          onSelectionChange: this._handleSourceSelectionChange.bind(this),\n        });\n      }\n\n      this.sourcesByKey = {};\n\n      for (let i = 0; i < $sources.length; i++) {\n        this.initSource($($sources[i]));\n      }\n\n      return true;\n    },\n\n    findSources: function () {\n      return this._getSourcesInList(this.getSourceContainer(), true);\n    },\n\n    selectDefaultSource: function () {\n      // The `source` query param should always take precedence\n      let sourceKey;\n      if (this.settings.context === 'index') {\n        sourceKey = Craft.getQueryParam('source');\n      }\n\n      if (!sourceKey) {\n        sourceKey = this.getDefaultSourceKey();\n      }\n\n      let $source;\n\n      if (sourceKey) {\n        $source = this.getSourceByKey(sourceKey);\n\n        // Make sure it's visible\n        if (this.$visibleSources.index($source) === -1) {\n          $source = null;\n        }\n      }\n\n      if (!sourceKey || !$source) {\n        // Select the first source by default\n        $source = this.$visibleSources.first();\n      }\n\n      return this.selectSource($source);\n    },\n\n    refreshSources: function () {\n      this.sourceNav.removeAllItems();\n\n      this.setIndexBusy();\n\n      Craft.sendActionRequest('POST', this.settings.refreshSourcesAction, {\n        data: {\n          context: this.settings.context,\n          elementType: this.elementType,\n        },\n      })\n        .then((response) => {\n          this.setIndexAvailable();\n          this.getSourceContainer().replaceWith(response.data.html);\n          this.initSources();\n          this.selectDefaultSource();\n        })\n        .catch((e) => {\n          if (!axios.isCancel(e)) {\n            this.setIndexAvailable();\n            Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n          }\n        });\n    },\n\n    initSource: function ($source) {\n      this.sourceNav.addItems($source);\n      this.initSourceToggle($source);\n      this.sourcesByKey[$source.data('key')] = $source;\n\n      if (\n        $source.data('hasNestedSources') &&\n        this.instanceState.expandedSources.indexOf($source.data('key')) !== -1\n      ) {\n        this._expandSource($source);\n      }\n    },\n\n    initSourceToggle: function ($source) {\n      // Remove handlers for the same thing. Just in case.\n      this.deinitSourceToggle($source);\n\n      var $toggle = this._getSourceToggle($source);\n\n      if ($toggle.length) {\n        this.addListener($source, 'dblclick', '_handleSourceDblClick');\n        this.addListener($toggle, 'click', '_handleSourceToggleClick');\n        $source.data('hasNestedSources', true);\n      } else {\n        $source.data('hasNestedSources', false);\n      }\n    },\n\n    deinitSource: function ($source) {\n      this.sourceNav.removeItems($source);\n      this.deinitSourceToggle($source);\n      delete this.sourcesByKey[$source.data('key')];\n    },\n\n    deinitSourceToggle: function ($source) {\n      if ($source.data('hasNestedSources')) {\n        this.removeListener($source, 'dblclick');\n        this.removeListener(this._getSourceToggle($source), 'click');\n      }\n\n      $source.removeData('hasNestedSources');\n    },\n\n    getDefaultInstanceState: function () {\n      const state = {\n        selectedSource: null,\n        expandedSources: [],\n      };\n\n      if (this.hasImplicitSource) {\n        state.source = {};\n      }\n\n      return state;\n    },\n\n    getDefaultSourceKey: function () {\n      if (\n        this.settings.preferStoredSource &&\n        this.instanceState.selectedSource\n      ) {\n        // Discard the defaults and go with localStorage\n        this.settings.defaultSource = null;\n        this.settings.defaultSourcePath = null;\n        return this.instanceState.selectedSource;\n      }\n\n      let sourceKey = null;\n\n      if (this.settings.defaultSource) {\n        let $lastSource = null;\n        let refreshSources = false;\n\n        for (const segment of this.settings.defaultSource.split('/')) {\n          if ($lastSource) {\n            this._expandSource($lastSource);\n            refreshSources = true;\n          }\n\n          const testSourceKey =\n            (sourceKey !== null ? `${sourceKey}/` : '') + segment;\n          const $source = this.getSourceByKey(testSourceKey);\n\n          if (!$source) {\n            if ($lastSource) {\n              this._collapseSource($lastSource);\n            }\n            break;\n          }\n\n          $lastSource = $source;\n          sourceKey = testSourceKey;\n        }\n\n        if (refreshSources) {\n          // Make sure that the modal is aware of the newly expanded sources\n          this._setSite(this.siteId);\n        }\n      }\n\n      if (!sourceKey) {\n        // If we couldn't resolve a default source, clear out the defaultSource and defaultSourcePath\n        // settings, as defaultSourcePath is expected to be relative to defaultSource\n        // (https://github.com/craftcms/cms/issues/13072)\n        this.settings.defaultSource = null;\n        this.settings.defaultSourcePath = null;\n      }\n\n      return sourceKey ?? this.instanceState.selectedSource;\n    },\n\n    /**\n     * @returns {Object[]|null}\n     */\n    getDefaultSourcePath: function () {\n      // @link https://github.com/craftcms/cms/issues/13006\n      if (\n        this.settings.defaultSourcePath !== null &&\n        this.settings.defaultSourcePath[0] !== undefined &&\n        this.settings.defaultSourcePath[0].canView === true\n      ) {\n        return this.settings.defaultSourcePath;\n      } else {\n        return null;\n      }\n    },\n\n    getDefaultExpandedSources: function () {\n      return this.instanceState.expandedSources;\n    },\n\n    /**\n     * @returns {Object[]}\n     */\n    get sourcePath() {\n      return this.sourcePaths[this.sourceKey] || [];\n    },\n\n    /**\n     * @param {Object[]|null} sourcePath\n     */\n    set sourcePath(sourcePath) {\n      this.sourcePaths[this.sourceKey] =\n        sourcePath && sourcePath.length ? sourcePath : null;\n\n      if (this.$sourcePathOuterContainer) {\n        this.$sourcePathOuterContainer.remove();\n        this.$sourcePathOuterContainer = null;\n        this.$sourcePathInnerContainer = null;\n        this.$sourcePathOverflowBtnContainer = null;\n        this.$sourcePathActionsBtn = null;\n      }\n\n      if (this.sourcePaths[this.sourceKey] && this.settings.showSourcePath) {\n        const actions = this.getSourcePathActions();\n\n        this.$sourcePathOuterContainer = $('<div/>', {\n          class: 'source-path',\n        }).insertBefore(this.$elements);\n        this.$sourcePathInnerContainer = $('<div/>', {\n          class: 'chevron-btns',\n        }).appendTo(this.$sourcePathOuterContainer);\n        const $nav = $('<nav/>', {\n          'aria-label': this.getSourcePathLabel(),\n        }).appendTo(this.$sourcePathInnerContainer);\n        const $ol = $('<ol/>').appendTo($nav);\n\n        let $overflowBtn, overflowMenuId, $overflowUl;\n\n        if (sourcePath.length > 1) {\n          this.$sourcePathOverflowBtnContainer = $('<li/>', {\n            class: 'first-step hidden',\n          }).appendTo($ol);\n\n          overflowMenuId = 'menu' + Math.floor(Math.random() * 1000000);\n          $overflowBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'More items'),\n            'aria-label': Craft.t('app', 'More items'),\n            'data-disclosure-trigger': true,\n            'aria-controls': overflowMenuId,\n          })\n            .append(\n              $('<span/>', {class: 'btn-body'}).append(\n                $('<span/>', {class: 'label'}).append(\n                  $('<span/>', {\n                    'data-icon': 'ellipsis',\n                    'aria-hidden': 'true',\n                  })\n                )\n              )\n            )\n            .append($('<span/>', {class: 'chevron-right'}))\n            .appendTo(this.$sourcePathOverflowBtnContainer);\n\n          const $overflowMenu = $('<div/>', {\n            id: overflowMenuId,\n            class: 'menu menu--disclosure',\n          }).appendTo(this.$sourcePathOverflowBtnContainer);\n          $overflowUl = $('<ul/>').appendTo($overflowMenu);\n\n          $overflowBtn.disclosureMenu();\n        }\n\n        for (let i = 0; i < sourcePath.length; i++) {\n          ((i) => {\n            const step = sourcePath[i];\n\n            if ($overflowUl && i < sourcePath.length - 1) {\n              step.$overflowLi = $('<li/>', {\n                class: 'hidden',\n              }).appendTo($overflowUl);\n\n              $('<a/>', {\n                class: 'flex flex-nowrap',\n                href: '#',\n                type: 'button',\n                role: 'button',\n                html: step.icon\n                  ? `<span data-icon=\"${step.icon}\" aria-hidden=\"true\"></span><span>${step.label}</span>`\n                  : step.label,\n              })\n                .appendTo(step.$overflowLi)\n                .on('click', (ev) => {\n                  ev.preventDefault();\n                  $overflowBtn.data('trigger').hide();\n                  this.selectSourcePathStep(i);\n                });\n            }\n\n            const isFirst = i === 0;\n            const isLast = i === sourcePath.length - 1;\n\n            step.$li = $('<li/>').appendTo($ol);\n\n            if (isFirst) {\n              step.$li.addClass('first-step');\n            }\n\n            step.$btn = $('<a/>', {\n              href: step.uri ? Craft.getCpUrl(step.uri) : '#',\n              class: 'btn',\n              role: 'button',\n            });\n\n            if (step.icon) {\n              step.$btn.attr('aria-label', step.label);\n            }\n\n            const $btnBody = $('<span/>', {\n              class: 'btn-body',\n            }).appendTo(step.$btn);\n\n            step.$label = $('<span/>', {\n              class: 'label',\n              html: step.icon\n                ? `<span data-icon=\"${step.icon}\" aria-hidden=\"true\"></span>`\n                : step.label,\n            }).appendTo($btnBody);\n\n            step.$btn.append($('<span class=\"chevron-left\"/>'));\n\n            if (!isLast || !actions.length) {\n              step.$btn.append($('<span class=\"chevron-right\"/>'));\n            } else {\n              step.$btn.addClass('has-action-menu');\n            }\n\n            if (isLast) {\n              step.$btn.addClass('current-step').attr('aria-current', 'page');\n            }\n\n            step.$btn.appendTo(step.$li);\n\n            this.addListener(step.$btn, 'activate', () => {\n              this.selectSourcePathStep(i);\n            });\n          })(i);\n        }\n\n        // Action menu\n        if (actions && actions.length) {\n          const actionBtnLabel = this.getSourcePathActionLabel();\n          const menuId = 'menu' + Math.floor(Math.random() * 1000000);\n          this.$sourcePathActionsBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn current-step',\n            title: actionBtnLabel,\n            'aria-label': actionBtnLabel,\n            'data-disclosure-trigger': true,\n            'aria-controls': menuId,\n          })\n            .append(\n              $('<span/>', {class: 'btn-body'}).append(\n                $('<span/>', {class: 'label'})\n              )\n            )\n            .append($('<span/>', {class: 'chevron-right'}))\n            .appendTo(this.$sourcePathInnerContainer);\n\n          const groupedActions = [\n            actions.filter((a) => !a.destructive && !a.administrative),\n            actions.filter((a) => a.destructive && !a.administrative),\n            actions.filter((a) => a.administrative),\n          ].filter((group) => group.length);\n\n          const $menu = $('<div/>', {\n            id: menuId,\n            class: 'menu menu--disclosure',\n          }).appendTo(this.$sourcePathInnerContainer);\n\n          groupedActions.forEach((group, index) => {\n            if (index !== 0) {\n              $('<hr/>').appendTo($menu);\n            }\n            this._buildSourcePathActionList(group).appendTo($menu);\n          });\n\n          this.$sourcePathActionsBtn.disclosureMenu();\n          this._updateSourcePathVisibility();\n        }\n\n        // Update the URL if we're on the index page\n        if (\n          this.settings.context === 'index' &&\n          typeof sourcePath[sourcePath.length - 1].uri !== 'undefined' &&\n          typeof history != 'undefined'\n        ) {\n          history.replaceState(\n            {},\n            '',\n            Craft.getCpUrl(sourcePath[sourcePath.length - 1].uri)\n          );\n        }\n      }\n\n      // Store the source path\n      const sourcePathStep =\n        (this.sourcePaths[this.sourceKey]\n          ? this.sourcePaths[this.sourceKey][\n              this.sourcePaths[this.sourceKey].length - 1\n            ].key\n          : null) || null;\n      if (this.settings.context === 'index') {\n        this.setSelecetedSourceState('sourcePathStep', sourcePathStep);\n      } else {\n        this.setInstanceState('sourcePathStep', sourcePathStep);\n      }\n\n      this.onSourcePathChange();\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathLabel: function () {\n      return '';\n    },\n\n    /**\n     * @returns {Object[]}\n     */\n    getSourcePathActions: function () {\n      return [];\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathActionLabel: function () {\n      return '';\n    },\n\n    _updateSourcePathVisibility: function () {\n      const firstStep = this.sourcePath[0];\n      const lastStep = this.sourcePath[this.sourcePath.length - 1];\n\n      // reset the source path styles\n      if (this.$sourcePathOverflowBtnContainer) {\n        this.$sourcePathOverflowBtnContainer.addClass('hidden');\n        firstStep.$li.addClass('first-step');\n      }\n\n      for (const step of this.sourcePath) {\n        if (step.$overflowLi) {\n          step.$overflowLi.addClass('hidden');\n        }\n        step.$li.removeClass('hidden');\n      }\n\n      lastStep.$label.css('width', '');\n      lastStep.$btn.removeAttr('title');\n\n      let overage = this._checkSourcePathOverage();\n      if (!overage) {\n        return;\n      }\n\n      // show the overflow menu, if we have one\n      if (this.$sourcePathOverflowBtnContainer) {\n        this.$sourcePathOverflowBtnContainer.removeClass('hidden');\n        firstStep.$li.removeClass('first-step');\n\n        for (let i = 0; i < this.sourcePath.length - 1; i++) {\n          const step = this.sourcePath[i];\n          step.$overflowLi.removeClass('hidden');\n          step.$li.addClass('hidden');\n\n          // are we done yet?\n          overage = this._checkSourcePathOverage();\n          if (!overage) {\n            return;\n          }\n        }\n      }\n\n      // if we're still here, truncation is the only remaining strategy\n      if (!lastStep.icon) {\n        const width = lastStep.$label[0].getBoundingClientRect().width;\n        lastStep.$label.width(Math.floor(width - overage));\n        lastStep.$btn.attr('title', lastStep.label);\n      }\n    },\n\n    _checkSourcePathOverage: function () {\n      const outerWidth =\n        this.$sourcePathOuterContainer[0].getBoundingClientRect().width;\n      const innerWidth =\n        this.$sourcePathInnerContainer[0].getBoundingClientRect().width;\n      return Math.max(innerWidth - outerWidth, 0);\n    },\n\n    _buildSourcePathActionList: function (actions) {\n      const $ul = $('<ul/>');\n\n      actions.forEach((action) => {\n        const $a = $('<a/>', {\n          href: '#',\n          type: 'button',\n          role: 'button',\n          'aria-label': action.label,\n          text: action.label,\n        }).on('click', (ev) => {\n          ev.preventDefault();\n          this.$sourcePathActionsBtn.data('trigger').hide();\n          if (action.onSelect) {\n            action.onSelect();\n          }\n        });\n\n        if (action.destructive) {\n          $a.addClass('error');\n        }\n\n        $('<li/>').append($a).appendTo($ul);\n      });\n\n      return $ul;\n    },\n\n    onSourcePathChange: function () {\n      this.settings.onSourcePathChange();\n      this.trigger('sourcePathChange');\n    },\n\n    selectSourcePathStep: function (num) {\n      this.sourcePath = this.sourcePath.slice(0, num + 1);\n      this.sourcePath[num].$btn.focus();\n      this.clearSearch(false);\n      this.updateElements();\n    },\n\n    startSearching: function () {\n      // Show the clear button\n      this.$clearSearchBtn.removeClass('hidden');\n      this.searching = true;\n      this.sortByScore = true;\n    },\n\n    clearSearch: function (updateElements) {\n      if (!this.searching) {\n        return;\n      }\n\n      this.$search.val('');\n\n      if (this.searchTimeout) {\n        clearTimeout(this.searchTimeout);\n      }\n\n      this.stopSearching();\n\n      if (updateElements) {\n        this.updateElementsIfSearchTextChanged();\n      } else {\n        this.searchText = null;\n      }\n    },\n\n    stopSearching: function () {\n      // Hide the clear button\n      this.$clearSearchBtn.addClass('hidden');\n      this.searching = false;\n      this.sortByScore = false;\n    },\n\n    setInstanceState: function (key, value) {\n      if (typeof key === 'object') {\n        $.extend(this.instanceState, key);\n      } else {\n        this.instanceState[key] = value;\n      }\n\n      this.storeInstanceState();\n    },\n\n    storeInstanceState: function () {\n      if (this.settings.storageKey) {\n        Craft.setLocalStorage(this.settings.storageKey, this.instanceState);\n      }\n    },\n\n    getSourceState: function (sourceKey, key, defaultValue) {\n      // account for when all sources are disabled\n      if (!sourceKey) {\n        return null;\n      }\n\n      if (typeof this.sourceStates[sourceKey] === 'undefined') {\n        // If this is a nested source key, see if we have a source state for the parent\n        const lastSlashPos = sourceKey.lastIndexOf('/');\n        if (lastSlashPos !== -1) {\n          return this.getSourceState(\n            sourceKey.substring(0, lastSlashPos),\n            key,\n            defaultValue\n          );\n        }\n      }\n\n      const sourceState = this.sourceStates[sourceKey] || {};\n\n      if (typeof key === 'undefined') {\n        return Object.assign({}, sourceState);\n      }\n      if (typeof sourceState[key] !== 'undefined') {\n        return sourceState[key];\n      }\n      return typeof defaultValue !== 'undefined' ? defaultValue : null;\n    },\n\n    getSelectedSourceState: function (key, defaultValue) {\n      return this.getSourceState(\n        this.instanceState.selectedSource,\n        key,\n        defaultValue\n      );\n    },\n\n    setSelecetedSourceState: function (key, value) {\n      var viewState = this.getSelectedSourceState();\n\n      // account for when all sources are disabled\n      if (viewState == null) {\n        viewState = [];\n      }\n\n      if (typeof key === 'object') {\n        for (let k in key) {\n          if (key.hasOwnProperty(k)) {\n            if (key[k] !== null) {\n              viewState[k] = key[k];\n            } else {\n              delete viewState[k];\n            }\n          }\n        }\n      } else if (value !== null) {\n        viewState[key] = value;\n      } else {\n        delete viewState[key];\n      }\n\n      // account for when all sources are disabled\n      let sourceKey = '*';\n      if (this.instanceState.selectedSource != undefined) {\n        // otherwise do what we used to do\n        sourceKey = this.instanceState.selectedSource;\n      }\n\n      const sourceStates = this.sourceStates;\n      sourceStates[sourceKey] = viewState;\n\n      this.sourceStates = sourceStates;\n    },\n\n    /**\n     * @deprecated in 4.3.0.\n     */\n    storeSortAttributeAndDirection: function () {},\n\n    /**\n     * Sets the page number.\n     */\n    setPage: function (page) {\n      if (!this.isAdministrative) {\n        return;\n      }\n\n      page = Math.max(page, 1);\n      this.page = page;\n\n      const url = Craft.getPageUrl(this.page);\n      history.replaceState({}, '', url);\n    },\n\n    _resetCount: function () {\n      this.resultSet = null;\n      this.totalResults = null;\n      this.totalUnfilteredResults = null;\n    },\n\n    updateSourceMenu: function () {\n      if (!this.$sourceActionsContainer.length) {\n        return;\n      }\n\n      if (this.$sourceActionsBtn) {\n        this.$sourceActionsBtn.data('trigger').destroy();\n        this.$sourceActionsContainer.empty();\n        $(`#${this.namespaceId('source-actions-menu')}`).remove();\n        this.$sourceActionsBtn = null;\n      }\n\n      const actions = this.getSourceActions();\n      if (!actions.length) {\n        return;\n      }\n\n      const groupedActions = [\n        actions.filter((a) => !a.destructive && !a.administrative),\n        actions.filter((a) => a.destructive && !a.administrative),\n        actions.filter((a) => a.administrative),\n      ].filter((group) => group.length);\n\n      this.$sourceActionsBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn action-btn hairline',\n        title: Craft.t('app', 'Source settings'),\n        'aria-label': Craft.t('app', 'Source settings'),\n        'aria-controls': 'source-actions-menu',\n      }).appendTo(this.$sourceActionsContainer);\n\n      const $menu = $('<div/>', {\n        id: 'source-actions-menu',\n        class: 'menu menu--disclosure',\n      }).appendTo(this.$sourceActionsContainer);\n\n      groupedActions.forEach((group, index) => {\n        if (index !== 0) {\n          $('<hr/>').appendTo($menu);\n        }\n\n        this._buildActionList(group).appendTo($menu);\n      });\n\n      this.$sourceActionsBtn.disclosureMenu();\n    },\n\n    _buildActionList: function (actions) {\n      const $ul = $('<ul/>');\n\n      actions.forEach((action) => {\n        const $button = $('<button/>', {\n          type: 'button',\n          class: 'menu-item',\n          text: action.label,\n        }).on('click', () => {\n          this.$sourceActionsBtn.data('trigger').hide();\n          if (action.onSelect) {\n            action.onSelect();\n          }\n        });\n\n        if (action.destructive) {\n          $button.addClass('error');\n        }\n\n        $('<li/>').append($button).appendTo($ul);\n      });\n\n      return $ul;\n    },\n\n    getSourceActions: function () {\n      let actions = [];\n\n      if (Craft.userIsAdmin && Craft.allowAdminChanges) {\n        actions.push({\n          label: Craft.t('app', 'Customize sources'),\n          administrative: true,\n          onSelect: () => {\n            this.createCustomizeSourcesModal();\n          },\n        });\n      }\n\n      return actions;\n    },\n\n    updateViewMenu: function () {\n      if (\n        !this.activeViewMenu ||\n        this.activeViewMenu !== this.viewMenus[this.sourceKey]\n      ) {\n        if (this.activeViewMenu) {\n          this.activeViewMenu.hideTrigger();\n        }\n        if (!this.viewMenus[this.sourceKey]) {\n          if (\n            !this.getViewModesForSource().find(\n              (mode) => mode.mode === 'table'\n            ) &&\n            this.settings.sortable\n          ) {\n            return;\n          }\n          this.viewMenus[this.sourceKey] = new ViewMenu(this, this.$source);\n        }\n        this.activeViewMenu = this.viewMenus[this.sourceKey];\n        this.activeViewMenu.showTrigger();\n      }\n    },\n\n    /**\n     * Returns any additional settings that should be passed to the view instance.\n     */\n    getViewSettings: function () {\n      return {};\n    },\n\n    /**\n     * Returns the data that should be passed to the elementIndex/getElements controller action\n     * when loading elements.\n     */\n    getViewParams: function () {\n      // baseCriteria: the criteria properties determined by the source and element index config\n      // criteria: everything the user had some say in\n\n      // baseCriteria will determine the unfilteredTotal count, in case something needs to know\n      // the total number of elements the user has access to\n\n      const baseCriteria = Object.assign(\n        {\n          status: null,\n          drafts: this.settings.canHaveDrafts ? null : false,\n          draftOf: this.settings.canHaveDrafts && this.drafts ? null : false,\n          savedDraftsOnly: true,\n        },\n        this.baseCriteria,\n        {\n          siteId: this.siteId,\n        }\n      );\n\n      const criteria = {\n        offset: this.settings.batchSize * (this.page - 1),\n        limit: this.settings.batchSize,\n        search: this.searching ? this.searchText : null,\n      };\n\n      // Only set drafts/draftOf/trashed params when needed, so we don't potentially override a source's criteria\n      if (this.settings.canHaveDrafts && this.drafts) {\n        criteria.drafts = true;\n      }\n\n      if (this.trashed) {\n        criteria.trashed = true;\n      }\n\n      if (!this.$statusMenuContainer.hasClass('hidden') && this.status) {\n        criteria.status = this.status;\n      }\n\n      const params = {\n        context: this.settings.context,\n        elementType: this.elementType,\n        canHaveDrafts: this.settings.canHaveDrafts,\n        source: this.instanceState.selectedSource,\n        condition: this.settings.condition,\n        referenceElementId: this.settings.referenceElementId,\n        referenceElementSiteId: this.settings.referenceElementSiteId,\n        baseCriteria,\n        criteria,\n        disabledElementIds: this.settings.disabledElementIds,\n        viewState: $.extend({}, this.getSelectedSourceState()),\n        paginated: this.paginated,\n        selectable: this.selectable,\n        sortable: this.sortable,\n      };\n\n      params.viewState.showHeaderColumn = this.settings.showHeaderColumn;\n      params.viewState.inlineEditing = this.inlineEditing;\n      params.viewState.nestedInputNamespace = this.nestedInputNamespace;\n\n      // override viewState.mode in case it's different from what's stored\n      params.viewState.mode = this.viewMode;\n\n      if (this.viewMode === 'structure') {\n        params.viewState.mode = 'table';\n        params.viewState.order = 'structure';\n        params.viewState.sort = 'asc';\n\n        if (typeof this.instanceState.collapsedElementIds === 'undefined') {\n          this.instanceState.collapsedElementIds = [];\n        }\n        params.collapsedElementIds = this.instanceState.collapsedElementIds;\n      } else if (!this.sortable && !this.inlineEditing) {\n        // Possible that the order/sort isn't entirely accurate if we're sorting by Score\n        const [sortAttribute, sortDirection] =\n          this.getSortAttributeAndDirection();\n        params.viewState.order = sortAttribute;\n        params.viewState.sort = sortDirection;\n      }\n\n      if (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey] &&\n        (this.filterHuds[this.siteId][this.sourceKey].conditionConfig ||\n          this.filterHuds[this.siteId][this.sourceKey].serialized)\n      ) {\n        params.filterConfig =\n          this.filterHuds[this.siteId][this.sourceKey].conditionConfig;\n        params.filters =\n          this.filterHuds[this.siteId][this.sourceKey].serialized;\n      }\n\n      if (\n        this.hasImplicitSource &&\n        typeof params.viewState.tableColumns === 'undefined'\n      ) {\n        params.viewState.tableColumns = this.getDefaultTableColumns();\n      }\n\n      // Give plugins a chance to hook in here\n      this.trigger('registerViewParams', {\n        params: params,\n      });\n\n      return params;\n    },\n\n    updateElements: function (preservePagination, pageChanged) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're not fully initialized yet\n        if (!this.initialized) {\n          reject('The element index isn’t initialized yet.');\n          return;\n        }\n\n        this.onBeforeUpdateElements();\n\n        // Cancel any ongoing requests\n        this._cancelRequests();\n\n        this.setIndexBusy();\n\n        // Kill the old view class\n        if (this.view) {\n          this.view.disable();\n        }\n\n        if (preservePagination !== true) {\n          this.setPage(1);\n          this._resetCount();\n        }\n\n        this._previousViewParams = this._viewParams;\n        this._viewParams = this.getViewParams();\n\n        Craft.sendActionRequest('POST', this.settings.updateElementsAction, {\n          data: this._viewParams,\n          cancelToken: this._createCancelToken(),\n        })\n          .then((response) => {\n            this.setIndexAvailable();\n\n            if (this.settings.context === 'index') {\n              if (Craft.cp.fixedHeader) {\n                const headerContainerHeight =\n                  Craft.cp.$headerContainer.height();\n                const maxScrollTop =\n                  this.$main.offset().top - headerContainerHeight;\n                if (maxScrollTop < Garnish.$scrollContainer.scrollTop()) {\n                  Garnish.$scrollContainer.scrollTop(maxScrollTop);\n                }\n              }\n            } else {\n              this.$main.scrollTop(0);\n            }\n\n            this._updateView(this._viewParams, response.data);\n\n            if (this.criteriaHasChanged() && !this.sourceHasChanged()) {\n              const itemLabel = this.getItemLabel();\n              const itemsLabel = this.getItemsLabel();\n\n              this._countResults().then((total) => {\n                let successMessage;\n\n                if (!this.paginated) {\n                  successMessage = Craft.t(\n                    'app',\n                    'Showing {total, number} {total, plural, =1{{item}} other{{items}}}',\n                    {\n                      total: total,\n                      item: itemLabel,\n                      items: itemsLabel,\n                    }\n                  );\n                } else {\n                  const first = this.getFirstItemNumber(total);\n                  successMessage = Craft.t(\n                    'app',\n                    'Showing {first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}',\n                    {\n                      first: first,\n                      last: this.getLastItemNumber(first, total),\n                      total: total,\n                      item: itemLabel,\n                      items: itemsLabel,\n                    }\n                  );\n                }\n\n                this.updateLiveRegion(successMessage);\n              });\n            } else {\n              this.updateLiveRegion(this.getSortMessage());\n            }\n\n            resolve();\n          })\n          .catch((e) => {\n            if (!axios.isCancel(e)) {\n              this.setIndexAvailable();\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n            }\n            reject(e);\n          });\n      });\n    },\n\n    criteriaHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return !Craft.compare(\n        this._viewParams.criteria,\n        this._previousViewParams.criteria\n      );\n    },\n\n    sourceHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return this._viewParams.source !== this._previousViewParams.source;\n    },\n\n    sortHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return (\n        this._viewParams.viewState.order !==\n          this._previousViewParams.viewState.order ||\n        this._viewParams.viewState.sort !==\n          this._previousViewParams.viewState.sort\n      );\n    },\n\n    updateElementsIfSearchTextChanged: function () {\n      if (\n        this.searchText !==\n        (this.searchText = this.searching ? this.$search.val() : null)\n      ) {\n        if (this.settings.context === 'index') {\n          Craft.setQueryParam('search', this.$search.val());\n        }\n        this.updateElements();\n      }\n    },\n\n    getSortMessage: function () {\n      const attribute = this.getSelectedSortAttribute();\n      const direction =\n        this.getSelectedSortDirection() === 'asc'\n          ? Craft.t('app', 'Ascending')\n          : Craft.t('app', 'Descending');\n      const sortLabel = this.getSortLabel(attribute);\n\n      if (!attribute && !direction && !sortLabel) return;\n\n      return Craft.t('app', '{name} sorted by {attribute}, {direction}', {\n        name: this.getSourceLabel(),\n        attribute: sortLabel,\n        direction: direction,\n      });\n    },\n\n    updateLiveRegion: function (message) {\n      if (!message) return;\n\n      this.$srStatusContainer.empty().text(message);\n\n      // Clear message after interval\n      setTimeout(() => {\n        const currentMessage = this.$srStatusContainer.text();\n\n        // Check that this is the same message and hasn't been updated since\n        if (message !== currentMessage) return;\n\n        this.$srStatusContainer.empty();\n      }, 5000);\n    },\n\n    showActionTriggers: function () {\n      // Ignore if they're already shown\n      if (this.showingActionTriggers) {\n        return;\n      }\n\n      if (!this._$triggers) {\n        this._createTriggers();\n      } else {\n        this._$triggers.appendTo(this.$actionsContainer);\n      }\n\n      this.showingActionTriggers = true;\n    },\n\n    submitAction: async function (action, actionParams, beforeCallback) {\n      // Make sure something's selected\n      var selectedElementIds = this.view.getSelectedElementIds(),\n        totalSelected = selectedElementIds.length;\n\n      if (totalSelected === 0) {\n        return false;\n      }\n\n      if (typeof action === 'string') {\n        action = this._findAction(action);\n      }\n\n      if (action.confirm && !confirm(action.confirm)) {\n        return false;\n      }\n\n      if (beforeCallback) {\n        await beforeCallback();\n      }\n\n      // Cancel any ongoing requests\n      this._cancelRequests();\n\n      // Get ready to submit\n      var viewParams = this.getViewParams();\n\n      actionParams = actionParams ? Craft.expandPostArray(actionParams) : {};\n      var params = $.extend(viewParams, action.settings || {}, actionParams, {\n        elementAction: action.type,\n        elementIds: selectedElementIds,\n      });\n\n      // Do it\n      this.setIndexBusy();\n      this._autoSelectElements = selectedElementIds;\n\n      if (action.download) {\n        if (Craft.csrfTokenName) {\n          params[Craft.csrfTokenName] = Craft.csrfTokenValue;\n        }\n        try {\n          await Craft.downloadFromUrl(\n            'POST',\n            Craft.getActionUrl(this.settings.submitActionsAction),\n            params\n          );\n        } finally {\n          this.setIndexAvailable();\n        }\n      } else {\n        try {\n          const response = await Craft.sendActionRequest(\n            'POST',\n            this.settings.submitActionsAction,\n            {\n              data: params,\n              cancelToken: this._createCancelToken(),\n            }\n          );\n\n          // Update the count text too\n          this._resetCount();\n          this._updateView(viewParams, response.data);\n\n          if (typeof response.data.badgeCounts !== 'undefined') {\n            this._updateBadgeCounts(response.data.badgeCounts);\n          }\n\n          if (response.data.message) {\n            Craft.cp.displaySuccess(response.data.message);\n          }\n\n          this.afterAction(action, params);\n        } catch (e) {\n          Craft.cp.displayError(e?.response?.data?.message);\n        } finally {\n          this.setIndexAvailable();\n        }\n      }\n    },\n\n    _findAction: function (actionClass) {\n      for (var i = 0; i < this.actions.length; i++) {\n        if (this.actions[i].type === actionClass) {\n          return this.actions[i];\n        }\n      }\n      throw `Invalid element action: ${actionClass}`;\n    },\n\n    afterAction: function (action, params) {\n      // There may be a new background job that needs to be run\n      Craft.cp.runQueue();\n\n      this.onAfterAction(action, params);\n    },\n\n    hideActionTriggers: function () {\n      // Ignore if there aren't any\n      if (!this.showingActionTriggers) {\n        return;\n      }\n\n      this._$triggers.detach();\n\n      this.showingActionTriggers = false;\n    },\n\n    updateSelectAllCheckbox: function () {\n      if (this.$selectAllCheckbox) {\n        const totalSelected = this.view.getSelectedElements().length;\n\n        if (totalSelected !== 0) {\n          if (totalSelected === this.view.getEnabledElements().length) {\n            this.$selectAllCheckbox.removeClass('indeterminate');\n            this.$selectAllCheckbox.addClass('checked');\n            this.$selectAllCheckbox.attr('aria-checked', 'true');\n          } else {\n            this.$selectAllCheckbox.addClass('indeterminate');\n            this.$selectAllCheckbox.removeClass('checked');\n            this.$selectAllCheckbox.attr('aria-checked', 'mixed');\n          }\n        } else {\n          this.$selectAllCheckbox.removeClass('indeterminate checked');\n          this.$selectAllCheckbox.attr('aria-checked', 'false');\n        }\n      }\n    },\n\n    updateActionTriggers: function () {\n      // Do we have an action UI to update?\n      if (this.actions) {\n        const totalSelected = this.view.getSelectedElements().length;\n\n        if (totalSelected !== 0) {\n          this.showActionTriggers();\n        } else {\n          this.hideActionTriggers();\n        }\n      }\n    },\n\n    getSelectedElements: function () {\n      return this.view ? this.view.getSelectedElements() : $();\n    },\n\n    getSelectedElementIds: function () {\n      return this.view ? this.view.getSelectedElementIds() : [];\n    },\n\n    setStatus: function (status) {\n      // Find the option (and make sure it actually exists)\n      var $option = this.statusMenu.$options.filter(\n        'a[data-status=\"' + status + '\"]:first'\n      );\n\n      if ($option.length) {\n        this.statusMenu.selectOption($option[0]);\n      }\n    },\n\n    /**\n     * Returns the selected sort attribute for a source\n     * @param {jQuery} [$source]\n     * @returns {string}\n     */\n    getSelectedSortAttribute: function ($source) {\n      $source = $source || this.$source;\n\n      if ($source) {\n        const attribute = this.getSourceState($source.data('key'), 'order');\n\n        // Make sure it's valid\n        if (this.getSortOption(attribute, $source)) {\n          return attribute;\n        }\n      }\n\n      return this.getDefaultSort()[0];\n    },\n\n    /**\n     * Returns the selected sort direction for a source\n     * @param {jQuery} [$source]\n     * @returns {string}\n     */\n    getSelectedSortDirection: function ($source) {\n      $source = $source || this.$source;\n\n      if ($source) {\n        const direction = this.getSourceState($source.data('key'), 'sort');\n\n        // Make sure it's valid\n        if (['asc', 'desc'].includes(direction)) {\n          return direction;\n        }\n      }\n\n      return this.getDefaultSort()[1];\n    },\n\n    /**\n     * @deprecated in 4.3.0. Use setSelectedSortAttribute() instead.\n     */\n    setSortAttribute: function (attr) {\n      this.setSelectedSortAttribute(attr);\n    },\n\n    /**\n     * Sets the selected sort attribute and direction.\n     *\n     * If direction isn’t provided, the attribute’s default direction will be used.\n     *\n     * @param {string} attr\n     * @param {string} [dir]\n     */\n    setSelectedSortAttribute: function (attr, dir) {\n      // If score, keep track of that separately\n      if (attr === 'score') {\n        this.sortByScore = true;\n        return;\n      }\n\n      this.sortByScore = false;\n\n      // Make sure it's valid\n      const sortOption = this.getSortOption(attr);\n      if (!sortOption) {\n        console.warn(`Invalid sort option: ${attr}`);\n        return;\n      }\n\n      if (!dir) {\n        dir = sortOption.defaultDir;\n      }\n\n      const history = [];\n\n      // Remember the previous choices\n      const attributes = [attr];\n\n      // Only include the last attribute if it changed\n      const lastAttr = this.getSelectedSourceState('order');\n      if (lastAttr && lastAttr !== attr) {\n        history.push([lastAttr, this.getSelectedSourceState('sort')]);\n        attributes.push(lastAttr);\n      }\n\n      const oldHistory = this.getSelectedSourceState('orderHistory', []);\n      for (let i = 0; i < oldHistory.length; i++) {\n        const [a] = oldHistory[i];\n        if (a && !attributes.includes(a)) {\n          history.push(oldHistory[i]);\n          attributes.push(a);\n        } else {\n          break;\n        }\n      }\n\n      this.setSelecetedSourceState({\n        order: attr,\n        sort: dir,\n        orderHistory: history,\n      });\n\n      if (this.settings.context === 'index') {\n        // Update the query string\n        Craft.setQueryParam('sort', `${attr}-${dir}`);\n      }\n    },\n\n    /**\n     * @deprecated in 4.3.0. Use setSelectedSortAttribute() or setSelectedSortDirection() instead.\n     */\n    setSortDirection: function (dir) {\n      this.setSelectedSortDirection(dir);\n    },\n\n    /**\n     * Sets the selected sort direction, maintaining the current sort attribute.\n     * @param {string} dir\n     */\n    setSelectedSortDirection: function (dir) {\n      this.setSelectedSortAttribute(this.getSelectedSortAttribute(), dir);\n    },\n\n    /**\n     * Returns the actual sort attribute, which may be different from what's selected.\n     * @returns {string[]}\n     */\n    getSortAttributeAndDirection: function () {\n      if (this.searching && this.sortByScore) {\n        return ['score', 'desc'];\n      }\n\n      return [this.getSelectedSortAttribute(), this.getSelectedSortDirection()];\n    },\n\n    getSortLabel: function (attr) {\n      const sortOption = this.getSortOption(attr);\n      return sortOption ? sortOption.label : null;\n    },\n\n    getSelectedViewMode: function () {\n      return this.validateViewMode(this.getSelectedSourceState('mode') || null);\n    },\n\n    /**\n     * Returns the nesting level for a given source, where 1 = the root level\n     * @param {jQuery} $source\n     * @returns {number}\n     */\n    getSourceLevel: function ($source) {\n      return $source.parentsUntil('nav', 'ul.nested').length + 1;\n    },\n\n    /**\n     * Returns a source’s parent, or null if it’s the root source\n     * @param {jQuery} $source\n     * @returns {?jQuery}\n     */\n    getParentSource: function ($source) {\n      const $parent = $source.parent().parent().siblings('a');\n      return $parent.length ? $parent : null;\n    },\n\n    /**\n     * Returns the root level source for a given source.\n     * @param {jQuery} $source\n     * @returns {jQuery}\n     */\n    getRootSource: function ($source) {\n      let $parent;\n      while (($parent = this.getParentSource($source))) {\n        $source = $parent;\n      }\n      return $source;\n    },\n\n    getSourceByKey: function (key) {\n      return this.sourcesByKey[key] || null;\n    },\n\n    selectSource: function (source) {\n      const $source = $(source);\n\n      // return false if there truly are no sources;\n      // don't attempt to check only default/visible sources\n      if (!this.sourcesByKey || !Object.keys(this.sourcesByKey).length) {\n        return false;\n      }\n\n      if (\n        this.$source &&\n        this.$source[0] &&\n        this.$source[0] === $source[0] &&\n        $source.data('key') === this.sourceKey\n      ) {\n        return false;\n      }\n\n      // Hide action triggers if they're currently being shown\n      this.hideActionTriggers();\n\n      this.$source = $source;\n      this.$rootSource = this.getRootSource($source);\n      this.sourceKey = $source.data('key');\n      this.rootSourceKey = this.$rootSource.data('key');\n      this.setInstanceState('selectedSource', this.sourceKey);\n      this.sourceNav.selectItem($source);\n\n      Craft.cp.updateContentHeading();\n\n      if (this.searching) {\n        // Clear the search value without causing it to update elements\n        this.searchText = null;\n        this.$search.val('');\n        if (this.settings.context === 'index') {\n          Craft.setQueryParam('search', null);\n        }\n        this.stopSearching();\n      }\n\n      // Status menu\n      // ----------------------------------------------------------------------\n\n      if (this.$statusMenuBtn.length) {\n        if (typeof this.baseCriteria.status !== 'undefined') {\n          this.$statusMenuContainer.addClass('hidden');\n        } else {\n          this.$statusMenuContainer.removeClass('hidden');\n        }\n\n        if (this.trashed) {\n          // Swap to the initial status\n          var $firstOption = this.statusMenu.$options.first();\n          this.setStatus($firstOption.data('status'));\n        }\n      }\n\n      // View mode buttons\n      // ----------------------------------------------------------------------\n\n      // Clear out any previous view mode data\n      if (this.$viewModeBtnContainer) {\n        this.$viewModeBtnContainer.remove();\n      }\n\n      this.viewModeBtns = {};\n      this.viewMode = null;\n\n      // Get the new list of view modes\n      this.sourceViewModes = this.getViewModesForSource();\n\n      // Create the buttons if there's more than one mode available to this source\n      if (this.sourceViewModes.length > 1) {\n        this.$viewModeBtnContainer = $(\n          '<section class=\"btngroup btngroup--exclusive\"/>'\n        )\n          .attr('aria-label', Craft.t('app', 'View'))\n          .insertAfter(this.$searchContainer);\n\n        for (var i = 0; i < this.sourceViewModes.length; i++) {\n          let sourceViewMode = this.sourceViewModes[i];\n\n          let $viewModeBtn = $('<button/>', {\n            type: 'button',\n            class:\n              'btn' +\n              (typeof sourceViewMode.className !== 'undefined'\n                ? ` ${sourceViewMode.className}`\n                : ''),\n            'data-view': sourceViewMode.mode,\n            'data-icon': sourceViewMode.icon,\n            'aria-label': sourceViewMode.title,\n            'aria-pressed': 'false',\n            title: sourceViewMode.title,\n          }).appendTo(this.$viewModeBtnContainer);\n\n          this.viewModeBtns[sourceViewMode.mode] = $viewModeBtn;\n\n          this.addListener(\n            $viewModeBtn,\n            'click',\n            {mode: sourceViewMode.mode},\n            function (ev) {\n              this.selectViewMode(ev.data.mode);\n              this.updateElements();\n            }\n          );\n        }\n      }\n\n      // Figure out which mode we should start with\n      var viewMode = this.getSelectedSourceState('mode');\n\n      // Maintain the structure view for source states that were saved with an older Craft version\n      if (\n        viewMode === 'table' &&\n        this.getSourceState($source.data('key'), 'order') === 'structure'\n      ) {\n        viewMode = 'structure';\n      }\n\n      if (!viewMode || !this.doesSourceHaveViewMode(viewMode)) {\n        // Try to keep using the current view mode\n        if (this.viewMode && this.doesSourceHaveViewMode(this.viewMode)) {\n          viewMode = this.viewMode;\n        }\n        // Just use the first one\n        else {\n          viewMode = this.sourceViewModes[0].mode;\n        }\n      }\n\n      this.selectViewMode(viewMode);\n\n      this.updateSourceMenu();\n      this.updateViewMenu();\n\n      if (!this.filterHudExists() && this.$source.data('default-filter')) {\n        this.createFilterHud({\n          showOnInit: false,\n          conditionConfig: this.$source.data('default-filter'),\n        });\n      } else {\n        this.updateFilterBtn();\n      }\n\n      this.onSelectSource();\n\n      this.sourcePath =\n        this.sourcePaths[this.sourceKey] ||\n        this.$source.data('default-source-path');\n\n      if (this.settings.context === 'index') {\n        const urlParams = Craft.getQueryParams();\n        urlParams.source = this.sourceKey;\n        Craft.setUrl(Craft.getUrl(Craft.path, urlParams));\n      }\n\n      return true;\n    },\n\n    selectSourceByKey: function (key) {\n      var $source = this.getSourceByKey(key);\n\n      if ($source) {\n        return this.selectSource($source);\n      } else {\n        return false;\n      }\n    },\n\n    getSourceData($source, key) {\n      $source ||= this.$source;\n      if (!$source) {\n        return undefined;\n      }\n      const data = $source.data(key);\n      if (data === undefined) {\n        const $parentSource = this.getParentSource($source);\n        if ($parentSource) {\n          return this.getSourceData($parentSource, key);\n        }\n      }\n      return data;\n    },\n\n    /**\n     * Returns the available sort attributes for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {Object[]}\n     */\n    getSortOptions: function ($source) {\n      const sortOptions = this.getSourceData($source, 'sort-opts') || [];\n\n      // Make sure there's at least one attribute\n      if (!sortOptions.length) {\n        sortOptions.push({\n          label: Craft.t('app', 'Title'),\n          attr: 'title',\n          defaultDir: 'asc',\n        });\n      }\n\n      return sortOptions;\n    },\n\n    /**\n     * Returns info about a sort attribute.\n     * @param {string} attribute\n     * @param {jQuery} [$source]\n     * @returns {?Object}\n     */\n    getSortOption: function (attribute, $source) {\n      return (\n        this.getSortOptions($source).find((o) => o.attr === attribute) || null\n      );\n    },\n\n    /**\n     * Returns the default sort attribute and direction for a source.\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getDefaultSort: function ($source) {\n      let defaultSort = this.getSourceData($source, 'default-sort');\n      if (defaultSort) {\n        if (typeof defaultSort === 'string') {\n          defaultSort = [defaultSort];\n        }\n\n        // Make sure it's valid\n        const sortOption = this.getSortOption(defaultSort[0], $source);\n        if (sortOption) {\n          // Fill in the default direction if it's not specified\n          if (!defaultSort[1]) {\n            defaultSort[1] = sortOption.defaultDir;\n          }\n\n          return defaultSort;\n        }\n      }\n\n      // Default to the first sort option\n      const sortOptions = this.getSortOptions($source);\n      return [sortOptions[0].attr, sortOptions[0].defaultDir];\n    },\n\n    /**\n     * Returns the available table columns for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {Object[]}\n     */\n    getTableColumnOptions: function ($source) {\n      return this.getSourceData($source, 'table-col-opts') || [];\n    },\n\n    /**\n     * Returns info about a table column.\n     * @param {string} attribute\n     * @param {jQuery} [$source]\n     * @returns {?Object}\n     */\n    getTableColumnOption: function (attribute, $source) {\n      return (\n        this.getTableColumnOptions($source).find((o) => o.attr === attribute) ||\n        null\n      );\n    },\n\n    /**\n     * Returns the default table columns for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getDefaultTableColumns: function ($source) {\n      return this.getSourceData($source, 'default-table-cols') || [];\n    },\n\n    /**\n     * Returns the selected sort attribute for a source\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getSelectedTableColumns: function ($source) {\n      $source ||= this.$source;\n      if ($source) {\n        const attributes = this.getSourceState(\n          $source.data('key'),\n          'tableColumns'\n        );\n\n        if (attributes) {\n          // Only return the valid ones\n          return attributes.filter(\n            (a) => !!this.getTableColumnOption(a, $source)\n          );\n        }\n      }\n\n      return this.getDefaultTableColumns($source);\n    },\n\n    setSelectedTableColumns: function (attributes) {\n      this.setSelecetedSourceState({\n        tableColumns: attributes,\n      });\n\n      // Update the view menu\n      if (this.activeViewMenu) {\n        this.activeViewMenu.updateTableColumnField();\n      }\n    },\n\n    getViewModesForSource: function () {\n      const viewModes = [];\n\n      if (!Garnish.isMobileBrowser(true)) {\n        if (Garnish.hasAttr(this.$source, 'data-has-structure')) {\n          viewModes.push({\n            mode: 'structure',\n            title: Craft.t('app', 'Display in a structured table'),\n            icon: Craft.orientation === 'rtl' ? 'structurertl' : 'structure',\n          });\n        }\n\n        viewModes.push({\n          mode: 'table',\n          title: Craft.t('app', 'Display in a table'),\n          icon: 'list',\n        });\n      }\n\n      if (this.$source && Garnish.hasAttr(this.$source, 'data-has-thumbs')) {\n        viewModes.push({\n          mode: 'thumbs',\n          title: Craft.t('app', 'Display as thumbnails'),\n          icon: 'grid',\n        });\n      }\n\n      viewModes.push({\n        mode: 'cards',\n        title: Craft.t('app', 'Display as cards'),\n        icon: 'element-cards',\n      });\n\n      if (this.settings.allowedViewModes) {\n        return viewModes.filter((mode) =>\n          this.settings.allowedViewModes.includes(mode.mode)\n        );\n      }\n\n      return viewModes;\n    },\n\n    doesSourceHaveViewMode: function (viewMode) {\n      if (!this.sourceViewModes) {\n        return false;\n      }\n\n      for (var i = 0; i < this.sourceViewModes.length; i++) {\n        if (this.sourceViewModes[i].mode === viewMode) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    validateViewMode: function (viewMode) {\n      if (viewMode && this.doesSourceHaveViewMode(viewMode)) {\n        return viewMode;\n      }\n\n      if (this.sourceViewModes && this.sourceViewModes.length) {\n        return this.sourceViewModes[0].mode;\n      }\n\n      return this.doesSourceHaveViewMode('table') ? 'table' : 'cards';\n    },\n\n    selectViewMode: function (viewMode, force) {\n      // Make sure that the current source supports it\n      if (!force && !this.doesSourceHaveViewMode(viewMode)) {\n        viewMode = this.sourceViewModes[0].mode;\n      }\n\n      // Has anything changed?\n      if (viewMode === this._viewMode) {\n        return;\n      }\n\n      // Deselect the previous view mode\n      if (\n        this._viewMode &&\n        typeof this.viewModeBtns[this._viewMode] !== 'undefined'\n      ) {\n        this.viewModeBtns[this._viewMode]\n          .removeClass('active')\n          .attr('aria-pressed', 'false');\n      }\n\n      this._viewMode = viewMode;\n      this.setSelecetedSourceState('mode', this._viewMode);\n\n      if (typeof this.viewModeBtns[this._viewMode] !== 'undefined') {\n        this.viewModeBtns[this._viewMode]\n          .addClass('active')\n          .attr('aria-pressed', 'true');\n      }\n    },\n\n    createView: function (mode, settings) {\n      var viewClass = this.getViewClass(mode);\n      return new viewClass(this, this.$elements, settings);\n    },\n\n    getViewClass: function (mode) {\n      switch (mode) {\n        case 'table':\n        case 'structure':\n          return Craft.TableElementIndexView;\n        case 'cards':\n          return Craft.CardsElementIndexView;\n        case 'thumbs':\n          return Craft.ThumbsElementIndexView;\n        default:\n          throw `View mode \"${mode}\" not supported.`;\n      }\n    },\n\n    rememberDisabledElementId: function (id) {\n      var index = $.inArray(id, this.settings.disabledElementIds);\n\n      if (index === -1) {\n        this.settings.disabledElementIds.push(id);\n      }\n    },\n\n    forgetDisabledElementId: function (id) {\n      var index = $.inArray(id, this.settings.disabledElementIds);\n\n      if (index !== -1) {\n        this.settings.disabledElementIds.splice(index, 1);\n      }\n    },\n\n    enableElements: function ($elements) {\n      $elements\n        .removeClass('disabled')\n        .parents('.disabled')\n        .removeClass('disabled');\n\n      for (var i = 0; i < $elements.length; i++) {\n        var id = $($elements[i]).data('id');\n        this.forgetDisabledElementId(id);\n      }\n\n      this.onEnableElements($elements);\n    },\n\n    disableElements: function ($elements) {\n      $elements.removeClass('sel').addClass('disabled');\n\n      for (var i = 0; i < $elements.length; i++) {\n        var id = $($elements[i]).data('id');\n        this.rememberDisabledElementId(id);\n      }\n\n      this.onDisableElements($elements);\n    },\n\n    getElementById: function (id) {\n      return this.view.getElementById(id);\n    },\n\n    enableElementsById: function (ids) {\n      ids = $.makeArray(ids);\n\n      for (var i = 0; i < ids.length; i++) {\n        var id = ids[i],\n          $element = this.getElementById(id);\n\n        if ($element && $element.length) {\n          this.enableElements($element);\n        } else {\n          this.forgetDisabledElementId(id);\n        }\n      }\n    },\n\n    disableElementsById: function (ids) {\n      ids = $.makeArray(ids);\n\n      for (var i = 0; i < ids.length; i++) {\n        var id = ids[i],\n          $element = this.getElementById(id);\n\n        if ($element && $element.length) {\n          this.disableElements($element);\n        } else {\n          this.rememberDisabledElementId(id);\n        }\n      }\n    },\n\n    selectElementAfterUpdate: function (id) {\n      if (this._autoSelectElements === null) {\n        this._autoSelectElements = [];\n      }\n\n      this._autoSelectElements.push(id);\n    },\n\n    addButton: function ($button) {\n      this.getButtonContainer().append($button);\n    },\n\n    isShowingSidebar: function () {\n      if (this.showingSidebar === null) {\n        this.showingSidebar =\n          this.$sidebar.length && !this.$sidebar.hasClass('hidden');\n      }\n\n      return this.showingSidebar;\n    },\n\n    getButtonContainer: function () {\n      // Is there a predesignated place where buttons should go?\n      if (this.settings.buttonContainer) {\n        return $(this.settings.buttonContainer);\n      } else {\n        var $container = $(`#${this.namespaceId('action-buttons')}`);\n\n        if (!$container.length) {\n          $container = $(`<div/>`, {\n            id: this.namespaceId('action-buttons'),\n          }).appendTo($(`#${this.namespaceId('header')}`));\n        }\n\n        return $container;\n      }\n    },\n\n    setIndexBusy: function () {\n      this.$elements.addClass('busy');\n      this.$updateSpinner.appendTo(this.$elements);\n      this.isIndexBusy = true;\n\n      // Blur the active element, if it's within the element listing pane\n      if (\n        document.activeElement &&\n        this.$elements[0].contains(document.activeElement)\n      ) {\n        this._activeElement = document.activeElement;\n        document.activeElement.blur();\n      }\n\n      let elementsHeight = this.$elements.height();\n      let windowHeight = window.innerHeight;\n      let scrollTop = $(document).scrollTop();\n\n      if (this.settings.context == 'modal') {\n        windowHeight = this.$elements.parents('.modal').height();\n        scrollTop = this.$elements.scrollParent().scrollTop();\n      }\n\n      if (elementsHeight > windowHeight) {\n        let positionTop = Math.floor(scrollTop + windowHeight / 2) - 100;\n        positionTop = Math.floor((positionTop / elementsHeight) * 100);\n\n        document.documentElement.style.setProperty(\n          '--elements-busy-top-position',\n          positionTop + '%'\n        );\n      }\n      this.updateLiveRegion(Craft.t('app', 'Loading'));\n    },\n\n    setIndexAvailable: function () {\n      this.$elements.removeClass('busy');\n      this.$updateSpinner.remove();\n      this.isIndexBusy = false;\n\n      // Refocus the previously-focused element\n      if (this._activeElement) {\n        if (\n          !document.activeElement ||\n          document.activeElement === document.body\n        ) {\n          if (document.body.contains(this._activeElement)) {\n            this._activeElement.focus();\n          } else if (this._activeElement.id) {\n            $(`#${this._activeElement.id}`).focus();\n          }\n        }\n        this._activeElement = null;\n      }\n    },\n\n    createCustomizeSourcesModal: function () {\n      // Recreate it each time\n      var modal = new Craft.CustomizeSourcesModal(this, {\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        onHide: function () {\n          modal.destroy();\n        },\n      });\n\n      return modal;\n    },\n\n    disable: function () {\n      if (this.sourceNav) {\n        this.sourceNav.disable();\n      }\n\n      if (this.view) {\n        this.view.disable();\n      }\n\n      this.base();\n    },\n\n    enable: function () {\n      if (this.sourceNav) {\n        this.sourceNav.enable();\n      }\n\n      if (this.view) {\n        this.view.enable();\n      }\n\n      this.base();\n    },\n\n    onAfterInit: function () {\n      this.settings.onAfterInit();\n      this.trigger('afterInit');\n    },\n\n    onSelectSource: function () {\n      this.settings.onSelectSource(this.sourceKey);\n      this.trigger('selectSource', {sourceKey: this.sourceKey});\n    },\n\n    onSelectSite: function () {\n      this.settings.onSelectSite(this.siteId);\n      this.trigger('selectSite', {siteId: this.siteId});\n    },\n\n    onBeforeUpdateElements: function () {\n      this.settings.onBeforeUpdateElements();\n      this.trigger('beforeUpdateElements');\n    },\n\n    onUpdateElements: function () {\n      this.settings.onUpdateElements();\n      this.trigger('updateElements');\n    },\n\n    onCountResults: function () {\n      this.settings.onCountResults(\n        this.totalResults,\n        this.totalUnfilteredResults\n      );\n      this.trigger('countResults', {\n        total: this.totalResults,\n        totalUnfiltered: this.totalUnfilteredResults,\n      });\n    },\n\n    onSelectionChange: function () {\n      this.settings.onSelectionChange();\n      this.trigger('selectionChange');\n    },\n\n    onEnableElements: function ($elements) {\n      this.settings.onEnableElements($elements);\n      this.trigger('enableElements', {elements: $elements});\n    },\n\n    onDisableElements: function ($elements) {\n      this.settings.onDisableElements($elements);\n      this.trigger('disableElements', {elements: $elements});\n    },\n\n    onAfterAction: function (action, params) {\n      this.settings.onAfterAction(action, params);\n      this.trigger('afterAction', {action: action, params: params});\n    },\n\n    // UI state handlers\n    // -------------------------------------------------------------------------\n\n    _handleSourceSelectionChange: function (event) {\n      // If the selected source was just removed (maybe because its parent was collapsed),\n      // there won't be a selected source\n\n      if (!this.sourceNav.$selectedItem) {\n        this.sourceNav.selectItem(this.$visibleSources.first());\n        return;\n      }\n\n      if (this.selectSource(this.sourceNav.$selectedItem)) {\n        this.updateElements();\n      }\n    },\n\n    _handleActionTriggerSubmit: function (ev) {\n      ev.preventDefault();\n\n      const $form = $(ev.currentTarget);\n\n      // Make sure Craft.ElementActionTrigger isn't overriding this\n      if ($form.hasClass('disabled') || $form.data('custom-handler')) {\n        return;\n      }\n\n      this._submitActionInternal(\n        $form.data('action'),\n        $form.data('trigger') && $form.data('trigger').data('trigger'),\n        Garnish.getPostData($form)\n      );\n    },\n\n    _handleMenuActionTriggerSubmit: function (ev) {\n      const $option = $(ev.option);\n\n      // Make sure Craft.ElementActionTrigger isn't overriding this\n      if ($option.hasClass('disabled') || $option.data('custom-handler')) {\n        return;\n      }\n\n      this._submitActionInternal(\n        $option.data('action'),\n        $option.data('trigger')\n      );\n    },\n\n    _submitActionInternal: async function (action, trigger, actionParams) {\n      const $selectedElements = this.getSelectedElements();\n\n      await this.submitAction(action, actionParams, async () => {\n        if (trigger) {\n          await trigger.settings.beforeActivate($selectedElements, this);\n        }\n      });\n\n      if (trigger) {\n        await trigger.settings.afterActivate($selectedElements, this);\n      }\n    },\n\n    _handleStatusChange: function (ev) {\n      this.statusMenu.$options.removeClass('sel');\n      var $option = $(ev.selectedOption).addClass('sel');\n      this.$statusMenuBtn.html($option.html());\n\n      this.trashed = false;\n      this.drafts = false;\n      this.status = null;\n      let queryParam = null;\n\n      if (Garnish.hasAttr($option, 'data-trashed')) {\n        this.trashed = true;\n        queryParam = 'trashed';\n      } else if (Garnish.hasAttr($option, 'data-drafts')) {\n        this.drafts = true;\n        queryParam = 'drafts';\n      } else {\n        this.status = queryParam = $option.data('status') || null;\n      }\n\n      if (this.settings.context === 'index') {\n        Craft.setQueryParam('status', queryParam);\n      }\n\n      this.updateElements();\n    },\n\n    _handleSiteChange: function (ev) {\n      this.siteMenu.$options.removeClass('sel');\n      var $option = $(ev.selectedOption).addClass('sel');\n      this.$siteMenuBtn.html($option.html());\n      this._setSite($option.data('site-id'));\n      if (this.initialized) {\n        this.updateElements();\n      }\n      this.onSelectSite();\n    },\n\n    _setSite: function (siteId) {\n      let firstSite = this.siteId === null;\n      this.siteId = siteId;\n\n      this.updateSourceVisibility();\n\n      if (\n        this.initialized &&\n        !firstSite &&\n        (!this.$source || !this.$source.length) &&\n        this.$visibleSources.length\n      ) {\n        this.selectSource(this.$visibleSources[0]);\n      }\n\n      // Hide any empty-nester headings\n      var $headings = this.getSourceContainer().children('.heading');\n      var $heading;\n\n      for (let i = 0; i < $headings.length; i++) {\n        $heading = $headings.eq(i);\n        if ($heading.has('> ul > li:not(.hidden)').length !== 0) {\n          $heading.removeClass('hidden');\n        } else {\n          $heading.addClass('hidden');\n        }\n      }\n\n      if (this.initialized) {\n        if (this.settings.context === 'index') {\n          // Remember this site for later\n          Craft.cp.setSiteId(siteId);\n        }\n\n        this.updateFilterBtn();\n      }\n    },\n\n    updateSourceVisibility: function () {\n      this.$visibleSources = $();\n\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = this.$sources.eq(i);\n\n        if (\n          !Garnish.hasAttr($source, 'data-disabled') &&\n          (typeof $source.data('sites') === 'undefined' ||\n            $source\n              .data('sites')\n              .toString()\n              .split(',')\n              .some((siteId) => {\n                if (siteId == this.siteId) {\n                  return true;\n                }\n                // maybe UUIDs were used\n                if (siteId != parseInt(siteId)) {\n                  const site = Craft.sites.find(\n                    (site) => site.id == this.siteId\n                  );\n                  if (site && siteId == site.uid) {\n                    return true;\n                  }\n                }\n\n                return false;\n              }))\n        ) {\n          $source.parent().removeClass('hidden');\n          this.$visibleSources = this.$visibleSources.add($source);\n        } else {\n          $source.parent().addClass('hidden');\n\n          // Is this the currently selected source?\n          if (this.$source && this.$source.get(0) === $source.get(0)) {\n            this.$source = null;\n            this.$rootSource = null;\n            this.sourceKey = null;\n            this.rootSourceKey = null;\n          }\n        }\n      }\n    },\n\n    _handleSelectionChange: function () {\n      this.updateSelectAllCheckbox();\n      this.updateActionTriggers();\n      this.onSelectionChange();\n    },\n\n    _handleSourceDblClick: function (ev) {\n      this._toggleSource($(ev.currentTarget));\n      ev.stopPropagation();\n    },\n\n    _handleSourceToggleClick: function (ev) {\n      this._toggleSource($(ev.currentTarget).prev('a'));\n      ev.stopPropagation();\n    },\n\n    // Source management\n    // -------------------------------------------------------------------------\n\n    _getSourcesInList: function ($list, topLevel) {\n      let $sources = $list.find('> li:not(.heading) > a');\n      if (topLevel) {\n        $sources = $sources.add($list.find('> li.heading > ul > li > a'));\n      }\n      return $sources;\n    },\n\n    _getChildSources: function ($source) {\n      var $list = $source.siblings('ul');\n      return this._getSourcesInList($list);\n    },\n\n    _getSourceToggle: function ($source) {\n      return $source.siblings('.toggle');\n    },\n\n    _toggleSource: function ($source) {\n      if ($source.parent('li').hasClass('expanded')) {\n        this._collapseSource($source);\n      } else {\n        this._expandSource($source);\n      }\n    },\n\n    _expandSource: function ($source) {\n      $source.next('.toggle').attr({\n        'aria-expanded': 'true',\n      });\n      $source.parent('li').addClass('expanded');\n\n      var $childSources = this._getChildSources($source);\n      for (let i = 0; i < $childSources.length; i++) {\n        this.initSource($($childSources[i]));\n        if (this.$visibleSources) {\n          this.$visibleSources = this.$visibleSources.add($childSources[i]);\n        }\n      }\n\n      var key = $source.data('key');\n      if (this.instanceState.expandedSources.indexOf(key) === -1) {\n        this.instanceState.expandedSources.push(key);\n        this.storeInstanceState();\n      }\n    },\n\n    _collapseSource: function ($source) {\n      $source.next('.toggle').attr({\n        'aria-expanded': 'false',\n        'aria-label': Craft.t('app', 'Show nested sources'),\n      });\n      $source.parent('li').removeClass('expanded');\n\n      var $childSources = this._getChildSources($source);\n      for (let i = 0; i < $childSources.length; i++) {\n        this.deinitSource($($childSources[i]));\n        this.$visibleSources = this.$visibleSources.not($childSources[i]);\n      }\n\n      var i = this.instanceState.expandedSources.indexOf($source.data('key'));\n      if (i !== -1) {\n        this.instanceState.expandedSources.splice(i, 1);\n        this.storeInstanceState();\n      }\n    },\n\n    // View\n    // -------------------------------------------------------------------------\n\n    async _updateView(params, response) {\n      // Cleanup\n      // -------------------------------------------------------------\n\n      // Get rid of the old action triggers regardless of whether the new batch has actions or not\n      if (this.actions) {\n        this.hideActionTriggers();\n\n        if (this.triggers) {\n          for (let trigger of this.triggers) {\n            trigger.destroy();\n          }\n        }\n\n        this.actions =\n          this.actionsHeadHtml =\n          this.actionsBodyHtml =\n          this.triggers =\n          this._$triggers =\n          this.$actionMenuBtn =\n            null;\n      }\n\n      // Update the count text\n      // -------------------------------------------------------------\n\n      if (this.$countContainer.length) {\n        this.$countSpinner.removeClass('hidden');\n        this.$countContainer.html('');\n\n        this._countResults()\n          .then((total) => {\n            this.$countSpinner.addClass('hidden');\n            const itemLabel = this.getItemLabel();\n            const itemsLabel = this.getItemsLabel();\n\n            if (!this.paginated) {\n              let countLabel = Craft.t(\n                'app',\n                '{total, number} {total, plural, =1{{item}} other{{items}}}',\n                {\n                  total: total,\n                  item: itemLabel,\n                  items: itemsLabel,\n                }\n              );\n              this.$countContainer.text(countLabel);\n            } else {\n              const first = this.getFirstItemNumber(total);\n              const last = this.getLastItemNumber(first, total);\n              let countLabel = Craft.t(\n                'app',\n                '{first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}',\n                {\n                  first: first,\n                  last: last,\n                  total: total,\n                  item: itemLabel,\n                  items: itemsLabel,\n                }\n              );\n\n              let $paginationContainer = $(\n                '<div class=\"flex pagination\"/>'\n              ).appendTo(this.$countContainer);\n              let totalPages = Math.max(\n                Math.ceil(total / this.settings.batchSize),\n                1\n              );\n\n              const $paginationNav = $('<nav/>', {\n                class: 'flex',\n                'aria-label': Craft.t('app', '{element} pagination', {\n                  element: itemLabel,\n                }),\n              }).appendTo($paginationContainer);\n\n              let $prevBtn = $('<button/>', {\n                type: 'button',\n                role: 'button',\n                class:\n                  'page-link prev-page' + (this.page > 1 ? '' : ' disabled'),\n                disabled: this.page === 1,\n                title: Craft.t('app', 'Previous Page'),\n              }).appendTo($paginationNav);\n              let $nextBtn = $('<button/>', {\n                type: 'button',\n                role: 'button',\n                class:\n                  'page-link next-page' +\n                  (this.page < totalPages ? '' : ' disabled'),\n                disabled: this.page === totalPages,\n                title: Craft.t('app', 'Next Page'),\n              }).appendTo($paginationNav);\n\n              $('<div/>', {\n                class: 'page-info',\n                text: countLabel,\n              }).appendTo($paginationContainer);\n\n              if (this.page > 1) {\n                this.addListener($prevBtn, 'click', function () {\n                  this.removeListener($prevBtn, 'click');\n                  this.removeListener($nextBtn, 'click');\n                  this.setPage(this.page - 1);\n                  this.updateElements(true);\n                });\n              }\n\n              if (this.page < totalPages) {\n                this.addListener($nextBtn, 'click', function () {\n                  this.removeListener($prevBtn, 'click');\n                  this.removeListener($nextBtn, 'click');\n                  this.setPage(this.page + 1);\n                  this.updateElements(true);\n                });\n              }\n            }\n          })\n          .catch(() => {\n            this.$countSpinner.addClass('hidden');\n          });\n      }\n\n      // Update the view with the new container + elements HTML\n      // -------------------------------------------------------------\n\n      this.$elements.html(response.html);\n      await Craft.appendHeadHtml(response.headHtml);\n      await Craft.appendBodyHtml(response.bodyHtml);\n\n      // Batch actions setup\n      // -------------------------------------------------------------\n\n      this.$selectAllContainer = this.$elements.find(\n        '.selectallcontainer:first'\n      );\n\n      if (this.multiSelect || (response.actions && response.actions.length)) {\n        if (this.$selectAllContainer.length) {\n          if (response.actions && response.actions.length) {\n            this.actions = response.actions;\n            this.actionsHeadHtml = response.actionsHeadHtml;\n            this.actionsBodyHtml = response.actionsBodyHtml;\n          }\n\n          if (this.settings.actions && this.settings.actions.length) {\n            if (!this.actions) {\n              this.actions = [];\n            }\n\n            for (let action of this.settings.actions) {\n              // clone it so bodyHtml doesn't make it into this.actions\n              action = Object.assign({}, action);\n              if (action.bodyHtml) {\n                this.actionsBodyHtml += action.bodyHtml;\n                delete action.bodyHtml;\n              }\n              this.actions.push(action);\n            }\n          }\n\n          // Create the select all checkbox\n          this.$selectAllCheckbox = $('<div class=\"checkbox\"/>')\n            .prependTo(this.$selectAllContainer)\n            .attr({\n              role: 'checkbox',\n              tabindex: '0',\n              'aria-checked': 'false',\n              'aria-label': Craft.t('app', 'Select all'),\n            });\n\n          this.addListener(this.$selectAllContainer, 'click', function () {\n            if (this.view.getSelectedElements().length === 0) {\n              this.view.selectAllElements();\n            } else {\n              this.view.deselectAllElements();\n            }\n          });\n\n          this.addListener(this.$selectAllCheckbox, 'keydown', function (ev) {\n            if (ev.keyCode === Garnish.SPACE_KEY) {\n              ev.preventDefault();\n\n              $(ev.currentTarget).trigger('click');\n            }\n          });\n        }\n      } else if (this.$selectAllContainer.prop('nodeName') !== 'TH') {\n        if (!this.$selectAllContainer.siblings().length) {\n          this.$selectAllContainer.parent('.header').remove();\n        }\n        this.$selectAllContainer.remove();\n      }\n\n      // Exporters setup\n      // -------------------------------------------------------------\n\n      this.exporters = response.exporters;\n      this.exportersByType = Craft.index(this.exporters || [], (e) => e.type);\n\n      if (this.exporters && this.exporters.length) {\n        this.$exportBtn.removeClass('hidden');\n      } else {\n        this.$exportBtn.addClass('hidden');\n      }\n\n      // Create the view\n      // -------------------------------------------------------------\n\n      const settings = Object.assign(\n        {\n          context: this.settings.context,\n          batchSize:\n            this.isAdministrative || this.viewMode === 'structure'\n              ? this.settings.batchSize\n              : null,\n          params: params,\n          selectable: this.selectable,\n          multiSelect: this.multiSelect,\n          canSelectElement: this.settings.canSelectElement,\n          checkboxMode: this.selectable,\n          waitForDoubleClicks: this.settings.waitForDoubleClicks,\n          sortable: this.sortable,\n          onSelectionChange: this._handleSelectionChange.bind(this),\n          onSortChange: this.settings.onSortChange,\n        },\n        this.getViewSettings()\n      );\n\n      // Kill the old view class\n      if (this.view) {\n        this.view.destroy();\n        delete this.view;\n      }\n\n      this.view = this.createView(this.getSelectedViewMode(), settings);\n\n      // Auto-select elements\n      // -------------------------------------------------------------\n\n      if (this._autoSelectElements) {\n        if (this.selectable) {\n          for (var i = 0; i < this._autoSelectElements.length; i++) {\n            this.view.selectElementById(this._autoSelectElements[i]);\n          }\n        }\n\n        this._autoSelectElements = null;\n      }\n\n      // Trigger the event\n      // -------------------------------------------------------------\n\n      this.onUpdateElements();\n    },\n\n    _updateBadgeCounts: function (badgeCounts) {\n      for (let sourceKey in badgeCounts) {\n        if (badgeCounts.hasOwnProperty(sourceKey)) {\n          const $source = this.getSourceByKey(sourceKey);\n          if ($source) {\n            let $badge = $source.children('.badge');\n            if (badgeCounts[sourceKey] !== null) {\n              if (!$badge.length) {\n                $badge = $('<span class=\"badge\"/>').appendTo($source);\n              }\n              $badge.text(badgeCounts[sourceKey]);\n            } else if ($badge) {\n              $badge.remove();\n            }\n          }\n        }\n      }\n    },\n\n    _countResults: function () {\n      return new Promise((resolve, reject) => {\n        if (this.totalResults !== null) {\n          resolve(this.totalResults, this.totalUnfilteredResults);\n          this.onCountResults();\n        } else {\n          var params = this.getViewParams();\n          delete params.baseCriteria.offset;\n          delete params.baseCriteria.limit;\n\n          // Make sure we've got an active result set ID\n          if (this.resultSet === null) {\n            this.resultSet = Math.floor(Math.random() * 100000000);\n          }\n          params.resultSet = this.resultSet;\n\n          Craft.sendActionRequest('POST', this.settings.countElementsAction, {\n            data: params,\n            cancelToken: this._createCancelToken(),\n          })\n            .then((response) => {\n              if (response.data.resultSet == this.resultSet) {\n                this.totalResults = response.data.total;\n                this.totalUnfilteredResults = response.data.unfilteredTotal;\n                resolve(this.totalResults, this.totalUnfilteredResults);\n                this.onCountResults();\n              } else {\n                reject();\n              }\n            })\n            .catch(reject);\n        }\n      });\n    },\n\n    _createTriggers: async function () {\n      this.triggers = [];\n      this._$triggers = $();\n      const safeMenuActions = [];\n      const destructiveMenuActions = [];\n\n      for (let i = 0; i < this.actions.length; i++) {\n        const action = this.actions[i];\n\n        if (action.trigger) {\n          const $trigger = $('<div/>', {\n            id: `${this.namespaceId(action.type)}-actiontrigger`,\n          }).append(action.trigger);\n          $trigger.find('.btn').addClass('secondary');\n\n          // Add any active inputs to action.settings,\n          // and remove their input names so they don't muck up the parent form\n          if (!action.settings) {\n            action.settings = {};\n          }\n          $.extend(\n            action.settings,\n            Craft.expandPostArray(Garnish.getPostData($trigger))\n          );\n          $trigger.find('[name]').removeAttr('name');\n\n          // create a new form at the end of the DOM, in case the element index is within another form\n          const formId = `element-action-form-${Math.floor(\n            Math.random() * 1000000\n          )}`;\n          const $form = $('<form/>', {\n            id: formId,\n            method: 'post',\n            action: '',\n            class: 'hidden',\n            data: {action},\n          }).appendTo(Garnish.$bod);\n\n          // redirect all submits to the remote form\n          $trigger\n            .find('button[type=submit],input[type=submit],.formsubmit')\n            .addClass('formsubmit')\n            .attr('data-form', formId);\n\n          $form.data('trigger', $trigger);\n\n          this.addListener($form, 'submit', '_handleActionTriggerSubmit');\n          this._$triggers = this._$triggers.add($trigger);\n        } else {\n          if (!action.destructive) {\n            safeMenuActions.push(action);\n          } else {\n            destructiveMenuActions.push(action);\n          }\n        }\n      }\n\n      if (safeMenuActions.length || destructiveMenuActions.length) {\n        const $menuTrigger = $('<form/>');\n\n        this.$actionMenuBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn secondary menubtn',\n          'data-icon': 'settings',\n          title: Craft.t('app', 'Actions'),\n        }).appendTo($menuTrigger);\n\n        const $menu = $('<ul class=\"menu\"/>').appendTo($menuTrigger),\n          $safeList = this._createMenuTriggerList(safeMenuActions, false),\n          $destructiveList = this._createMenuTriggerList(\n            destructiveMenuActions,\n            true\n          );\n\n        if ($safeList) {\n          $safeList.appendTo($menu);\n        }\n\n        if ($safeList && $destructiveList) {\n          $('<hr/>').appendTo($menu);\n        }\n\n        if ($destructiveList) {\n          $destructiveList.appendTo($menu);\n        }\n\n        this._$triggers = this._$triggers.add($menuTrigger);\n      }\n\n      this._$triggers.appendTo(this.$actionsContainer);\n\n      if (this.isAdministrative) {\n        // set Craft.currentElementIndex for actions\n        Craft.currentElementIndex = this;\n      }\n\n      await Craft.appendHeadHtml(this.actionsHeadHtml);\n      await Craft.appendBodyHtml(this.actionsBodyHtml);\n\n      Craft.initUiElements(this._$triggers);\n\n      if (this.$actionMenuBtn) {\n        this.$actionMenuBtn\n          .data('menubtn')\n          .on('optionSelect', this._handleMenuActionTriggerSubmit.bind(this));\n      }\n    },\n\n    _showExportHud: function () {\n      this.$exportBtn.addClass('active');\n      this.$exportBtn.attr('aria-expanded', 'true');\n\n      var $form = $('<form/>', {\n        class: 'export-form',\n      });\n\n      var typeOptions = [];\n      for (var i = 0; i < this.exporters.length; i++) {\n        typeOptions.push({\n          label: this.exporters[i].name,\n          value: this.exporters[i].type,\n        });\n      }\n      var $typeField = Craft.ui\n        .createSelectField({\n          label: Craft.t('app', 'Export Type'),\n          options: typeOptions,\n          class: 'fullwidth',\n        })\n        .appendTo($form);\n\n      var $formatField = Craft.ui\n        .createSelectField({\n          label: Craft.t('app', 'Format'),\n          options: [\n            {label: 'CSV', value: 'csv'},\n            {label: 'JSON', value: 'json'},\n            {label: 'XML', value: 'xml'},\n          ],\n          class: 'fullwidth',\n        })\n        .appendTo($form);\n\n      let $typeSelect = $typeField.find('select');\n      this.addListener($typeSelect, 'change', () => {\n        let type = $typeSelect.val();\n        if (this.exportersByType[type].formattable) {\n          $formatField.removeClass('hidden');\n        } else {\n          $formatField.addClass('hidden');\n        }\n      });\n      $typeSelect.trigger('change');\n\n      // Only show the Limit field if there aren't any selected elements\n      var selectedElementIds = this.view.getSelectedElementIds();\n\n      if (!selectedElementIds.length) {\n        var $limitField = Craft.ui\n          .createTextField({\n            label: Craft.t('app', 'Limit'),\n            placeholder: Craft.t('app', 'No limit'),\n            type: 'number',\n            min: 1,\n          })\n          .appendTo($form);\n      }\n\n      const $submitBtn = Craft.ui\n        .createSubmitButton({\n          class: 'fullwidth',\n          label: Craft.t('app', 'Export'),\n          spinner: true,\n        })\n        .appendTo($form);\n\n      const $exportSubmit = new Garnish.MultiFunctionBtn($submitBtn);\n\n      var hud = new Garnish.HUD(this.$exportBtn, $form);\n\n      hud.on('hide', () => {\n        this.$exportBtn.removeClass('active');\n        this.$exportBtn.attr('aria-expanded', 'false');\n      });\n\n      var submitting = false;\n\n      this.addListener($form, 'submit', function (ev) {\n        ev.preventDefault();\n        if (submitting) {\n          return;\n        }\n\n        submitting = true;\n        $exportSubmit.busyEvent();\n\n        var params = this.getViewParams();\n        delete params.baseCriteria.offset;\n        delete params.baseCriteria.limit;\n        delete params.collapsedElementIds;\n\n        params.type = $typeField.find('select').val();\n        params.format = $formatField.find('select').val();\n\n        if (selectedElementIds.length) {\n          params.criteria.id = selectedElementIds;\n        } else {\n          var limit = parseInt($limitField.find('input').val());\n          if (limit && !isNaN(limit)) {\n            params.criteria.limit = limit;\n          }\n        }\n\n        if (Craft.csrfTokenValue) {\n          params[Craft.csrfTokenName] = Craft.csrfTokenValue;\n        }\n\n        Craft.downloadFromUrl(\n          'POST',\n          Craft.getActionUrl('element-indexes/export'),\n          params\n        )\n          .catch((e) => {\n            if (!axios.isCancel(e)) {\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n            }\n          })\n          .finally(() => {\n            submitting = false;\n            $exportSubmit.successEvent();\n          });\n      });\n    },\n\n    _createMenuTriggerList: function (actions, destructive) {\n      if (actions && actions.length) {\n        const $ul = $('<ul/>');\n\n        for (let action of actions) {\n          $('<li/>')\n            .append(\n              $('<a/>', {\n                id: `${this.namespaceId(action.type)}-actiontrigger`,\n                class: destructive ? 'error' : null,\n                data: {action},\n                text: action.name,\n              })\n            )\n            .appendTo($ul);\n        }\n\n        return $ul;\n      }\n    },\n\n    filterHudExists: function () {\n      return (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey]\n      );\n    },\n\n    showFilterHud: function () {\n      if (!this.filterHudExists()) {\n        this.createFilterHud();\n      } else {\n        this.filterHuds[this.siteId][this.sourceKey].show();\n      }\n    },\n\n    createFilterHud: function (settings) {\n      if (!this.filterHuds[this.siteId]) {\n        this.filterHuds[this.siteId] = {};\n      }\n\n      this.filterHuds[this.siteId][this.sourceKey] = new FilterHud(\n        this,\n        this.sourceKey,\n        this.siteId,\n        settings\n      );\n\n      this.updateFilterBtn();\n    },\n\n    updateFilterBtn: function () {\n      this.$filterBtn.removeClass('active');\n\n      if (this.settings.context === 'index') {\n        Craft.setQueryParam('filters', null);\n      }\n\n      if (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey]\n      ) {\n        this.$filterBtn\n          .attr(\n            'aria-controls',\n            this.filterHuds[this.siteId][this.sourceKey].id\n          )\n          .attr(\n            'aria-expanded',\n            this.filterHuds[this.siteId][this.sourceKey].showing\n              ? 'true'\n              : 'false'\n          );\n\n        if (this.hasActiveFilter) {\n          this.$filterBtn.addClass('active');\n\n          if (this.settings.context === 'index') {\n            Craft.setQueryParam(\n              'filters',\n              this.filterHuds[this.siteId][this.sourceKey].serialized\n            );\n          }\n        }\n      } else {\n        this.$filterBtn.attr('aria-controls', null);\n      }\n    },\n  },\n  {\n    defaults: {\n      context: 'index',\n      namespace: null,\n      modal: null,\n      storageKey: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      allowedViewModes: null,\n      showHeaderColumn: true,\n      criteria: null,\n      batchSize: 100,\n      disabledElementIds: [],\n      selectable: false,\n      multiSelect: false,\n      waitForDoubleClicks: false,\n      canSelectElement: null,\n      canDuplicateElements: (selectedItems) => true,\n      onBeforeDuplicateElements: async (selectedItems) => {},\n      onDuplicateElements: async (selectedItems) => {},\n      canDeleteElements: (selectedItems) => true,\n      onBeforeDeleteElements: async (selectedItems) => {},\n      onDeleteElements: async (selectedItems) => {},\n      sortable: false,\n      inlineEditable: null,\n      actions: null,\n      buttonContainer: null,\n      hideSidebar: false,\n      toolbarSelector: '.toolbar:first',\n      refreshSourcesAction: 'element-indexes/get-source-tree-html',\n      updateElementsAction: 'element-indexes/get-elements',\n      countElementsAction: 'element-indexes/count-elements',\n      submitActionsAction: 'element-indexes/perform-action',\n      defaultSiteId: null,\n      defaultSource: null,\n      defaultSourcePath: null,\n      preferStoredSource: false,\n      showSourcePath: true,\n      canHaveDrafts: false,\n\n      elementTypeName: Craft.t('app', 'Element'),\n      elementTypePluralName: Craft.t('app', 'Elements'),\n\n      onAfterInit: $.noop,\n      onSelectSource: $.noop,\n      onSelectSite: $.noop,\n      onBeforeUpdateElements: $.noop,\n      onUpdateElements: $.noop,\n      onCountResults: $.noop,\n      onSelectionChange: $.noop,\n      onSourcePathChange: $.noop,\n      onEnableElements: $.noop,\n      onDisableElements: $.noop,\n      onAfterAction: $.noop,\n      onSortChange: $.noop,\n    },\n  }\n);\n\nconst SourceNav = Garnish.Base.extend(\n  {\n    $container: null,\n    $items: null,\n    $selectedItem: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      const items = this.$container.find('[data-source-item]');\n\n      this.setSettings(settings, SourceNav.defaults);\n\n      this.$items = $();\n      this.addItems(items);\n    },\n\n    addItems: function (items) {\n      const $items = $(items);\n\n      for (var i = 0; i < $items.length; i++) {\n        const item = $items[i];\n\n        this.addListener(item, 'click', this.handleClick.bind(this));\n        this.addListener(item, 'keydown', this.handleKeypress.bind(this));\n      }\n\n      this.$items = this.$items.add($items);\n    },\n\n    /**\n     * Remove All Items\n     */\n    removeAllItems: function () {\n      for (var i = 0; i < this.$items.length; i++) {\n        this._deinitItem(this.$items[i]);\n      }\n\n      this.$items = $();\n      this.$selectedItem = $();\n    },\n\n    handleKeypress: function (event) {\n      const {keyCode} = event;\n\n      if (keyCode === Garnish.RETURN_KEY || keyCode === Garnish.SPACE_KEY) {\n        event.preventDefault();\n        this.selectItem(event.target);\n      }\n    },\n\n    handleClick: function (event) {\n      const $item = this.getClosestItem(event.target);\n\n      this.selectItem($item);\n    },\n\n    getClosestItem: function (element) {\n      return $(element).closest('[data-source-item]');\n    },\n\n    selectItem: function (item) {\n      if (item.length === 0) {\n        return;\n      }\n\n      const $item = $(item);\n      this.deselectAll();\n\n      this.$selectedItem = $item\n        .attr('aria-current', 'true')\n        .addClass(this.settings.selectedClass);\n\n      this.onSelectionChange();\n    },\n\n    deselectAll: function () {\n      this.$items\n        .attr('aria-current', 'false')\n        .removeClass(this.settings.selectedClass);\n\n      this.onSelectionChange();\n    },\n\n    removeItems: function (items) {\n      let selectedItem;\n\n      items = $.makeArray(items);\n\n      let itemsChanged = false,\n        selectionChanged = false;\n\n      for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n\n        // Is this item in the list of navigation items?\n        const index = $.inArray(item, this.$items);\n\n        // Yes! Then deinitialize the item and remove it from the list\n        if (index !== -1) {\n          this._deinitItem(item);\n          this.$items.splice(index, 1);\n          itemsChanged = true;\n\n          // One of the items is currently selected\n          if ($(item).is(this.$selectedItem)) {\n            selectionChanged = true;\n            this.$selectedItem = null;\n          }\n        }\n      }\n\n      if (itemsChanged) {\n        if (selectionChanged) {\n          $(items).removeClass(this.settings.selectedClass);\n          this.onSelectionChange();\n        }\n      }\n    },\n\n    onSelectionChange: function () {\n      if (this.callbackFrame) {\n        Garnish.cancelAnimationFrame(this.callbackFrame);\n        this.callbackFrame = null;\n      }\n\n      this.callbackFrame = Garnish.requestAnimationFrame(\n        function () {\n          this.callbackFrame = null;\n          this.trigger('selectionChange');\n          this.settings.onSelectionChange();\n        }.bind(this)\n      );\n    },\n\n    _deinitItem: function (item) {\n      const $item = $(item);\n      this.removeAllListeners($item);\n    },\n  },\n  {\n    defaults: {\n      selectedClass: 'sel',\n      onSelectionChange: $.noop,\n    },\n  }\n);\n\nconst ViewMenu = Garnish.Base.extend({\n  elementIndex: null,\n  $source: null,\n  sourceKey: null,\n  menu: null,\n  id: null,\n\n  $trigger: null,\n  $container: null,\n  $sortField: null,\n  $sortAttributeSelect: null,\n  $sortDirectionPicker: null,\n  sortDirectionListbox: null,\n  $tableColumnsField: null,\n  $tableColumnsContainer: null,\n  $revertContainer: null,\n  $revertBtn: null,\n  $closeBtn: null,\n\n  init: function (elementIndex, $source) {\n    this.elementIndex = elementIndex;\n    this.$source = $source;\n    this.sourceKey = $source.data('key');\n    this.id = `view-menu-${Math.floor(Math.random() * 1000000000)}`;\n\n    this.$trigger = $('<button/>', {\n      type: 'button',\n      class: 'btn menubtn hidden',\n      text: Craft.t('app', 'View'),\n      'aria-label': Craft.t('app', 'View settings'),\n      'aria-controls': this.id,\n      'data-icon': 'sliders',\n    }).appendTo(this.elementIndex.$toolbar);\n\n    this.$container = $('<div/>', {\n      id: this.id,\n      class: 'menu menu--disclosure element-index-view-menu',\n      'data-align': 'right',\n    }).appendTo(Garnish.$bod);\n\n    this._buildMenu();\n\n    this.addListener(this.$container, 'mousedown', (ev) => {\n      ev.stopPropagation();\n    });\n\n    this.menu = new Garnish.DisclosureMenu(this.$trigger);\n\n    this.menu.on('show', () => {\n      this.$trigger.addClass('active');\n      this.updateSortField();\n      this.updateTableFieldVisibility();\n    });\n\n    this.menu.on('hide', () => {\n      this.$trigger.removeClass('active');\n\n      // Move all checked table column checkboxes to the top once it's fully faded out\n      setTimeout(() => {\n        this.tidyTableColumnField();\n      }, Garnish.FX_DURATION);\n    });\n  },\n\n  showTrigger: function () {\n    this.$trigger.removeClass('hidden');\n  },\n\n  hideTrigger: function () {\n    this.$trigger.data('trigger').hide();\n    this.$trigger.addClass('hidden');\n    this.menu.hide();\n  },\n\n  updateTableFieldVisibility: function () {\n    // we only want to show the \"Table Columns\" checkboxes and \"Use defaults\" btn in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      if (this.$tableColumnsContainer) {\n        this.$tableColumnsContainer\n          .closest('.table-columns-field')\n          .addClass('hidden');\n      }\n      if (this.$revertBtn) {\n        this.$revertBtn.addClass('hidden');\n      }\n    } else {\n      if (this.$tableColumnsContainer) {\n        this.$tableColumnsContainer\n          .closest('.table-columns-field')\n          .removeClass('hidden');\n      }\n      if (this.$revertBtn) {\n        this.$revertBtn.removeClass('hidden');\n      }\n    }\n  },\n\n  updateSortField: function () {\n    if (this.elementIndex.settings.sortable) {\n      return;\n    }\n\n    if (this.$sortField) {\n      if (this.elementIndex.viewMode === 'structure') {\n        this.$sortField.addClass('hidden');\n        if (this.$tableColumnsField) {\n          this.$tableColumnsField.addClass('first-child');\n        }\n      } else {\n        this.$sortField.removeClass('hidden');\n        if (this.$tableColumnsField) {\n          this.$tableColumnsField.removeClass('first-child');\n        }\n      }\n    }\n\n    let [attribute, direction] =\n      this.elementIndex.getSortAttributeAndDirection();\n\n    // Add/remove a score option\n    const $scoreOption = this.$sortAttributeSelect.children(\n      'option[value=\"score\"]'\n    );\n\n    // If searching by score, just keep showing the actual selection\n    if (this.elementIndex.searching) {\n      if (!$scoreOption.length) {\n        this.$sortAttributeSelect.prepend(\n          $('<option/>', {\n            value: 'score',\n            text: Craft.t('app', 'Score'),\n          })\n        );\n      }\n    } else if ($scoreOption.length) {\n      $scoreOption.remove();\n    }\n\n    this.$sortAttributeSelect.val(attribute);\n    this.sortDirectionListbox.select(direction === 'asc' ? 0 : 1);\n\n    if (attribute === 'score') {\n      this.sortDirectionListbox.disable();\n      this.$sortDirectionPicker.addClass('disabled');\n    } else {\n      this.sortDirectionListbox.enable();\n      this.$sortDirectionPicker.removeClass('disabled');\n    }\n  },\n\n  updateTableColumnField: function () {\n    if (!this.$tableColumnsContainer) {\n      return;\n    }\n\n    const attributes = this.elementIndex.getSelectedTableColumns();\n    let $lastContainer, lastIndex;\n\n    attributes.forEach((attribute) => {\n      const $checkbox = this.$tableColumnsContainer.find(\n        `input[value=\"${attribute}\"]`\n      );\n      if (!$checkbox.prop('checked')) {\n        $checkbox.prop('checked', true);\n      }\n      const $container = $checkbox.parent();\n\n      // Do we need to move it up?\n      if ($lastContainer && $container.index() < lastIndex) {\n        $container.insertAfter($lastContainer);\n      }\n\n      $lastContainer = $container;\n      lastIndex = $container.index();\n    });\n\n    // See if we need to uncheck any checkboxes\n    const $checkboxes = this._getTableColumnCheckboxes();\n    for (let i = 0; i < $checkboxes.length; i++) {\n      const $checkbox = $checkboxes.eq(i);\n      if ($checkbox.prop('checked') && !attributes.includes($checkbox.val())) {\n        $checkbox.prop('checked', false);\n      }\n    }\n  },\n\n  tidyTableColumnField: function () {\n    if (!this.$tableColumnsContainer) {\n      return;\n    }\n\n    const defaultOrder = this.elementIndex\n      .getTableColumnOptions(this.$source)\n      .map((column) => column.attr)\n      .reduce((obj, attr, index) => {\n        return {...obj, [attr]: index};\n      }, {});\n\n    this.$tableColumnsContainer\n      .children()\n      .sort((a, b) => {\n        const checkboxA = $(a).children('input[type=\"checkbox\"]')[0];\n        const checkboxB = $(b).children('input[type=\"checkbox\"]')[0];\n        if (checkboxA.checked && checkboxB.checked) {\n          return 0;\n        }\n        if (checkboxA.checked || checkboxB.checked) {\n          return checkboxA.checked ? -1 : 1;\n        }\n        return defaultOrder[checkboxA.value] < defaultOrder[checkboxB.value]\n          ? -1\n          : 1;\n      })\n      .appendTo(this.$tableColumnsContainer);\n  },\n\n  revert: function () {\n    this.elementIndex.setSelecetedSourceState({\n      order: null,\n      sort: null,\n      tableColumns: null,\n    });\n\n    this.updateSortField();\n    this.updateTableColumnField();\n    this.tidyTableColumnField();\n\n    this.$revertBtn.remove();\n    this.$revertBtn = null;\n\n    this.$closeBtn.focus();\n    this.elementIndex.updateElements();\n  },\n\n  _buildMenu: function () {\n    const $metaContainer = $('<div class=\"meta\"/>').appendTo(this.$container);\n\n    if (!this.elementIndex.settings.sortable) {\n      this.$sortField = this._createSortField().appendTo($metaContainer);\n    }\n\n    if (!Garnish.isMobileBrowser(true)) {\n      this.$tableColumnsField =\n        this._createTableColumnsField().appendTo($metaContainer);\n    }\n\n    this.updateSortField();\n\n    if (this.$sortAttributeSelect) {\n      this.$sortAttributeSelect.focus();\n    }\n\n    const $footerContainer = $('<div/>', {\n      class: 'flex menu-footer',\n    }).appendTo(this.$container);\n\n    this.$revertContainer = $('<div/>', {\n      class: 'flex-grow',\n    }).appendTo($footerContainer);\n\n    // Only create the revert button if there's a custom view state\n    if (\n      this.elementIndex.getSelectedSourceState('order') ||\n      this.elementIndex.getSelectedSourceState('sort') ||\n      this.elementIndex.getSelectedSourceState('tableColumns')\n    ) {\n      this._createRevertBtn();\n    }\n\n    // we only want to show the \"Use defaults\" btn in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      if (this.$revertBtn) {\n        this.$revertBtn.addClass('hidden');\n      }\n    }\n\n    this.$closeBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Close'),\n    })\n      .appendTo($footerContainer)\n      .on('click', () => {\n        this.menu.hide();\n      });\n  },\n\n  _createSortField: function () {\n    const $container = $('<div class=\"flex\"/>');\n\n    const options = this.elementIndex\n      .getSortOptions(this.$source)\n      .sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n    const groups = options.reduce(\n      (groups, o) => {\n        const index = o.attr.startsWith('field:') ? 1 : 0;\n        groups[index].push(o);\n        return groups;\n      },\n      [[], []]\n    );\n    if (groups[1].length) {\n      groups[1].unshift({\n        optgroup: Craft.t('app', 'Fields'),\n      });\n    }\n\n    const $sortAttributeSelectContainer = Craft.ui\n      .createSelect({\n        options: groups.flat().map((o) => {\n          return o.optgroup\n            ? o\n            : {\n                label: Craft.escapeHtml(o.label),\n                value: o.attr,\n              };\n        }),\n      })\n      .addClass('fullwidth')\n      .appendTo($('<div class=\"flex-grow\"/>').appendTo($container));\n\n    this.$sortAttributeSelect = $sortAttributeSelectContainer\n      .children('select')\n      .attr({\n        'aria-label': Craft.t('app', 'Sort attribute'),\n      });\n\n    this.$sortDirectionPicker = $('<section/>', {\n      class: 'btngroup btngroup--exclusive',\n      'aria-label': Craft.t('app', 'Sort direction'),\n    })\n      .append(\n        $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          title: Craft.t('app', 'Sort ascending'),\n          'aria-label': Craft.t('app', 'Sort ascending'),\n          'aria-pressed': 'false',\n          'data-icon': 'asc',\n          'data-dir': 'asc',\n        })\n      )\n      .append(\n        $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          title: Craft.t('app', 'Sort descending'),\n          'aria-label': Craft.t('app', 'Sort descending'),\n          'aria-pressed': 'false',\n          'data-icon': 'desc',\n          'data-dir': 'desc',\n        })\n      )\n      .appendTo($container);\n\n    this.sortDirectionListbox = new Craft.Listbox(this.$sortDirectionPicker, {\n      onChange: ($selectedOption) => {\n        const direction = $selectedOption.data('dir');\n        if (direction !== this.elementIndex.getSelectedSortDirection()) {\n          this.elementIndex.setSelectedSortAttribute(\n            this.$sortAttributeSelect.val(),\n            $selectedOption.data('dir')\n          );\n\n          if (!this.elementIndex.sortByScore) {\n            // In case it's actually the structure view\n            this.elementIndex.selectViewMode(this.elementIndex.viewMode);\n          }\n\n          this.elementIndex.updateElements();\n          this._createRevertBtn();\n        }\n      },\n    });\n\n    this.$sortAttributeSelect.on('change', () => {\n      this.elementIndex.setSelectedSortAttribute(\n        this.$sortAttributeSelect.val(),\n        null,\n        false\n      );\n\n      // In case it's actually the structure view\n      this.elementIndex.selectViewMode(this.elementIndex.viewMode);\n\n      this.elementIndex.updateElements();\n      this._createRevertBtn();\n    });\n\n    const $field = Craft.ui.createField($container, {\n      label: Craft.t('app', 'Sort by'),\n      fieldset: true,\n    });\n    $field.addClass('sort-field');\n    return $field;\n  },\n\n  _getTableColumnCheckboxes: function () {\n    if (!this.$tableColumnsContainer) {\n      return $();\n    }\n\n    return this.$tableColumnsContainer.find('input[type=\"checkbox\"]');\n  },\n\n  _createTableColumnsField: function () {\n    const columns = this.elementIndex\n      .getTableColumnOptions(this.$source)\n      .sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n\n    if (!columns.length) {\n      return $();\n    }\n\n    this.$tableColumnsContainer = Craft.ui.createCheckboxSelect({\n      options: columns.map((c) => ({\n        label: c.label,\n        value: c.attr,\n      })),\n      sortable: true,\n    });\n\n    this.updateTableColumnField();\n    this.tidyTableColumnField();\n\n    this.$tableColumnsContainer.data('dragSort').on('sortChange', () => {\n      this._onTableColumnChange();\n    });\n\n    this._getTableColumnCheckboxes().on('change', (ev) => {\n      this._onTableColumnChange();\n    });\n\n    const $field = Craft.ui.createField(this.$tableColumnsContainer, {\n      label: Craft.t('app', 'Table Columns'),\n      fieldset: true,\n    });\n    $field.addClass('table-columns-field');\n\n    // we only want to show the \"Table Columns\" checkboxes in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      $field.addClass('hidden');\n    }\n\n    return $field;\n  },\n\n  _onTableColumnChange: function () {\n    const columns = [];\n    const $selectedCheckboxes =\n      this._getTableColumnCheckboxes().filter(':checked');\n    for (let i = 0; i < $selectedCheckboxes.length; i++) {\n      columns.push($selectedCheckboxes.eq(i).val());\n    }\n\n    // Only commit the change if it's different from the current column selections\n    // (maybe an unchecked column was dragged, etc.)\n    if (\n      Craft.compare(\n        columns,\n        this.elementIndex.getSelectedTableColumns(this.$source)\n      )\n    ) {\n      return;\n    }\n\n    this.elementIndex.setSelectedTableColumns(columns, false);\n    this.elementIndex.updateElements();\n    this._createRevertBtn();\n  },\n\n  _createRevertBtn: function () {\n    if (this.$revertBtn) {\n      return;\n    }\n\n    this.$revertBtn = $('<button/>', {\n      type: 'button',\n      class: 'light',\n      text: Craft.t('app', 'Use defaults'),\n    })\n      .appendTo(this.$revertContainer)\n      .on('click', () => {\n        this.revert();\n      });\n  },\n\n  destroy: function () {\n    this.menu.destroy();\n    delete this.menu;\n    this.base();\n  },\n});\n\nconst FilterHud = Garnish.HUD.extend({\n  elementIndex: null,\n  sourceKey: null,\n  siteId: null,\n  id: null,\n  loading: true,\n  conditionConfig: null,\n  serialized: null,\n  $clearBtn: null,\n  cleared: false,\n\n  get isActive() {\n    return this.showing || this.conditionConfig || this.serialized;\n  },\n\n  init: function (elementIndex, sourceKey, siteId, settings) {\n    this.elementIndex = elementIndex;\n    this.sourceKey = sourceKey;\n    this.siteId = siteId;\n    this.id = `filter-${Math.floor(Math.random() * 1000000000)}`;\n\n    if (settings) {\n      if (settings.conditionConfig) {\n        this.conditionConfig = settings.conditionConfig;\n        delete settings.conditionConfig;\n      } else if (settings.serialized) {\n        this.serialized = settings.serialized;\n        delete settings.serialized;\n      }\n    }\n\n    const $loadingContent = $('<div/>')\n      .append(\n        $('<div/>', {\n          class: 'spinner',\n        })\n      )\n      .append(\n        $('<div/>', {\n          text: Craft.t('app', 'Loading'),\n          class: 'visually-hidden',\n          'aria-role': 'alert',\n        })\n      );\n\n    this.base(\n      this.elementIndex.$filterBtn,\n      $loadingContent,\n      Object.assign(\n        {\n          hudClass: 'hud element-filter-hud loading',\n        },\n        settings\n      )\n    );\n\n    this.$hud.attr({\n      id: this.id,\n      'aria-live': 'polite',\n      'aria-busy': 'false',\n    });\n    this.$tip.remove();\n    this.$tip = null;\n\n    this.$body.on('submit', (ev) => {\n      ev.preventDefault();\n      this.hide();\n    });\n\n    Craft.sendActionRequest('POST', 'element-indexes/filter-hud', {\n      data: {\n        elementType: this.elementIndex.elementType,\n        source: this.sourceKey,\n        condition: this.elementIndex.settings.condition,\n        conditionConfig: this.conditionConfig,\n        serialized: this.serialized,\n        id: `${this.id}-filters`,\n      },\n    })\n      .then(async (response) => {\n        this.loading = false;\n        this.$hud.removeClass('loading');\n        $loadingContent.remove();\n\n        this.$main.append(response.data.hudHtml);\n        await Craft.appendHeadHtml(response.data.headHtml);\n        await Craft.appendBodyHtml(response.data.bodyHtml);\n\n        const $btnContainer = $('<div/>', {\n          class: 'flex flex-nowrap',\n        }).appendTo(this.$main);\n        $('<div/>', {\n          class: 'flex-grow',\n        }).appendTo($btnContainer);\n        this.$clearBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Cancel'),\n        }).appendTo($btnContainer);\n        $('<button/>', {\n          type: 'submit',\n          class: 'btn secondary',\n          text: Craft.t('app', 'Apply'),\n        }).appendTo($btnContainer);\n        this.$clearBtn.on('click', () => {\n          this.clear();\n        });\n\n        this.$hud.find('.condition-container').on('htmx:beforeRequest', () => {\n          this.setBusy();\n        });\n\n        this.$hud.find('.condition-container').on('htmx:load', () => {\n          this.setReady();\n          this.updateSizeAndPosition(true);\n        });\n        this.setFocus();\n\n        if (this.conditionConfig) {\n          // conditionConfig => serialized\n          this.conditionConfig = null;\n          this.serialized = this.serialize();\n        }\n      })\n      .catch(() => {\n        Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n      });\n\n    this.$hud.css('position', 'fixed');\n\n    this.addListener(Garnish.$win, 'scroll,resize', () => {\n      this.updateSizeAndPosition(true);\n    });\n  },\n\n  addListener: function (elem, events, data, func) {\n    if (elem === this.$main && events === 'resize') {\n      return;\n    }\n    this.base(elem, events, data, func);\n  },\n\n  setBusy: function () {\n    this.$hud.attr('aria-busy', 'true');\n\n    $('<div/>', {\n      class: 'visually-hidden',\n      text: Craft.t('app', 'Loading'),\n    }).insertAfter(this.$main.find('.htmx-indicator'));\n  },\n\n  setReady: function () {\n    this.$hud.attr('aria-busy', 'false');\n  },\n\n  setFocus: function () {\n    Garnish.setFocusWithin(this.$main);\n  },\n\n  clear: function () {\n    this.cleared = true;\n    this.hide();\n  },\n\n  updateSizeAndPositionInternal: function () {\n    const searchOffset =\n      this.elementIndex.$searchContainer[0].getBoundingClientRect();\n\n    // Ensure HUD is scrollable if content falls off-screen\n    const windowHeight = Garnish.$win.height();\n    let hudHeight;\n    const availableSpace = windowHeight - searchOffset.bottom;\n\n    if (this.$body.height() > availableSpace) {\n      hudHeight = windowHeight - searchOffset.bottom - 10;\n    }\n\n    this.$hud.css({\n      width: this.elementIndex.$searchContainer.outerWidth() - 2,\n      top: searchOffset.top + this.elementIndex.$searchContainer.outerHeight(),\n      left: searchOffset.left + 1,\n      height: hudHeight ? `${hudHeight}px` : 'unset',\n      overflowY: hudHeight ? 'scroll' : 'unset',\n    });\n  },\n\n  onShow: function () {\n    this.base();\n\n    // Cancel => Clear\n    if (this.$clearBtn) {\n      this.$clearBtn.text(Craft.t('app', 'Clear'));\n    }\n\n    this.elementIndex.updateFilterBtn();\n    this.setFocus();\n  },\n\n  onHide: function () {\n    this.base();\n\n    // If something changed, update the elements\n    if (this.serialized !== (this.serialized = this.serialize())) {\n      this.elementIndex.updateElements();\n    }\n\n    if (this.cleared) {\n      this.destroy();\n    } else {\n      this.$hud.detach();\n      this.$shade.detach();\n    }\n\n    this.elementIndex.updateFilterBtn();\n    this.elementIndex.$filterBtn.focus();\n  },\n\n  hasRules: function () {\n    return this.$main.has('.condition-rule').length !== 0;\n  },\n\n  serialize: function () {\n    return !this.cleared && this.hasRules() ? this.$body.serialize() : null;\n  },\n\n  destroy: function () {\n    this.base();\n    delete this.elementIndex.filterHuds[this.siteId][this.sourceKey];\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Base Element Index View\n */\nCraft.BaseElementIndexView = Garnish.Base.extend(\n  {\n    $container: null,\n    $loadingMoreSpinner: null,\n    $elementContainer: null,\n    $scroller: null,\n\n    elementIndex: null,\n    elementSelect: null,\n\n    loadingMore: false,\n\n    _totalVisible: null,\n    _morePending: null,\n    _handleEnableElements: null,\n    _handleDisableElements: null,\n\n    get thumbLoader() {\n      console.warn(\n        'Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead.'\n      );\n      return Craft.cp.elementThumbLoader;\n    },\n\n    init: function (elementIndex, container, settings) {\n      this.elementIndex = elementIndex;\n      this.$container = $(container);\n      this.setSettings(settings, Craft.BaseElementIndexView.defaults);\n\n      // Create a \"loading-more\" spinner\n      this.$loadingMoreSpinner = $(\n        '<div class=\"centeralign hidden\">' +\n          '<div class=\"spinner loadingmore\"></div>' +\n          '</div>'\n      ).insertAfter(this.$container);\n\n      // Get the actual elements container and its child elements\n      this.$elementContainer = this.getElementContainer();\n      var $elements = this.$elementContainer.children();\n\n      this.setTotalVisible($elements.length);\n      this.setMorePending(\n        this.elementIndex.settings.batchSize &&\n          $elements.length == this.elementIndex.settings.batchSize\n      );\n\n      // Load thumbnails\n      Craft.cp.elementThumbLoader.load($elements);\n\n      if (this.settings.selectable) {\n        this.elementSelect = new Garnish.Select(\n          this.$elementContainer,\n          this.filterSelectableElements($elements),\n          {\n            multi: this.settings.multiSelect,\n            vertical: this.isVerticalList(),\n            filter: (target) => {\n              return !$(target).closest('a[href],.toggle,.btn,[role=button]')\n                .length;\n            },\n            checkboxMode: this.settings.checkboxMode,\n            waitForDoubleClicks: this.settings.waitForDoubleClicks,\n            onSelectionChange: this.onSelectionChange.bind(this),\n          }\n        );\n\n        this._handleEnableElements = (ev) => {\n          this.elementSelect.addItems(\n            this.filterSelectableElements($(ev.elements))\n          );\n        };\n\n        this._handleDisableElements = (ev) => {\n          this.elementSelect.removeItems(ev.elements);\n        };\n\n        this.elementIndex.on('enableElements', this._handleEnableElements);\n        this.elementIndex.on('disableElements', this._handleDisableElements);\n      }\n\n      // Enable inline element editing if this is an index page\n      if (this.elementIndex.isAdministrative) {\n        this._handleElementEditing = (ev) => {\n          if ($(ev.target).closest('a[href],button,[role=button]').length) {\n            // Let the link/button do its thing\n            return;\n          }\n\n          const $target = $(ev.target);\n          var $element;\n\n          if ($target.hasClass('element')) {\n            $element = $target;\n          } else {\n            $element = $target.closest('.element');\n\n            if (!$element.length) {\n              return;\n            }\n          }\n\n          if (\n            Garnish.hasAttr($element, 'data-editable') &&\n            !$element.closest('.elementselect').length\n          ) {\n            Craft.createElementEditor($element.data('type'), $element);\n          }\n        };\n\n        if (!this.elementIndex.trashed) {\n          this.addListener(\n            this.$elementContainer,\n            'dblclick,taphold',\n            this._handleElementEditing\n          );\n        }\n      }\n\n      // Give sub-classes a chance to do post-initialization stuff here\n      this.afterInit();\n\n      // Set up lazy-loading\n      if (\n        !this.elementIndex.paginated &&\n        this.elementIndex.settings.batchSize\n      ) {\n        if (this.settings.context === 'index') {\n          this.$scroller = Garnish.$scrollContainer;\n        } else {\n          this.$scroller = this.elementIndex.$main;\n        }\n\n        this.$scroller.scrollTop(0);\n        this.addListener(this.$scroller, 'scroll', 'maybeLoadMore');\n        this.maybeLoadMore();\n      }\n    },\n\n    filterSelectableElements: function ($elements) {\n      const selectable = [];\n\n      for (let i = 0; i < $elements.length; i++) {\n        const $element = $elements.eq(i);\n        if ($element.hasClass('disabled')) {\n          // remove checkbox from tab order and mark as checked\n          $element.find('.checkbox').attr({\n            tabindex: '-1',\n            'aria-checked': 'true',\n          });\n          continue;\n        }\n        if (this.canSelectElement($element)) {\n          selectable.push($element[0]);\n        } else {\n          // make sure it doesn't have a checkbox\n          $element.find('.checkbox').remove();\n        }\n      }\n\n      return $(selectable);\n    },\n\n    canSelectElement: function ($element) {\n      if (this.settings.canSelectElement) {\n        return this.settings.canSelectElement($element);\n      }\n      return !!$element.data('id');\n    },\n\n    getElementContainer: function () {\n      return this.$container;\n    },\n\n    afterInit: function () {},\n\n    getAllElements: function () {\n      return this.$elementContainer.children();\n    },\n\n    getEnabledElements: function () {\n      return this.$elementContainer.children(':not(.disabled)');\n    },\n\n    getElementById: function (id) {\n      var $element = this.$elementContainer.children(\n        '[data-id=\"' + id + '\"]:first'\n      );\n\n      if ($element.length) {\n        return $element;\n      } else {\n        return null;\n      }\n    },\n\n    getSelectedElements: function () {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      return this.elementSelect.$selectedItems;\n    },\n\n    getSelectedElementIds: function () {\n      let $selectedElements;\n      try {\n        $selectedElements = this.getSelectedElements();\n      } catch (e) {}\n\n      let ids = [];\n      if ($selectedElements) {\n        for (var i = 0; i < $selectedElements.length; i++) {\n          const id = $selectedElements.eq(i).data('id');\n          if (id) {\n            ids.push(id);\n          }\n        }\n      }\n      return ids;\n    },\n\n    selectElement: function ($element) {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      this.elementSelect.selectItem($element, true);\n      return true;\n    },\n\n    selectElementById: function (id) {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      var $element = this.getElementById(id);\n\n      if ($element) {\n        this.elementSelect.selectItem($element, true);\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    selectAllElements: function () {\n      this.elementSelect.selectAll();\n    },\n\n    deselectAllElements: function () {\n      this.elementSelect.deselectAll();\n    },\n\n    getElementCheckbox: function (element) {\n      return $(element).find('[role=\"checkbox\"]');\n    },\n\n    isVerticalList: function () {\n      return false;\n    },\n\n    getTotalVisible: function () {\n      return this._totalVisible;\n    },\n\n    setTotalVisible: function (totalVisible) {\n      this._totalVisible = totalVisible;\n    },\n\n    getMorePending: function () {\n      return this._morePending;\n    },\n\n    setMorePending: function (morePending) {\n      this._morePending = morePending;\n    },\n\n    /**\n     * Checks if the user has reached the bottom of the scroll area, and if so, loads the next batch of elemets.\n     */\n    maybeLoadMore: function () {\n      if (this.canLoadMore()) {\n        this.loadMore();\n      }\n    },\n\n    /**\n     * Returns whether the user has reached the bottom of the scroll area.\n     */\n    canLoadMore: function () {\n      if (!this.getMorePending() || !this.elementIndex.settings.batchSize) {\n        return false;\n      }\n\n      // Check if the user has reached the bottom of the scroll area\n      var containerHeight;\n\n      if (this.$scroller[0] === Garnish.$win[0]) {\n        var winHeight = Garnish.$win.innerHeight(),\n          winScrollTop = Garnish.$win.scrollTop(),\n          containerOffset = this.$container.offset().top;\n        containerHeight = this.$container.height();\n\n        return winHeight + winScrollTop >= containerOffset + containerHeight;\n      } else {\n        var containerScrollHeight = this.$scroller.prop('scrollHeight'),\n          containerScrollTop = this.$scroller.scrollTop();\n        containerHeight = this.$scroller.outerHeight();\n\n        return (\n          containerScrollHeight - containerScrollTop <= containerHeight + 15\n        );\n      }\n    },\n\n    /**\n     * Loads the next batch of elements.\n     */\n    loadMore: function () {\n      if (\n        !this.getMorePending() ||\n        this.loadingMore ||\n        !this.elementIndex.settings.batchSize\n      ) {\n        return;\n      }\n\n      this.loadingMore = true;\n      this.$loadingMoreSpinner.removeClass('hidden');\n      this.removeListener(this.$scroller, 'scroll');\n\n      Craft.sendActionRequest('POST', this.settings.loadMoreElementsAction, {\n        data: this.getLoadMoreParams(),\n      })\n        .then(async (response) => {\n          this.loadingMore = false;\n          this.$loadingMoreSpinner.addClass('hidden');\n\n          if (this.isAdministrative) {\n            // set Craft.currentElementIndex for actions\n            Craft.currentElementIndex = this;\n          }\n\n          let $newElements = $(response.data.html);\n\n          this.appendElements($newElements);\n          await Craft.appendHeadHtml(response.data.headHtml);\n          await Craft.appendBodyHtml(response.data.bodyHtml);\n\n          if (this.elementSelect) {\n            this.elementSelect.addItems(\n              this.filterSelectableElements($newElements)\n            );\n            this.elementIndex.updateActionTriggers();\n          }\n\n          this.setTotalVisible(this.getTotalVisible() + $newElements.length);\n          this.setMorePending(\n            $newElements.length == this.elementIndex.settings.batchSize\n          );\n\n          // Is there room to load more right now?\n          this.addListener(this.$scroller, 'scroll', 'maybeLoadMore');\n          this.maybeLoadMore();\n        })\n        .catch((e) => {\n          this.loadingMore = false;\n          this.$loadingMoreSpinner.addClass('hidden');\n        });\n    },\n\n    getLoadMoreParams: function () {\n      // Use the same params that were passed when initializing this view\n      var params = $.extend(true, {}, this.settings.params);\n      params.criteria.offset = this.getTotalVisible();\n      return params;\n    },\n\n    appendElements: function ($newElements) {\n      $newElements.appendTo(this.$elementContainer);\n      Craft.cp.elementThumbLoader.load($newElements);\n      this.onAppendElements($newElements);\n    },\n\n    onAppendElements: function ($newElements) {\n      this.settings.onAppendElements($newElements);\n      this.trigger('appendElements', {\n        newElements: $newElements,\n      });\n    },\n\n    onSelectionChange: function () {\n      this.settings.onSelectionChange();\n      this.trigger('selectionChange');\n    },\n\n    disable: function () {\n      if (this.elementSelect) {\n        this.elementSelect.disable();\n      }\n    },\n\n    enable: function () {\n      if (this.elementSelect) {\n        this.elementSelect.enable();\n      }\n    },\n\n    destroy: function () {\n      // Remove the \"loading-more\" spinner, since we added that outside of the view container\n      this.$loadingMoreSpinner.remove();\n\n      // Delete the element select\n      if (this.elementSelect) {\n        this.elementIndex.off('enableElements', this._handleEnableElements);\n        this.elementIndex.off('disableElements', this._handleDisableElements);\n\n        this.elementSelect.destroy();\n        delete this.elementSelect;\n      }\n\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      context: 'index',\n      batchSize: null,\n      params: null,\n      selectable: false,\n      multiSelect: false,\n      canSelectElement: null,\n      checkboxMode: false,\n      waitForDoubleClicks: false,\n      sortable: false,\n      loadMoreElementsAction: 'element-indexes/get-more-elements',\n      onAppendElements: $.noop,\n      onSelectionChange: $.noop,\n      onSortChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Select input\n */\nCraft.BaseElementSelectInput = Garnish.Base.extend(\n  {\n    elementSelect: null,\n    elementSort: null,\n    modal: null,\n    elementEditor: null,\n    modalFirstOpen: true,\n\n    $container: null,\n    $form: null,\n    $elementsContainer: null,\n    $elements: null,\n    $addElementBtn: null,\n    $spinner: null,\n\n    _initialized: false,\n\n    get thumbLoader() {\n      console.warn(\n        'Craft.BaseElementSelectInput::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead.'\n      );\n      return Craft.cp.elementThumbLoader;\n    },\n\n    init: function (settings) {\n      // Normalize the settings and set them\n      // ---------------------------------------------------------------------\n\n      // Are they still passing in a bunch of arguments?\n      if (!$.isPlainObject(settings)) {\n        // Loop through all of the old arguments and apply them to the settings\n        var normalizedSettings = {},\n          args = [\n            'id',\n            'name',\n            'elementType',\n            'sources',\n            'criteria',\n            'sourceElementId',\n            'limit',\n            'modalStorageKey',\n            'fieldId',\n          ];\n\n        for (var i = 0; i < args.length; i++) {\n          if (typeof arguments[i] !== 'undefined') {\n            normalizedSettings[args[i]] = arguments[i];\n          } else {\n            break;\n          }\n        }\n\n        settings = normalizedSettings;\n      }\n\n      this.setSettings(settings, Craft.BaseElementSelectInput.defaults);\n\n      // Apply the storage key prefix\n      if (this.settings.modalStorageKey) {\n        this.modalStorageKey =\n          'BaseElementSelectInput.' + this.settings.modalStorageKey;\n      }\n\n      // No reason for this to be sortable if we're only allowing 1 selection\n      if (this.settings.limit == 1 || this.settings.maintainHierarchy) {\n        this.settings.sortable = false;\n      }\n\n      this.$container = this.getContainer();\n      this.$form = this.$container.closest('form');\n\n      // Store a reference to this class\n      this.$container.data('elementSelect', this);\n\n      this.$elementsContainer = this.getElementsContainer();\n      this.$addElementBtn = this.getAddElementsBtn();\n      this.$spinner = this.getSpinner();\n\n      this.initElementSelect();\n      this.initElementSort();\n      this.resetElements();\n\n      if (this.$addElementBtn.length) {\n        this.addListener(this.$addElementBtn, 'activate', 'showModal');\n      }\n\n      Garnish.requestAnimationFrame(() => {\n        this._initialized = true;\n      });\n\n      if (this.elementSelect) {\n        this.addListener(Garnish.$win, 'mousedown', (ev) => {\n          if (\n            !this.$container.is(ev.target) &&\n            !this.$container.find(ev.target).length\n          ) {\n            this.elementSelect.deselectAll();\n          }\n        });\n      }\n    },\n\n    get totalSelected() {\n      return this.$elements.length;\n    },\n\n    getContainer: function () {\n      return $('#' + this.settings.id);\n    },\n\n    getElementsContainer: function () {\n      return this.$container.children('.elements');\n    },\n\n    getElements: function () {\n      if (this.$elementsContainer.hasClass('structure')) {\n        return this.$elementsContainer.find('> li .row .element');\n      } else {\n        return this.$elementsContainer.find('> li > .element');\n      }\n    },\n\n    getAddElementsBtn: function () {\n      return this.$container.find('.btn.add:first');\n    },\n\n    getSpinner: function () {\n      return this.$container.find('.spinner');\n    },\n\n    initElementSelect: function () {\n      if (this.settings.selectable) {\n        this.elementSelect = new Garnish.Select(this.elementSelectSettings());\n      }\n    },\n\n    elementSelectSettings() {\n      return {\n        multi: this.settings.sortable,\n        filter: (target) => {\n          return !$(target).closest('a[href],button,[role=button]').length;\n        },\n        // prevent keyboard focus since element selection is only needed for drag-n-drop\n        makeFocusable: false,\n      };\n    },\n\n    initElementSort: function () {\n      if (this.settings.sortable) {\n        this.elementSort = new Garnish.DragSort({\n          container: this.$elementsContainer,\n          filter: this.settings.selectable\n            ? () => {\n                // Only return all the selected items if the target item is selected\n                if (\n                  this.elementSort.$targetItem\n                    .children('.element')\n                    .hasClass('sel')\n                ) {\n                  return this.elementSelect.getSelectedItems().parent('li');\n                } else {\n                  return this.elementSort.$targetItem;\n                }\n              }\n            : null,\n          ignoreHandleSelector: '.delete',\n          handle: (() => {\n            switch (this.settings.viewMode) {\n              case 'list':\n              case 'large':\n                return '> .element > .chip-content > .chip-actions > .move';\n              case 'cards':\n                return '> .element > .card-actions-container > .card-actions > .move';\n              default:\n                return null;\n            }\n          })(),\n          axis: this.getElementSortAxis(),\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onSortChange();\n          },\n        });\n      }\n    },\n\n    getElementSortAxis: function () {\n      if (\n        ['list'].includes(this.settings.viewMode) &&\n        !this.getElementsContainer().hasClass('inline-chips')\n      ) {\n        return 'y';\n      }\n      return null;\n    },\n\n    canAddMoreElements: function () {\n      return (\n        !this.settings.limit || this.$elements.length < this.settings.limit\n      );\n    },\n\n    updateAddElementsBtn: function () {\n      if (this.canAddMoreElements()) {\n        this.enableAddElementsBtn();\n      } else {\n        this.disableAddElementsBtn();\n      }\n    },\n\n    enableAddElementsBtn: function () {\n      if (this.$addElementBtn.length) {\n        this.$addElementBtn.removeClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    disableAddElementsBtn: function () {\n      if (this.$addElementBtn.length) {\n        this.$addElementBtn.addClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    showSpinner: function () {\n      if (this.$spinner) {\n        this.$spinner.removeClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    hideSpinner: function () {\n      if (this.$spinner) {\n        this.$spinner.addClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    updateButtonContainer: function () {\n      const $container =\n        this.$addElementBtn.length && this.$addElementBtn.parent('.flex');\n      if ($container?.length) {\n        if ($container.children(':not(.hidden)').length) {\n          $container.removeClass('hidden');\n        } else {\n          $container.addClass('hidden');\n        }\n      }\n    },\n\n    focusNextLogicalElement: function () {\n      if (this.canAddMoreElements()) {\n        // If can add more elements, focus ADD button\n        if (this.$addElementBtn.length) {\n          this.$addElementBtn.get(0).focus();\n        }\n      } else {\n        // If can't add more elements, focus on the final remove\n        this.focusLastRemoveBtn();\n      }\n    },\n\n    focusLastRemoveBtn: function () {\n      const $removeBtns = this.$container.find('.delete');\n\n      if (!$removeBtns.length) return;\n\n      $removeBtns.last()[0].focus();\n    },\n\n    resetElements: function () {\n      if (this.$elements !== null) {\n        this.removeElements(this.$elements);\n      } else {\n        this.$elements = $();\n      }\n\n      this.addElements(this.getElements());\n    },\n\n    addElements: function ($elements) {\n      // add the action triggers\n      for (let i = 0; i < $elements.length; i++) {\n        const $element = $elements.eq(i);\n        const actions = this.defineElementActions($element);\n\n        if (actions.length) {\n          Craft.addActionsToChip($element, actions);\n\n          const disclosureMenu = $element\n            .find(\n              '> .chip-content > .chip-actions .action-btn, > .card-actions-container > .card-actions .action-btn'\n            )\n            .data('disclosureMenu');\n          const moveForwardBtn = disclosureMenu.$container.find(\n            '[data-move-forward]'\n          )[0];\n          const moveBackwardBtn = disclosureMenu.$container.find(\n            '[data-move-backward]'\n          )[0];\n\n          disclosureMenu.on('show', () => {\n            const $li = $element.parent();\n            const $prev = $li.prev();\n            const $next = $li.next();\n\n            if (moveForwardBtn) {\n              disclosureMenu.toggleItem(moveForwardBtn, $prev.length);\n            }\n            if (moveBackwardBtn) {\n              disclosureMenu.toggleItem(moveBackwardBtn, $next.length);\n            }\n          });\n        }\n\n        if (this.settings.sortable) {\n          $('<button/>', {\n            type: 'button',\n            class: 'move icon',\n            title: Craft.t('app', 'Reorder'),\n            'aria-label': Craft.t('app', 'Reorder'),\n            'aria-describedby': $element.find('.label').attr('id'),\n          }).appendTo(\n            $element.find(\n              '> .chip-content > .chip-actions, > .card-actions-container > .card-actions'\n            )\n          );\n        }\n      }\n\n      Craft.cp.elementThumbLoader.load($elements);\n\n      if (this.settings.selectable) {\n        this.elementSelect.addItems($elements);\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.addItems($elements.parent('li'));\n      }\n\n      if (this.settings.editable) {\n        this._handleShowElementEditor = (ev) => {\n          // don't open the edit slideout if we are tapholding to drag\n          if (ev.type === 'taphold' && ev.target.nodeName === 'BUTTON') {\n            return;\n          }\n\n          var $element = $(ev.currentTarget);\n          if (\n            Garnish.hasAttr($element, 'data-editable') &&\n            !$element.hasClass('disabled') &&\n            !$element.hasClass('loading')\n          ) {\n            this.elementEditor = this.createElementEditor($element);\n          }\n        };\n\n        this.addListener($elements, 'dblclick', this._handleShowElementEditor);\n\n        if ($.isTouchCapable()) {\n          this.addListener($elements, 'taphold', this._handleShowElementEditor);\n        }\n      }\n\n      $elements.on('keydown', (ev) => {\n        if ([Garnish.BACKSPACE_KEY, Garnish.DELETE_KEY].includes(ev.keyCode)) {\n          ev.stopPropagation();\n          ev.preventDefault();\n          const $elements = this.elementSelect.getSelectedItems();\n          for (let i = 0; i < $elements.length; i++) {\n            this.removeElement($elements.eq(i));\n          }\n        }\n      });\n\n      this.$elements = this.$elements.add($elements);\n\n      this.updateAddElementsBtn();\n      this.onAddElements();\n      this.onSortChange();\n    },\n\n    defineElementActions: function ($element) {\n      const actions = [];\n\n      if (this.settings.sortable) {\n        const axis = this.getElementSortAxis();\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-up'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-left'\n                : 'arrow-right',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move up')\n              : Craft.t('app', 'Move forward'),\n          callback: () => {\n            this.moveElementForward($element);\n          },\n          attributes: {\n            'data-move-forward': true,\n          },\n        });\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-down'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-right'\n                : 'arrow-left',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move down')\n              : Craft.t('app', 'Move backward'),\n          callback: () => {\n            this.moveElementBackward($element);\n          },\n          attributes: {\n            'data-move-backward': true,\n          },\n        });\n      }\n\n      actions.push({\n        icon: 'remove',\n        label: Craft.t('app', 'Remove'),\n        callback: () => {\n          this.removeElement($element);\n        },\n        destructive: true,\n      });\n\n      return actions;\n    },\n\n    createElementEditor: function ($element, settings) {\n      settings = Object.assign(\n        {\n          elementSelectInput: this,\n          prevalidate: this.settings.prevalidate,\n        },\n        settings\n      );\n\n      return Craft.createElementEditor(\n        this.settings.elementType,\n        $element,\n        settings\n      );\n    },\n\n    replaceElement: function (elementId, replacementId) {\n      return new Promise((resolve, reject) => {\n        const $existing = this.$elements.filter(`[data-id=\"${elementId}\"]`);\n\n        if (!$existing.length) {\n          reject(`No element selected with an ID of ${elementId}.`);\n          return;\n        }\n\n        this.showSpinner();\n\n        const data = {\n          elementId: replacementId,\n          siteId: this.settings.criteria.siteId,\n          thumbSize: this.settings.viewMode,\n        };\n\n        Craft.sendActionRequest('POST', 'app/render-elements', {\n          data: {\n            elements: [\n              {\n                type: this.settings.elementType,\n                id: replacementId,\n                siteId: this.settings.criteria.siteId,\n                instances: [\n                  {\n                    context: 'field',\n                    ui: ['list', 'large'].includes(this.settings.viewMode)\n                      ? 'chip'\n                      : 'card',\n                    size:\n                      this.settings.viewMode === 'large' ? 'large' : 'small',\n                    showActionMenu: this.settings.showActionMenu,\n                  },\n                ],\n              },\n            ],\n          },\n        })\n          .then(async ({data}) => {\n            this.removeElement($existing);\n            const elementInfo = Craft.getElementInfo(\n              data.elements[replacementId][0]\n            );\n            this.selectElements([elementInfo]).then(resolve);\n            await Craft.appendHeadHtml(data.headHtml);\n            await Craft.appendBodyHtml(data.bodyHtml);\n          })\n          .catch((e) => {\n            Craft.cp.displayError(e?.response?.data?.message);\n            reject(e?.response?.data?.message);\n          })\n          .finally(() => {\n            this.hideSpinner();\n          });\n      });\n    },\n\n    onSortChange() {\n      this.elementSelect?.resetItemOrder();\n      this.$elements = $().add(this.$elements);\n    },\n\n    moveElementForward($element) {\n      const $li = $element.closest('li');\n      const $prev = $li.prev();\n      if ($prev.length) {\n        $li.insertBefore($prev);\n        this.onSortChange();\n      }\n    },\n\n    moveElementBackward($element) {\n      const $li = $element.closest('li');\n      const $next = $li.next();\n      if ($next.length) {\n        $li.insertAfter($next);\n        this.onSortChange();\n      }\n    },\n\n    removeElements: function ($elements) {\n      if (this.settings.selectable) {\n        this.elementSelect.removeItems($elements);\n      }\n\n      if (this.modal) {\n        var ids = [];\n\n        for (var i = 0; i < $elements.length; i++) {\n          var id = $elements.eq(i).data('id');\n\n          if (id) {\n            ids.push(id);\n          }\n        }\n\n        if (ids.length) {\n          this.modal.elementIndex.enableElementsById(ids);\n        }\n      }\n\n      // Disable the hidden input in case the form is submitted before this element gets removed from the DOM\n      $elements.children('input').prop('disabled', true);\n\n      // Move the focus to the next element in the list, if there is one\n      let $nextElement;\n      if (this.settings.selectable) {\n        const lastElementIndex = this.$elements.index($elements.last());\n        $nextElement = this.$elements.eq(lastElementIndex + 1);\n      }\n      if ($nextElement?.length) {\n        $nextElement.focus();\n      } else {\n        this.focusNextLogicalElement();\n      }\n\n      this.$elements = this.$elements.not($elements);\n      this.updateAddElementsBtn();\n      this.onSortChange();\n      this.onRemoveElements();\n    },\n\n    removeElement: function ($element) {\n      if (this.settings.maintainHierarchy) {\n        // Find any descendants this element might have\n        const $allElements = $element.add(\n          $element.parent().siblings('ul').find('.element')\n        );\n\n        // Remove any inputs from the form data\n        $('[name]', $allElements).removeAttr('name');\n\n        // Remove our record of them all at once\n        this.removeElements($allElements);\n\n        // Animate them away one at a time\n        for (let i = 0; i < $allElements.length; i++) {\n          this._animateStructureElementAway($allElements, i);\n        }\n      } else {\n        // Remove any inputs from the form data\n        $('[name]', $element).removeAttr('name');\n        this.removeElements($element);\n        this.animateElementAway($element, () => {\n          $element.parent('li').remove();\n        });\n      }\n    },\n\n    animateElementAway: function ($element, callback) {\n      $element.css('z-index', 0);\n\n      var animateCss = {\n        opacity: -1,\n      };\n      animateCss['margin-' + Craft.left] = -(\n        $element.outerWidth() + parseInt($element.css('margin-' + Craft.right))\n      );\n\n      if (\n        ['list', 'cards'].includes(this.settings.viewMode) ||\n        this.$elements.length === 0\n      ) {\n        animateCss['margin-bottom'] = -(\n          $element.outerHeight() + parseInt($element.css('margin-bottom'))\n        );\n      }\n\n      $element.velocity(\n        animateCss,\n        Craft.BaseElementSelectInput.REMOVE_FX_DURATION,\n        () => {\n          if (callback) {\n            callback();\n          }\n        }\n      );\n    },\n\n    showModal: function () {\n      // Make sure we haven't reached the limit\n      if (!this.canAddMoreElements()) {\n        return;\n      }\n\n      if (!this.modal) {\n        this.modal = this.createModal();\n        this.modalFirstOpen = false;\n      } else {\n        this.modal.show();\n      }\n    },\n\n    createModal: function () {\n      return Craft.createElementSelectorModal(\n        this.settings.elementType,\n        this.getModalSettings()\n      );\n    },\n\n    getModalSettings: function () {\n      const settings = $.extend(\n        {\n          closeOtherModals: false,\n          storageKey: this.modalStorageKey,\n          sources: this.settings.sources,\n          condition: this.settings.condition,\n          referenceElementId: this.settings.referenceElementId,\n          referenceElementSiteId: this.settings.referenceElementSiteId,\n          criteria: Object.assign({}, this.settings.criteria),\n          multiSelect: this.settings.limit != 1,\n          hideOnSelect: false,\n          showSiteMenu: this.settings.showSiteMenu,\n          disabledElementIds: this.getDisabledElementIds(),\n          onSelect: this.onModalSelect.bind(this),\n          onHide: this.onModalHide.bind(this),\n          triggerElement: this.$addElementBtn,\n          modalTitle: Craft.t('app', 'Choose'),\n        },\n        this.settings.modalSettings\n      );\n\n      // make sure the previously-selected source is retained each time the\n      // modal is re-opened\n      if (!this.modalFirstOpen) {\n        settings.preferStoredSource = true;\n      }\n\n      return settings;\n    },\n\n    getSelectedElementIds: function () {\n      var ids = [];\n\n      for (var i = 0; i < this.$elements.length; i++) {\n        ids.push(this.$elements.eq(i).data('id'));\n      }\n\n      return ids;\n    },\n\n    getDisabledElementIds: function () {\n      var ids = this.getSelectedElementIds();\n\n      if (!this.settings.allowSelfRelations && this.settings.sourceElementId) {\n        ids.push(this.settings.sourceElementId);\n      }\n\n      if (this.settings.disabledElementIds) {\n        ids.push(...this.settings.disabledElementIds);\n      }\n\n      return ids;\n    },\n\n    onModalSelect: async function (elements) {\n      // Disable the modal\n      this.modal.disable();\n      this.modal.disableCancelBtn();\n      this.modal.disableSelectBtn();\n      this.modal.showFooterSpinner();\n\n      // re-render the elements even if the view modes match, to be sure we have all the correct settings\n      const [inputUiType, inputUiSize] = (() => {\n        switch (this.settings.viewMode) {\n          case 'large':\n            return ['chip', 'large'];\n          case 'cards':\n            return ['card', null];\n          default:\n            return ['chip', 'small'];\n        }\n      })();\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'app/render-elements',\n        {\n          data: {\n            elements: [\n              {\n                type: this.settings.elementType,\n                id: elements.map((e) => e.id),\n                siteId: elements[0].siteId,\n                instances: [\n                  {\n                    context: 'field',\n                    ui: inputUiType,\n                    size: inputUiSize,\n                    showActionMenu: this.settings.showActionMenu,\n                  },\n                ],\n              },\n            ],\n          },\n        }\n      );\n\n      for (let i = 0; i < elements.length; i++) {\n        if (typeof data.elements[elements[i].id] !== 'undefined') {\n          elements[i].$modalElement = elements[i].$element;\n          elements[i].$element = $(data.elements[elements[i].id][0]);\n        }\n      }\n\n      if (this.settings.maintainHierarchy) {\n        await this.selectStructuredElements(elements);\n      } else {\n        if (this.settings.limit) {\n          // Cut off any excess elements\n          var slotsLeft = this.settings.limit - this.$elements.length;\n\n          if (elements.length > slotsLeft) {\n            elements = elements.slice(0, slotsLeft);\n          }\n        }\n\n        await this.selectElements(elements);\n        this.updateDisabledElementsInModal();\n      }\n\n      // Re-enable and hide the modal\n      this.modal.enable();\n      this.modal.enableCancelBtn();\n      this.modal.enableSelectBtn();\n      this.modal.hideFooterSpinner();\n      this.modal.hide();\n\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n    },\n\n    onModalHide: function () {\n      // If the modal has a condition and a reference element, recreate it each time it’s opened\n      // in case something about the edited element is going to affect the condition\n      if (\n        this.modal &&\n        this.settings.condition &&\n        this.settings.referenceElementId\n      ) {\n        this.modal.destroy();\n        this.modal = null;\n      }\n\n      // If can add more elements, do default behavior of focus on \"Add\" button\n      if (this.canAddMoreElements()) return;\n\n      setTimeout(() => {\n        this.focusNextLogicalElement();\n      }, 200);\n    },\n\n    selectElements: async function (elements) {\n      for (let i = 0; i < elements.length; i++) {\n        let elementInfo = elements[i],\n          $element = this.createNewElement(elementInfo);\n\n        this.appendElement($element);\n        this.addElements($element);\n\n        const $modalElement = elementInfo.$modalElement || elementInfo.$element;\n        if ($modalElement && $modalElement.parent().length) {\n          this.animateElementIntoPlace($modalElement, $element);\n        }\n\n        // Override the element reference with the new one\n        elementInfo.$element = $element;\n      }\n\n      this.onSelectElements(elements);\n    },\n\n    selectStructuredElements: async function (elements) {\n      // Get the new element HTML\n      var selectedElementIds = this.getSelectedElementIds();\n\n      for (var i = 0; i < elements.length; i++) {\n        selectedElementIds.push(elements[i].id);\n      }\n\n      var data = {\n        elementIds: selectedElementIds,\n        siteId: elements[0].siteId,\n        containerId: this.settings.id,\n        name: this.settings.name,\n        branchLimit: this.settings.branchLimit,\n        selectionLabel: this.settings.selectionLabel,\n        elementType: this.settings.elementType,\n      };\n\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'relational-fields/structured-input-html',\n        {data}\n      );\n\n      const $newInput = $(response.data.html),\n        $newElementsContainer = $newInput.children('.elements');\n\n      this.$elementsContainer.replaceWith($newElementsContainer);\n      this.$elementsContainer = $newElementsContainer;\n      this.resetElements();\n\n      const filteredElements = [];\n\n      for (let i = 0; i < elements.length; i++) {\n        const element = elements[i];\n        const $element = this.getElementById(element.id);\n\n        if ($element) {\n          this.animateElementIntoPlace(element.$element, $element);\n          filteredElements.push(element);\n        }\n      }\n\n      this.updateDisabledElementsInModal();\n      this.onSelectElements(filteredElements);\n    },\n\n    createNewElement: function (elementInfo) {\n      var $element = elementInfo.$element.clone();\n      var removeText = Craft.t('app', 'Remove {label}', {\n        label: Craft.escapeHtml(elementInfo.label),\n      });\n      // Make a couple tweaks\n      Craft.setElementSize(\n        $element,\n        this.settings.viewMode === 'large' ? 'large' : 'small'\n      );\n      $element.addClass('removable').append(\n        $('<input/>', {\n          type: 'hidden',\n          name: this.settings.name + (this.settings.single ? '' : '[]'),\n          value: elementInfo.id,\n        })\n      );\n\n      return $element;\n    },\n\n    appendElement: function ($element) {\n      $('<li/>').append($element).appendTo(this.$elementsContainer);\n    },\n\n    animateElementIntoPlace: function ($modalElement, $inputElement) {\n      var origOffset = $modalElement.offset(),\n        destOffset = $inputElement.offset(),\n        $helper = $inputElement\n          .clone()\n          .appendTo(Garnish.$bod)\n          .width($inputElement.width());\n\n      $inputElement.css('visibility', 'hidden');\n\n      $helper.css({\n        position: 'absolute',\n        zIndex: 10000,\n        top: origOffset.top,\n        left: origOffset.left,\n      });\n\n      var animateCss = {\n        top: destOffset.top,\n        left: destOffset.left,\n      };\n\n      $helper.velocity(\n        animateCss,\n        Craft.BaseElementSelectInput.ADD_FX_DURATION,\n        function () {\n          $helper.remove();\n          $inputElement.css('visibility', 'visible');\n        }\n      );\n    },\n\n    updateDisabledElementsInModal: function () {\n      if (this.modal.elementIndex) {\n        this.modal.elementIndex.disableElementsById(\n          this.getDisabledElementIds()\n        );\n      }\n    },\n\n    getElementById: function (id) {\n      for (var i = 0; i < this.$elements.length; i++) {\n        var $element = this.$elements.eq(i);\n\n        if ($element.data('id') == id) {\n          return $element;\n        }\n      }\n    },\n\n    onSelectElements: function (elements) {\n      this.trigger('selectElements', {elements});\n      this.settings.onSelectElements(elements);\n      this.$container.trigger('change');\n    },\n\n    onAddElements: function () {\n      this.trigger('addElements');\n      this.settings.onAddElements();\n      this.$container.trigger('change');\n    },\n\n    onRemoveElements: function () {\n      this.trigger('removeElements');\n      this.settings.onRemoveElements();\n      this.$container.trigger('change');\n    },\n\n    _animateStructureElementAway: function ($allElements, i) {\n      let callback;\n\n      // Is this the last one?\n      if (i === $allElements.length - 1) {\n        callback = () => {\n          const $li = $allElements.first().parent().parent();\n          const $ul = $li.parent();\n\n          if ($ul[0] === this.$elementsContainer[0] || $li.siblings().length) {\n            $li.remove();\n          } else {\n            $ul.remove();\n          }\n        };\n      }\n\n      const func = () => {\n        this.animateElementAway($allElements.eq(i), callback);\n      };\n\n      if (i === 0) {\n        func();\n      } else {\n        setTimeout(func, 100 * i);\n      }\n    },\n  },\n  {\n    ADD_FX_DURATION: 200,\n    REMOVE_FX_DURATION: 200,\n\n    defaults: {\n      id: null,\n      name: null,\n      fieldId: null,\n      elementType: null,\n      sources: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      criteria: {},\n      allowSelfRelations: false,\n      sourceElementId: null,\n      disabledElementIds: null,\n      viewMode: 'list',\n      single: false,\n      maintainHierarchy: false,\n      branchLimit: null,\n      limit: null,\n      showSiteMenu: false,\n      modalStorageKey: null,\n      modalSettings: {},\n      onAddElements: $.noop,\n      onSelectElements: $.noop,\n      onRemoveElements: $.noop,\n      sortable: true,\n      selectable: true,\n      showActionMenu: true,\n      editable: true,\n      prevalidate: false,\n      editorSettings: {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element selector modal class\n */\nCraft.BaseElementSelectorModal = Garnish.Modal.extend(\n  {\n    elementType: null,\n    elementIndex: null,\n\n    supportSidebarToggleView: false,\n\n    $body: null,\n    $content: null,\n    $footer: null,\n    $selectBtn: null,\n    $sidebar: null,\n    $sources: null,\n    $sourceToggles: null,\n    $sidebarToggleBtn: null,\n    $sidebarCloseBtn: null,\n    $mainHeading: null,\n    $main: null,\n    $search: null,\n    $elements: null,\n    $tbody: null,\n    $primaryButtons: null,\n    $secondaryButtons: null,\n    $cancelBtn: null,\n\n    init: function (elementType, settings) {\n      this.elementType = elementType;\n      this.setSettings(settings, Craft.BaseElementSelectorModal.defaults);\n      const headingId = 'elementSelectorModalHeading-' + Date.now();\n\n      // Build the modal\n      const $container = $('<div/>', {\n        class: 'modal elementselectormodal',\n        'aria-labelledby': headingId,\n      }).appendTo(Garnish.$bod);\n      const $headingContainer = $('<div/>', {\n        class: this.settings.showTitle ? 'header' : 'visually-hidden',\n      }).appendTo($container);\n      $('<h1/>', {\n        id: headingId,\n        text: this.settings.modalTitle,\n      }).appendTo($headingContainer);\n      const $body = $('<div/>', {\n        class: 'body',\n      })\n        .append($('<div/>', {class: 'spinner big'}))\n        .appendTo($container);\n      this.$footer = $('<div/>', {\n        class: 'footer',\n      }).appendTo($container);\n\n      if (this.settings.fullscreen) {\n        $container.addClass('fullscreen');\n        this.settings.minGutter = 0;\n      }\n\n      this.base($container, this.settings);\n\n      this.$secondaryButtons = $(\n        '<div class=\"buttons left secondary-buttons\"/>'\n      ).appendTo(this.$footer);\n      this.$primaryButtons = $('<div class=\"buttons right\"/>').appendTo(\n        this.$footer\n      );\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo(this.$primaryButtons);\n      this.$selectBtn = Craft.ui\n        .createSubmitButton({\n          class: 'disabled',\n          label: this.settings.selectBtnLabel,\n          spinner: true,\n        })\n        .attr('aria-disabled', 'true')\n        .appendTo(this.$primaryButtons);\n\n      this.$body = $body;\n\n      this.addListener(this.$cancelBtn, 'activate', 'cancel');\n      this.addListener(this.$selectBtn, 'activate', 'selectElements');\n    },\n\n    updateModalBottomPadding: function () {\n      const footerHeight = this.$footer.outerHeight();\n      const bottomPadding = parseInt(this.$container.css('padding-bottom'));\n\n      if (footerHeight !== bottomPadding) {\n        this.$container.css('padding-bottom', footerHeight);\n      }\n    },\n\n    updateSidebarView: function () {\n      if (!this.supportSidebarToggleView) return;\n\n      if (this.sidebarShouldBeHidden()) {\n        if (!this.$sidebarToggleBtn) this.buildSidebarToggleView();\n      } else {\n        if (this.$sidebarToggleBtn) this.resetView();\n      }\n    },\n\n    sidebarShouldBeHidden: function () {\n      const contentWidth = this.$container.outerWidth();\n      return contentWidth < 550;\n    },\n\n    resetView: function () {\n      if (this.$mainHeader) {\n        this.$mainHeader.remove();\n      }\n\n      if (this.$sidebarHeader) {\n        this.$sidebarHeader.remove();\n      }\n\n      this.$sidebarToggleBtn = null;\n      this.$body.addClass('has-sidebar');\n      this.$content.addClass('has-sidebar');\n      this.$sidebar.removeClass('hidden');\n    },\n\n    buildSidebarToggleView: function () {\n      if (this.$sidebarToggleBtn || !this.sidebarShouldBeHidden()) return;\n\n      this.$sidebarHeader = $('<div class=\"sidebar-header\"/>').prependTo(\n        this.$sidebar\n      );\n\n      this.$sidebarCloseBtn = Craft.ui\n        .createButton({\n          class: 'nav-close close-btn',\n        })\n        .attr('aria-label', Craft.t('app', 'Close'))\n        .removeClass('btn')\n        .appendTo(this.$sidebarHeader);\n\n      this.$mainHeader = $('<div class=\"main-header\"/>').prependTo(this.$main);\n      this.$mainHeading = $(\n        `<h2 class=\"main-heading\">${this.getActiveSourceName()}</h2>`\n      ).appendTo(this.$mainHeader);\n\n      const buttonConfig = {\n        toggle: true,\n        controls: 'modal-sidebar',\n        class: 'nav-toggle',\n      };\n      this.$sidebarToggleBtn = Craft.ui\n        .createButton(buttonConfig)\n        .removeClass('btn')\n        .attr('aria-label', Craft.t('app', 'Show sidebar'))\n        .appendTo(this.$mainHeader);\n\n      this.$sidebar.attr('id', 'modal-sidebar');\n\n      this.closeSidebar();\n\n      this.addListener(this.$sidebarToggleBtn, 'click', () => {\n        this.toggleSidebar();\n      });\n\n      this.addListener(this.$sidebarCloseBtn, 'click', () => {\n        this.toggleSidebar();\n      });\n    },\n\n    sidebarIsOpen: function () {\n      return this.$sidebarToggleBtn.attr('aria-expanded') === 'true';\n    },\n\n    toggleSidebar: function () {\n      if (this.sidebarIsOpen()) {\n        this.closeSidebar();\n      } else {\n        this.openSidebar();\n      }\n    },\n\n    openSidebar: function () {\n      this.$body.addClass('has-sidebar');\n      this.$content.addClass('has-sidebar');\n      this.$sidebar.removeClass('hidden');\n      this.$sidebarToggleBtn.attr('aria-expanded', 'true');\n      this.$sidebar.find(':focusable').first().focus();\n\n      Garnish.uiLayerManager.addLayer(this.$sidebar);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeSidebar();\n\n        // If the focus is currently inside the sidebar, refocus the toggle\n        const $focusedEl = Garnish.getFocusedElement();\n        if ($.contains(this.$sidebar.get(0), $focusedEl.get(0)))\n          this.$sidebarToggleBtn.focus();\n      });\n    },\n\n    closeSidebar: function () {\n      if (!this.$sidebarToggleBtn) return;\n\n      if (this.sidebarIsOpen()) {\n        Garnish.uiLayerManager.removeLayer();\n        this.$sidebar.addClass('hidden');\n        this.$sidebarToggleBtn.attr('aria-expanded', 'false');\n      }\n\n      this.$body.removeClass('has-sidebar');\n      this.$content.removeClass('has-sidebar');\n    },\n\n    getActiveSourceName: function () {\n      return this.$sidebar.find('.sel').text();\n    },\n\n    onFadeIn: function () {\n      if (!this.elementIndex) {\n        this._createElementIndex();\n      } else {\n        // make sure we're able to scroll the entire elementIndex if more elements were added\n        // after modal was first initialised\n        this.updateModalBottomPadding();\n\n        // Auto-focus the Search box\n        if (!Garnish.isMobileBrowser(true)) {\n          this.elementIndex.$search.trigger('focus');\n        }\n      }\n\n      this.base();\n    },\n\n    onSelectionChange: function () {\n      this.updateSelectBtnState();\n    },\n\n    onSelectSource: function () {\n      this.updateHeading();\n      this.updateModalBottomPadding();\n    },\n\n    updateHeading: function () {\n      if (!this.$mainHeading) return;\n\n      this.$mainHeading.text(this.getActiveSourceName());\n    },\n\n    updateSelectBtnState: function () {\n      if (this.$selectBtn) {\n        if (this.hasSelection()) {\n          this.enableSelectBtn();\n        } else {\n          this.disableSelectBtn();\n        }\n      }\n    },\n\n    hasSelection: function () {\n      return (\n        this.elementIndex && this.elementIndex.getSelectedElements().length\n      );\n    },\n\n    enableSelectBtn: function () {\n      this.$selectBtn.removeClass('disabled').attr('aria-disabled', 'false');\n    },\n\n    disableSelectBtn: function () {\n      this.$selectBtn.addClass('disabled').attr('aria-disabled', 'true');\n    },\n\n    enableCancelBtn: function () {\n      this.$cancelBtn.removeClass('disabled');\n    },\n\n    disableCancelBtn: function () {\n      this.$cancelBtn.addClass('disabled');\n    },\n\n    showFooterSpinner: function () {\n      this.$selectBtn.addClass('loading');\n    },\n\n    hideFooterSpinner: function () {\n      this.$selectBtn.removeClass('loading');\n    },\n\n    cancel: function () {\n      if (!this.$cancelBtn.hasClass('disabled')) {\n        this.hide();\n      }\n    },\n\n    selectElements: function () {\n      if (this.hasSelection()) {\n        // TODO: This code shouldn't know about views' elementSelect objects\n        if (this.elementIndex.view && this.elementIndex.view.elementSelect) {\n          this.elementIndex.view.elementSelect.clearMouseUpTimeout();\n        }\n\n        var $selectedElements = this.elementIndex.getSelectedElements(),\n          elementInfo = this.getElementInfo($selectedElements);\n\n        this.onSelect(elementInfo);\n\n        if (this.settings.disableElementsOnSelect) {\n          this.elementIndex.disableElements(\n            this.elementIndex.getSelectedElements()\n          );\n        }\n\n        if (this.settings.hideOnSelect) {\n          this.hide();\n        }\n      }\n    },\n\n    getElementInfo: function ($selectedElements) {\n      var info = [];\n\n      for (var i = 0; i < $selectedElements.length; i++) {\n        var $element = $($selectedElements[i]);\n        var elementInfo = Craft.getElementInfo($element);\n\n        info.push(elementInfo);\n      }\n\n      return info;\n    },\n\n    onShow: function () {\n      this.updateSelectBtnState();\n\n      // Add listeners again since they get removed during modal close\n      this.addListener(Garnish.$win, 'resize', this.updateSidebarView);\n      this.addListener(Garnish.$win, 'resize', this.updateModalBottomPadding);\n\n      this.updateModalBottomPadding();\n      this.updateSidebarView();\n      this.base();\n    },\n\n    onHide: function () {\n      this.closeSidebar();\n      this.base();\n    },\n\n    onSelect: function (elementInfo) {\n      this.settings.onSelect(elementInfo);\n    },\n\n    disable: function () {\n      if (this.elementIndex) {\n        this.elementIndex.disable();\n      }\n\n      this.base();\n    },\n\n    enable: function () {\n      if (this.elementIndex) {\n        this.elementIndex.enable();\n      }\n\n      this.base();\n    },\n\n    getElementIndexParams: function () {\n      // Get the modal body HTML based on the settings\n      const params = {\n        context: 'modal',\n        elementType: this.elementType,\n        sources: this.settings.sources,\n      };\n\n      if (\n        this.settings.showSiteMenu !== null &&\n        this.settings.showSiteMenu !== 'auto'\n      ) {\n        params.showSiteMenu = this.settings.showSiteMenu ? '1' : '0';\n      }\n\n      return params;\n    },\n\n    _createElementIndex: function () {\n      Craft.sendActionRequest('POST', this.settings.bodyAction, {\n        data: this.getElementIndexParams(),\n      }).then((response) => {\n        this.$body.html(response.data.html);\n\n        if (this.$body.has('.sidebar:not(.hidden)').length) {\n          this.$body.addClass('has-sidebar');\n          this.supportSidebarToggleView = true;\n        }\n\n        // Initialize the element index\n        this.elementIndex = Craft.createElementIndex(\n          this.elementType,\n          this.$body,\n          this.getIndexSettings()\n        );\n\n        this.$main = this.elementIndex.$main;\n        this.$sidebar = this.elementIndex.$sidebar;\n        this.$content = this.$body.find('.content');\n\n        this.updateSidebarView();\n        this.updateModalBottomPadding();\n\n        // Double-clicking or double-tapping should select the elements\n        this.addListener(\n          this.elementIndex.$elements,\n          'doubletap',\n          function (ev, touchData) {\n            // Make sure the touch targets are the same\n            // (they may be different if Command/Ctrl/Shift-clicking on multiple elements quickly)\n            // and make sure the element is actually selectable\n            if (touchData.firstTap.target === touchData.secondTap.target) {\n              this.selectElements();\n            }\n          }\n        );\n\n        this.on('updateSizeAndPosition', () => {\n          this.elementIndex.handleResize();\n        });\n\n        this.updateSelectBtnState();\n      });\n    },\n\n    getIndexSettings: function () {\n      return Object.assign(\n        {\n          context: 'modal',\n          modal: this,\n          storageKey: this.settings.storageKey,\n          condition: this.settings.condition,\n          referenceElementId: this.settings.referenceElementId,\n          referenceElementSiteId: this.settings.referenceElementSiteId,\n          criteria: Object.assign({}, this.settings.criteria),\n          disabledElementIds: this.settings.disabledElementIds,\n          selectable: true,\n          multiSelect: this.settings.multiSelect,\n          waitForDoubleClicks: true,\n          buttonContainer: this.$secondaryButtons,\n          onSelectionChange: () => {\n            if (this.elementIndex) {\n              this.onSelectionChange();\n            }\n          },\n          onSourcePathChange: () => {\n            if (this.elementIndex) {\n              this.onSelectionChange();\n            }\n          },\n          onSelectSource: this.onSelectSource.bind(this),\n          hideSidebar: this.settings.hideSidebar,\n          defaultSiteId: this.settings.defaultSiteId,\n          defaultSource: this.settings.defaultSource,\n          defaultSourcePath: this.settings.defaultSourcePath,\n          preferStoredSource: this.settings.preferStoredSource,\n          showSourcePath: this.settings.showSourcePath,\n        },\n        this.settings.indexSettings\n      );\n    },\n  },\n  {\n    defaults: {\n      fullscreen: false,\n      resizable: true,\n      storageKey: null,\n      sources: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      criteria: null,\n      multiSelect: false,\n      showSiteMenu: null,\n      disabledElementIds: [],\n      disableElementsOnSelect: false,\n      hideOnSelect: true,\n      modalTitle: Craft.t('app', 'Select element'),\n      showTitle: false,\n      selectBtnLabel: Craft.t('app', 'Select'),\n      onCancel: $.noop,\n      onSelect: $.noop,\n      hideSidebar: false,\n      defaultSiteId: null,\n      defaultSource: null,\n      defaultSourcePath: null,\n      preferStoredSource: false,\n      showSourcePath: true,\n      bodyAction: 'element-selector-modals/body',\n      indexSettings: {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Input Generator\n */\nCraft.BaseInputGenerator = Garnish.Base.extend(\n  {\n    $source: null,\n    $target: null,\n    $form: null,\n    settings: null,\n\n    listening: null,\n    timeout: null,\n\n    init: function (source, target, settings) {\n      this.$source = $(source);\n      this.$target = $(target);\n      this.$form = this.$source.closest('form');\n\n      this.setSettings(settings, Craft.BaseInputGenerator.defaults);\n      this.setSettings(settings);\n\n      this.startListening();\n    },\n\n    setNewSource: function (source) {\n      var listening = this.listening;\n      this.stopListening();\n\n      this.$source = $(source);\n\n      if (listening) {\n        this.startListening();\n      }\n    },\n\n    startListening: function () {\n      if (this.listening) {\n        return;\n      }\n\n      this.listening = true;\n\n      this.addListener(this.$source, 'input', 'onSourceTextChange');\n      this.addListener(this.$target, 'input', 'onTargetTextChange');\n      this.addListener(this.$form, 'submit', 'onFormSubmit');\n    },\n\n    stopListening: function () {\n      if (!this.listening) {\n        return;\n      }\n\n      this.listening = false;\n\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.removeAllListeners(this.$source);\n      this.removeAllListeners(this.$target);\n      this.removeAllListeners(this.$form);\n    },\n\n    onSourceTextChange: function () {\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.timeout = setTimeout(this.updateTarget.bind(this), 250);\n    },\n\n    onTargetTextChange: function () {\n      if (this.$target.get(0) === document.activeElement) {\n        this.stopListening();\n      }\n    },\n\n    onFormSubmit: function () {\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.updateTarget();\n    },\n\n    updateTarget: function () {\n      if (\n        !this.$target.is(':visible') &&\n        this.settings.updateWhenHidden == false\n      ) {\n        return;\n      }\n\n      var sourceVal = this.$source.val();\n\n      if (typeof sourceVal === 'undefined') {\n        // The source input may not exist anymore\n        return;\n      }\n\n      var targetVal = this.generateTargetValue(sourceVal);\n\n      this.$target.val(targetVal);\n\n      for (let i = 0; i < this.$target.length; i++) {\n        this.$target[i].dispatchEvent(\n          new InputEvent('input', {\n            inputType: 'insertText',\n          })\n        );\n        this.$target[i].dispatchEvent(new Event('input'));\n      }\n\n      // If the target already has focus, select its whole value to mimic\n      // the behavior if the value had already been generated and they just tabbed in\n      if (this.$target.is(':focus')) {\n        Craft.selectFullValue(this.$target);\n      }\n    },\n\n    generateTargetValue: function (sourceVal) {\n      return sourceVal;\n    },\n  },\n  {\n    defaults: {\n      updateWhenHidden: false,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Base uploader class\n */\nCraft.BaseUploader = Garnish.Base.extend(\n  {\n    allowedKinds: null,\n    $element: null,\n    $fileInput: null,\n    settings: null,\n    fsType: null,\n    formData: {},\n    events: {},\n    _rejectedFiles: {},\n    _extensionList: null,\n    _inProgressCounter: 0,\n\n    init: function ($element, settings) {\n      this._rejectedFiles = {size: [], type: [], limit: []};\n      this.$element = $element;\n      this.settings = $.extend({}, Craft.BaseUploader.defaults, settings);\n      this.formData = this.settings.formData;\n      this.$fileInput = this.settings.fileInput || $element;\n      this.events = this.settings.events;\n\n      if (!this.settings.url) {\n        this.settings.url = this.settings.replace\n          ? Craft.getActionUrl(this.settings.replaceAction)\n          : Craft.getActionUrl(this.settings.createAction);\n      }\n\n      if (this.settings.allowedKinds && this.settings.allowedKinds.length) {\n        if (typeof this.settings.allowedKinds === 'string') {\n          this.settings.allowedKinds = [this.settings.allowedKinds];\n        }\n\n        this.allowedKinds = this.settings.allowedKinds;\n        delete this.settings.allowedKinds;\n      }\n    },\n\n    /**\n     * Set uploader parameters.\n     */\n    setParams: function (paramObject) {\n      // If CSRF protection isn't enabled, these won't be defined.\n      if (\n        typeof Craft.csrfTokenName !== 'undefined' &&\n        typeof Craft.csrfTokenValue !== 'undefined'\n      ) {\n        // Add the CSRF token\n        paramObject[Craft.csrfTokenName] = Craft.csrfTokenValue;\n      }\n\n      this.formData = paramObject;\n    },\n\n    /**\n     * Get the number of uploads in progress.\n     */\n    getInProgress: function () {\n      return this._inProgressCounter;\n    },\n\n    /**\n     * Return true, if this is the last upload.\n     */\n    isLastUpload: function () {\n      // Processing the last file or not processing at all.\n      return this.getInProgress() < 2;\n    },\n\n    /**\n     * Process error messages.\n     */\n    processErrorMessages: function () {\n      var str;\n\n      if (this._rejectedFiles.type.length) {\n        if (this._rejectedFiles.type.length === 1) {\n          str =\n            'The file {files} could not be uploaded. The allowed file kinds are: {kinds}.';\n        } else {\n          str =\n            'The files {files} could not be uploaded. The allowed file kinds are: {kinds}.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.type.join(', '),\n          kinds: this.allowedKinds.join(', '),\n        });\n        this._rejectedFiles.type = [];\n        Craft.cp.displayError(str);\n      }\n\n      if (this._rejectedFiles.size.length) {\n        if (this._rejectedFiles.size.length === 1) {\n          str =\n            'The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.';\n        } else {\n          str =\n            'The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.size.join(', '),\n          size: this.humanFileSize(this.settings.maxFileSize),\n        });\n        this._rejectedFiles.size = [];\n        Craft.cp.displayError(str);\n      }\n\n      if (this._rejectedFiles.limit.length) {\n        if (this._rejectedFiles.limit.length === 1) {\n          str =\n            'The file {files} could not be uploaded, because the field limit has been reached.';\n        } else {\n          str =\n            'The files {files} could not be uploaded, because the field limit has been reached.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.limit.join(', '),\n        });\n        this._rejectedFiles.limit = [];\n        Craft.cp.displayError(str);\n      }\n    },\n\n    humanFileSize: function (bytes) {\n      var threshold = 1024;\n\n      if (bytes < threshold) {\n        return bytes + ' B';\n      }\n\n      var units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n      var u = -1;\n\n      do {\n        bytes = bytes / threshold;\n        ++u;\n      } while (bytes >= threshold);\n\n      return bytes.toFixed(1) + ' ' + units[u];\n    },\n\n    _createExtensionList: function () {\n      this._extensionList = [];\n\n      for (var i = 0; i < this.allowedKinds.length; i++) {\n        var allowedKind = this.allowedKinds[i];\n\n        if (typeof Craft.fileKinds[allowedKind] !== 'undefined') {\n          for (\n            var j = 0;\n            j < Craft.fileKinds[allowedKind].extensions.length;\n            j++\n          ) {\n            var ext = Craft.fileKinds[allowedKind].extensions[j];\n            this._extensionList.push(ext);\n          }\n        }\n      }\n    },\n\n    destroy: $.noop,\n  },\n  {\n    defaults: {\n      dropZone: null,\n      pasteZone: null,\n      fileInput: null,\n      maxFileSize: Craft.maxUploadSize,\n      allowedKinds: null,\n      events: {},\n      formData: {},\n      canAddMoreFiles: null,\n      headers: {Accept: 'application/json;q=0.9,*/*;q=0.8'},\n      paramName: 'assets-upload',\n      url: null,\n      createAction: null,\n      replaceAction: null,\n      deleteAction: null,\n      replace: false,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * CP class\n */\nCraft.CP = Garnish.Base.extend(\n  {\n    elementThumbLoader: null,\n    authManager: null,\n\n    $nav: null,\n    $navToggle: null,\n    $globalSidebar: null,\n    $globalContainer: null,\n    $mainContainer: null,\n    $pageContainer: null,\n    $alerts: null,\n    $crumbs: null,\n    $crumbList: null,\n    $crumbItems: null,\n    $crumbMenuTriggerItem: null,\n    $crumbMenu: null,\n    $crumbMenuList: null,\n    $crumbMenuItems: null,\n    $notificationContainer: null,\n    $main: null,\n    $primaryForm: null,\n    $headerContainer: null,\n    $header: null,\n    $mainContent: null,\n    $details: null,\n    $sidebarContainer: null,\n    $sidebarToggle: null,\n    $sidebar: null,\n    $contentContainer: null,\n    $edition: null,\n\n    $confirmUnloadForms: null,\n    $deltaForms: null,\n    $collapsibleTables: null,\n\n    isMobile: null,\n    fixedHeader: false,\n\n    tabManager: null,\n\n    enableQueue: true,\n    totalJobs: 0,\n    jobInfo: null,\n    displayedJobInfo: null,\n    displayedJobInfoUnchanged: 1,\n    trackJobProgressTimeout: null,\n    trackingJobProgress: false,\n    jobProgressCancelToken: null,\n    jobProgressIcon: null,\n\n    checkingForUpdates: false,\n    forcingRefreshOnUpdatesCheck: false,\n    includingDetailsOnUpdatesCheck: false,\n    checkForUpdatesCallbacks: null,\n    checkForUpdatesFailureCallbacks: null,\n\n    resizeTimeout: null,\n\n    init: function () {\n      this.elementThumbLoader = new Craft.ElementThumbLoader();\n\n      // Is this session going to expire?\n      if (Craft.remainingSessionTime !== 0) {\n        this.authManager = new Craft.AuthManager();\n      }\n\n      // Find all the key elements\n      this.$nav = $('#nav');\n      this.$navToggle = $('#primary-nav-toggle');\n      this.$globalSidebar = $('#global-sidebar');\n      this.$globalContainer = $('#global-container');\n      this.$mainContainer = $('#main-container');\n      this.$pageContainer = $('#page-container');\n      this.$alerts = $('#alerts');\n      this.$crumbs = $('#crumbs');\n      this.$crumbList = $('#crumb-list');\n      this.$crumbItems = this.$crumbList.children('li');\n      this.$notificationContainer = $('#notifications');\n      this.$main = $('#main');\n      this.$primaryForm = $('#main-form');\n      this.$headerContainer = $('#header-container');\n      this.$header = $('#header');\n      this.$mainContent = $('#main-content');\n      this.$details = $('#details');\n      this.$sidebarContainer = $('#sidebar-container');\n      this.$sidebarToggle = $('#sidebar-toggle');\n      this.$sidebar = $('#sidebar');\n      this.$contentContainer = $('#content-container');\n      this.$collapsibleTables = $('table.collapsible');\n\n      this.isMobile = Garnish.isMobileBrowser();\n\n      this.updateContentHeading();\n\n      // Swap any instruction text with info icons\n      let $allInstructions = this.$details.find(\n        '.meta > .field > .instructions'\n      );\n\n      for (let i = 0; i < $allInstructions.length; i++) {\n        let $instructions = $allInstructions.eq(i);\n        let $label = $instructions.siblings('.heading').children('label');\n        $('<span/>', {\n          class: 'info',\n          html: $instructions.children().html(),\n        }).appendTo($label);\n        $instructions.remove();\n      }\n\n      if (!this.isMobile && this.$header.length) {\n        this.addListener(Garnish.$win, 'scroll', 'updateFixedHeader');\n        this.updateFixedHeader();\n      }\n\n      Garnish.$doc.ready(() => {\n        // Update responsive tables on window resize\n        this.addListener(Garnish.$win, 'resize', (ev) => {\n          // Ignore element resizes\n          if (ev.target === window) {\n            this.handleWindowResize();\n\n            clearTimeout(this.resizeTimeout);\n            var cp = this;\n            this.resizeTimeout = setTimeout(function () {\n              cp.setSidebarNavAttributes();\n            }, 100);\n          }\n        });\n        this.handleWindowResize();\n        this.setSidebarNavAttributes();\n\n        // Wait a frame before initializing any confirm-unload forms,\n        // so other JS that runs on ready() has a chance to initialize\n        Garnish.requestAnimationFrame(this.initSpecialForms.bind(this));\n      });\n\n      // Alerts\n      if (this.$alerts.length) {\n        this.initAlerts();\n      }\n\n      // Toggles\n      this.addListener(this.$navToggle, 'click', 'toggleNav');\n      this.addListener(this.$sidebarToggle, 'click', 'toggleSidebar');\n\n      // Does this page have a primary form?\n      if (!this.$primaryForm.length) {\n        this.$primaryForm = $('form[data-saveshortcut]:first');\n      }\n\n      // Does the primary form support the save shortcut?\n      if (\n        this.$primaryForm.length &&\n        Garnish.hasAttr(this.$primaryForm, 'data-saveshortcut')\n      ) {\n        let shortcuts = [];\n        let actions = this.$primaryForm.data('actions');\n        if (typeof actions === 'undefined') {\n          shortcuts.push([\n            {\n              keyCode: Garnish.S_KEY,\n              ctrl: true,\n            },\n            {\n              redirect: this.$primaryForm.data('saveshortcut-redirect'),\n              retainScroll: Garnish.hasAttr(\n                this.$primaryForm,\n                'saveshortcut-scroll'\n              ),\n            },\n          ]);\n        } else {\n          for (let i = 0; i < actions.length; i++) {\n            let action = actions[i];\n            if (!action.shortcut) {\n              continue;\n            }\n            shortcuts.push([\n              {\n                keyCode: Garnish.S_KEY,\n                ctrl: true,\n                shift: !!action.shift,\n              },\n              {\n                action: action.action,\n                redirect: action.redirect,\n                confirm: action.confirm,\n                params: action.params,\n                data: action.data,\n                retainScroll: action.retainScroll,\n              },\n            ]);\n          }\n        }\n        for (let i = 0; i < shortcuts.length; i++) {\n          Garnish.uiLayerManager.registerShortcut(shortcuts[i][0], () => {\n            this.submitPrimaryForm(shortcuts[i][1]);\n          });\n        }\n      }\n\n      this.initTabs();\n\n      if (this.tabManager) {\n        if (window.LOCATION_HASH) {\n          const $tab = this.tabManager.$tabs.filter(\n            `[href=\"#${window.LOCATION_HASH}\"]`\n          );\n          if ($tab.length) {\n            this.tabManager.selectTab($tab);\n          }\n        }\n      }\n\n      // Should we match the previous scroll position?\n      let scrollY = Craft.getLocalStorage('scrollY');\n      if (typeof scrollY !== 'undefined') {\n        Craft.removeLocalStorage('scrollY');\n        Garnish.$doc.ready(() => {\n          Garnish.requestAnimationFrame(() => {\n            window.scrollTo(0, scrollY);\n          });\n        });\n      }\n\n      if ($.isTouchCapable()) {\n        this.$mainContainer.on(\n          'focus',\n          'input, textarea, .focusable-input',\n          this._handleInputFocus.bind(this)\n        );\n        this.$mainContainer.on(\n          'blur',\n          'input, textarea, .focusable-input',\n          this._handleInputBlur.bind(this)\n        );\n      }\n\n      // Announcements HUD\n      if (Craft.announcements.length) {\n        let $btn = $('#announcements-btn').removeClass('hidden');\n        const hasUnreads = Craft.announcements.some((a) => a.unread);\n        let $unreadMessage;\n        if (hasUnreads) {\n          $unreadMessage = $('<span/>', {\n            class: 'visually-hidden',\n            html: Craft.t('app', 'Unread messages'),\n          });\n          $btn.addClass('unread').append($unreadMessage);\n        }\n        let hud;\n        this.addListener($btn, 'click', () => {\n          if (!hud) {\n            let contents = '';\n            Craft.announcements.forEach((a) => {\n              contents +=\n                `<div class=\"announcement ${\n                  a.unread ? 'unread' : ''\n                }\" role=\"listitem\">` +\n                '<div class=\"announcement__header\">' +\n                `<h3 class=\"announcement__heading h2\">${a.heading}</h3>` +\n                '<div class=\"announcement-label-container\">' +\n                `<div class=\"announcement-icon\" aria-hidden=\"true\">${a.icon}</div>` +\n                `<div class=\"announcement-label\">${a.label}</div>` +\n                '</div>' +\n                '</div>' +\n                `<p>${a.body}</p>` +\n                '</div>';\n            });\n            hud = new Garnish.HUD(\n              $btn,\n              `<h2 class=\"visually-hidden\">${Craft.t(\n                'app',\n                'Announcements'\n              )}</h2><div id=\"announcements\" role=\"list\">${contents}</div>`,\n              {\n                onShow: () => {\n                  $btn.addClass('active');\n                },\n                onHide: () => {\n                  $btn.removeClass('active');\n                },\n              }\n            );\n\n            // Open outbound links in new windows\n            $('a', hud.$main).each(function () {\n              if (\n                this.hostname.length &&\n                this.hostname !== location.hostname &&\n                typeof $(this).attr('target') === 'undefined'\n              ) {\n                $(this).attr('rel', 'noopener').attr('target', '_blank');\n              }\n            });\n\n            if (hasUnreads) {\n              $btn.removeClass('unread');\n              $unreadMessage.remove();\n              Craft.sendActionRequest(\n                'POST',\n                'users/mark-announcements-as-read',\n                {\n                  data: {\n                    ids: Craft.announcements.map((a) => a.id),\n                  },\n                }\n              );\n            }\n          } else {\n            hud.show();\n          }\n        });\n      }\n\n      // Add .stuck class to #footer when stuck\n      // h/t https://stackoverflow.com/a/61115077/1688568\n      const footer = document.getElementById('footer');\n      if (footer) {\n        const observer = new IntersectionObserver(\n          ([ev]) => {\n            ev.target.classList.toggle('stuck', ev.intersectionRatio < 1);\n          },\n          {\n            rootMargin: '0px 0px -1px 0px',\n            threshold: [1],\n          }\n        );\n        observer.observe(footer);\n      }\n\n      // Load any element thumbs\n      this.elementThumbLoader.load(this.$pageContainer);\n    },\n\n    get $contentHeader() {\n      const $contentHeader = $('#content-header');\n      if ($contentHeader.length) {\n        return $contentHeader;\n      }\n      return $('<header/>', {\n        id: 'content-header',\n        class: 'pane-header',\n      }).prependTo($('#content'));\n    },\n\n    get $noticeContainer() {\n      const $noticeContainer = $('#content-notice');\n      if ($noticeContainer.length) {\n        return $noticeContainer;\n      }\n      return $('<div id=\"content-notice\"/>')\n        .attr('role', 'status')\n        .prependTo(this.$contentHeader);\n    },\n\n    initSpecialForms: function () {\n      // Look for forms that we should watch for changes on\n      this.$confirmUnloadForms = $('form[data-confirm-unload]');\n      this.$deltaForms = $('form[data-delta]');\n\n      if (!this.$confirmUnloadForms.length) {\n        return;\n      }\n\n      const $forms = this.$confirmUnloadForms.add(this.$deltaForms);\n\n      for (let i = 0; i < $forms.length; i++) {\n        const $form = $forms.eq(i);\n        if (!$form.data('initialSerializedValue')) {\n          const serializer =\n            $form.data('serializer') || (() => $form.serialize());\n          $form.data('initialSerializedValue', serializer());\n        }\n        this.addListener($form, 'submit', function (ev) {\n          if (Garnish.hasAttr($form, 'data-confirm-unload')) {\n            this.removeListener(Garnish.$win, 'beforeunload');\n          }\n          if (Garnish.hasAttr($form, 'data-delta')) {\n            ev.preventDefault();\n            const serializer =\n              $form.data('serializer') || (() => $form.serialize());\n            const data = Craft.findDeltaData(\n              $form.data('initialSerializedValue'),\n              serializer(),\n              $form.data('delta-names'),\n              null,\n              $form.data('initial-delta-values'),\n              $form.data('modified-delta-names')\n            );\n            Craft.createForm(data).appendTo(Garnish.$bod).submit();\n          }\n        });\n      }\n\n      this.addListener(Garnish.$win, 'beforeunload', function (ev) {\n        let confirmUnload = false;\n        if (\n          typeof Craft.livePreview !== 'undefined' &&\n          Craft.livePreview.inPreviewMode\n        ) {\n          confirmUnload = true;\n        } else {\n          for (let i = 0; i < this.$confirmUnloadForms.length; i++) {\n            const $form = this.$confirmUnloadForms.eq(i);\n            let serialized;\n            if (typeof $form.data('serializer') === 'function') {\n              serialized = $form.data('serializer')();\n            } else {\n              serialized = $form.serialize();\n            }\n            if ($form.data('initialSerializedValue') !== serialized) {\n              confirmUnload = true;\n              break;\n            }\n          }\n        }\n\n        if (confirmUnload) {\n          var message = Craft.t(\n            'app',\n            'Any changes will be lost if you leave this page.'\n          );\n\n          if (ev) {\n            ev.originalEvent.returnValue = message;\n          } else {\n            window.event.returnValue = message;\n          }\n\n          return message;\n        }\n      });\n    },\n\n    _handleInputFocus: function () {\n      this.updateFixedHeader();\n    },\n\n    _handleInputBlur: function () {\n      this.updateFixedHeader();\n    },\n\n    /**\n     * Submits a form.\n     * @param {Object} [options]\n     * @param {string} [options.action] The `action` param value override\n     * @param {string} [options.redirect] The `redirect` param value override\n     * @param {string} [options.confirm] A confirmation message that should be shown to the user before submit\n     * @param {Object} [options.params] Additional params that should be added to the form, defined as name/value pairs\n     * @param {Object} [options.data] Additional data to be passed to the submit event\n     * @param {boolean} [options.retainScroll] Whether the scroll position should be stored and reapplied on the next page load\n     */\n    submitPrimaryForm: function (options) {\n      // Give other stuff on the page a chance to prepare\n      this.trigger('beforeSaveShortcut');\n\n      if (typeof options !== 'object' || !$.isPlainObject(options)) {\n        options = {};\n      }\n\n      if (!options.redirect) {\n        options.redirect = this.$primaryForm.data('saveshortcut-redirect');\n      }\n\n      if (!options.data) {\n        options.data = {};\n      }\n      options.data.saveShortcut = true;\n\n      Craft.submitForm(this.$primaryForm, options);\n    },\n\n    updateSidebarMenuLabel: function () {\n      this.updateContentHeading();\n    },\n\n    updateContentHeading: function () {\n      const $item = this.$sidebar.find('a.sel:first');\n      const $label = $item.children('.label');\n      $('#content-heading').text($label.length ? $label.text() : $item.text());\n      Garnish.$bod.removeClass('showing-sidebar');\n    },\n\n    toggleNav: function () {\n      const isExpanded = this.navIsExpanded();\n\n      if (isExpanded === null) return;\n\n      if (isExpanded) {\n        this.disableGlobalSidebar();\n        this.$navToggle.focus();\n        this.$navToggle.attr('aria-expanded', 'false');\n        Garnish.$bod.removeClass('showing-nav');\n      } else {\n        this.enableGlobalSidebar();\n        this.$globalSidebar.find(':focusable')[0].focus();\n        this.$navToggle.attr('aria-expanded', 'true');\n        Garnish.$bod.addClass('showing-nav');\n      }\n    },\n\n    /**\n     * Makes the global sidebar navigable by screen reader and keyboard users\n     **/\n    enableGlobalSidebar: function () {\n      this.$globalSidebar.attr('aria-hidden', 'false');\n      this.$globalSidebar.find(':focusable').attr('tabindex', '0');\n    },\n\n    /**\n     * Hides the global sidebar from screen reader and keyboard users\n     **/\n    disableGlobalSidebar: function () {\n      this.$globalSidebar.attr('aria-hidden', 'true');\n      this.$globalSidebar.find(':focusable').attr('tabindex', '-1');\n    },\n\n    setSidebarNavAttributes: function () {\n      const isExpanded = this.navIsExpanded();\n\n      if (isExpanded === null) return;\n\n      if (!isExpanded) {\n        this.disableGlobalSidebar();\n      } else {\n        this.enableGlobalSidebar();\n      }\n    },\n\n    navIsExpanded: function () {\n      if (!this.$globalSidebar[0]) return null;\n\n      const isAlwaysVisible = getComputedStyle(this.$globalSidebar[0])\n        .getPropertyValue('--is-always-visible')\n        .trim();\n\n      return (\n        this.$navToggle.attr('aria-expanded') === 'true' ||\n        isAlwaysVisible === 'true'\n      );\n    },\n\n    toggleSidebar: function () {\n      const expanded = this.$sidebarToggle.attr('aria-expanded') === 'true';\n      const newState = expanded ? 'false' : 'true';\n      this.$sidebarToggle.attr('aria-expanded', newState);\n      Garnish.$bod.toggleClass('showing-sidebar');\n    },\n\n    initTabs: function () {\n      if (this.tabManager) {\n        this.tabManager.destroy();\n        this.tabManager = null;\n      }\n\n      const $tabs = $('#tabs');\n      if (!$tabs.length) {\n        return;\n      }\n\n      this.tabManager = new Craft.Tabs($tabs);\n\n      this.tabManager.on('selectTab', (ev) => {\n        const href = ev.$tab.attr('href');\n\n        // Show its content area\n        if (href && href.charAt(0) === '#') {\n          $(href).removeClass('hidden');\n        }\n\n        // Trigger a resize event to update any UI components that are listening for it\n        Garnish.$win.trigger('resize');\n\n        // Fixes Redactor fixed toolbars on previously hidden panes\n        Garnish.$doc.trigger('scroll');\n\n        // If there is a site crumb menu or context menu, set their links to this tab ID\n        if (href && href.charAt(0) === '#') {\n          const contextLinks = document.querySelectorAll(\n            '#site-crumb-menu a[href], #context-menu a[href]'\n          );\n          for (const link of contextLinks) {\n            link.href = link.href.match(/^[^#]*/)[0] + href;\n          }\n        }\n\n        if (typeof history !== 'undefined') {\n          // Delay changing the hash so it doesn't cause the browser to jump on page load\n          Garnish.requestAnimationFrame(() => {\n            history.replaceState(undefined, undefined, href);\n          });\n        }\n      });\n\n      this.tabManager.on('deselectTab', (ev) => {\n        const href = ev.$tab.attr('href');\n        if (href && href.charAt(0) === '#') {\n          // Hide its content area\n          $(ev.$tab.attr('href')).addClass('hidden');\n        }\n      });\n    },\n\n    updateTabs: function (tabs) {\n      if (tabs) {\n        const $tabContainer = $(tabs).attr('id', 'tabs');\n        if (this.tabManager) {\n          this.tabManager.$container.replaceWith($tabContainer);\n        } else {\n          $tabContainer.appendTo(this.$contentHeader);\n        }\n        this.initTabs();\n      } else if (this.tabManager) {\n        if (this.tabManager.$container.siblings().length) {\n          this.tabManager.$container.remove();\n        } else {\n          this.tabManager.$container.parent().remove();\n        }\n        this.tabManager.destroy();\n        this.tabManager = null;\n      }\n    },\n\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabsContainer() {\n      return this.tabManager ? this.tabManager.$container : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabsList() {\n      return this.tabManager ? this.tabManager.$tablist : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabs() {\n      return this.tabManager ? this.tabManager.$tablist.find('> a') : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $selectedTab() {\n      return this.tabManager ? this.tabManager.$selectedTab : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get selectedTabIndex() {\n      return this.tabManager\n        ? this.tabManager.$tabs.index(this.tabManager.$selectedTab)\n        : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $focusableTab() {\n      return this.tabManager ? this.tabManager.$focusableTab : undefined;\n    },\n    /**\n     * @param {(jQuery|HTMLElement|string)} tab\n     * @deprecated in 3.7.0\n     */\n    selectTab: function (tab) {\n      if (this.tabManager) {\n        this.tabManager.selectTab(tab);\n      }\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    deselectTab: function () {\n      if (this.tabManager) {\n        this.tabManager.deselectTab();\n      }\n    },\n\n    handleBreadcrumbVisibility: function () {\n      if (!this.$crumbItems.length) {\n        return;\n      }\n\n      if (this.$crumbMenuItems) {\n        // put everything back\n        this.$crumbItems.css('max-width', '');\n        this.$crumbMenuItems.insertAfter(this.$crumbMenuTriggerItem);\n        this.$crumbMenuTriggerItem.detach();\n        this.$crumbMenuItems = null;\n      }\n\n      const maxWidth = Math.ceil(\n        this.$crumbs[0].getBoundingClientRect().width -\n          this.$navToggle[0].getBoundingClientRect().width\n      );\n      const itemWidths = [];\n\n      for (let i = 0; i < this.$crumbItems.length; i++) {\n        const $crumb = this.$crumbItems.eq(i);\n        itemWidths[i] = $crumb[0].getBoundingClientRect().width;\n      }\n\n      const totalWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n\n      if (totalWidth > maxWidth) {\n        // add the menu trigger\n        if (!this.$crumbMenuTriggerItem) {\n          this.$crumbMenuTriggerItem = $('<li/>', {\n            class: 'crumb',\n          }).prependTo(this.$crumbList);\n          const $labelContainer = $('<div/>', {\n            class: 'crumb-label',\n          }).appendTo(this.$crumbMenuTriggerItem);\n          const $trigger = $('<button/>', {\n            id: 'crumb-menu-trigger',\n            'data-icon': 'ellipsis',\n            'data-disclosure-trigger': 'true',\n            'aria-controls': 'crumb-menu',\n            'aria-haspopup': 'true',\n            'aria-label': Craft.t('app', 'More…'),\n            title: Craft.t('app', 'More…'),\n          }).appendTo($labelContainer);\n\n          this.$crumbMenu = $('<div/>', {\n            id: 'crumb-menu',\n            class: 'menu menu--disclosure',\n            'data-disclosure-menu': 'true',\n          }).appendTo($labelContainer);\n          this.$crumbMenuList = $('<ul/>').appendTo(this.$crumbMenu);\n\n          $trigger.disclosureMenu();\n        } else {\n          this.$crumbMenuTriggerItem.prependTo(this.$crumbList);\n        }\n\n        // see how many crumbs we can include, starting at the end\n        let visibleTotalWidth =\n          this.$crumbMenuTriggerItem[0].getBoundingClientRect().width;\n\n        for (let i = this.$crumbItems.length - 1; i >= 0; i--) {\n          if (visibleTotalWidth + itemWidths[i] > maxWidth) {\n            this.$crumbMenuItems = this.$crumbItems.slice(0, i + 1);\n            this.$crumbMenuItems.appendTo(this.$crumbMenuList);\n            break;\n          }\n\n          visibleTotalWidth += itemWidths[i];\n        }\n      }\n    },\n\n    handleWindowResize: function () {\n      this.updateResponsiveTables();\n      this.handleBreadcrumbVisibility();\n    },\n\n    updateResponsiveTables: function () {\n      for (\n        this.updateResponsiveTables._i = 0;\n        this.updateResponsiveTables._i < this.$collapsibleTables.length;\n        this.updateResponsiveTables._i++\n      ) {\n        this.updateResponsiveTables._$table = this.$collapsibleTables.eq(\n          this.updateResponsiveTables._i\n        );\n        this.updateResponsiveTables._containerWidth =\n          this.updateResponsiveTables._$table.parent().width();\n        this.updateResponsiveTables._check = false;\n\n        if (this.updateResponsiveTables._containerWidth > 0) {\n          // Is this the first time we've checked this table?\n          if (\n            typeof this.updateResponsiveTables._$table.data(\n              'lastContainerWidth'\n            ) === 'undefined'\n          ) {\n            this.updateResponsiveTables._check = true;\n          } else {\n            this.updateResponsiveTables._isCollapsed =\n              this.updateResponsiveTables._$table.hasClass('collapsed');\n\n            // Getting wider?\n            if (\n              this.updateResponsiveTables._containerWidth >\n              this.updateResponsiveTables._$table.data('lastContainerWidth')\n            ) {\n              if (this.updateResponsiveTables._isCollapsed) {\n                this.updateResponsiveTables._$table.removeClass('collapsed');\n                this.updateResponsiveTables._check = true;\n              }\n            } else if (!this.updateResponsiveTables._isCollapsed) {\n              this.updateResponsiveTables._check = true;\n            }\n          }\n\n          // Are we checking the table width?\n          if (this.updateResponsiveTables._check) {\n            if (\n              this.updateResponsiveTables._$table.width() - 30 >\n              this.updateResponsiveTables._containerWidth\n            ) {\n              this.updateResponsiveTables._$table.addClass('collapsed');\n            }\n          }\n\n          // Remember the container width for next time\n          this.updateResponsiveTables._$table.data(\n            'lastContainerWidth',\n            this.updateResponsiveTables._containerWidth\n          );\n        }\n      }\n    },\n\n    updateFixedHeader: function () {\n      if (this.isMobile) {\n        return;\n      }\n\n      // Have we scrolled passed the top of #main?\n      if (\n        this.$main.length &&\n        this.$headerContainer[0].getBoundingClientRect().top < 0\n      ) {\n        const headerHeight = this.$headerContainer.height();\n        const headerWidth = this.$header.width();\n        if (!this.fixedHeader) {\n          // Hard-set the minimum content container height\n          this.$contentContainer.css(\n            'min-height',\n            'calc(100vh - ' + (headerHeight + 14 + 48 - 1) + 'px)'\n          );\n\n          // Hard-set the header container height\n          this.$headerContainer.height(headerHeight);\n          this.$header.width(headerWidth);\n          Garnish.$bod.addClass('fixed-header');\n\n          this.fixedHeader = true;\n        }\n\n        this._setFixedTopPos(this.$sidebar, headerHeight);\n        this._setFixedTopPos(this.$details, headerHeight);\n      } else if (this.fixedHeader) {\n        this.$headerContainer.height('auto');\n        this.$header.width('auto');\n        Garnish.$bod.removeClass('fixed-header');\n        this.$contentContainer.css('min-height', '');\n        this.$sidebar.removeClass('fixed').css('top', '');\n        this.$details.removeClass('fixed').css('top', '');\n        this.fixedHeader = false;\n      }\n    },\n\n    _setFixedTopPos: function ($element, headerHeight) {\n      if (!$element.length || !this.$contentContainer.length) {\n        return;\n      }\n\n      if ($element.outerHeight() >= this.$contentContainer.outerHeight()) {\n        $element.removeClass('fixed').css('top', '');\n        return;\n      }\n\n      $element\n        .addClass('fixed')\n        .css(\n          'top',\n          Math.min(\n            headerHeight + 14,\n            Math.max(\n              this.$mainContent[0].getBoundingClientRect().top,\n              document.documentElement.clientHeight - $element.outerHeight()\n            )\n          ) + 'px'\n        );\n    },\n\n    /**\n     * Dispays a notification.\n     *\n     * @param {string} type `notice`, `success`, or `error`\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayNotification: function (type, message, settings) {\n      const notification = new Craft.CP.Notification(type, message, settings);\n\n      this.trigger('displayNotification', {\n        notificationType: type,\n        message,\n        notification,\n      });\n\n      return notification;\n    },\n\n    /**\n     * Displays a notice.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayNotice: function (message, settings) {\n      return this.displayNotification(\n        'notice',\n        message,\n        Object.assign(\n          {\n            icon: 'info',\n            iconLabel: Craft.t('app', 'Notice'),\n          },\n          settings\n        )\n      );\n    },\n\n    /**\n     * Displays a success notification.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displaySuccess: function (message, settings) {\n      return this.displayNotification(\n        'success',\n        message,\n        Object.assign(\n          {\n            icon: 'check',\n            iconLabel: Craft.t('app', 'Success'),\n          },\n          settings\n        )\n      );\n    },\n\n    /**\n     * Displays an error.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayError: function (message, settings) {\n      if (!message || typeof message === 'object') {\n        settings = message;\n        message = Craft.t('app', 'A server error occurred.');\n      }\n\n      return this.displayNotification(\n        'error',\n        message,\n        Object.assign(\n          {\n            icon: 'alert',\n            iconLabel: Craft.t('app', 'Error'),\n          },\n          settings\n        )\n      );\n    },\n\n    fetchAlerts: function () {\n      return Craft.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            const data = {\n              path: Craft.path,\n            };\n            Craft.sendActionRequest('POST', 'app/get-cp-alerts', {data})\n              .then(({data}) => {\n                resolve(data.alerts);\n              })\n              .catch(reject);\n          })\n      );\n    },\n\n    displayAlerts: function (alerts, animate = true) {\n      this.$alerts.remove();\n\n      if (Array.isArray(alerts) && alerts.length) {\n        this.$alerts = $('<ul id=\"alerts\"/>').prependTo(this.$pageContainer);\n\n        for (let alert of alerts) {\n          if (!$.isPlainObject(alert)) {\n            alert = {\n              content: alert,\n              showIcon: true,\n            };\n          }\n          let content = alert.content;\n          if (alert.showIcon) {\n            content = `<span data-icon=\"alert\" aria-label=\"${Craft.t(\n              'app',\n              'Error'\n            )}\"></span> ${content}`;\n          }\n          $(`<li>${content}</li>`).appendTo(this.$alerts);\n        }\n\n        if (animate) {\n          const height = this.$alerts.outerHeight();\n          this.$alerts\n            .css('margin-top', -height)\n            .velocity({'margin-top': 0}, 'fast');\n        }\n\n        this.initAlerts();\n      }\n    },\n\n    initAlerts: function () {\n      // Are there any shunnable alerts?\n      var $shunnableAlerts = this.$alerts.find('a[class^=\"shun:\"]');\n\n      for (var i = 0; i < $shunnableAlerts.length; i++) {\n        this.addListener($shunnableAlerts[i], 'click', (ev) => {\n          ev.preventDefault();\n\n          Craft.queue.push(\n            () =>\n              new Promise((resolve, reject) => {\n                const $link = $(ev.currentTarget);\n                const data = {\n                  message: $link.prop('className').substring(5),\n                };\n                Craft.sendActionRequest('POST', 'app/shun-cp-alert', {data})\n                  .then(() => {\n                    $link.parent().remove();\n                    resolve();\n                  })\n                  .catch(({response}) => {\n                    this.displayError(response.data.message);\n                    reject();\n                  });\n              })\n          );\n        });\n      }\n\n      const $resolvableButtonsContainer = this.$alerts.find(\n        '.resolvable-alert-buttons'\n      );\n      if ($resolvableButtonsContainer.length) {\n        const $refreshBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'Refresh'),\n            spinner: true,\n          })\n          .appendTo($resolvableButtonsContainer);\n        $refreshBtn.on('click', async () => {\n          $refreshBtn.addClass('loading');\n          try {\n            await Craft.sendApiRequest('GET', 'ping');\n            const alerts = await this.fetchAlerts();\n            this.displayAlerts(alerts, false);\n          } finally {\n            $refreshBtn.removeClass('loading');\n          }\n        });\n      }\n    },\n\n    updateContext: function (label, description) {\n      const contextBtnLabel = document.querySelector(\n        '#context-menu-container > span'\n      );\n      if (contextBtnLabel) {\n        contextBtnLabel.textContent = label;\n      }\n\n      const menuItem = document.querySelector('#context-menu a.sel');\n      if (menuItem) {\n        const labelEl = menuItem.querySelector('.menu-item-label');\n        labelEl.textContent = label;\n\n        let descriptionEl = menuItem.querySelector('.menu-item-description');\n        if (description) {\n          if (!descriptionEl) {\n            descriptionEl = document.createElement('div');\n            descriptionEl.className = 'menu-item-description smalltext light';\n            menuItem.append(descriptionEl);\n          }\n          descriptionEl.textContent = description;\n        } else if (descriptionEl) {\n          descriptionEl.remove();\n        }\n      }\n    },\n\n    showSiteCrumbMenuItem: function (siteId) {\n      const menuItem = document.querySelector(\n        `#site-crumb-menu a[data-site-id=\"${siteId}\"]`\n      );\n      if (menuItem) {\n        const li = menuItem.closest('li');\n        li.classList.remove('hidden');\n        const group = li.closest('.menu-group');\n        if (group) {\n          group.classList.remove('hidden');\n        }\n      }\n    },\n\n    setSiteCrumbMenuItemStatus: function (siteId, status) {\n      const menuItem = document.querySelector(\n        `#site-crumb-menu a[data-site-id=\"${siteId}\"]`\n      );\n      if (menuItem) {\n        let statusEl = menuItem.querySelector('.status');\n\n        if (status) {\n          if (!statusEl) {\n            statusEl = document.createElement('div');\n            menuItem.prepend(statusEl);\n          }\n          statusEl.className = `status ${status}`;\n        } else if (statusEl) {\n          statusEl.remove();\n        }\n      }\n    },\n\n    checkForUpdates: function (\n      forceRefresh,\n      includeDetails,\n      onSuccess,\n      onFailure\n    ) {\n      // Make 'includeDetails' optional\n      if (typeof includeDetails === 'function') {\n        onFailure = onSuccess;\n        onSuccess = includeDetails;\n        includeDetails = false;\n      }\n\n      // If forceRefresh == true, we're currently checking for updates, and not currently forcing a refresh,\n      // then just set a new callback that re-checks for updates when the current one is done.\n      if (\n        this.checkingForUpdates &&\n        ((forceRefresh === true && !this.forcingRefreshOnUpdatesCheck) ||\n          (includeDetails === true && !this.includingDetailsOnUpdatesCheck))\n      ) {\n        const realOnSuccess = onSuccess;\n        const realOnFailure = onFailure;\n        onSuccess = () => {\n          this.checkForUpdates(\n            forceRefresh,\n            includeDetails,\n            realOnSuccess,\n            realOnFailure\n          );\n        };\n      }\n\n      // Callback functions?\n      if (typeof onSuccess === 'function') {\n        if (!Array.isArray(this.checkForUpdatesCallbacks)) {\n          this.checkForUpdatesCallbacks = [];\n        }\n        this.checkForUpdatesCallbacks.push(onSuccess);\n      }\n      if (typeof onFailure === 'function') {\n        if (!Array.isArray(this.checkForUpdatesFailureCallbacks)) {\n          this.checkForUpdatesFailureCallbacks = [];\n        }\n        this.checkForUpdatesFailureCallbacks.push(onFailure);\n      }\n\n      if (!this.checkingForUpdates) {\n        this.checkingForUpdates = true;\n        this.forcingRefreshOnUpdatesCheck = forceRefresh === true;\n        this.includingDetailsOnUpdatesCheck = includeDetails === true;\n\n        this._checkForUpdates(forceRefresh, includeDetails)\n          .then((info) => {\n            this.updateUtilitiesBadge();\n            this.checkingForUpdates = false;\n\n            if (Array.isArray(this.checkForUpdatesCallbacks)) {\n              const callbacks = this.checkForUpdatesCallbacks;\n              this.checkForUpdatesCallbacks = null;\n\n              for (let callback of callbacks) {\n                callback(info);\n              }\n            }\n\n            this.trigger('checkForUpdates', {\n              updateInfo: info,\n            });\n          })\n          .catch(() => {\n            this.checkingForUpdates = false;\n\n            if (Array.isArray(this.checkForUpdatesFailureCallbacks)) {\n              const callbacks = this.checkForUpdatesFailureCallbacks;\n              this.checkForUpdatesFailureCallbacks = null;\n\n              for (let callback of callbacks) {\n                callback();\n              }\n            }\n          });\n      }\n    },\n\n    _checkForUpdates: function (forceRefresh, includeDetails) {\n      return new Promise((resolve, reject) => {\n        if (!forceRefresh) {\n          this._checkForCachedUpdates(includeDetails)\n            .then((info) => {\n              if (info.cached) {\n                resolve(info);\n                return;\n              }\n\n              this._getUpdates(includeDetails)\n                .then((info) => {\n                  resolve(info);\n                })\n                .catch(reject);\n            })\n            .catch(reject);\n        } else {\n          this._getUpdates(includeDetails).then(resolve).catch(reject);\n        }\n      });\n    },\n\n    _checkForCachedUpdates: function (includeDetails) {\n      return new Promise(function (resolve, reject) {\n        var data = {\n          onlyIfCached: true,\n          includeDetails: includeDetails,\n        };\n\n        Craft.sendActionRequest('POST', 'app/check-for-updates', {data})\n          .then(({data}) => {\n            resolve(data);\n          })\n          .catch(() => {\n            resolve({cached: false});\n          });\n      });\n    },\n\n    _getUpdates: function (includeDetails) {\n      return new Promise((resolve, reject) => {\n        Craft.sendApiRequest('GET', 'updates')\n          .then((updates) => {\n            this._cacheUpdates(updates, includeDetails)\n              .then((data) => {\n                resolve(data);\n              })\n              .catch(reject);\n          })\n          .catch(reject);\n      });\n    },\n\n    _cacheUpdates: function (updates, includeDetails) {\n      return new Promise((resolve, reject) => {\n        const data = {\n          updates,\n          includeDetails,\n        };\n\n        Craft.sendActionRequest('POST', 'app/cache-updates', {data})\n          .then(({data}) => {\n            resolve(data);\n          })\n          .catch(reject);\n      });\n    },\n\n    updateUtilitiesBadge: function () {\n      var $utilitiesLink = $('#nav-utilities').find('> a:not(.sel)');\n\n      // Ignore if there is no (non-selected) Utilities nav item\n      if (!$utilitiesLink.length) {\n        return;\n      }\n\n      Craft.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            Craft.sendActionRequest('POST', 'app/get-utilities-badge-count')\n              .then(({data}) => {\n                // Get the existing utility nav badge and screen reader text, if any\n                let $badge = $utilitiesLink.children('.sidebar-action__badge');\n\n                if (data.badgeCount && !$badge.length) {\n                  $badge = $(\n                    '<span class=\"sidebar-action__badge\">' +\n                      '<span class=\"badge\" aria-hidden=\"true\"></span>' +\n                      '<span class=\"visually-hidden\" data-notification></span>' +\n                      '</span>'\n                  ).appendTo($utilitiesLink);\n                }\n\n                const $badgeLabel = $badge.children('.badge');\n                const $screenReaderText = $badge.children(\n                  '[data-notification]'\n                );\n\n                if (data.badgeCount) {\n                  $badgeLabel.text(data.badgeCount);\n                  $screenReaderText.text(\n                    Craft.t(\n                      'app',\n                      '{num, number} {num, plural, =1{notification} other{notifications}}',\n                      {\n                        num: data.badgeCount,\n                      }\n                    )\n                  );\n                } else if ($badge.length) {\n                  $badge.remove();\n                }\n\n                resolve();\n              })\n              .catch(reject);\n          })\n      );\n    },\n\n    runQueue: function () {\n      if (!this.enableQueue) {\n        return;\n      }\n\n      if (Craft.runQueueAutomatically) {\n        Craft.queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              Craft.sendActionRequest('POST', 'queue/run')\n                .then(() => {\n                  this.trackJobProgress(false, true);\n                  resolve();\n                })\n                .catch(reject);\n            })\n        );\n      } else {\n        this.trackJobProgress(false, true);\n      }\n    },\n\n    trackJobProgress: function (delay, force) {\n      // Ignore if we're already tracking jobs, or the queue is disabled\n      if ((this.trackJobProgressTimeout && !force) || !this.enableQueue) {\n        return;\n      }\n\n      this.cancelJobTracking();\n\n      if (delay) {\n        // Determine the delay based on how long the displayed job info has remained unchanged\n        if (delay === true) {\n          delay = this.getNextJobDelay();\n        }\n        this.trackJobProgressTimeout = setTimeout(\n          this._trackJobProgressInternal.bind(this),\n          delay\n        );\n      } else {\n        this._trackJobProgressInternal();\n      }\n    },\n\n    getNextJobDelay: function () {\n      return Math.min(60000, this.displayedJobInfoUnchanged * 500);\n    },\n\n    _trackJobProgressInternal: function () {\n      this.trackingJobProgress = true;\n\n      Craft.queue.push(async () => {\n        // has this been cancelled?\n        if (!this.trackingJobProgress) {\n          return;\n        }\n\n        // Tell other browser windows to stop tracking job progress\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'beforeTrackJobProgress',\n          });\n        }\n\n        this.jobProgressCancelToken = axios.CancelToken.source();\n\n        let data;\n        try {\n          const response = await Craft.sendActionRequest(\n            'POST',\n            'queue/get-job-info?limit=50&dontExtendSession=1',\n            {\n              cancelToken: this.jobProgressCancelToken.token,\n            }\n          );\n          data = response.data;\n        } catch (e) {\n          // only throw if we weren't expecting this\n          if (this.trackingJobProgress) {\n            throw e;\n          }\n        } finally {\n          this.trackingJobProgress = false;\n          this.trackJobProgressTimeout = null;\n          this.jobProgressCancelToken = null;\n        }\n\n        this.setJobData(data);\n\n        if (this.jobInfo.length) {\n          // Check again after a delay\n          this.trackJobProgress(true);\n        }\n\n        // Notify the other browser tabs about the jobs\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'trackJobProgress',\n            jobData: data,\n          });\n        }\n      });\n    },\n\n    setJobData: function (data) {\n      this.totalJobs = data.total;\n      this.setJobInfo(data.jobs);\n    },\n\n    setJobInfo: function (jobInfo) {\n      if (!this.enableQueue) {\n        return;\n      }\n\n      this.jobInfo = jobInfo;\n\n      // Update the displayed job info\n      var oldInfo = this.displayedJobInfo;\n      this.displayedJobInfo = this.getDisplayedJobInfo();\n\n      // Same old same old?\n      if (\n        oldInfo &&\n        this.displayedJobInfo &&\n        oldInfo.id === this.displayedJobInfo.id &&\n        oldInfo.progress === this.displayedJobInfo.progress &&\n        oldInfo.progressLabel === this.displayedJobInfo.progressLabel &&\n        oldInfo.status === this.displayedJobInfo.status\n      ) {\n        this.displayedJobInfoUnchanged++;\n      } else {\n        // Reset the counter\n        this.displayedJobInfoUnchanged = 1;\n      }\n\n      this.updateJobIcon();\n\n      // Fire a setJobInfo event\n      this.trigger('setJobInfo');\n    },\n\n    cancelJobTracking: function () {\n      this.trackingJobProgress = false;\n\n      if (this.trackJobProgressTimeout) {\n        clearTimeout(this.trackJobProgressTimeout);\n        this.trackJobProgressTimeout = null;\n      }\n\n      if (this.jobProgressCancelToken) {\n        this.jobProgressCancelToken.cancel();\n      }\n    },\n\n    /**\n     * Returns info for the job that should be displayed in the control panel sidebar\n     */\n    getDisplayedJobInfo: function () {\n      if (!this.enableQueue) {\n        return null;\n      }\n\n      // Set the status preference order\n      var statuses = [\n        Craft.CP.JOB_STATUS_RESERVED,\n        Craft.CP.JOB_STATUS_FAILED,\n        Craft.CP.JOB_STATUS_WAITING,\n      ];\n\n      for (var i = 0; i < statuses.length; i++) {\n        for (var j = 0; j < this.jobInfo.length; j++) {\n          if (\n            this.jobInfo[j].status === statuses[i] &&\n            (statuses[i] !== Craft.CP.JOB_STATUS_WAITING ||\n              !this.jobInfo[j].delay)\n          ) {\n            return this.jobInfo[j];\n          }\n        }\n      }\n\n      return null;\n    },\n\n    updateJobIcon: function () {\n      if (!this.enableQueue || !this.$nav.length) {\n        return;\n      }\n\n      if (this.displayedJobInfo) {\n        if (!this.jobProgressIcon) {\n          this.jobProgressIcon = new JobProgressIcon();\n        }\n\n        if (\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_RESERVED ||\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_WAITING\n        ) {\n          this.jobProgressIcon.hideFailMode();\n          this.jobProgressIcon.setDescription(\n            this.displayedJobInfo.description,\n            this.displayedJobInfo.progressLabel\n          );\n          this.jobProgressIcon.setProgress(this.displayedJobInfo.progress);\n        } else if (\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_FAILED\n        ) {\n          this.jobProgressIcon.showFailMode(Craft.t('app', 'Failed'));\n        }\n      } else {\n        if (this.jobProgressIcon) {\n          this.jobProgressIcon.hideFailMode();\n          this.jobProgressIcon.complete();\n          delete this.jobProgressIcon;\n        }\n      }\n    },\n\n    /**\n     * Returns the active site for the control panel\n     *\n     * @returns {number}\n     */\n    getSiteId: function () {\n      // If the old BaseElementIndex.siteId value is in localStorage, go aheand and remove & return that\n      let siteId = Craft.getLocalStorage('BaseElementIndex.siteId');\n      if (typeof siteId !== 'undefined') {\n        Craft.removeLocalStorage('BaseElementIndex.siteId');\n        try {\n          this.setSiteId(siteId);\n        } catch (e) {}\n      }\n      return Craft.siteId;\n    },\n\n    /**\n     * Sets the active site for the control panel\n     * @param {number} siteId\n     */\n    setSiteId: function (siteId) {\n      const site = Craft.sites.find((s) => s.id === siteId);\n\n      if (!site) {\n        throw `Invalid site ID: ${siteId}`;\n      }\n\n      Craft.siteId = siteId;\n\n      // update the base URLs used get Craft.getUrl(), etc.\n      Craft.actionUrl = Craft.getUrl(Craft.actionUrl, {site: site.handle});\n      Craft.baseCpUrl = Craft.getUrl(Craft.baseCpUrl, {site: site.handle});\n      Craft.baseUrl = Craft.getUrl(Craft.baseUrl, {site: site.handle});\n\n      // update the current URL\n      const url = Craft.getUrl(document.location.href, {site: site.handle});\n      history.replaceState({}, '', url);\n\n      // update the site--x body class\n      for (let className of document.body.classList) {\n        if (className.match(/^site--/)) {\n          document.body.classList.remove(className);\n        }\n      }\n      document.body.classList.add(`site--${site.handle}`);\n\n      // update other URLs on the page\n      $('a').each(function () {\n        if (\n          this.hostname.length &&\n          this.hostname === location.hostname &&\n          this.href.indexOf(Craft.cpTrigger) !== -1\n        ) {\n          this.href = Craft.getUrl(this.href, {site: site.handle});\n        }\n      });\n    },\n  },\n  {\n    //maxWidth: 1051, //1024,\n\n    /**\n     * @deprecated in 4.2.0. Use Craft.notificationDuration instead.\n     */\n    notificationDuration: 5000,\n\n    JOB_STATUS_WAITING: 1,\n    JOB_STATUS_RESERVED: 2,\n    JOB_STATUS_DONE: 3,\n    JOB_STATUS_FAILED: 4,\n  }\n);\n\nCraft.CP.Notification = Garnish.Base.extend({\n  type: null,\n  message: null,\n  settings: null,\n  closing: false,\n  closeTimeout: null,\n  _preventDelayedClose: false,\n  $container: null,\n  $closeBtn: null,\n  originalActiveElement: null,\n\n  init: function (type, message, settings) {\n    this.type = type;\n    this.message = message;\n    this.settings = settings || {};\n\n    this.$container = $('<div/>', {\n      class: 'notification',\n      'data-type': this.type,\n    }).appendTo(Craft.cp.$notificationContainer);\n\n    const $body = $('<div class=\"notification-body\"/>').appendTo(\n      this.$container\n    );\n\n    if (this.settings.icon) {\n      const $icon = $('<span/>', {\n        class: 'notification-icon',\n        'data-icon': this.settings.icon,\n      }).appendTo($body);\n      if (this.settings.iconLabel) {\n        $icon.attr({\n          'aria-label': this.settings.iconLabel,\n          role: 'img',\n        });\n      } else {\n        $icon.attr('aria-hidden', 'true');\n      }\n    }\n\n    const $main = $('<div class=\"notification-main\"/>').appendTo($body);\n\n    $('<div/>', {\n      class: 'notification-message',\n      text: this.message,\n    }).appendTo($main);\n\n    const $closeBtnContainer = $('<div/>').appendTo(this.$container);\n    this.$closeBtn = $('<button/>', {\n      type: 'button',\n      class: 'notification-close-btn',\n      'aria-label': Craft.t('app', 'Close'),\n      'data-icon': 'remove',\n    }).appendTo($closeBtnContainer);\n\n    if (this.settings.details) {\n      const $detailsContainer = $('<div class=\"notification-details\"/>')\n        .append(this.settings.details)\n        .appendTo($main);\n\n      if ($detailsContainer.find('button,input').length) {\n        this.originalActiveElement = document.activeElement;\n        this.$container.attr('tabindex', '-1').focus();\n        this.addListener(this.$container, 'keydown', (ev) => {\n          if (ev.keyCode === Garnish.ESC_KEY) {\n            this.close();\n          }\n        });\n      }\n    }\n\n    this.$container\n      .css({\n        opacity: 0,\n        'margin-bottom': this._negMargin(),\n      })\n      .velocity({opacity: 1, 'margin-bottom': 0}, {duration: 'fast'});\n\n    Craft.initUiElements(this.$container);\n\n    this.addListener(this.$closeBtn, 'click', 'close');\n\n    if (Craft.notificationDuration) {\n      this._initDelayedClose();\n    }\n  },\n\n  _initDelayedClose: function () {\n    if (this._preventDelayedClose) {\n      return;\n    }\n\n    if (!Craft.isVisible()) {\n      Garnish.$doc.one('visibilitychange', () => {\n        this._initDelayedClose();\n      });\n      return;\n    }\n\n    this.delayedClose();\n\n    this.$container.on(\n      'keypress keyup change focus click mousedown mouseup',\n      (ev) => {\n        if (ev.target != this.$closeBtn[0]) {\n          this.$container.off(\n            'keypress keyup change focus click mousedown mouseup'\n          );\n          this.preventDelayedClose();\n        }\n      }\n    );\n  },\n\n  _negMargin: function () {\n    return `-${this.$container.outerHeight() + 12}px`;\n  },\n\n  close: function () {\n    if (this.closing) {\n      return;\n    }\n\n    if (this.closeTimeout) {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n    }\n\n    this.closing = true;\n\n    if (\n      this.originalActiveElement &&\n      document.activeElement &&\n      (document.activeElement === this.$container[0] ||\n        $.contains(this.$container[0], document.activeElement))\n    ) {\n      $(this.originalActiveElement).focus();\n    }\n\n    this.$container.velocity(\n      {opacity: 0, 'margin-bottom': this._negMargin()},\n      {\n        duration: 'fast',\n        complete: () => {\n          this.destroy();\n        },\n      }\n    );\n  },\n\n  delayedClose: function () {\n    this.closeTimeout = setTimeout(() => {\n      this.close();\n    }, Craft.notificationDuration);\n\n    // Hold off on closing automatically on hover\n    this.$container.one('mouseover', () => {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n\n      this.$container.on('mouseout', (ev) => {\n        if (ev.target == this.$container[0]) {\n          this.$container.off('mouseout');\n          this.delayedClose();\n        }\n      });\n    });\n  },\n\n  preventDelayedClose: function () {\n    this._preventDelayedClose = true;\n\n    if (this.closeTimeout) {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n    }\n\n    this.$container.off('mouseover mouseout');\n  },\n\n  destroy: function () {\n    this.$container.remove();\n    this.base();\n  },\n});\n\nGarnish.$scrollContainer = Garnish.$win;\nCraft.cp = new Craft.CP();\n\n/**\n * Job progress icon class\n */\nvar JobProgressIcon = Garnish.Base.extend({\n  $li: null,\n  $a: null,\n  $label: null,\n  $progressLabel: null,\n\n  progress: null,\n  failMode: false,\n\n  _$bgCanvas: null,\n  _$staticCanvas: null,\n  _$hoverCanvas: null,\n  _$failCanvas: null,\n\n  _staticCtx: null,\n  _hoverCtx: null,\n  _canvasSize: null,\n  _arcPos: null,\n  _arcRadius: null,\n  _lineWidth: null,\n\n  _arcStartPos: 0,\n  _arcEndPos: 0,\n  _arcStartStepSize: null,\n  _arcEndStepSize: null,\n  _arcStep: null,\n  _arcStepTimeout: null,\n  _arcAnimateCallback: null,\n\n  _progressBar: null,\n\n  init: function () {\n    this.$li = $('<li/>', {\n      class: 'nav-item nav-item--job',\n    }).appendTo(Craft.cp.$nav.children('ul'));\n    this.$a = $('<a/>', {\n      id: 'job-icon',\n      class: 'sidebar-action sidebar-action--job',\n      href: Craft.canAccessQueueManager\n        ? Craft.getUrl('utilities/queue-manager')\n        : null,\n    }).appendTo(this.$li);\n    const $prefixContainer = $('<span class=\"sidebar-action__prefix\"/>');\n    this.$canvasContainer = $('<span class=\"nav-icon\"/>').appendTo(\n      $prefixContainer\n    );\n    $prefixContainer.appendTo(this.$a);\n\n    const $labelContainer = $('<span class=\"sidebar-action__label\">');\n    $labelContainer.appendTo(this.$a);\n    this.$label = $('<span class=\"label\"/>').appendTo($labelContainer);\n    this.$progressLabel = $('<span class=\"progress-label\"/>')\n      .appendTo($labelContainer)\n      .hide();\n\n    let m = window.devicePixelRatio > 1 ? 2 : 1;\n    this._canvasSize = 18 * m;\n    this._arcPos = this._canvasSize / 2;\n    this._arcRadius = 7 * m;\n    this._lineWidth = 3 * m;\n\n    this._$bgCanvas = this._createCanvas(\n      'bg',\n      this.$li.css('background-color')\n    );\n    this._$staticCanvas = this._createCanvas('static', this.$li.css('color'));\n    this._$hoverCanvas = this._createCanvas('hover', '#fff');\n    this._$failCanvas = this._createCanvas('fail', '#da5a47').hide();\n\n    this._staticCtx = this._$staticCanvas[0].getContext('2d');\n    this._hoverCtx = this._$hoverCanvas[0].getContext('2d');\n\n    this._drawArc(this._$bgCanvas[0].getContext('2d'), 0, 1);\n    this._drawArc(this._$failCanvas[0].getContext('2d'), 0, 1);\n  },\n\n  setDescription: function (description, progressLabel) {\n    this.$a.attr('title', description);\n    this.$label.text(description);\n    if (progressLabel) {\n      this.$progressLabel.text(progressLabel).show();\n    } else {\n      this.$progressLabel.hide();\n    }\n  },\n\n  setProgress: function (progress) {\n    if (progress == 0) {\n      this._$staticCanvas.hide();\n      this._$hoverCanvas.hide();\n    } else {\n      this._$staticCanvas.show();\n      this._$hoverCanvas.show();\n      if (this.progress && progress > this.progress) {\n        this._animateArc(0, progress / 100);\n      } else {\n        this._setArc(0, progress / 100);\n      }\n    }\n\n    this.progress = progress;\n  },\n\n  complete: function () {\n    this._animateArc(0, 1, () => {\n      this._$bgCanvas.velocity('fadeOut');\n\n      this._animateArc(1, 1, () => {\n        this.$li.remove();\n        this.destroy();\n      });\n    });\n  },\n\n  showFailMode: function (message) {\n    if (this.failMode) {\n      return;\n    }\n\n    this.failMode = true;\n    this.progress = null;\n\n    this._$bgCanvas.hide();\n    this._$staticCanvas.hide();\n    this._$hoverCanvas.hide();\n    this._$failCanvas.show();\n\n    this.setDescription(message);\n  },\n\n  hideFailMode: function () {\n    if (!this.failMode) {\n      return;\n    }\n\n    this.failMode = false;\n\n    this._$bgCanvas.show();\n    this._$staticCanvas.show();\n    this._$hoverCanvas.show();\n    this._$failCanvas.hide();\n  },\n\n  _createCanvas: function (id, color) {\n    var $canvas = $(\n        '<canvas id=\"job-icon-' +\n          id +\n          '\" width=\"' +\n          this._canvasSize +\n          '\" height=\"' +\n          this._canvasSize +\n          '\"/>'\n      ).appendTo(this.$canvasContainer),\n      ctx = $canvas[0].getContext('2d');\n\n    ctx.strokeStyle = color;\n    ctx.lineWidth = this._lineWidth;\n    ctx.lineCap = 'round';\n    return $canvas;\n  },\n\n  _setArc: function (startPos, endPos) {\n    this._arcStartPos = startPos;\n    this._arcEndPos = endPos;\n\n    this._drawArc(this._staticCtx, startPos, endPos);\n    this._drawArc(this._hoverCtx, startPos, endPos);\n  },\n\n  _drawArc: function (ctx, startPos, endPos) {\n    ctx.clearRect(0, 0, this._canvasSize, this._canvasSize);\n    ctx.beginPath();\n    ctx.arc(\n      this._arcPos,\n      this._arcPos,\n      this._arcRadius,\n      (1.5 + startPos * 2) * Math.PI,\n      (1.5 + endPos * 2) * Math.PI\n    );\n    ctx.stroke();\n    ctx.closePath();\n  },\n\n  _animateArc: function (targetStartPos, targetEndPos, callback) {\n    if (this._arcStepTimeout) {\n      clearTimeout(this._arcStepTimeout);\n    }\n\n    this._arcStep = 0;\n    this._arcStartStepSize = (targetStartPos - this._arcStartPos) / 10;\n    this._arcEndStepSize = (targetEndPos - this._arcEndPos) / 10;\n    this._arcAnimateCallback = callback;\n    this._takeNextArcStep();\n  },\n\n  _takeNextArcStep: function () {\n    this._setArc(\n      this._arcStartPos + this._arcStartStepSize,\n      this._arcEndPos + this._arcEndStepSize\n    );\n\n    this._arcStep++;\n\n    if (this._arcStep < 10) {\n      this._arcStepTimeout = setTimeout(this._takeNextArcStep.bind(this), 50);\n    } else if (this._arcAnimateCallback) {\n      this._arcAnimateCallback();\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Cards Element Index View\n */\nCraft.CardsElementIndexView = Craft.BaseElementIndexView.extend({\n  cardSort: null,\n\n  afterInit: function () {\n    // Create the table sorter\n    if (this.settings.sortable) {\n      this.cardSort = new Garnish.DragSort(this.getAllElements(), {\n        container: this.$elementContainer,\n        filter: this.settings.selectable\n          ? () => {\n              // Only return all the selected items if the target item is selected\n              if (\n                this.cardSort.$targetItem.children('.element').hasClass('sel')\n              ) {\n                return this.elementSelect.getSelectedItems().parent('li');\n              } else {\n                return this.cardSort.$targetItem;\n              }\n            }\n          : null,\n        ignoreHandleSelector: null,\n        handle: '> .element > .card-actions-container > .card-actions > .move',\n        collapseDraggees: true,\n        magnetStrength: 4,\n        helperLagBase: 1.5,\n        helper: ($helper) => {\n          $helper.children().outerHeight(this.cardSort.$draggee.height());\n          return $helper;\n        },\n        onInsertionPointChange: () => {\n          for (let $helper of this.cardSort.helpers) {\n            $helper.children().outerHeight(this.cardSort.$draggee.height());\n          }\n        },\n        onSortChange: () => {\n          if (this.settings.selectable) {\n            this.elementSelect.resetItemOrder();\n          }\n          this.settings.onSortChange(this.cardSort.$draggee);\n        },\n      });\n    }\n  },\n\n  getElementContainer: function () {\n    return this.$container.find('> .card-grid');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Category index class\n */\nCraft.CategoryIndex = Craft.BaseElementIndex.extend({\n  editableGroups: null,\n  $newCategoryBtnGroup: null,\n  $newCategoryBtn: null,\n\n  init: function (elementType, $container, settings) {\n    this.editableGroups = [];\n    this.on('selectSource', this.updateButton.bind(this));\n    this.on('selectSite', this.updateButton.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  afterInit: function () {\n    // Find which of the visible groups the user has permission to create new categories in\n    this.editableGroups = Craft.editableCategoryGroups.filter(\n      (g) => !!this.getSourceByKey(`group:${g.uid}`)\n    );\n\n    this.base();\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific category group in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultGroupHandle !== 'undefined'\n    ) {\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('handle') === defaultGroupHandle) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateButton: function () {\n    if (!this.$source) {\n      return;\n    }\n\n    // Get the handle of the selected source\n    const selectedSourceHandle = this.$source.data('handle');\n\n    // Update the New Category button\n    // ---------------------------------------------------------------------\n\n    if (this.editableGroups.length) {\n      // Remove the old button, if there is one\n      if (this.$newCategoryBtnGroup) {\n        this.$newCategoryBtnGroup.remove();\n      }\n\n      // Determine if they are viewing a group that they have permission to create categories in\n      const selectedGroup = this.editableGroups.find(\n        (g) => g.handle === selectedSourceHandle\n      );\n\n      this.$newCategoryBtnGroup = $(\n        '<div class=\"btngroup submit\" data-wrapper/>'\n      );\n      let $menuBtn;\n      const menuId = 'new-category-menu-' + Craft.randomString(10);\n\n      // If they are, show a primary \"New category\" button, and a dropdown of the other groups (if any).\n      // Otherwise only show a menu button\n      if (selectedGroup) {\n        const visibleLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New {type}', {\n                type: Craft.t('app', 'category'),\n              })\n            : Craft.t('app', 'New {group} category', {\n                group: selectedGroup.name,\n              });\n        const ariaLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New category in the {group} category group', {\n                group: selectedGroup.name,\n              })\n            : visibleLabel;\n\n        const role = this.settings.context === 'index' ? 'link' : null;\n\n        this.$newCategoryBtn = Craft.ui\n          .createButton({\n            label: visibleLabel,\n            ariaLabel: ariaLabel,\n            spinner: true,\n            role: role,\n          })\n          .addClass('submit add icon')\n          .appendTo(this.$newCategoryBtnGroup);\n\n        this.addListener(this.$newCategoryBtn, 'click mousedown', (ev) => {\n          // If this is the element index, check for Ctrl+clicks and middle button clicks\n          if (\n            this.settings.context === 'index' &&\n            ((ev.type === 'click' && Garnish.isCtrlKeyPressed(ev)) ||\n              (ev.type === 'mousedown' && ev.originalEvent.button === 1))\n          ) {\n            window.open(Craft.getUrl(`categories/${selectedGroup.handle}/new`));\n          } else if (ev.type === 'click') {\n            this._createCategory(selectedGroup.id);\n          }\n        });\n\n        if (this.editableGroups.length > 1) {\n          $menuBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn submit menubtn btngroup-btn-last',\n            'aria-controls': menuId,\n            'data-disclosure-trigger': '',\n            'aria-label': Craft.t(\n              'app',\n              'New category, choose a category group'\n            ),\n          }).appendTo(this.$newCategoryBtnGroup);\n        }\n      } else {\n        this.$newCategoryBtn = $menuBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'New {type}', {\n              type: Craft.t('app', 'category'),\n            }),\n            ariaLabel: Craft.t('app', 'New category, choose a category group'),\n            spinner: true,\n          })\n          .addClass('submit add icon menubtn btngroup-btn-last')\n          .attr('aria-controls', menuId)\n          .attr('data-disclosure-trigger', '')\n          .appendTo(this.$newCategoryBtnGroup);\n      }\n\n      this.addButton(this.$newCategoryBtnGroup);\n\n      if ($menuBtn) {\n        const $menuContainer = $('<div/>', {\n          id: menuId,\n          class: 'menu menu--disclosure',\n        }).appendTo(this.$newCategoryBtnGroup);\n        const $ul = $('<ul/>').appendTo($menuContainer);\n\n        for (const group of this.editableGroups) {\n          const anchorRole =\n            this.settings.context === 'index' ? 'link' : 'button';\n          if (this.settings.context === 'index' || group !== selectedGroup) {\n            const $li = $('<li/>').appendTo($ul);\n            const $a = $('<a/>', {\n              role: anchorRole === 'button' ? 'button' : null,\n              href: '#', // Allows for click listener and tab order\n              type: anchorRole === 'button' ? 'button' : null,\n              text: Craft.t('app', 'New {group} category', {\n                group: group.name,\n              }),\n            }).appendTo($li);\n            this.addListener($a, 'click', () => {\n              $menuBtn.data('trigger').hide();\n              this._createCategory(group.id);\n            });\n\n            if (anchorRole === 'button') {\n              this.addListener($a, 'keydown', (event) => {\n                if (event.keyCode === Garnish.SPACE_KEY) {\n                  event.preventDefault();\n                  $menuBtn.data('trigger').hide();\n                  this._createCategory(group.id);\n                }\n              });\n            }\n          }\n        }\n\n        new Garnish.DisclosureMenu($menuBtn);\n      }\n    }\n\n    // Update the URL if we're on the Categories index\n    // ---------------------------------------------------------------------\n\n    if (this.settings.context === 'index') {\n      let uri = 'categories';\n\n      if (selectedSourceHandle) {\n        uri += '/' + selectedSourceHandle;\n      }\n\n      Craft.setPath(uri);\n    }\n  },\n\n  _createCategory: function (groupId) {\n    if (this.$newCategoryBtn.hasClass('loading')) {\n      console.warn('New category creation already in progress.');\n      return;\n    }\n\n    // Find the group\n    const group = this.editableGroups.find((s) => s.id === groupId);\n\n    if (!group) {\n      throw `Invalid category group ID: ${groupId}`;\n    }\n\n    this.$newCategoryBtn.addClass('loading');\n\n    Craft.sendActionRequest('POST', 'elements/create', {\n      data: {\n        elementType: this.elementType,\n        siteId: this.siteId,\n        groupId: groupId,\n      },\n    })\n      .then((ev) => {\n        if (this.settings.context === 'index') {\n          document.location.href = Craft.getUrl(ev.data.cpEditUrl, {fresh: 1});\n        } else {\n          const slideout = Craft.createElementEditor(this.elementType, {\n            siteId: this.siteId,\n            elementId: ev.data.element.id,\n            draftId: ev.data.element.draftId,\n            params: {\n              fresh: 1,\n            },\n          });\n          slideout.on('submit', () => {\n            // Make sure the right group is selected\n            const groupSourceKey = `group:${group.uid}`;\n\n            if (this.sourceKey !== groupSourceKey) {\n              this.selectSourceByKey(groupSourceKey);\n            }\n\n            this.clearSearch();\n            this.selectElementAfterUpdate(ev.data.element.id);\n            this.updateElements();\n          });\n        }\n      })\n      .finally(() => {\n        this.$newCategoryBtn.removeClass('loading');\n      });\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass(\n  'craft\\\\elements\\\\Category',\n  Craft.CategoryIndex\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Category select input\n * @deprecated in 4.3.0. Use Craft.BaseElementSelectInput instead.\n */\nCraft.CategorySelectInput = Craft.BaseElementSelectInput.extend({\n  setSettings: function () {\n    this.base.apply(this, arguments);\n    this.settings.sortable = false;\n  },\n\n  getModalSettings: function () {\n    var settings = this.base();\n    settings.hideOnSelect = false;\n    return settings;\n  },\n\n  getElements: function () {\n    return this.$elementsContainer.find('.element');\n  },\n\n  onModalSelect: function (elements) {\n    // Disable the modal\n    this.modal.disable();\n    this.modal.disableCancelBtn();\n    this.modal.disableSelectBtn();\n    this.modal.showFooterSpinner();\n\n    // Get the new category HTML\n    var selectedCategoryIds = this.getSelectedElementIds();\n\n    for (var i = 0; i < elements.length; i++) {\n      selectedCategoryIds.push(elements[i].id);\n    }\n\n    var data = {\n      categoryIds: selectedCategoryIds,\n      siteId: elements[0].siteId,\n      id: this.settings.id,\n      name: this.settings.name,\n      branchLimit: this.settings.branchLimit,\n      selectionLabel: this.settings.selectionLabel,\n    };\n\n    const onResponse = () => {\n      this.modal.enable();\n      this.modal.enableCancelBtn();\n      this.modal.enableSelectBtn();\n      this.modal.hideFooterSpinner();\n    };\n    Craft.sendActionRequest('POST', 'categories/input-html', {data})\n      .then((response) => {\n        onResponse();\n        var $newInput = $(response.data.html),\n          $newElementsContainer = $newInput.children('.elements');\n\n        this.$elementsContainer.replaceWith($newElementsContainer);\n        this.$elementsContainer = $newElementsContainer;\n        this.resetElements();\n\n        var filteredElements = [];\n\n        for (var i = 0; i < elements.length; i++) {\n          var element = elements[i],\n            $element = this.getElementById(element.id);\n\n          if ($element) {\n            this.animateElementIntoPlace(element.$element, $element);\n            filteredElements.push(element);\n          }\n        }\n\n        this.updateDisabledElementsInModal();\n        this.modal.hide();\n        this.onSelectElements(filteredElements);\n      })\n      .catch(({response}) => {\n        onResponse();\n      });\n  },\n\n  removeElement: function ($element) {\n    // Find any descendants this category might have\n    const $allCategories = $element.add(\n      $element.parent().siblings('ul').find('.element')\n    );\n\n    // Remove our record of them all at once\n    this.removeElements($allCategories);\n\n    // Animate them away one at a time\n    for (let i = 0; i < $allCategories.length; i++) {\n      this._animateCategoryAway($allCategories, i);\n    }\n  },\n\n  _animateCategoryAway: function ($allCategories, i) {\n    let callback;\n\n    // Is this the last one?\n    if (i === $allCategories.length - 1) {\n      callback = () => {\n        const $li = $allCategories.first().parent().parent();\n        const $ul = $li.parent();\n\n        if ($ul[0] === this.$elementsContainer[0] || $li.siblings().length) {\n          $li.remove();\n        } else {\n          $ul.remove();\n        }\n      };\n    }\n\n    const func = () => {\n      this.animateElementAway($allCategories.eq(i), callback);\n    };\n\n    if (i === 0) {\n      func();\n    } else {\n      setTimeout(func, 100 * i);\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Color input\n */\nCraft.ColorInput = Garnish.Base.extend(\n  {\n    $container: null,\n    $input: null,\n    $colorContainer: null,\n    $colorPreview: null,\n    $colorInput: null,\n\n    init: function (container, settings) {\n      this.setSettings(settings, Craft.ColorInput.defaults);\n\n      this.$container = $(container);\n      this.$input = this.$container.find('.color-input');\n      this.$colorContainer = this.$container.children('.color');\n      this.$colorPreview = this.$colorContainer.children('.color-preview');\n\n      this.createColorInput();\n      this.handleTextChange();\n\n      this.addListener(this.$input, 'input', 'handleTextChange');\n    },\n\n    createColorInput: function () {\n      var input = document.createElement('input');\n      input.setAttribute('type', 'color');\n\n      if (input.type !== 'color') {\n        // The browser doesn't support input[type=color]\n        return;\n      }\n\n      this.$colorContainer.removeClass('static');\n      this.$colorInput = $(input)\n        .addClass('color-preview-input')\n        .attr({\n          'aria-controls': this.$input.attr('id'),\n          'aria-label': Craft.t('app', 'Color picker'),\n        })\n        .appendTo(this.$colorPreview);\n\n      if (this.settings.presets?.length) {\n        const listId = `listbox-${Math.floor(Math.random() * 1000000)}`;\n        this.$colorInput.attr('list', listId);\n        const $list = $('<datalist/>', {\n          id: listId,\n        }).insertAfter(this.$colorInput);\n        for (let color of this.settings.presets) {\n          $('<option/>').text(color).appendTo($list);\n        }\n      }\n\n      this.addListener(this.$colorInput, 'click', function (ev) {\n        ev.stopPropagation();\n      });\n\n      this.addListener(this.$colorContainer, 'click', function () {\n        this.$colorInput.trigger('click');\n      });\n\n      this.addListener(this.$colorInput, 'input', 'updateColor');\n    },\n\n    updateColor: function () {\n      this.$input.val(this.$colorInput.val());\n      this.handleTextChange();\n    },\n\n    handleTextChange: function () {\n      let val = this.$input.val();\n\n      if (val !== (val = val.trim())) {\n        this.$input.val(val);\n      }\n\n      // Chop off the #\n      if (val.length && val[0] === '#') {\n        val = val.substring(1);\n        this.$input.val(val);\n      }\n\n      // If empty, set the preview to transparent\n      if (!val.length) {\n        this.$colorPreview.css('background-color', '');\n        return;\n      }\n\n      // Now normalize it for the UI stuff\n      if (val.length === 3) {\n        val = val[0].repeat(2) + val[1].repeat(2) + val[2].repeat(2);\n      }\n\n      if (val.match(/^[0-9a-f]{6}$/i)) {\n        this.$colorPreview.css('background-color', `#${val}`);\n        if (this.$colorInput) {\n          this.$colorInput.val(`#${val}`);\n        }\n      } else {\n        this.$colorPreview.css('background-color', '');\n      }\n    },\n  },\n  {\n    defaults: {\n      presets: [],\n    },\n\n    _browserSupportsColorInputs: null,\n\n    doesBrowserSupportColorInputs: function () {\n      if (Craft.ColorInput._browserSupportsColorInputs === null) {\n      }\n\n      return Craft.ColorInput._browserSupportsColorInputs;\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Base component select input\n */\nCraft.ComponentSelectInput = Garnish.Base.extend(\n  {\n    componentSelect: null,\n    componentSort: null,\n\n    $container: null,\n    $form: null,\n    $list: null,\n    $components: null,\n    $addBtn: null,\n    $createBtn: null,\n\n    _initialized: false,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.ComponentSelectInput.defaults);\n\n      // No reason for this to be sortable if we're only allowing one selection\n      if (this.settings.limit === 1) {\n        this.settings.sortable = false;\n      }\n\n      this.$container = $(`#${this.settings.id}`);\n      this.$form = this.$container.closest('form');\n\n      // Store a reference to this class\n      this.$container.data('componentSelect', this);\n\n      this.$list = this.$container.children('ul');\n      this.$addBtn = this.$container.find('.add-btn:first');\n      this.$createBtn = this.$container.find('.create-btn:first');\n\n      this.initComponentSelect();\n      this.initComponentSort();\n      this.resetComponents();\n\n      if (this.$addBtn.length) {\n        this.addListener(this.getOptions(), 'activate', (ev) => {\n          const $button = $(ev.currentTarget);\n          this.addComponent($button.data('type'), $button.data('id'));\n        });\n      }\n\n      if (this.$createBtn.length && this.settings.createAction) {\n        this.addListener(this.$createBtn, 'activate', () => {\n          const slideout = new Craft.CpScreenSlideout(\n            this.settings.createAction\n          );\n          slideout.on('submit', (ev) => {\n            const data = ev.response.data;\n            this.addComponent(data.modelClass, data.modelId, true);\n          });\n          slideout.on('close', () => {\n            this.$createBtn.focus();\n          });\n        });\n      }\n\n      if (this.componentSelect) {\n        this.addListener(Garnish.$win, 'mousedown', (ev) => {\n          if (\n            !this.$container.is(ev.target) &&\n            !this.$container.find(ev.target).length\n          ) {\n            this.componentSelect.deselectAll();\n          }\n        });\n      }\n\n      this._initialized = true;\n    },\n\n    get totalSelected() {\n      return this.$components.length;\n    },\n\n    getComponents() {\n      return this.$list.find('.chip');\n    },\n\n    getOptions() {\n      if (!this.$addBtn.length) {\n        return $();\n      }\n\n      return this.$addBtn\n        .disclosureMenu()\n        .data('disclosureMenu')\n        .$container.find('button');\n    },\n\n    getOption(id) {\n      return this.getOptions().filter(`[data-id=\"${id}\"]`);\n    },\n\n    showOption(id) {\n      this.getOption(id).parent('li').removeClass('hidden');\n    },\n\n    hideOption(id) {\n      this.getOption(id).parent('li').addClass('hidden');\n    },\n\n    initComponentSelect: function () {\n      if (this.settings.selectable) {\n        this.componentSelect = new Garnish.Select({\n          multi: this.settings.sortable,\n          filter: (target) => {\n            return !$(target).closest('a[href],button,[role=button]').length;\n          },\n          // prevent keyboard focus since component selection is only needed for drag-n-drop\n          makeFocusable: false,\n        });\n      }\n    },\n\n    initComponentSort: function () {\n      if (this.settings.sortable) {\n        this.componentSort = new Garnish.DragSort({\n          container: this.$list,\n          filter: this.settings.selectable\n            ? () => {\n                // Only return all the selected items if the target item is selected\n                if (\n                  this.componentSort.$targetItem\n                    .children('.chip')\n                    .hasClass('sel')\n                ) {\n                  return this.componentSelect.getSelectedItems().parent('li');\n                } else {\n                  return this.componentSort.$targetItem;\n                }\n              }\n            : null,\n          ignoreHandleSelector: '.delete',\n          handle: '> .chip > .chip-content > .chip-actions > .move',\n          axis: this.getComponentSortAxis(),\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onChange();\n          },\n        });\n      }\n    },\n\n    getComponentSortAxis: function () {\n      if (!this.$list.hasClass('inline-chips')) {\n        return 'y';\n      }\n      return null;\n    },\n\n    canAddMoreComponents: function () {\n      return (\n        !this.settings.limit || this.$components.length < this.settings.limit\n      );\n    },\n\n    updateButtons() {\n      if (this.canAddMoreComponents()) {\n        if (this.$addBtn.length) {\n          if (this.getOptions().parent(':not(.hidden)').length) {\n            this.$addBtn.removeClass('hidden');\n          } else {\n            this.$addBtn.addClass('hidden');\n          }\n        }\n\n        if (this.$createBtn.length) {\n          this.$createBtn.removeClass('hidden');\n        }\n      } else {\n        if (this.$addBtn.length) {\n          this.$addBtn.addClass('hidden');\n        }\n        if (this.$createBtn.length) {\n          this.$createBtn.addClass('hidden');\n        }\n      }\n\n      const $container = this.$addBtn.length && this.$addBtn.parent('.flex');\n      if ($container && $container.length) {\n        if ($container.children(':not(.hidden)').length) {\n          $container.removeClass('hidden');\n        } else {\n          $container.addClass('hidden');\n        }\n      }\n    },\n\n    focusNextLogicalElement: function () {\n      if (this.canAddMoreComponents()) {\n        // If can add more components, focus ADD button\n        if (this.$addBtn.length) {\n          this.$addBtn.get(0).focus();\n        }\n      } else {\n        // If can't add more components, focus on the final remove\n        this.focusLastRemoveBtn();\n      }\n    },\n\n    focusLastRemoveBtn: function () {\n      const $removeBtns = this.$container.find('.delete');\n\n      if (!$removeBtns.length) return;\n\n      $removeBtns.last()[0].focus();\n    },\n\n    resetComponents: function () {\n      if (this.$components !== null) {\n        this.removeComponents(this.$components);\n      } else {\n        this.$components = $();\n      }\n\n      this.addComponents(this.getComponents());\n    },\n\n    addComponents: function ($components) {\n      // add the action triggers\n      for (let i = 0; i < $components.length; i++) {\n        const $component = $components.eq(i);\n\n        const actions = this.defineComponentActions($component);\n        Craft.addActionsToChip($component, actions);\n\n        const disclosureMenu = $component\n          .find('> .chip-content > .chip-actions .action-btn')\n          .disclosureMenu()\n          .data('disclosureMenu');\n        const moveForwardBtn = disclosureMenu.$container.find(\n          '[data-move-forward]'\n        )[0];\n        const moveBackwardBtn = disclosureMenu.$container.find(\n          '[data-move-backward]'\n        )[0];\n\n        disclosureMenu.on('show', () => {\n          const $li = $component.parent();\n          const $prev = $li.prev();\n          const $next = $li.next();\n\n          if (moveForwardBtn) {\n            disclosureMenu.toggleItem(moveForwardBtn, $prev.length);\n          }\n          if (moveBackwardBtn) {\n            disclosureMenu.toggleItem(moveBackwardBtn, $next.length);\n          }\n        });\n\n        if (this.settings.sortable) {\n          $('<button/>', {\n            type: 'button',\n            class: 'move icon',\n            title: Craft.t('app', 'Reorder'),\n            'aria-label': Craft.t('app', 'Reorder'),\n            'aria-describedby': $component.find('.label').attr('id'),\n          }).appendTo($component.find('.chip-actions'));\n        }\n\n        this.addListener($component, 'dblclick,taphold', (ev) => {\n          // don't open the edit slideout if we are tapholding to drag\n          if (ev.type === 'taphold' && ev.target.nodeName === 'BUTTON') {\n            return;\n          }\n          disclosureMenu.$container.find('[data-edit-action]').click();\n        });\n\n        this.hideOption($component.data('id'));\n      }\n\n      if (this.settings.selectable) {\n        this.componentSelect.addItems($components);\n      }\n\n      if (this.settings.sortable) {\n        this.componentSort.addItems($components.parent('li'));\n      }\n\n      $components.on('keydown', (ev) => {\n        if ([Garnish.BACKSPACE_KEY, Garnish.DELETE_KEY].includes(ev.keyCode)) {\n          ev.stopPropagation();\n          ev.preventDefault();\n          const $selected = this.componentSelect.getSelectedItems();\n          for (let i = 0; i < $selected.length; i++) {\n            this.removeComponent($selected.eq(i));\n          }\n        }\n      });\n\n      this.$components = this.$components.add($components);\n\n      this.onChange();\n    },\n\n    defineComponentActions: function ($component) {\n      const actions = [];\n\n      if (this.settings.sortable) {\n        const axis = this.getComponentSortAxis();\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-up'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-left'\n                : 'arrow-right',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move up')\n              : Craft.t('app', 'Move forward'),\n          callback: () => {\n            this.moveComponentForward($component);\n          },\n          attributes: {\n            'data-move-forward': true,\n          },\n        });\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-down'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-right'\n                : 'arrow-left',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move down')\n              : Craft.t('app', 'Move backward'),\n          callback: () => {\n            this.moveComponentBackward($component);\n          },\n          attributes: {\n            'data-move-backward': true,\n          },\n        });\n      }\n\n      actions.push({\n        icon: 'remove',\n        label: Craft.t('app', 'Remove'),\n        callback: () => {\n          this.removeComponent($component);\n        },\n        destructive: true,\n      });\n\n      return actions;\n    },\n\n    onChange() {\n      this.componentSelect?.resetItemOrder();\n      this.$components = $().add(this.$components);\n\n      this.updateButtons();\n\n      if (this._initialized) {\n        this.trigger('change');\n      }\n    },\n\n    moveComponentForward($element) {\n      const $li = $element.closest('li');\n      const $prev = $li.prev();\n      if ($prev.length) {\n        $li.insertBefore($prev);\n        this.onChange();\n      }\n    },\n\n    moveComponentBackward($element) {\n      const $li = $element.closest('li');\n      const $next = $li.next();\n      if ($next.length) {\n        $li.insertAfter($next);\n        this.onChange();\n      }\n    },\n\n    removeComponents: function ($components) {\n      if (this.settings.selectable) {\n        this.componentSelect.removeItems($components);\n      }\n\n      // Disable the hidden input in case the form is submitted before this component gets removed from the DOM\n      $components.children('input').prop('disabled', true);\n\n      for (let i = 0; i < $components.length; i++) {\n        this.showOption($components.eq(i).data('id'));\n      }\n\n      // Move the focus to the next component in the list, if there is one\n      let $nextComponent;\n      if (this.settings.selectable) {\n        const lastComponentIndex = this.$components.index($components.last());\n        $nextComponent = this.$components.eq(lastComponentIndex + 1);\n      }\n      if ($nextComponent.length) {\n        $nextComponent.focus();\n      } else {\n        this.focusNextLogicalElement();\n      }\n\n      this.$components = this.$components.not($components);\n      this.onChange();\n    },\n\n    removeComponent: function ($component) {\n      // Remove any inputs from the form data\n      $('[name]', $component).removeAttr('name');\n      this.removeComponents($component);\n      this.animateComponentAway($component, () => {\n        $component.parent('li').remove();\n      });\n    },\n\n    animateComponentAway: function ($component, callback) {\n      $component.css('z-index', 0);\n\n      var animateCss = {\n        opacity: -1,\n      };\n      animateCss['margin-' + Craft.left] = -(\n        $component.outerWidth() +\n        parseInt($component.css('margin-' + Craft.right))\n      );\n\n      animateCss['margin-bottom'] = -(\n        $component.outerHeight() + parseInt($component.css('margin-bottom'))\n      );\n\n      $component.velocity(\n        animateCss,\n        Craft.ComponentSelectInput.REMOVE_FX_DURATION,\n        () => {\n          if (callback) {\n            callback();\n          }\n        }\n      );\n    },\n\n    getSelectedComponentIds() {\n      const ids = [];\n      for (let i = 0; i < this.$components.length; i++) {\n        ids.push(this.$components.eq(i).data('id'));\n      }\n      return ids;\n    },\n\n    async addComponent(type, id, addToMenu = false) {\n      const disclosureMenu = this.$addBtn.length\n        ? this.$addBtn.disclosureMenu().data('disclosureMenu')\n        : null;\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'app/render-components',\n        {\n          data: {\n            components: [\n              {\n                type,\n                id,\n                instances: [\n                  {\n                    showActionMenu: this.settings.showActionMenu,\n                    inputName: this.settings.name,\n                  },\n                ],\n              },\n            ],\n            withMenuItems: addToMenu,\n            menuId: disclosureMenu?.$container.attr('id'),\n          },\n        }\n      );\n\n      const canAdd = this.canAddMoreComponents();\n\n      if (canAdd) {\n        const $component = $(data.components[type][id][0]);\n        $('<li/>').append($component).appendTo(this.$list);\n        this.addComponents($component);\n      }\n\n      if (addToMenu && disclosureMenu) {\n        const $menuItem = $(data.menuItems[type][id]);\n        disclosureMenu.addItem($menuItem);\n        if (canAdd) {\n          disclosureMenu.hideItem($menuItem.children()[0]);\n        }\n        this.addListener($menuItem.find('button'), 'activate', () => {\n          this.addComponent(type, id);\n        });\n      }\n\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n    },\n  },\n  {\n    REMOVE_FX_DURATION: 200,\n    defaults: {\n      id: null,\n      name: null,\n      limit: null,\n      sortable: true,\n      selectable: true,\n      showActionMenu: true,\n      createAction: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * CP Screen Slideout\n */\nCraft.CpModal = Garnish.Modal.extend(\n  {\n    action: null,\n\n    namespace: null,\n\n    showingLoadSpinner: false,\n\n    $loadSpinner: null,\n\n    $container: null,\n\n    $body: null,\n    $content: null,\n\n    $sidebar: null,\n\n    $footer: null,\n\n    $cancelBtn: null,\n    $saveBtn: null,\n\n    showingSidebar: false,\n\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    fieldsWithErrors: null,\n\n    init: function (action, settings) {\n      this.action = action;\n      this.setSettings(settings, Craft.CpModal.defaults);\n\n      this.fieldsWithErrors = [];\n\n      // Body\n      this.$body = $('<div/>', {class: 'cpmodal-body'});\n\n      // Content\n      this.$content = $('<div/>', {class: 'cpmodal-content'}).appendTo(\n        this.$body\n      );\n\n      // Footer\n      this.$footer = $('<div/>', {class: 'cpmodal-footer hidden'});\n\n      $('<div/>', {class: 'flex-grow'}).appendTo(this.$footer);\n\n      const $btnContainer = $('<div/>', {class: 'flex flex-nowrap'}).appendTo(\n        this.$footer\n      );\n\n      this.$loadSpinner = $('<div/>', {\n        class: 'spinner',\n        title: Craft.t('app', 'Loading'),\n        'aria-label': Craft.t('app', 'Loading'),\n      }).prependTo($btnContainer);\n\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($btnContainer);\n\n      if (this.settings.showSubmitButton) {\n        this.$saveBtn = Craft.ui\n          .createSubmitButton({\n            label: Craft.t('app', 'Save'),\n            spinner: true,\n          })\n          .appendTo($btnContainer);\n      }\n\n      this.$container = $(\n        `<${this.settings.containerElement}/>`,\n        this.settings.containerAttributes\n      );\n\n      let $contents = this.$body.add(this.$footer);\n\n      this.$container.append($contents);\n\n      this.base(this.$container, {\n        autoShow: false,\n      });\n\n      this.$container.data('cpModal', this);\n\n      // Register shortcuts & events\n      Garnish.uiLayerManager.registerShortcut(\n        {\n          keyCode: Garnish.S_KEY,\n          ctrl: true,\n        },\n        (ev) => {\n          this.handleSubmit(ev);\n        }\n      );\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$cancelBtn, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$shade, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$container, 'click', (ev) => {\n        const $target = $(event.target);\n\n        if (\n          this.showingSidebar &&\n          !$target.closest(this.$sidebarBtn).length &&\n          !$target.closest(this.$sidebar).length\n        ) {\n          this.hideSidebar();\n        }\n      });\n      this.addListener(this.$container, 'submit', 'handleSubmit');\n\n      this.load();\n    },\n\n    /**\n     * @param {Object} [data={}]\n     * @param {boolean} [refreshInitialData=true]\n     * @returns {Promise}\n     */\n    load: function (data, refreshInitialData) {\n      return new Promise((resolve, reject) => {\n        this.trigger('beforeLoad');\n        this.showLoadSpinner();\n\n        if (this.cancelToken) {\n          this.ignoreFailedRequest = true;\n          this.cancelToken.cancel();\n        }\n\n        this.cancelToken = axios.CancelToken.source();\n\n        Craft.sendActionRequest(\n          'GET',\n          this.action,\n          $.extend(\n            {\n              params: Object.assign({}, this.getParams(), this.settings.params),\n              cancelToken: this.cancelToken.token,\n              headers: {\n                'X-Craft-Container-Id': this.$container.attr('id'),\n              },\n            },\n            this.settings.requestOptions\n          )\n        )\n          .then((response) => {\n            this.update(response.data)\n              .then(() => {\n                if (refreshInitialData !== false) {\n                  this.$container.data('delta-names', response.data.deltaNames);\n                  this.$container.data(\n                    'initial-delta-values',\n                    response.data.initialDeltaValues\n                  );\n                  this.$container.data(\n                    'initialSerializedValue',\n                    this.$container.serialize()\n                  );\n                }\n                resolve();\n              })\n              .catch((e) => {\n                reject(e);\n              });\n          })\n          .catch((e) => {\n            if (!this.ignoreFailedRequest) {\n              Craft.cp.displayError();\n              reject(e);\n            }\n            this.ignoreFailedRequest = false;\n          })\n          .finally(() => {\n            this.hideLoadSpinner();\n            this.show();\n            this.cancelToken = null;\n          });\n      });\n    },\n\n    getParams: function () {\n      return {};\n    },\n\n    showLoadSpinner: function () {\n      this.$loadSpinner.removeClass('hidden');\n      this.showingLoadSpinner = true;\n    },\n\n    hideLoadSpinner: function () {\n      this.$loadSpinner.addClass('hidden');\n      this.showingLoadSpinner = false;\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    update: function (data) {\n      return new Promise((resolve) => {\n        this.namespace = data.namespace;\n\n        if (data.bodyClass) {\n          this.$body.addClass(data.bodyClass);\n        }\n\n        this.$content.html(data.content);\n\n        if (data.submitButtonLabel) {\n          this.$saveBtn.text(data.submitButtonLabel);\n        }\n\n        if (data.formAttributes) {\n          Craft.setElementAttributes(this.$container, data.formAttributes);\n        }\n\n        this.$footer.removeClass('hidden');\n\n        Garnish.requestAnimationFrame(() => {\n          Craft.appendHeadHtml(data.headHtml);\n          Craft.appendBodyHtml(data.bodyHtml);\n\n          Craft.initUiElements(this.$content);\n          Craft.cp.elementThumbLoader.load($(this.$content));\n\n          if (!Garnish.isMobileBrowser()) {\n            Craft.setFocusWithin(this.$content);\n          }\n\n          resolve();\n          this.trigger('load');\n        });\n      });\n    },\n\n    showSubmitSpinner: function () {\n      this.$saveBtn.addClass('loading');\n    },\n\n    hideSubmitSpinner: function () {\n      this.$saveBtn.removeClass('loading');\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      this.submit();\n    },\n\n    submit: function () {\n      this.showSubmitSpinner();\n      const data = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        this.$container.serialize(),\n        null,\n        this.$container.data('initial-delta-values')\n      );\n\n      Craft.sendActionRequest('POST', null, {\n        data,\n        headers: {\n          'X-Craft-Namespace': this.namespace,\n        },\n      })\n        .then((response) => {\n          this.handleSubmitResponse(response);\n        })\n        .catch((error) => {\n          this.handleSubmitError(error);\n        })\n        .finally(() => {\n          this.hideSubmitSpinner();\n        });\n    },\n\n    handleSubmitResponse: function (response) {\n      this.clearErrors();\n      const data = response.data || {};\n      if (data.message) {\n        Craft.cp.displaySuccess(data.message, data.notificationSettings);\n      }\n      if (data.modelClass && data.modelId) {\n        Craft.refreshComponentInstances(data.modelClass, data.modelId);\n      }\n      this.trigger('submit', {\n        response: response,\n        data: (data.modelName && data[data.modelName]) || {},\n      });\n      if (this.settings.closeOnSubmit) {\n        this.close();\n      }\n    },\n\n    handleSubmitError: function (error) {\n      if (\n        !error.isAxiosError ||\n        !error.response ||\n        !error.response.status === 400\n      ) {\n        Craft.cp.displayError();\n        throw error;\n      }\n\n      const data = error.response.data || {};\n      Craft.cp.displayError(data.message);\n      if (data.errors) {\n        this.showErrors(data.errors);\n      }\n    },\n\n    /**\n     * @param {string[]} errors\n     */\n    showErrors: function (errors) {\n      this.clearErrors();\n\n      Object.entries(errors).forEach(([name, fieldErrors]) => {\n        const $field = this.$container.find(`[data-attribute=\"${name}\"]`);\n        if ($field) {\n          Craft.ui.addErrorsToField($field, fieldErrors);\n          this.fieldsWithErrors.push($field);\n        }\n      });\n      this.updateSizeAndPosition();\n    },\n\n    clearErrors: function () {\n      this.fieldsWithErrors.forEach(($field) => {\n        Craft.ui.clearErrorsFromField($field);\n      });\n    },\n\n    isDirty: function () {\n      const initialValue = this.$container.data('initialSerializedValue');\n      if (typeof initialValue === 'undefined') {\n        return false;\n      }\n\n      const serializer =\n        this.$container.data('serializer') ||\n        (() => this.$container.serialize());\n      return initialValue !== serializer();\n    },\n\n    closeMeMaybe: function () {\n      if (!this.visible) {\n        return;\n      }\n\n      if (\n        !this.isDirty() ||\n        confirm(\n          Craft.t(\n            'app',\n            'Are you sure you want to close this screen? Any changes will be lost.'\n          )\n        )\n      ) {\n        this.close();\n      }\n    },\n\n    close: function () {\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n      this.trigger('close');\n      this.destroy();\n    },\n  },\n  {\n    defaults: {\n      params: {},\n      containerElement: 'form',\n      containerAttributes: {\n        id: `cp-modal-${Math.floor(Math.random() * 100000000)}`,\n        action: '',\n        method: 'post',\n        novalidate: '',\n        class: 'cpmodal modal fitted',\n      },\n      requestOptions: {},\n      closeOnSubmit: true,\n      showSubmitButton: true,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * CP Screen Slideout\n */\nCraft.CpScreenSlideout = Craft.Slideout.extend(\n  {\n    action: null,\n\n    namespace: null,\n\n    showingLoadSpinner: false,\n    hasTabs: false,\n    hasCpLink: false,\n    hasSidebar: false,\n\n    $header: null,\n    $toolbar: null,\n    $tabContainer: null,\n    $loadSpinner: null,\n    $actionBtn: null,\n    $editLink: null,\n    $sidebarBtn: null,\n\n    $body: null,\n    $content: null,\n\n    $sidebar: null,\n\n    $footer: null,\n    $noticeContainer: null,\n    $cancelBtn: null,\n    $saveBtn: null,\n\n    tabManager: null,\n    showingSidebar: false,\n\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    fieldsWithErrors: null,\n\n    init: function (action, settings) {\n      this.action = action;\n      this.setSettings(settings, Craft.CpScreenSlideout.defaults);\n\n      this.fieldsWithErrors = [];\n\n      // Header\n      this.$header = $('<header/>', {class: 'pane-header'});\n      this.$toolbar = $('<div/>', {class: 'so-toolbar'}).appendTo(this.$header);\n      this.$tabContainer = $('<div/>', {class: 'pane-tabs'}).appendTo(\n        this.$toolbar\n      );\n      this.$loadSpinner = $('<div/>', {\n        class: 'spinner',\n        title: Craft.t('app', 'Loading'),\n        'aria-label': Craft.t('app', 'Loading'),\n      }).appendTo(this.$toolbar);\n      this.$editLink = $('<a/>', {\n        target: '_blank',\n        class: 'btn header-btn hidden',\n        title: Craft.t('app', 'Open in a new tab'),\n        'aria-label': Craft.t('app', 'Open in a new tab'),\n        'data-icon': 'external',\n      }).appendTo(this.$toolbar);\n      this.$sidebarBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn header-btn hidden sidebar-btn',\n        title: Craft.t('app', 'Show sidebar'),\n        'aria-label': Craft.t('app', 'Show sidebar'),\n        'data-icon': `sidebar-${Garnish.ltr ? 'right' : 'left'}`,\n        'aria-expanded': 'false',\n      }).appendTo(this.$toolbar);\n\n      this.addListener(this.$sidebarBtn, 'click', (ev) => {\n        ev.preventDefault();\n        if (!this.showingSidebar) {\n          this.showSidebar();\n        } else {\n          this.hideSidebar();\n        }\n      });\n\n      // Body\n      this.$body = $('<div/>', {class: 'so-body'});\n\n      // Content\n      this.$content = $('<div/>', {class: 'so-content'}).appendTo(this.$body);\n\n      // Sidebar\n      this.$sidebar = $('<div/>', {\n        class: 'so-sidebar details hidden',\n      }).appendTo(this.$body);\n\n      // Footer\n      this.$footer = $('<div/>', {class: 'so-footer hidden'});\n      this.$noticeContainer = $('<div/>', {class: 'so-notice'}).appendTo(\n        this.$footer\n      );\n      $('<div/>', {class: 'flex-grow'}).appendTo(this.$footer);\n      const $btnContainer = $('<div/>', {class: 'flex flex-nowrap'}).appendTo(\n        this.$footer\n      );\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($btnContainer);\n      this.$saveBtn = Craft.ui\n        .createSubmitButton({\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .appendTo($btnContainer);\n\n      let $contents = this.$header.add(this.$body).add(this.$footer);\n\n      this.base($contents, {\n        containerElement: 'form',\n        containerAttributes: {\n          id: `cp-screen-${Math.floor(Math.random() * 100000000)}`,\n          action: '',\n          method: 'post',\n          novalidate: '',\n          class: 'cp-screen',\n        },\n        closeOnEsc: false,\n        closeOnShadeClick: false,\n      });\n\n      this.$container.data('cpScreen', this);\n      this.on('beforeClose', () => {\n        this.hideSidebarIfOverlapping();\n      });\n\n      // Register shortcuts & events\n      Garnish.uiLayerManager.registerShortcut(\n        {\n          keyCode: Garnish.S_KEY,\n          ctrl: true,\n        },\n        (ev) => {\n          this.handleSubmit(ev);\n        }\n      );\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$cancelBtn, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$shade, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$container, 'click', (ev) => {\n        const $target = $(event.target);\n\n        if (\n          this.showingSidebar &&\n          !$target.closest(this.$sidebarBtn).length &&\n          !$target.closest(this.$sidebar).length\n        ) {\n          this.hideSidebarIfOverlapping();\n        }\n      });\n      this.addListener(this.$container, 'submit', 'handleSubmit');\n\n      this.load();\n    },\n\n    /**\n     * @param {Object} [data={}]\n     * @param {boolean} [refreshInitialData=true]\n     * @returns {Promise}\n     */\n    load: function (data, refreshInitialData) {\n      return new Promise((resolve, reject) => {\n        this.trigger('beforeLoad');\n        this.showLoadSpinner();\n\n        if (this.cancelToken) {\n          this.ignoreFailedRequest = true;\n          this.cancelToken.cancel();\n        }\n\n        this.cancelToken = axios.CancelToken.source();\n\n        Craft.sendActionRequest(\n          'GET',\n          this.action,\n          $.extend(\n            {\n              params: Object.assign({}, this.getParams(), this.settings.params),\n              cancelToken: this.cancelToken.token,\n              headers: {\n                'X-Craft-Container-Id': this.$container.attr('id'),\n              },\n            },\n            this.settings.requestOptions\n          )\n        )\n          .then((response) => {\n            this.update(response.data)\n              .then(() => {\n                if (refreshInitialData !== false) {\n                  this.$container.data('delta-names', response.data.deltaNames);\n                  this.$container.data(\n                    'initial-delta-values',\n                    response.data.initialDeltaValues\n                  );\n                  this.$container.data(\n                    'initialSerializedValue',\n                    this.$container.serialize()\n                  );\n                }\n                resolve();\n              })\n              .catch((e) => {\n                reject(e);\n              });\n          })\n          .catch((e) => {\n            if (!this.ignoreFailedRequest) {\n              Craft.cp.displayError();\n              reject(e);\n            }\n            this.ignoreFailedRequest = false;\n          })\n          .finally(() => {\n            this.hideLoadSpinner();\n            this.cancelToken = null;\n          });\n      });\n    },\n\n    getParams: function () {\n      return {};\n    },\n\n    updateHeaderVisibility: function () {\n      // Should the header be shown regardless of viewport size?\n      const forceShow =\n        this.settings.showHeader ||\n        this.hasTabs ||\n        this.hasCpLink ||\n        this.showingLoadSpinner;\n\n      if (forceShow || this.hasSidebar) {\n        this.$header.removeClass('hidden');\n      } else {\n        this.$header.addClass('hidden');\n      }\n\n      if (forceShow) {\n        this.$header.addClass('so-visible');\n      } else {\n        this.$header.removeClass('so-visible');\n      }\n    },\n\n    showLoadSpinner: function () {\n      this.$loadSpinner.removeClass('hidden');\n      this.showingLoadSpinner = true;\n      this.updateHeaderVisibility();\n    },\n\n    hideLoadSpinner: function () {\n      this.$loadSpinner.addClass('hidden');\n      this.showingLoadSpinner = false;\n      this.updateHeaderVisibility();\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    update: function (data) {\n      return new Promise((resolve) => {\n        this.namespace = data.namespace;\n\n        if (data.bodyClass) {\n          this.$body.addClass(data.bodyClass);\n        }\n\n        this.$content.html(data.content);\n\n        if (data.submitButtonLabel) {\n          this.$saveBtn.text(data.submitButtonLabel);\n        }\n\n        this.updateTabs(data.tabs);\n\n        if (data.formAttributes) {\n          Craft.setElementAttributes(this.$container, data.formAttributes);\n        }\n\n        if (data.editUrl) {\n          this.$editLink.removeClass('hidden').attr('href', data.editUrl);\n          this.hasCpLink = true;\n        } else {\n          this.$editLink.addClass('hidden');\n          this.hasCpLink = false;\n        }\n\n        if (data.actionMenu) {\n          const labelId = Craft.namespaceId(\n            'action-menu-label',\n            this.namespace\n          );\n          const menuId = Craft.namespaceId('action-menu', this.namespace);\n          $('<label/>', {\n            id: labelId,\n            class: 'visually-hidden',\n            text: Craft.t('app', 'Actions'),\n          }).insertBefore(this.$editLink);\n          this.$actionBtn = $('<button/>', {\n            class: 'btn action-btn header-btn',\n            type: 'button',\n            title: Craft.t('app', 'Actions'),\n            'aria-controls': menuId,\n            'aria-describedby': labelId,\n            'data-disclosure-trigger': 'true',\n          }).insertBefore(this.$editLink);\n          $(data.actionMenu).insertBefore(this.$editLink);\n          this.$actionBtn.disclosureMenu();\n        } else {\n          this.$actionBtn = null;\n        }\n\n        if (data.sidebar) {\n          this.$sidebarBtn.removeClass('hidden');\n          this.$sidebar.html(data.sidebar);\n\n          // Open outbound links in new windows\n          this.$sidebar.find('a').each(function () {\n            if (\n              this.hostname.length &&\n              typeof $(this).attr('target') === 'undefined'\n            ) {\n              $(this).attr('target', '_blank');\n            }\n          });\n\n          this.hasSidebar = true;\n\n          // is the slideout wide enough to show it alongside the content?\n          if (this.$container.width() > 700) {\n            this.showSidebar();\n          } else {\n            this.hideSidebar();\n          }\n        } else {\n          this.hideSidebar();\n          this.$sidebarBtn.addClass('hidden');\n          this.$sidebar.addClass('hidden').html('');\n          this.hasSidebar = false;\n        }\n\n        if (data.notice) {\n          this.$noticeContainer.html(data.notice);\n        } else {\n          this.$noticeContainer.empty();\n        }\n\n        this.updateHeaderVisibility();\n        this.$footer.removeClass('hidden');\n\n        Garnish.requestAnimationFrame(async () => {\n          Craft.initUiElements(this.$content);\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n          Craft.cp.elementThumbLoader.load($(this.$content));\n\n          if (data.sidebar) {\n            Craft.initUiElements(this.$sidebar);\n            Craft.cp.elementThumbLoader.load(this.$sidebar);\n          }\n\n          if (!Garnish.isMobileBrowser()) {\n            Craft.setFocusWithin(this.$content);\n          }\n\n          resolve();\n          this.trigger('load');\n        });\n      });\n    },\n\n    updateTabs: function (tabs) {\n      if (this.tabManager) {\n        this.tabManager.destroy();\n        this.tabManager = null;\n        this.$tabContainer.html('');\n      }\n\n      this.hasTabs = !!tabs;\n\n      if (this.hasTabs) {\n        const $tabContainer = $(tabs);\n        this.$tabContainer.replaceWith($tabContainer);\n        this.$tabContainer = $tabContainer;\n        this.tabManager = new Craft.Tabs(this.$tabContainer);\n        this.tabManager.on('deselectTab', (ev) => {\n          $(ev.$tab.attr('href')).addClass('hidden');\n        });\n        this.tabManager.on('selectTab', (ev) => {\n          $(ev.$tab.attr('href')).removeClass('hidden');\n          Garnish.$win.trigger('resize');\n          this.$body.trigger('scroll');\n        });\n      }\n    },\n\n    showSidebar: function () {\n      if (this.showingSidebar) {\n        return;\n      }\n\n      this.$container.addClass('showing-sidebar');\n      this.$body.scrollTop(0).addClass('no-scroll');\n\n      this.$sidebar\n        .off('transitionend.so')\n        .css(this._closedSidebarStyles())\n        .removeClass('hidden');\n\n      // Hack to force CSS animations\n      this.$sidebar[0].offsetWidth;\n\n      this.$sidebar.css(this._openedSidebarStyles());\n\n      if (!Garnish.isMobileBrowser()) {\n        this.$sidebar.one('transitionend.so', () => {\n          Craft.setFocusWithin(this.$sidebar);\n        });\n      }\n\n      Craft.trapFocusWithin(this.$sidebar);\n\n      this.$sidebarBtn.addClass('active').attr({\n        'aria-expanded': 'true',\n      });\n\n      Garnish.$win.trigger('resize');\n      this.$sidebar.trigger('scroll');\n\n      Garnish.uiLayerManager.addLayer({\n        bubble: true,\n      });\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, (ev) => {\n        this.hideSidebarIfOverlapping() || ev.bubbleShortcut();\n      });\n\n      this.showingSidebar = true;\n    },\n\n    hideSidebar: function () {\n      if (!this.showingSidebar) {\n        return;\n      }\n\n      this.$container.removeClass('showing-sidebar');\n      this.$body.removeClass('no-scroll');\n\n      this.$sidebar\n        .off('transitionend.so')\n        .css(this._closedSidebarStyles())\n        .one('transitionend.so', () => {\n          this.$sidebar.addClass('hidden');\n          this.$sidebarBtn.focus();\n        });\n\n      this.$sidebarBtn.removeClass('active').attr({\n        'aria-expanded': 'false',\n      });\n\n      Garnish.uiLayerManager.removeLayer();\n\n      this.showingSidebar = false;\n    },\n\n    hideSidebarIfOverlapping() {\n      if (this.showingSidebar && this.$sidebar.css('position') === 'absolute') {\n        this.hideSidebar();\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    _openedSidebarStyles: function () {\n      return {\n        [Garnish.ltr ? 'right' : 'left']: '0',\n      };\n    },\n\n    _closedSidebarStyles: function () {\n      return {\n        [Garnish.ltr ? 'right' : 'left']: '-350px',\n      };\n    },\n\n    showSubmitSpinner: function () {\n      this.$saveBtn.addClass('loading');\n    },\n\n    hideSubmitSpinner: function () {\n      this.$saveBtn.removeClass('loading');\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      // give other submit handlers a chance to modify things\n      setTimeout(() => {\n        this.submit();\n      }, 1);\n    },\n\n    submit: function () {\n      this.showSubmitSpinner();\n\n      const data = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        this.$container.serialize(),\n        this.$container.data('delta-names'),\n        null,\n        this.$container.data('initial-delta-values')\n      );\n\n      Craft.sendActionRequest('POST', null, {\n        data,\n        headers: {\n          'X-Craft-Namespace': this.namespace,\n        },\n      })\n        .then((response) => {\n          this.handleSubmitResponse(response);\n        })\n        .catch((error) => {\n          this.handleSubmitError(error);\n        })\n        .finally(() => {\n          this.hideSubmitSpinner();\n        });\n    },\n\n    handleSubmitResponse: function (response) {\n      this.clearErrors();\n      const data = response.data || {};\n      if (data.message) {\n        Craft.cp.displaySuccess(data.message, data.notificationSettings);\n      }\n      if (data.modelClass && data.modelId) {\n        Craft.refreshComponentInstances(data.modelClass, data.modelId);\n      }\n      this.trigger('submit', {\n        response: response,\n        data: (data.modelName && data[data.modelName]) || {},\n      });\n      if (this.settings.closeOnSubmit) {\n        this.close();\n      }\n    },\n\n    handleSubmitError: function (error) {\n      if (\n        !error.isAxiosError ||\n        !error.response ||\n        !error.response.status === 400\n      ) {\n        Craft.cp.displayError();\n        throw error;\n      }\n\n      const data = error.response.data || {};\n      Craft.cp.displayError(data.message);\n      if (data.errors) {\n        this.showErrors(data.errors);\n      }\n\n      if (data.errorSummary) {\n        this.showErrorSummary(\n          data.errorSummary,\n          Object.keys(data.errors || {}).length\n        );\n      }\n    },\n\n    showErrorSummary: function (errorSummary, errorCount = 0) {\n      // start by clearing any error summary that might be left\n      Craft.ui.clearErrorSummary(this.$body);\n\n      // if we have multiple tabs - split the error summary into them\n      if (this.tabManager !== null) {\n        let $tabs = this.tabManager.$tabs;\n        let $tabsWithErrors = $tabs.filter('.error');\n        let $content = this.$content;\n\n        $tabs.each(function (i, tab) {\n          let tabDataId = $(tab).data('id');\n          let $tabContainer = $content.find('#' + tabDataId);\n          if ($tabContainer.length > 0) {\n            let tabUid = $tabContainer.data('layout-tab');\n            let $tabErrorSummary = $(errorSummary);\n            let tabErrorCount = $tabErrorSummary.find('ul.errors li').length;\n            let headingText = '';\n\n            // remove any errors that are not specifically for this tab\n            // leave out errors that don't have a tab assignment (e.g. cross-validation errors)\n            $tabErrorSummary.find('ul.errors li').each(function (j, error) {\n              let errorTabUid = $(error).find('a').data('layout-tab');\n              if (\n                typeof errorTabUid !== 'undefined' &&\n                errorTabUid !== tabUid\n              ) {\n                $(error).remove();\n                tabErrorCount--;\n              }\n            });\n\n            if (tabErrorCount > 0) {\n              headingText = Craft.t(\n                'app',\n                'Found {num, number} {num, plural, =1{error} other{errors}} in this tab.',\n                {num: tabErrorCount}\n              );\n\n              // if there are errors in any other tabs - tell users about it.\n              if ($tabsWithErrors.length - 1 > 0) {\n                headingText +=\n                  '<span class=\"visually-hidden\">' +\n                  Craft.t(\n                    'app',\n                    '{total, number} {total, plural, =1{error} other{errors}} found in {num, number} {num, plural, =1{tab} other{tabs}}.',\n                    {\n                      total: errorCount,\n                      num: $tabsWithErrors.length,\n                    }\n                  ) +\n                  '</span>';\n              }\n            } else {\n              headingText = Craft.t('app', 'Found errors in other tabs.');\n            }\n\n            $tabErrorSummary.find('h2').html(headingText);\n\n            $tabErrorSummary.prependTo($tabContainer);\n            Craft.ui.setFocusOnErrorSummary($tabContainer); // this also makes the deep linking work\n          }\n        });\n      } else {\n        // if we only have one tab - just show the error summary as is\n        $(errorSummary).prependTo(this.$content);\n        Craft.ui.setFocusOnErrorSummary(this.$content);\n      }\n    },\n\n    /**\n     * @param {string[]} errors\n     */\n    showErrors: function (errors) {\n      this.clearErrors();\n\n      const tabMenu = this.tabManager?.menu || [];\n      const tabErrorIndicator =\n        '<span data-icon=\"alert\">' +\n        '<span class=\"visually-hidden\">' +\n        Craft.t('app', 'This tab contains errors') +\n        '</span>\\n' +\n        '</span>';\n\n      Object.entries(errors).forEach(([name, fieldErrors]) => {\n        const $field = this.$container.find(`[data-error-key=\"${name}\"]`);\n        if ($field) {\n          Craft.ui.addErrorsToField($field, fieldErrors);\n          this.fieldsWithErrors.push($field);\n\n          // find tabs that contain fields with errors\n          let fieldTabAnchors = Craft.ui.findTabAnchorForField(\n            $field,\n            this.$container\n          );\n\n          // add error indicator to tabs\n          if (fieldTabAnchors.length > 0) {\n            // add error indicator to the tabs menuBtn\n            if (this.tabManager.$menuBtn.hasClass('error') == false) {\n              this.tabManager.$menuBtn.addClass('error');\n              this.tabManager.$menuBtn.append(\n                '<span data-icon=\"alert\"></span>'\n              );\n            }\n\n            for (let i = 0; i < fieldTabAnchors.length; i++) {\n              let $fieldTabAnchor = $(fieldTabAnchors[i]);\n\n              if ($fieldTabAnchor.hasClass('error') == false) {\n                $fieldTabAnchor.addClass('error');\n                $fieldTabAnchor.find('.tab-label').append(tabErrorIndicator);\n\n                // also add the error indicator to the disclosure menu for the tabs\n                if (tabMenu.length) {\n                  let $tabMenuItem = tabMenu.find(\n                    '[data-id=' + $fieldTabAnchor.data('id') + ']'\n                  );\n                  if (\n                    $tabMenuItem.length > 0 &&\n                    $tabMenuItem.hasClass('error') == false\n                  ) {\n                    $tabMenuItem.addClass('error');\n                    $tabMenuItem.append(tabErrorIndicator);\n                  }\n                }\n              }\n            }\n          }\n        }\n      });\n    },\n\n    clearErrors: function () {\n      this.fieldsWithErrors.forEach(($field) => {\n        Craft.ui.clearErrorsFromField($field);\n      });\n    },\n\n    isDirty: function () {\n      const initialValue = this.$container.data('initialSerializedValue');\n      if (typeof initialValue === 'undefined') {\n        return false;\n      }\n\n      const serializer =\n        this.$container.data('serializer') ||\n        (() => this.$container.serialize());\n      return initialValue !== serializer();\n    },\n\n    closeMeMaybe: function () {\n      if (!this.isOpen) {\n        return;\n      }\n\n      if (\n        !this.isDirty() ||\n        confirm(\n          Craft.t(\n            'app',\n            'Are you sure you want to close this screen? Any changes will be lost.'\n          )\n        )\n      ) {\n        this.close();\n      }\n    },\n\n    close: function () {\n      if (this.showingSidebar) {\n        this.hideSidebar();\n      }\n\n      this.base();\n\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n    },\n  },\n  {\n    defaults: {\n      params: {},\n      requestOptions: {},\n      showHeader: null,\n      closeOnSubmit: true,\n    },\n  }\n);\n","/**\n * Very simple disclosure trigger.\n *\n * Allows you to wrap a button[type=\"button\"] and target an element to toggle the `is-open` class on.\n * Set `aria-expanded` on the button\n */\nclass CraftDisclosure extends HTMLElement {\n  connectedCallback() {\n    this.trigger = this.querySelector('button[type=\"button\"]');\n    if (!this.trigger) {\n      console.error(`craft-disclosure elements must include a button`, this);\n      return;\n    }\n\n    this.target = document.getElementById(\n      this.trigger.getAttribute('aria-controls')\n    );\n    if (!this.target) {\n      console.error(\n        `No target with id ${this.trigger.getAttribute(\n          'aria-controls'\n        )} found for disclosure. `,\n        this.trigger\n      );\n      return;\n    }\n\n    if (!this.trigger.getAttribute('aria-expanded')) {\n      this.trigger.setAttribute('aria-expanded', 'false');\n    }\n\n    this.trigger.addEventListener('click', this.toggle.bind(this));\n\n    this.expanded = this.trigger.getAttribute('aria-expanded') === 'true';\n    this.expanded ? this.open() : this.close();\n  }\n\n  disconnectedCallback() {\n    this.open();\n    this.trigger.removeEventListener('click', this.toggle.bind(this));\n  }\n\n  toggle() {\n    if (this.expanded) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  open() {\n    this.trigger.setAttribute('aria-expanded', 'true');\n    this.expanded = true;\n    this.target.dataset.state = 'expanded';\n    this.dispatchEvent(new CustomEvent('open'));\n  }\n\n  close() {\n    this.trigger.setAttribute('aria-expanded', 'false');\n    this.expanded = false;\n    this.target.dataset.state = 'collapsed';\n    this.dispatchEvent(new CustomEvent('close'));\n  }\n}\n\ncustomElements.define('craft-disclosure', CraftDisclosure);\n","/** global: $ */\n/** global: jQuery */\n\n/**\n * Element label\n *\n * Displays a tooltip when the label link overflows its container.\n *\n * @method update Recalculate overflow and create tooltip if necessary.\n * @method calculateWidth Calculate the desired width of the label.\n *\n * @example <craft-element-label><a href=\"#\" class=\"label-link\">Label</a></craft-element-label>\n */\nclass CraftElementLabel extends HTMLElement {\n  connectedCallback() {\n    this.labelLink = this.querySelector('.label-link');\n    this.tooltip = null;\n\n    if (!this.labelLink) {\n      console.warn('No label link found in craft-element-label.');\n      return;\n    }\n\n    /**\n     * When the element is inside a tab, we need to listen for tab changes.\n     * Tabs are initially rendered as `display: none` which will cause the\n     * label to have a width of 0\n     */\n    this.$tabs = $('#tabs');\n    if (this.$tabs.length && this.$tabs.data('tabs')) {\n      this.$tabs.data('tabs').on('selectTab', () => {\n        this.update();\n      });\n    }\n\n    this.update();\n\n    // Update again when the document is ready.\n    // At the moment, this is necessary for this functionality within a dashboard\n    // widget. In that case, this component is rendered too early.\n    $(() => {\n      this.update();\n    });\n  }\n\n  update() {\n    this.desiredWidth = this.calculateWidth(this.innerText);\n    this.hasOverflow = this.desiredWidth > this.scrollWidth;\n\n    // If the label has an overflow, add a tooltip\n    if (!this.hasOverflow) {\n      return;\n    }\n\n    // Do we already have a tooltip?\n    /** @type {CraftTooltip|null} */\n    this.tooltip = this.querySelector('craft-tooltip');\n\n    // If not, create one\n    if (!this.tooltip) {\n      this.createTooltip();\n    }\n  }\n\n  createTooltip() {\n    this.tooltip = document.createElement('craft-tooltip');\n    this.tooltip.setAttribute('aria-hidden', 'true');\n    this.tooltip.innerText = this.innerText;\n\n    // If there's a context label, make it a little nicer\n    const contextLabel = this.querySelector('.context-label');\n    if (contextLabel) {\n      this.tooltip.innerText = this.tooltip.innerText.replace(\n        contextLabel.innerText,\n        ` (${contextLabel.innerText})`\n      );\n    }\n\n    this.labelLink.appendChild(this.tooltip);\n  }\n\n  disconnectedCallback() {\n    this.tooltip?.remove();\n    this.$tabs.data('tabs')?.off('selectTab');\n  }\n\n  calculateWidth(text) {\n    const tag = document.createElement('span');\n    Object.assign(tag.style, {\n      position: 'absolute',\n      visibility: 'hidden',\n      whiteSpace: 'nowrap',\n      fontFamily: 'inherit',\n    });\n    tag.innerHTML = text;\n\n    this.appendChild(tag);\n    const result = tag.clientWidth;\n    this.removeChild(tag);\n    return result;\n  }\n}\n\ncustomElements.define('craft-element-label', CraftElementLabel);\n","class CraftGlobalSidebar extends HTMLElement {\n  connectedCallback() {\n    this.trigger = this.querySelector('#sidebar-trigger');\n\n    if (this.trigger) {\n      this.trigger.addEventListener('open', this.expand.bind(this));\n      this.trigger.addEventListener('close', this.collapse.bind(this));\n    }\n\n    this.items = this.querySelectorAll('.sidebar-action');\n  }\n\n  disconnectedCallback() {\n    if (this.trigger) {\n      this.trigger.removeEventListener('open', this.expand.bind(this));\n      this.trigger.removeEventListener('close', this.collapse.bind(this));\n    }\n\n    this.expand();\n  }\n\n  createTooltips() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        const tooltip = document.createElement('craft-tooltip');\n        tooltip.setAttribute('placement', 'right');\n        tooltip.innerText = item.querySelector('.label')?.innerText;\n        item.append(tooltip);\n      });\n    }\n  }\n\n  destroyTooltips() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        const tooltip = item.querySelector('craft-tooltip');\n        tooltip?.remove();\n      });\n    }\n  }\n\n  expand() {\n    document.body.setAttribute('data-sidebar', 'expanded');\n    Craft.setCookie('sidebar', 'expanded');\n    this.destroyTooltips();\n  }\n\n  collapse() {\n    document.body.setAttribute('data-sidebar', 'collapsed');\n    Craft.setCookie('sidebar', 'collapsed');\n    this.createTooltips();\n  }\n}\n\ncustomElements.define('craft-global-sidebar', CraftGlobalSidebar);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Customize Sources modal\n */\nCraft.CustomizeSourcesModal = Garnish.Modal.extend({\n  elementIndex: null,\n  $elementIndexSourcesContainer: null,\n\n  $sidebar: null,\n  $sidebarToggleBtn: null,\n  $sourcesContainer: null,\n  $sourcesHeader: null,\n  $sourcesHeading: null,\n  $sourceSettingsContainer: null,\n  $sourceSettingsHeader: null,\n  $addSourceMenu: null,\n  addSourceMenu: null,\n  $footer: null,\n  $footerBtnContainer: null,\n  $saveBtn: null,\n  $cancelBtn: null,\n  $loadingSpinner: null,\n\n  sourceSort: null,\n  sources: null,\n  selectedSource: null,\n\n  elementTypeName: null,\n  baseSortOptions: null,\n  availableTableAttributes: null,\n  customFieldAttributes: null,\n\n  conditionBuilderHtml: null,\n  conditionBuilderJs: null,\n  userGroups: null,\n\n  init: function (elementIndex, settings) {\n    this.base();\n\n    this.setSettings(settings, {\n      resizable: true,\n    });\n\n    this.elementIndex = elementIndex;\n    this.$elementIndexSourcesContainer = this.elementIndex.$sidebar\n      .children('nav')\n      .children('ul');\n\n    const $container = $(\n      '<form class=\"modal customize-sources-modal\"/>'\n    ).appendTo(Garnish.$bod);\n\n    this.$sidebar = $('<div class=\"cs-sidebar block-types\"/>')\n      .appendTo($container)\n      .attr({\n        role: 'navigation',\n        'aria-label': Craft.t('app', 'Source'),\n      });\n    this.$sourcesContainer = $('<div class=\"sources\">').appendTo(this.$sidebar);\n    this.$sourceSettingsContainer = $('<div class=\"source-settings\">').appendTo(\n      $container\n    );\n\n    this.$footer = $('<div class=\"footer\"/>').appendTo($container);\n    this.$footerBtnContainer = $('<div class=\"buttons right\"/>').appendTo(\n      this.$footer\n    );\n    this.$cancelBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Cancel'),\n    }).appendTo(this.$footerBtnContainer);\n    this.$saveBtn = Craft.ui\n      .createSubmitButton({\n        class: 'disabled',\n        label: Craft.t('app', 'Save'),\n        spinner: true,\n      })\n      .appendTo(this.$footerBtnContainer);\n\n    this.$loadingSpinner = $('<div class=\"spinner\"/>').appendTo(\n      this.$sourceSettingsContainer\n    );\n\n    this.setContainer($container);\n    this.show();\n\n    Craft.sendActionRequest(\n      'POST',\n      'element-index-settings/get-customize-sources-modal-data',\n      {\n        data: {\n          elementType: this.elementIndex.elementType,\n        },\n      }\n    )\n      .then((response) => {\n        this.$saveBtn.removeClass('disabled');\n        this.buildModal(response.data);\n      })\n      .finally(() => {\n        this.$loadingSpinner.remove();\n        Garnish.setFocusWithin(this.$sidebar);\n      });\n\n    this.addListener(this.$cancelBtn, 'click', 'hide');\n    this.addListener(this.$saveBtn, 'click', 'save');\n    this.addListener(this.$container, 'submit', 'save');\n  },\n\n  buildModal: async function (response) {\n    this.baseSortOptions = response.baseSortOptions;\n    this.defaultSortOptions = response.defaultSortOptions;\n    this.availableTableAttributes = response.availableTableAttributes;\n    this.customFieldAttributes = response.customFieldAttributes;\n    this.elementTypeName = response.elementTypeName;\n    this.conditionBuilderHtml = response.conditionBuilderHtml;\n    this.conditionBuilderJs = response.conditionBuilderJs;\n    this.sites = response.sites;\n    this.userGroups = response.userGroups;\n\n    if (response.headHtml) {\n      await Craft.appendHeadHtml(response.headHtml);\n    }\n    if (response.bodyHtml) {\n      await Craft.appendBodyHtml(response.bodyHtml);\n    }\n\n    // Create the source item sorter\n    this.sourceSort = new Garnish.DragSort({\n      handle: '.move',\n      axis: 'y',\n    });\n\n    // Create the sources\n    this.sources = [];\n\n    for (let i = 0; i < response.sources.length; i++) {\n      this.sources.push(this.addSource(response.sources[i]));\n    }\n\n    if (!this.selectedSource && typeof this.sources[0] !== 'undefined') {\n      this.sources[0].select();\n    }\n\n    const $menuBtnContainer = $(\n      '<div class=\"buttons left\" data-wrapper/>'\n    ).appendTo(this.$footer);\n    const $menuBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn menubtn add icon',\n      'aria-label': Craft.t('app', 'Add…'),\n      'aria-controls': 'add-source-menu',\n      title: Craft.t('app', 'Add…'),\n      'data-disclosure-trigger': '',\n    }).appendTo($menuBtnContainer);\n\n    this.$addSourceMenu = $('<div/>', {\n      id: 'add-source-menu',\n      class: 'menu menu--disclosure',\n    }).appendTo($menuBtnContainer);\n\n    const addSource = (sourceData) => {\n      const source = this.addSource(sourceData, true);\n      Garnish.scrollContainerToElement(this.$sidebar, source.$item);\n      source.select();\n      this.addSourceMenu.hide();\n    };\n\n    const $newHeadingBtn = $('<button/>', {\n      type: 'button',\n      class: 'menu-item',\n      text: Craft.t('app', 'New heading'),\n    }).on('click', () => {\n      addSource({\n        type: 'heading',\n      });\n      this.focusLabelInput();\n    });\n\n    const $newCustomSourceBtn = $('<button/>', {\n      type: 'button',\n      class: 'menu-item',\n      text: Craft.t('app', 'New custom source'),\n      'data-type': 'custom',\n    }).on('click', () => {\n      const sortOptions = this.baseSortOptions.slice(0);\n      sortOptions.push(this.defaultSortOptions);\n\n      addSource({\n        type: 'custom',\n        key: `custom:${Craft.uuid()}`,\n        sortOptions: sortOptions,\n        defaultSort: [sortOptions[0].attr, sortOptions[1].defaultDir],\n        tableAttributes: [],\n        availableTableAttributes: [],\n      });\n      this.focusLabelInput();\n    });\n\n    const $ul = $('<ul/>')\n      .append($('<li/>').append($newHeadingBtn))\n      .appendTo(this.$addSourceMenu);\n\n    if (response.conditionBuilderHtml) {\n      $('<li/>').append($newCustomSourceBtn).appendTo($ul);\n    }\n\n    if (Craft.useMobileStyles()) {\n      this.buildSidebarToggleView();\n    }\n\n    // Add resize listener to enable/disable sidebar toggle view\n    this.addListener(Garnish.$win, 'resize', this.updateSidebarView);\n\n    this.addSourceMenu = new Garnish.DisclosureMenu($menuBtn);\n  },\n\n  focusLabelInput: function () {\n    this.selectedSource.$labelInput.trigger('focus');\n  },\n\n  getSourceName: function () {\n    return this.selectedSource\n      ? this.selectedSource.sourceData.label\n      : this.sources[0].sourceData.label;\n  },\n\n  updateSidebarView: function () {\n    if (Craft.useMobileStyles()) {\n      if (!this.$sidebarToggleBtn) this.buildSidebarToggleView();\n    } else {\n      if (this.$sidebarToggleBtn) this.resetView();\n    }\n  },\n\n  resetView: function () {\n    if (this.$sourceSettingsHeader) {\n      this.$sourceSettingsHeader.remove();\n    }\n\n    if (this.$sourcesHeader) {\n      this.$sourcesHeader.remove();\n    }\n\n    this.$sidebarToggleBtn = null;\n    this.$container.removeClass('sidebar-hidden');\n  },\n\n  updateHeading: function () {\n    if (!this.$sourcesHeading) return;\n\n    this.$sourcesHeading.text(this.getSourceName());\n  },\n\n  buildSidebarToggleView: function () {\n    this.$sourcesHeader = $('<div class=\"sources-header\"/>')\n      .addClass('sidebar-header')\n      .prependTo(this.$sourcesContainer);\n\n    this.$sidebarCloseBtn = Craft.ui\n      .createButton({\n        class: 'nav-close close-btn',\n      })\n      .attr('aria-label', Craft.t('app', 'Close'))\n      .removeClass('btn')\n      .appendTo(this.$sourcesHeader);\n\n    this.$sourcesHeading = $('<h1 class=\"main-heading\"/>').text(\n      this.getSourceName()\n    );\n\n    this.$sourceSettingsHeader = $('<div class=\"source-settings-header\"/>')\n      .addClass('main-header')\n      .append(this.$sourcesHeading)\n      .prependTo(this.$sourceSettingsContainer);\n\n    // Toggle sidebar button\n    const buttonConfig = {\n      toggle: true,\n      controls: 'modal-sidebar',\n      class: 'nav-toggle',\n    };\n\n    this.$sidebarToggleBtn = Craft.ui\n      .createButton(buttonConfig)\n      .removeClass('btn')\n      .attr('aria-label', Craft.t('app', 'Show sidebar'))\n      .appendTo(this.$sourceSettingsHeader);\n\n    this.closeSidebar();\n\n    // Add listeners\n    this.addListener(this.$sidebarToggleBtn, 'click', () => {\n      this.toggleSidebar();\n    });\n\n    this.addListener(this.$sidebarCloseBtn, 'click', () => {\n      this.toggleSidebar();\n      this.$sidebarToggleBtn.trigger('focus');\n    });\n  },\n\n  toggleSidebar: function () {\n    if (this.sidebarIsOpen()) {\n      this.closeSidebar();\n    } else {\n      this.openSidebar();\n    }\n  },\n\n  openSidebar: function () {\n    this.$container.removeClass('sidebar-hidden');\n    this.$sidebarToggleBtn.attr('aria-expanded', 'true');\n    this.$sidebar.find(':focusable').first().focus();\n\n    Garnish.uiLayerManager.addLayer(this.$sidebar);\n\n    Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n      this.closeSidebar();\n\n      if (Garnish.focusIsInside(this.$sidebar)) {\n        this.$sidebarToggleBtn.focus();\n      }\n    });\n  },\n\n  closeSidebar: function () {\n    this.$container.addClass('sidebar-hidden');\n\n    if (this.$sidebarToggleBtn) {\n      this.$sidebarToggleBtn.attr('aria-expanded', 'false');\n    }\n\n    // if sidebar is topmost layer, remove layer\n    if (Garnish.uiLayerManager.currentLayer.$container.hasClass('cs-sidebar')) {\n      Garnish.uiLayerManager.removeLayer();\n    }\n  },\n\n  sidebarIsOpen: function () {\n    return this.$sidebarToggleBtn.attr('aria-expanded') === 'true';\n  },\n\n  addSource: function (sourceData, isNew) {\n    const $item = $('<div class=\"customize-sources-item\"/>').appendTo(\n      this.$sourcesContainer\n    );\n    const $itemLabel = $('<div class=\"label customize-sources-item__btn\"/>')\n      .attr({\n        tabindex: '0',\n        role: 'button',\n      })\n      .appendTo($item);\n    const $itemInput = $('<input type=\"hidden\"/>').appendTo($item);\n    $(\n      `<a class=\"move icon customize-sources-item__move\" title=\"${Craft.t(\n        'app',\n        'Reorder'\n      )}\" role=\"button\"></a>`\n    ).appendTo($item);\n\n    let source;\n\n    if (sourceData.type === 'heading') {\n      $item.addClass('heading');\n      $itemInput.attr('name', 'sourceOrder[][heading]');\n      source = new Craft.CustomizeSourcesModal.Heading(\n        this,\n        $item,\n        $itemLabel,\n        $itemInput,\n        sourceData,\n        isNew\n      );\n      source.updateItemLabel(sourceData.heading);\n    } else {\n      $itemInput.attr('name', 'sourceOrder[][key]').val(sourceData.key);\n      if (sourceData.type === 'native') {\n        source = new Craft.CustomizeSourcesModal.Source(\n          this,\n          $item,\n          $itemLabel,\n          $itemInput,\n          sourceData,\n          isNew\n        );\n      } else {\n        source = new Craft.CustomizeSourcesModal.CustomSource(\n          this,\n          $item,\n          $itemLabel,\n          $itemInput,\n          sourceData,\n          isNew\n        );\n      }\n      source.updateItemLabel(sourceData.label);\n\n      // Select this by default?\n      if (sourceData.key === this.elementIndex.rootSourceKey) {\n        source.select();\n      }\n    }\n\n    this.sourceSort.addItems($item);\n    return source;\n  },\n\n  save: function (ev) {\n    if (ev) {\n      ev.preventDefault();\n    }\n\n    if (\n      this.$saveBtn.hasClass('disabled') ||\n      this.$saveBtn.hasClass('loading')\n    ) {\n      return;\n    }\n\n    this.$saveBtn.addClass('loading');\n\n    Craft.sendActionRequest(\n      'POST',\n      'element-index-settings/save-customize-sources-modal-settings',\n      {\n        data:\n          this.$container.serialize() +\n          `&elementType=${this.elementIndex.elementType}`,\n      }\n    )\n      .then(({data}) => {\n        // Figure out which source to select\n        let sourceKey = null;\n        if (\n          this.selectedSource &&\n          this.selectedSource.sourceData.key &&\n          !data.disabledSourceKeys.includes(this.selectedSource.sourceData.key)\n        ) {\n          sourceKey = this.selectedSource.sourceData.key;\n        } else if (!this.elementIndex.sourceKey) {\n          sourceKey = this.elementIndex.$visibleSources.first().data('key');\n        }\n\n        if (sourceKey) {\n          this.elementIndex.selectSourceByKey(sourceKey);\n        }\n\n        window.location.reload();\n      })\n      .catch(() => {\n        Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n      })\n      .finally(() => {\n        this.$saveBtn.removeClass('loading');\n      });\n  },\n\n  appendIndexSourceItem: function ($sourceItem, $lastSourceItem) {\n    if (!$lastSourceItem) {\n      $sourceItem.prependTo(this.$elementIndexSourcesContainer);\n    } else {\n      const isHeading = $sourceItem.hasClass('heading');\n      if ($lastSourceItem.hasClass('heading') && !isHeading) {\n        // First source to be placed below a new heading\n        $sourceItem.appendTo($lastSourceItem.children('ul'));\n      } else {\n        if (isHeading) {\n          // New heading. Swap $lastSourceItem with the top level <li> if it's nested\n          const $lastTopLevelSource = $lastSourceItem\n            .parentsUntil(this.$elementIndexSourcesContainer, 'li')\n            .last();\n          if ($lastTopLevelSource.length) {\n            $lastSourceItem = $lastTopLevelSource;\n          }\n        }\n        $sourceItem.insertAfter($lastSourceItem);\n      }\n    }\n  },\n\n  destroy: function () {\n    for (let i = 0; i < this.sources.length; i++) {\n      this.sources[i].destroy();\n    }\n\n    if (this.addSourceMenu) {\n      this.addSourceMenu.destroy();\n      this.$addSourceMenu.remove();\n    }\n\n    delete this.sources;\n    this.base();\n  },\n});\n\nCraft.CustomizeSourcesModal.BaseSource = Garnish.Base.extend({\n  modal: null,\n\n  $item: null,\n  $itemLabel: null,\n  $itemInput: null,\n  $settingsContainer: null,\n\n  sourceData: null,\n  isNew: null,\n\n  init: function (modal, $item, $itemLabel, $itemInput, sourceData, isNew) {\n    this.modal = modal;\n    this.$item = $item;\n    this.$itemLabel = $itemLabel;\n    this.$itemInput = $itemInput;\n    this.sourceData = sourceData;\n    this.isNew = isNew;\n\n    this.$item.data('source', this);\n\n    this.addListener(this.$itemLabel, 'activate', this.select);\n  },\n\n  isHeading: function () {\n    return false;\n  },\n\n  isNative: function () {\n    return false;\n  },\n\n  isSelected: function () {\n    return this.modal.selectedSource === this;\n  },\n\n  select: function () {\n    if (this.isSelected()) {\n      return;\n    }\n\n    if (this.modal.selectedSource) {\n      this.modal.selectedSource.deselect();\n    }\n\n    this.$item.addClass('sel');\n    this.$itemLabel.attr({\n      'aria-current': 'true',\n    });\n    this.modal.selectedSource = this;\n    this.modal.updateHeading();\n\n    if (!this.$settingsContainer) {\n      this.$settingsContainer = $('<div/>').appendTo(\n        this.modal.$sourceSettingsContainer\n      );\n      this.createSettings(this.$settingsContainer);\n    } else {\n      this.$settingsContainer.removeClass('hidden');\n    }\n\n    this.modal.$sourceSettingsContainer.scrollTop(0);\n  },\n\n  createSettings: async function () {},\n\n  getIndexSourceItem: function () {},\n\n  deselect: function () {\n    this.$item.removeClass('sel');\n    this.$itemLabel.attr({\n      'aria-current': 'false',\n    });\n    this.modal.selectedSource = null;\n    this.$settingsContainer.addClass('hidden');\n  },\n\n  updateItemLabel: function (val) {\n    if (val) {\n      this.$itemLabel.text(val);\n    } else {\n      this.$itemLabel.html('&nbsp;');\n    }\n  },\n\n  destroy: function () {\n    this.modal.sourceSort.removeItems(this.$item);\n    this.modal.sources.splice($.inArray(this, this.modal.sources), 1);\n\n    if (this.isSelected()) {\n      this.deselect();\n\n      if (this.modal.sources.length) {\n        this.modal.sources[0].select();\n      }\n\n      Garnish.setFocusWithin(this.modal.$sourceSettingsContainer);\n    }\n\n    this.$item.data('source', null);\n    this.$item.remove();\n\n    if (this.$settingsContainer) {\n      this.$settingsContainer.remove();\n    }\n\n    this.base();\n  },\n});\n\nCraft.CustomizeSourcesModal.Source =\n  Craft.CustomizeSourcesModal.BaseSource.extend({\n    $sortAttributeSelect: null,\n    $sortDirectionPicker: null,\n    $sortDirectionInput: null,\n    sortDirectionListbox: null,\n\n    isNative: function () {\n      return true;\n    },\n\n    createSettings: async function ($container) {\n      Craft.ui\n        .createLightswitchField({\n          label: Craft.t('app', 'Enabled'),\n          name: `sources[${this.sourceData.key}][enabled]`,\n          on: !this.sourceData.disabled,\n        })\n        .appendTo($container);\n      this.createSortField($container);\n      this.createTableAttributesField($container);\n    },\n\n    createSortField: function ($container) {\n      const $inputContainer = $('<div class=\"flex\"/>');\n\n      const options = this.sourceData.sortOptions.sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n      const groups = options.reduce(\n        (groups, o) => {\n          let index;\n          if (o.attr === 'structure') {\n            index = 0;\n          } else {\n            index = o.attr.startsWith('field:') ? 2 : 1;\n          }\n          groups[index].push(o);\n          return groups;\n        },\n        [[], [], []]\n      );\n      if (groups[2].length) {\n        groups[2].unshift({\n          optgroup: Craft.t('app', 'Fields'),\n        });\n      }\n\n      const $sortAttributeSelectContainer = Craft.ui\n        .createSelect({\n          name: `sources[${this.sourceData.key}][defaultSort][0]`,\n          options: groups.flat().map((o) => {\n            return o.optgroup\n              ? o\n              : {\n                  label: Craft.escapeHtml(o.label),\n                  value: o.attr,\n                };\n          }),\n          value: this.sourceData.defaultSort[0],\n        })\n        .addClass('fullwidth')\n        .appendTo($('<div/>').appendTo($inputContainer));\n\n      this.$sortAttributeSelect = $sortAttributeSelectContainer\n        .children('select')\n        .attr('aria-label', Craft.t('app', 'Sort attribute'));\n\n      this.$sortDirectionPicker = $('<section/>', {\n        class: 'btngroup btngroup--exclusive',\n        'aria-label': Craft.t('app', 'Sort direction'),\n      })\n        .append(\n          $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'Sort ascending'),\n            'aria-label': Craft.t('app', 'Sort ascending'),\n            'aria-pressed': 'false',\n            'data-icon': 'asc',\n            'data-dir': 'asc',\n          })\n        )\n        .append(\n          $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'Sort descending'),\n            'aria-label': Craft.t('app', 'Sort descending'),\n            'aria-pressed': 'false',\n            'data-icon': 'desc',\n            'data-dir': 'desc',\n          })\n        )\n        .appendTo($inputContainer);\n\n      this.$sortDirectionInput = $('<input/>', {\n        type: 'hidden',\n        name: `sources[${this.sourceData.key}][defaultSort][1]`,\n      }).appendTo($inputContainer);\n\n      this.sortDirectionListbox = new Craft.Listbox(this.$sortDirectionPicker, {\n        onChange: ($selectedOption) => {\n          this.$sortDirectionInput.val($selectedOption.data('dir'));\n        },\n      });\n\n      this.$sortAttributeSelect.on('change', () => {\n        this.handleSortAttributeChange();\n      });\n\n      this.handleSortAttributeChange(true);\n\n      Craft.ui\n        .createField($inputContainer, {\n          label: Craft.t('app', 'Default Sort'),\n          fieldset: true,\n        })\n        .appendTo($container)\n        .addClass('sort-field');\n    },\n\n    handleSortAttributeChange: function (useDefaultDir) {\n      const attr = this.$sortAttributeSelect.val();\n\n      if (attr === 'structure') {\n        this.sortDirectionListbox.select(0);\n        this.sortDirectionListbox.disable();\n        this.$sortDirectionPicker.addClass('disabled');\n      } else {\n        this.sortDirectionListbox.enable();\n        this.$sortDirectionPicker.removeClass('disabled');\n\n        const dir = useDefaultDir\n          ? this.sourceData.defaultSort[1]\n          : this.sourceData.sortOptions.find((o) => o.attr === attr).defaultDir;\n        this.sortDirectionListbox.select(dir === 'asc' ? 0 : 1);\n      }\n    },\n\n    createTableAttributesField: function ($container) {\n      const availableTableAttributes = this.availableTableAttributes().sort(\n        (a, b) => {\n          return a[1] === b[1] ? 0 : a[1] < b[1] ? -1 : 1;\n        }\n      );\n\n      if (\n        !this.sourceData.tableAttributes.length &&\n        !availableTableAttributes.length\n      ) {\n        return;\n      }\n\n      const name = `sources[${this.sourceData.key}][tableAttributes][]`;\n\n      $('<input/>', {\n        type: 'hidden',\n        name,\n        value: '',\n      }).appendTo($container);\n\n      Craft.ui\n        .createCheckboxSelectField({\n          label: Craft.t('app', 'Default Table Columns'),\n          instructions: Craft.t(\n            'app',\n            'Choose which table columns should be visible for this source by default.'\n          ),\n          name,\n          options: availableTableAttributes.map(([key, label]) => ({\n            label,\n            value: key,\n          })),\n          values: this.sourceData.tableAttributes.map(([key]) => key),\n          sortable: true,\n        })\n        .appendTo($container);\n    },\n\n    availableTableAttributes: function () {\n      const attributes = this.modal.availableTableAttributes.slice(0);\n      attributes.push(...this.sourceData.availableTableAttributes);\n      return attributes;\n    },\n\n    getIndexSourceItem: function () {\n      const $source = this.modal.elementIndex.getSourceByKey(\n        this.sourceData.key\n      );\n\n      if ($source) {\n        return $source.closest('li');\n      }\n    },\n  });\n\nCraft.CustomizeSourcesModal.CustomSource =\n  Craft.CustomizeSourcesModal.Source.extend({\n    $labelInput: null,\n\n    createSettings: async function ($container) {\n      const $labelField = Craft.ui\n        .createTextField({\n          label: Craft.t('app', 'Label'),\n          name: `sources[${this.sourceData.key}][label]`,\n          value: this.sourceData.label,\n        })\n        .appendTo($container);\n      this.$labelInput = $labelField.find('.text');\n      const defaultId = `condition${Math.floor(Math.random() * 1000000)}`;\n\n      const swapPlaceholders = (str) =>\n        str\n          .replace(/__ID__/g, defaultId)\n          .replace(\n            /__SOURCE_KEY__(?=-)/g,\n            Craft.formatInputId(this.sourceData.key)\n          )\n          .replace(/__SOURCE_KEY__/g, this.sourceData.key);\n\n      const conditionBuilderHtml =\n        this.sourceData.conditionBuilderHtml ||\n        swapPlaceholders(this.modal.conditionBuilderHtml);\n      const conditionBuilderJs =\n        this.sourceData.conditionBuilderJs ||\n        swapPlaceholders(this.modal.conditionBuilderJs);\n\n      Craft.ui\n        .createField($('<div/>').append(conditionBuilderHtml), {\n          id: 'criteria',\n          label: Craft.t('app', '{type} Criteria', {\n            type: this.modal.elementTypeName,\n          }),\n        })\n        .appendTo($container);\n\n      if (conditionBuilderJs) {\n        await Craft.appendBodyHtml(conditionBuilderJs);\n      }\n\n      this.createSortField($container);\n      this.createTableAttributesField($container);\n\n      if (Craft.sites.length > 1) {\n        Craft.ui\n          .createCheckboxSelectField({\n            label: Craft.t('app', 'Sites'),\n            instructions: Craft.t(\n              'app',\n              'Choose which sites this source should be visible for.'\n            ),\n            name: `sources[${this.sourceData.key}][sites]`,\n            options: Craft.sites.map((site) => ({\n              label: site.name,\n              value: site.uid,\n            })),\n            values: this.sourceData.sites || '*',\n            showAllOption: true,\n          })\n          .appendTo($container);\n      }\n\n      if (this.modal.userGroups.length) {\n        Craft.ui\n          .createCheckboxSelectField({\n            label: Craft.t('app', 'User Groups'),\n            instructions: Craft.t(\n              'app',\n              'Choose which user groups should have access to this source.'\n            ),\n            name: `sources[${this.sourceData.key}][userGroups]`,\n            options: this.modal.userGroups,\n            values: this.sourceData.userGroups || '*',\n            showAllOption: true,\n          })\n          .appendTo($container);\n      }\n\n      $container.append('<hr/>');\n\n      this.$deleteBtn = $('<a class=\"error delete pointer\"/>')\n        .attr({\n          role: 'button',\n          tabindex: '0',\n        })\n        .text(Craft.t('app', 'Delete custom source'))\n        .appendTo($container);\n\n      this.addListener(this.$labelInput, 'input', 'handleLabelInputChange');\n      this.addListener(this.$deleteBtn, 'activate', 'destroy');\n    },\n\n    availableTableAttributes: function () {\n      const attributes = this.base();\n      if (this.isNew) {\n        attributes.push(...this.modal.customFieldAttributes);\n      }\n      return attributes;\n    },\n\n    handleLabelInputChange: function () {\n      this.updateItemLabel(this.$labelInput.val());\n    },\n\n    getIndexSourceItem: function () {\n      let $source = this.base();\n      let $label;\n\n      if ($source) {\n        $label = $source.find('.label');\n      } else {\n        $label = $('<span/>', {class: 'label'});\n        $source = $('<li/>').append(\n          $('<a/>', {\n            'data-key': this.sourceData.key,\n          }).append($label)\n        );\n      }\n\n      if (this.$labelInput) {\n        let label = this.$labelInput.val().trim();\n        if (label === '') {\n          label = Craft.t('app', '(blank)');\n        }\n        $label.text(label);\n      }\n\n      return $source;\n    },\n  });\n\nCraft.CustomizeSourcesModal.Heading =\n  Craft.CustomizeSourcesModal.BaseSource.extend({\n    $labelInput: null,\n    $deleteBtn: null,\n\n    isHeading: function () {\n      return true;\n    },\n\n    createSettings: async function ($container) {\n      const $labelField = Craft.ui\n        .createTextField({\n          label: Craft.t('app', 'Heading'),\n          instructions: Craft.t(\n            'app',\n            'This can be left blank if you just want an unlabeled separator.'\n          ),\n          value: this.sourceData.heading || '',\n        })\n        .appendTo($container);\n      this.$labelInput = $labelField.find('.text');\n\n      $container.append('<hr/>');\n\n      this.$deleteBtn = $('<a class=\"error delete\"/>')\n        .text(Craft.t('app', 'Delete heading'))\n        .attr({\n          role: 'button',\n          tabindex: '0',\n        })\n        .appendTo($container);\n\n      this.addListener(this.$labelInput, 'input', 'handleLabelInputChange');\n      this.addListener(this.$deleteBtn, 'activate', 'destroy');\n    },\n\n    handleLabelInputChange: function () {\n      this.updateItemLabel(this.$labelInput.val());\n    },\n\n    updateItemLabel: function (val) {\n      this.$itemLabel.html(\n        (val\n          ? Craft.escapeHtml(val)\n          : `<em>${Craft.t('app', '(blank)')}</em>`) + '&nbsp;'\n      );\n      this.$itemInput.val(val);\n    },\n\n    getIndexSourceItem: function () {\n      const label =\n        (this.$labelInput ? this.$labelInput.val() : null) ||\n        this.sourceData.heading ||\n        '';\n      return $('<li class=\"heading\"/>')\n        .append($('<span/>').text(label))\n        .append('<ul/>');\n    },\n  });\n","/** global: Craft */\n/** global: Garnish */\n/**\n * DataTableSorter\n */\nCraft.DataTableSorter = Garnish.DragSort.extend(\n  {\n    $table: null,\n\n    init: function (table, settings) {\n      this.$table = $(table);\n      var $rows = this.$table.children('tbody').children(':not(.filler)');\n\n      settings = $.extend({}, Craft.DataTableSorter.defaults, settings);\n\n      settings.container = this.$table.children('tbody');\n      settings.helper = this.getHelper.bind(this);\n      settings.caboose = '<tr/>';\n      settings.axis = Garnish.Y_AXIS;\n      settings.magnetStrength = 4;\n      settings.helperLagBase = 1.5;\n\n      this.base($rows, settings);\n    },\n\n    getHelper: function ($helperRow) {\n      var $helper = $(\n          '<div class=\"' + this.settings.helperClass + '\"/>'\n        ).appendTo(Garnish.$bod),\n        $table = $('<table/>').appendTo($helper),\n        $tbody = $('<tbody/>').appendTo($table);\n\n      $helperRow.appendTo($tbody);\n\n      // Copy the table width and classes\n      $table.width(this.$table.width());\n      $table.prop('className', this.$table.prop('className'));\n\n      // Copy the column widths\n      var $firstRow = this.$table.find('tr:first'),\n        $cells = $firstRow.children(),\n        $helperCells = $helperRow.children();\n\n      for (var i = 0; i < $helperCells.length; i++) {\n        $($helperCells[i]).width($($cells[i]).width());\n      }\n\n      return $helper;\n    },\n  },\n  {\n    defaults: {\n      handle: '.move',\n      helperClass: 'datatablesorthelper',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Delete User Modal\n */\nCraft.DeleteUserModal = Garnish.Modal.extend(\n  {\n    id: null,\n    userId: null,\n\n    $deleteActionRadios: null,\n    $deleteSubmitBtn: null,\n\n    userSelect: null,\n    _deleting: false,\n\n    init: function (userId, settings) {\n      this.id = Math.floor(Math.random() * 1000000000);\n      this.userId = userId;\n      settings = $.extend(Craft.DeleteUserModal.defaults, settings);\n\n      let $form = $(\n        '<form class=\"modal fitted deleteusermodal\" method=\"post\" accept-charset=\"UTF-8\">' +\n          Craft.getCsrfInput() +\n          '<input type=\"hidden\" name=\"action\" value=\"users/delete-user\"/>' +\n          (!Array.isArray(this.userId)\n            ? '<input type=\"hidden\" name=\"userId\" value=\"' + this.userId + '\"/>'\n            : '') +\n          (settings.redirect\n            ? '<input type=\"hidden\" name=\"redirect\" value=\"' +\n              settings.redirect +\n              '\"/>'\n            : '') +\n          '</form>'\n      ).appendTo(Garnish.$bod);\n      let $body = $(\n        '<div class=\"body\">' +\n          '<div class=\"content-summary\">' +\n          '<p>' +\n          Craft.t('app', 'What do you want to do with their content?') +\n          '</p>' +\n          '<ul class=\"bullets\"></ul>' +\n          '</div>' +\n          '<div class=\"options\">' +\n          '<label><input type=\"radio\" name=\"contentAction\" value=\"transfer\"/> ' +\n          Craft.t('app', 'Transfer it to:') +\n          '</label>' +\n          '<div id=\"transferselect' +\n          this.id +\n          '\" class=\"elementselect\">' +\n          '<ul class=\"elements\"></ul>' +\n          '<button type=\"button\" class=\"btn add icon dashed\">' +\n          Craft.t('app', 'Choose a user') +\n          '</button>' +\n          '</div>' +\n          '</div>' +\n          '<div>' +\n          '<label class=\"error\"><input type=\"radio\" name=\"contentAction\" value=\"delete\"/> ' +\n          Craft.t('app', 'Delete their content') +\n          '</label>' +\n          '</div>' +\n          '</div>'\n      ).appendTo($form);\n      let $buttons = $('<div class=\"buttons right\"/>').appendTo($body);\n      let $cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($buttons);\n\n      const $contentSummary = $body.find('.content-summary');\n      if (settings.contentSummary.length) {\n        for (let i = 0; i < settings.contentSummary.length; i++) {\n          $contentSummary\n            .find('ul')\n            .append($('<li/>', {text: settings.contentSummary[i]}));\n        }\n      } else {\n        $contentSummary.find('ul').remove();\n      }\n\n      this.$deleteActionRadios = $body.find('input[type=radio]');\n      this.$deleteSubmitBtn = Craft.ui\n        .createSubmitButton({\n          class: 'disabled',\n          label: this._submitBtnLabel(false),\n          spinner: true,\n        })\n        .appendTo($buttons);\n\n      var idParam;\n\n      if (Array.isArray(this.userId)) {\n        idParam = ['and'];\n\n        for (let i = 0; i < this.userId.length; i++) {\n          idParam.push('not ' + this.userId[i]);\n        }\n      } else {\n        idParam = 'not ' + this.userId;\n      }\n\n      this.userSelect = new Craft.BaseElementSelectInput({\n        id: 'transferselect' + this.id,\n        name: 'transferContentTo',\n        elementType: 'craft\\\\elements\\\\User',\n        criteria: {\n          id: idParam,\n        },\n        limit: 1,\n        modalSettings: {\n          closeOtherModals: false,\n        },\n        onSelectElements: () => {\n          this.updateSizeAndPosition();\n\n          if (!this.$deleteActionRadios.first().prop('checked')) {\n            this.$deleteActionRadios.first().trigger('click');\n          } else {\n            this.validateDeleteInputs();\n          }\n        },\n        onRemoveElements: this.validateDeleteInputs.bind(this),\n        selectable: false,\n        editable: false,\n      });\n\n      this.addListener($cancelBtn, 'click', 'hide');\n\n      this.addListener(\n        this.$deleteActionRadios,\n        'change',\n        'validateDeleteInputs'\n      );\n      this.addListener($form, 'submit', 'handleSubmit');\n\n      this.base($form, settings);\n    },\n\n    _submitBtnLabel: function (withContent) {\n      let message = withContent\n        ? 'Delete {num, plural, =1{user} other{users}} and content'\n        : 'Delete {num, plural, =1{user} other{users}}';\n\n      return Craft.t('app', message, {\n        num: Array.isArray(this.userId) ? this.userId.length : 1,\n      });\n    },\n\n    validateDeleteInputs: function () {\n      var validates = false;\n\n      if (this.$deleteActionRadios.eq(1).prop('checked')) {\n        validates = true;\n        this.$deleteSubmitBtn.find('.label').text(this._submitBtnLabel(true));\n      } else {\n        this.$deleteSubmitBtn.find('.label').text(this._submitBtnLabel(false));\n        if (this.$deleteActionRadios.eq(0).prop('checked')) {\n          validates = !!this.userSelect.totalSelected;\n        }\n      }\n\n      this.updateSizeAndPosition();\n\n      if (validates) {\n        this.$deleteSubmitBtn.removeClass('disabled');\n      } else {\n        this.$deleteSubmitBtn.addClass('disabled');\n      }\n\n      return validates;\n    },\n\n    handleSubmit: function (ev) {\n      if (this._deleting || !this.validateDeleteInputs()) {\n        ev.preventDefault();\n        return;\n      }\n\n      this.$deleteSubmitBtn.addClass('loading');\n      this.disable();\n      this.userSelect.disable();\n      this._deleting = true;\n\n      // Let the onSubmit callback prevent the form from getting submitted\n      try {\n        if (this.settings.onSubmit() === false) {\n          ev.preventDefault();\n        }\n      } catch (e) {\n        ev.preventDefault();\n        this.$deleteSubmitBtn.removeClass('loading');\n        throw e;\n      }\n    },\n\n    onFadeIn: function () {\n      // Auto-focus the first radio\n      if (!Garnish.isMobileBrowser(true)) {\n        this.$deleteActionRadios.first().trigger('focus');\n      }\n\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      contentSummary: [],\n      onSubmit: $.noop,\n      redirect: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.DynamicGenerator = Craft.BaseInputGenerator.extend({\n  callback: $.noop,\n\n  init: function (source, target, callback) {\n    this.callback = callback;\n    this.base(source, target);\n  },\n\n  generateTargetValue: function (sourceVal) {\n    return this.callback(sourceVal);\n  },\n});\n","/* jshint -W083 */\n/**\n * Editable table class\n */\nCraft.EditableTable = Garnish.Base.extend(\n  {\n    initialized: false,\n\n    id: null,\n    baseName: null,\n    columns: null,\n    sorter: null,\n    biggestId: -1,\n\n    $table: null,\n    $tbody: null,\n    $addRowBtn: null,\n    $tableParent: null,\n    $statusMessage: null,\n\n    rowCount: 0,\n    hasMaxRows: false,\n    hasMinRows: false,\n\n    radioCheckboxes: null,\n\n    init: function (id, baseName, columns, settings) {\n      this.id = id;\n      this.baseName = baseName;\n      this.columns = columns;\n      this.setSettings(settings, Craft.EditableTable.defaults);\n      this.radioCheckboxes = {};\n\n      this.$table = $('#' + id);\n      this.$tbody = this.$table.children('tbody');\n      this.$tableParent = this.$table.parent();\n      this.$statusMessage = this.$tableParent.find('[data-status-message]');\n      const $rows = this.$tbody.children();\n      this.rowCount = $rows.length;\n\n      // Is this already an editable table?\n      if (this.$table.data('editable-table')) {\n        console.warn('Double-instantiating an editable table on an element');\n        this.$table.data('editable-table').destroy();\n      }\n\n      this.$table.data('editable-table', this);\n\n      this.sorter = new Craft.DataTableSorter(this.$table, {\n        helperClass: 'editabletablesorthelper',\n        copyDraggeeInputValuesToHelper: true,\n        onSortChange: () => {\n          this.updateAllRows();\n        },\n      });\n\n      for (let i = 0; i < $rows.length; i++) {\n        const $row = $rows.eq(i);\n        const id = parseInt(\n          $row.attr('data-id').substring(this.settings.rowIdPrefix.length)\n        );\n        if (id > this.biggestId) {\n          this.biggestId = id;\n        }\n      }\n\n      if (this.isVisible()) {\n        this.initialize();\n      } else {\n        // Give everything a chance to initialize\n        window.setTimeout(this.initializeIfVisible.bind(this), 500);\n      }\n\n      if (this.settings.minRows && this.rowCount < this.settings.minRows) {\n        for (var i = this.rowCount; i < this.settings.minRows; i++) {\n          this.addRow();\n        }\n      }\n    },\n\n    isVisible: function () {\n      return this.$table.parent().height() > 0;\n    },\n\n    initialize: function () {\n      if (this.initialized) {\n        return false;\n      }\n\n      this.initialized = true;\n      this.removeListener(Garnish.$win, 'resize');\n\n      const $container = this.$table.parent('.input');\n      if ($container.length && this.$table.width() > $container.width()) {\n        $container.css('overflow-x', 'auto');\n      }\n\n      this.$addRowBtn = this.$table.next('.add');\n      this.updateAddRowButton();\n      this.addListener(this.$addRowBtn, 'activate', 'addRow');\n\n      if (this.settings.lazyInitRows) {\n        // Lazily create the row objects\n        this.addListener(\n          this.$tbody,\n          'keypress,keyup,change,focus,blur,click,mousedown,mouseup',\n          (ev) => {\n            const $target = $(ev.target);\n            const $tr = $target.closest('tr');\n            if ($tr.length && !$tr.data('editable-table-row')) {\n              const $textarea = $target.hasClass('editable-table-preview')\n                ? $target.next()\n                : null;\n              this.createRowObj($tr);\n              setTimeout(() => {\n                if ($textarea && !$textarea.is(':focus')) {\n                  $textarea.trigger('focus');\n                }\n              }, 100);\n            }\n          }\n        );\n      } else {\n        const $rows = this.$tbody.children();\n        for (let i = 0; i < $rows.length; i++) {\n          this.createRowObj($rows.eq(i));\n        }\n      }\n\n      return true;\n    },\n    initializeIfVisible: function () {\n      this.removeListener(Garnish.$win, 'resize');\n\n      if (this.isVisible()) {\n        this.initialize();\n      } else {\n        this.addListener(Garnish.$win, 'resize', 'initializeIfVisible');\n      }\n    },\n    updateAddRowButton: function () {\n      if (!this.canAddRow()) {\n        this.$addRowBtn.css('opacity', '0.2');\n        this.$addRowBtn.css('pointer-events', 'none');\n        this.$addRowBtn.attr('aria-disabled', 'true');\n      } else {\n        this.$addRowBtn.css('opacity', '1');\n        this.$addRowBtn.css('pointer-events', 'auto');\n        this.$addRowBtn.attr('aria-disabled', 'false');\n      }\n    },\n    updateAllRows: function () {\n      if (this.settings.staticRows) {\n        return;\n      }\n      const $rows = this.$table.find('> tbody > tr');\n      for (let i = 0; i < $rows.length; i++) {\n        this.updateRow($rows.eq(i));\n      }\n    },\n    updateRow: function ($row) {\n      if (this.settings.staticRows) {\n        return;\n      }\n\n      const $deleteBtn = $row.find('button.delete');\n\n      if ($deleteBtn.length) {\n        $deleteBtn.attr(\n          'aria-label',\n          Craft.t('app', 'Delete row {index}', {\n            index: $row.index() + 1,\n          })\n        );\n        if (this.canDeleteRow()) {\n          $deleteBtn.removeAttr('disabled').removeClass('disabled');\n        } else {\n          $deleteBtn.attr('disabled', 'disabled').addClass('disabled');\n        }\n      }\n    },\n    /**\n     * @deprecated\n     */\n    updateDeleteRowButton: function (rowId) {\n      this.updateRow(this.$table.find(`tr[data-id=\"${rowId}\"]`));\n    },\n    updateStatusMessage: function () {\n      this.$statusMessage.empty();\n      let message;\n\n      if (!this.canAddRow()) {\n        message = Craft.t(\n          'app',\n          'Row could not be added. Maximum number of rows reached.'\n        );\n      } else {\n        message = Craft.t(\n          'app',\n          'Row could not be deleted. Minimum number of rows reached.'\n        );\n      }\n\n      setTimeout(() => {\n        this.$statusMessage.text(message);\n      }, 250);\n    },\n    canDeleteRow: function () {\n      if (!this.settings.allowDelete) {\n        return false;\n      }\n\n      return this.rowCount > this.settings.minRows;\n    },\n    deleteRow: function (row) {\n      if (!this.canDeleteRow()) {\n        this.updateStatusMessage();\n        return;\n      }\n\n      this.sorter.removeItems(row.$tr);\n      row.$tr.remove();\n\n      this.rowCount--;\n\n      this.updateAllRows();\n      this.updateAddRowButton();\n\n      if (this.rowCount === 0) {\n        this.$table.addClass('hidden');\n        this.$addRowBtn.trigger('focus');\n      } else {\n        // Focus element in previous row\n        this.$tbody.find(':focusable').last().trigger('focus');\n      }\n\n      // onDeleteRow callback\n      this.settings.onDeleteRow(row.$tr);\n\n      row.destroy();\n    },\n    canAddRow: function () {\n      if (!this.settings.allowAdd) {\n        return false;\n      }\n\n      if (this.settings.maxRows) {\n        return this.rowCount < this.settings.maxRows;\n      }\n\n      return true;\n    },\n    addRow: function (focus, prepend) {\n      if (!this.canAddRow()) {\n        this.updateStatusMessage();\n        return;\n      }\n\n      var rowId = this.settings.rowIdPrefix + (this.biggestId + 1),\n        $tr = this.createRow(\n          rowId,\n          this.columns,\n          this.baseName,\n          $.extend({}, this.settings.defaultValues)\n        );\n\n      if (prepend) {\n        $tr.prependTo(this.$tbody);\n      } else {\n        $tr.appendTo(this.$tbody);\n      }\n\n      var row = this.createRowObj($tr);\n      this.sorter.addItems($tr);\n\n      // Focus the first input in the row\n      if (focus !== false) {\n        $tr\n          .find('input:visible,textarea:visible,select:visible')\n          .first()\n          .trigger('focus');\n      }\n\n      this.rowCount++;\n      this.updateAllRows();\n      this.updateAddRowButton();\n      this.$table.removeClass('hidden');\n\n      // onAddRow callback\n      this.settings.onAddRow($tr);\n\n      return row;\n    },\n\n    createRow: function (rowId, columns, baseName, values) {\n      return Craft.EditableTable.createRow(\n        rowId,\n        columns,\n        baseName,\n        values,\n        this.settings.allowReorder,\n        this.settings.allowDelete\n      );\n    },\n\n    getRowObj: function ($tr) {\n      return $tr.data('editable-table-row') || this.createRowObj($tr);\n    },\n\n    createRowObj: function ($tr) {\n      return new Craft.EditableTable.Row(this, $tr);\n    },\n\n    focusOnPrevRow: function ($tr, tdIndex, blurTd) {\n      var $prevTr = $tr.prev('tr');\n      var prevRow;\n\n      if ($prevTr.length) {\n        prevRow = this.getRowObj($prevTr);\n      } else {\n        prevRow = this.addRow(false, true);\n      }\n\n      // Focus on the same cell in the previous row\n      if (!prevRow) {\n        return;\n      }\n\n      if (!prevRow.$tds[tdIndex]) {\n        return;\n      }\n\n      if ($(prevRow.$tds[tdIndex]).hasClass('disabled')) {\n        if ($prevTr) {\n          this.focusOnPrevRow($prevTr, tdIndex, blurTd);\n        }\n        return;\n      }\n\n      var $input = $('textarea,input.text', prevRow.$tds[tdIndex]);\n      if ($input.length) {\n        $(blurTd).trigger('blur');\n        $input.trigger('focus');\n      }\n    },\n\n    focusOnNextRow: function ($tr, tdIndex, blurTd) {\n      var $nextTr = $tr.next('tr');\n      var nextRow;\n\n      if ($nextTr.length) {\n        nextRow = this.getRowObj($nextTr);\n      } else {\n        nextRow = this.addRow(false);\n      }\n\n      // Focus on the same cell in the next row\n      if (!nextRow) {\n        return;\n      }\n\n      if (!nextRow.$tds[tdIndex]) {\n        return;\n      }\n\n      if ($(nextRow.$tds[tdIndex]).hasClass('disabled')) {\n        if ($nextTr) {\n          this.focusOnNextRow($nextTr, tdIndex, blurTd);\n        }\n        return;\n      }\n\n      var $input = $('textarea,input.text', nextRow.$tds[tdIndex]);\n      if ($input.length) {\n        $(blurTd).trigger('blur');\n        $input.trigger('focus');\n      }\n    },\n\n    importData: function (data, row, tdIndex) {\n      let lines = data.split(/\\r?\\n|\\r/);\n      for (let i = 0; i < lines.length; i++) {\n        let values = lines[i].split('\\t');\n        for (let j = 0; j < values.length; j++) {\n          let value = values[j];\n          row.$tds\n            .eq(tdIndex + j)\n            .find('textarea,input[type!=hidden]')\n            .val(value)\n            .trigger('input');\n        }\n\n        // move onto the next row\n        let $nextTr = row.$tr.next('tr');\n        if ($nextTr.length) {\n          row = this.getRowObj($nextTr);\n        } else {\n          row = this.addRow(false);\n        }\n      }\n    },\n\n    destroy: function () {\n      this.$table.removeData('editable-table');\n      this.base();\n    },\n  },\n  {\n    textualColTypes: [\n      'autosuggest',\n      'color',\n      'date',\n      'email',\n      'multiline',\n      'number',\n      'singleline',\n      'template',\n      'time',\n      'url',\n    ],\n    defaults: {\n      rowIdPrefix: '',\n      defaultValues: {},\n      allowAdd: false,\n      allowReorder: false,\n      allowDelete: false,\n      minRows: null,\n      maxRows: null,\n      lazyInitRows: true,\n      onAddRow: $.noop,\n      onDeleteRow: $.noop,\n    },\n\n    createRow: function (\n      rowId,\n      columns,\n      baseName,\n      values,\n      allowReorder,\n      allowDelete\n    ) {\n      var $tr = $('<tr/>', {\n        'data-id': rowId,\n      });\n\n      for (var colId in columns) {\n        if (!columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        var col = columns[colId],\n          value = typeof values[colId] !== 'undefined' ? values[colId] : '',\n          $cell;\n\n        if (col.type === 'heading') {\n          $cell = $('<th/>', {\n            scope: 'row',\n            class: col['class'],\n            html: value,\n          });\n        } else {\n          var name = baseName + '[' + rowId + '][' + colId + ']';\n\n          $cell = $('<td/>', {\n            class: `${col.class} ${col.type}-cell`,\n            width: col.width,\n          });\n\n          if (Craft.inArray(col.type, Craft.EditableTable.textualColTypes)) {\n            $cell.addClass('textual');\n          }\n\n          if (col.code) {\n            $cell.addClass('code');\n          }\n\n          switch (col.type) {\n            case 'checkbox':\n              $('<div class=\"checkbox-wrapper\"/>')\n                .append(\n                  Craft.ui.createCheckbox({\n                    name: name,\n                    value: col.value || '1',\n                    checked: !!value,\n                  })\n                )\n                .appendTo($cell);\n              break;\n\n            case 'color':\n              Craft.ui\n                .createColorInput({\n                  name: name,\n                  value: typeof value !== 'object' ? value : null,\n                  small: true,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'date':\n              Craft.ui\n                .createDateInput({\n                  name: name,\n                  value: value,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'lightswitch':\n              Craft.ui\n                .createLightswitch({\n                  name: name,\n                  value: col.value || '1',\n                  on: !!value,\n                  small: true,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'select':\n              Craft.ui\n                .createSelect({\n                  name: name,\n                  options: col.options,\n                  value:\n                    value ||\n                    (function () {\n                      for (var key in col.options) {\n                        if (\n                          col.options.hasOwnProperty(key) &&\n                          col.options[key].default\n                        ) {\n                          return typeof col.options[key].value !== 'undefined'\n                            ? col.options[key].value\n                            : key;\n                        }\n                      }\n                      return null;\n                    })(),\n                  class: 'small',\n                })\n                .appendTo($cell);\n              break;\n\n            case 'time':\n              Craft.ui\n                .createTimeInput({\n                  name: name,\n                  value: value,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'email':\n            case 'url':\n              Craft.ui\n                .createTextInput({\n                  name: name,\n                  value: typeof value !== 'object' ? value : null,\n                  type: col.type,\n                  placeholder: col.placeholder || null,\n                })\n                .appendTo($cell);\n              break;\n\n            default:\n              $('<textarea/>', {\n                name: name,\n                rows: col.rows || 1,\n                val: typeof value !== 'object' ? value : null,\n                placeholder: col.placeholder,\n              }).appendTo($cell);\n          }\n        }\n\n        $cell.appendTo($tr);\n      }\n\n      if (allowReorder) {\n        $('<td/>', {\n          class: 'thin action',\n        })\n          .append(\n            $('<a/>', {\n              class: 'move icon',\n              title: Craft.t('app', 'Reorder'),\n              role: 'button',\n              type: 'button',\n            })\n          )\n          .appendTo($tr);\n      }\n\n      if (allowDelete) {\n        $('<td/>', {\n          class: 'thin action',\n        })\n          .append(\n            $('<button/>', {\n              class: 'delete icon',\n              title: Craft.t('app', 'Delete'),\n              type: 'button',\n            })\n          )\n          .appendTo($tr);\n      }\n\n      return $tr;\n    },\n  }\n);\n\n/**\n * Editable table row class\n */\nCraft.EditableTable.Row = Garnish.Base.extend(\n  {\n    table: null,\n    id: null,\n    niceTexts: null,\n\n    $tr: null,\n    $tds: null,\n    tds: null,\n    $textareas: null,\n    $deleteBtn: null,\n\n    init: function (table, tr) {\n      this.table = table;\n      this.$tr = $(tr);\n      this.$tds = this.$tr.children();\n      this.tds = [];\n      this.id = this.$tr.attr('data-id');\n\n      this.$tr.data('editable-table-row', this);\n\n      // Get the row ID, sans prefix\n      var id = parseInt(\n        this.id.substring(this.table.settings.rowIdPrefix.length)\n      );\n\n      if (id > this.table.biggestId) {\n        this.table.biggestId = id;\n      }\n\n      this.$textareas = $();\n      this.niceTexts = [];\n      var textareasByColId = {};\n\n      var i = 0;\n      var colId, col, td, $checkbox;\n\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        col = this.table.columns[colId];\n        td = this.tds[colId] = this.$tds[i];\n\n        if (Craft.inArray(col.type, Craft.EditableTable.textualColTypes)) {\n          $('.editable-table-preview', td).remove();\n          const $textarea = $('textarea', td);\n          this.$textareas = this.$textareas.add($textarea);\n\n          this.addListener($textarea, 'focus', 'onTextareaFocus');\n          this.addListener($textarea, 'mousedown', 'ignoreNextTextareaFocus');\n\n          this.niceTexts.push(\n            new Garnish.NiceText($textarea, {\n              onHeightChange: this.onTextareaHeightChange.bind(this),\n            })\n          );\n\n          this.addListener(\n            $textarea,\n            'keypress',\n            {tdIndex: i, type: col.type},\n            'handleKeypress'\n          );\n          this.addListener(\n            $textarea,\n            'input',\n            {type: col.type},\n            'validateValue'\n          );\n          $textarea.trigger('input');\n\n          if (col.type !== 'multiline') {\n            this.addListener(\n              $textarea,\n              'paste',\n              {tdIndex: i, type: col.type},\n              'handlePaste'\n            );\n          }\n\n          textareasByColId[colId] = $textarea;\n        } else if (col.type === 'checkbox') {\n          $checkbox = $('input[type=\"checkbox\"]', td);\n\n          if (col.radioMode) {\n            if (typeof this.table.radioCheckboxes[colId] === 'undefined') {\n              this.table.radioCheckboxes[colId] = [];\n            }\n            this.table.radioCheckboxes[colId].push($checkbox[0]);\n            this.addListener(\n              $checkbox,\n              'change',\n              {colId},\n              'onRadioCheckboxChange'\n            );\n          }\n\n          if (col.toggle) {\n            this.addListener($checkbox, 'change', {colId}, function (ev) {\n              this.applyToggleCheckbox(ev.data.colId);\n            });\n          }\n        }\n\n        if (!$(td).hasClass('disabled')) {\n          this.addListener(td, 'click', {td}, function (ev) {\n            if (ev.target === ev.data.td) {\n              $(ev.data.td).find('textarea,input,select,.lightswitch').focus();\n            }\n          });\n        }\n\n        i++;\n      }\n\n      // Now that all of the text cells have been nice-ified, let's normalize the heights\n      this.onTextareaHeightChange();\n\n      // See if we need to apply any checkbox toggles now that we've indexed all the TDs\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n        col = this.table.columns[colId];\n        if (col.type === 'checkbox' && col.toggle) {\n          this.applyToggleCheckbox(colId);\n        }\n      }\n\n      // Now look for any autopopulate columns\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        col = this.table.columns[colId];\n\n        if (\n          col.autopopulate &&\n          typeof textareasByColId[col.autopopulate] !== 'undefined' &&\n          !textareasByColId[colId].val() &&\n          !textareasByColId[col.autopopulate].val()\n        ) {\n          new Craft.HandleGenerator(\n            textareasByColId[colId],\n            textareasByColId[col.autopopulate],\n            {\n              allowNonAlphaStart: true,\n            }\n          );\n        }\n      }\n\n      var $deleteBtn = this.$tr.children().last().find('.delete');\n      this.addListener($deleteBtn, 'click', 'deleteRow');\n\n      var $inputs = this.$tr.find('input,textarea,select,.lightswitch');\n      this.addListener($inputs, 'focus', function (ev) {\n        $(ev.currentTarget).closest('td:not(.disabled)').addClass('focus');\n      });\n      this.addListener($inputs, 'blur', function (ev) {\n        $(ev.currentTarget).closest('td').removeClass('focus');\n      });\n    },\n\n    onTextareaFocus: function (ev) {\n      this.onTextareaHeightChange();\n\n      var $textarea = $(ev.currentTarget);\n\n      if ($textarea.data('ignoreNextFocus')) {\n        $textarea.data('ignoreNextFocus', false);\n        return;\n      }\n\n      window.setTimeout(function () {\n        Craft.selectFullValue($textarea);\n      }, 0);\n    },\n\n    onRadioCheckboxChange: function (ev) {\n      if (ev.currentTarget.checked) {\n        for (\n          var i = 0;\n          i < this.table.radioCheckboxes[ev.data.colId].length;\n          i++\n        ) {\n          var checkbox = this.table.radioCheckboxes[ev.data.colId][i];\n          checkbox.checked = checkbox === ev.currentTarget;\n        }\n      }\n    },\n\n    applyToggleCheckbox: function (checkboxColId) {\n      var checkboxCol = this.table.columns[checkboxColId];\n      var checked = $('input[type=\"checkbox\"]', this.tds[checkboxColId]).prop(\n        'checked'\n      );\n      var colId, colIndex, neg;\n      for (var i = 0; i < checkboxCol.toggle.length; i++) {\n        colId = checkboxCol.toggle[i];\n        colIndex = this.table.colum;\n        neg = colId[0] === '!';\n        if (neg) {\n          colId = colId.substring(1);\n        }\n        if ((checked && !neg) || (!checked && neg)) {\n          $(this.tds[colId])\n            .removeClass('disabled')\n            .find('textarea, input')\n            .prop('disabled', false);\n        } else {\n          $(this.tds[colId])\n            .addClass('disabled')\n            .find('textarea, input')\n            .prop('disabled', true);\n        }\n      }\n    },\n\n    ignoreNextTextareaFocus: function (ev) {\n      $.data(ev.currentTarget, 'ignoreNextFocus', true);\n    },\n\n    handleKeypress: function (ev) {\n      var keyCode = ev.keyCode ? ev.keyCode : ev.charCode;\n      var ctrl = Garnish.isCtrlKeyPressed(ev);\n\n      // Going to the next/previous row?\n      if (\n        keyCode === Garnish.RETURN_KEY &&\n        (ev.data.type !== 'multiline' || ctrl)\n      ) {\n        ev.preventDefault();\n        if (ev.shiftKey) {\n          this.table.focusOnPrevRow(\n            this.$tr,\n            ev.data.tdIndex,\n            ev.currentTarget\n          );\n        } else {\n          this.table.focusOnNextRow(\n            this.$tr,\n            ev.data.tdIndex,\n            ev.currentTarget\n          );\n        }\n        return;\n      }\n    },\n\n    handlePaste: function (ev) {\n      let data = Craft.trim(\n        ev.originalEvent.clipboardData.getData('Text'),\n        ' \\n\\r'\n      );\n      if (!data.match(/[\\t\\r\\n]/)) {\n        return;\n      }\n      ev.preventDefault();\n      this.table.importData(data, this, ev.data.tdIndex);\n    },\n\n    validateValue: function (ev) {\n      if (ev.data.type === 'multiline') {\n        return;\n      }\n\n      if (ev.data.type === 'number') {\n        Craft.filterNumberInputVal(ev.currentTarget);\n        return;\n      }\n\n      // Strip any newlines\n      const safeValue = ev.currentTarget.value.replace(/[\\r\\n]/g, '');\n      if (safeValue !== ev.currentTarget.value) {\n        ev.currentTarget.value = safeValue;\n      }\n    },\n\n    onTextareaHeightChange: function () {\n      // Keep all the textareas' heights in sync\n      var tallestTextareaHeight = -1;\n\n      for (var i = 0; i < this.niceTexts.length; i++) {\n        if (this.niceTexts[i].height > tallestTextareaHeight) {\n          tallestTextareaHeight = this.niceTexts[i].height;\n        }\n      }\n\n      this.$textareas.css('min-height', tallestTextareaHeight);\n\n      // If the <td> is still taller, go with that instead\n      var tdHeight = this.$textareas\n        .filter(':visible')\n        .first()\n        .parent()\n        .height();\n\n      if (tdHeight > tallestTextareaHeight) {\n        this.$textareas.css('min-height', tdHeight);\n      }\n    },\n\n    deleteRow: function () {\n      this.table.deleteRow(this);\n    },\n  },\n  {\n    /** @deprecated */\n    numericKeyCodes: [\n      9 /* (tab) */, 8 /* (delete) */, 37, 38, 39, 40 /* (arrows) */, 45,\n      91 /* (minus) */, 46, 190 /* period */, 48, 49, 50, 51, 52, 53, 54, 55,\n      56, 57 /* (0-9) */,\n    ],\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Action Trigger\n */\nCraft.ElementActionTrigger = Garnish.Base.extend(\n  {\n    elementIndex: null,\n    maxLevels: null,\n    newChildUrl: null,\n    $trigger: null,\n    $selectedItems: null,\n    triggerEnabled: true,\n\n    init: function (settings) {\n      // Save a reference to the element index that this trigger will be used with\n      this.elementIndex = Craft.currentElementIndex;\n\n      // Register the trigger on the element index, so it can be destroyed when the view is updated\n      this.elementIndex.triggers.push(this);\n\n      if (!$.isPlainObject(settings)) {\n        settings = {};\n      }\n\n      // batch => bulk\n      if (typeof settings.batch !== 'undefined') {\n        settings.bulk = settings.batch;\n        delete settings.batch;\n      }\n      Object.defineProperty(settings, 'batch', {\n        get() {\n          return this.bulk;\n        },\n        set(v) {\n          this.bulk = v;\n        },\n      });\n\n      this.setSettings(settings, Craft.ElementActionTrigger.defaults);\n\n      this.$trigger = $(\n        `#${this.elementIndex.namespaceId(settings.type)}-actiontrigger`\n      ).data('trigger', this);\n\n      // Do we have a custom handler?\n      if (this.settings.activate) {\n        // Prevent the element index's click handler\n        this.$trigger.data('custom-handler', true);\n\n        let $button = this.$trigger.find('button,.btn');\n        if (!$button.length) {\n          $button = this.$trigger;\n        }\n        this.addListener($button, 'activate', 'handleTriggerActivation');\n      }\n\n      this.updateTrigger();\n      this.elementIndex.on('selectionChange', this.updateTrigger.bind(this));\n    },\n\n    updateTrigger: function () {\n      // Ignore if the last element was just unselected\n      if (this.elementIndex.getSelectedElements().length === 0) {\n        return;\n      }\n\n      if (this.validateSelection()) {\n        this.enableTrigger();\n      } else {\n        this.disableTrigger();\n      }\n    },\n\n    /**\n     * Determines if this action can be performed on the currently selected elements.\n     *\n     * @returns {boolean}\n     */\n    validateSelection: function () {\n      this.$selectedItems = this.elementIndex.getSelectedElements();\n\n      if (!this.settings.bulk && this.$selectedItems.length > 1) {\n        return false;\n      }\n\n      if (this.settings.requireId && this.$selectedItems.is('[data-id=\"\"]')) {\n        return false;\n      }\n\n      if (typeof this.settings.validateSelection === 'function') {\n        return this._call(() =>\n          this.settings.validateSelection(\n            this.$selectedItems,\n            this.elementIndex\n          )\n        );\n      }\n\n      return true;\n    },\n\n    enableTrigger: function () {\n      if (this.triggerEnabled) {\n        return;\n      }\n\n      this.$trigger.removeClass('disabled').removeAttr('aria-disabled');\n      this.triggerEnabled = true;\n    },\n\n    disableTrigger: function () {\n      if (!this.triggerEnabled) {\n        return;\n      }\n\n      this.$trigger.addClass('disabled').attr('aria-disabled', 'true');\n      this.triggerEnabled = false;\n    },\n\n    handleTriggerActivation: function () {\n      if (this.triggerEnabled) {\n        this._call(() =>\n          this.settings.activate(this.$selectedItems, this.elementIndex)\n        );\n      }\n    },\n\n    _call: function (fn) {\n      // temporarily set Craft.elementIndex to the trigger's index instance, for BC\n      const globalElementIndex = Craft.elementIndex;\n      Craft.elementIndex = this.elementIndex;\n      const response = fn();\n      Craft.elementIndex = globalElementIndex;\n      return response;\n    },\n  },\n  {\n    defaults: {\n      type: null,\n      bulk: true,\n      requireId: true,\n      validateSelection: null,\n      beforeActivate: async ($selectedElements, elementIndex) => {},\n      activate: null,\n      afterActivate: async ($selectedElements, elementIndex) => {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Element Editor\n */\nCraft.ElementEditor = Garnish.Base.extend(\n  {\n    isFullPage: null,\n    $container: null,\n    $activityContainer: null,\n    $tabContainer: null,\n    $contentContainer: null,\n    $sidebar: null,\n    $spinner: null,\n    $expandSiteStatusesBtn: null,\n    $statusIcon: null,\n    $previewBtn: null,\n\n    metaModal: null,\n    $nameTextInput: null,\n    $saveMetaBtn: null,\n\n    $siteStatusPane: null,\n    $globalLightswitch: null,\n    $siteLightswitches: null,\n    $additionalSiteField: null,\n\n    siteIds: null,\n    newSiteIds: null,\n\n    enableAutosave: null,\n    lastSerializedValue: null,\n    /**\n     * @type {?Craft.FormObserver}\n     */\n    formObserver: null,\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    queue: null,\n    submittingForm: false,\n\n    draftElementIds: null,\n    failed: false,\n    httpStatus: null,\n    httpError: null,\n\n    openingPreview: false,\n    preview: null,\n    activatedPreviewToken: false,\n    previewTokenQueue: null,\n    previewLinks: null,\n    scrollY: null,\n\n    hiddenTipsStorageKey: 'Craft-' + Craft.systemUid + '.TipField.hiddenTips',\n\n    activityTooltips: null,\n\n    get tipDismissBtn() {\n      return this.$container.find('.tip-dismiss-btn');\n    },\n\n    get slideout() {\n      return this.$container.data('slideout');\n    },\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      if (this.$container.data('elementEditor')) {\n        console.warn('Double-instantiating an element editor on an element.');\n        this.$container.data('elementEditor').destroy();\n      }\n\n      this.$container.data('elementEditor', this);\n      this.$container.attr('data-element-editor', '');\n\n      this.setSettings(settings, Craft.ElementEditor.defaults);\n\n      this.isFullPage = [Craft.cp.$primaryForm[0], Craft.cp.$main[0]].includes(\n        this.$container[0]\n      );\n\n      if (this.isFullPage) {\n        this.$tabContainer = $('#tabs');\n        this.$contentContainer = $('#content');\n        this.$sidebar = $('#details .details');\n      } else {\n        this.$tabContainer = this.slideout.$tabContainer;\n        this.$contentContainer = this.slideout.$content;\n        this.$sidebar = this.slideout.$sidebar;\n      }\n\n      this.queue = this._createQueue();\n      this.previewTokenQueue = this._createQueue();\n\n      this.draftElementIds = {};\n      this.enableAutosave = Craft.autosaveDrafts;\n      this.previewLinks = [];\n\n      if (this.settings.previewTargets?.length) {\n        const $actionBtn = this.isFullPage\n          ? $('#action-btn')\n          : this.slideout.$actionBtn;\n        const idPrefix = this.namespaceId('action-view');\n        const $viewAction = $actionBtn\n          ?.data('disclosureMenu')\n          ?.$container.find(`a[id^=\"${idPrefix}-\"]`);\n        if ($viewAction?.length) {\n          const href = $viewAction.attr('href');\n          $viewAction\n            .data('targetUrl', href)\n            .attr('href', this.getTokenizedPreviewUrl(href, null, false));\n          this.previewLinks.push($viewAction);\n        }\n      }\n\n      this.siteIds = Object.keys(this.settings.siteStatuses).map((siteId) => {\n        return parseInt(siteId);\n      });\n\n      this.$previewBtn = this.$container.find('.preview-btn');\n\n      const $spinnerContainer = this.isFullPage\n        ? $('#page-title')\n        : this.slideout.$toolbar;\n      this.$spinner = $('<div/>', {\n        class: 'revision-spinner spinner hidden',\n        title: Craft.t('app', 'Saving'),\n      }).appendTo($spinnerContainer);\n      this.$statusIcon = $('<div/>', {\n        class: `revision-status ${this.isFullPage ? 'invisible' : 'hidden'}`,\n      }).appendTo($spinnerContainer);\n      this.$statusMessage = $('<div/>', {\n        class: 'revision-status-message visually-hidden',\n        'aria-live': 'polite',\n      }).appendTo($spinnerContainer);\n\n      this.$expandSiteStatusesBtn = $('.expand-status-btn');\n\n      if (this.settings.canEditMultipleSites) {\n        this.addListener(\n          this.$expandSiteStatusesBtn,\n          'click',\n          'expandSiteStatuses'\n        );\n      }\n\n      if (this.settings.previewTargets.length && this.isFullPage) {\n        if (this.settings.enablePreview) {\n          this.addListener(this.$previewBtn, 'click', 'openPreview');\n        }\n\n        const $previewBtnContainer = this.$container.find(\n          '.preview-btn-container'\n        );\n\n        if (this.settings.previewTargets.length === 1) {\n          const [target] = this.settings.previewTargets;\n          this.createPreviewLink(target)\n            .addClass('view-btn btn')\n            .attr('aria-label', Craft.t('app', 'View'))\n            .appendTo($previewBtnContainer);\n        } else {\n          this.createShareMenu($previewBtnContainer);\n        }\n      }\n\n      // If the user can't save the element, we're done here\n      if (!this.settings.canSave) {\n        return;\n      }\n\n      if (this.$container.prop('tagName') !== 'FORM') {\n        throw 'Element editors may only be used with forms.';\n      }\n\n      if (this.isFullPage && Craft.edition === Craft.Pro) {\n        this.$activityContainer = this.$container.find('.activity-container');\n        this._checkActivity();\n      }\n\n      // Override the serializer to use our own\n      this.$container.data('serializer', () => this.serializeForm(true));\n      this.$container.data('initialSerializedValue', this.serializeForm(true));\n\n      // Re-record the initial values once the fields have had a chance to initialize\n      Garnish.requestAnimationFrame(() => {\n        this.$container.data(\n          'initialSerializedValue',\n          this.serializeForm(true)\n        );\n      });\n\n      if (this.isFullPage) {\n        this.addListener(this.$container, 'submit', 'handleSubmit');\n      }\n\n      if (this.settings.isProvisionalDraft) {\n        this.initForProvisionalDraft();\n      } else if (this.settings.draftId && !this.settings.isUnpublishedDraft) {\n        this.initForDraft();\n      } else if (!this.settings.canSaveCanonical) {\n        // Override the save shortcut to create a draft too\n        this.addListener(this.$container, 'submit.saveShortcut', (ev) => {\n          if (ev.saveShortcut) {\n            ev.preventDefault();\n            this.saveDraft();\n            this.removeListener(this.$container, 'submit.saveShortcut');\n          }\n        });\n      }\n\n      this.listenForChanges();\n\n      this.addListener(this.$statusIcon, 'click', () => {\n        this.showStatusHud(this.$statusIcon);\n      });\n\n      // handle closing tips\n      this.handleDismissibleTips();\n\n      if (this.isFullPage && Craft.messageReceiver) {\n        // Listen on Craft.broadcaster to ignore any messages sent by this very page\n        Craft.broadcaster.addEventListener('message', (ev) => {\n          if (\n            (ev.data.event === 'saveDraft' &&\n              ev.data.canonicalId === this.settings.canonicalId &&\n              (ev.data.draftId === this.settings.draftId ||\n                (ev.data.isProvisionalDraft && !this.settings.draftId))) ||\n            (ev.data.event === 'saveElement' &&\n              ev.data.id === this.settings.canonicalId &&\n              !this.settings.draftId)\n          ) {\n            Craft.setLocalStorage('scrollY', window.scrollY);\n            window.location.reload();\n          } else if (\n            ev.data.event === 'deleteDraft' &&\n            ev.data.canonicalId === this.settings.canonicalId &&\n            ev.data.draftId === this.settings.draftId\n          ) {\n            const url = new URL(window.location.href);\n            url.searchParams.delete('draftId');\n            if (url.href !== document.location.href) {\n              window.location.href = url;\n            } else {\n              Craft.setLocalStorage('scrollY', window.scrollY);\n              window.location.reload();\n            }\n          }\n        });\n      }\n\n      this.activityTooltips = {};\n\n      if (this.isFullPage) {\n        Craft.ui.setFocusOnErrorSummary(this.$container);\n      }\n    },\n\n    _createQueue: function () {\n      const queue = new Craft.Queue();\n      queue.on('beforeRun', () => {\n        this.showSpinner();\n      });\n      queue.on('afterRun', () => {\n        this.hideSpinner();\n      });\n      return queue;\n    },\n\n    get namespace() {\n      if (this.isFullPage) {\n        return null;\n      }\n\n      return this.slideout.namespace;\n    },\n\n    namespaceInputName(name) {\n      return Craft.namespaceInputName(name, this.namespace);\n    },\n\n    namespaceId(id) {\n      return Craft.namespaceId(id, this.namespace);\n    },\n\n    get listeningForChanges() {\n      return !!this.formObserver;\n    },\n\n    /**\n     * @deprecated\n     */\n    get pauseLevel() {\n      return this.formObserver?._pauseLevel ?? 0;\n    },\n\n    listenForChanges: function () {\n      if (this.formObserver) {\n        return;\n      }\n\n      this.formObserver = new Craft.FormObserver(this.$container, () => {\n        this.checkForm();\n      });\n    },\n\n    stopListeningForChanges: function () {\n      if (this.formObserver) {\n        this.formObserver.destroy();\n        this.formObserver = null;\n        return;\n      }\n    },\n\n    pause: function () {\n      this.formObserver?.pause();\n    },\n\n    resume: function (checkBeforeListening = true) {\n      this.formObserver?.resume();\n    },\n\n    initForProvisionalDraft: function () {\n      let $discardButton = this.$container.find('.discard-changes-btn');\n\n      if (!$discardButton.length) {\n        let initialHeight, scrollTop;\n\n        let $noticeContainer;\n        if (this.isFullPage) {\n          initialHeight = $('#content').height();\n          scrollTop = Garnish.$win.scrollTop();\n          $noticeContainer = Craft.cp.$noticeContainer;\n        } else {\n          $noticeContainer = this.$container.find('.so-notice');\n        }\n\n        const $notice = $('<div/>', {\n          class: 'draft-notice',\n        })\n          .append(\n            $('<div/>', {\n              class: 'draft-icon',\n              'aria-hidden': 'true',\n              'data-icon': 'edit',\n            })\n          )\n          .append(\n            $('<p/>', {\n              text: Craft.t('app', 'Showing your unsaved changes.'),\n            })\n          )\n          .appendTo($noticeContainer);\n\n        $discardButton = $('<button/>', {\n          type: 'button',\n          class: 'discard-changes-btn btn',\n          text: Craft.t('app', 'Discard'),\n        }).appendTo($notice);\n\n        if (this.isFullPage) {\n          const heightDiff = $('#content').height() - initialHeight;\n          Garnish.$win.scrollTop(scrollTop + heightDiff);\n\n          // If there isn’t enough content to simulate the same scroll position, slide it down instead\n          if (Garnish.$win.scrollTop() === scrollTop) {\n            // Disable pointer events until half a second after the animation is complete\n            Craft.cp.$contentContainer.css('pointer-events', 'none');\n\n            $('#content-header').css('min-height', 'auto');\n            const height = $noticeContainer.height();\n            $noticeContainer\n              .css({height: height - heightDiff, overflow: 'hidden'})\n              .velocity({height: height}, 'fast', () => {\n                $('#content-header').css('min-height', '');\n                $noticeContainer.css({height: '', overflow: ''});\n\n                setTimeout(() => {\n                  Craft.cp.$contentContainer.css('pointer-events', '');\n                }, 300);\n              });\n          }\n        }\n      }\n\n      this.addListener(\n        $discardButton,\n        'keypress,keyup,change,focus,blur,click,mousedown,mouseup',\n        (ev) => {\n          ev.stopPropagation();\n        }\n      );\n\n      this.addListener($discardButton, 'click', () => {\n        if (\n          confirm(\n            Craft.t('app', 'Are you sure you want to discard your changes?')\n          )\n        ) {\n          this.queue.unshift(\n            () =>\n              new Promise((resolve, reject) => {\n                if (this.isFullPage) {\n                  Craft.submitForm(this.$container, {\n                    action: 'elements/delete-draft',\n                    redirect: this.settings.hashedCpEditUrl,\n                    params: {\n                      draftId: this.settings.draftId,\n                      provisional: 1,\n                    },\n                  });\n                } else {\n                  Craft.sendActionRequest('POST', 'elements/delete-draft', {\n                    data: {\n                      elementId: this.settings.canonicalId,\n                      draftId: this.settings.draftId,\n                      provisional: 1,\n                    },\n                  })\n                    .then((response) => {\n                      Craft.cp.displaySuccess(response.data.message);\n                      this.slideout.close();\n                    })\n                    .catch(reject);\n                }\n              })\n          );\n        }\n      });\n\n      if (!this.isFullPage) {\n        this.slideout.$cancelBtn.text(Craft.t('app', 'Close'));\n      }\n    },\n\n    initForDraft: function () {\n      // Create the edit draft button\n      this.createEditMetaAction();\n\n      if (this.settings.canSaveCanonical) {\n        Garnish.uiLayerManager.registerShortcut(\n          {\n            keyCode: Garnish.S_KEY,\n            ctrl: true,\n            alt: true,\n          },\n          () => {\n            Craft.submitForm(this.$container, {\n              action: 'elements/apply-draft',\n              redirect: this.settings.hashedCpEditUrl,\n            });\n          },\n          0\n        );\n      }\n    },\n\n    expandSiteStatuses: function () {\n      this.removeListener(this.$expandSiteStatusesBtn, 'click');\n      this.$expandSiteStatusesBtn.velocity({opacity: 0}, 'fast', () => {\n        this.$expandSiteStatusesBtn.remove();\n      });\n\n      const $enabledForSiteField = this.$container.find(\n        `.enabled-for-site-${this.settings.siteId}-field`\n      );\n      this.$siteStatusPane = $enabledForSiteField.parent();\n\n      // If this is a revision, just show the site statuses statically and be done\n      if (this.settings.revisionId) {\n        this._getOtherSupportedSites().forEach((s) =>\n          this._createSiteStatusField(s)\n        );\n        return;\n      }\n\n      $enabledForSiteField.addClass('nested');\n      const $globalField = Craft.ui\n        .createLightswitchField({\n          label: Craft.t('app', 'Enabled for all sites'),\n          name: this.namespaceInputName('enabled'),\n        })\n        .insertBefore($enabledForSiteField);\n      $globalField.find('label').css('font-weight', 'bold');\n      this.$globalLightswitch = $globalField.find('.lightswitch');\n\n      if (!this.settings.revisionId) {\n        this._showField($globalField);\n      }\n\n      // Figure out what the \"Enabled everywhere\" lightswitch would have been set to when the page first loaded\n      const siteStatusValues = Object.values(this.settings.siteStatuses);\n      const hasEnabled = siteStatusValues.includes(true);\n      const hasDisabled = siteStatusValues.includes(false);\n      const originalEnabledValue =\n        hasEnabled && hasDisabled ? '-' : hasEnabled ? '1' : '';\n      const originalSerializedStatus =\n        encodeURIComponent(\n          this.namespaceInputName(`enabledForSite[${this.settings.siteId}]`)\n        ) +\n        '=' +\n        (this.settings.enabledForSite ? '1' : '');\n\n      this.$siteLightswitches = $enabledForSiteField\n        .find('.lightswitch')\n        .on('change', this._updateGlobalStatus.bind(this));\n\n      this._getOtherSupportedSites().forEach((s) =>\n        this._createSiteStatusField(s)\n      );\n\n      let serializedStatuses =\n        encodeURIComponent(this.namespaceInputName('enabled')) +\n        `=${originalEnabledValue}`;\n      for (let i = 0; i < this.$siteLightswitches.length; i++) {\n        const $input = this.$siteLightswitches.eq(i).data('lightswitch').$input;\n        serializedStatuses +=\n          '&' + encodeURIComponent($input.attr('name')) + '=' + $input.val();\n      }\n\n      this.$container.data(\n        'initialSerializedValue',\n        this.$container\n          .data('initialSerializedValue')\n          .replace(originalSerializedStatus, serializedStatuses)\n      );\n\n      if (this.lastSerializedValue) {\n        this.lastSerializedValue = this.lastSerializedValue.replace(\n          originalSerializedStatus,\n          serializedStatuses\n        );\n      }\n\n      // Are there additional sites that can be added?\n      if (\n        this.settings.additionalSites &&\n        this.settings.additionalSites.length &&\n        this.isFullPage\n      ) {\n        this._createAddlSiteField();\n      }\n\n      // Focus on first lightswitch\n      this.$globalLightswitch.focus();\n\n      this.$globalLightswitch.on('change', this._updateSiteStatuses.bind(this));\n      this._updateGlobalStatus();\n    },\n\n    /**\n     * @returns {Array}\n     */\n    _getOtherSupportedSites: function () {\n      return Craft.sites.filter(\n        (s) => s.id != this.settings.siteId && this.siteIds.includes(s.id)\n      );\n    },\n\n    _showField: function ($field) {\n      const height = $field.height();\n      $field\n        .css({\n          overflow: 'hidden',\n          'min-height': 'auto',\n        })\n        .height(0)\n        .velocity({height}, 'fast', () => {\n          $field.css({\n            overflow: '',\n            height: '',\n            'min-height': '',\n          });\n        });\n    },\n\n    _removeField: function ($field) {\n      $field\n        .css({\n          overflow: 'hidden',\n          'min-height': 'auto',\n        })\n        .velocity({height: 0}, 'fast', () => {\n          $field.remove();\n        });\n    },\n\n    _updateGlobalStatus: function () {\n      let allEnabled = true,\n        allDisabled = true;\n      this.$siteLightswitches.each(function () {\n        const enabled = $(this).data('lightswitch').on;\n        if (enabled) {\n          allDisabled = false;\n        } else {\n          allEnabled = false;\n        }\n        if (!allEnabled && !allDisabled) {\n          return false;\n        }\n      });\n      if (allEnabled) {\n        this.$globalLightswitch.data('lightswitch').turnOn(true);\n      } else if (allDisabled) {\n        this.$globalLightswitch.data('lightswitch').turnOff(true);\n      } else {\n        this.$globalLightswitch.data('lightswitch').turnIndeterminate(true);\n      }\n    },\n\n    _updateSiteStatuses: function () {\n      const enabled = this.$globalLightswitch.data('lightswitch').on;\n      this.$siteLightswitches.each(function () {\n        if (enabled) {\n          $(this).data('lightswitch').turnOn(true);\n        } else {\n          $(this).data('lightswitch').turnOff(true);\n        }\n      });\n    },\n\n    _createSiteStatusField: function (site, status) {\n      const $field = Craft.ui.createLightswitchField({\n        fieldClass: `enabled-for-site-${site.id}-field`,\n        label: site.name,\n        name: this.namespaceInputName(`enabledForSite[${site.id}]`),\n        on:\n          typeof status != 'undefined'\n            ? status\n            : this.settings.siteStatuses.hasOwnProperty(site.id)\n              ? this.settings.siteStatuses[site.id]\n              : true,\n        disabled: !!this.settings.revisionId,\n      });\n\n      if (this.$additionalSiteField) {\n        $field.insertBefore(this.$additionalSiteField);\n      } else {\n        $field.appendTo(this.$siteStatusPane);\n      }\n\n      if (!this.settings.revisionId) {\n        $field.addClass('nested');\n        const $lightswitch = $field\n          .find('.lightswitch')\n          .on('change', this._updateGlobalStatus.bind(this));\n        this.$siteLightswitches = this.$siteLightswitches.add($lightswitch);\n      }\n\n      this._showField($field);\n\n      return $field;\n    },\n\n    _createAddlSiteField: function () {\n      const additionalSites = Craft.sites.filter((site) => {\n        return (\n          !this.siteIds.includes(site.id) &&\n          this.settings.additionalSites.some((s) => s.siteId == site.id)\n        );\n      });\n\n      if (!additionalSites.length) {\n        return;\n      }\n\n      const selectLabelId = 'add-site-label';\n\n      const $addlSiteSelectLabel = $('<span/>', {\n        text: Craft.t('app', 'Add a site...'),\n        class: 'visually-hidden',\n        id: selectLabelId,\n      });\n\n      const $addlSiteSelectContainer = Craft.ui\n        .createSelect({\n          options: [\n            {label: Craft.t('app', 'Add a site…')},\n            ...additionalSites.map((s) => {\n              return {label: s.name, value: s.id};\n            }),\n          ],\n          labelledBy: selectLabelId,\n        })\n        .addClass('fullwidth');\n\n      this.$additionalSiteField = Craft.ui\n        .createField($addlSiteSelectContainer, {})\n        .addClass('nested add')\n        .appendTo(this.$siteStatusPane);\n\n      $addlSiteSelectLabel.prependTo(this.$additionalSiteField);\n\n      const $addlSiteSelect = $addlSiteSelectContainer.find('select');\n\n      $addlSiteSelect.on('change', () => {\n        const siteId = parseInt($addlSiteSelect.val());\n        const site = Craft.sites.find((s) => s.id === siteId);\n\n        if (!site) {\n          return;\n        }\n\n        const addlSiteInfo = this.settings.additionalSites.find(\n          (s) => s.siteId == site.id\n        );\n        this._createSiteStatusField(site, addlSiteInfo.enabledByDefault);\n        this._updateGlobalStatus();\n\n        $addlSiteSelect.val('').find(`option[value=\"${siteId}\"]`).remove();\n\n        if (this.newSiteIds === null) {\n          this.newSiteIds = [];\n        }\n\n        this.siteIds.push(siteId);\n        this.newSiteIds.push(siteId);\n\n        // Was that the last site?\n        if ($addlSiteSelect.find('option').length === 1) {\n          this._removeField(this.$additionalSiteField);\n        }\n      });\n\n      this._showField(this.$additionalSiteField);\n    },\n\n    showStatusHud: function (target) {\n      let bodyHtml;\n\n      if (!this.failed) {\n        bodyHtml = `<p>${this._saveSuccessMessage()}</p>`;\n      } else {\n        bodyHtml = `<p class=\"error\"><strong>${this._saveFailMessage()}</strong></p>`;\n\n        if (this.httpError) {\n          bodyHtml += `<p class=\"http-error code\">${Craft.escapeHtml(\n            this.httpError\n          )}</p>`;\n        }\n\n        if (this.httpStatus === 400) {\n          bodyHtml += `<button class=\"btn refresh-btn\">${Craft.t(\n            'app',\n            'Refresh'\n          )}</button>`;\n        }\n      }\n\n      const hud = new Garnish.HUD(target, bodyHtml, {\n        hudClass: 'hud revision-status-hud',\n        onHide: function () {\n          hud.destroy();\n        },\n      });\n\n      hud.$mainContainer.find('.refresh-btn').on('click', () => {\n        window.location.reload();\n      });\n    },\n\n    /**\n     * @returns {string}\n     */\n    _saveSuccessMessage: function () {\n      return this.settings.isProvisionalDraft ||\n        this.settings.isUnpublishedDraft\n        ? Craft.t('app', 'Your changes have been stored.')\n        : Craft.t('app', 'The draft has been saved.');\n    },\n\n    /**\n     * @returns {string}\n     */\n    _saveFailMessage: function () {\n      return this.settings.isProvisionalDraft ||\n        this.settings.isUnpublishedDraft\n        ? Craft.t('app', 'Your changes could not be stored.')\n        : Craft.t('app', 'The draft could not be saved.');\n    },\n\n    spinners: function () {\n      return this.preview\n        ? this.$spinner.add(this.preview.$spinner)\n        : this.$spinner;\n    },\n\n    showSpinner: function () {\n      this.spinners().removeClass('hidden');\n    },\n\n    hideSpinner: function () {\n      this.spinners().addClass('hidden');\n    },\n\n    statusIcons: function () {\n      return this.preview\n        ? this.$statusIcon.add(this.preview.$statusIcon)\n        : this.$statusIcon;\n    },\n\n    statusMessage: function () {\n      return this.preview\n        ? this.$statusMessage.add(this.preview.$statusMessage)\n        : this.$statusMessage;\n    },\n\n    createEditMetaAction: function () {\n      if (!this.isFullPage) {\n        return;\n      }\n\n      const menu = $('#action-menu').disclosureMenu().data('disclosureMenu');\n      const destructiveGroup = menu.getFirstDestructiveGroup();\n      const group = menu.addGroup(null, true, destructiveGroup);\n      const button = menu.addItem(\n        {\n          type: 'button',\n          icon: 'edit',\n          label: Craft.t('app', 'Edit draft settings'),\n        },\n        group\n      );\n      this.addListener(button, 'click', 'showMetaModal');\n    },\n\n    createPreviewLink: function (target, label) {\n      const $a = $('<a/>', {\n        href: this.getTokenizedPreviewUrl(target.url, null, false),\n        text: label || Craft.t('app', 'View'),\n        target: '_blank',\n        data: {\n          targetUrl: target.url,\n          targetLabel: target.label,\n        },\n      });\n\n      this.addListener($a, 'click', () => {\n        setTimeout(() => {\n          this.activatePreviewToken();\n        }, 1);\n      });\n\n      this.previewLinks.push($a);\n      return $a;\n    },\n\n    updatePreviewLinks: function () {\n      this.previewLinks.forEach(($a) => {\n        this.updatePreviewLinkHref($a);\n        if (this.activatedPreviewToken) {\n          this.removeListener($a, 'click');\n        }\n      });\n    },\n\n    updatePreviewLinkHref: function ($a) {\n      $a.attr(\n        'href',\n        this.getTokenizedPreviewUrl($a.data('targetUrl'), null, false)\n      );\n    },\n\n    activatePreviewToken: function () {\n      if (this.settings.isLive) {\n        // don't do anything yet, but leave the event in case we need it later\n        return;\n      }\n\n      this.activatedPreviewToken = true;\n      this.updatePreviewLinks();\n    },\n\n    createShareMenu: function ($container) {\n      const $btn = $('<button/>', {\n        type: 'button',\n        class: 'view-btn btn menubtn',\n        text: Craft.t('app', 'View'),\n      }).appendTo($container);\n\n      const $menu = $('<div/>', {class: 'menu'}).appendTo($container);\n      const $ul = $('<ul/>').appendTo($menu);\n\n      this.settings.previewTargets.forEach((target) => {\n        $('<li/>')\n          .append(this.createPreviewLink(target, target.label))\n          .appendTo($ul);\n      });\n\n      new Garnish.MenuBtn($btn);\n    },\n\n    getPreviewTokenParams: function () {\n      const params = {\n        elementType: this.settings.elementType,\n        canonicalId: this.settings.canonicalId,\n        siteId: this.settings.siteId,\n        revisionId: this.settings.revisionId,\n        previewToken: this.settings.previewToken,\n      };\n\n      if (this.settings.draftId && !this.settings.isProvisionalDraft) {\n        params.draftId = this.settings.draftId;\n      }\n\n      return params;\n    },\n\n    getPreviewToken: function () {\n      return this.previewTokenQueue.push(() => {\n        return new Promise((resolve, reject) => {\n          if (this.activatedPreviewToken) {\n            resolve(this.settings.previewToken);\n            return;\n          }\n\n          Craft.sendActionRequest('POST', 'preview/create-token', {\n            data: this.getPreviewTokenParams(),\n          })\n            .then(() => {\n              this.activatePreviewToken();\n              resolve(this.settings.previewToken);\n            })\n            .catch(reject);\n        });\n      });\n    },\n\n    /**\n     * @param {string} url\n     * @param {?string} [randoParam]\n     * @param {boolean} [asPromise=false]\n     * @returns {(Promise|string)}\n     */\n    getTokenizedPreviewUrl: function (url, randoParam, asPromise) {\n      if (typeof asPromise === 'undefined') {\n        asPromise = true;\n      }\n\n      const params = {};\n\n      if (randoParam || !this.settings.isLive) {\n        // Randomize the URL so CDNs don't return cached pages\n        params[randoParam || 'x-craft-preview'] = Craft.randomString(10);\n      }\n\n      if (this.settings.siteToken) {\n        params[Craft.siteToken] = this.settings.siteToken;\n      }\n\n      // No need for a token if we're looking at a live element\n      if (this.settings.isLive) {\n        const previewUrl = Craft.getUrl(url, params);\n\n        if (asPromise) {\n          return new Promise((resolve) => {\n            resolve(previewUrl);\n          });\n        }\n\n        return previewUrl;\n      }\n\n      if (!this.settings.previewToken) {\n        throw 'Missing preview token';\n      }\n\n      params[Craft.tokenParam] = this.settings.previewToken;\n      const previewUrl = Craft.getUrl(url, params);\n\n      if (this.activatedPreviewToken) {\n        if (asPromise) {\n          return new Promise((resolve) => {\n            resolve(previewUrl);\n          });\n        }\n\n        return previewUrl;\n      }\n\n      if (asPromise) {\n        return new Promise((resolve, reject) => {\n          this.getPreviewToken()\n            .then(() => {\n              resolve(previewUrl);\n            })\n            .catch(reject);\n        });\n      }\n\n      const createTokenParams = this.getPreviewTokenParams();\n      createTokenParams.redirect = previewUrl;\n      return Craft.getActionUrl('preview/create-token', createTokenParams);\n    },\n\n    getPreview: function () {\n      if (!this.preview) {\n        this.preview = new Craft.Preview(this);\n        if (!this.enableAutosave) {\n          this.preview.on('open', () => {\n            this.enableAutosave = true;\n            this.checkForm();\n          });\n          this.preview.on('close', () => {\n            this.enableAutosave = false;\n\n            // Hide the status icon if the save was successful\n            const $statusIcons = this.statusIcons();\n            if ($statusIcons.hasClass('checkmark-icon')) {\n              $statusIcons.addClass('hidden');\n            }\n          });\n        }\n        this.preview.on('beforeOpen', () => {\n          this.formObserver?.pause();\n        });\n        this.preview.on('close', () => {\n          this.formObserver?.resume();\n          if (this.scrollY) {\n            window.scrollTo(0, this.scrollY);\n            this.scrollY = null;\n          }\n        });\n      }\n      return this.preview;\n    },\n\n    openPreview: async function () {\n      if (Garnish.hasAttr(this.$previewBtn, 'aria-disabled')) {\n        return;\n      }\n\n      this.$previewBtn.attr('aria-disabled', true);\n      this.$previewBtn.addClass('loading');\n\n      try {\n        await this.checkForm();\n        this.openingPreview = true;\n        await this.ensureIsDraftOrRevision(true);\n        this.scrollY = window.scrollY;\n        this.getPreview().open();\n      } finally {\n        this.$previewBtn.removeAttr('aria-disabled');\n        this.$previewBtn.removeClass('loading');\n        this.openingPreview = false;\n      }\n    },\n\n    ensureIsDraftOrRevision: function (onlyIfChanged) {\n      return new Promise((resolve, reject) => {\n        if (!this.settings.draftId && !this.settings.revisionId) {\n          if (\n            onlyIfChanged &&\n            this.serializeForm(true) ===\n              this.$container.data('initialSerializedValue')\n          ) {\n            resolve();\n            return;\n          }\n\n          this.saveDraft().then(resolve).catch(reject);\n        } else {\n          resolve();\n        }\n      });\n    },\n\n    async setFormValue(name, value) {\n      if (this.settings.revisionId) {\n        throw 'Unable to set form values on a revision.';\n      }\n\n      // See if the value is already set\n      const params = this.$container.serialize().split('&');\n      if (\n        params.includes(\n          `${encodeURIComponent(name)}=${encodeURIComponent(value)}`\n        )\n      ) {\n        return;\n      }\n\n      $('<input/>', {\n        type: 'hidden',\n        name,\n        value,\n      }).prependTo(this.$container);\n      if (this.settings.canCreateDrafts) {\n        await this.saveDraft();\n      }\n    },\n\n    async markDeltaNameAsModified(name) {\n      let names = this.$container.data('modified-delta-names') || [];\n      if (!names.includes(name)) {\n        names.push(name);\n        this.$container.data('modified-delta-names', names);\n        await this.saveDraft();\n      }\n    },\n\n    serializeForm: function (removeActionParams) {\n      let data = this.$container.serialize();\n\n      if (this.isPreviewActive()) {\n        // Replace the temp input with the preview form data\n        data = data.replace(\n          '__PREVIEW_FIELDS__=1',\n          this.preview.$editor.serialize()\n        );\n      }\n\n      if (removeActionParams && !this.settings.isUnpublishedDraft) {\n        // Remove action and redirect params\n        const actionName = encodeURIComponent(\n          this.namespaceInputName('action')\n        );\n        const redirectName = encodeURIComponent(\n          this.namespaceInputName('redirect')\n        );\n        data = data.replace(\n          new RegExp(`&${Craft.escapeRegex(actionName)}=[^&]*`),\n          ''\n        );\n        data = data.replace(\n          new RegExp(`&${Craft.escapeRegex(redirectName)}=[^&]*`),\n          ''\n        );\n      }\n\n      // remove embedded element index names\n      data = data.replace(/&elementindex-[^&]*/g, '');\n\n      return data;\n    },\n\n    /**\n     * @param {boolean} [force=false]\n     * @returns {Promise}\n     */\n    checkForm: function (force) {\n      return this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            // If this is a draft, there's nothing to check\n            if (this.settings.revisionId) {\n              resolve();\n              return;\n            }\n\n            // If we haven't had a chance to fetch the initial data yet, try again in a bit\n            if (\n              typeof this.$container.data('initialSerializedValue') ===\n              'undefined'\n            ) {\n              setTimeout(() => {\n                this.checkForm(force).then(resolve).catch(reject);\n              }, 500);\n              return;\n            }\n\n            // Has anything changed?\n            const data = this.serializeForm(true);\n            if (\n              !force &&\n              data ===\n                (this.lastSerializedValue ||\n                  this.$container.data('initialSerializedValue'))\n            ) {\n              resolve();\n              return;\n            }\n\n            if (this.enableAutosave && this.settings.canCreateDrafts) {\n              this._saveDraftInternal(data)\n                .then(resolve)\n                .catch((e) => {\n                  console.warn('Couldn’t save draft:', e);\n                  reject(e);\n                });\n            } else {\n              this.updateFieldLayout(data)\n                .then(resolve)\n                .catch((e) => {\n                  console.warn('Couldn’t update field layout:', e);\n                  reject(e);\n                });\n            }\n          })\n      );\n    },\n\n    isPreviewActive: function () {\n      return this.preview && this.preview.isActive;\n    },\n\n    /**\n     * @param {Object} [params]\n     * @returns {Promise}\n     */\n    saveDraft: function (params) {\n      return this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            this._saveDraftInternal(this.serializeForm(true), params)\n              .then(resolve)\n              .catch(reject);\n          })\n      );\n    },\n\n    /**\n     * @param {Object} data\n     * @param {Object} [params]\n     * @returns {Promise}\n     */\n    _saveDraftInternal: function (data, params) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're already submitting the main form\n        if (this.submittingForm) {\n          reject('Form already being submitted.');\n          return;\n        }\n\n        this.lastSerializedValue = data;\n        this.failed = false;\n        this.httpStatus = null;\n        this.httpError = null;\n        this.cancelToken = axios.CancelToken.source();\n\n        this.statusIcons()\n          .velocity('stop')\n          .css('opacity', '')\n          .removeClass('hidden invisible checkmark-icon alert-icon fade-out')\n          .addClass('hidden');\n\n        // Clear previous status message\n        this.statusMessage().empty();\n\n        if (this.$saveMetaBtn) {\n          this.$saveMetaBtn.addClass('active');\n        }\n\n        // Prep the data to be saved, keeping track of the first input name for each delta group\n        const [modifiedDeltaNames] = Craft.findModifiedDeltaNames(\n          this.$container.data('initialSerializedValue'),\n          data,\n          this.$container.data('delta-names'),\n          this.$container.data('initial-delta-values'),\n          this.$container.data('modified-delta-names'),\n          true\n        );\n\n        const params = this.prepareData(data, null, true);\n\n        let $modifiedFields = $();\n        for (const name of modifiedDeltaNames) {\n          const $field = ($modifiedFields = $modifiedFields.add(\n            this.$container.find(\n              `.field[data-base-input-name=\"${$.escapeSelector(name)}\"]`\n            )\n          ));\n          $modifiedFields = $modifiedFields\n            .add($field)\n            .add($field.parentsUntil(this.$container, '.field'));\n        }\n\n        params.push(\n          $.param({\n            [this.namespaceInputName('visibleLayoutElements')]:\n              this.settings.visibleLayoutElements,\n          })\n        );\n\n        // Are we saving a provisional draft?\n        if (this.settings.isProvisionalDraft || !this.settings.draftId) {\n          params.push(`${this.namespaceInputName('provisional')}=1`);\n        }\n\n        const selectedTabId = this.$contentContainer\n          .children('[data-layout-tab]:not(.hidden)')\n          .data('id');\n        if (selectedTabId) {\n          params.push(\n            `${this.namespaceInputName('selectedTab')}=${selectedTabId}`\n          );\n        }\n\n        Craft.sendActionRequest('POST', 'elements/save-draft', {\n          cancelToken: this.cancelToken.token,\n          headers: this._saveHeaders,\n          data: params.join('&'),\n        })\n          .then((response) => {\n            this._afterSaveDraft();\n            this._afterUpdateFieldLayout(data, selectedTabId, response);\n\n            const createdProvisionalDraft = !this.settings.draftId;\n\n            if (createdProvisionalDraft) {\n              this.settings.isProvisionalDraft = true;\n            }\n\n            if (this.isFullPage) {\n              if (response.data.title) {\n                this.$container.find('.screen-title').text(response.data.title);\n              }\n\n              if (response.data.docTitle) {\n                document.title = response.data.docTitle;\n              }\n            }\n\n            // Did we just add a site?\n            if (this.newSiteIds) {\n              this.newSiteIds.forEach((siteId) => {\n                const siteSettings = this.settings.additionalSites.find(\n                  (s) => s.siteId == siteId\n                );\n                const enabled =\n                  !siteSettings ||\n                  typeof siteSettings.enabledByDefault === 'undefined' ||\n                  siteSettings.enabledByDefault;\n                Craft.cp.showSiteCrumbMenuItem(siteId);\n                Craft.cp.setSiteCrumbMenuItemStatus(\n                  siteId,\n                  enabled ? 'enabled' : 'disabled'\n                );\n              });\n              this.newSiteIds = null;\n            }\n\n            if (this.settings.isProvisionalDraft) {\n              if (createdProvisionalDraft) {\n                // Replace the action\n                this.$container\n                  .find('input.action-input')\n                  .attr('value', 'elements/apply-draft');\n\n                // Update the editor settings\n                this.settings.elementId = response.data.elementId;\n                this.settings.draftId = response.data.draftId;\n                this.settings.isLive = false;\n                this.previewToken = null;\n\n                this.initForProvisionalDraft();\n              }\n            } else {\n              this.settings.draftName = response.data.draftName;\n              if (this.isFullPage) {\n                Craft.cp.updateContext(\n                  response.data.draftName,\n                  response.data.creator\n                    ? Craft.t('app', 'Saved {timestamp} by {creator}', {\n                        timestamp: response.data.timestamp,\n                        creator: response.data.creator,\n                      })\n                    : Craft.t('app', 'Saved {timestamp}', {\n                        timestamp: response.data.timestamp,\n                      })\n                );\n              }\n            }\n\n            // Did the controller send us updated preview targets?\n            if (\n              response.data.previewTargets &&\n              JSON.stringify(response.data.previewTargets) !==\n                JSON.stringify(this.settings.previewTargets)\n            ) {\n              this.updatePreviewTargets(response.data.previewTargets);\n            }\n\n            if (createdProvisionalDraft) {\n              this.updatePreviewLinks();\n              this.trigger('createProvisionalDraft');\n            }\n\n            if (this.$nameTextInput) {\n              this.checkMetaValues();\n            }\n\n            if ($.isPlainObject(response.data.draftElementIds)) {\n              this.draftElementIds = {\n                ...this.draftElementIds,\n                ...response.data.draftElementIds,\n              };\n            }\n\n            // Add missing field modified indicators\n            const selector = response.data.modifiedAttributes\n              .map((attr) => {\n                attr = this.namespaceInputName(attr);\n                return [`[name=\"${attr}\"]`, `[name^=\"${attr}[\"]`];\n              })\n              .flat()\n              .join(',');\n\n            $modifiedFields = $modifiedFields\n              .add(\n                this.$contentContainer\n                  .find(selector)\n                  .parentsUntil(this.$container, '.flex-fields > .field')\n              )\n              .add(this.$sidebar.find(selector).closest('.field'))\n              .not(':has(> .status-badge)');\n\n            for (let i = 0; i < $modifiedFields.length; i++) {\n              $modifiedFields.eq(i).prepend(\n                $('<div/>', {\n                  class: 'status-badge modified',\n                  title: Craft.t('app', 'This field has been modified.'),\n                }).append(\n                  $('<span/>', {\n                    class: 'visually-hidden',\n                    html: Craft.t('app', 'This field has been modified.'),\n                  })\n                )\n              );\n            }\n\n            // updated the updatedTimestamp values\n            this.settings.updatedTimestamp = response.data.updatedTimestamp;\n            this.settings.canonicalUpdatedTimestamp =\n              response.data.canonicalUpdatedTimestamp;\n\n            this.afterUpdate(data);\n\n            if (Craft.broadcaster) {\n              Craft.broadcaster.postMessage({\n                pageId: Craft.pageId,\n                event: 'saveDraft',\n                canonicalId: this.settings.canonicalId,\n                draftId: this.settings.draftId,\n                isProvisionalDraft: this.settings.isProvisionalDraft,\n              });\n            }\n\n            resolve();\n          })\n          .catch((e) => {\n            this._afterSaveDraft();\n\n            if (!this.ignoreFailedRequest) {\n              this.failed = true;\n              if (e && e.response) {\n                this.httpStatus = e.response.status;\n                this.httpError = e.response.data\n                  ? e.response.data.message\n                  : null;\n              }\n              this._showFailStatus();\n              reject(e);\n            }\n\n            this.ignoreFailedRequest = false;\n          });\n      });\n    },\n\n    _afterSaveDraft: function () {\n      if (this.$saveMetaBtn) {\n        this.$saveMetaBtn.removeClass('active');\n      }\n    },\n\n    _showFailStatus: function () {\n      this.statusIcons()\n        .velocity('stop')\n        .css('opacity', '')\n        .removeClass('hidden checkmark-icon')\n        .addClass('alert-icon');\n\n      this.setStatusMessage(this._saveFailMessage());\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    updateFieldLayout: function (data) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're already submitting the main form\n        if (this.submittingForm) {\n          reject('Form already being submitted.');\n          return;\n        }\n\n        this.lastSerializedValue = data;\n        this.cancelToken = axios.CancelToken.source();\n\n        // Prep the data to be saved, keeping track of the first input name for each delta group\n        let modifiedFieldNames = [];\n        let preparedData = this.prepareData(\n          data,\n          !this.settings.isUnpublishedDraft\n            ? (deltaName, params) => {\n                if (params.length) {\n                  modifiedFieldNames.push(\n                    decodeURIComponent(params[0].split('=')[0])\n                  );\n                }\n              }\n            : null\n        );\n\n        const extraData = {\n          [this.namespaceInputName('visibleLayoutElements')]:\n            this.settings.visibleLayoutElements,\n        };\n\n        // Are we editing a provisional draft?\n        if (this.settings.isProvisionalDraft) {\n          extraData[this.namespaceInputName('provisional')] = 1;\n        }\n\n        const selectedTabId = this.$contentContainer\n          .children('[data-layout-tab]:not(.hidden)')\n          .data('id');\n        if (selectedTabId) {\n          extraData[this.namespaceInputName('selectedTab')] = selectedTabId;\n        }\n\n        preparedData += `&${$.param(extraData)}`;\n\n        Craft.sendActionRequest('POST', 'elements/update-field-layout', {\n          cancelToken: this.cancelToken.token,\n          headers: this._saveHeaders,\n          data: preparedData,\n        })\n          .then((response) => {\n            this._afterUpdateFieldLayout(data, selectedTabId, response);\n            resolve();\n          })\n          .catch((e) => {\n            this._afterSaveDraft();\n\n            if (!this.ignoreFailedRequest) {\n              this.failed = true;\n              if (e && e.response) {\n                this.httpStatus = e.response.status;\n                this.httpError = e.response.data\n                  ? e.response.data.message\n                  : null;\n              }\n              this._showFailStatus();\n              reject(e);\n            }\n\n            this.ignoreFailedRequest = false;\n          });\n      });\n    },\n\n    /**\n     * @param {string} data\n     * @param {findDeltaDataCallback|null} [deltaCallback] Callback function that should be passed to `Craft.findDeltaData()`\n     * @param {boolean} [asArray]\n     * @returns {string|Array}\n     */\n    prepareData: function (data, deltaCallback = () => {}, asArray = false) {\n      // Filter out anything that hasn't changed since the last time the form was submitted\n      const params = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        data,\n        this.$container.data('delta-names'),\n        deltaCallback,\n        this.$container.data('initial-delta-values'),\n        this.$container.data('modified-delta-names'),\n        true\n      );\n\n      // Add the draft info\n      if (this.settings.draftId) {\n        params.push(\n          `${this.namespaceInputName('draftId')}=${this.settings.draftId}`\n        );\n\n        if (this.settings.isProvisionalDraft) {\n          params.push(`${this.namespaceInputName('provisional')}=1`);\n        }\n      }\n\n      if (this.settings.draftName !== null) {\n        params.push(\n          `${this.namespaceInputName('draftName')}=${this.settings.draftName}`\n        );\n      }\n\n      return asArray ? params : params.join('&');\n    },\n\n    get _saveHeaders() {\n      const headers = {\n        'content-type': 'application/x-www-form-urlencoded',\n      };\n\n      if (this.namespace) {\n        headers['X-Craft-Namespace'] = this.namespace;\n      }\n\n      return headers;\n    },\n\n    getDraftElementId(elementId) {\n      return this.draftElementIds[elementId] || elementId;\n    },\n\n    updatePreviewTargets: function (previewTargets) {\n      previewTargets.forEach((newTarget) => {\n        const currentTarget = this.settings.previewTargets.find(\n          (t) => t.label === newTarget.label\n        );\n        if (currentTarget) {\n          currentTarget.url = newTarget.url;\n        }\n\n        const $previewLink = this.previewLinks.find(\n          ($a) => $a.data('targetLabel') === newTarget.label\n        );\n        if ($previewLink) {\n          $previewLink.data('targetUrl', newTarget.url);\n          this.updatePreviewLinkHref($previewLink);\n        }\n      });\n    },\n\n    async _afterUpdateFieldLayout(data, selectedTabId, response) {\n      // Keep track of whether anything changed while we were waiting.\n      // If not, we can safely update lastSerializedValue after swapping out the fields\n      const noChanges = this.serializeForm(true) === data;\n\n      // capture the new selected tab ID, in case it just changed\n      const newSelectedTabId = this.$contentContainer\n        .children('[data-layout-tab]:not(.hidden)')\n        .data('id');\n\n      // Update the visible elements\n      let $allTabContainers = $();\n      const visibleLayoutElements = {};\n      let changedElements = false;\n\n      for (const tabInfo of response.data.missingElements) {\n        let $tabContainer = this.$contentContainer.children(\n          `[data-layout-tab=\"${tabInfo.uid}\"]`\n        );\n\n        if (!$tabContainer.length) {\n          $tabContainer = $('<div/>', {\n            id: this.namespaceId(tabInfo.id),\n            class: 'flex-fields',\n            'data-id': tabInfo.id,\n            'data-layout-tab': tabInfo.uid,\n          });\n          if (tabInfo.id !== selectedTabId) {\n            $tabContainer.addClass('hidden');\n          }\n          $tabContainer.appendTo(this.$contentContainer);\n        }\n\n        $allTabContainers = $allTabContainers.add($tabContainer);\n\n        for (const elementInfo of tabInfo.elements) {\n          if (elementInfo.html !== false) {\n            if (!visibleLayoutElements[tabInfo.uid]) {\n              visibleLayoutElements[tabInfo.uid] = [];\n            }\n            visibleLayoutElements[tabInfo.uid].push(elementInfo.uid);\n\n            if (typeof elementInfo.html === 'string') {\n              const $oldElement = $tabContainer.children(\n                `[data-layout-element=\"${elementInfo.uid}\"]`\n              );\n              const $newElement = $(elementInfo.html);\n              if ($oldElement.length) {\n                $oldElement.replaceWith($newElement);\n              } else {\n                $newElement.appendTo($tabContainer);\n              }\n              Craft.initUiElements($newElement);\n              changedElements = true;\n            }\n          } else {\n            const $oldElement = $tabContainer.children(\n              `[data-layout-element=\"${elementInfo.uid}\"]`\n            );\n            if (\n              !$oldElement.length ||\n              !Garnish.hasAttr($oldElement, 'data-layout-element-placeholder')\n            ) {\n              const $placeholder = $('<div/>', {\n                class: 'hidden',\n                'data-layout-element': elementInfo.uid,\n                'data-layout-element-placeholder': '',\n              });\n\n              if ($oldElement.length) {\n                $oldElement.replaceWith($placeholder);\n              } else {\n                $placeholder.appendTo($tabContainer);\n              }\n\n              changedElements = true;\n            }\n          }\n        }\n      }\n\n      // Remove any unused tab content containers\n      // (`[data-layout-tab=\"\"]` == unconditional containers, so ignore those)\n      const $unusedTabContainers = this.$contentContainer\n        .children('[data-layout-tab]')\n        .not($allTabContainers)\n        .not('[data-layout-tab=\"\"]');\n      if ($unusedTabContainers.length) {\n        $unusedTabContainers.remove();\n        changedElements = true;\n      }\n\n      // Make the first tab visible if no others are\n      if (!$allTabContainers.filter(':not(.hidden)').length) {\n        $allTabContainers.first().removeClass('hidden');\n      }\n\n      this.settings.visibleLayoutElements = visibleLayoutElements;\n\n      // Update the tabs\n      let tabManager;\n      if (this.isFullPage) {\n        Craft.cp.updateTabs(response.data.tabs);\n        tabManager = Craft.cp.tabManager;\n      } else {\n        this.slideout.updateTabs(response.data.tabs);\n        tabManager = this.slideout.tabManager;\n      }\n\n      // was a new tab selected after the request was kicked off?\n      if (\n        selectedTabId &&\n        newSelectedTabId &&\n        selectedTabId !== newSelectedTabId\n      ) {\n        const $newSelectedTab = tabManager.$tabs.filter(\n          `[data-id=\"${newSelectedTabId}\"]`\n        );\n        if ($newSelectedTab.length) {\n          // if the new tab is visible - switch to it\n          tabManager.selectTab($newSelectedTab);\n        } else {\n          // if the new tab is not visible (e.g. hidden by a condition)\n          // switch to the first tab\n          tabManager.selectTab(tabManager.$tabs.first());\n        }\n      }\n\n      await Craft.appendHeadHtml(response.data.headHtml);\n      await Craft.appendBodyHtml(response.data.bodyHtml);\n\n      // Did any layout elements get added or removed?\n      if (changedElements) {\n        if (response.data.initialDeltaValues) {\n          Object.assign(\n            this.$container.data('initial-delta-values'),\n            response.data.initialDeltaValues\n          );\n        }\n\n        if (noChanges) {\n          // Update our record of the last serialized value to avoid a pointless resave\n          this.lastSerializedValue = this.serializeForm(true);\n        }\n      }\n\n      // re-grab dismissible tips, re-attach listener, hide on re-load\n      this.handleDismissibleTips();\n    },\n\n    afterUpdate: function (data) {\n      this.$container.data('initialSerializedValue', data);\n      this.$container.data('initial-delta-values', {});\n\n      const $statusIcons = this.statusIcons()\n        .velocity('stop')\n        .css('opacity', '')\n        .removeClass('hidden')\n        .addClass('checkmark-icon');\n\n      this.setStatusMessage(this._saveSuccessMessage());\n\n      if (!Craft.autosaveDrafts) {\n        // Fade the icon out after a couple seconds, since it won't be accurate as content continues to change\n        $statusIcons.velocity('stop').velocity(\n          {\n            opacity: 0,\n          },\n          {\n            delay: 2000,\n            complete: () => {\n              $statusIcons.addClass('hidden');\n            },\n          }\n        );\n      }\n\n      this.trigger('update');\n    },\n\n    setStatusMessage: function (message) {\n      this.statusIcons().attr('title', message);\n      this.statusMessage()\n        .empty()\n        .append(\n          $('<span/>', {\n            class: 'visually-hidden',\n            text: message,\n          })\n        );\n    },\n\n    showMetaModal: function () {\n      if (!this.metaModal) {\n        this.createMetaModal();\n      } else {\n        this.metaModal.show();\n      }\n\n      if (!Garnish.isMobileBrowser(true)) {\n        setTimeout(() => {\n          this.$nameTextInput.trigger('focus');\n        }, 100);\n      }\n    },\n\n    createMetaModal: function () {\n      const $modal = $('<form/>', {\n        class: 'modal fitted',\n      });\n      const $hudBody = $('<div/>', {\n        class: 'body',\n      }).appendTo($modal);\n\n      // Add the Name field\n      const $nameField = $(\n        '<div class=\"field\"><div class=\"heading\"><label for=\"draft-name\">' +\n          Craft.t('app', 'Draft Name') +\n          '</label></div></div>'\n      ).appendTo($hudBody);\n      const $nameInputContainer = $('<div class=\"input\"/>').appendTo(\n        $nameField\n      );\n      this.$nameTextInput = $(\n        '<input type=\"text\" class=\"text fullwidth\" id=\"draft-name\"/>'\n      )\n        .appendTo($nameInputContainer)\n        .val(this.settings.draftName);\n\n      // HUD footer\n      const $footer = $('<div class=\"hud-footer flex flex-center\"/>').appendTo(\n        $modal\n      );\n\n      $('<div class=\"flex-grow\"></div>').appendTo($footer);\n      this.$saveMetaBtn = $('<button/>', {\n        type: 'submit',\n        class: 'btn submit disabled',\n        'aria-disabled': 'true',\n        text: Craft.t('app', 'Save'),\n      }).appendTo($footer);\n\n      this.metaModal = new Garnish.Modal($modal);\n\n      this.addListener(this.$nameTextInput, 'input', 'checkMetaValues');\n      this.addListener($modal, 'submit', (ev) => {\n        ev.preventDefault();\n        this.saveMeta();\n      });\n\n      this.metaModal.on('escape', () => {\n        this.$nameTextInput.val(this.settings.draftName);\n      });\n    },\n\n    checkMetaValues: function () {\n      if (\n        this.$nameTextInput.val() &&\n        this.$nameTextInput.val() !== this.settings.draftName\n      ) {\n        this.$saveMetaBtn.removeClass('disabled');\n        this.$saveMetaBtn.removeAttr('aria-disabled');\n        return true;\n      }\n\n      this.$saveMetaBtn.addClass('disabled');\n      this.$saveMetaBtn.attr('aria-disabled', 'true');\n      return false;\n    },\n\n    shakeMetaModal: function () {\n      Garnish.shake(this.metaModal.$container);\n    },\n\n    saveMeta: function () {\n      return new Promise((resolve, reject) => {\n        if (!this.checkMetaValues()) {\n          this.shakeMetaModal();\n          reject();\n          return;\n        }\n\n        this.settings.draftName = this.$nameTextInput.val();\n        this.metaModal.hide();\n        this.checkForm(true).then(resolve).catch(reject);\n      });\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      ev.stopPropagation();\n\n      // Prevent the beforeunload listener from getting run\n      ev.stopImmediatePropagation();\n\n      // Prevent double form submits\n      if (this.submittingForm) {\n        return;\n      }\n\n      // If this a draft and was this a normal save (either via submit button or save shortcut),\n      // then trigger an autosave\n      if (\n        this.settings.draftId &&\n        !this.settings.isUnpublishedDraft &&\n        !this.settings.isProvisionalDraft &&\n        (typeof ev.autosave === 'undefined' || ev.autosave) &&\n        (ev.saveShortcut ||\n          (ev.customTrigger &&\n            ev.customTrigger.data('action') === 'elements/save-draft')) &&\n        this.enableAutosave\n      ) {\n        this.checkForm(true);\n        return;\n      }\n\n      this.submittingForm = true;\n\n      // Prevent the normal unload confirmation dialog\n      Craft.cp.$confirmUnloadForms = Craft.cp.$confirmUnloadForms.not(\n        this.$container\n      );\n\n      // Abort the current save request if there is one\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n\n      this.trigger('beforeSubmit');\n\n      // Duplicate the form with normalized data\n      const data = this.prepareData(this.serializeForm(false));\n\n      if (this.isFullPage) {\n        this.stopListeningForChanges();\n        const $form = Craft.createForm(data);\n        $form.appendTo(Garnish.$bod);\n        $form.submit();\n      } else {\n        this.slideout.showSubmitSpinner();\n        Craft.sendActionRequest('POST', null, {\n          headers: this._saveHeaders,\n          data,\n        })\n          .then((response) => {\n            this.slideout.handleSubmitResponse(response);\n          })\n          .catch((error) => {\n            this.slideout.handleSubmitError(error);\n          })\n          .finally(() => {\n            this.submittingForm = false;\n            this.slideout.hideSubmitSpinner();\n          });\n      }\n    },\n\n    handleDismissibleTips: function () {\n      this.addListener(this.tipDismissBtn, 'click', (e) => {\n        this.hideTip(e);\n      });\n    },\n\n    getHiddenTipsUids: function () {\n      return Craft.getLocalStorage('dismissedTips', []);\n    },\n\n    setHiddenTipsUids: function (uids) {\n      Craft.setLocalStorage('dismissedTips', uids);\n    },\n\n    hideTip: function (ev) {\n      const targetElement = ev.target;\n      if (targetElement) {\n        const $targetParent = $(targetElement).closest('.readable');\n        if ($targetParent.length) {\n          const layoutElementUid = $targetParent.data('layout-element');\n          $targetParent.remove();\n          // add info to local storage\n          if (typeof Storage !== 'undefined') {\n            const hiddenTips = this.getHiddenTipsUids();\n            if (!hiddenTips.includes(layoutElementUid)) {\n              hiddenTips.push(layoutElementUid);\n              this.setHiddenTipsUids(hiddenTips);\n            }\n          }\n        }\n      }\n    },\n\n    _checkActivity: function () {\n      this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            Craft.sendActionRequest('POST', 'elements/recent-activity', {\n              params: {\n                dontExtendSession: 1,\n              },\n              data: {\n                elementType: this.settings.elementType,\n                elementId: this.settings.canonicalId,\n                draftId: this.settings.draftId,\n                siteId: this.settings.siteId,\n                provisional: this.settings.isProvisionalDraft,\n              },\n            })\n              .then(({data}) => {\n                let focusedTooltip = null;\n                if (this.activityTooltips) {\n                  const tooltips = Object.values(this.activityTooltips);\n                  focusedTooltip = tooltips.find(\n                    (t) => t.$trigger[0] === document.activeElement\n                  );\n                }\n\n                this.$activityContainer\n                  .html('')\n                  .attr('role', 'region')\n                  .attr('aria-label', Craft.t('app', 'Recent Activity'));\n\n                if (data.activity.length) {\n                  $('<h2/>', {\n                    class: 'visually-hidden',\n                    text: Craft.t('app', 'Recent Activity'),\n                  }).appendTo(this.$activityContainer);\n                  const $ul = $('<ul/>').appendTo(this.$activityContainer);\n                  for (let i = 0; i < data.activity.length; i++) {\n                    const activity = data.activity[i];\n                    const $li = $('<li/>').appendTo($ul);\n                    const $button = $('<button/>', {\n                      type: 'button',\n                      class: 'activity-btn',\n                      'aria-label': Craft.t('app', '{name} active, more info', {\n                        name: activity.userName,\n                      }),\n                      'aria-expanded': 'false',\n                    }).appendTo($li);\n                    const $thumb = $(activity.userThumb)\n                      .addClass('elementthumb')\n                      .css('z-index', data.activity.length - i)\n                      .appendTo($button);\n                    $thumb.find('img,svg').attr('role', 'presentation');\n                    Craft.cp.elementThumbLoader.load($li);\n                    $thumb.find('title').remove();\n\n                    if (\n                      typeof this.activityTooltips[activity.userId] ===\n                      'undefined'\n                    ) {\n                      this.activityTooltips[activity.userId] =\n                        new Craft.Tooltip($button, activity.message);\n                    } else {\n                      this.activityTooltips[activity.userId].$trigger = $button;\n                      this.activityTooltips[activity.userId].message =\n                        activity.message;\n\n                      // maintain trigger focus\n                      if (\n                        this.activityTooltips[activity.userId] ===\n                        focusedTooltip\n                      ) {\n                        this.activityTooltips[activity.userId].$trigger.focus();\n                      }\n                    }\n                  }\n                }\n\n                // hide any tooltips that are no longer relevant\n                for (let userId of Object.keys(this.activityTooltips)) {\n                  if (\n                    !data.activity.find((activity) => activity.userId == userId)\n                  ) {\n                    this.activityTooltips[userId].hide();\n                  }\n                }\n\n                // if the element has been updated upstream, show a notification about it\n                const elementUpdated =\n                  this.settings.updatedTimestamp &&\n                  this.settings.updatedTimestamp !== data.updatedTimestamp;\n                const canonicalUpdated =\n                  this.settings.canonicalUpdatedTimestamp &&\n                  this.settings.canonicalUpdatedTimestamp !==\n                    data.canonicalUpdatedTimestamp;\n\n                if (elementUpdated || canonicalUpdated) {\n                  const $reloadBtn = Craft.ui.createButton({\n                    label: Craft.t('app', 'Reload'),\n                    spinner: true,\n                  });\n\n                  Craft.cp.displayNotice(\n                    Craft.t('app', 'This {type} has been updated.', {\n                      type:\n                        elementUpdated &&\n                        this.settings.draftId &&\n                        !this.settings.isProvisionalDraft\n                          ? Craft.t('app', 'draft')\n                          : Craft.elementTypeNames[this.settings.elementType]\n                            ? Craft.elementTypeNames[\n                                this.settings.elementType\n                              ][2]\n                            : Craft.t('app', 'element'),\n                    }),\n                    {\n                      details: $reloadBtn,\n                    }\n                  );\n                  $reloadBtn.on('click', () => {\n                    window.location.reload();\n                  });\n                }\n                this.settings.updatedTimestamp = data.updatedTimestamp;\n                this.settings.canonicalUpdatedTimestamp =\n                  data.canonicalUpdatedTimestamp;\n                setTimeout(() => {\n                  this._checkActivity();\n                }, 15000);\n                resolve();\n              })\n              .catch(reject);\n          })\n      );\n    },\n  },\n  {\n    defaults: {\n      additionalSites: [],\n      canCreateDrafts: false,\n      canEditMultipleSites: false,\n      canSave: false,\n      canSaveCanonical: false,\n      elementId: null,\n      canonicalId: null,\n      draftId: null,\n      draftName: null,\n      elementType: null,\n      enablePreview: false,\n      enabled: false,\n      enabledForSite: false,\n      hashedCpEditUrl: null,\n      isLive: false,\n      isProvisionalDraft: false,\n      isUnpublishedDraft: false,\n      previewTargets: [],\n      previewToken: null,\n      revisionId: null,\n      siteId: null,\n      siteStatuses: null,\n      siteToken: null,\n      visibleLayoutElements: {},\n      updatedTimestamp: null,\n      canonicalUpdatedTimestamp: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Editor Slideout\n */\nCraft.ElementEditorSlideout = Craft.CpScreenSlideout.extend(\n  {\n    $element: null,\n\n    init: function (element, settings) {\n      this.$element = $(element);\n\n      settings = Object.assign(\n        {},\n        Craft.ElementEditorSlideout.defaults,\n        settings,\n        {\n          showHeader: true,\n        }\n      );\n      this.base('elements/edit', settings);\n\n      this.on('load', () => {\n        const editor = this.$container.data('elementEditor');\n        if (editor) {\n          editor.on('beforeSubmit', () => {\n            Object.keys(this.settings.saveParams).forEach((name) => {\n              $('<input/>', {\n                class: 'hidden',\n                name: editor.namespaceInputName(name),\n                value: this.settings.saveParams[name],\n              }).appendTo(this.$container);\n            });\n          });\n        }\n      });\n\n      this.on('submit', (ev) => {\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'saveElement',\n            id: ev.response.data.element.id,\n          });\n        }\n\n        // Pass the response data off to onSaveElement() for backwards compatibility\n        if (this.settings.onSaveElement) {\n          const data = Object.assign(\n            {},\n            ev.response.data,\n            ev.response.data.element\n          );\n          delete data.element;\n          delete data.modelName;\n          delete data.message;\n          this.settings.onSaveElement(data);\n        }\n\n        // Refresh Live Preview\n        Craft.Preview.refresh();\n      });\n    },\n\n    getParams: function () {\n      const params = {};\n\n      if (this.settings.elementType) {\n        params.elementType = this.settings.elementType;\n      }\n\n      if (this.settings.elementId) {\n        params.elementId = this.settings.elementId;\n      } else if (this.$element && this.$element.data('id')) {\n        params.elementId = this.$element.data('id');\n      }\n\n      if (this.settings.draftId) {\n        params.draftId = this.settings.draftId;\n      } else if (this.$element && this.$element.data('draft-id')) {\n        params.draftId = this.$element.data('draft-id');\n      } else if (this.settings.revisionId) {\n        params.revisionId = this.settings.revisionId;\n      } else if (this.$element && this.$element.data('revision-id')) {\n        params.revisionId = this.$element.data('revision-id');\n      }\n\n      if (this.settings.siteId) {\n        params.siteId = this.settings.siteId;\n      } else if (this.$element && this.$element.data('site-id')) {\n        params.siteId = this.$element.data('site-id');\n      }\n\n      if (this.settings.prevalidate) {\n        params.prevalidate = 1;\n      }\n\n      return params;\n    },\n\n    handleSubmit: function (ev) {\n      let elementEditor = this.$container.data('elementEditor');\n\n      if (ev.type === 'submit') {\n        elementEditor.handleSubmit(ev);\n      } else {\n        // first, we have to save the draft and then fully save;\n        // otherwise we'll have tab error indicator issues;\n        elementEditor\n          .saveDraft()\n          .then(() => {\n            elementEditor.handleSubmit(ev);\n          })\n          .catch();\n      }\n    },\n  },\n  {\n    defaults: {\n      elementId: null,\n      draftId: null,\n      revisionId: null,\n      elementType: null,\n      siteId: null,\n      prevalidate: false,\n      saveParams: {},\n      onSaveElement: null,\n      validators: [],\n      expandData: [],\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\nCraft.ElementFieldSettings = Garnish.Base.extend({\n  allowMultipleSources: null,\n  $maintainHierarchyField: null,\n  $maintainHierarchyButton: null,\n  $sourcesField: null,\n  $sourceSelect: null,\n  $branchLimitField: null,\n  $maxRelationsField: null,\n  $minRelationsField: null,\n  $viewModeField: null,\n\n  init: function (\n    allowMultipleSources,\n    maintainHierarchyFieldId,\n    sourcesFieldId,\n    branchLimitFieldId,\n    minRelationsFieldId,\n    maxRelationsFieldId,\n    viewModeFieldId\n  ) {\n    this.allowMultipleSources = allowMultipleSources;\n    this.$maintainHierarchyField = $(`#${maintainHierarchyFieldId}`);\n    this.$maintainHierarchyButton = this.$maintainHierarchyField.find('button');\n    this.$sourcesField = $(`#${sourcesFieldId}`);\n    if (!this.allowMultipleSources) {\n      this.$sourceSelect = this.$sourcesField.find('select');\n    }\n    this.$branchLimitField = $(`#${branchLimitFieldId}`);\n    this.$minRelationsField = $(`#${minRelationsFieldId}`);\n    this.$maxRelationsField = $(`#${maxRelationsFieldId}`);\n    this.$viewModeField = $(`#${viewModeFieldId}`);\n\n    this.updateLimitFields();\n    this.addListener(\n      this.$maintainHierarchyButton,\n      'change',\n      'updateLimitFields'\n    );\n\n    if (this.allowMultipleSources) {\n      this.$sourcesField.find('[type=checkbox]').each(\n        function (index, checkbox) {\n          this.addListener(\n            $(checkbox),\n            'change',\n            'updateMaintainHierarchyField'\n          );\n        }.bind(this)\n      );\n    } else {\n      this.addListener(\n        this.$sourceSelect,\n        'change',\n        'updateMaintainHierarchyField'\n      );\n    }\n    this.updateMaintainHierarchyField();\n  },\n\n  updateLimitFields: function () {\n    if (\n      !this.$maintainHierarchyField.hasClass('hidden') &&\n      this.$maintainHierarchyButton.hasClass('on')\n    ) {\n      this.$minRelationsField.addClass('hidden');\n      this.$maxRelationsField.addClass('hidden');\n      this.$branchLimitField.removeClass('hidden');\n      this.$viewModeField.addClass('hidden');\n    } else {\n      this.$branchLimitField.addClass('hidden');\n      this.$minRelationsField.removeClass('hidden');\n      this.$maxRelationsField.removeClass('hidden');\n      this.$viewModeField.removeClass('hidden');\n    }\n  },\n\n  updateMaintainHierarchyField: function () {\n    let showField;\n    if (this.allowMultipleSources) {\n      const $checkedInputs = this.$sourcesField.find(\n        '[type=\"checkbox\"]:checked'\n      );\n      showField =\n        $checkedInputs.length === 1 && $checkedInputs.data('structure-id');\n    } else {\n      showField = this.$sourceSelect\n        .children('option:selected')\n        .data('structure-id');\n    }\n\n    if (showField) {\n      this.$maintainHierarchyField.removeClass('hidden');\n    } else {\n      this.$maintainHierarchyField.addClass('hidden');\n    }\n\n    this.updateLimitFields();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.ElementTableSorter = Garnish.DragSort.extend(\n  {\n    tableView: null,\n\n    _helperMargin: null,\n\n    _$firstRowCells: null,\n    _$titleHelperCell: null,\n\n    _titleHelperCellOuterWidth: null,\n\n    _ancestors: null,\n    _updateAncestorsFrame: null,\n\n    _draggeeLevel: null,\n    _draggeeLevelDelta: null,\n    draggingLastElements: null,\n    _loadingDraggeeLevelDelta: false,\n\n    _targetLevel: null,\n    _targetLevelBounds: null,\n\n    _positionChanged: null,\n\n    /**\n     * Constructor\n     */\n    init: function (tableView, $elements, settings) {\n      this.tableView = tableView;\n\n      this._helperMargin = this.tableView.elementIndex.actions ? 40 : 0;\n\n      settings = $.extend({}, Craft.ElementTableSorter.defaults, settings, {\n        handle: '.move',\n        collapseDraggees: true,\n        singleHelper: true,\n        helperSpacingY: 2,\n        magnetStrength: 4,\n        helper: this.getHelper.bind(this),\n        helperLagBase: 1.5,\n        axis: Garnish.Y_AXIS,\n      });\n\n      this.base($elements, settings);\n    },\n\n    /**\n     * Returns the draggee rows (including any descendent rows).\n     */\n    findDraggee: function () {\n      this._draggeeLevel = this._targetLevel = this._level(this.$targetItem);\n      this._draggeeLevelDelta = 0;\n\n      var $draggee = $(this.$targetItem),\n        $nextRow = this.$targetItem.next();\n\n      while ($nextRow.length) {\n        // See if this row is a descendant of the draggee\n        const nextRowLevel = this._level($nextRow);\n\n        if (nextRowLevel <= this._draggeeLevel) {\n          break;\n        }\n\n        // Is this the deepest descendant we've seen so far?\n        var nextRowLevelDelta = nextRowLevel - this._draggeeLevel;\n\n        if (nextRowLevelDelta > this._draggeeLevelDelta) {\n          this._draggeeLevelDelta = nextRowLevelDelta;\n        }\n\n        // Add it and prep the next row\n        $draggee = $draggee.add($nextRow);\n        $nextRow = $nextRow.next();\n      }\n\n      // Are we dragging the last elements on the page?\n      this.draggingLastElements = !$nextRow.length;\n\n      // Do we have a maxLevels to enforce,\n      // and does it look like this draggee has descendants we don't know about yet?\n      if (\n        this.settings.maxLevels &&\n        this.draggingLastElements &&\n        this.tableView.getMorePending()\n      ) {\n        // Only way to know the true descendant level delta is to ask PHP\n        this._loadingDraggeeLevelDelta = true;\n\n        var data = this._getAjaxBaseData(this.$targetItem);\n\n        Craft.sendActionRequest('POST', 'structures/get-element-level-delta', {\n          data,\n        }).then((response) => {\n          this._loadingDraggeeLevelDelta = false;\n\n          if (this.dragging) {\n            this._draggeeLevelDelta = response.data.delta;\n            this.drag(false);\n          }\n        });\n      }\n\n      return $draggee;\n    },\n\n    /**\n     * Returns the drag helper.\n     */\n    getHelper: function ($helperRow) {\n      var $outerContainer = $(\n          '<div class=\"elements datatablesorthelper\"/>'\n        ).appendTo(Garnish.$bod),\n        $innerContainer = $('<div class=\"tableview\"/>').appendTo(\n          $outerContainer\n        ),\n        $table = $('<table class=\"data\"/>').appendTo($innerContainer),\n        $tbody = $('<tbody/>').appendTo($table);\n\n      $helperRow.appendTo($tbody);\n\n      // Copy the column widths\n      this._$firstRowCells = this.tableView.$elementContainer\n        .children('tr:first')\n        .children();\n      var $helperCells = $helperRow.children();\n\n      for (var i = 0; i < $helperCells.length; i++) {\n        var $helperCell = $($helperCells[i]);\n\n        // Skip the checkbox cell\n        if ($helperCell.hasClass('checkbox-cell')) {\n          $helperCell.remove();\n          continue;\n        }\n\n        // Hard-set the cell widths\n        var $firstRowCell = $(this._$firstRowCells[i]);\n        var width = $firstRowCell[0].getBoundingClientRect().width;\n\n        $firstRowCell.css('width', width + 'px');\n        $helperCell.css('width', width + 'px');\n\n        // Is this the title cell?\n        if (Garnish.hasAttr($firstRowCell, 'data-titlecell')) {\n          this._$titleHelperCell = $helperCell;\n          this._titleHelperCellOuterWidth = width;\n\n          $helperCell.children('div').css(`padding-${Craft.left}`, '24px');\n        }\n      }\n\n      return $outerContainer;\n    },\n\n    /**\n     * Returns whether the draggee can be inserted before a given item.\n     */\n    canInsertBefore: function ($item) {\n      if (this._loadingDraggeeLevelDelta) {\n        return false;\n      }\n\n      return this._getLevelBounds($item.prev(), $item) !== false;\n    },\n\n    /**\n     * Returns whether the draggee can be inserted after a given item.\n     */\n    canInsertAfter: function ($item) {\n      if (this._loadingDraggeeLevelDelta) {\n        return false;\n      }\n\n      return this._getLevelBounds($item, $item.next()) !== false;\n    },\n\n    // Events\n    // -------------------------------------------------------------------------\n\n    /**\n     * On Drag Start\n     */\n    onDragStart: function () {\n      // Get the initial set of ancestors, before the item gets moved\n      this._ancestors = this._getAncestors(\n        this.$targetItem,\n        this._level(this.$targetItem)\n      );\n\n      // Set the initial target level bounds\n      this._setTargetLevelBounds();\n\n      // Check to see if we should load more elements now\n      this.tableView.maybeLoadMore();\n\n      this.base();\n    },\n\n    /**\n     * On Drag\n     */\n    onDrag: function () {\n      this.base();\n      this._updateIndent();\n    },\n\n    /**\n     * On Insertion Point Change\n     */\n    onInsertionPointChange: function () {\n      this._setTargetLevelBounds();\n      this._updateAncestorsBeforeRepaint();\n      this.base();\n    },\n\n    /**\n     * On Drag Stop\n     */\n    onDragStop: function () {\n      this._positionChanged = false;\n      this.base();\n\n      // Update the draggee's padding if the position just changed\n      // ---------------------------------------------------------------------\n\n      if (this._targetLevel != this._draggeeLevel) {\n        var levelDiff = this._targetLevel - this._draggeeLevel;\n\n        for (var i = 0; i < this.$draggee.length; i++) {\n          var $draggee = $(this.$draggee[i]),\n            oldLevel = this._level($draggee),\n            newLevel = oldLevel + levelDiff,\n            padding = 24 + this._getLevelIndent(newLevel);\n          const $structureTextAlternative = $draggee.find(\n            '[data-text-alternative]'\n          );\n          const altText = Craft.t('app', 'Level {num}', {\n            num: newLevel,\n          });\n\n          $draggee.data('level', newLevel);\n          $draggee.find('.element').data('level', newLevel);\n          $draggee\n            .find('> [data-titlecell]:first > div')\n            .css(`padding-${Craft.left}`, padding);\n\n          // Update text alternative\n          $structureTextAlternative.text(altText);\n        }\n\n        this._positionChanged = true;\n      }\n\n      // Keep in mind this could have also been set by onSortChange()\n      if (this._positionChanged) {\n        if (this.settings.structureId) {\n          // Tell the server about the new position\n          // -----------------------------------------------------------------\n\n          const data = this._getAjaxBaseData(this.$draggee);\n\n          // Find the previous sibling/parent, if there is one\n          let $prevRow = this.$draggee.first().prev();\n          let $spinnerRow;\n\n          while ($prevRow.length) {\n            const prevRowLevel = this._level($prevRow);\n\n            if (prevRowLevel == this._targetLevel) {\n              data.prevId = $prevRow.data('id');\n              break;\n            }\n\n            if (prevRowLevel < this._targetLevel) {\n              data.parentId = $prevRow.data('id');\n\n              // Is this row collapsed?\n              const $toggle = $prevRow.find('> th .toggle');\n\n              if (!$toggle.hasClass('expanded')) {\n                // Make it look expanded\n                $toggle.addClass('expanded');\n\n                // Add a temporary row\n                $spinnerRow = this.tableView._createSpinnerRowAfter($prevRow);\n\n                // Remove the target item\n                if (this.tableView.elementSelect) {\n                  this.tableView.elementSelect.removeItems(this.$targetItem);\n                }\n\n                this.removeItems(this.$targetItem);\n                this.$targetItem.remove();\n                this.tableView._totalVisible--;\n              }\n\n              break;\n            }\n\n            $prevRow = $prevRow.prev();\n          }\n\n          Craft.sendActionRequest('POST', 'structures/move-element', {data})\n            .then((response) => {\n              Craft.cp.displaySuccess(Craft.t('app', 'New position saved.'));\n              this.onPositionChange();\n\n              // Were we waiting on this to complete so we can expand the new parent?\n              if ($spinnerRow && $spinnerRow.parent().length) {\n                $spinnerRow.remove();\n                this.tableView._expandElement($toggle, true);\n              }\n\n              // See if we should run any pending tasks\n              Craft.cp.runQueue();\n            })\n            .catch(({response}) => {\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n              this.tableView.elementIndex.updateElements();\n            });\n        }\n      }\n    },\n\n    onSortChange: function () {\n      if (this.tableView.elementSelect) {\n        this.tableView.elementSelect.resetItemOrder();\n      }\n\n      this._positionChanged = true;\n      this.base();\n    },\n\n    onPositionChange: function () {\n      Garnish.requestAnimationFrame(() => {\n        this.trigger('positionChange');\n        this.settings.onPositionChange();\n      });\n    },\n\n    onReturnHelpersToDraggees: function () {\n      this._$firstRowCells.css('width', '');\n\n      // If we were dragging the last elements on the page and ended up loading any additional elements in,\n      // there could be a gap between the last draggee item and whatever now comes after it.\n      // So remove the post-draggee elements and possibly load up the next batch.\n      if (this.draggingLastElements && this.tableView.getMorePending()) {\n        // Update the element index's record of how many items are actually visible\n        this.tableView._totalVisible +=\n          this.newDraggeeIndexes[0] - this.oldDraggeeIndexes[0];\n\n        var $postDraggeeItems = this.$draggee.last().nextAll();\n\n        if ($postDraggeeItems.length) {\n          this.removeItems($postDraggeeItems);\n          $postDraggeeItems.remove();\n          this.tableView.maybeLoadMore();\n        }\n      }\n\n      this.base();\n    },\n\n    /**\n     * Returns the min and max levels that the draggee could occupy between\n     * two given rows, or false if it’s not going to work out.\n     */\n    _getLevelBounds: function ($prevRow, $nextRow) {\n      // Can't go any lower than the next row, if there is one\n      if ($nextRow && $nextRow.length) {\n        this._getLevelBounds._minLevel = this._level($nextRow);\n      } else {\n        this._getLevelBounds._minLevel = 1;\n      }\n\n      // Can't go any higher than the previous row + 1\n      if ($prevRow && $prevRow.length) {\n        this._getLevelBounds._maxLevel = this._level($prevRow) + 1;\n      } else {\n        this._getLevelBounds._maxLevel = 1;\n      }\n\n      // Does this structure have a max level?\n      if (this.settings.maxLevels) {\n        // Make sure it's going to fit at all here\n        if (\n          this._getLevelBounds._minLevel != 1 &&\n          this._getLevelBounds._minLevel + this._draggeeLevelDelta >\n            this.settings.maxLevels\n        ) {\n          return false;\n        }\n\n        // Limit the max level if we have to\n        if (\n          this._getLevelBounds._maxLevel + this._draggeeLevelDelta >\n          this.settings.maxLevels\n        ) {\n          this._getLevelBounds._maxLevel =\n            this.settings.maxLevels - this._draggeeLevelDelta;\n\n          if (this._getLevelBounds._maxLevel < this._getLevelBounds._minLevel) {\n            this._getLevelBounds._maxLevel = this._getLevelBounds._minLevel;\n          }\n        }\n      }\n\n      return {\n        min: this._getLevelBounds._minLevel,\n        max: this._getLevelBounds._maxLevel,\n      };\n    },\n\n    /**\n     * Determines the min and max possible levels at the current draggee's position.\n     */\n    _setTargetLevelBounds: function () {\n      this._targetLevelBounds = this._getLevelBounds(\n        this.$draggee.first().prev(),\n        this.$draggee.last().next()\n      );\n    },\n\n    /**\n     * Determines the target level based on the current mouse position.\n     */\n    _updateIndent: function (forcePositionChange) {\n      // Figure out the target level\n      // ---------------------------------------------------------------------\n\n      // How far has the cursor moved?\n      this._updateIndent._mouseDist = this.realMouseX - this.mousedownX;\n\n      // Flip that if this is RTL\n      if (Craft.orientation === 'rtl') {\n        this._updateIndent._mouseDist *= -1;\n      }\n\n      // What is that in indentation levels?\n      this._updateIndent._indentationDist = Math.round(\n        this._updateIndent._mouseDist / Craft.ElementTableSorter.LEVEL_INDENT\n      );\n\n      // Combine with the original level to get the new target level\n      this._updateIndent._targetLevel =\n        this._draggeeLevel + this._updateIndent._indentationDist;\n\n      // Contain it within our min/max levels\n      if (this._updateIndent._targetLevel < this._targetLevelBounds.min) {\n        this._updateIndent._indentationDist +=\n          this._targetLevelBounds.min - this._updateIndent._targetLevel;\n        this._updateIndent._targetLevel = this._targetLevelBounds.min;\n      } else if (\n        this._updateIndent._targetLevel > this._targetLevelBounds.max\n      ) {\n        this._updateIndent._indentationDist -=\n          this._updateIndent._targetLevel - this._targetLevelBounds.max;\n        this._updateIndent._targetLevel = this._targetLevelBounds.max;\n      }\n\n      // Has the target level changed?\n      if (\n        this._targetLevel !==\n        (this._targetLevel = this._updateIndent._targetLevel)\n      ) {\n        // Target level is changing, so update the ancestors\n        this._updateAncestorsBeforeRepaint();\n      }\n\n      // Update the UI\n      // ---------------------------------------------------------------------\n\n      // How far away is the cursor from the exact target level distance?\n      this._updateIndent._targetLevelMouseDiff =\n        this._updateIndent._mouseDist -\n        this._updateIndent._indentationDist *\n          Craft.ElementTableSorter.LEVEL_INDENT;\n\n      // What's the magnet impact of that?\n      this._updateIndent._magnetImpact = Math.round(\n        this._updateIndent._targetLevelMouseDiff / 15\n      );\n\n      // Put it on a leash\n      if (\n        Math.abs(this._updateIndent._magnetImpact) >\n        Craft.ElementTableSorter.MAX_GIVE\n      ) {\n        this._updateIndent._magnetImpact =\n          (this._updateIndent._magnetImpact > 0 ? 1 : -1) *\n          Craft.ElementTableSorter.MAX_GIVE;\n      }\n\n      // Apply the new margin/width\n      this._updateIndent._closestLevelMagnetIndent =\n        this._getLevelIndent(this._targetLevel) +\n        this._updateIndent._magnetImpact;\n      this.helpers[0].css(\n        `margin-${Craft.left}`,\n        this._updateIndent._closestLevelMagnetIndent + this._helperMargin\n      );\n      this._$titleHelperCell.css(\n        'width',\n        this._titleHelperCellOuterWidth -\n          this._updateIndent._closestLevelMagnetIndent\n      );\n    },\n\n    /**\n     * Returns the indent size for a given level\n     */\n    _getLevelIndent: function (level) {\n      return (level - 1) * Craft.ElementTableSorter.LEVEL_INDENT;\n    },\n\n    /**\n     * Returns the base data that should be sent with StructureController Ajax requests.\n     */\n    _getAjaxBaseData: function ($row) {\n      return {\n        structureId: this.settings.structureId,\n        elementId: $row.data('id'),\n        siteId: $row.find('.element:first').data('site-id'),\n      };\n    },\n\n    /**\n     * Returns a row's ancestor rows\n     */\n    _getAncestors: function ($row, targetLevel) {\n      this._getAncestors._ancestors = [];\n\n      if (targetLevel != 0) {\n        this._getAncestors._level = targetLevel;\n        this._getAncestors._$prevRow = $row.prev();\n\n        while (this._getAncestors._$prevRow.length) {\n          if (\n            this._level(this._getAncestors._$prevRow) <\n            this._getAncestors._level\n          ) {\n            this._getAncestors._ancestors.unshift(this._getAncestors._$prevRow);\n            this._getAncestors._level = this._level(\n              this._getAncestors._$prevRow\n            );\n\n            // Did we just reach the top?\n            if (this._getAncestors._level == 0) {\n              break;\n            }\n          }\n\n          this._getAncestors._$prevRow = this._getAncestors._$prevRow.prev();\n        }\n      }\n\n      return this._getAncestors._ancestors;\n    },\n\n    _level: function ($row) {\n      return $row.data('level') || 1;\n    },\n\n    /**\n     * Prepares to have the ancestors updated before the screen is repainted.\n     */\n    _updateAncestorsBeforeRepaint: function () {\n      if (this._updateAncestorsFrame) {\n        Garnish.cancelAnimationFrame(this._updateAncestorsFrame);\n      }\n\n      this._updateAncestorsFrame = Garnish.requestAnimationFrame(\n        this._updateAncestors.bind(this)\n      );\n    },\n\n    _updateAncestors: function () {\n      this._updateAncestorsFrame = null;\n\n      // Update the old ancestors\n      // -----------------------------------------------------------------\n\n      for (\n        this._updateAncestors._i = 0;\n        this._updateAncestors._i < this._ancestors.length;\n        this._updateAncestors._i++\n      ) {\n        this._updateAncestors._$ancestor =\n          this._ancestors[this._updateAncestors._i];\n\n        // One less descendant now\n        this._updateAncestors._$ancestor.data(\n          'descendants',\n          this._updateAncestors._$ancestor.data('descendants') - 1\n        );\n\n        // Is it now childless?\n        if (this._updateAncestors._$ancestor.data('descendants') == 0) {\n          // Remove its toggle\n          this._updateAncestors._$ancestor.find('> th .toggle:first').remove();\n        }\n      }\n\n      // Update the new ancestors\n      // -----------------------------------------------------------------\n\n      this._updateAncestors._newAncestors = this._getAncestors(\n        this.$targetItem,\n        this._targetLevel\n      );\n\n      for (\n        this._updateAncestors._i = 0;\n        this._updateAncestors._i < this._updateAncestors._newAncestors.length;\n        this._updateAncestors._i++\n      ) {\n        this._updateAncestors._$ancestor =\n          this._updateAncestors._newAncestors[this._updateAncestors._i];\n\n        // One more descendant now\n        this._updateAncestors._$ancestor.data(\n          'descendants',\n          this._updateAncestors._$ancestor.data('descendants') + 1\n        );\n\n        // Is this its first child?\n        if (this._updateAncestors._$ancestor.data('descendants') == 1) {\n          // Create its toggle\n          const ancestorTitle = this._updateAncestors._$ancestor.data('title');\n          $(\n            '<button class=\"toggle expanded\" type=\"button\" aria-expanded=\"true\" title=\"' +\n              Craft.t('app', 'Show/hide children') +\n              '\" aria-label=\"' +\n              Craft.t('app', 'Show {title} children', {title: ancestorTitle}) +\n              '\"></button>'\n          ).insertAfter(\n            this._updateAncestors._$ancestor.find('> th .move:first')\n          );\n        }\n      }\n\n      this._ancestors = this._updateAncestors._newAncestors;\n\n      delete this._updateAncestors._i;\n      delete this._updateAncestors._$ancestor;\n      delete this._updateAncestors._newAncestors;\n    },\n  },\n  {\n    HELPER_MARGIN: 0,\n    LEVEL_INDENT: 48,\n    MAX_GIVE: 22,\n\n    defaults: {\n      structureId: null,\n      maxLevels: 1,\n      onPositionChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Base Element Index View\n */\nCraft.ElementThumbLoader = Garnish.Base.extend(\n  {\n    queue: null,\n    workers: [],\n\n    init: function () {\n      this.queue = [];\n\n      for (let i = 0; i < 3; i++) {\n        this.workers.push(new Craft.ElementThumbLoader.Worker(this));\n      }\n    },\n\n    load: function ($elements) {\n      // Only immediately load the visible images\n      let $thumbs = $elements.find('.thumb[data-sizes]');\n      for (let i = 0; i < $thumbs.length; i++) {\n        let $thumb = $thumbs.eq(i);\n        if ($thumb.is(':visible')) {\n          this.addToQueue($thumb[0]);\n        } else {\n          let key = 'thumb' + Math.floor(Math.random() * 1000000);\n          Craft.ElementThumbLoader.invisibleThumbs[key] = [this, $thumb];\n          Garnish.$doc.on(\n            `scroll.${key}`,\n            {\n              $thumb: $thumb,\n              key: key,\n            },\n            (ev) => {\n              if ($thumb) {\n                delete Craft.ElementThumbLoader.invisibleThumbs[ev.data.key];\n                this.addToQueue(ev.data.$thumb[0]);\n              }\n            }\n          );\n        }\n      }\n    },\n\n    addToQueue: function (thumb) {\n      this.queue.push(thumb);\n\n      // See if there are any inactive workers\n      for (let i = 0; i < this.workers.length; i++) {\n        if (!this.workers[i].active) {\n          this.workers[i].loadNext();\n        }\n      }\n    },\n\n    destroy: function () {\n      for (let i = 0; i < this.workers.length; i++) {\n        this.workers[i].destroy();\n      }\n\n      this.base();\n    },\n  },\n  {\n    invisibleThumbs: {},\n    retryAll: function () {\n      for (let key in Craft.ElementThumbLoader.invisibleThumbs) {\n        let [queue, $thumb] = Craft.ElementThumbLoader.invisibleThumbs[key];\n        delete Craft.ElementThumbLoader.invisibleThumbs[key];\n        queue.load($thumb.parent());\n      }\n    },\n  }\n);\n\nCraft.ElementThumbLoader.Worker = Garnish.Base.extend({\n  loader: null,\n  active: false,\n  container: null,\n  _interval: null,\n  _timeout: null,\n\n  init: function (loader) {\n    this.loader = loader;\n  },\n\n  activate: function () {\n    if (this.active) {\n      return;\n    }\n    this.active = true;\n    // keep track of whether the current container is actually in the DOM\n    this.clearInterval();\n    this._interval = setInterval(() => {\n      this.loadNextIfRemoved();\n    }, 500);\n  },\n\n  deactivate: function () {\n    if (!this.active) {\n      return;\n    }\n    this.active = false;\n    this.clearInterval();\n    this.clearTimeout();\n  },\n\n  clearInterval: function () {\n    if (this._interval) {\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n  },\n\n  clearTimeout: function () {\n    if (this._timeout) {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    }\n  },\n\n  loadNext: function () {\n    this.clearTimeout();\n\n    this.container = this.loader.queue.shift();\n    if (typeof this.container === 'undefined') {\n      this.deactivate();\n      return;\n    }\n\n    if (this.loadNextIfRemoved()) {\n      return;\n    }\n\n    const $container = $(this.container);\n    if ($container.find('img').length) {\n      this.loadNext();\n      return;\n    }\n\n    this.activate();\n\n    // give up after 30 seconds\n    this._timeout = setTimeout(() => {\n      this.loadNext();\n    }, 30000);\n\n    const $img = $('<img/>', {\n      sizes: $container.attr('data-sizes'),\n      srcset: $container.attr('data-srcset'),\n      alt: $container.attr('data-alt') || '',\n    });\n    this.addListener($img, 'load,abort,error', 'loadNext');\n    $img.appendTo($container);\n    picturefill({\n      elements: [$img[0]],\n    });\n  },\n\n  loadNextIfRemoved() {\n    if (this.container && !document.body.contains(this.container)) {\n      this.loadNext();\n      return true;\n    }\n    return false;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Elevated Session Form\n */\nCraft.ElevatedSessionForm = Garnish.Base.extend({\n  $form: null,\n  inputs: null,\n\n  init: function (form, inputs) {\n    this.$form = $(form);\n\n    // Only check specific inputs?\n    if (typeof inputs !== 'undefined') {\n      this.inputs = [];\n      inputs = $.makeArray(inputs);\n\n      for (var i = 0; i < inputs.length; i++) {\n        var $inputs = $(inputs[i]);\n\n        for (var j = 0; j < $inputs.length; j++) {\n          var $input = $inputs.eq(j);\n\n          this.inputs.push({\n            input: $input,\n            val: Garnish.getInputPostVal($input),\n          });\n        }\n      }\n    }\n\n    this.addListener(this.$form, 'submit', 'handleFormSubmit');\n  },\n\n  handleFormSubmit: function (ev) {\n    // Ignore if we're in the middle of getting the elevated session timeout\n    if (Craft.elevatedSessionManager.fetchingTimeout) {\n      ev.preventDefault();\n      ev.stopImmediatePropagation();\n      return;\n    }\n\n    // Are we only interested in certain inputs?\n    if (this.inputs) {\n      var inputsChanged = false;\n      var $input;\n\n      for (var i = 0; i < this.inputs.length; i++) {\n        $input = this.inputs[i].input;\n        // Is this a password input?\n        if ($input.data('passwordInput')) {\n          $input = $input.data('passwordInput').$currentInput;\n        }\n\n        // Has this input's value changed?\n        if (Garnish.getInputPostVal($input) !== this.inputs[i].val) {\n          inputsChanged = true;\n          break;\n        }\n      }\n\n      if (!inputsChanged) {\n        // No need to interrupt the submit\n        return;\n      }\n    }\n\n    // Prevent the form from submitting until the user has an elevated session\n    ev.preventDefault();\n    ev.stopImmediatePropagation();\n    Craft.elevatedSessionManager.requireElevatedSession(\n      this.submitForm.bind(this)\n    );\n  },\n\n  submitForm: function () {\n    // Don't let handleFormSubmit() interrupt this time\n    this.disable();\n    this.$form.trigger('submit');\n    this.enable();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Entry index class\n */\nCraft.EntryIndex = Craft.BaseElementIndex.extend({\n  publishableSections: null,\n  $newEntryBtnGroup: null,\n  $newEntryBtn: null,\n\n  init: function (elementType, $container, settings) {\n    this.publishableSections = [];\n    this.on('selectSource', this.updateButton.bind(this));\n    this.on('selectSite', this.updateButton.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  afterInit: function () {\n    // Find which of the visible sections the user has permission to create new entries in\n    const includedSections = this.$sources\n      .toArray()\n      .map((source) => $(source).data('handle'))\n      .filter((handle) => !!handle);\n    this.publishableSections = Craft.publishableSections.filter((section) =>\n      includedSections.includes(section.handle)\n    );\n\n    this.base();\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific section in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultSectionHandle !== 'undefined'\n    ) {\n      if (defaultSectionHandle === 'singles') {\n        return 'singles';\n      }\n\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('handle') === defaultSectionHandle) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateButton: function () {\n    if (!this.$source) {\n      return;\n    }\n\n    let sectionHandle, entryTypeHandle;\n\n    // Get the handle of the selected source\n    if (this.$source.data('key') === 'singles') {\n      sectionHandle = 'singles';\n    } else {\n      sectionHandle = this.$source.data('handle');\n      entryTypeHandle = this.$source.data('entry-type');\n    }\n\n    // Update the New Entry button\n    // ---------------------------------------------------------------------\n\n    if (this.publishableSections.length) {\n      // Remove the old button, if there is one\n      if (this.$newEntryBtnGroup) {\n        this.$newEntryBtnGroup.remove();\n      }\n\n      // Determine if they are viewing a section that they have permission to create entries in\n      const selectedSection = this.publishableSections.find(\n        (s) => s.handle === sectionHandle\n      );\n\n      this.$newEntryBtnGroup = $('<div class=\"btngroup submit\" data-wrapper/>');\n      let $menuBtn;\n      const menuId = 'new-entry-menu-' + Craft.randomString(10);\n\n      // If they are, show a primary \"New entry\" button, and a dropdown of the other sections (if any).\n      // Otherwise only show a menu button\n      if (selectedSection) {\n        const visibleLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New {type}', {\n                type: Craft.t('app', 'entry'),\n              })\n            : Craft.t('app', 'New {section} entry', {\n                section: selectedSection.name,\n              });\n\n        const ariaLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New entry in the {section} section', {\n                section: selectedSection.name,\n              })\n            : visibleLabel;\n\n        // In index contexts, the button functions as a link\n        // In non-index contexts, the button triggers a slideout editor\n        const role = this.settings.context === 'index' ? 'link' : null;\n\n        this.$newEntryBtn = Craft.ui\n          .createButton({\n            label: visibleLabel,\n            ariaLabel: ariaLabel,\n            spinner: true,\n            role: role,\n          })\n          .addClass('submit add icon')\n          .appendTo(this.$newEntryBtnGroup);\n\n        this.addListener(this.$newEntryBtn, 'click mousedown', (ev) => {\n          // If this is the element index, check for Ctrl+clicks and middle button clicks\n          if (\n            this.settings.context === 'index' &&\n            ((ev.type === 'click' && Garnish.isCtrlKeyPressed(ev)) ||\n              (ev.type === 'mousedown' && ev.originalEvent.button === 1))\n          ) {\n            const params = {};\n            if (entryTypeHandle) {\n              params.type = entryTypeHandle;\n            }\n            window.open(\n              Craft.getUrl(`entries/${selectedSection.handle}/new`, params)\n            );\n          } else if (ev.type === 'click') {\n            this._createEntry(selectedSection.id, entryTypeHandle);\n          }\n        });\n\n        if (this.publishableSections.length > 1) {\n          $menuBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn submit menubtn btngroup-btn-last',\n            'aria-controls': menuId,\n            'data-disclosure-trigger': '',\n            'aria-label': Craft.t('app', 'New entry, choose a section'),\n          }).appendTo(this.$newEntryBtnGroup);\n        }\n      } else {\n        this.$newEntryBtn = $menuBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'New {type}', {\n              type: Craft.t('app', 'entry'),\n            }),\n            ariaLabel: Craft.t('app', 'New entry, choose a section'),\n            spinner: true,\n          })\n          .addClass('submit add icon menubtn btngroup-btn-last')\n          .attr('aria-controls', menuId)\n          .attr('data-disclosure-trigger', '')\n          .appendTo(this.$newEntryBtnGroup);\n      }\n\n      this.addButton(this.$newEntryBtnGroup);\n\n      if ($menuBtn) {\n        const $menuContainer = $('<div/>', {\n          id: menuId,\n          class: 'menu menu--disclosure',\n        }).appendTo(this.$newEntryBtnGroup);\n        const $ul = $('<ul/>').appendTo($menuContainer);\n\n        for (const section of this.publishableSections) {\n          const anchorRole =\n            this.settings.context === 'index' ? 'link' : 'button';\n          if (\n            (this.settings.context === 'index' &&\n              $.inArray(this.siteId, section.sites) !== -1) ||\n            (this.settings.context !== 'index' && section !== selectedSection)\n          ) {\n            const $li = $('<li/>').appendTo($ul);\n            const $a = $('<a/>', {\n              role: anchorRole === 'button' ? 'button' : null,\n              href: Craft.getUrl(`entries/${section.handle}/new`),\n              type: anchorRole === 'button' ? 'button' : null,\n              text: Craft.t('app', 'New {section} entry', {\n                section: section.name,\n              }),\n            }).appendTo($li);\n            this.addListener($a, 'activate', () => {\n              $menuBtn.data('trigger').hide();\n              this._createEntry(section.id);\n            });\n\n            if (anchorRole === 'button') {\n              this.addListener($a, 'keydown', (event) => {\n                if (event.keyCode === Garnish.SPACE_KEY) {\n                  event.preventDefault();\n                  $menuBtn.data('trigger').hide();\n                  this._createEntry(section.id);\n                }\n              });\n            }\n          }\n        }\n\n        new Garnish.DisclosureMenu($menuBtn);\n      }\n    }\n\n    // Update the URL if we're on the Entries index\n    // ---------------------------------------------------------------------\n\n    if (this.settings.context === 'index') {\n      let uri = 'entries';\n\n      if (sectionHandle) {\n        uri += '/' + sectionHandle;\n      }\n\n      Craft.setPath(uri);\n    }\n  },\n\n  _createEntry: function (sectionId, entryTypeHandle) {\n    if (this.$newEntryBtn.hasClass('loading')) {\n      console.warn('New entry creation already in progress.');\n      return;\n    }\n\n    // Find the section\n    const section = this.publishableSections.find((s) => s.id === sectionId);\n\n    if (!section) {\n      throw `Invalid section ID: ${sectionId}`;\n    }\n\n    this.$newEntryBtn.addClass('loading');\n\n    Craft.sendActionRequest('POST', 'entries/create', {\n      data: {\n        siteId: this.siteId,\n        section: section.handle,\n        type: entryTypeHandle,\n      },\n    })\n      .then(({data}) => {\n        if (this.settings.context === 'index') {\n          document.location.href = Craft.getUrl(data.cpEditUrl, {fresh: 1});\n        } else {\n          const slideout = Craft.createElementEditor(this.elementType, {\n            siteId: this.siteId,\n            elementId: data.entry.id,\n            draftId: data.entry.draftId,\n            params: {\n              fresh: 1,\n            },\n          });\n          slideout.on('submit', () => {\n            this.clearSearch();\n            this.setSelectedSortAttribute('dateCreated', 'desc');\n            this.selectElementAfterUpdate(data.entry.id);\n            this.updateElements();\n          });\n        }\n      })\n      .finally(() => {\n        this.$newEntryBtn.removeClass('loading');\n      });\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\Entry', Craft.EntryIndex);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\nCraft.FieldLayoutDesigner = Garnish.Base.extend(\n  {\n    $container: null,\n    $innerContainer: null,\n    $configInput: null,\n    $tabContainer: null,\n    $newTabBtn: null,\n    $libraryContainer: null,\n    $selectedLibrary: null,\n    $fieldLibrary: null,\n    $uiLibrary: null,\n    $uiLibraryElements: null,\n    $fieldSearch: null,\n    $clearFieldSearchBtn: null,\n    $fieldGroups: null,\n    $fields: null,\n    $createFieldBtn: null,\n\n    tabGrid: null,\n    elementDrag: null,\n\n    _config: null,\n    _$selectedFields: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n      this.setSettings(settings, Craft.FieldLayoutDesigner.defaults);\n\n      this.$configInput = this.$container.children('input[data-config-input]');\n      this._config = JSON.parse(this.$configInput.val());\n      if (!this._config.tabs) {\n        this._config.tabs = [];\n      }\n\n      this._fieldHandles = {};\n\n      this.$innerContainer = this.$container.children('.fld-container');\n      const $workspace = this.$innerContainer.children('.fld-workspace');\n      this.$tabContainer = $workspace.children('.fld-tabs');\n      this.$newTabBtn = $workspace.children('.fld-new-tab-btn');\n      this.$libraryContainer = this.$innerContainer.children('.fld-library');\n\n      this.$fieldLibrary = this.$selectedLibrary =\n        this.$libraryContainer.children('.fld-field-library');\n      let $fieldSearchContainer = this.$fieldLibrary.children('.search');\n      this.$fieldSearch = $fieldSearchContainer.children('input');\n      this.$clearFieldSearchBtn = $fieldSearchContainer.children('.clear');\n      this.$fieldGroups = this.$libraryContainer.find('.fld-field-group');\n      this.$fields = this.$fieldGroups.children('.fld-element');\n      this.$uiLibrary = this.$libraryContainer.children('.fld-ui-library');\n      this.$uiLibraryElements = this.$uiLibrary.children();\n\n      // Set up the layout grids\n      this.tabGrid = new Craft.Grid(this.$tabContainer, {\n        itemSelector: '.fld-tab',\n        minColWidth: 24 * 11,\n        fillMode: 'grid',\n        snapToGrid: 24,\n      });\n\n      let $tabs = this.$tabContainer.children();\n      for (let i = 0; i < $tabs.length; i++) {\n        this.initTab($($tabs[i]));\n      }\n\n      this.elementDrag = new Craft.FieldLayoutDesigner.ElementDrag(this);\n      this.initLibraryElements(this.$libraryContainer.find('.fld-element'));\n\n      if (this.settings.customizableTabs) {\n        this.tabDrag = new Craft.FieldLayoutDesigner.TabDrag(this);\n\n        this.addListener(this.$newTabBtn, 'activate', 'addTab');\n      }\n\n      // Set up the library\n      if (this.settings.customizableUi) {\n        const $libraryPicker = this.$libraryContainer.children('.btngroup');\n        new Craft.Listbox($libraryPicker, {\n          onChange: ($selectedOption) => {\n            const library = $selectedOption.data('library');\n            switch (library) {\n              case 'field':\n                this.$fieldLibrary.removeClass('hidden');\n                this.$uiLibrary.addClass('hidden');\n                this.$createFieldBtn.removeClass('hidden');\n                break;\n              case 'ui':\n                this.$fieldLibrary.addClass('hidden');\n                this.$uiLibrary.removeClass('hidden');\n                this.$createFieldBtn.addClass('hidden');\n                break;\n            }\n          },\n        });\n      }\n\n      this.addListener(this.$fieldSearch, 'input', () => {\n        this.updateFieldSearchResults();\n      });\n\n      this.addListener(this.$fieldSearch, 'keydown', (ev) => {\n        switch (ev.keyCode) {\n          case Garnish.ESC_KEY:\n            this.$fieldSearch.val('').trigger('input');\n            break;\n          case Garnish.RETURN_KEY:\n            // they most likely don't want to submit the form from here\n            ev.preventDefault();\n            break;\n        }\n      });\n\n      // Clear the search when the X button is clicked\n      this.addListener(this.$clearFieldSearchBtn, 'click', () => {\n        this.$fieldSearch.val('').trigger('input');\n      });\n\n      this.refreshSelectedFields();\n\n      // Add the “New Field” button\n      this.$createFieldBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'New field'),\n          class: 'mt-m fullwidth add icon dashed',\n        })\n        .appendTo(this.$libraryContainer);\n\n      this.addListener(this.$createFieldBtn, 'activate', async () => {\n        this.createField();\n      });\n    },\n\n    updateFieldSearchResults() {\n      const val = this.$fieldSearch.val().toLowerCase().replace(/['\"]/g, '');\n      if (!val) {\n        this.$fieldLibrary.find('.filtered').removeClass('filtered');\n        this.$clearFieldSearchBtn.addClass('hidden');\n        return;\n      }\n\n      this.$clearFieldSearchBtn.removeClass('hidden');\n      const $matches = this.$fields\n        .filter(`[data-keywords*=\"${val}\"]`)\n        .add(\n          this.$fieldGroups\n            .filter(`[data-name*=\"${val}\"]`)\n            .children('.fld-element')\n        )\n        .removeClass('filtered');\n      this.$fields.not($matches).addClass('filtered');\n\n      // hide any groups that don't have any results\n      for (let i = 0; i < this.$fieldGroups.length; i++) {\n        const $group = this.$fieldGroups.eq(i);\n        if ($group.find('.fld-element:not(.hidden):not(.filtered)').length) {\n          $group.removeClass('filtered');\n        } else {\n          $group.addClass('filtered');\n        }\n      }\n    },\n\n    initTab: function ($tab) {\n      return new Craft.FieldLayoutDesigner.Tab(this, $tab);\n    },\n\n    removeFieldByHandle: function (attribute) {\n      this.$fields\n        .filter(`[data-attribute=\"${attribute}\"]:first`)\n        .removeClass('hidden')\n        .closest('.fld-field-group')\n        .removeClass('hidden');\n    },\n\n    addTab: function () {\n      if (!this.settings.customizableTabs) {\n        return;\n      }\n\n      let defaultValue = '';\n      if (this.tabGrid.$items.length === 0) {\n        defaultValue = Craft.t('app', 'Content');\n      }\n      const name = Craft.escapeHtml(\n        prompt(Craft.t('app', 'Give your tab a name.'), defaultValue)\n      );\n\n      if (!name) {\n        return;\n      }\n\n      const menuId = `menu-${Math.floor(Math.random() * 1000000)}`;\n      const $tab = $(`\n<div class=\"fld-tab\">\n  <div class=\"tabs\">\n    <div class=\"tab sel draggable\">\n      <span>${name}</span>\n    </div>\n  </div>\n  <div class=\"fld-tabcontent\">\n    <button class=\"btn add icon dashed fullwidth fld-add-btn\" type=\"button\" aria-controls=\"${menuId}\">\n      ${Craft.t('app', 'Add')}\n    </button>\n    <div id=\"${menuId}\" class=\"menu menu--disclosure fld-library-menu\"></div>\n  </div>\n</div>\n`);\n      // keep it before the resize object\n      const $lastTab = this.$tabContainer.children('.fld-tab:last');\n      if ($lastTab.length) {\n        $tab.insertAfter($lastTab);\n      } else {\n        $tab.prependTo(this.$tabContainer);\n      }\n\n      this.tabGrid.addItems($tab);\n      this.tabDrag.addItems($tab);\n\n      const tab = this.initTab($tab);\n      tab.updatePositionInConfig();\n    },\n\n    get config() {\n      return this._config;\n    },\n\n    set config(config) {\n      this._config = config;\n      this.$configInput.val(JSON.stringify(config));\n    },\n\n    updateConfig: function (callback) {\n      const config = callback(this.config);\n      if (config !== false) {\n        this.config = config;\n      }\n    },\n\n    refreshSelectedFields: function () {\n      this._$selectedFields = this.$tabContainer.find('.fld-field');\n    },\n\n    refreshLibraryFields() {\n      this.$fields = this.$fieldGroups.children('.fld-element');\n\n      for (let i = 0; i < this.$fieldGroups.length; i++) {\n        const $fieldGroup = this.$fieldGroups.eq(i);\n        const $fields = $fieldGroup.children('.fld-element');\n        $fields\n          .sort((a, b) => {\n            return $(a).data('ui-label') > $(b).data('ui-label') ? 1 : -1;\n          })\n          .appendTo($fieldGroup);\n      }\n\n      this.updateFieldSearchResults();\n    },\n\n    hasHandle: function (handle) {\n      for (let i = 0; i < this._$selectedFields.length; i++) {\n        const element = this._$selectedFields.eq(i).data('fld-element');\n        const elementHandle = element.config.handle || element.attribute;\n        if (handle === elementHandle) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    createField() {\n      const slideout = new Craft.CpScreenSlideout('fields/edit-field');\n\n      slideout.on('submit', async ({response}) => {\n        // add the library selector\n        const $selector = $(response.data.selectorHtml);\n        this.$fieldGroups.last().append($selector).removeClass('hidden');\n        this.refreshLibraryFields();\n        this.initLibraryElements($selector);\n\n        // refresh all instances of this field\n        const $fields = designer.$tabContainer.find(\n          `.fld-field[data-id=${this.fieldId}]`\n        );\n        for (let i = 0; i < $fields.length; i++) {\n          $fields.eq(i).data('fld-element')?.refresh();\n        }\n      });\n    },\n\n    initLibraryElements($elements) {\n      this.elementDrag.addItems($elements);\n\n      this.addListener($elements, 'activate', (ev) => {\n        // if the library is in a disclosure menu, go ahead and add it to the tab\n        const $parent = this.$libraryContainer.parent();\n        if ($parent.is('.fld-library-menu')) {\n          const disclosureMenu = $parent.data('disclosureMenu');\n          const $libraryElement = $(ev.currentTarget);\n          const $element =\n            this.cloneLibraryElementForSelection($libraryElement);\n          const tab = disclosureMenu.$trigger\n            .closest('.fld-tab')\n            .data('fld-tab');\n          $element.insertBefore(disclosureMenu.$trigger);\n          const element = tab.initElement($element);\n          element.updatePositionInConfig();\n          this.tabGrid.refreshCols(true);\n          disclosureMenu.hide();\n        }\n      });\n    },\n\n    cloneLibraryElementForSelection($libraryElement) {\n      // Create a new element based on that one\n      const $element = $libraryElement.clone().removeClass('unused');\n\n      if (!Garnish.hasAttr($libraryElement, 'data-is-multi-instance')) {\n        // Hide the library element\n        $libraryElement\n          .css({visibility: 'inherit', display: 'field'})\n          .addClass('hidden');\n\n        // Hide the group too?\n        if ($libraryElement.siblings('.fld-field:not(.hidden)').length === 0) {\n          $libraryElement.closest('.fld-field-group').addClass('hidden');\n        }\n      }\n\n      // Add it to the element dragger\n      this.elementDrag.addItems($element);\n\n      return $element;\n    },\n  },\n  {\n    defaults: {\n      elementType: null,\n      customizableTabs: true,\n      customizableUi: true,\n    },\n\n    async createSlideout(data, js) {\n      const $body = $('<div/>', {class: 'fld-element-settings-body'});\n      $('<div/>', {class: 'fields', html: data.settingsHtml}).appendTo($body);\n      const $footer = $('<div/>', {class: 'fld-element-settings-footer'});\n      $('<div/>', {class: 'flex-grow'}).appendTo($footer);\n      const $cancelBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Close'),\n          spinner: true,\n        })\n        .appendTo($footer);\n      Craft.ui\n        .createSubmitButton({\n          class: 'secondary',\n          label: Craft.t('app', 'Apply'),\n          spinner: true,\n        })\n        .appendTo($footer);\n      const $contents = $body.add($footer);\n\n      const slideout = new Craft.Slideout($contents, {\n        containerElement: 'form',\n        containerAttributes: {\n          action: '',\n          method: 'post',\n          novalidate: '',\n          class: 'fld-element-settings',\n        },\n      });\n      slideout.on('open', () => {\n        // Hold off a sec until it's positioned...\n        Garnish.requestAnimationFrame(() => {\n          // Focus on the first text input\n          slideout.$container.find('.text:first').trigger('focus');\n        });\n      });\n\n      $cancelBtn.on('click', () => {\n        slideout.close();\n      });\n\n      if (data.headHtml) {\n        await Craft.appendHeadHtml(data.headHtml);\n      }\n      if (data.bodyHtml) {\n        await Craft.appendBodyHtml(data.bodyHtml);\n      }\n      if (js) {\n        eval(js);\n      }\n\n      Craft.initUiElements(slideout.$container);\n\n      return slideout;\n    },\n  }\n);\n\nCraft.FieldLayoutDesigner.Tab = Garnish.Base.extend({\n  designer: null,\n  uid: null,\n  $container: null,\n  $addBtn: null,\n  slideout: null,\n  destroyed: false,\n\n  init: function (designer, $container) {\n    this.designer = designer;\n    this.$container = $container;\n    this.$container.data('fld-tab', this);\n    this.uid = this.$container.data('uid');\n\n    // New tab?\n    if (!this.uid) {\n      this.uid = Craft.uuid();\n      this.config = {\n        uid: this.uid,\n        name: this.$container.find('.tabs .tab span').text(),\n        elements: [],\n      };\n    }\n\n    if (this.designer.settings.customizableTabs) {\n      this.createMenu();\n    }\n\n    // initialize the elements\n    const $tabContent = this.$container.children('.fld-tabcontent');\n    this.$addBtn = $tabContent.children('.fld-add-btn');\n\n    const disclosureMenu = this.$addBtn\n      .disclosureMenu({\n        position: 'below',\n      })\n      .data('disclosureMenu');\n    disclosureMenu.on('beforeShow', () => {\n      this.designer.$libraryContainer.appendTo(disclosureMenu.$container);\n    });\n    disclosureMenu.on('hide', () => {\n      this.designer.$libraryContainer.appendTo(this.designer.$innerContainer);\n    });\n\n    const $elements = $tabContent.children().not(this.$addBtn);\n\n    for (let i = 0; i < $elements.length; i++) {\n      this.initElement($($elements[i]));\n    }\n  },\n\n  createMenu: function () {\n    const $tab = this.$container.find('.tabs .tab');\n    const menuId = `actionmenu${Math.floor(Math.random() * 1000000)}`;\n    const $btn = $('<button/>', {\n      type: 'button',\n      class: 'btn action-btn',\n      'data-disclosure-trigger': 'true',\n      'aria-controls': menuId,\n      'aria-haspopup': 'true',\n      'aria-label': Craft.t('app', 'Actions'),\n      title: Craft.t('app', 'Actions'),\n    }).appendTo($tab);\n    const $menu = $('<div/>', {\n      id: menuId,\n      class: 'menu menu--disclosure',\n      'data-disclosure-menu': 'true',\n    }).appendTo($tab);\n\n    const disclosureMenu = $btn.disclosureMenu().data('disclosureMenu');\n\n    disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Settings'),\n        icon: 'gear',\n        onActivate: () => {\n          this.createSettings();\n        },\n      },\n      disclosureMenu.addGroup()\n    );\n\n    const moveUl = disclosureMenu.addGroup();\n    const moveLeftBtn = disclosureMenu.addItem(\n      {\n        label:\n          Craft.orientation === 'ltr'\n            ? Craft.t('app', 'Move to the left')\n            : Craft.t('app', 'Move to the right'),\n        icon: Craft.orientation === 'ltr' ? 'arrow-left' : 'arrow-right',\n        onActivate: () => {\n          this.moveLeft();\n        },\n      },\n      moveUl\n    );\n\n    const moveRightBtn = disclosureMenu.addItem(\n      {\n        label:\n          Craft.orientation === 'ltr'\n            ? Craft.t('app', 'Move to the right')\n            : Craft.t('app', 'Move to the left'),\n        icon: Craft.orientation === 'ltr' ? 'arrow-right' : 'arrow-left',\n        onActivate: () => {\n          this.moveRight();\n        },\n      },\n      moveUl\n    );\n\n    disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Remove'),\n        icon: 'xmark',\n        destructive: true,\n        onActivate: () => {\n          this.destroy();\n        },\n      },\n      disclosureMenu.addGroup()\n    );\n\n    disclosureMenu.on('show', () => {\n      disclosureMenu.toggleItem(\n        moveLeftBtn,\n        this.$container.prev('.fld-tab').length\n      );\n      disclosureMenu.toggleItem(\n        moveRightBtn,\n        this.$container.next('.fld-tab').length\n      );\n    });\n  },\n\n  async createSettings() {\n    let data;\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/render-layout-component-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.designer.config,\n            elementType: this.designer.settings.elementType,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.settingsNamespace = data.namespace;\n    this.slideout = await Craft.FieldLayoutDesigner.createSlideout(data);\n\n    this.slideout.$container.on('submit', (ev) => {\n      ev.preventDefault();\n      this.applySettings();\n    });\n    this.slideout.on('close', () => {\n      this.slideout.destroy();\n      this.slideout = null;\n    });\n  },\n\n  applySettings: function () {\n    if (!this.slideout.$container.find('[name$=\"[name]\"]').val()) {\n      Craft.cp.displayError(Craft.t('app', 'You must specify a tab name.'));\n      return;\n    }\n\n    // update the UI\n    let $submitBtn = this.slideout.$container\n      .find('button[type=submit]')\n      .addClass('loading');\n\n    const config = $.extend({}, this.config);\n    delete config.elements;\n\n    Craft.sendActionRequest('POST', 'fields/apply-layout-tab-settings', {\n      data: {\n        uid: this.uid,\n        layoutConfig: this.designer.config,\n        elementType: this.designer.settings.elementType,\n        config,\n        settingsNamespace: this.settingsNamespace,\n        settings: this.slideout.$container.serialize(),\n      },\n    })\n      .then((response) => {\n        this.updateConfig((config) =>\n          $.extend(response.data.config, {elements: config.elements})\n        );\n        const $label = this.$container.find('.tabs .tab');\n        const $actionBtn = $label.children('button').detach();\n        $label.html(response.data.labelHtml).append($actionBtn);\n        this.slideout.close();\n      })\n      .catch((e) => {\n        Craft.cp.displayError();\n        console.error(e);\n      })\n      .finally(() => {\n        $submitBtn.removeClass('loading');\n        this.slideout.close();\n      });\n  },\n\n  moveLeft() {\n    let $prev = this.$container.prev('.fld-tab');\n    if ($prev.length) {\n      this.$container.insertBefore($prev);\n      this.updatePositionInConfig();\n    }\n  },\n\n  moveRight() {\n    let $next = this.$container.next('.fld-tab');\n    if ($next.length) {\n      this.$container.insertAfter($next);\n      this.updatePositionInConfig();\n    }\n  },\n\n  initElement: function ($element) {\n    return new Craft.FieldLayoutDesigner.Element(this, $element);\n  },\n\n  get index() {\n    return this.designer.config.tabs.findIndex((c) => c.uid === this.uid);\n  },\n\n  get config() {\n    if (!this.uid) {\n      throw 'Tab is missing its UID';\n    }\n    let config = this.designer.config.tabs.find((c) => c.uid === this.uid);\n    if (!config) {\n      config = {\n        uid: this.uid,\n        elements: [],\n      };\n      this.config = config;\n    }\n    return config;\n  },\n\n  set config(config) {\n    if (this.destroyed) {\n      return;\n    }\n\n    // Is the name changing?\n    if (config.name && config.name !== this.config.name) {\n      this.$container.find('.tabs .tab span').text(config.name);\n    }\n\n    const designerConfig = this.designer.config;\n    const index = this.index;\n    if (index !== -1) {\n      designerConfig.tabs[index] = config;\n    } else {\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-tab')\n      );\n      designerConfig.tabs.splice(newIndex, 0, config);\n    }\n    this.designer.config = designerConfig;\n  },\n\n  updateConfig: function (callback) {\n    if (this.destroyed) {\n      return;\n    }\n\n    const config = callback(this.config);\n    if (config !== false) {\n      this.config = config;\n    }\n  },\n\n  updatePositionInConfig: function () {\n    if (this.destroyed) {\n      return;\n    }\n\n    this.designer.updateConfig((config) => {\n      const tabConfig = this.config;\n      const oldIndex = this.index;\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-tab')\n      );\n      if (oldIndex !== -1) {\n        config.tabs.splice(oldIndex, 1);\n      }\n      config.tabs.splice(newIndex, 0, tabConfig);\n      return config;\n    });\n  },\n\n  destroy: function () {\n    if (this.destroyed) {\n      return;\n    }\n\n    this.destroyed = true;\n\n    this.designer.updateConfig((config) => {\n      const index = this.index;\n      if (index === -1) {\n        return false;\n      }\n      config.tabs.splice(index, 1);\n      return config;\n    });\n\n    // First destroy the tab's elements\n    let $elements = this.$container.find('.fld-element');\n    for (let i = 0; i < $elements.length; i++) {\n      $elements.eq(i).data('fld-element').destroy();\n    }\n\n    this.designer.tabGrid.removeItems(this.$container);\n    this.designer.tabDrag.removeItems(this.$container);\n    this.$container.remove();\n    this.designer.refreshSelectedFields();\n\n    this.base();\n  },\n});\n\nCraft.FieldLayoutDesigner.Element = Garnish.Base.extend({\n  tab: null,\n  $container: null,\n\n  uid: null,\n  isMandatory: false,\n  isMultiInstance: null,\n  isField: false,\n  attribute: null,\n  requirable: false,\n  thumbable: false,\n  previewable: false,\n  hasCustomWidth: false,\n  hasSettings: false,\n  settingsNamespace: null,\n  slideout: null,\n  defaultHandle: null,\n  fieldId: null,\n  fieldsWithErrors: null,\n\n  init: function (tab, $container) {\n    this.tab = tab;\n    this.$container = $container;\n    this.uid = $container.data('uid');\n    this.fieldId = $container.data('id');\n\n    this.fieldsWithErrors = [];\n\n    // New element?\n    const isNew = !this.uid;\n    if (isNew) {\n      this.uid = Craft.uuid();\n      this.config = $.extend($container.data('config'), {uid: this.uid});\n    }\n\n    this.initUi();\n\n    if (isNew && this.isField) {\n      // Find a unique handle\n      let handle = this.defaultHandle;\n      let i = 1;\n      while (this.tab.designer.hasHandle(handle)) {\n        i++;\n        handle = this.defaultHandle + i;\n      }\n      if (handle !== this.defaultHandle) {\n        this.config = $.extend({}, this.config, {handle: handle});\n        $container.find('.fld-attribute-label').text(handle);\n      }\n      this.tab.designer.refreshSelectedFields();\n    }\n\n    // cleanup\n    $container.attr('data-keywords', null);\n  },\n\n  initUi: function () {\n    this.$container.data('fld-element', this);\n\n    this.isMandatory = Garnish.hasAttr(this.$container, 'data-mandatory');\n    this.isField = this.$container.hasClass('fld-field');\n    this.isMultiInstance = Garnish.hasAttr(\n      this.$container,\n      'data-is-multi-instance'\n    );\n\n    if (this.isField) {\n      this.requirable = Garnish.hasAttr(this.$container, 'data-requirable');\n      this.thumbable = Garnish.hasAttr(this.$container, 'data-thumbable');\n      this.previewable = Garnish.hasAttr(this.$container, 'data-previewable');\n      this.attribute = this.$container.data('attribute');\n      this.defaultHandle = this.$container.data('default-handle');\n    }\n\n    this.hasCustomWidth =\n      this.tab.designer.settings.customizableUi &&\n      Garnish.hasAttr(this.$container, 'data-has-custom-width');\n\n    if (this.hasCustomWidth) {\n      let widthSlider = new Craft.SlidePicker(this.config.width || 100, {\n        min: 25,\n        max: 100,\n        step: 25,\n        valueLabel: (width) => {\n          return Craft.t('app', '{pct} width', {pct: `${width}%`});\n        },\n        onChange: (width) => {\n          this.updateConfig((config) => {\n            config.width = width;\n            return config;\n          });\n        },\n      });\n      widthSlider.$container.appendTo(this.$container);\n    }\n\n    // create the action menu\n    const menuId = `actionmenu${Math.floor(Math.random() * 1000000)}`;\n    const $actionBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn action-btn',\n      'data-disclosure-trigger': 'true',\n      'aria-controls': menuId,\n      'aria-haspopup': 'true',\n      'aria-label': Craft.t('app', 'Actions'),\n      title: Craft.t('app', 'Actions'),\n    }).appendTo(this.$container);\n    $('<div/>', {\n      id: menuId,\n      class: 'menu menu--disclosure',\n      'data-disclosure-menu': 'true',\n    }).appendTo(this.$container);\n    const disclosureMenu = $actionBtn.disclosureMenu().data('disclosureMenu');\n\n    let makeRequiredBtn,\n      dropRequiredBtn,\n      makeThumbnailBtn,\n      dropThumbnailBtn,\n      showInCardsBtn,\n      omitFromCardsBtn;\n\n    this.hasSettings = Garnish.hasAttr(this.$container, 'data-has-settings');\n\n    if (this.hasSettings) {\n      disclosureMenu.addItem({\n        label: Craft.t('app', 'Settings'),\n        icon: 'gear',\n        onActivate: () => {\n          this.createSettings();\n        },\n      });\n\n      this.addListener(this.$container, 'dblclick', () => {\n        this.createSettings();\n      });\n    }\n\n    if (this.fieldId) {\n      disclosureMenu.addItem({\n        label: Craft.t('app', 'Edit field'),\n        icon: 'pencil',\n        onActivate: () => {\n          this.showFieldEditor();\n        },\n      });\n    }\n\n    if (this.requirable || this.thumbable || this.previewable) {\n      const actionUl = disclosureMenu.addGroup();\n\n      if (this.requirable) {\n        makeRequiredBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Make required'),\n            icon: 'asterisk',\n            iconColor: 'rose',\n            onActivate: () => {\n              this.makeRequired();\n            },\n          },\n          actionUl\n        );\n\n        dropRequiredBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Make optional'),\n            icon: 'asterisk-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.dropRequired();\n            },\n          },\n          actionUl\n        );\n      }\n\n      if (this.thumbable) {\n        makeThumbnailBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Use for element thumbnails'),\n            icon: 'image',\n            iconColor: 'violet',\n            onActivate: () => {\n              this.makeThumbnail();\n            },\n          },\n          actionUl\n        );\n        dropThumbnailBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Don’t use for element thumbnails'),\n            icon: 'image-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.dropThumbnail();\n            },\n          },\n          actionUl\n        );\n      }\n\n      if (this.previewable) {\n        showInCardsBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Show in element cards'),\n            icon: 'eye',\n            iconColor: 'blue',\n            onActivate: () => {\n              this.showInCards();\n            },\n          },\n          actionUl\n        );\n        omitFromCardsBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Don’t show in element cards'),\n            icon: 'eye-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.omitFromCards();\n            },\n          },\n          actionUl\n        );\n      }\n    }\n\n    const moveGroup = disclosureMenu.addGroup();\n    const moveUpBtn = disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Move up'),\n        icon: 'arrow-up',\n        onActivate: () => {\n          this.moveUp();\n        },\n      },\n      moveGroup\n    );\n    const moveDownBtn = disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Move down'),\n        icon: 'arrow-down',\n        onActivate: () => {\n          this.moveDown();\n        },\n      },\n      moveGroup\n    );\n\n    if (!this.isMandatory) {\n      disclosureMenu.addItem(\n        {\n          label: Craft.t('app', 'Remove'),\n          icon: 'xmark',\n          destructive: true,\n          onActivate: () => {\n            this.destroy();\n          },\n        },\n        disclosureMenu.addGroup()\n      );\n    }\n\n    disclosureMenu.on('show', () => {\n      if (this.requirable) {\n        disclosureMenu.toggleItem(makeRequiredBtn, !this.config.required);\n        disclosureMenu.toggleItem(dropRequiredBtn, this.config.required);\n      }\n\n      if (this.thumbable) {\n        disclosureMenu.toggleItem(\n          makeThumbnailBtn,\n          !this.config.providesThumbs\n        );\n        disclosureMenu.toggleItem(dropThumbnailBtn, this.config.providesThumbs);\n      }\n\n      if (this.previewable) {\n        disclosureMenu.toggleItem(showInCardsBtn, !this.config.includeInCards);\n        disclosureMenu.toggleItem(omitFromCardsBtn, this.config.includeInCards);\n      }\n\n      disclosureMenu.toggleItem(\n        moveUpBtn,\n        this.$container.prev('.fld-element').length\n      );\n      disclosureMenu.toggleItem(\n        moveDownBtn,\n        this.$container.next('.fld-element').length\n      );\n    });\n  },\n\n  async createSettings() {\n    let data;\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/render-layout-component-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.tab.designer.config,\n            elementType: this.tab.designer.settings.elementType,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.settingsNamespace = data.namespace;\n    this.slideout = await Craft.FieldLayoutDesigner.createSlideout(data);\n\n    this.slideout.$container.on('submit', (ev) => {\n      ev.preventDefault();\n      this.applySettings();\n    });\n    this.slideout.on('close', () => {\n      this.slideout.destroy();\n      this.slideout = null;\n    });\n\n    const $fieldsContainer = this.slideout.$container.find('.fields:first');\n\n    if (this.isField) {\n      const $handleInput = $fieldsContainer.find('input[name$=\"[handle]\"]');\n      $handleInput.val(this.config.handle || '');\n    }\n\n    this.trigger('createSettings');\n  },\n\n  async applySettings() {\n    // update the UI\n    let $submitBtn = this.slideout.$container\n      .find('button[type=submit]')\n      .addClass('loading');\n\n    try {\n      await this.applyConfig(() => this.config, true);\n    } finally {\n      $submitBtn.removeClass('loading');\n    }\n  },\n\n  async showFieldEditor() {\n    const slideout = new Craft.CpScreenSlideout('fields/edit-field', {\n      params: {\n        fieldId: this.fieldId,\n        multiInstanceTypesOnly: this.isMultiInstance ? 1 : 0,\n      },\n    });\n\n    slideout.on('submit', async ({response}) => {\n      const designer = this.tab.designer;\n\n      // refresh the library selector\n      const $oldSelector = designer.$fieldLibrary.find(\n        `.fld-field[data-id=${this.fieldId}]`\n      );\n      const $newSelector = $(response.data.selectorHtml);\n      $oldSelector.replaceWith($newSelector);\n      designer.refreshLibraryFields();\n      designer.elementDrag.removeItems($oldSelector);\n      designer.elementDrag.addItems($newSelector);\n\n      // refresh all instances of this field\n      const $fields = designer.$tabContainer.find(\n        `.fld-field[data-id=${this.fieldId}]`\n      );\n      for (let i = 0; i < $fields.length; i++) {\n        $fields.eq(i).data('fld-element')?.refresh();\n      }\n    });\n  },\n\n  async makeRequired() {\n    await this.applyConfig((config) => {\n      config.required = true;\n      return config;\n    });\n  },\n\n  async dropRequired() {\n    await this.applyConfig((config) => {\n      config.required = false;\n      return config;\n    });\n  },\n\n  async makeThumbnail() {\n    await this.applyConfig((config) => {\n      config.providesThumbs = true;\n      return config;\n    });\n  },\n\n  async dropThumbnail() {\n    await this.applyConfig((config) => {\n      config.providesThumbs = false;\n      return config;\n    });\n  },\n\n  async showInCards() {\n    await this.applyConfig((config) => {\n      config.includeInCards = true;\n      return config;\n    });\n  },\n\n  async omitFromCards() {\n    await this.applyConfig((config) => {\n      config.includeInCards = false;\n      return config;\n    });\n  },\n\n  moveUp() {\n    const $prev = this.$container.prev('.fld-element');\n    if ($prev.length) {\n      this.$container.insertBefore($prev);\n      this.updatePositionInConfig();\n    }\n  },\n\n  moveDown() {\n    const $next = this.$container.next('.fld-element');\n    if ($next.length) {\n      this.$container.insertAfter($next);\n      this.updatePositionInConfig();\n    }\n  },\n\n  async applyConfig(callback, withSettings = false) {\n    const config = callback(this.config);\n    if (config === false) {\n      return;\n    }\n\n    this.fieldsWithErrors.forEach(($field) => {\n      Craft.ui.clearErrorsFromField($field);\n    });\n\n    let data;\n\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/apply-layout-element-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.tab.designer.config,\n            elementType: this.tab.designer.settings.elementType,\n            config,\n            settingsNamespace: this.settingsNamespace,\n            settings: withSettings\n              ? this.slideout.$container.serialize()\n              : null,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      let errors = e?.response?.data?.errors;\n\n      if (errors) {\n        Object.entries(errors).forEach(([name, fieldErrors]) => {\n          const $field = this.slideout.$container.find(\n            `[data-error-key=\"${name}\"]`\n          );\n          if ($field) {\n            Craft.ui.addErrorsToField($field, fieldErrors);\n            this.fieldsWithErrors.push($field);\n          }\n        });\n      }\n\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.config = data.config;\n    const $oldContainer = this.$container;\n    const $newContainer = $(data.selectorHtml);\n    this.$container.replaceWith($newContainer);\n    this.$container = $newContainer;\n    this.initUi();\n\n    const designer = this.tab.designer;\n    designer.refreshSelectedFields();\n    designer.elementDrag.removeItems($oldContainer);\n    designer.elementDrag.addItems($newContainer);\n    designer.tabGrid.refreshCols(true);\n\n    if (this.slideout) {\n      this.slideout.close();\n      this.slideout.destroy();\n      this.slideout = null;\n    }\n\n    if (this.config.providesThumbs) {\n      // make sure this is the only one\n      const $fields = this.tab.designer.$tabContainer.find('.fld-field');\n      for (let i = 0; i < $fields.length; i++) {\n        const $field = $fields.eq(i);\n        const element = $field.data('fld-element');\n        if (element && element !== this && element.config.providesThumbs) {\n          element.applyConfig((config) => {\n            config.providesThumbs = false;\n            return config;\n          });\n        }\n      }\n    }\n  },\n\n  async refresh() {\n    await this.applyConfig((config) => config);\n  },\n\n  get index() {\n    const tabConfig = this.tab.config;\n    if (typeof tabConfig === 'undefined') {\n      return -1;\n    }\n    return tabConfig.elements.findIndex((c) => c.uid === this.uid);\n  },\n\n  get config() {\n    if (!this.uid) {\n      throw 'Tab is missing its UID';\n    }\n    let config = this.tab.config.elements.find((c) => c.uid === this.uid);\n    if (!config) {\n      config = {\n        uid: this.uid,\n      };\n      this.config = config;\n    }\n    return config;\n  },\n\n  set config(config) {\n    const tabConfig = this.tab.config;\n    const index = this.index;\n    if (index !== -1) {\n      tabConfig.elements[index] = config;\n    } else {\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-element')\n      );\n      tabConfig.elements.splice(newIndex, 0, config);\n    }\n    this.tab.config = tabConfig;\n  },\n\n  updateConfig: function (callback) {\n    const config = callback(this.config);\n    if (config !== false) {\n      this.config = config;\n    }\n  },\n\n  updatePositionInConfig: function () {\n    this.tab.updateConfig((config) => {\n      const elementConfig = this.config;\n      const oldIndex = this.index;\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-element')\n      );\n      if (oldIndex !== -1) {\n        config.elements.splice(oldIndex, 1);\n      }\n      config.elements.splice(newIndex, 0, elementConfig);\n      return config;\n    });\n  },\n\n  destroy: function () {\n    this.tab.updateConfig((config) => {\n      const index = this.index;\n      if (index === -1) {\n        return false;\n      }\n      config.elements.splice(index, 1);\n      return config;\n    });\n\n    this.tab.designer.elementDrag.removeItems(this.$container);\n    this.$container.remove();\n\n    if (this.isField) {\n      this.tab.designer.refreshSelectedFields();\n\n      if (!this.isMultiInstance) {\n        this.tab.designer.removeFieldByHandle(this.defaultHandle);\n      }\n    }\n\n    this.base();\n  },\n});\n\nCraft.FieldLayoutDesigner.BaseDrag = Garnish.Drag.extend({\n  designer: null,\n  $insertion: null,\n  showingInsertion: false,\n  $caboose: null,\n\n  /**\n   * Constructor\n   */\n  init: function (designer, settings) {\n    this.designer = designer;\n    this.base(this.findItems(), settings);\n  },\n\n  /**\n   * On Drag Start\n   */\n  onDragStart: function () {\n    this.base();\n\n    // Create the insertion\n    this.$insertion = this.createInsertion();\n\n    // Add the caboose\n    this.$caboose = this.createCaboose();\n    this.$items = $().add(this.$items.add(this.$caboose));\n\n    Garnish.$bod.addClass('dragging');\n  },\n\n  removeCaboose: function () {\n    this.$items = this.$items.not(this.$caboose);\n    this.$caboose.remove();\n  },\n\n  swapDraggeeWithInsertion: function () {\n    this.$insertion.insertBefore(this.$draggee);\n    this.$draggee.detach();\n    this.$items = $().add(this.$items.not(this.$draggee).add(this.$insertion));\n    this.showingInsertion = true;\n  },\n\n  swapInsertionWithDraggee: function () {\n    this.$insertion.replaceWith(this.$draggee);\n    this.$items = $().add(this.$items.not(this.$insertion).add(this.$draggee));\n    this.showingInsertion = false;\n  },\n\n  /**\n   * Sets the item midpoints up front so we don't have to keep checking on every mouse move\n   */\n  setMidpoints: function () {\n    for (let i = 0; i < this.$items.length; i++) {\n      let $item = $(this.$items[i]);\n      let offset = $item.offset();\n\n      // Skip library elements\n      if ($item.hasClass('unused')) {\n        continue;\n      }\n\n      $item.data('midpoint', {\n        left: offset.left + $item.outerWidth() / 2,\n        top: offset.top + $item.outerHeight() / 2,\n      });\n    }\n  },\n\n  /**\n   * Returns the closest item to the cursor.\n   */\n  getClosestItem: function () {\n    this.getClosestItem._closestItem = null;\n    this.getClosestItem._closestItemMouseDiff = null;\n\n    for (\n      this.getClosestItem._i = 0;\n      this.getClosestItem._i < this.$items.length;\n      this.getClosestItem._i++\n    ) {\n      this.getClosestItem._$item = $(this.$items[this.getClosestItem._i]);\n\n      this.getClosestItem._midpoint =\n        this.getClosestItem._$item.data('midpoint');\n      if (!this.getClosestItem._midpoint) {\n        continue;\n      }\n\n      this.getClosestItem._mouseDiff = Garnish.getDist(\n        this.getClosestItem._midpoint.left,\n        this.getClosestItem._midpoint.top,\n        this.mouseX,\n        this.mouseY\n      );\n\n      if (\n        this.getClosestItem._closestItem === null ||\n        this.getClosestItem._mouseDiff <\n          this.getClosestItem._closestItemMouseDiff\n      ) {\n        this.getClosestItem._closestItem = this.getClosestItem._$item[0];\n        this.getClosestItem._closestItemMouseDiff =\n          this.getClosestItem._mouseDiff;\n      }\n    }\n\n    return this.getClosestItem._closestItem;\n  },\n\n  checkForNewClosestItem: function () {\n    // Is there a new closest item?\n    this.checkForNewClosestItem._closestItem = this.getClosestItem();\n\n    if (this.checkForNewClosestItem._closestItem === this.$insertion[0]) {\n      return;\n    }\n\n    if (\n      this.showingInsertion &&\n      $.inArray(this.$insertion[0], this.$items) <\n        $.inArray(this.checkForNewClosestItem._closestItem, this.$items) &&\n      $.inArray(this.checkForNewClosestItem._closestItem, this.$caboose) === -1\n    ) {\n      this.$insertion.insertAfter(this.checkForNewClosestItem._closestItem);\n    } else {\n      this.$insertion.insertBefore(this.checkForNewClosestItem._closestItem);\n    }\n\n    // we only want to do it all if there's at least one tab in the layout\n    if (this.designer.tabGrid.$items.length > 0) {\n      this.$items = $().add(this.$items.add(this.$insertion));\n      this.showingInsertion = true;\n      this.designer.tabGrid.refreshCols(true);\n      this.setMidpoints();\n    }\n  },\n\n  /**\n   * On Drag Stop\n   */\n  onDragStop: function () {\n    if (this.showingInsertion) {\n      this.swapInsertionWithDraggee();\n    }\n\n    this.removeCaboose();\n\n    this.designer.tabGrid.refreshCols(true);\n\n    // return the helpers to the draggees\n    let offset = this.$draggee.offset();\n    if (!offset || (offset.top === 0 && offset.left === 0)) {\n      this.$draggee\n        .css({\n          display: this.draggeeDisplay,\n          visibility: 'visible',\n          opacity: 0,\n        })\n        .velocity({opacity: 1}, Garnish.FX_DURATION);\n      this.helpers[0].velocity({opacity: 0}, Garnish.FX_DURATION, () => {\n        this._showDraggee();\n      });\n    } else {\n      this.returnHelpersToDraggees();\n    }\n\n    this.base();\n\n    Garnish.$bod.removeClass('dragging');\n  },\n});\n\nCraft.FieldLayoutDesigner.TabDrag = Craft.FieldLayoutDesigner.BaseDrag.extend({\n  /**\n   * Constructor\n   */\n  init: function (designer) {\n    let settings = {\n      handle: '.tab',\n    };\n\n    this.base(designer, settings);\n  },\n\n  findItems: function () {\n    return this.designer.$tabContainer.find('> div.fld-tab');\n  },\n\n  /**\n   * On Drag Start\n   */\n  onDragStart: function () {\n    this.base();\n    this.swapDraggeeWithInsertion();\n    this.setMidpoints();\n  },\n\n  swapDraggeeWithInsertion: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$draggee);\n    this.designer.tabGrid.addItems(this.$insertion);\n  },\n\n  swapInsertionWithDraggee: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$insertion);\n    this.designer.tabGrid.addItems(this.$draggee);\n  },\n\n  /**\n   * On Drag\n   */\n  onDrag: function () {\n    this.checkForNewClosestItem();\n    this.base();\n  },\n\n  /**\n   * On Drag Stop\n   */\n  onDragStop: function () {\n    this.base();\n\n    // \"show\" the tab, but make it invisible\n    this.$draggee.css({\n      display: this.draggeeDisplay,\n      visibility: 'hidden',\n    });\n\n    this.$draggee.data('fld-tab').updatePositionInConfig();\n  },\n\n  /**\n   * Creates the caboose\n   */\n  createCaboose: function () {\n    let $caboose = $('<div class=\"fld-tab fld-tab-caboose\"/>').appendTo(\n      this.designer.$tabContainer\n    );\n    this.designer.tabGrid.addItems($caboose);\n    return $caboose;\n  },\n\n  /**\n   * Removes the caboose\n   */\n  removeCaboose: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$caboose);\n  },\n\n  /**\n   * Creates the insertion\n   */\n  createInsertion: function () {\n    let $tab = this.$draggee.find('.tab');\n\n    return $(`\n<div class=\"fld-tab fld-insertion\" style=\"height: ${this.$draggee.height()}px;\">\n  <div class=\"tabs\"><div class=\"tab sel draggable\" style=\"width: ${$tab.outerWidth()}px; height: ${\n    $tab.outerHeight() + 2\n  }px;\"></div></div>\n  <div class=\"fld-tabcontent\" style=\"height: ${\n    this.$draggee.find('.fld-tabcontent').height() - 2\n  }px;\"></div>\n</div>\n`);\n  },\n});\n\nCraft.FieldLayoutDesigner.ElementDrag =\n  Craft.FieldLayoutDesigner.BaseDrag.extend({\n    draggingLibraryElement: false,\n    draggingField: false,\n    draggingMultiInstanceElement: false,\n    originalTab: null,\n\n    /**\n     * On Drag Start\n     */\n    onDragStart: function () {\n      this.base();\n\n      // Are we dragging an element from the library?\n      this.draggingLibraryElement = this.$draggee.hasClass('unused');\n\n      // Is it a field?\n      this.draggingField = this.$draggee.hasClass('fld-field');\n\n      // Can the element have multiple instances?\n      this.draggingMultiInstanceElement = Garnish.hasAttr(\n        this.$draggee,\n        'data-is-multi-instance'\n      );\n\n      // keep UI elements visible\n      if (this.draggingLibraryElement && this.draggingMultiInstanceElement) {\n        this.$draggee.css({\n          display: this.draggeeDisplay,\n          visibility: 'visible',\n        });\n      }\n\n      // Swap the draggee with the insertion if dragging a selected item\n      if (!this.draggingLibraryElement) {\n        this.originalTab = this.$draggee.closest('.fld-tab').data('fld-tab');\n        this.swapDraggeeWithInsertion();\n      } else {\n        this.originalTab = null;\n      }\n\n      this.setMidpoints();\n    },\n\n    /**\n     * On Drag\n     */\n    onDrag: function () {\n      if (this.isDraggeeMandatory() || this.isHoveringOverTab()) {\n        this.checkForNewClosestItem();\n      } else if (this.showingInsertion) {\n        this.$insertion.remove();\n        this.$items = $().add(this.$items.not(this.$insertion));\n        this.showingInsertion = false;\n        this.designer.tabGrid.refreshCols(true);\n        this.setMidpoints();\n      }\n\n      this.base();\n    },\n\n    isDraggeeMandatory: function () {\n      return Garnish.hasAttr(this.$draggee, 'data-mandatory');\n    },\n\n    isHoveringOverTab: function () {\n      for (let i = 0; i < this.designer.tabGrid.$items.length; i++) {\n        if (\n          Garnish.hitTest(\n            this.mouseX,\n            this.mouseY,\n            this.designer.tabGrid.$items.eq(i)\n          )\n        ) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    findItems: function () {\n      // Return all of the in-use layout elements. (We'll add the library elements via initLibraryElement().)\n      return this.designer.$tabContainer.find('.fld-element');\n    },\n\n    /**\n     * Creates the caboose\n     */\n    createCaboose: function () {\n      let $caboose = $();\n      let $fieldContainers = this.designer.$tabContainer.find(\n        '> .fld-tab > .fld-tabcontent'\n      );\n\n      for (let i = 0; i < $fieldContainers.length; i++) {\n        $caboose = $caboose.add(\n          $('<div/>').insertBefore(\n            $fieldContainers.eq(i).children('.fld-add-btn')\n          )\n        );\n      }\n\n      return $caboose;\n    },\n\n    /**\n     * Creates the insertion\n     */\n    createInsertion: function () {\n      return $(\n        `<div class=\"fld-element fld-insertion\" style=\"height: ${this.$draggee.outerHeight()}px;\"/>`\n      );\n    },\n\n    /**\n     * On Drag Stop\n     */\n    onDragStop: function () {\n      let showingInsertion = this.showingInsertion;\n      if (showingInsertion) {\n        if (this.draggingLibraryElement) {\n          // Clone the element nad set this.$draggee to the clone, as if we were dragging that all along\n          this.$draggee = this.designer.cloneLibraryElementForSelection(\n            this.$draggee\n          );\n        }\n      } else if (!this.draggingLibraryElement) {\n        let $libraryElement = this.draggingField\n          ? this.designer.$fields.filter(\n              `[data-attribute=\"${this.$draggee.data('attribute')}\"]:first`\n            )\n          : this.designer.$uiLibraryElements.filter(\n              `[data-type=\"${this.$draggee.data('type')}\"]:first`\n            );\n\n        if (this.draggingField) {\n          // show the field in the library\n          $libraryElement.removeClass('hidden');\n          $libraryElement.closest('.fld-field-group').removeClass('hidden');\n        }\n\n        // Destroy the original element\n        this.$draggee.data('fld-element').destroy();\n\n        // Set this.$draggee to the library element, as if we were dragging that all along\n        this.$draggee = $libraryElement;\n      }\n\n      this.base();\n\n      this.$draggee.css({\n        display: this.draggeeDisplay,\n        visibility:\n          this.draggingField || showingInsertion ? 'hidden' : 'visible',\n      });\n\n      if (showingInsertion) {\n        const tab = this.$draggee.closest('.fld-tab').data('fld-tab');\n        let element;\n\n        if (this.draggingLibraryElement) {\n          element = tab.initElement(this.$draggee);\n        } else {\n          element = this.$draggee.data('fld-element');\n\n          // New tab?\n          if (tab !== this.originalTab) {\n            const config = element.config;\n\n            this.originalTab.updateConfig((config) => {\n              const index = element.index;\n              if (index === -1) {\n                return false;\n              }\n              config.elements.splice(index, 1);\n              return config;\n            });\n\n            this.$draggee.data('fld-element').tab = tab;\n            element.config = config;\n          }\n        }\n\n        element.updatePositionInConfig();\n      }\n    },\n  });\n","/** global: Craft */\n/** global: Garnish */\n/**\n * FieldToggle\n */\nCraft.FieldToggle = Garnish.Base.extend({\n  $toggle: null,\n  targetPrefix: null,\n  targetSelector: null,\n  reverseTargetSelector: null,\n\n  _$target: null,\n  _$reverseTarget: null,\n  type: null,\n\n  init: function (toggle) {\n    this.$toggle = $(toggle);\n\n    // Is this already a field toggle?\n    if (this.$toggle.data('fieldtoggle')) {\n      console.warn('Double-instantiating a field toggle on an element');\n      this.$toggle.data('fieldtoggle').destroy();\n    }\n\n    this.$toggle.data('fieldtoggle', this);\n\n    this.type = this.getType();\n\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this.targetPrefix = this.$toggle.attr('data-target-prefix') || '';\n    } else {\n      this.targetSelector = this.normalizeTargetSelector(\n        this.$toggle.data('target')\n      );\n      this.reverseTargetSelector = this.normalizeTargetSelector(\n        this.$toggle.data('reverse-target')\n      );\n    }\n\n    this.findTargets();\n\n    switch (this.type) {\n      case 'link':\n        this.addListener(this.$toggle, 'click', 'onToggleChange');\n        break;\n      case 'fieldset':\n        this.addListener(\n          this.$toggle.find('input'),\n          'change',\n          'onToggleChange'\n        );\n        break;\n      default:\n        this.addListener(this.$toggle, 'change', 'onToggleChange');\n        this.onToggleChange();\n    }\n  },\n\n  normalizeTargetSelector: function (selector) {\n    if (selector && !selector.match(/^[#\\.]/)) {\n      selector = '#' + selector;\n    }\n\n    return selector;\n  },\n\n  getType: function () {\n    let nodeName = this.$toggle.prop('nodeName');\n    if (\n      (nodeName === 'INPUT' && this.$toggle.attr('type') === 'checkbox') ||\n      this.$toggle.attr('role') === 'checkbox' ||\n      this.$toggle.attr('role') === 'switch'\n    ) {\n      return 'checkbox';\n    }\n\n    switch (nodeName) {\n      case 'SELECT':\n        if (Garnish.hasAttr(this.$toggle, 'data-boolean-menu')) {\n          return 'booleanMenu';\n        }\n        return 'select';\n      case 'A':\n        return 'link';\n      default:\n        return 'fieldset';\n    }\n  },\n\n  findTargets: function () {\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this._$target = $(\n        this.normalizeTargetSelector(this.targetPrefix + this.getToggleVal())\n      );\n    } else {\n      if (this.targetSelector) {\n        this._$target = $(this.targetSelector);\n      }\n\n      if (this.reverseTargetSelector) {\n        this._$reverseTarget = $(this.reverseTargetSelector);\n      }\n    }\n  },\n\n  getToggleVal: function () {\n    switch (this.type) {\n      case 'checkbox':\n        if (typeof this.$toggle.prop('checked') !== 'undefined') {\n          return this.$toggle.prop('checked');\n        }\n        return this.$toggle.attr('aria-checked') === 'true';\n\n      case 'booleanMenu':\n        const boolean = this.$toggle.data('boolean');\n        if (typeof boolean !== 'undefined') {\n          return boolean;\n        }\n        const val = this.$toggle.val();\n        return val && val !== '0';\n\n      default:\n        let postVal;\n        if (this.type === 'fieldset') {\n          postVal = this.$toggle.find('input:checked:first').val();\n        } else {\n          postVal = Garnish.getInputPostVal(this.$toggle);\n        }\n\n        // Normalize the value\n        return typeof postVal === 'undefined' || postVal === null\n          ? null\n          : postVal.replace(/[^\\w]+/g, '-');\n    }\n  },\n\n  onToggleChange: function () {\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this.hideTarget(this._$target);\n      this.findTargets();\n      this.showTarget(this._$target);\n    } else {\n      this.findTargets();\n\n      if (this.type === 'link') {\n        this.onToggleChange._show =\n          this.$toggle.hasClass('collapsed') ||\n          !this.$toggle.hasClass('expanded');\n      } else {\n        this.onToggleChange._show = !!this.getToggleVal();\n      }\n\n      if (this.onToggleChange._show) {\n        this.showTarget(this._$target);\n        this.hideTarget(this._$reverseTarget);\n      } else {\n        this.hideTarget(this._$target);\n        this.showTarget(this._$reverseTarget);\n      }\n\n      delete this.onToggleChange._show;\n    }\n  },\n\n  showTarget: function ($target) {\n    if ($target && $target.length) {\n      this.showTarget._currentHeight = $target.height();\n\n      $target.removeClass('hidden');\n\n      if (this.type !== 'select' && this.type !== 'fieldset') {\n        if (this.type === 'link') {\n          this.$toggle.removeClass('collapsed');\n          this.$toggle.addClass('expanded');\n        }\n\n        for (let i = 0; i < $target.length; i++) {\n          (($t) => {\n            if ($t.prop('nodeName') !== 'SPAN') {\n              $t.height('auto');\n              this.showTarget._targetHeight = $t.height();\n              $t.css({\n                height: this.showTarget._currentHeight,\n                overflow: 'hidden',\n              });\n\n              $t.velocity('stop');\n\n              $t.velocity(\n                {height: this.showTarget._targetHeight},\n                'fast',\n                function () {\n                  $t.css({\n                    height: '',\n                    overflow: '',\n                  });\n                }\n              );\n            }\n          })($target.eq(i));\n        }\n\n        delete this.showTarget._targetHeight;\n      }\n\n      delete this.showTarget._currentHeight;\n\n      // Trigger a resize event in case there are any grids in the target that need to initialize\n      Garnish.$win.trigger('resize');\n    }\n  },\n\n  hideTarget: function ($target) {\n    if ($target && $target.length) {\n      if (this.type === 'select' || this.type === 'fieldset') {\n        $target.addClass('hidden');\n      } else {\n        if (this.type === 'link') {\n          this.$toggle.removeClass('expanded');\n          this.$toggle.addClass('collapsed');\n        }\n\n        for (let i = 0; i < $target.length; i++) {\n          (($t) => {\n            if ($t.hasClass('hidden')) {\n              return;\n            }\n            if ($t.prop('nodeName') === 'SPAN') {\n              $t.addClass('hidden');\n            } else {\n              $t.css('overflow', 'hidden');\n              $t.velocity('stop');\n              $t.velocity({height: 0}, 'fast', function () {\n                $t.addClass('hidden');\n              });\n            }\n          })($target.eq(i));\n        }\n      }\n    }\n  },\n\n  destroy: function () {\n    this.$toggle.removeData('fieldtoggle');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * @callback constructorCallback\n */\n/**\n * Form observer\n */\nCraft.FormObserver = Garnish.Base.extend({\n  $container: null,\n  /**\n   * @type {constructorCallback}\n   * @param {string} formData\n   */\n  _callback: null,\n  _pauseLevel: 0,\n  _timeout: null,\n  _recentKeypress: false,\n  _formData: null,\n  /**\n   * @type {MutationObserver}\n   */\n  _mutationObserver: null,\n  _selectizeInputs: null,\n\n  get isActive() {\n    return this._pauseLevel === 0;\n  },\n\n  /**\n   * @param {(jQuery|HTMLElement|string)} container\n   * @param {constructorCallback} callback\n   */\n  init(container, callback) {\n    this.$container = $(container);\n    this._callback = callback;\n    this._serialize();\n\n    this.addListener(this.$container, 'change,input,keypress,keyup', (ev) => {\n      if (this.isActive) {\n        // slow down when actively typing\n        if (['keypress', 'keyup'].includes(ev.type)) {\n          this._recentKeypress = true;\n        }\n        this._checkFormAfterDelay();\n      }\n    });\n\n    this._mutationObserver = new MutationObserver((records) => {\n      for (const record of records) {\n        if (this.isActive && this._formChanged(record)) {\n          this._checkFormAfterDelay();\n        }\n\n        for (const node of record.addedNodes) {\n          if (node instanceof Element) {\n            this._initSelectizeInputs(node);\n          }\n        }\n\n        if (\n          record.attributeName === 'class' &&\n          record.target instanceof Element &&\n          record.target.classList.contains('selectized')\n        ) {\n          this._initSelectizeInput(record.target);\n        }\n      }\n    });\n\n    this._mutationObserver.observe(this.$container[0], {\n      childList: true,\n      subtree: true,\n      characterData: true,\n      attributeFilter: ['name', 'value', 'disabled', 'class'],\n    });\n\n    this._initSelectizeInputs(this.$container[0]);\n  },\n\n  /**\n   * @param {MutationRecord} record\n   * @returns {boolean}\n   */\n  _formChanged(record) {\n    switch (record.type) {\n      case 'childList':\n        return (\n          // was this for the text node of a <textarea>?\n          (record.target.nodeName === 'TEXTAREA' &&\n            record.target.hasAttribute('name')) ||\n          // maybe a `[name]` node was added/removed\n          this._hasNamedNodes(record.addedNodes) ||\n          this._hasNamedNodes(record.removedNodes)\n        );\n      case 'attributes':\n        switch (record.attributeName) {\n          case 'name':\n            // only matters if the element isn't disabled\n            return !record.target.disabled;\n          case 'value':\n            // only matters if the element has a name attribute and isn't disabled\n            return (\n              record.target.hasAttribute('name') && !record.target.disabled\n            );\n          case 'disabled':\n            // only matters if the element has a name attribute\n            return record.target.hasAttribute('name');\n        }\n      case 'characterData':\n        // maybe a <textarea> change\n        return (\n          record.target.parentNode instanceof Element &&\n          record.target.parentNode.hasAttribute('name')\n        );\n      default:\n        return false;\n    }\n  },\n\n  /**\n   * @param {Element} container\n   */\n  _initSelectizeInputs(container) {\n    // we're now using selectize select_on_focus plugin which clears the dropdown's value on dropdown open;\n    // that triggers a change event which triggers saving a draft and causes conditional fields/tabs to misbehave;\n    // because of that, we are now emitting selectize dropdown open and close events;\n    // we pause listening for changes on dropdown open (it happens before the focus event, so before the value is cleared)\n    // and we resume on dropdown close to register the change in value (if one actually occurred);\n    if (container.classList.contains('selectized')) {\n      this._initSelectizeInput(container);\n    } else {\n      const inputs = container.querySelectorAll('.selectized');\n      for (const input of inputs) {\n        this._initSelectizeInput(input);\n      }\n    }\n  },\n\n  _initSelectizeInput(input) {\n    // just in case the element was detached and re-inserted into the DOM\n    this.removeAllListeners(input);\n    this.addListener(input, 'selectizedropdownopen', () => {\n      this.pause();\n    });\n    this.addListener(input, 'selectizedropdownclose', () => {\n      setTimeout(() => {\n        this.resume();\n      }, 100);\n    });\n  },\n\n  /**\n   * @param {Node[]} nodes\n   * @returns {boolean}\n   */\n  _hasNamedNodes(nodes) {\n    for (const node of nodes) {\n      if (\n        node instanceof Element &&\n        (node.hasAttribute('name') || node.querySelectorAll('[name]').length)\n      ) {\n        return true;\n      }\n    }\n    return false;\n  },\n\n  _checkFormAfterDelay() {\n    clearTimeout(this._timeout);\n    this._timeout = setTimeout(\n      () => {\n        this.checkForm();\n      },\n      this._recentKeypress ? 1000 : 100\n    );\n  },\n\n  checkForm() {\n    clearTimeout(this._timeout);\n    this._recentKeypress = false;\n    if (this._formData !== this._serialize()) {\n      this._callback(this._formData);\n    }\n  },\n\n  _serialize() {\n    if (this.$container[0].nodeName === 'FORM') {\n      this._formData = this.$container.serialize();\n    } else {\n      this._formData = $('<form/>').append(this.$container.clone()).serialize();\n    }\n    return this._formData;\n  },\n\n  pause() {\n    this._pauseLevel++;\n  },\n\n  resume() {\n    if (this._pauseLevel === 0) {\n      throw 'Craft.FormObserver::resume() should only be called after pause().';\n    }\n\n    // Only actually resume operation if this has been called the same\n    // number of times that pause() was called\n    this._pauseLevel--;\n\n    if (this.isActive) {\n      this.checkForm();\n    }\n  },\n\n  destroy() {\n    this._mutationObserver.disconnect();\n    delete this._mutationObserver;\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.Grid = Garnish.Base.extend(\n  {\n    $container: null,\n\n    $items: null,\n    items: null,\n    totalCols: null,\n    colGutterDrop: null,\n    colPctWidth: null,\n\n    possibleItemColspans: null,\n    possibleItemPositionsByColspan: null,\n\n    itemPositions: null,\n    itemColspansByPosition: null,\n\n    layouts: null,\n    layout: null,\n    itemHeights: null,\n    leftPadding: null,\n\n    _refreshingCols: false,\n    _refreshColsAfterRefresh: false,\n    _forceRefreshColsAfterRefresh: false,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      // Is this already a grid?\n      if (this.$container.data('grid')) {\n        console.warn('Double-instantiating a grid on an element');\n        this.$container.data('grid').destroy();\n      }\n\n      this.$container.data('grid', this);\n\n      this.setSettings(settings, Craft.Grid.defaults);\n\n      // Set the refreshCols() proxy that container resizes will trigger\n      this.handleContainerHeightProxy = () => {\n        this.refreshCols(false, true);\n      };\n\n      this.$items = this.$container.children(this.settings.itemSelector);\n      this.setItems();\n      this.refreshCols(true, false);\n\n      Garnish.$doc.ready(() => {\n        this.refreshCols(false, false);\n      });\n    },\n\n    addItems: function (items) {\n      this.$items = $().add(this.$items.add(items));\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    removeItems: function (items) {\n      this.$items = $().add(this.$items.not(items));\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    resetItemOrder: function () {\n      this.$items = $().add(this.$items);\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    setItems: function () {\n      this.setItems._ = {};\n\n      this.items = [];\n\n      for (\n        this.setItems._.i = 0;\n        this.setItems._.i < this.$items.length;\n        this.setItems._.i++\n      ) {\n        this.items.push($(this.$items[this.setItems._.i]));\n      }\n\n      delete this.setItems._;\n    },\n\n    refreshCols: function (force) {\n      if (this._refreshingCols) {\n        this._refreshColsAfterRefresh = true;\n        if (force) {\n          this._forceRefreshColsAfterRefresh = true;\n        }\n        return;\n      }\n\n      this._refreshingCols = true;\n\n      if (!this.items.length) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      this.refreshCols._ = {};\n\n      // Check to see if the grid is actually visible\n      this.refreshCols._.oldHeight = this.$container[0].style.height;\n      this.$container[0].style.height = 1;\n      this.refreshCols._.scrollHeight = this.$container[0].scrollHeight;\n      this.$container[0].style.height = this.refreshCols._.oldHeight;\n\n      if (this.refreshCols._.scrollHeight === 0) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      if (this.settings.cols) {\n        this.refreshCols._.totalCols = this.settings.cols;\n      } else {\n        this.refreshCols._.totalCols = Math.floor(\n          this.$container.width() / this.settings.minColWidth\n        );\n\n        // If we're adding a new column, require an extra 20 pixels in case a scrollbar shows up\n        if (\n          this.totalCols !== null &&\n          this.refreshCols._.totalCols > this.totalCols\n        ) {\n          this.refreshCols._.totalCols = Math.floor(\n            (this.$container.width() - 20) / this.settings.minColWidth\n          );\n        }\n\n        if (\n          this.settings.maxCols &&\n          this.refreshCols._.totalCols > this.settings.maxCols\n        ) {\n          this.refreshCols._.totalCols = this.settings.maxCols;\n        }\n      }\n\n      if (this.refreshCols._.totalCols === 0) {\n        this.refreshCols._.totalCols = 1;\n      }\n\n      // Same number of columns as before?\n      if (\n        force !== true &&\n        this.totalCols === this.refreshCols._.totalCols &&\n        !this.settings.snapToGrid\n      ) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      this.totalCols = this.refreshCols._.totalCols;\n      this.colGutterDrop =\n        (this.settings.gutter * (this.totalCols - 1)) / this.totalCols;\n\n      // Temporarily stop listening to container resizes\n      this.removeListener(this.$container, 'resize');\n\n      if (this.settings.fillMode === 'grid') {\n        this.refreshCols._.itemIndex = 0;\n\n        while (this.refreshCols._.itemIndex < this.items.length) {\n          // Append the next X items and figure out which one is the tallest\n          this.refreshCols._.tallestItemHeight = -1;\n          this.refreshCols._.colIndex = 0;\n\n          for (\n            this.refreshCols._.i = this.refreshCols._.itemIndex;\n            this.refreshCols._.i <\n              this.refreshCols._.itemIndex + this.totalCols &&\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.itemHeight = this.items[this.refreshCols._.i]\n              .height('auto')\n              .height();\n\n            if (\n              this.refreshCols._.itemHeight >\n              this.refreshCols._.tallestItemHeight\n            ) {\n              this.refreshCols._.tallestItemHeight =\n                this.refreshCols._.itemHeight;\n            }\n\n            this.refreshCols._.colIndex++;\n          }\n\n          if (this.settings.snapToGrid) {\n            this.refreshCols._.remainder =\n              this.refreshCols._.tallestItemHeight % this.settings.snapToGrid;\n\n            if (this.refreshCols._.remainder) {\n              this.refreshCols._.tallestItemHeight +=\n                this.settings.snapToGrid - this.refreshCols._.remainder;\n            }\n          }\n\n          // Now set their heights to the tallest one\n          for (\n            this.refreshCols._.i = this.refreshCols._.itemIndex;\n            this.refreshCols._.i <\n              this.refreshCols._.itemIndex + this.totalCols &&\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.items[this.refreshCols._.i].height(\n              this.refreshCols._.tallestItemHeight\n            );\n          }\n\n          // set the this.refreshCols._.itemIndex pointer to the next one up\n          this.refreshCols._.itemIndex += this.totalCols;\n        }\n      } else {\n        this.removeListener(this.$items, 'resize');\n\n        // If there's only one column, sneak out early\n        if (this.totalCols === 1) {\n          this.$container.height('auto');\n          this.$items\n            .show()\n            .css({\n              position: 'relative',\n              width: 'auto',\n              top: 0,\n            })\n            .css(Craft.left, 0);\n        } else {\n          this.$items.css('position', 'absolute');\n          this.colPctWidth = 100 / this.totalCols;\n\n          // The setup\n\n          this.layouts = [];\n\n          this.itemPositions = [];\n          this.itemColspansByPosition = [];\n\n          // Figure out all of the possible colspans for each item,\n          // as well as all the possible positions for each item at each of its colspans\n\n          this.possibleItemColspans = [];\n          this.possibleItemPositionsByColspan = [];\n          this.itemHeightsByColspan = [];\n\n          for (\n            this.refreshCols._.item = 0;\n            this.refreshCols._.item < this.items.length;\n            this.refreshCols._.item++\n          ) {\n            this.possibleItemColspans[this.refreshCols._.item] = [];\n            this.possibleItemPositionsByColspan[this.refreshCols._.item] = {};\n            this.itemHeightsByColspan[this.refreshCols._.item] = {};\n\n            this.refreshCols._.$item =\n              this.items[this.refreshCols._.item].show();\n            this.refreshCols._.positionRight =\n              this.refreshCols._.$item.data('position') === 'right';\n            this.refreshCols._.positionLeft =\n              this.refreshCols._.$item.data('position') === 'left';\n            this.refreshCols._.minColspan = this.refreshCols._.$item.data(\n              'colspan'\n            )\n              ? this.refreshCols._.$item.data('colspan')\n              : this.refreshCols._.$item.data('min-colspan')\n                ? this.refreshCols._.$item.data('min-colspan')\n                : 1;\n            this.refreshCols._.maxColspan = this.refreshCols._.$item.data(\n              'colspan'\n            )\n              ? this.refreshCols._.$item.data('colspan')\n              : this.refreshCols._.$item.data('max-colspan')\n                ? this.refreshCols._.$item.data('max-colspan')\n                : this.totalCols;\n\n            if (this.refreshCols._.minColspan > this.totalCols) {\n              this.refreshCols._.minColspan = this.totalCols;\n            }\n            if (this.refreshCols._.maxColspan > this.totalCols) {\n              this.refreshCols._.maxColspan = this.totalCols;\n            }\n\n            for (\n              this.refreshCols._.colspan = this.refreshCols._.minColspan;\n              this.refreshCols._.colspan <= this.refreshCols._.maxColspan;\n              this.refreshCols._.colspan++\n            ) {\n              // Get the height for this colspan\n              this.refreshCols._.$item.css(\n                'width',\n                this.getItemWidthCss(this.refreshCols._.colspan)\n              );\n              this.itemHeightsByColspan[this.refreshCols._.item][\n                this.refreshCols._.colspan\n              ] = this.refreshCols._.$item.outerHeight();\n\n              this.possibleItemColspans[this.refreshCols._.item].push(\n                this.refreshCols._.colspan\n              );\n              this.possibleItemPositionsByColspan[this.refreshCols._.item][\n                this.refreshCols._.colspan\n              ] = [];\n\n              if (this.refreshCols._.positionLeft) {\n                this.refreshCols._.minPosition = 0;\n                this.refreshCols._.maxPosition = 0;\n              } else if (this.refreshCols._.positionRight) {\n                this.refreshCols._.minPosition =\n                  this.totalCols - this.refreshCols._.colspan;\n                this.refreshCols._.maxPosition = this.refreshCols._.minPosition;\n              } else {\n                this.refreshCols._.minPosition = 0;\n                this.refreshCols._.maxPosition =\n                  this.totalCols - this.refreshCols._.colspan;\n              }\n\n              for (\n                this.refreshCols._.position = this.refreshCols._.minPosition;\n                this.refreshCols._.position <= this.refreshCols._.maxPosition;\n                this.refreshCols._.position++\n              ) {\n                this.possibleItemPositionsByColspan[this.refreshCols._.item][\n                  this.refreshCols._.colspan\n                ].push(this.refreshCols._.position);\n              }\n            }\n          }\n\n          // Find all the possible layouts\n\n          this.refreshCols._.colHeights = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.totalCols;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.colHeights.push(0);\n          }\n\n          this.createLayouts(0, [], [], this.refreshCols._.colHeights, 0);\n\n          // Now find the layout that looks the best.\n\n          // First find the layouts with the highest number of used columns\n          this.refreshCols._.layoutTotalCols = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.layouts.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.layoutTotalCols[this.refreshCols._.i] = 0;\n\n            for (\n              this.refreshCols._.j = 0;\n              this.refreshCols._.j < this.totalCols;\n              this.refreshCols._.j++\n            ) {\n              if (\n                this.layouts[this.refreshCols._.i].colHeights[\n                  this.refreshCols._.j\n                ]\n              ) {\n                this.refreshCols._.layoutTotalCols[this.refreshCols._.i]++;\n              }\n            }\n          }\n\n          this.refreshCols._.highestTotalCols = Math.max.apply(\n            null,\n            this.refreshCols._.layoutTotalCols\n          );\n\n          // Filter out the ones that aren't using as many columns as they could be\n          for (\n            this.refreshCols._.i = this.layouts.length - 1;\n            this.refreshCols._.i >= 0;\n            this.refreshCols._.i--\n          ) {\n            if (\n              this.refreshCols._.layoutTotalCols[this.refreshCols._.i] !==\n              this.refreshCols._.highestTotalCols\n            ) {\n              this.layouts.splice(this.refreshCols._.i, 1);\n            }\n          }\n\n          // Find the layout(s) with the least overall height\n          this.refreshCols._.layoutHeights = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.layouts.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.layoutHeights.push(\n              Math.max.apply(\n                null,\n                this.layouts[this.refreshCols._.i].colHeights\n              )\n            );\n          }\n\n          this.refreshCols._.shortestHeight = Math.min.apply(\n            null,\n            this.refreshCols._.layoutHeights\n          );\n          this.refreshCols._.shortestLayouts = [];\n          this.refreshCols._.emptySpaces = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.refreshCols._.layoutHeights.length;\n            this.refreshCols._.i++\n          ) {\n            if (\n              this.refreshCols._.layoutHeights[this.refreshCols._.i] ===\n              this.refreshCols._.shortestHeight\n            ) {\n              this.refreshCols._.shortestLayouts.push(\n                this.layouts[this.refreshCols._.i]\n              );\n\n              // Now get its total empty space, including any trailing empty space\n              this.refreshCols._.emptySpace =\n                this.layouts[this.refreshCols._.i].emptySpace;\n\n              for (\n                this.refreshCols._.j = 0;\n                this.refreshCols._.j < this.totalCols;\n                this.refreshCols._.j++\n              ) {\n                this.refreshCols._.emptySpace +=\n                  this.refreshCols._.shortestHeight -\n                  this.layouts[this.refreshCols._.i].colHeights[\n                    this.refreshCols._.j\n                  ];\n              }\n\n              this.refreshCols._.emptySpaces.push(\n                this.refreshCols._.emptySpace\n              );\n            }\n          }\n\n          // And the layout with the least empty space is...\n          this.layout =\n            this.refreshCols._.shortestLayouts[\n              $.inArray(\n                Math.min.apply(null, this.refreshCols._.emptySpaces),\n                this.refreshCols._.emptySpaces\n              )\n            ];\n\n          // Set the item widths and left positions\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.css = {\n              width: this.getItemWidthCss(\n                this.layout.colspans[this.refreshCols._.i]\n              ),\n            };\n            this.refreshCols._.css[Craft.left] = this.getItemLeftPosCss(\n              this.layout.positions[this.refreshCols._.i]\n            );\n            this.items[this.refreshCols._.i].css(this.refreshCols._.css);\n          }\n\n          // If every item is at position 0, then let them lay out au naturel\n          if (this.isSimpleLayout()) {\n            this.$container.height('auto');\n            this.$items.css({\n              position: 'relative',\n              top: 0,\n              'margin-bottom': this.settings.gutter + 'px',\n            });\n          } else {\n            this.$items.css('position', 'absolute');\n\n            // Now position the items\n            this.positionItems();\n\n            // Update the positions as the items' heights change\n            this.addListener(this.$items, 'resize', 'onItemResize');\n          }\n        }\n      }\n\n      this.completeRefreshCols();\n\n      // Resume container resize listening\n      this.addListener(\n        this.$container,\n        'resize',\n        this.handleContainerHeightProxy\n      );\n\n      this.onRefreshCols();\n    },\n\n    completeRefreshCols: function () {\n      // Delete the internal variable object\n      if (typeof this.refreshCols._ !== 'undefined') {\n        delete this.refreshCols._;\n      }\n\n      this._refreshingCols = false;\n\n      if (this._refreshColsAfterRefresh) {\n        var force = this._forceRefreshColsAfterRefresh;\n        this._refreshColsAfterRefresh = false;\n        this._forceRefreshColsAfterRefresh = false;\n\n        Garnish.requestAnimationFrame(() => {\n          this.refreshCols(force);\n        });\n      }\n    },\n\n    getItemWidth: function (colspan) {\n      return this.colPctWidth * colspan;\n    },\n\n    getItemWidthCss: function (colspan) {\n      return (\n        'calc(' +\n        this.getItemWidth(colspan) +\n        '% - ' +\n        this.colGutterDrop +\n        'px)'\n      );\n    },\n\n    getItemWidthInPx: function (colspan) {\n      return (\n        (this.getItemWidth(colspan) / 100) * this.$container.width() -\n        this.colGutterDrop\n      );\n    },\n\n    getItemLeftPosCss: function (position) {\n      return (\n        'calc(' +\n        '(' +\n        this.getItemWidth(1) +\n        '% + ' +\n        (this.settings.gutter - this.colGutterDrop) +\n        'px) * ' +\n        position +\n        ')'\n      );\n    },\n\n    getItemLeftPosInPx: function (position) {\n      return (\n        ((this.getItemWidth(1) / 100) * this.$container.width() +\n          (this.settings.gutter - this.colGutterDrop)) *\n        position\n      );\n    },\n\n    createLayouts: function (\n      item,\n      prevPositions,\n      prevColspans,\n      prevColHeights,\n      prevEmptySpace\n    ) {\n      new Craft.Grid.LayoutGenerator(this).createLayouts(\n        item,\n        prevPositions,\n        prevColspans,\n        prevColHeights,\n        prevEmptySpace\n      );\n    },\n\n    isSimpleLayout: function () {\n      this.isSimpleLayout._ = {};\n\n      for (\n        this.isSimpleLayout._.i = 0;\n        this.isSimpleLayout._.i < this.layout.positions.length;\n        this.isSimpleLayout._.i++\n      ) {\n        if (this.layout.positions[this.isSimpleLayout._.i] !== 0) {\n          delete this.isSimpleLayout._;\n          return false;\n        }\n      }\n\n      delete this.isSimpleLayout._;\n      return true;\n    },\n\n    positionItems: function () {\n      this.positionItems._ = {};\n\n      this.positionItems._.colHeights = [];\n\n      for (\n        this.positionItems._.i = 0;\n        this.positionItems._.i < this.totalCols;\n        this.positionItems._.i++\n      ) {\n        this.positionItems._.colHeights.push(0);\n      }\n\n      for (\n        this.positionItems._.i = 0;\n        this.positionItems._.i < this.items.length;\n        this.positionItems._.i++\n      ) {\n        this.positionItems._.endingCol =\n          this.layout.positions[this.positionItems._.i] +\n          this.layout.colspans[this.positionItems._.i] -\n          1;\n        this.positionItems._.affectedColHeights = [];\n\n        for (\n          this.positionItems._.col =\n            this.layout.positions[this.positionItems._.i];\n          this.positionItems._.col <= this.positionItems._.endingCol;\n          this.positionItems._.col++\n        ) {\n          this.positionItems._.affectedColHeights.push(\n            this.positionItems._.colHeights[this.positionItems._.col]\n          );\n        }\n\n        this.positionItems._.top = Math.max.apply(\n          null,\n          this.positionItems._.affectedColHeights\n        );\n        if (this.positionItems._.top > 0) {\n          this.positionItems._.top += this.settings.gutter;\n        }\n\n        this.items[this.positionItems._.i].css('top', this.positionItems._.top);\n\n        // Now add the new heights to those columns\n        for (\n          this.positionItems._.col =\n            this.layout.positions[this.positionItems._.i];\n          this.positionItems._.col <= this.positionItems._.endingCol;\n          this.positionItems._.col++\n        ) {\n          this.positionItems._.colHeights[this.positionItems._.col] =\n            this.positionItems._.top +\n            this.itemHeightsByColspan[this.positionItems._.i][\n              this.layout.colspans[this.positionItems._.i]\n            ];\n        }\n      }\n\n      // Set the container height\n      this.$container.height(\n        Math.max.apply(null, this.positionItems._.colHeights)\n      );\n\n      delete this.positionItems._;\n    },\n\n    onItemResize: function (ev) {\n      this.onItemResize._ = {};\n\n      // Prevent this from bubbling up to the container, which has its own resize listener\n      ev.stopPropagation();\n\n      this.onItemResize._.item = $.inArray(ev.currentTarget, this.$items);\n\n      if (this.onItemResize._.item !== -1) {\n        // Update the height and reposition the items\n        this.onItemResize._.newHeight =\n          this.items[this.onItemResize._.item].outerHeight();\n\n        if (\n          this.onItemResize._.newHeight !==\n          this.itemHeightsByColspan[this.onItemResize._.item][\n            this.layout.colspans[this.onItemResize._.item]\n          ]\n        ) {\n          this.itemHeightsByColspan[this.onItemResize._.item][\n            this.layout.colspans[this.onItemResize._.item]\n          ] = this.onItemResize._.newHeight;\n          this.positionItems(false);\n        }\n      }\n\n      delete this.onItemResize._;\n    },\n\n    onRefreshCols: function () {\n      this.trigger('refreshCols');\n      this.settings.onRefreshCols();\n    },\n\n    destroy: function () {\n      this.$container.removeData('grid');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      itemSelector: '.item',\n      cols: null,\n      maxCols: null,\n      minColWidth: 320,\n      gutter: 14,\n      fillMode: 'top',\n      colClass: 'col',\n      snapToGrid: null,\n\n      onRefreshCols: $.noop,\n    },\n  }\n);\n\nCraft.Grid.LayoutGenerator = Garnish.Base.extend({\n  grid: null,\n  _: null,\n\n  init: function (grid) {\n    this.grid = grid;\n  },\n\n  createLayouts: function (\n    item,\n    prevPositions,\n    prevColspans,\n    prevColHeights,\n    prevEmptySpace\n  ) {\n    this._ = {};\n\n    // Loop through all possible colspans\n    for (\n      this._.c = 0;\n      this._.c < this.grid.possibleItemColspans[item].length;\n      this._.c++\n    ) {\n      this._.colspan = this.grid.possibleItemColspans[item][this._.c];\n\n      // Loop through all the possible positions for this colspan,\n      // and find the one that is closest to the top\n\n      this._.tallestColHeightsByPosition = [];\n\n      for (\n        this._.p = 0;\n        this._.p <\n        this.grid.possibleItemPositionsByColspan[item][this._.colspan].length;\n        this._.p++\n      ) {\n        this._.position =\n          this.grid.possibleItemPositionsByColspan[item][this._.colspan][\n            this._.p\n          ];\n\n        this._.colHeightsForPosition = [];\n        this._.endingCol = this._.position + this._.colspan - 1;\n\n        for (\n          this._.col = this._.position;\n          this._.col <= this._.endingCol;\n          this._.col++\n        ) {\n          this._.colHeightsForPosition.push(prevColHeights[this._.col]);\n        }\n\n        this._.tallestColHeightsByPosition[this._.p] = Math.max.apply(\n          null,\n          this._.colHeightsForPosition\n        );\n      }\n\n      // And the shortest position for this colspan is...\n      this._.p = $.inArray(\n        Math.min.apply(null, this._.tallestColHeightsByPosition),\n        this._.tallestColHeightsByPosition\n      );\n      this._.position =\n        this.grid.possibleItemPositionsByColspan[item][this._.colspan][\n          this._.p\n        ];\n\n      // Now log the colspan/position placement\n      this._.positions = prevPositions.slice(0);\n      this._.colspans = prevColspans.slice(0);\n      this._.colHeights = prevColHeights.slice(0);\n      this._.emptySpace = prevEmptySpace;\n\n      this._.positions.push(this._.position);\n      this._.colspans.push(this._.colspan);\n\n      // Add the new heights to those columns\n      this._.tallestColHeight = this._.tallestColHeightsByPosition[this._.p];\n      this._.endingCol = this._.position + this._.colspan - 1;\n\n      for (\n        this._.col = this._.position;\n        this._.col <= this._.endingCol;\n        this._.col++\n      ) {\n        this._.emptySpace +=\n          this._.tallestColHeight - this._.colHeights[this._.col];\n        this._.colHeights[this._.col] =\n          this._.tallestColHeight +\n          this.grid.itemHeightsByColspan[item][this._.colspan];\n      }\n\n      // If this is the last item, create the layout\n      if (item === this.grid.items.length - 1) {\n        this.grid.layouts.push({\n          positions: this._.positions,\n          colspans: this._.colspans,\n          colHeights: this._.colHeights,\n          emptySpace: this._.emptySpace,\n        });\n      } else {\n        // Dive deeper\n        this.grid.createLayouts(\n          item + 1,\n          this._.positions,\n          this._.colspans,\n          this._.colHeights,\n          this._.emptySpace\n        );\n      }\n    }\n\n    delete this._;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.HandleGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    var handle = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Remove inner-word punctuation\n    handle = handle.replace(/['\"‘’“”\\[\\]\\(\\)\\{\\}:]/g, '');\n\n    // Make it lowercase\n    handle = handle.toLowerCase();\n\n    // Convert extended ASCII characters to basic ASCII\n    handle = Craft.asciiString(handle);\n\n    if (!this.settings.allowNonAlphaStart) {\n      // Handle must start with a letter\n      handle = handle.replace(/^[^a-z]+/, '');\n    }\n\n    // Get the \"words\"\n    var words = Craft.filterArray(handle.split(/[^a-z0-9]+/));\n    handle = '';\n\n    if (Craft.handleCasing === 'snake') {\n      return words.join('_');\n    }\n\n    // Make it camelCase\n    for (let i = 0; i < words.length; i++) {\n      if (Craft.handleCasing !== 'pascal' && i === 0) {\n        handle += words[i];\n      } else {\n        handle += words[i].charAt(0).toUpperCase() + words[i].substring(1);\n      }\n    }\n\n    return handle;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Icon Picker\n */\nCraft.IconPicker = Craft.BaseInputGenerator.extend({\n  $container: null,\n  $preview: null,\n  $chooseBtn: null,\n  $removeBtn: null,\n  $input: null,\n\n  modal: null,\n  cancelToken: null,\n  $searchInput: null,\n  $iconListContainer: null,\n  $iconList: null,\n  defaultListHtml: null,\n\n  init(container) {\n    this.$container = $(container);\n    this.$preview = this.$container.children('.icon-picker--icon');\n    this.$chooseBtn = this.$container.children('.icon-picker--choose-btn');\n    this.$removeBtn = this.$container.children('.icon-picker--remove-btn');\n    this.$input = this.$container.children('input');\n\n    this.addListener(this.$chooseBtn, 'activate', () => {\n      this.showModal();\n    });\n\n    this.addListener(this.$removeBtn, 'activate', () => {\n      this.removeIcon();\n    });\n  },\n\n  showModal() {\n    if (!this.modal) {\n      this.createModal();\n    } else {\n      this.modal.show();\n    }\n  },\n\n  createModal() {\n    const $container = $('<div class=\"modal icon-picker-modal\"/>');\n    const $body = $('<div class=\"body\"/>').appendTo($container);\n\n    const $searchContainer = $('<div class=\"texticon\"/>').appendTo($body);\n    $('<span class=\"texticon-icon search icon\" aria-hidden=\"true\"/>').appendTo(\n      $searchContainer\n    );\n    this.$searchInput = Craft.ui\n      .createTextInput({\n        name: 'search',\n        class: 'clearable',\n        placeholder: Craft.t('app', 'Search'),\n      })\n      .attr('aria-label', Craft.t('app', 'Search'))\n      .appendTo($searchContainer);\n    const $clearBtn = $('<button/>', {\n      class: 'clear-btn hidden',\n      title: Craft.t('app', 'Clear search'),\n      'aria-label': Craft.t('app', 'Clear search'),\n    }).appendTo($searchContainer);\n\n    this.$iconListContainer = $(\n      '<div class=\"icon-picker-modal--list\"/>'\n    ).appendTo($body);\n    this.$iconList = $('<ul tabindex=\"-1\"/>').appendTo(this.$iconListContainer);\n    const $spinner = $('<div class=\"spinner spinner-absolute\"/>').appendTo(\n      this.$iconListContainer\n    );\n    $('<span class=\"visually-hidden\"/>')\n      .text(Craft.t('app', 'Loading'))\n      .appendTo($spinner);\n\n    const formObserver = new Craft.FormObserver($searchContainer, () => {\n      this.updateIcons();\n    });\n\n    this.addListener(this.$searchInput, 'input,change', () => {\n      if (this.$searchInput.val()) {\n        $clearBtn.removeClass('hidden');\n      } else {\n        $clearBtn.addClass('hidden');\n      }\n    });\n\n    this.addListener($clearBtn, 'activate', () => {\n      this.$searchInput.val('').trigger('change');\n      formObserver.checkForm();\n    });\n\n    this.addListener(this.$iconList, 'click', (ev) => {\n      let $button;\n      if (ev.target.nodeName === 'BUTTON') {\n        $button = $(ev.target);\n      } else {\n        $button = $(ev.target).closest('button');\n        if (!$button.length) {\n          return;\n        }\n      }\n\n      this.selectIcon($button);\n    });\n\n    this.modal = new Garnish.Modal($container);\n    this.updateIcons();\n  },\n\n  async updateIcons() {\n    const listHtml = await this.loadIcons();\n    this.$iconList.html(listHtml);\n  },\n\n  async loadIcons() {\n    if (this.cancelToken) {\n      this.cancelToken.cancel();\n    }\n\n    const search = this.$searchInput.val();\n    if (search === '' && this.defaultListHtml !== null) {\n      return this.defaultListHtml;\n    }\n\n    this.$iconListContainer.addClass('loading');\n    this.cancelToken = axios.CancelToken.source();\n\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'app/icon-picker-options',\n        {\n          data: {search},\n          cancelToken: this.cancelToken.token,\n        }\n      );\n      const listHtml = response.data.listHtml;\n      if (search === '') {\n        // save the results for later\n        this.defaultListHtml = listHtml;\n      }\n      return listHtml;\n    } finally {\n      this.$iconListContainer.removeClass('loading');\n      this.cancelToken = null;\n    }\n  },\n\n  selectIcon($button) {\n    this.modal.hide();\n    const name = $button.attr('title');\n    this.$preview\n      .html($button.html())\n      .attr('title', name)\n      .attr('aria-label', name);\n    this.$input.val(name);\n    this.$chooseBtn.children('.label').text(Craft.t('app', 'Change'));\n    this.$chooseBtn.trigger('focus');\n    this.$removeBtn.removeClass('hidden');\n  },\n\n  removeIcon() {\n    this.$preview.html('').removeAttr('title').removeAttr('aria-label');\n    this.$input.val('');\n    this.$chooseBtn.children('.label').text(Craft.t('app', 'Choose'));\n    this.$removeBtn.addClass('hidden');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Image upload class for user photos, site icon and logo.\n */\nCraft.ImageUpload = Garnish.Base.extend(\n  {\n    $container: null,\n    progressBar: null,\n    uploader: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.ImageUpload.defaults);\n      this.$container = $(this.settings.containerSelector);\n      this.initImageUpload();\n    },\n\n    initImageUpload: function () {\n      this.progressBar = new Craft.ProgressBar(\n        $('<div class=\"progress-shade\"></div>').appendTo(this.$container)\n      );\n\n      var options = {\n        url: Craft.getActionUrl(this.settings.uploadAction),\n        formData: this.settings.postParameters,\n        fileInput: this.$container.find(this.settings.fileInputSelector),\n        paramName: this.settings.uploadParamName,\n      };\n\n      // If CSRF protection isn't enabled, these won't be defined.\n      if (\n        typeof Craft.csrfTokenName !== 'undefined' &&\n        typeof Craft.csrfTokenValue !== 'undefined'\n      ) {\n        // Add the CSRF token\n        options.formData[Craft.csrfTokenName] = Craft.csrfTokenValue;\n      }\n\n      options.events = {};\n      options.events.fileuploadstart = this._onUploadStart.bind(this);\n      options.events.fileuploadprogressall = this._onUploadProgress.bind(this);\n      options.events.fileuploaddone = this._onUploadComplete.bind(this);\n      options.events.fileuploadfail = this._onUploadFailure.bind(this);\n\n      this.uploader = Craft.createUploader(null, this.$container, options);\n\n      this.initButtons();\n    },\n\n    initButtons: function () {\n      this.$container\n        .find(this.settings.uploadButtonSelector)\n        .on('click', (ev) => {\n          this.$container\n            .find(this.settings.fileInputSelector)\n            .trigger('click');\n        });\n\n      this.$container\n        .find(this.settings.deleteButtonSelector)\n        .on('click', (ev) => {\n          if (\n            confirm(\n              Craft.t('app', 'Are you sure you want to delete this image?')\n            )\n          ) {\n            $(ev.currentTarget)\n              .parent()\n              .append('<div class=\"blocking-modal\"></div>');\n\n            Craft.sendActionRequest('POST', this.settings.deleteAction, {\n              data: this.settings.postParameters,\n            }).then(({data}) => {\n              this.refreshImage(data);\n            });\n          }\n        });\n    },\n\n    refreshImage: function (response) {\n      this.$container.replaceWith((this.$container = $(response.html)));\n      this.settings.onAfterRefreshImage(response);\n      Craft.cp.elementThumbLoader.load(this.$container);\n      this.initImageUpload();\n    },\n\n    /**\n     * On upload start.\n     */\n    _onUploadStart: function (event) {\n      this.progressBar.$progressBar.css({\n        top: Math.round(this.$container.outerHeight() / 2) - 6,\n      });\n\n      this.$container.addClass('uploading');\n      this.progressBar.resetProgressBar();\n      this.progressBar.showProgressBar();\n    },\n\n    /**\n     * On upload progress.\n     */\n    _onUploadProgress: function (event, data = null) {\n      var progress = parseInt((data.loaded / data.total) * 100, 10);\n      this.progressBar.setProgressPercentage(progress);\n    },\n\n    /**\n     * On a file being uploaded.\n     */\n    _onUploadComplete: function (event, data = null) {\n      this.refreshImage(data.result);\n\n      // Last file\n      if (this.uploader.isLastUpload()) {\n        this.progressBar.hideProgressBar();\n        this.$container.removeClass('uploading');\n      }\n    },\n\n    /**\n     * On Upload Failure.\n     */\n    _onUploadFailure: function (event, data = null) {\n      const response = data.response();\n      let {\n        message,\n        filename,\n        errors = {},\n      } = response?.jqXHR?.responseJSON || {};\n      filename = filename || data?.files?.[0].name;\n      let errorMessages = errors ? Object.values(errors).flat() : [];\n\n      if (!message) {\n        if (errorMessages.length) {\n          message = errorMessages.join('\\n');\n        } else if (filename) {\n          message = Craft.t('app', 'Upload failed for “{filename}”.', {\n            filename,\n          });\n        } else {\n          message = Craft.t('app', 'Upload failed.');\n        }\n      }\n\n      Craft.cp.displayError(message);\n      this.progressBar.hideProgressBar();\n      this.$container.removeClass('uploading');\n    },\n  },\n  {\n    defaults: {\n      postParameters: {},\n      uploadAction: '',\n      deleteAction: '',\n      fileInputSelector: '',\n\n      onAfterRefreshImage: $.noop,\n      containerSelector: null,\n\n      uploadButtonSelector: null,\n      deleteButtonSelector: null,\n\n      uploadParamName: 'files',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Info icon class\n */\nCraft.InfoIcon = Garnish.Base.extend({\n  $container: null,\n  $icon: null,\n  $liveRegion: null,\n  content: null,\n  hud: null,\n\n  init: function (icon) {\n    this.$icon = $(icon);\n    this.$liveRegion = $('<span/>', {\n      role: 'status',\n      class: 'visually-hidden',\n    });\n\n    if (this.$icon.data('infoicon')) {\n      console.warn('Double-instantiating an info icon on an element');\n      this.content = this.$icon.data('infoicon').content;\n      this.$icon.data('infoicon').destroy();\n    } else {\n      this.content = this.$icon.html();\n      this.$icon\n        .html('')\n        .attr({\n          tabindex: 0,\n          role: 'button',\n          type: 'button',\n          'aria-label': Craft.t('app', 'More info'),\n        })\n        .wrap(\n          $('<span/>', {\n            class: 'infoicon-container',\n          })\n        );\n\n      this.$container = this.$icon.parent();\n      this.$container.append(this.$liveRegion);\n    }\n\n    this.$icon.data('infoicon', this);\n\n    if (\n      this.$icon[0].previousSibling &&\n      this.$icon[0].previousSibling.nodeType === Node.TEXT_NODE\n    ) {\n      // Make sure it's in a .nowrap container\n      const $parent = this.$icon.parent();\n      if (!$parent.hasClass('nowrap')) {\n        // Find the last word in the text\n        const m = this.$icon[0].previousSibling.nodeValue.match(/[^\\s\\-]+\\s*$/);\n        if (m) {\n          this.$icon[0].previousSibling.nodeValue =\n            this.$icon[0].previousSibling.nodeValue.substring(0, m.index);\n          $('<span/>', {\n            class: 'nowrap',\n            html: m[0].replace(/\\s+$/, '') + ' ',\n          })\n            .insertAfter(this.$icon[0].previousSibling)\n            .append(this.$icon);\n        }\n      }\n    }\n\n    this.addListener(this.$icon, 'click', (ev) => {\n      ev.preventDefault();\n      ev.stopPropagation();\n      this.showHud();\n    });\n\n    this.addListener(this.$icon, 'keydown', (ev) => {\n      if (\n        !(this.hud && this.hud.showing) &&\n        [Garnish.SPACE_KEY, Garnish.RETURN_KEY].includes(ev.keyCode)\n      ) {\n        ev.preventDefault();\n        ev.stopPropagation();\n        this.showHud();\n      }\n    });\n  },\n\n  showHud: function (ev) {\n    if (!this.hud) {\n      this.hud = new Garnish.HUD(this.$icon, this.content, {\n        hudClass: 'hud info-hud',\n        closeOtherHUDs: false,\n        onShow: () => {\n          Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY, () => {\n            this.hud.hide();\n          });\n\n          this.$liveRegion.html('');\n\n          setTimeout(() => {\n            this.$liveRegion.html(this.content);\n          }, 200);\n        },\n        onHide: () => {\n          this.$liveRegion.html('');\n        },\n      });\n      Craft.initUiElements(this.hud.$body);\n    } else {\n      this.hud.show();\n    }\n  },\n\n  destroy: function () {\n    this.$icon.removeData('infoicon');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Light Switch\n */\nCraft.LightSwitch = Garnish.Base.extend(\n  {\n    settings: null,\n    $outerContainer: null,\n    $innerContainer: null,\n    $input: null,\n    small: false,\n    on: false,\n    indeterminate: false,\n    dragger: null,\n\n    dragStartMargin: null,\n\n    init: function (outerContainer, settings) {\n      this.$outerContainer = $(outerContainer);\n\n      // Is this already a lightswitch?\n      if (this.$outerContainer.data('lightswitch')) {\n        console.warn('Double-instantiating a lightswitch on an element');\n        this.$outerContainer.data('lightswitch').destroy();\n      }\n\n      this.$outerContainer.data('lightswitch', this);\n\n      this.small = this.$outerContainer.hasClass('small');\n\n      this.setSettings(settings, Craft.LightSwitch.defaults);\n\n      this.$innerContainer = this.$outerContainer.find(\n        '.lightswitch-container:first'\n      );\n      this.$input = this.$outerContainer.find('input:first');\n\n      // If the input is disabled, go no further\n      if (this.$input.prop('disabled')) {\n        return;\n      }\n\n      this.on = this.$outerContainer.hasClass('on');\n      this.indeterminate = this.$outerContainer.hasClass('indeterminate');\n\n      this.addListener(this.$outerContainer, 'mousedown', '_onMouseDown');\n      this.addListener(this.$outerContainer, 'keydown', '_onKeyDown');\n\n      this.dragger = new Garnish.BaseDrag(this.$outerContainer, {\n        axis: Garnish.X_AXIS,\n        ignoreHandleSelector: null,\n        onDragStart: this._onDragStart.bind(this),\n        onDrag: this._onDrag.bind(this),\n        onDragStop: this._onDragStop.bind(this),\n      });\n\n      // Does the input have on/off labels?\n      let $wrapper = this.$outerContainer.parent(\n        '.lightswitch-inner-container'\n      );\n      if ($wrapper.length) {\n        this.addListener(\n          $wrapper.children('span[data-toggle=\"off\"]'),\n          'click',\n          this.turnOff\n        );\n        this.addListener(\n          $wrapper.children('span[data-toggle=\"on\"]'),\n          'click',\n          this.turnOn\n        );\n      }\n    },\n\n    turnOn: function (muteEvent) {\n      var changed = !this.on;\n\n      this.on = true;\n      this.indeterminate = false;\n\n      this.$outerContainer.addClass('dragging');\n\n      if (Garnish.prefersReducedMotion()) {\n        this.$innerContainer.css('margin-' + Craft.left, 0);\n      } else {\n        var animateCss = {};\n        animateCss['margin-' + Craft.left] = 0;\n        this.$innerContainer\n          .velocity('stop')\n          .velocity(\n            animateCss,\n            Craft.LightSwitch.animationDuration,\n            this._onSettle.bind(this)\n          );\n      }\n\n      this.$input.val(this.settings.value);\n      this.$outerContainer.addClass('on');\n      this.$outerContainer.removeClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'true');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    turnOff: function (muteEvent) {\n      var changed = this.on || this.indeterminate;\n\n      this.on = false;\n      this.indeterminate = false;\n\n      this.$outerContainer.addClass('dragging');\n\n      if (Garnish.prefersReducedMotion()) {\n        this.$innerContainer.css('margin-' + Craft.left, this._getOffMargin());\n      } else {\n        var animateCss = {};\n        animateCss['margin-' + Craft.left] = this._getOffMargin();\n        this.$innerContainer\n          .velocity('stop')\n          .velocity(\n            animateCss,\n            Craft.LightSwitch.animationDuration,\n            this._onSettle.bind(this)\n          );\n      }\n\n      this.$input.val('');\n      this.$outerContainer.removeClass('on');\n      this.$outerContainer.removeClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'false');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    turnIndeterminate: function (muteEvent) {\n      var changed = !this.indeterminate;\n\n      this.on = false;\n      this.indeterminate = true;\n\n      this.$outerContainer.addClass('dragging');\n      var animateCss = {};\n      animateCss['margin-' + Craft.left] = this._getOffMargin() / 2;\n      this.$innerContainer\n        .velocity('stop')\n        .velocity(\n          animateCss,\n          Craft.LightSwitch.animationDuration,\n          this._onSettle.bind(this)\n        );\n\n      this.$input.val(this.settings.indeterminateValue);\n      this.$outerContainer.removeClass('on');\n      this.$outerContainer.addClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'mixed');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    toggle: function () {\n      if (this.indeterminate || !this.on) {\n        this.turnOn();\n      } else {\n        this.turnOff();\n      }\n    },\n\n    onChange: function () {\n      this.trigger('change');\n      this.settings.onChange(this.on);\n      this.$outerContainer.trigger('change');\n    },\n\n    _onMouseDown: function () {\n      this.addListener(Garnish.$doc, 'mouseup', '_onMouseUp');\n    },\n\n    _onMouseUp: function () {\n      this.removeListener(Garnish.$doc, 'mouseup');\n\n      // Was this a click?\n      if (!this.dragger.dragging) {\n        this.toggle();\n      }\n    },\n\n    _onKeyDown: function (event) {\n      switch (event.keyCode) {\n        case Garnish.SPACE_KEY: {\n          this.toggle();\n          event.preventDefault();\n          break;\n        }\n        case Garnish.RIGHT_KEY: {\n          if (Craft.orientation === 'ltr') {\n            this.turnOn();\n          } else {\n            this.turnOff();\n          }\n\n          event.preventDefault();\n          break;\n        }\n        case Garnish.LEFT_KEY: {\n          if (Craft.orientation === 'ltr') {\n            this.turnOff();\n          } else {\n            this.turnOn();\n          }\n\n          event.preventDefault();\n          break;\n        }\n      }\n    },\n\n    _getMargin: function () {\n      return parseInt(this.$innerContainer.css('margin-' + Craft.left));\n    },\n\n    _onDragStart: function () {\n      this.$outerContainer.addClass('dragging');\n      this.dragStartMargin = this._getMargin();\n    },\n\n    _onDrag: function () {\n      var margin;\n\n      if (Craft.orientation === 'ltr') {\n        margin = this.dragStartMargin + this.dragger.mouseDistX;\n      } else {\n        margin = this.dragStartMargin - this.dragger.mouseDistX;\n      }\n\n      if (margin < this._getOffMargin()) {\n        margin = this._getOffMargin();\n      } else if (margin > 0) {\n        margin = 0;\n      }\n\n      this.$innerContainer.css('margin-' + Craft.left, margin);\n    },\n\n    _onDragStop: function () {\n      var margin = this._getMargin();\n\n      if (margin > this._getOffMargin() / 2) {\n        this.turnOn();\n      } else {\n        this.turnOff();\n      }\n    },\n\n    _onSettle: function () {\n      this.$outerContainer.removeClass('dragging');\n    },\n\n    destroy: function () {\n      this.$outerContainer.removeData('lightswitch');\n      this.base();\n      this.dragger.destroy();\n    },\n\n    _getOffMargin: function () {\n      return this.small ? -10 : -12;\n    },\n  },\n  {\n    animationDuration: 100,\n    defaults: {\n      value: '1',\n      indeterminateValue: '-',\n      onChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Listbox\n */\nCraft.Listbox = Garnish.Base.extend(\n  {\n    $container: null,\n    $options: null,\n    $selectedOption: null,\n    selectedOptionIndex: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n      this.setSettings(settings, Craft.Listbox.defaults);\n\n      // Is this already a listbox?\n      if (this.$container.data('listbox')) {\n        console.warn('Double-instantiating a listbox on an element');\n        this.$container.data('listbox').destroy();\n      }\n\n      this.$container.data('listbox', this);\n      // todo: drop [role=option] in Craft 5\n      this.$options = this.$container.find('button,[role=option]');\n\n      // is there already a selected option?\n      // todo: drop [aria-selected=true] & attr normalization in Craft 5\n      this.$selectedOption = this.$options\n        .filter('[aria-pressed=true],[aria-selected=true]')\n        .removeAttr('aria-selected')\n        .attr('aria-pressed', 'true');\n      if (this.$selectedOption.length) {\n        this.selectedOptionIndex = this.$options.index(this.$selectedOption);\n      } else {\n        this.$selectedOption = null;\n      }\n\n      this.addListener(this.$options, 'click', (ev) => {\n        this.select(this.$options.index($(ev.currentTarget)));\n        ev.preventDefault();\n      });\n    },\n\n    select: function (index) {\n      if (\n        index < 0 ||\n        index >= this.$options.length ||\n        index === this.selectedOptionIndex\n      ) {\n        return;\n      }\n\n      if (this.$selectedOption) {\n        this.$selectedOption\n          .removeClass(this.settings.selectedClass)\n          .attr('aria-pressed', 'false');\n      }\n\n      this.$selectedOption = this.$options\n        .eq(index)\n        .addClass(this.settings.selectedClass)\n        .attr('aria-pressed', 'true');\n\n      this.selectedOptionIndex = index;\n\n      this.settings.onChange(this.$selectedOption, index);\n      this.trigger('change', {\n        $selectedOption: this.$selectedOption,\n        selectedOptionIndex: index,\n      });\n    },\n\n    disable: function () {\n      this.base();\n      this.$container.attr('aria-disabled', 'true');\n    },\n\n    enable: function () {\n      this.base();\n      this.$container.removeAttr('aria-disabled');\n    },\n\n    destroy: function () {\n      this.$container.removeData('listbox');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      selectedClass: 'active',\n      focusClass: 'focus',\n      onChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Live Preview\n */\nCraft.LivePreview = Garnish.Base.extend(\n  {\n    $extraFields: null,\n    $trigger: null,\n    $shade: null,\n    $editorContainer: null,\n    $editor: null,\n    $dragHandle: null,\n    $previewContainer: null,\n    $iframeContainer: null,\n    $iframe: null,\n    $fieldPlaceholder: null,\n\n    previewUrl: null,\n    token: null,\n    basePostData: null,\n    inPreviewMode: false,\n    fields: null,\n    lastPostData: null,\n    updateIframeInterval: null,\n    loading: false,\n    checkAgain: false,\n\n    dragger: null,\n    dragStartEditorWidth: null,\n\n    _slideInOnIframeLoad: false,\n\n    _scrollX: null,\n    _scrollY: null,\n\n    _editorWidth: null,\n    _editorWidthInPx: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.LivePreview.defaults);\n\n      // Should preview requests use a specific URL?\n      // This won't affect how the request gets routed (the action param will override it),\n      // but it will allow the templates to change behavior based on the request URI.\n      if (this.settings.previewUrl) {\n        this.previewUrl = this.settings.previewUrl;\n      } else {\n        this.previewUrl = Craft.baseSiteUrl.replace(/\\/+$/, '') + '/';\n      }\n\n      // Load the preview over SSL if the current request is\n      if (document.location.protocol === 'https:') {\n        this.previewUrl = this.previewUrl.replace(/^http:/, 'https:');\n      }\n\n      // Set the base post data\n      this.basePostData = $.extend({}, this.settings.previewParams);\n\n      // Find the DOM elements\n      this.$extraFields = $(this.settings.extraFields);\n      this.$trigger = $(this.settings.trigger);\n      this.$fieldPlaceholder = $('<div/>');\n\n      // Set the initial editor width\n      this.editorWidth = Craft.getLocalStorage(\n        'LivePreview.editorWidth',\n        Craft.LivePreview.defaultEditorWidth\n      );\n\n      // Event Listeners\n      this.addListener(this.$trigger, 'activate', 'toggle');\n\n      Craft.cp.on('beforeSaveShortcut', () => {\n        if (this.inPreviewMode) {\n          this.moveFieldsBack();\n        }\n      });\n\n      Craft.Preview.instances.push(this);\n    },\n\n    get editorWidth() {\n      return this._editorWidth;\n    },\n\n    get editorWidthInPx() {\n      return this._editorWidthInPx;\n    },\n\n    set editorWidth(width) {\n      var inPx;\n\n      // Is this getting set in pixels?\n      if (width >= 1) {\n        inPx = width;\n        width /= Garnish.$win.width();\n      } else {\n        inPx = Math.round(width * Garnish.$win.width());\n      }\n\n      // Make sure it's no less than the minimum\n      if (inPx < Craft.LivePreview.minEditorWidthInPx) {\n        inPx = Craft.LivePreview.minEditorWidthInPx;\n        width = inPx / Garnish.$win.width();\n      }\n\n      this._editorWidth = width;\n      this._editorWidthInPx = inPx;\n    },\n\n    toggle: function () {\n      if (this.inPreviewMode) {\n        this.exit();\n      } else {\n        this.enter();\n      }\n    },\n\n    enter: function () {\n      if (this.inPreviewMode) {\n        return;\n      }\n\n      if (!this.token) {\n        this.createToken();\n        return;\n      }\n\n      this.trigger('beforeEnter');\n      this.trigger('beforeOpen');\n\n      $(document.activeElement).trigger('blur');\n\n      if (!this.$editor) {\n        this.$shade = $('<div/>', {class: 'modal-shade dark'}).appendTo(\n          Garnish.$bod\n        );\n        this.$previewContainer = $('<div/>', {\n          class: 'lp-preview-container',\n        }).appendTo(Garnish.$bod);\n        this.$iframeContainer = $('<div/>', {\n          class: 'lp-iframe-container',\n        }).appendTo(this.$previewContainer);\n        this.$editorContainer = $('<div/>', {\n          class: 'lp-editor-container',\n        }).appendTo(Garnish.$bod);\n\n        var $editorHeader = $('<header/>', {class: 'flex'}).appendTo(\n          this.$editorContainer\n        );\n        this.$editor = $('<form/>', {class: 'lp-editor'}).appendTo(\n          this.$editorContainer\n        );\n        this.$dragHandle = $('<div/>', {class: 'lp-draghandle'}).appendTo(\n          this.$editorContainer\n        );\n        var $closeBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Close Preview'),\n        }).appendTo($editorHeader);\n        $('<div/>', {class: 'flex-grow'}).appendTo($editorHeader);\n        let $saveBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn submit',\n          text: Craft.t('app', 'Save'),\n        }).appendTo($editorHeader);\n\n        this.dragger = new Garnish.BaseDrag(this.$dragHandle, {\n          axis: Garnish.X_AXIS,\n          onDragStart: this._onDragStart.bind(this),\n          onDrag: this._onDrag.bind(this),\n          onDragStop: this._onDragStop.bind(this),\n        });\n\n        this.addListener($closeBtn, 'click', 'exit');\n        this.addListener($saveBtn, 'click', 'save');\n      }\n\n      // Set the sizes\n      this.handleWindowResize();\n      this.addListener(Garnish.$win, 'resize', 'handleWindowResize');\n\n      this.$editorContainer.css(Craft.left, -this.editorWidthInPx + 'px');\n      this.$previewContainer.css(Craft.right, -this.getIframeWidth());\n\n      // Move all the fields into the editor rather than copying them\n      // so any JS that's referencing the elements won't break.\n      this.fields = [];\n      var $fields = $(this.settings.fields);\n\n      for (var i = 0; i < $fields.length; i++) {\n        var $field = $($fields[i]),\n          $clone = this._getClone($field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter($field);\n        $field.detach();\n        this.$fieldPlaceholder.replaceWith($clone);\n        $field.appendTo(this.$editor);\n\n        this.fields.push({\n          $field: $field,\n          $clone: $clone,\n        });\n      }\n\n      if (this.updateIframe()) {\n        this._slideInOnIframeLoad = true;\n      } else {\n        this.slideIn();\n      }\n\n      Craft.ElementThumbLoader.retryAll();\n\n      Garnish.uiLayerManager.addLayer(this.$sidebar);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.exit();\n      });\n\n      this.inPreviewMode = true;\n      this.trigger('enter');\n      this.trigger('open');\n    },\n\n    createToken: function () {\n      const data = {previewAction: this.settings.previewAction};\n      Craft.sendActionRequest('POST', 'live-preview/create-token', {data}).then(\n        (response) => {\n          this.token = response.data.token;\n          this.enter();\n        }\n      );\n    },\n\n    save: function () {\n      Craft.cp.submitPrimaryForm();\n    },\n\n    handleWindowResize: function () {\n      // Reset the width so the min width is enforced\n      this.editorWidth = this.editorWidth;\n\n      // Update the editor/iframe sizes\n      this.updateWidths();\n    },\n\n    slideIn: function () {\n      $('html').addClass('noscroll');\n      this.$shade.velocity('fadeIn');\n\n      this.$editorContainer\n        .show()\n        .velocity('stop')\n        .animateLeft(0, 'slow', () => {\n          this.trigger('slideIn');\n          Garnish.$win.trigger('resize');\n        });\n\n      this.$previewContainer\n        .show()\n        .velocity('stop')\n        .animateRight(0, 'slow', () => {\n          this.updateIframeInterval = setInterval(\n            this.updateIframe.bind(this),\n            1000\n          );\n        });\n    },\n\n    exit: function () {\n      if (!this.inPreviewMode) {\n        return;\n      }\n\n      this.trigger('beforeExit');\n      this.trigger('beforeClose');\n\n      $('html').removeClass('noscroll');\n\n      this.removeListener(Garnish.$win, 'resize');\n      Garnish.uiLayerManager.removeLayer();\n\n      if (this.updateIframeInterval) {\n        clearInterval(this.updateIframeInterval);\n      }\n\n      this.moveFieldsBack();\n\n      this.$shade.delay(200).velocity('fadeOut');\n\n      this.$editorContainer\n        .velocity('stop')\n        .animateLeft(-this.editorWidthInPx, 'slow', () => {\n          for (var i = 0; i < this.fields.length; i++) {\n            this.fields[i].$newClone.remove();\n          }\n          this.$editorContainer.hide();\n          this.trigger('slideOut');\n        });\n\n      this.$previewContainer\n        .velocity('stop')\n        .animateRight(-this.getIframeWidth(), 'slow', () => {\n          this.$previewContainer.hide();\n        });\n\n      Craft.ElementThumbLoader.retryAll();\n\n      this.inPreviewMode = false;\n      this.trigger('exit');\n      this.trigger('close');\n    },\n\n    moveFieldsBack: function () {\n      for (var i = 0; i < this.fields.length; i++) {\n        var field = this.fields[i];\n        field.$newClone = this._getClone(field.$field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter(field.$field);\n        field.$field.detach();\n        this.$fieldPlaceholder.replaceWith(field.$newClone);\n        field.$clone.replaceWith(field.$field);\n      }\n\n      Garnish.$win.trigger('resize');\n    },\n\n    getIframeWidth: function () {\n      return Garnish.$win.width() - this.editorWidthInPx;\n    },\n\n    updateWidths: function () {\n      this.$editorContainer.css('width', this.editorWidthInPx + 'px');\n      this.$previewContainer.width(this.getIframeWidth());\n    },\n\n    updateIframe: function (force) {\n      if (force) {\n        this.lastPostData = null;\n      }\n\n      if (!this.inPreviewMode) {\n        return false;\n      }\n\n      if (this.loading) {\n        this.checkAgain = true;\n        return false;\n      }\n\n      // Has the post data changed?\n      var postData = $.extend(\n        Garnish.getPostData(this.$editor),\n        Garnish.getPostData(this.$extraFields)\n      );\n\n      if (\n        !this.lastPostData ||\n        !Craft.compare(postData, this.lastPostData, false)\n      ) {\n        this.lastPostData = postData;\n        this.loading = true;\n\n        var $doc = this.$iframe\n          ? $(this.$iframe[0].contentWindow.document)\n          : null;\n\n        this._scrollX = $doc ? $doc.scrollLeft() : 0;\n        this._scrollY = $doc ? $doc.scrollTop() : 0;\n\n        $.ajax({\n          url:\n            this.previewUrl +\n            (this.previewUrl.indexOf('?') !== -1 ? '&' : '?') +\n            Craft.tokenParam +\n            '=' +\n            this.token,\n          method: 'POST',\n          data: $.extend({}, postData, this.basePostData),\n          headers: {\n            'X-Craft-Token': this.token,\n          },\n          xhrFields: {\n            withCredentials: true,\n          },\n          crossDomain: true,\n          success: this.handleSuccess.bind(this),\n          error: this.handleError.bind(this),\n        });\n\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    forceUpdateIframe: function () {\n      return this.updateIframe(true);\n    },\n\n    handleSuccess: function (data) {\n      var html =\n        data +\n        '<script type=\"text/javascript\">window.scrollTo(' +\n        this._scrollX +\n        ', ' +\n        this._scrollY +\n        ');</script>';\n\n      // Create a new iframe\n      var $iframe = $('<iframe class=\"lp-preview\" frameborder=\"0\"/>');\n      if (this.$iframe) {\n        $iframe.insertBefore(this.$iframe);\n      } else {\n        $iframe.appendTo(this.$iframeContainer);\n      }\n\n      this.addListener($iframe, 'load', function () {\n        if (this.$iframe) {\n          this.$iframe.remove();\n        }\n        this.$iframe = $iframe;\n\n        if (this._slideInOnIframeLoad) {\n          this.slideIn();\n          this._slideInOnIframeLoad = false;\n        }\n\n        this.removeListener($iframe, 'load');\n      });\n\n      Garnish.requestAnimationFrame(() => {\n        $iframe[0].contentWindow.document.open();\n        $iframe[0].contentWindow.document.write(html);\n        $iframe[0].contentWindow.document.close();\n        this.onResponse();\n      });\n    },\n\n    handleError: function () {\n      this.onResponse();\n    },\n\n    onResponse: function () {\n      this.loading = false;\n\n      if (this.checkAgain) {\n        this.checkAgain = false;\n        this.updateIframe();\n      }\n    },\n\n    _getClone: function ($field) {\n      var $clone = $field.clone();\n\n      // clone() won't account for input values that have changed since the original HTML set them\n      Garnish.copyInputValues($field, $clone);\n\n      // Remove any id= attributes\n      $clone.attr('id', '');\n      $clone.find('[id]').attr('id', '');\n\n      return $clone;\n    },\n\n    _onDragStart: function () {\n      this.dragStartEditorWidth = this.editorWidthInPx;\n      this.$previewContainer.addClass('dragging');\n    },\n\n    _onDrag: function () {\n      if (Craft.orientation === 'ltr') {\n        this.editorWidth = this.dragStartEditorWidth + this.dragger.mouseDistX;\n      } else {\n        this.editorWidth = this.dragStartEditorWidth - this.dragger.mouseDistX;\n      }\n\n      this.updateWidths();\n      this.trigger('drag');\n    },\n\n    _onDragStop: function () {\n      this.$previewContainer.removeClass('dragging');\n      Craft.setLocalStorage('LivePreview.editorWidth', this.editorWidth);\n    },\n\n    destroy: function () {\n      Craft.Preview.instances = Craft.Preview.instances.filter(\n        (o) => o !== this\n      );\n      this.base();\n    },\n  },\n  {\n    defaultEditorWidth: 0.33,\n    minEditorWidthInPx: 320,\n    instances: [],\n\n    defaults: {\n      trigger: '.livepreviewbtn',\n      fields: null,\n      extraFields: null,\n      previewUrl: null,\n      previewAction: null,\n      previewParams: {},\n    },\n\n    getActive: function () {\n      for (let preview of Craft.LivePreview.instances) {\n        if (preview.inPreviewMode) {\n          return preview;\n        }\n      }\n    },\n  }\n);\n\nCraft.LivePreview.init = function (settings) {\n  Craft.livePreview = new Craft.LivePreview(settings);\n};\n","/** global: Craft */\n\n/**\n * Nested element manager\n */\nCraft.NestedElementManager = Garnish.Base.extend(\n  {\n    $container: null,\n    elementType: null,\n    $createBtn: null,\n\n    // cards\n    $elements: null,\n    elementSort: null,\n\n    // index\n    elementIndex: null,\n\n    /**\n     * @type {Craft.ElementEditor|null}\n     */\n    elementEditor: null,\n\n    init: function (container, elementType, settings) {\n      this.$container = $(container);\n      this.elementType = elementType;\n      this.setSettings(settings, Craft.NestedElementManager.defaults);\n\n      // Is this already a nested element manager?\n      if (this.$container.data('nestedElementManager')) {\n        console.warn(\n          'Double-instantiating a nested element manager on an element'\n        );\n        this.$container.data('nestedElementManager').destroy();\n      }\n\n      this.$container.data('nestedElementManager', this);\n\n      if (this.settings.mode === 'cards') {\n        if (this.$container.is(':has(.elements)')) {\n          this.initCards();\n        }\n      } else {\n        this.initElementIndex();\n      }\n\n      if (this.settings.canCreate) {\n        this.$createBtn = Craft.ui\n          .createButton({\n            label: this.settings.createButtonLabel,\n            spinner: true,\n          })\n          .addClass('add icon disabled');\n\n        if (this.settings.mode === 'cards') {\n          const $btnContainer = $('<div/>').appendTo(this.$container);\n          this.$createBtn.addClass('dashed').appendTo($btnContainer);\n          this.updateCreateBtn();\n        } else {\n          this.$createBtn.appendTo(this.elementIndex.$toolbar);\n        }\n\n        if (Array.isArray(this.settings.createAttributes)) {\n          const createMenuId = `menu-${Math.floor(Math.random() * 1000000)}`;\n          const $menu = $('<div/>', {\n            id: createMenuId,\n            class: 'menu menu--disclosure',\n          }).insertAfter(this.$createBtn);\n          const $ul = $('<ul/>').appendTo($menu);\n          for (let type of this.settings.createAttributes) {\n            const $li = $('<li/>').appendTo($ul);\n            let buttonHtml = '';\n            if (type.icon) {\n              const $icon = $(`<span class=\"icon\">${type.icon}</span>`);\n              if (type.color) {\n                $icon.addClass(type.color);\n              }\n              buttonHtml += $icon.prop('outerHTML');\n            }\n            buttonHtml += `<span class=\"label\">${type.label}</span>`;\n            const $button = $('<button/>', {\n              type: 'button',\n              class: 'menu-item',\n              html: buttonHtml,\n            }).appendTo($li);\n            this.addListener($button, 'activate', (ev) => {\n              ev.preventDefault();\n              this.$createBtn.data('disclosureMenu').hide();\n              this.createElement(type.attributes);\n            });\n          }\n          this.$createBtn\n            .attr('aria-controls', createMenuId)\n            .attr('data-disclosure-trigger', 'true')\n            .addClass('menubtn')\n            .disclosureMenu();\n        } else {\n          this.addListener(this.$createBtn, 'activate', (ev) => {\n            ev.preventDefault();\n            this.createElement(this.settings.createAttributes);\n          });\n        }\n      }\n\n      setTimeout(() => {\n        this.elementEditor = this.$container\n          .closest('form')\n          .data('elementEditor');\n\n        if (this.elementEditor) {\n          this.elementEditor.on('update', () => {\n            this.settings.ownerId = this.elementEditor.getDraftElementId(\n              this.settings.ownerId\n            );\n\n            if (this.elementIndex) {\n              this.elementIndex.settings.criteria[this.settings.ownerIdParam] =\n                this.settings.ownerId;\n            }\n          });\n        }\n      }, 100);\n    },\n\n    initCards() {\n      this.$elements = this.$container.children('.elements');\n\n      // Was .elements just created?\n      if (!this.$elements.length) {\n        this.$elements = $('<ul/>', {\n          class: `elements ${this.settings.showInGrid ? 'card-grid' : 'cards'}`,\n        }).prependTo(this.$container);\n        this.$container.children('.zilch').addClass('hidden');\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort = new Garnish.DragSort({\n          container: this.$elements,\n          handle:\n            '> .element > .card-actions-container > .card-actions > .move',\n          ignoreHandleSelector: null,\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onSortChange(this.elementSort.$draggee);\n          },\n        });\n      }\n\n      for (let element of this.$elements.children().toArray()) {\n        this.initElement($(element).children('.element'));\n      }\n    },\n\n    deinitCards() {\n      if (!this.$elements) {\n        return;\n      }\n\n      this.$elements.remove();\n      this.$elements = null;\n      this.elementSort.destroy();\n      this.elementSort = null;\n      this.$container.children('.zilch').removeClass('hidden');\n    },\n\n    initElementIndex() {\n      this.elementIndex = Craft.createElementIndex(\n        this.elementType,\n        this.$container,\n        Object.assign(\n          {\n            context: 'embedded-index',\n            sortable: this.settings.sortable,\n          },\n          this.settings.indexSettings,\n          {\n            canDuplicateElements: ($selectedItems) => {\n              return this.canCreate($selectedItems.length);\n            },\n            canDeleteElements: ($selectedItems) => {\n              return this.canDelete($selectedItems.length);\n            },\n            onBeforeDuplicateElements: async () => {\n              await this.markAsDirty();\n            },\n            onDuplicateElements: async () => {\n              await this.markAsDirty();\n            },\n            onBeforeDeleteElements: async () => {\n              await this.markAsDirty();\n            },\n            onDeleteElements: async () => {\n              await this.markAsDirty();\n            },\n            onBeforeUpdateElements: () => {\n              if (this.$createBtn) {\n                this.$createBtn.addClass('disabled');\n              }\n            },\n            onCountResults: () => {\n              this.updateCreateBtn();\n            },\n            onSortChange: async ($draggee) => {\n              await this.onSortChange($draggee);\n            },\n          }\n        )\n      );\n    },\n\n    async markAsDirty() {\n      if (this.elementEditor && this.settings.baseInputName) {\n        await this.elementEditor.setFormValue(this.settings.baseInputName, '*');\n      }\n    },\n\n    async getBaseActionData() {\n      // this could end up updating this.settings.ownerId\n      await this.markAsDirty();\n\n      return {\n        ownerElementType: this.settings.ownerElementType,\n        ownerId: this.settings.ownerId,\n        ownerSiteId: this.settings.ownerSiteId,\n        attribute: this.settings.attribute,\n      };\n    },\n\n    async onSortChange($draggee) {\n      const id = parseInt($draggee.find('.element').data('id'));\n      const allIds = this.getElementIds();\n\n      const data = Object.assign(await this.getBaseActionData(), {\n        elementIds: [id],\n        offset: this.getBaseElementOffset() + allIds.indexOf(id),\n      });\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'nested-elements/reorder',\n          {data}\n        );\n        Craft.cp.displayNotice(response.data.message);\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n      }\n\n      await this.markAsDirty();\n    },\n\n    updateCreateBtn() {\n      if (!this.$createBtn) {\n        return;\n      }\n\n      if (this.canCreate()) {\n        this.$createBtn.removeClass('disabled');\n      } else {\n        this.$createBtn.addClass('disabled');\n      }\n    },\n\n    canCreate(num) {\n      if (!this.settings.canCreate) {\n        return false;\n      }\n\n      if (!this.settings.maxElements) {\n        return true;\n      }\n\n      const total = this.getTotalElements();\n\n      return total !== null && total + (num || 1) <= this.settings.maxElements;\n    },\n\n    canDelete(num) {\n      if (!this.settings.minElements) {\n        return true;\n      }\n\n      const total = this.getTotalElements();\n\n      return total !== null && total - (num || 1) >= this.settings.minElements;\n    },\n\n    getElementIds() {\n      let elements;\n\n      if (this.settings.mode === 'cards') {\n        elements = this.$elements.find('> li > .element').toArray();\n      } else {\n        elements = this.elementIndex.view\n          .getAllElements()\n          .toArray()\n          .map((container) => container.querySelector('.element'));\n      }\n\n      return elements\n        .map((element) => element.getAttribute('data-id'))\n        .filter((id) => id)\n        .map((id) => parseInt(id));\n    },\n\n    getTotalElements() {\n      if (this.settings.mode === 'cards') {\n        return this.$elements ? this.$elements.children().length : 0;\n      }\n\n      if (this.elementIndex.isIndexBusy) {\n        return null;\n      }\n      return this.elementIndex.totalUnfilteredResults;\n    },\n\n    getBaseElementOffset() {\n      if (this.settings.mode === 'cards') {\n        return 0;\n      }\n\n      return (\n        this.elementIndex.settings.batchSize * (this.elementIndex.page - 1)\n      );\n    },\n\n    createElement: async function (attributes) {\n      if (this.$createBtn) {\n        this.$createBtn.addClass('loading');\n      }\n\n      try {\n        await this.markAsDirty();\n\n        attributes = Object.assign(\n          {\n            elementType: this.elementType,\n            ownerId: this.settings.ownerId,\n            siteId: this.settings.ownerSiteId,\n          },\n          attributes\n        );\n\n        const {data} = await Craft.sendActionRequest(\n          'POST',\n          'elements/create',\n          {\n            data: attributes,\n          }\n        );\n\n        const slideout = Craft.createElementEditor(this.elementType, {\n          siteId: data.element.siteId,\n          elementId: data.element.id,\n          draftId: data.element.draftId,\n          params: {\n            fresh: 1,\n          },\n        });\n\n        slideout.on('submit', async () => {\n          if (this.settings.mode === 'cards') {\n            this.addElementCard(data.element);\n          } else {\n            this.elementIndex.clearSearch();\n            this.elementIndex.updateElements();\n          }\n\n          await this.markAsDirty();\n        });\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n      } finally {\n        if (this.$createBtn) {\n          this.$createBtn.removeClass('loading');\n        }\n      }\n    },\n\n    initElement($element) {\n      if (Garnish.hasAttr($element, 'data-editable')) {\n        this.addListener($element, 'dblclick,taphold', (ev) => {\n          if ($(ev.target).closest('a[href],button,[role=button]').length) {\n            // Let the link/button do its thing\n            return;\n          }\n          Craft.createElementEditor(this.elementType, $element);\n        });\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.addItems($element.parent());\n      }\n\n      const $actionMenuBtn = $element.find('.action-btn');\n      const disclosureMenu = $actionMenuBtn\n        .disclosureMenu()\n        .data('disclosureMenu');\n\n      if (Garnish.hasAttr($element, 'data-deletable')) {\n        const ul = disclosureMenu.addGroup();\n        disclosureMenu.addItem(\n          {\n            icon: 'trash',\n            label: this.settings.deleteLabel || Craft.t('app', 'Delete'),\n            destructive: true,\n            onActivate: () => {\n              if (confirm(this.settings.deleteConfirmationMessage)) {\n                this.deleteElement($element);\n              }\n            },\n          },\n          ul\n        );\n      }\n    },\n\n    async deleteElement($element) {\n      const data = Object.assign(await this.getBaseActionData(), {\n        elementId: $element.data('id'),\n      });\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'nested-elements/delete',\n          {data}\n        );\n        Craft.cp.displayNotice(response.data.message);\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n        throw e;\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.removeItems($element);\n      }\n\n      $element.parent().remove();\n\n      // :empty isn't reliable due to text nodes\n      if (this.$elements.children().length === 0) {\n        this.deinitCards();\n      }\n\n      if (this.$createBtn) {\n        this.updateCreateBtn();\n        if (this.canCreate()) {\n          this.$createBtn.focus();\n        }\n      }\n\n      await this.markAsDirty();\n    },\n\n    addElementCard(element) {\n      if (this.$createBtn) {\n        this.$createBtn.addClass('loading');\n      }\n\n      Craft.sendActionRequest('POST', 'app/render-elements', {\n        data: {\n          elements: [\n            {\n              type: this.elementType,\n              id: element.id,\n              siteId: element.siteId,\n              instances: [\n                {\n                  context: 'field',\n                  ui: 'card',\n                  sortable: this.settings.sortable,\n                  showActionMenu: true,\n                },\n              ],\n            },\n          ],\n        },\n      })\n        .then(async ({data}) => {\n          if (!this.$elements) {\n            this.initCards();\n          }\n\n          const $li = $('<li/>').appendTo(this.$elements);\n          const $element = $(data.elements[element.id][0]).appendTo($li);\n          this.initElement($element);\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n          Craft.cp.elementThumbLoader.load($element);\n          this.updateCreateBtn();\n        })\n        .catch((e) => {\n          Craft.cp.displayError(e?.response?.data?.message);\n          throw e?.response?.data?.message ?? e;\n        })\n        .finally(() => {\n          if (this.$createBtn) {\n            this.$createBtn.removeClass('loading').focus();\n          }\n        });\n    },\n\n    destroy: function () {\n      this.$container.removeData('nestedElementManager');\n      this.base();\n    },\n  },\n  {\n    ownerId: null,\n    defaults: {\n      mode: 'cards',\n      showInGrid: false,\n      ownerElementType: null,\n      ownerId: null,\n      ownerSiteId: null,\n      attribute: null,\n      sortable: false,\n      indexSettings: {},\n      canCreate: false,\n      minElements: null,\n      maxElements: null,\n      createButtonLabel: Craft.t('app', 'Create'),\n      ownerIdParam: null,\n      createAttributes: null,\n      fieldHandle: null,\n      baseInputName: null,\n      deleteLabel: null,\n      deleteConfirmationMessage: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Password Input\n */\nCraft.PasswordInput = Garnish.Base.extend(\n  {\n    $passwordWrapper: null,\n    $passwordInput: null,\n    $textInput: null,\n    $currentInput: null,\n\n    $showPasswordToggle: null,\n    showingPassword: null,\n\n    init: function (passwordInput, settings) {\n      this.$passwordInput = $(passwordInput);\n      this.$passwordWrapper = this.$passwordInput.parent('.passwordwrapper');\n      this.settings = $.extend({}, Craft.PasswordInput.defaults, settings);\n\n      // Is this already a password input?\n      if (this.$passwordInput.data('passwordInput')) {\n        console.warn('Double-instantiating a password input on an element');\n        this.$passwordInput.data('passwordInput').destroy();\n      }\n\n      this.$passwordInput.data('passwordInput', this);\n\n      this.$showPasswordToggle = $(\n        '<button type=\"button\" class=\"invisible\" />'\n      );\n      this.$showPasswordToggle.addClass('password-toggle');\n      this.$showPasswordToggle.insertAfter(this.$passwordInput);\n\n      this.initInputFocusEvents(this.$passwordInput);\n      this.addListener(this.$showPasswordToggle, 'click', 'onClick');\n      this.hidePassword();\n\n      this.addListener(\n        this.$passwordWrapper.closest('form'),\n        'submit',\n        'hidePassword'\n      );\n    },\n\n    setCurrentInput: function ($input) {\n      if (this.$currentInput) {\n        // Swap the inputs, while preventing the focus animation\n        $input.insertAfter(this.$currentInput);\n        this.$currentInput.detach();\n        $input.trigger('focus');\n\n        // Restore the input value\n        $input.val(this.$currentInput.val());\n      }\n\n      this.$currentInput = $input;\n\n      this.addListener(\n        this.$currentInput,\n        'keypress,keyup,change,blur',\n        'onInputChange'\n      );\n    },\n\n    updateToggleLabel: function (label) {\n      this.$showPasswordToggle.text(label);\n    },\n\n    initInputFocusEvents: function ($input) {\n      this.addListener($input, 'focus', function () {\n        this.$passwordWrapper.addClass('focus');\n      });\n      this.addListener($input, 'blur', function () {\n        this.$passwordWrapper.removeClass('focus');\n      });\n    },\n\n    showPassword: function () {\n      if (this.showingPassword) {\n        return;\n      }\n\n      if (!this.$textInput) {\n        this.$textInput = this.$passwordInput.clone(true);\n        this.$textInput.attr({\n          type: 'text',\n          autocapitalize: 'off',\n        });\n        this.initInputFocusEvents(this.$textInput);\n      }\n\n      this.setCurrentInput(this.$textInput);\n      this.updateToggleLabel(Craft.t('app', 'Hide'));\n      this.showingPassword = true;\n    },\n\n    hidePassword: function () {\n      // showingPassword could be null, which is acceptable\n      if (this.showingPassword === false) {\n        return;\n      }\n\n      this.setCurrentInput(this.$passwordInput);\n      this.updateToggleLabel(Craft.t('app', 'Show'));\n      this.showingPassword = false;\n    },\n\n    togglePassword: function () {\n      if (this.showingPassword) {\n        this.hidePassword();\n      } else {\n        this.showPassword();\n      }\n\n      this.settings.onToggleInput(this.$currentInput);\n    },\n\n    onInputChange: function () {\n      if (this.$currentInput.val()) {\n        this.$showPasswordToggle.removeClass('invisible');\n      } else {\n        this.$showPasswordToggle.addClass('invisible');\n      }\n    },\n\n    onClick: function (ev) {\n      if (this.$currentInput[0].setSelectionRange) {\n        var selectionStart = this.$currentInput[0].selectionStart,\n          selectionEnd = this.$currentInput[0].selectionEnd;\n\n        this.togglePassword();\n        this.$currentInput[0].setSelectionRange(selectionStart, selectionEnd);\n      } else {\n        this.togglePassword();\n      }\n    },\n\n    destroy: function () {\n      this.$passwordInput.removeData('passwordInput');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      onToggleInput: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Preview\n */\nCraft.Preview = Garnish.Base.extend(\n  {\n    elementEditor: null,\n    formObserver: null,\n\n    $shade: null,\n    $editorContainer: null,\n    $editor: null,\n    $spinner: null,\n    $statusIcon: null,\n    $dragHandle: null,\n    $previewWrapper: null,\n    $previewContainer: null,\n    $previewSkipLink: null,\n    $bumperLink: null,\n    $notifier: null,\n    $iframeContainer: null,\n    $previewHeader: null,\n    $targetBtn: null,\n    $targetMenu: null,\n    $deviceTypeContainer: null,\n    $orientationBtn: null,\n    $refreshBtn: null,\n    $deviceMask: null,\n    $devicePreviewContainer: null,\n    $iframe: null,\n    iframeLoaded: false,\n    $tempInput: null,\n    $fieldPlaceholder: null,\n\n    isActive: false,\n    isVisible: false,\n    activeTarget: 0,\n\n    animationDuration: 'slow',\n\n    currentDeviceType: 'desktop',\n    deviceOrientation: null,\n    deviceWidth: '',\n    deviceHeight: '',\n    deviceMaskDimensions: {\n      phone: {\n        width: 375,\n        height: 753,\n      },\n      tablet: {\n        width: 768,\n        height: 1110,\n      },\n    },\n\n    draftId: null,\n    url: null,\n    fields: null,\n\n    iframeHeight: null,\n    scrollTop: null,\n    scrollLeft: null,\n\n    dragger: null,\n    dragStartEditorWidth: null,\n\n    _updateIframeProxy: null,\n\n    _editorWidth: null,\n    _editorWidthInPx: null,\n\n    init: function (elementEditor) {\n      this.elementEditor = elementEditor;\n\n      this._updateIframeProxy = this.updateIframe.bind(this);\n\n      this.$tempInput = $('<input/>', {\n        type: 'hidden',\n        name: '__PREVIEW_FIELDS__',\n        value: '1',\n      });\n      this.$fieldPlaceholder = $('<div/>');\n\n      // Set the initial editor width\n      this.editorWidth = Craft.getLocalStorage(\n        'LivePreview.editorWidth',\n        Craft.Preview.defaultEditorWidth\n      );\n\n      Craft.Preview.instances.push(this);\n    },\n\n    get editorWidth() {\n      return this._editorWidth;\n    },\n\n    get editorWidthInPx() {\n      return this._editorWidthInPx;\n    },\n\n    set editorWidth(width) {\n      var inPx;\n\n      // Is this getting set in pixels?\n      if (width >= 1) {\n        inPx = width;\n        width /= Garnish.$win.width();\n      } else {\n        inPx = Math.round(width * Garnish.$win.width());\n      }\n\n      // Make sure it's no less than the minimum\n      if (inPx < Craft.Preview.minEditorWidthInPx) {\n        inPx = Craft.Preview.minEditorWidthInPx;\n        width = inPx / Garnish.$win.width();\n      }\n\n      this._editorWidth = width;\n      this._editorWidthInPx = inPx;\n    },\n\n    open: function () {\n      if (this.isActive) {\n        return;\n      }\n\n      this.isActive = true;\n      this.trigger('beforeOpen');\n\n      $(document.activeElement).trigger('blur');\n\n      if (!this.$editor) {\n        const previewSkipLinkText = Craft.t('app', 'Skip to {title}', {\n          title: Craft.t('app', 'Top of preview'),\n        });\n\n        this.$shade = $('<div/>', {class: 'modal-shade dark'}).appendTo(\n          Garnish.$bod\n        );\n        this.$previewWrapper = $('<div/>', {\n          role: 'dialog',\n          'aria-modal': 'true',\n          'aria-labelledby': 'lp-preview-heading',\n        }).appendTo(Garnish.$bod);\n        this.$modalLabel = $('<h2/>', {\n          id: 'lp-preview-heading',\n          class: 'visually-hidden',\n          html: Craft.t('app', 'Preview'),\n        }).appendTo(this.$previewWrapper);\n        this.$editorContainer = $('<div/>', {\n          class: 'lp-editor-container',\n        }).appendTo(this.$previewWrapper);\n        this.$previewContainer = $('<div/>', {\n          class: 'lp-preview-container',\n          id: 'lp-preview-container',\n        }).appendTo(this.$previewWrapper);\n        this.$notifier = $('<span/>', {\n          class: 'visually-hidden',\n          role: 'status',\n        }).appendTo(this.$previewContainer);\n\n        var $editorHeader = $('<header/>', {class: 'flex'}).appendTo(\n          this.$editorContainer\n        );\n        this.$editor = $('<form/>', {class: 'lp-editor'}).appendTo(\n          this.$editorContainer\n        );\n        this.$dragHandle = $('<div/>', {class: 'lp-draghandle'}).appendTo(\n          this.$editorContainer\n        );\n        var $closeBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Close Preview'),\n        }).appendTo($editorHeader);\n        $('<div/>', {class: 'flex-grow'}).appendTo($editorHeader);\n        this.$spinner = $('<div/>', {\n          class: 'spinner hidden',\n          title: Craft.t('app', 'Saving'),\n        }).appendTo($editorHeader);\n        this.$statusIcon = $('<div/>', {class: 'invisible'}).appendTo(\n          $editorHeader\n        );\n        this.$statusMessage = $('<span/>', {\n          class: 'visually-hidden',\n          'aria-live': 'polite',\n        }).appendTo($editorHeader);\n        this.$previewSkipLink = $('<a/>', {\n          class: 'skip-link btn',\n          href: '#lp-preview-container',\n          html: previewSkipLinkText,\n        }).appendTo($editorHeader);\n\n        if (Craft.Pro) {\n          this.$previewHeader = $('<header/>', {\n            class: 'lp-preview-header',\n          }).appendTo(this.$previewContainer);\n\n          // Preview targets\n          if (this.elementEditor.settings.previewTargets.length > 1) {\n            this.$targetBtn = $('<button/>', {\n              type: 'button',\n              class: 'btn menubtn',\n              text: this.elementEditor.settings.previewTargets[0].label,\n            }).appendTo(this.$previewHeader);\n            this.$targetMenu = $('<div/>', {\n              class: 'menu lp-target-menu',\n            }).insertAfter(this.$targetBtn);\n            const $ul = $('<ul/>', {class: 'padded'}).appendTo(\n              this.$targetMenu\n            );\n            let $li, $a;\n            for (\n              let i = 0;\n              i < this.elementEditor.settings.previewTargets.length;\n              i++\n            ) {\n              $li = $('<li/>').appendTo($ul);\n              $a = $('<a/>', {\n                data: {target: i},\n                text: this.elementEditor.settings.previewTargets[i].label,\n                class: i === 0 ? 'sel' : null,\n              }).appendTo($li);\n            }\n            new Garnish.MenuBtn(this.$targetBtn, {\n              onOptionSelect: (option) => {\n                this.switchTarget($(option).data('target'));\n              },\n            });\n\n            $('<div class=\"flex-grow\"/>').appendTo(this.$previewHeader);\n          }\n\n          this._buildDeviceTypeFieldset();\n\n          $('<div class=\"flex-grow\"/>').appendTo(this.$previewHeader);\n          const $buttonContainer = $('<div class=\"buttons\"/>').appendTo(\n            this.$previewHeader\n          );\n\n          // Orientation toggle\n          this.$orientationBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn disabled',\n            'data-icon': 'rotate',\n            'aria-disabled': 'true',\n            text: Craft.t('app', 'Rotate'),\n            'aria-label': Craft.t('app', 'Rotate'),\n          }).appendTo($buttonContainer);\n          this.addListener(this.$orientationBtn, 'click', 'switchOrientation');\n\n          // Refresh button\n          this.$refreshBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            text: Craft.t('app', 'Refresh'),\n            'data-icon': 'refresh',\n          }).appendTo($buttonContainer);\n          this.addListener(this.$refreshBtn, 'click', () => {\n            this.updateIframe(false, true);\n          });\n\n          // Get the last stored orientation\n          this.deviceOrientation = Craft.getLocalStorage(\n            'LivePreview.orientation'\n          );\n        }\n\n        this.$iframeContainer = $('<div/>', {\n          class: 'lp-iframe-container',\n        }).appendTo(this.$previewContainer);\n        this.$devicePreviewContainer = $('<div/>', {\n          class: 'lp-device-preview-container',\n        }).appendTo(this.$iframeContainer);\n        this.$deviceMask = $('<div/>', {\n          class: 'lp-device-mask',\n        }).appendTo(this.$iframeContainer);\n\n        /* Prevents focus trap bug caused by iframe as last element */\n        this.$bumperLink = $('<a/>', {\n          class: 'skip-link btn lp-preview-container__bumper-link',\n          html: previewSkipLinkText,\n          href: '#lp-preview-container',\n        });\n        this.$bumperLink.appendTo(this.$previewContainer);\n\n        this.dragger = new Garnish.BaseDrag(this.$dragHandle, {\n          axis: Garnish.X_AXIS,\n          onDragStart: this._onDragStart.bind(this),\n          onDrag: this._onDrag.bind(this),\n          onDragStop: this._onDragStop.bind(this),\n        });\n\n        this.addListener($closeBtn, 'click', 'close');\n        this.addListener(this.$statusIcon, 'click', () => {\n          this.elementEditor.showStatusHud(this.$statusIcon);\n        });\n      }\n\n      // Set the sizes\n      this.handleWindowResize();\n      this.addListener(Garnish.$win, 'resize', 'handleWindowResize');\n\n      this.$editorContainer.css(Craft.left, -this.editorWidthInPx + 'px');\n      this.$previewContainer.css(Craft.right, -this.getIframeWidth());\n\n      // Find the fields, excluding nested fields\n      this.fields = [];\n      var $fields = $('#content .field').not($('#content .field .field'));\n\n      if ($fields.length) {\n        // Insert our temporary input before the first field so we know where to swap in the serialized form values\n        this.$tempInput.insertBefore($fields.get(0));\n\n        // Move all the fields into the editor rather than copying them\n        // so any JS that's referencing the elements won't break.\n        for (let i = 0; i < $fields.length; i++) {\n          let $field = $($fields[i]),\n            $clone = this._getClone($field);\n\n          // It's important that the actual field is added to the DOM *after* the clone,\n          // so any radio buttons in the field get deselected from the clone rather than the actual field.\n          this.$fieldPlaceholder.insertAfter($field);\n          $field.detach();\n          this.$fieldPlaceholder.replaceWith($clone);\n          $field.appendTo(this.$editor);\n\n          this.fields.push({\n            $field: $field,\n            $clone: $clone,\n          });\n        }\n      }\n\n      this.updateIframe();\n\n      this.formObserver = new Craft.FormObserver(this.$editor, () => {\n        this.elementEditor.checkForm();\n      });\n      this.elementEditor.on('update', this._updateIframeProxy);\n\n      Craft.ElementThumbLoader.retryAll();\n\n      this.trigger('open');\n    },\n\n    _getDeviceTypeTranslation: function (type) {\n      let translation;\n      switch (type) {\n        case 'phone':\n          translation = Craft.t('app', 'Mobile');\n          break;\n        case 'tablet':\n          translation = Craft.t('app', 'Tablet');\n          break;\n        default:\n          translation = Craft.t('app', 'Desktop');\n          break;\n      }\n      return translation;\n    },\n\n    _getDeviceOrientationTranslation: function (orientation) {\n      return orientation === 'portrait'\n        ? Craft.t('app', 'Portrait')\n        : Craft.t('app', 'Landscape');\n    },\n\n    _buildDeviceTypeFieldset: function () {\n      // Device type buttons\n      this.$deviceTypeContainer = $('<section/>', {\n        class: 'btngroup lp-device-type',\n        'aria-label': Craft.t('app', 'Device type'),\n      }).appendTo(this.$previewHeader);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--desktop active',\n        title: Craft.t('app', 'Desktop'),\n        'aria-label': Craft.t('app', 'Desktop'),\n        'aria-pressed': 'true',\n        data: {\n          width: '',\n          height: '',\n          deviceType: 'desktop',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--tablet',\n        title: Craft.t('app', 'Tablet'),\n        'aria-label': Craft.t('app', 'Tablet'),\n        'aria-pressed': 'false',\n        data: {\n          width: 768,\n          height: 1024,\n          deviceType: 'tablet',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--phone',\n        title: Craft.t('app', 'Mobile'),\n        'aria-label': Craft.t('app', 'Mobile'),\n        'aria-pressed': 'false',\n        data: {\n          width: 375,\n          height: 667,\n          deviceType: 'phone',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n\n      // Add functionality\n      this.deviceBtnGroup = new Craft.Listbox(this.$deviceTypeContainer, {\n        onChange: ($selectedOption) => {\n          this.switchDeviceType($selectedOption);\n        },\n      });\n    },\n\n    _activeTarget: function () {\n      return this.elementEditor.settings.previewTargets[this.activeTarget];\n    },\n\n    /**\n     * @returns {boolean}\n     * @private\n     */\n    _autoRefresh: function () {\n      const target = this._activeTarget();\n      return typeof typeof target.refresh === 'undefined' || !!target.refresh;\n    },\n\n    switchTarget: function (i) {\n      this.activeTarget = i;\n      this.$targetBtn.text(this.elementEditor.settings.previewTargets[i].label);\n      this.$targetMenu.find('a.sel').removeClass('sel');\n      this.$targetMenu.find('a').eq(i).addClass('sel');\n      this.updateIframe(true);\n      this.trigger('switchTarget', {\n        previewTarget: this.elementEditor.settings.previewTargets[i],\n      });\n    },\n\n    handleWindowResize: function () {\n      // Reset the width so the min width is enforced\n      this.editorWidth = this.editorWidth;\n\n      // Update the editor/iframe sizes\n      this.updateWidths();\n    },\n\n    slideIn: function () {\n      if (!this.isActive || this.isVisible) {\n        return;\n      }\n\n      $('html').addClass('noscroll');\n      this.$shade.velocity('fadeIn');\n\n      this.$editorContainer\n        .show()\n        .velocity('stop')\n        .animateLeft(\n          0,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            this.trigger('slideIn');\n            Garnish.$win.trigger('resize');\n          }\n        );\n\n      this.$previewContainer\n        .show()\n        .velocity('stop')\n        .animateRight(\n          0,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration)\n        );\n\n      this.isVisible = true;\n\n      Garnish.uiLayerManager.addLayer(this.$previewWrapper);\n      Garnish.hideModalBackgroundLayers();\n      Craft.setFocusWithin(this.$previewWrapper);\n      Craft.trapFocusWithin(this.$previewWrapper);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.close();\n      });\n    },\n\n    close: function () {\n      if (!this.isActive || !this.isVisible) {\n        return;\n      }\n\n      this.trigger('beforeClose');\n\n      $('html').removeClass('noscroll');\n\n      this.removeListener(Garnish.$win, 'resize');\n      Garnish.uiLayerManager.removeLayer();\n      Garnish.resetModalBackgroundLayerVisibility();\n\n      // Remove our temporary input and move the preview fields back into place\n      this.$tempInput.detach();\n      this.moveFieldsBack();\n\n      // Delay shade fade-out when animation is present\n      if (Garnish.prefersReducedMotion()) {\n        this.$shade.velocity('fadeOut');\n      } else {\n        this.$shade.delay(200).velocity('fadeOut');\n      }\n\n      this.$editorContainer\n        .velocity('stop')\n        .animateLeft(\n          -this.editorWidthInPx,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            for (var i = 0; i < this.fields.length; i++) {\n              this.fields[i].$newClone.remove();\n            }\n            this.$editorContainer.hide();\n            this.trigger('slideOut');\n          }\n        );\n\n      this.$previewContainer\n        .velocity('stop')\n        .animateRight(\n          -this.getIframeWidth(),\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n            this.$previewContainer.hide();\n          }\n        );\n\n      this.formObserver.destroy();\n      this.formObserver = null;\n      this.elementEditor.off('update', this._updateIframeProxy);\n\n      Craft.ElementThumbLoader.retryAll();\n\n      if (this.elementEditor.$previewBtn) {\n        this.elementEditor.$previewBtn.focus();\n      }\n\n      this.isActive = false;\n      this.isVisible = false;\n      this.trigger('close');\n    },\n\n    moveFieldsBack: function () {\n      for (var i = 0; i < this.fields.length; i++) {\n        var field = this.fields[i];\n        field.$newClone = this._getClone(field.$field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter(field.$field);\n        field.$field.detach();\n        this.$fieldPlaceholder.replaceWith(field.$newClone);\n        field.$clone.replaceWith(field.$field);\n      }\n\n      Garnish.$win.trigger('resize');\n      Garnish.$doc.trigger('scroll');\n    },\n\n    getIframeWidth: function () {\n      return Garnish.$win.width() - this.editorWidthInPx;\n    },\n\n    updateWidths: function () {\n      this.$editorContainer.css('width', this.editorWidthInPx + 'px');\n      this.$previewContainer.width(this.getIframeWidth());\n      if (this._devicePreviewIsActive()) {\n        this.updateDevicePreview();\n      }\n    },\n\n    _useIframeResizer: function () {\n      return Craft.previewIframeResizerOptions !== false;\n    },\n\n    /**\n     * @param {boolean} [resetScroll=false]\n     * @param {boolean} [refresh]\n     */\n    updateIframe: function (resetScroll, refresh) {\n      if (!this.isActive) {\n        return false;\n      }\n\n      // Ignore non-boolean resetScroll values\n      resetScroll = resetScroll === true;\n\n      // If the draft ID has changed or there's no iframe, we definitely need to refresh\n      if (\n        this.draftId !== (this.draftId = this.elementEditor.settings.draftId) ||\n        !this.$iframe\n      ) {\n        refresh = true;\n      }\n\n      const target = this._activeTarget();\n      if (typeof refresh === 'undefined') {\n        refresh = resetScroll || this._autoRefresh();\n      }\n\n      this.trigger('beforeUpdateIframe', {\n        previewTarget: target,\n        resetScroll: resetScroll,\n        refresh: refresh,\n      });\n\n      // If this is an existing preview target, make sure it wants to be refreshed automatically\n      if (!refresh) {\n        this.slideIn();\n        return;\n      }\n\n      this.elementEditor\n        .getTokenizedPreviewUrl(target.url, 'x-craft-live-preview')\n        .then((url) => {\n          // Maintain the current scroll position?\n          let sameHost;\n          if (resetScroll) {\n            this.scrollTop = null;\n            this.scrollLeft = null;\n          } else if (this.iframeLoaded && this.$iframe) {\n            if (this._useIframeResizer()) {\n              this.iframeHeight = this.$iframe.height();\n              this.scrollTop = this.$iframeContainer.scrollTop();\n              this.scrollLeft = this.$iframeContainer.scrollLeft();\n            } else {\n              sameHost = Craft.isSameHost(url);\n              if (sameHost && this.$iframe[0].contentWindow) {\n                this.scrollTop = $(\n                  this.$iframe[0].contentWindow.document\n                ).scrollTop();\n\n                this.scrollLeft = $(\n                  this.$iframe[0].contentWindow.document\n                ).scrollLeft();\n              }\n            }\n          }\n\n          this.iframeLoaded = false;\n\n          var $iframe = $('<iframe/>', {\n            class: 'lp-preview',\n            frameborder: 0,\n            src: url,\n            title: Craft.t('app', 'Preview'),\n          });\n\n          if (this.$iframe) {\n            this.$iframe.replaceWith($iframe);\n          } else {\n            $iframe.appendTo(this.$devicePreviewContainer);\n          }\n\n          // Keep the iframe height consistent with its content\n          if (this._useIframeResizer()) {\n            if (!resetScroll && this.iframeHeight !== null) {\n              $iframe.height(this.iframeHeight);\n              this.$iframeContainer.scrollTop(this.scrollTop);\n              this.$iframeContainer.scrollLeft(this.scrollLeft);\n            }\n\n            iFrameResize(\n              $.extend(\n                {\n                  checkOrigin: false,\n                  // Allow iframe scrolling until we've successfully initialized the resizer\n                  scrolling: true,\n                  onInit: (iframe) => {\n                    this.iframeLoaded = true;\n                    this.iframeHeight = null;\n                    this.scrollTop = null;\n                    this.scrollLeft = null;\n                    iframe.scrolling = 'no';\n                  },\n                },\n                Craft.previewIframeResizerOptions || {}\n              ),\n              $iframe[0]\n            );\n          } else {\n            $iframe.on('load', () => {\n              this.iframeLoaded = true;\n              if (!resetScroll && sameHost) {\n                $iframe[0].contentWindow.scrollTo(\n                  this.scrollLeft || 0,\n                  this.scrollTop || 0\n                );\n              }\n            });\n          }\n\n          this.url = url;\n          this.$iframe = $iframe;\n\n          if (this._devicePreviewIsActive()) {\n            this.updateDevicePreview();\n          }\n\n          this.trigger('afterUpdateIframe', {\n            previewTarget:\n              this.elementEditor.settings.previewTargets[this.activeTarget],\n            $iframe: this.$iframe,\n          });\n\n          this.slideIn();\n        });\n    },\n\n    _devicePreviewIsActive: function () {\n      return this.currentDeviceType !== 'desktop';\n    },\n\n    _updateNotifier: function () {\n      this.$notifier.html = '';\n\n      const translation =\n        this.currentDeviceType === 'desktop'\n          ? 'Previewing {type} device'\n          : 'Previewing {type} device in {orientation}';\n      let params = {\n        type: this._getDeviceTypeTranslation(this.currentDeviceType),\n      };\n\n      if (this.currentDeviceType !== 'desktop') {\n        params = {\n          ...params,\n          ...{\n            orientation: this._getDeviceOrientationTranslation(\n              this.deviceOrientation\n            ),\n          },\n        };\n      }\n\n      const message = Craft.t('app', translation, params);\n\n      setTimeout(() => {\n        this.$notifier.text(message);\n      }, 200);\n    },\n\n    switchDeviceType: function ($option) {\n      this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n\n      const newDeviceType = $option.data('deviceType');\n      // Bail if we’re just smashing the same button\n      if (newDeviceType === this.currentDeviceType) {\n        return false;\n      }\n\n      // Store new device type data\n      this.currentDeviceType = newDeviceType;\n      this.deviceWidth = $option.data('width');\n      this.deviceHeight = $option.data('height');\n\n      if (this.currentDeviceType === 'desktop') {\n        // Disable the orientation button\n        this.$orientationBtn.addClass('disabled').attr('aria-disabled', 'true');\n\n        this.$iframeContainer.removeClass(\n          'lp-iframe-container--has-device-preview'\n        );\n      } else {\n        // Enable the orientation button\n        this.$orientationBtn\n          .removeClass('disabled')\n          .removeAttr('aria-disabled');\n\n        this.$iframeContainer.addClass(\n          'lp-iframe-container--has-device-preview'\n        );\n      }\n\n      // Add the tablet class if needed\n      if (this.currentDeviceType === 'tablet') {\n        this.$iframeContainer.addClass('lp-iframe-container--tablet');\n      } else {\n        this.$iframeContainer.removeClass('lp-iframe-container--tablet');\n      }\n\n      this._updateNotifier();\n\n      if (this.currentDeviceType !== 'desktop') {\n        this.updateDevicePreview();\n      }\n    },\n\n    switchOrientation: function () {\n      if (!this._devicePreviewIsActive()) {\n        return false;\n      }\n\n      // Switch to whichever orientation is currently not stored\n      if (!this.deviceOrientation || this.deviceOrientation === 'portrait') {\n        this.deviceOrientation = 'landscape';\n      } else {\n        this.deviceOrientation = 'portrait';\n      }\n\n      // Store the new one\n      Craft.setLocalStorage('LivePreview.orientation', this.deviceOrientation);\n\n      // Allow the animation to take place\n      this.$iframeContainer.addClass('lp-iframe-container--rotating');\n\n      // Update the device preview\n      this.updateDevicePreview();\n      this._updateNotifier();\n\n      setTimeout(() => {\n        this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n      }, 300);\n    },\n\n    updateDevicePreview: function () {\n      // Figure out the best zoom\n      let hZoom = 1;\n      let wZoom = 1;\n      let zoom = 1;\n      let previewHeight = this.$previewContainer.height() - 50 - 48; // 50px for the header bar and 24px clearance\n      let previewWidth = this.$previewContainer.width() - 48;\n      let maskHeight = this.deviceMaskDimensions[this.currentDeviceType].height;\n      let maskWidth = this.deviceMaskDimensions[this.currentDeviceType].width;\n\n      if (this.deviceOrientation === 'landscape') {\n        if (previewWidth < maskHeight) {\n          hZoom = previewWidth / maskHeight;\n        }\n        if (previewHeight < maskWidth) {\n          wZoom = previewHeight / maskWidth;\n        }\n      } else {\n        if (previewHeight < maskHeight) {\n          hZoom = previewHeight / maskHeight;\n        }\n        if (previewWidth < maskWidth) {\n          wZoom = previewWidth / maskWidth;\n        }\n      }\n\n      zoom = hZoom;\n      if (wZoom < hZoom) {\n        zoom = wZoom;\n      }\n\n      // Figure out the css values\n      const translate = -(100 / zoom / 2);\n      const rotationDeg =\n        this.deviceOrientation === 'landscape' ? '-90deg' : '0deg';\n\n      // Apply first to the device mask\n      this.$deviceMask.css({\n        width: this.deviceMaskDimensions[this.currentDeviceType].width + 'px',\n        height: this.deviceMaskDimensions[this.currentDeviceType].height + 'px',\n        transform:\n          'scale(' +\n          zoom +\n          ') translate(' +\n          translate +\n          '%, ' +\n          translate +\n          '%) rotate(' +\n          rotationDeg +\n          ')',\n      });\n\n      if (this.deviceOrientation === 'landscape') {\n        this.$devicePreviewContainer.css({\n          width: this.deviceHeight + 'px',\n          height: this.deviceWidth + 'px',\n          transform:\n            'scale(' +\n            zoom +\n            ') translate(' +\n            translate +\n            '%, ' +\n            translate +\n            '%)',\n          marginTop: 0,\n          marginLeft: '-' + 12 * zoom + 'px',\n        });\n      } else {\n        this.$devicePreviewContainer.css({\n          width: this.deviceWidth + 'px',\n          height: this.deviceHeight + 'px',\n          transform:\n            'scale(' +\n            zoom +\n            ') translate(' +\n            translate +\n            '%, ' +\n            translate +\n            '%)',\n          marginTop: '-' + 12 * zoom + 'px',\n          marginLeft: 0,\n        });\n      }\n    },\n\n    _getClone: function ($field) {\n      var $clone = $field.clone();\n\n      // clone() won't account for input values that have changed since the original HTML set them\n      Garnish.copyInputValues($field, $clone);\n\n      // Remove any id= attributes\n      $clone.attr('id', '');\n      $clone.find('[id]').attr('id', '');\n\n      // Disable anything with a name attribute\n      $clone.find('[name]').prop('disabled', true);\n\n      return $clone;\n    },\n\n    _onDragStart: function () {\n      this.dragStartEditorWidth = this.editorWidthInPx;\n      this.$previewContainer.addClass('dragging');\n    },\n\n    _onDrag: function () {\n      if (Craft.orientation === 'ltr') {\n        this.editorWidth = this.dragStartEditorWidth + this.dragger.mouseDistX;\n      } else {\n        this.editorWidth = this.dragStartEditorWidth - this.dragger.mouseDistX;\n      }\n\n      this.updateWidths();\n      this.trigger('drag');\n    },\n\n    _onDragStop: function () {\n      this.$previewContainer.removeClass('dragging');\n      Craft.setLocalStorage('LivePreview.editorWidth', this.editorWidth);\n    },\n\n    destroy: function () {\n      Craft.Preview.instances = Craft.Preview.instances.filter(\n        (o) => o !== this\n      );\n      this.base();\n    },\n  },\n  {\n    defaultEditorWidth: 0.33,\n    minEditorWidthInPx: 320,\n    instances: [],\n\n    refresh: function () {\n      for (let preview of Craft.Preview.instances) {\n        preview.updateIframe();\n      }\n      for (let preview of Craft.LivePreview.instances) {\n        preview.forceUpdateIframe();\n      }\n    },\n\n    getActive: function () {\n      for (let preview of Craft.Preview.instances) {\n        if (preview.isActive) {\n          return preview;\n        }\n      }\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Preview File Modal\n */\nCraft.PreviewFileModal = Garnish.Modal.extend(\n  {\n    assetId: null,\n    $spinner: null,\n    $triggerElement: null,\n    $bumperButtonStart: null,\n    $bumperButtonEnd: null,\n    elementSelect: null,\n    type: null,\n    loaded: null,\n    requestId: 0,\n\n    /**\n     * Initialize the preview file modal.\n     * @returns {*|void}\n     */\n    init: function (assetId, elementSelect, settings) {\n      // (assetId, settings)\n      if (\n        typeof settings === 'undefined' &&\n        jQuery.isPlainObject(elementSelect)\n      ) {\n        settings = elementSelect;\n        elementSelect = null;\n      }\n\n      settings = $.extend(this.defaultSettings, settings);\n      this.$triggerElement = Garnish.getFocusedElement();\n\n      settings.onHide = this._onHide.bind(this);\n\n      if (Craft.PreviewFileModal.openInstance) {\n        var instance = Craft.PreviewFileModal.openInstance;\n\n        if (instance.assetId !== assetId) {\n          instance.loadAsset(\n            assetId,\n            settings.startingWidth,\n            settings.startingHeight\n          );\n          instance.elementSelect = elementSelect;\n        }\n\n        return this.destroy();\n      }\n\n      Craft.PreviewFileModal.openInstance = this;\n      this.elementSelect = elementSelect;\n\n      this.$container = $('<div class=\"modal previewmodal loading\"/>').appendTo(\n        Garnish.$bod\n      );\n\n      this.base(\n        this.$container,\n        $.extend(\n          {\n            resizable: true,\n          },\n          settings\n        )\n      );\n\n      // Cut the flicker, just show the nice person the preview.\n      if (this.$container) {\n        this.$container.velocity('stop');\n        this.$container.show().css('opacity', 1);\n\n        this.$shade.velocity('stop');\n        this.$shade.show().css('opacity', 1);\n\n        Garnish.setFocusWithin(this.$container);\n      }\n\n      // Add bumper elements to maintain focus trap\n      this.$bumperButtonStart = Craft.ui.createButton({\n        html: Craft.t('app', 'Close Preview'),\n        class: 'skip-link',\n      });\n\n      this.addListener(this.$bumperButtonStart, 'click', () => {\n        this.hide();\n      });\n      this.$bumperButtonEnd = this.$bumperButtonStart.clone(true);\n\n      this.loadAsset(assetId, settings.startingWidth, settings.startingHeight);\n    },\n\n    /**\n     * When hiding, remove all traces and focus last focused element.\n     * @private\n     */\n    _onHide: function () {\n      Craft.PreviewFileModal.openInstance = null;\n      if (this.elementSelect) {\n        this.elementSelect.focusItem(\n          this.elementSelect.$items.filter(`[data-id=${this.assetId}]`)\n        );\n      } else if (this.$triggerElement && this.$triggerElement.length) {\n        this.$triggerElement.trigger('focus');\n      }\n\n      this.$shade.remove();\n\n      return this.destroy();\n    },\n\n    _addBumperButtons: function () {\n      this.$container\n        .prepend(this.$bumperButtonStart)\n        .append(this.$bumperButtonEnd);\n    },\n\n    _addModalName: function () {\n      const headingId = 'preview-heading';\n\n      $('<h1/>', {\n        class: 'visually-hidden',\n        id: headingId,\n        text: Craft.t('app', 'Preview file'),\n      }).prependTo(this.$container);\n\n      this.$container.attr('aria-labelledby', headingId);\n    },\n\n    /**\n     * Disappear immediately forever.\n     * @returns {boolean}\n     */\n    selfDestruct: function () {\n      var instance = Craft.PreviewFileModal.openInstance;\n\n      instance.hide();\n      instance.$shade.remove();\n      instance.destroy();\n\n      Craft.PreviewFileModal.openInstance = null;\n      Craft.focalPoint.destruct();\n      Craft.focalPoint = null;\n\n      return true;\n    },\n\n    /**\n     * Load an asset, using starting width and height, if applicable\n     * @param {number} assetId\n     * @param {number} [startingWidth]\n     * @param {number} [startingHeight]\n     */\n    loadAsset: function (assetId, startingWidth, startingHeight) {\n      this.assetId = assetId;\n\n      this.$container.empty();\n      this.loaded = false;\n\n      this.desiredHeight = null;\n      this.desiredWidth = null;\n\n      var containerHeight = Garnish.$win.height() * 0.66;\n      var containerWidth = Math.min(\n        (containerHeight / 3) * 4,\n        Garnish.$win.width() - this.settings.minGutter * 2\n      );\n      containerHeight = (containerWidth / 4) * 3;\n\n      if (startingWidth && startingHeight) {\n        var ratio = startingWidth / startingHeight;\n        containerWidth = Math.min(\n          startingWidth,\n          Garnish.$win.width() - this.settings.minGutter * 2\n        );\n        containerHeight = Math.min(\n          containerWidth / ratio,\n          Garnish.$win.height() - this.settings.minGutter * 2\n        );\n        containerWidth = containerHeight * ratio;\n\n        // This might actually have put width over the viewport limits, so doublecheck\n        if (\n          containerWidth >\n          Math.min(\n            startingWidth,\n            Garnish.$win.width() - this.settings.minGutter * 2\n          )\n        ) {\n          containerWidth = Math.min(\n            startingWidth,\n            Garnish.$win.width() - this.settings.minGutter * 2\n          );\n          containerHeight = containerWidth / ratio;\n        }\n      }\n\n      this._resizeContainer(containerWidth, containerHeight);\n\n      this.$spinner = $('<div class=\"spinner centeralign\"></div>').appendTo(\n        this.$container\n      );\n      var top =\n          this.$container.height() / 2 - this.$spinner.height() / 2 + 'px',\n        left = this.$container.width() / 2 - this.$spinner.width() / 2 + 'px';\n\n      this.$spinner.css({left: left, top: top, position: 'absolute'});\n      this.requestId++;\n\n      let data = {assetId: assetId, requestId: this.requestId};\n      let onResponse = () => {\n        this.$container.removeClass('loading');\n        this.$spinner.remove();\n        this.loaded = true;\n      };\n      Craft.sendActionRequest('POST', 'assets/preview-file', {data})\n        .then(async (response) => {\n          onResponse();\n\n          if (response.data.requestId != this.requestId) {\n            return;\n          }\n\n          if (!response.data.previewHtml) {\n            this.$container.addClass('zilch');\n            this.$container.append(\n              $('<p/>', {text: Craft.t('app', 'No preview available.')})\n            );\n            this._addBumperButtons();\n            return;\n          }\n\n          this.$container.removeClass('zilch');\n          this.$container.attr('data-asset-id', this.assetId);\n          this.$container.append(response.data.previewHtml);\n          this._addBumperButtons();\n          this._addModalName();\n          await Craft.appendHeadHtml(response.data.headHtml);\n          await Craft.appendBodyHtml(response.data.bodyHtml);\n        })\n        .catch(({response}) => {\n          onResponse();\n          Craft.cp.displayError(response.data.message);\n          this.hide();\n        });\n    },\n\n    /**\n     * Resize the container to specified dimensions\n     * @param {number} containerWidth\n     * @param {number} containerHeight\n     * @private\n     */\n    _resizeContainer: function (containerWidth, containerHeight) {\n      this.$container.css({\n        width: containerWidth,\n        'min-width': containerWidth,\n        'max-width': containerWidth,\n        height: containerHeight,\n        'min-height': containerHeight,\n        'max-height': containerHeight,\n        top: (Garnish.$win.height() - containerHeight) / 2,\n        left: (Garnish.$win.width() - containerWidth) / 2,\n      });\n    },\n  },\n  {\n    openInstance: null,\n\n    defaultSettings: {\n      minGutter: 50,\n      startingWidth: null,\n      startingHeight: null,\n    },\n\n    resizePreviewImage() {\n      const instance = Craft.PreviewFileModal.openInstance;\n      if (!instance) {\n        return;\n      }\n\n      let containerHeight = Garnish.$win.height() * 0.66;\n      let containerWidth = Math.min(\n        (containerHeight / 3) * 4,\n        Garnish.$win.width() - instance.settings.minGutter * 2\n      );\n      containerHeight = (containerWidth / 4) * 3;\n\n      const $img = instance.$container.find('img');\n\n      $img.css({\n        width: containerWidth,\n        height: containerHeight,\n      });\n\n      let imageRatio;\n\n      if (instance.loaded && $img.length) {\n        // Make sure we maintain the ratio\n\n        const maxWidth = $img.data('maxwidth');\n        const maxHeight = $img.data('maxheight');\n        imageRatio = maxWidth / maxHeight;\n        const desiredWidth = instance.desiredWidth\n          ? instance.desiredWidth\n          : instance.getWidth();\n        const desiredHeight = instance.desiredHeight\n          ? instance.desiredHeight\n          : instance.getHeight();\n        let width = Math.min(desiredWidth, maxWidth);\n        let height = Math.round(Math.min(maxHeight, width / imageRatio));\n\n        if (height > desiredHeight) {\n          height = desiredHeight;\n        }\n\n        width = Math.round(height * imageRatio);\n\n        $img.css({width: width, height: height});\n        instance._resizeContainer(width, height);\n\n        instance.desiredWidth = width;\n        instance.desiredHeight = height;\n      }\n\n      instance.base();\n\n      if (instance.loaded && $img.length) {\n        // Correct anomalies\n        containerWidth = Math.round(\n          Math.min(\n            Math.max($img.height() * imageRatio),\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          )\n        );\n        containerHeight = Math.round(\n          Math.min(\n            Math.max(containerWidth / imageRatio),\n            Garnish.$win.height() - instance.settings.minGutter * 2\n          )\n        );\n        containerWidth = Math.round(containerHeight * imageRatio);\n\n        // This might actually have put width over the viewport limits, so double-check that\n        if (\n          containerWidth >\n          Math.min(\n            containerWidth,\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          )\n        ) {\n          containerWidth = Math.min(\n            containerWidth,\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          );\n          containerHeight = containerWidth / imageRatio;\n        }\n\n        instance._resizeContainer(containerWidth, containerHeight);\n        $img.css({width: containerWidth, height: containerHeight});\n\n        if (window.imageFocalPoint) {\n          window.imageFocalPoint.renderFocal();\n        }\n      }\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * File Manager.\n */\nCraft.ProgressBar = Garnish.Base.extend({\n  $progressBar: null,\n  $innerProgressBar: null,\n  $progressBarStatus: null,\n\n  _itemCount: 0,\n  _processedItemCount: 0,\n  _displaySteps: false,\n\n  init: function ($element, displaySteps) {\n    if (displaySteps) {\n      this._displaySteps = true;\n    }\n\n    this.$progressBar = $('<div class=\"progressbar pending hidden\"/>').appendTo(\n      $element\n    );\n    this.$innerProgressBar = $('<div class=\"progressbar-inner\"/>').appendTo(\n      this.$progressBar\n    );\n    this.$progressBarStatus = $(\n      '<div class=\"progressbar-status hidden\" />'\n    ).insertAfter(this.$progressBar);\n\n    this.resetProgressBar();\n  },\n\n  /**\n   * Reset the progress bar\n   */\n  resetProgressBar: function () {\n    // Since setting the progress percentage implies that there is progress to be shown\n    // It removes the pending class - we must add it back.\n    this.setProgressPercentage(100);\n    this.$progressBar.addClass('pending');\n\n    // Reset all the counters\n    this.setItemCount(1);\n    this.setProcessedItemCount(0);\n    this.$progressBarStatus.html('');\n\n    if (this._displaySteps) {\n      this.$progressBar.addClass('has-status');\n    }\n  },\n\n  /**\n   * Fade to invisible, hide it using a class and reset opacity to visible\n   */\n  hideProgressBar: function () {\n    this.$progressBar.addClass('hidden');\n    this.$progressBarStatus.addClass('hidden');\n  },\n\n  showProgressBar: function () {\n    this.$progressBar.removeClass('hidden');\n    this.$progressBarStatus.removeClass('hidden');\n  },\n\n  setItemCount: function (count) {\n    this._itemCount = count;\n  },\n\n  incrementItemCount: function (count) {\n    this._itemCount += count;\n  },\n\n  setProcessedItemCount: function (count) {\n    this._processedItemCount = count;\n  },\n\n  incrementProcessedItemCount: function (count) {\n    this._processedItemCount += count;\n  },\n\n  updateProgressBar: function () {\n    // Only fools would allow accidental division by zero.\n    this._itemCount = Math.max(this._itemCount, 1);\n\n    var width = Math.min(\n      100,\n      Math.round((100 * this._processedItemCount) / this._itemCount)\n    );\n\n    this.setProgressPercentage(width);\n\n    if (this._displaySteps) {\n      this.$progressBarStatus.html(\n        this._processedItemCount + ' / ' + this._itemCount\n      );\n    }\n  },\n\n  setProgressPercentage: function (percentage, animate) {\n    if (percentage === 0) {\n      this.$progressBar.addClass('pending');\n    } else {\n      this.$progressBar.removeClass('pending');\n\n      if (animate) {\n        this.$innerProgressBar\n          .velocity('stop')\n          .velocity({width: percentage + '%'}, 'fast');\n      } else {\n        this.$innerProgressBar.velocity('stop').width(percentage + '%');\n      }\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * File Manager.\n */\nCraft.PromptHandler = Garnish.Base.extend({\n  modal: null,\n  $modalContainerDiv: null,\n  $prompt: null,\n  $promptApplyToRemainingContainer: null,\n  $promptApplyToRemainingCheckbox: null,\n  $promptApplyToRemainingLabel: null,\n  $pomptChoices: null,\n\n  _prompts: [],\n  _promptBatchCallback: $.noop,\n  _promptBatchReturnData: [],\n  _promptBatchNum: 0,\n\n  resetPrompts: function () {\n    this._prompts = [];\n    this._promptBatchCallback = $.noop;\n    this._promptBatchReturnData = [];\n    this._promptBatchNum = 0;\n  },\n\n  addPrompt: function (prompt) {\n    this._prompts.push(prompt);\n  },\n\n  getPromptCount: function () {\n    return this._prompts.length;\n  },\n\n  showBatchPrompts: function (callback) {\n    this._promptBatchCallback = callback;\n    this._promptBatchReturnData = [];\n    this._promptBatchNum = 0;\n\n    this._showNextPromptInBatch();\n  },\n\n  _showNextPromptInBatch: function () {\n    var prompt = this._prompts[this._promptBatchNum].prompt,\n      remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);\n\n    this._showPrompt(\n      prompt.message,\n      prompt.choices,\n      this._handleBatchPromptSelection.bind(this),\n      remainingInBatch,\n      prompt.modalSettings\n    );\n  },\n\n  /**\n   * Handles a prompt choice selection.\n   *\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   * @private\n   */\n  _handleBatchPromptSelection: function (choice, applyToRemaining) {\n    var prompt = this._prompts[this._promptBatchNum],\n      remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);\n\n    // Record this choice\n    var choiceData = $.extend(prompt, {choice});\n    this._promptBatchReturnData.push(choiceData);\n\n    // Are there any remaining items in the batch?\n    if (remainingInBatch) {\n      // Get ready to deal with the next prompt\n      this._promptBatchNum++;\n\n      // Apply the same choice to the remaining items?\n      if (applyToRemaining) {\n        this._handleBatchPromptSelection(choice, true);\n      } else {\n        // Show the next prompt\n        this._showNextPromptInBatch();\n      }\n    } else {\n      // All done! Call the callback\n      if (typeof this._promptBatchCallback === 'function') {\n        this._promptBatchCallback(this._promptBatchReturnData);\n      }\n    }\n  },\n\n  /**\n   * @callback showPromptCallback\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   */\n  /**\n   * Show the user prompt with a given message and choices, plus an optional \"Apply to remaining\" checkbox.\n   *\n   * @param {string} message\n   * @param {Array} choices\n   * @param {showPromptCallback} callback\n   * @param {number} itemsToGo\n   * @param {Object} modalSettings\n   */\n  _showPrompt: function (message, choices, callback, itemsToGo, modalSettings) {\n    this._promptCallback = callback;\n\n    if (this.modal === null) {\n      this.modal = new Garnish.Modal(\n        Object.assign({closeOtherModals: false}, modalSettings)\n      );\n    }\n\n    if (this.$modalContainerDiv === null) {\n      this.$modalContainerDiv = $(\n        '<div class=\"modal fitted prompt-modal\"></div>'\n      )\n        .addClass()\n        .appendTo(Garnish.$bod);\n    }\n\n    this.$prompt = $('<div class=\"body\"></div>').appendTo(\n      this.$modalContainerDiv.empty()\n    );\n\n    this.$promptMessage = $('<p class=\"prompt-msg\"/>').appendTo(this.$prompt);\n\n    this.$promptChoices = $('<div class=\"options\"></div>').appendTo(\n      this.$prompt\n    );\n\n    this.$promptApplyToRemainingContainer = $(\n      '<label class=\"assets-applytoremaining\"/>'\n    )\n      .appendTo(this.$prompt)\n      .hide();\n    this.$promptApplyToRemainingCheckbox = $(\n      '<input type=\"checkbox\"/>'\n    ).appendTo(this.$promptApplyToRemainingContainer);\n    this.$promptApplyToRemainingLabel = $('<span/>').appendTo(\n      this.$promptApplyToRemainingContainer\n    );\n\n    this.$promptButtons = $('<div class=\"buttons right\"/>').appendTo(\n      this.$prompt\n    );\n\n    this.modal.setContainer(this.$modalContainerDiv);\n\n    this.$promptMessage.html(message);\n\n    let $cancelBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Cancel'),\n    }).appendTo(this.$promptButtons);\n    let $submitBtn = $('<button/>', {\n      type: 'submit',\n      class: 'btn submit disabled',\n      text: Craft.t('app', 'OK'),\n    }).appendTo(this.$promptButtons);\n\n    for (var i = 0; i < choices.length; i++) {\n      var $radioButtonHtml = $(\n          '<div><label><input type=\"radio\" name=\"promptAction\" value=\"' +\n            choices[i].value +\n            '\"/> ' +\n            choices[i].title +\n            '</label></div>'\n        ).appendTo(this.$promptChoices),\n        $radioButton = $radioButtonHtml.find('input');\n\n      this.addListener($radioButton, 'click', function () {\n        $submitBtn.removeClass('disabled');\n      });\n    }\n\n    this.addListener($submitBtn, 'activate', function (ev) {\n      var choice = $(ev.currentTarget)\n          .parents('.modal')\n          .find('input[name=promptAction]:checked')\n          .val(),\n        applyToRemaining = this.$promptApplyToRemainingCheckbox.prop('checked');\n\n      this._selectPromptChoice(choice, applyToRemaining);\n    });\n\n    this.addListener($cancelBtn, 'activate', function () {\n      var choice = 'cancel',\n        applyToRemaining = this.$promptApplyToRemainingCheckbox.prop('checked');\n\n      this._selectPromptChoice(choice, applyToRemaining);\n    });\n\n    if (itemsToGo) {\n      this.$promptApplyToRemainingContainer.show();\n      this.$promptApplyToRemainingLabel.html(\n        ' ' +\n          Craft.t('app', 'Apply this to the {number} remaining conflicts?', {\n            number: itemsToGo,\n          })\n      );\n    }\n\n    this.modal.show();\n    this.modal.removeListener(Garnish.Modal.$shade, 'click');\n    this.addListener(Garnish.Modal.$shade, 'click', '_cancelPrompt');\n  },\n\n  /**\n   * Handles when a user selects one of the prompt choices.\n   *\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   * @private\n   */\n  _selectPromptChoice: function (choice, applyToRemaining) {\n    this.$prompt.fadeOut('fast', () => {\n      this.modal.hide();\n      this._promptCallback(choice, applyToRemaining);\n    });\n  },\n\n  /**\n   * Cancels the prompt.\n   */\n  _cancelPrompt: function () {\n    this._selectPromptChoice('cancel', true);\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Queue\n */\nCraft.Queue = Garnish.Base.extend({\n  running: false,\n  paused: false,\n  pausedForVisibility: false,\n  jobs: null,\n\n  get length() {\n    return this.jobs.length;\n  },\n\n  get isPaused() {\n    return this.paused || this.pausedForVisibility;\n  },\n\n  init: function () {\n    this.jobs = [];\n\n    Garnish.$doc.on('visibilitychange', () => {\n      if (this.pausedForVisibility && Craft.isVisible()) {\n        this.pausedForVisibility = false;\n        this._resume();\n      }\n    });\n  },\n\n  /**\n   * Adds a job to the queue.\n   * @param {function} job\n   * @returns {Promise}\n   */\n  push: function (job) {\n    return this._add(job, 'push');\n  },\n\n  /**\n   * Adds a job to the beginning of the queue.\n   * @param {function} job\n   * @returns {Promise}\n   */\n  unshift: function (job) {\n    return this._add(job, 'unshift');\n  },\n\n  pause: function () {\n    if (!this.paused) {\n      this.paused = true;\n      if (!this.pausedForVisibility) {\n        this.trigger('pause');\n      }\n    }\n  },\n\n  resume: function () {\n    if (this.paused) {\n      this.paused = false;\n      this._resume();\n    }\n  },\n\n  /**\n   * Adds a job to the queue.\n   * @param {function} job\n   * @param {string} method\n   * @returns {Promise}\n   * @private\n   */\n  _add: function (job, method) {\n    return new Promise((resolve, reject) => {\n      this.jobs[method](() => {\n        return new Promise((qResolve, qReject) => {\n          job()\n            .then((value) => {\n              // ...arguments doesn't work here :(\n              resolve(value);\n              qResolve();\n            })\n            .catch((value) => {\n              // ...arguments doesn't work here :(\n              reject(value);\n              qReject();\n            });\n        });\n      });\n\n      if (!this.running) {\n        this.trigger('beforeRun');\n        this.running = true;\n        this._exec();\n      }\n    });\n  },\n\n  clear: function () {\n    this.jobs.length = 0;\n  },\n\n  /**\n   * Runs the next job in the queue.\n   * @private\n   */\n  _exec: function () {\n    if (!this.jobs.length) {\n      this.running = false;\n      this.trigger('afterRun');\n      return;\n    }\n\n    if (!this.pausedForVisibility && !Craft.isVisible()) {\n      this.pausedForVisibility = true;\n      if (!this.paused) {\n        this.trigger('pause');\n      }\n    }\n\n    if (this.paused || this.pausedForVisibility) {\n      return;\n    }\n\n    this.trigger('beforeExec');\n    const job = this.jobs.shift();\n    job().finally(() => {\n      this.trigger('afterExec');\n      this._exec();\n    });\n  },\n\n  _resume: function () {\n    if (!this.isPaused) {\n      this.trigger('resume');\n      this._exec();\n    }\n  },\n});\n\nCraft.queue = new Craft.Queue();\n","(function ($) {\n  /** global: Craft */\n  /** global: Garnish */\n  /**\n   * Slide Picker\n   */\n  Craft.SlidePicker = Garnish.Base.extend(\n    {\n      min: null,\n      max: null,\n      totalSteps: null,\n      value: null,\n      label: null,\n      describedBy: null,\n\n      $container: null,\n      $buttons: null,\n\n      init: function (value, settings) {\n        this.setSettings(settings, Craft.SlidePicker.defaults);\n\n        this.$container = $('<div/>', {\n          class: 'slide-picker',\n          role: 'slider',\n          tabindex: 0,\n        });\n\n        this.refresh();\n        this.setValue(value, false);\n\n        this.addListener(this.$container, 'keydown', (ev) => {\n          switch (ev.keyCode) {\n            case Garnish.UP_KEY:\n              this.setValue(this.value + this.settings.step);\n              ev.preventDefault();\n              break;\n            case Garnish.DOWN_KEY:\n              this.setValue(this.value - this.settings.step);\n              ev.preventDefault();\n              break;\n            case Garnish.RIGHT_KEY:\n              if (Craft.orientation === 'ltr') {\n                this.setValue(this.value + this.settings.step);\n              } else {\n                this.setValue(this.value - this.settings.step);\n              }\n              ev.preventDefault();\n              break;\n            case Garnish.LEFT_KEY:\n              if (Craft.orientation === 'ltr') {\n                this.setValue(this.value - this.settings.step);\n              } else {\n                this.setValue(this.value + this.settings.step);\n              }\n              ev.preventDefault();\n              break;\n            case Garnish.HOME_KEY:\n              this.setValue(this.min);\n              ev.preventDefault();\n              break;\n            case Garnish.END_KEY:\n              this.setValue(this.max);\n              ev.preventDefault();\n              break;\n          }\n        });\n      },\n\n      refresh: function () {\n        // Figure out what the min/max values are\n        this.min = this._min();\n        this.max = this._max();\n        this.totalSteps = (this.max - this.min) / this.settings.step;\n\n        // Set label\n        this.label = this.settings.label;\n        this.describedBy = this.settings.describedBy;\n\n        if (!Number.isInteger(this.totalSteps)) {\n          throw 'Invalid SlidePicker config';\n        }\n\n        if (this.$buttons) {\n          this.$buttons.remove();\n        }\n\n        this.$container.attr('aria-valuemin', this.min);\n        this.$container.attr('aria-valuemax', this.max);\n\n        if (this.label) {\n          this.$container.attr('aria-label', this.label);\n        }\n\n        if (this.describedBy) {\n          this.$container.attr('aria-describedby', this.describedBy);\n        }\n\n        this.$buttons = $();\n\n        // Create the buttons\n        for (\n          let value = this.min;\n          value <= this.max;\n          value += this.settings.step\n        ) {\n          this.$buttons = this.$buttons.add(\n            $('<a/>', {\n              title: this.settings.valueLabel(value),\n              data: {value},\n            })\n          );\n        }\n\n        this.$buttons.appendTo(this.$container);\n\n        if (this.value !== null) {\n          let value = this.value;\n          this.value = null;\n          this.setValue(value, false);\n        }\n\n        this.addListener(this.$buttons, 'mouseover', (ev) => {\n          this.$buttons.removeClass('active-hover last-active-hover');\n          $(ev.currentTarget)\n            .addClass('active-hover last-active-hover')\n            .prevAll()\n            .addClass('active-hover');\n        });\n\n        this.addListener(this.$buttons, 'mouseout', () => {\n          this.$buttons.removeClass('active-hover');\n        });\n\n        this.addListener(this.$buttons, 'click', (ev) => {\n          this.setValue($.data(ev.currentTarget, 'value'));\n          ev.stopPropagation();\n          this.$container.focus();\n        });\n      },\n\n      setValue: function (value, triggerEvent) {\n        value = Math.max(Math.min(value, this.max), this.min);\n\n        if (this.value === (this.value = value)) {\n          return;\n        }\n\n        this.$container.attr({\n          'aria-valuenow': this.value,\n          'aria-valuetext': this.settings.valueLabel(this.value),\n        });\n\n        this.$buttons.removeClass('last-active active');\n        let $activeButton = this.$buttons.eq(\n          (this.value - this.min) / this.settings.step\n        );\n        $activeButton.add($activeButton.prevAll()).addClass('active');\n        $activeButton.addClass('last-active');\n\n        if (triggerEvent !== false) {\n          this.settings.onChange(value);\n        }\n      },\n\n      _min: function () {\n        if (typeof this.settings.min === 'function') {\n          return this.settings.min();\n        }\n        return this.settings.min;\n      },\n\n      _max: function () {\n        if (typeof this.settings.max === 'function') {\n          return this.settings.max();\n        }\n        return this.settings.max;\n      },\n    },\n    {\n      defaults: {\n        min: 0,\n        max: 100,\n        step: 10,\n        valueLabel: null,\n        onChange: $.noop,\n      },\n    }\n  );\n})(jQuery);\n","/** global: Garnish */\n\nCraft.SlideRuleInput = Garnish.Base.extend({\n  $container: null,\n  $options: null,\n  $selectedOption: null,\n  $input: null,\n  value: null,\n\n  startPositionX: null,\n\n  init: function (id, settings) {\n    this.setSettings(settings, Craft.SlideRuleInput.defaultSettings);\n\n    this.value = 0;\n    this.graduationsMin = -70;\n    this.graduationsMax = 70;\n    this.slideMin = -45;\n    this.slideMax = 45;\n\n    this.$container = $('#' + id);\n    this.$overlay = $('<div class=\"overlay\"></div>').appendTo(this.$container);\n    this.$cursor = $('<div class=\"cursor\"></div>').appendTo(this.$container);\n    this.$graduations = $('<div class=\"graduations\"></div>').appendTo(\n      this.$container\n    );\n    this.$graduationsUl = $('<ul></ul>').appendTo(this.$graduations);\n\n    this.$container.attr({\n      role: 'slider',\n      tabindex: '0',\n      'aria-valuemin': this.slideMin,\n      'aria-valuemax': this.slideMax,\n      'aria-valuenow': '0',\n      'aria-valuetext': Craft.t(\n        'app',\n        '{num, number} {num, plural, =1{degree} other{degrees}}',\n        {\n          num: 0,\n        }\n      ),\n    });\n\n    for (var i = this.graduationsMin; i <= this.graduationsMax; i++) {\n      var $li = $(\n        '<li class=\"graduation\" data-graduation=\"' +\n          i +\n          '\"><div class=\"label\">' +\n          i +\n          '</div></li>'\n      ).appendTo(this.$graduationsUl);\n\n      if (i % 5 === 0) {\n        $li.addClass('main-graduation');\n      }\n\n      if (i === 0) {\n        $li.addClass('selected');\n      }\n    }\n\n    this.$options = this.$container.find('.graduation');\n\n    this.addListener(this.$container, 'resize', this._handleResize.bind(this));\n    this.addListener(\n      this.$container,\n      'tapstart',\n      this._handleTapStart.bind(this)\n    );\n    this.addListener(Garnish.$bod, 'tapmove', this._handleTapMove.bind(this));\n    this.addListener(Garnish.$bod, 'tapend', this._handleTapEnd.bind(this));\n    this.addListener(\n      this.$container,\n      'keydown',\n      this._handleKeypress.bind(this)\n    );\n\n    // Set to zero\n\n    // this.setValue(0);\n\n    setTimeout(() => {\n      // (n -1) options because the border is placed on the left of the 10px box\n      this.graduationsCalculatedWidth = (this.$options.length - 1) * 10;\n      this.$graduationsUl.css(\n        'left',\n        -this.graduationsCalculatedWidth / 2 + this.$container.width() / 2\n      );\n    }, 50);\n  },\n\n  _handleResize: function () {\n    var left = this.valueToPosition(this.value);\n    this.$graduationsUl.css('left', left);\n  },\n\n  _handleKeypress: function (event) {\n    const current = parseInt(this.$container.attr('aria-valuenow'), 10);\n\n    switch (event.keyCode) {\n      case Garnish.UP_KEY:\n      case Garnish.RIGHT_KEY:\n        this.setValue(current + 1);\n        break;\n      case Garnish.DOWN_KEY:\n      case Garnish.LEFT_KEY:\n        this.setValue(current - 1);\n        break;\n      case Garnish.PAGE_UP_KEY:\n        this.setValue(current + 10);\n        break;\n      case Garnish.PAGE_DOWN_KEY:\n        this.setValue(current - 10);\n        break;\n      case Garnish.HOME_KEY:\n        this.setValue(this.slideMin);\n        break;\n      case Garnish.END_KEY:\n        this.setValue(this.slideMax);\n        break;\n    }\n\n    this.onChange();\n  },\n\n  _handleTapStart: function (ev, touch) {\n    ev.preventDefault();\n\n    this.startPositionX = touch.position.x;\n    this.startLeft = this.$graduationsUl.position().left;\n\n    this.dragging = true;\n    this.onStart();\n  },\n\n  _handleTapMove: function (ev, touch) {\n    if (this.dragging) {\n      ev.preventDefault();\n\n      var curX = this.startPositionX - touch.position.x;\n      var left = this.startLeft - curX;\n      var value = this.positionToValue(left);\n\n      this.setValue(value);\n\n      this.onChange();\n    }\n  },\n\n  setValue: function (value) {\n    var left = this.valueToPosition(value);\n    if (value < this.slideMin) {\n      value = this.slideMin;\n      left = this.valueToPosition(value);\n    } else if (value > this.slideMax) {\n      value = this.slideMax;\n      left = this.valueToPosition(value);\n    }\n\n    this.$graduationsUl.css('left', left);\n\n    if (value >= this.slideMin && value <= this.slideMax) {\n      this.$options.removeClass('selected');\n\n      $.each(this.$options, function (key, option) {\n        if ($(option).data('graduation') > 0) {\n          if ($(option).data('graduation') <= value) {\n            $(option).addClass('selected');\n          }\n        }\n        if ($(option).data('graduation') < 0) {\n          if ($(option).data('graduation') >= value) {\n            $(option).addClass('selected');\n          }\n        }\n\n        if ($(option).data('graduation') == 0) {\n          $(option).addClass('selected');\n        }\n      });\n    }\n\n    this.$container.attr({\n      'aria-valuenow': value,\n      'aria-valuetext': Craft.t(\n        'app',\n        '{num, number} {num, plural, =1{degree} other{degrees}}',\n        {num: parseInt(value, 10)}\n      ),\n    });\n    this.value = value;\n  },\n\n  _handleTapEnd: function (ev) {\n    if (this.dragging) {\n      ev.preventDefault();\n      this.dragging = false;\n      this.onEnd();\n    }\n  },\n\n  positionToValue: function (position) {\n    var scaleMin = this.graduationsMin * -1;\n    var scaleMax = (this.graduationsMin - this.graduationsMax) * -1;\n\n    return (\n      ((this.$graduations.width() / 2 + position * -1) /\n        this.graduationsCalculatedWidth) *\n        scaleMax -\n      scaleMin\n    );\n  },\n\n  valueToPosition: function (value) {\n    var scaleMin = this.graduationsMin * -1;\n    var scaleMax = (this.graduationsMin - this.graduationsMax) * -1;\n\n    return -(\n      ((value + scaleMin) * this.graduationsCalculatedWidth) / scaleMax -\n      this.$graduations.width() / 2\n    );\n  },\n\n  onStart: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onStart(this);\n    }\n  },\n\n  onChange: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onChange(this);\n    }\n  },\n\n  onEnd: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onEnd(this);\n    }\n  },\n\n  defaultSettings: {\n    onStart: $.noop,\n    onChange: $.noop,\n    onEnd: $.noop,\n  },\n});\n","(function ($) {\n  /** global: Craft */\n  /** global: Garnish */\n  /**\n   * Slide Picker\n   */\n  Craft.Slideout = Garnish.Base.extend(\n    {\n      $outerContainer: null,\n      $container: null,\n      $shade: null,\n      isOpen: false,\n      useMobileStyles: null,\n\n      init: function (contents, settings) {\n        this.setSettings(settings, Craft.Slideout.defaults);\n\n        this.$outerContainer = $('<div/>', {\n          class: 'slideout-container hidden',\n        });\n        this.$container = $(\n          `<${this.settings.containerElement}/>`,\n          this.settings.containerAttributes\n        )\n          .attr('data-slideout', '')\n          .addClass('slideout')\n          .append(contents)\n          .data('slideout', this)\n          .appendTo(this.$outerContainer);\n\n        if (this.$container.attr('id')) {\n          Craft.Slideout.instances[this.$container.attr('id')] = this;\n        }\n\n        Garnish.addModalAttributes(this.$outerContainer);\n\n        Craft.trapFocusWithin(this.$container);\n\n        if (this.settings.autoOpen) {\n          this.open();\n        }\n      },\n\n      open: function () {\n        if (this.isOpen) {\n          return;\n        }\n\n        this.setTriggerElement(document.activeElement);\n\n        this._cancelTransitionListeners();\n\n        const activePreview =\n          Craft.Preview.getActive() || Craft.LivePreview.getActive();\n        this.useMobileStyles = activePreview || Craft.useMobileStyles();\n\n        this.$outerContainer.removeClass('so-mobile so-lp');\n        this.$container.removeClass('so-mobile so-lp');\n\n        if (activePreview) {\n          this.$outerContainer.addClass('so-lp');\n          this.$container.addClass('so-lp');\n        } else if (this.useMobileStyles) {\n          this.$container.addClass('so-mobile');\n        }\n\n        if (activePreview || !this.useMobileStyles) {\n          if (!this.$shade) {\n            this.$shade = $('<div class=\"slideout-shade\"/>');\n\n            if (this.settings.closeOnShadeClick) {\n              this.addListener(this.$shade, 'click', (ev) => {\n                ev.stopPropagation();\n                this.close();\n              });\n            }\n          }\n\n          // Keep the shade + container to the end of <body> so they get the highest sub-z-indexes\n          if (activePreview) {\n          }\n\n          this.$shade.appendTo(Garnish.$bod).show();\n        } else if (this.$shade) {\n          this.$shade.remove();\n          delete this.$shade;\n        }\n\n        this.$outerContainer.appendTo(Garnish.$bod).removeClass('hidden');\n\n        if (activePreview) {\n          // keep the width equal to the editp ane width\n          this.updateWidthsForPreviewPane(activePreview);\n          const dragHandler = () => {\n            if (this.isOpen) {\n              this.updateWidthsForPreviewPane(activePreview);\n            }\n          };\n          activePreview.on('drag', dragHandler);\n          activePreview.on('beforeClose', () => {\n            activePreview.off('drag', dragHandler);\n          });\n        }\n\n        if (this.useMobileStyles) {\n          this.$container\n            .css('top', '100vh')\n            .css(Garnish.ltr ? 'left' : 'right', '');\n        } else {\n          this.$container\n            .css('top', '')\n            .css(Garnish.ltr ? 'left' : 'right', '100vw');\n        }\n\n        this.$container.one('transitionend.slideout', () => {\n          Craft.setFocusWithin(this.$container);\n        });\n\n        if (this.$shade) {\n          this.$shade[0].offsetWidth;\n          this.$shade.addClass('so-visible');\n        }\n\n        this.$container[0].offsetWidth;\n        Craft.Slideout.addPanel(this);\n\n        this.enable();\n        Garnish.uiLayerManager.addLayer(this.$outerContainer);\n        Garnish.hideModalBackgroundLayers();\n\n        if (this.settings.closeOnEsc) {\n          Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n            this.close();\n          });\n        }\n\n        this.isOpen = true;\n        this.trigger('open');\n      },\n\n      updateWidthsForPreviewPane: function (activePreview) {\n        const width = activePreview.$editorContainer.width() - 1;\n        if (this.$shade) {\n          this.$shade.width(width);\n        }\n        this.$outerContainer.css('width', `calc(${width}px - var(--m) * 2)`);\n      },\n\n      setTriggerElement: function (trigger) {\n        this.settings.triggerElement = trigger;\n      },\n\n      close: function () {\n        if (!this.isOpen) {\n          return;\n        }\n\n        this.trigger('beforeClose');\n        this.disable();\n        this.isOpen = false;\n\n        this._cancelTransitionListeners();\n\n        if (this.$shade) {\n          this.$shade\n            .removeClass('so-visible')\n            .one('transitionend.slideout', () => {\n              this.$shade.hide();\n            });\n        }\n\n        Craft.Slideout.removePanel(this);\n        Garnish.uiLayerManager.removeLayer();\n        Garnish.resetModalBackgroundLayerVisibility();\n        this.$container.one('transitionend.slideout', () => {\n          this.$outerContainer.addClass('hidden');\n          this.trigger('close');\n        });\n\n        if (this.settings.triggerElement) {\n          this.settings.triggerElement.focus();\n        }\n      },\n\n      _cancelTransitionListeners: function () {\n        if (this.$shade) {\n          this.$shade.off('transitionend.slideout');\n        }\n\n        this.$container.off('transitionend.slideout');\n      },\n\n      /**\n       * Destroy\n       */\n      destroy: function () {\n        if (this.$shade) {\n          this.$shade.remove();\n          this.$shade = null;\n        }\n\n        this.$outerContainer.remove();\n        this.$outerContainer = null;\n        this.$container = null;\n\n        Craft.Slideout.instances = Craft.filterObject(\n          Craft.Slideout.instances,\n          (instance) => instance !== this\n        );\n\n        this.base();\n      },\n    },\n    {\n      defaults: {\n        containerElement: 'div',\n        containerAttributes: {},\n        autoOpen: true,\n        closeOnEsc: true,\n        closeOnShadeClick: true,\n        triggerElement: null,\n      },\n      instances: {},\n      openPanels: [],\n      addPanel: function (panel) {\n        Craft.Slideout.openPanels.unshift(panel);\n        if (panel.useMobileStyles) {\n          panel.$container.css('top', 0);\n        } else {\n          Craft.Slideout.updateStyles();\n        }\n      },\n      removePanel: function (panel) {\n        Craft.Slideout.openPanels = Craft.Slideout.openPanels.filter(\n          (m) => m !== panel\n        );\n        if (panel.useMobileStyles) {\n          panel.$container.css('top', '100vh');\n        } else {\n          panel.$container.css(Garnish.ltr ? 'left' : 'right', '100vw');\n          Craft.Slideout.updateStyles();\n        }\n      },\n      updateStyles: function () {\n        const totalPanels = Craft.Slideout.openPanels.length;\n        Craft.Slideout.openPanels.forEach((panel, i) => {\n          panel.$container.css(\n            Garnish.ltr ? 'left' : 'right',\n            `${45 * ((totalPanels - i) / totalPanels)}vw`\n          );\n        });\n\n        if (totalPanels !== 0) {\n          Garnish.$bod.addClass('no-scroll');\n        } else {\n          Garnish.$bod.removeClass('no-scroll');\n        }\n      },\n    }\n  );\n})(jQuery);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Slug Generator\n */\nCraft.SlugGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    sourceVal = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Remove inner-word punctuation\n    sourceVal = sourceVal.replace(/['\"‘’“”\\[\\]\\(\\)\\{\\}:]/g, '');\n\n    if (Craft.limitAutoSlugsToAscii) {\n      // Convert extended ASCII characters to basic ASCII\n      sourceVal = Craft.asciiString(sourceVal, this.settings.charMap);\n    }\n\n    // Make it lowercase\n    if (!Craft.allowUppercaseInSlug) {\n      sourceVal = sourceVal.toLowerCase();\n    }\n\n    // Get the \"words\". Split on anything that is not alphanumeric.\n    // Reference: http://www.regular-expressions.info/unicode.html\n    var words = Craft.filterArray(\n      XRegExp.matchChain(sourceVal, [XRegExp('[\\\\p{L}\\\\p{N}\\\\p{M}]+')])\n    );\n\n    if (words.length) {\n      return words.join(Craft.slugWordSeparator);\n    } else {\n      return '';\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Structure class\n */\nCraft.Structure = Garnish.Base.extend(\n  {\n    id: null,\n\n    $container: null,\n    state: null,\n    structureDrag: null,\n\n    /**\n     * Init\n     */\n    init: function (id, container, settings) {\n      this.id = id;\n      this.$container = $(container);\n      this.setSettings(settings, Craft.Structure.defaults);\n\n      // Is this already a structure?\n      if (this.$container.data('structure')) {\n        console.warn('Double-instantiating a structure on an element');\n        this.$container.data('structure').destroy();\n      }\n\n      this.$container.data('structure', this);\n\n      this.state = {};\n\n      if (this.settings.storageKey) {\n        $.extend(\n          this.state,\n          Craft.getLocalStorage(this.settings.storageKey, {})\n        );\n      }\n\n      if (typeof this.state.collapsedElementIds === 'undefined') {\n        this.state.collapsedElementIds = [];\n      }\n\n      var $parents = this.$container.find('ul').prev('.row');\n\n      for (var i = 0; i < $parents.length; i++) {\n        var $row = $($parents[i]),\n          $li = $row.parent(),\n          $toggle = $(\n            '<div class=\"toggle\" title=\"' +\n              Craft.t('app', 'Show/hide children') +\n              '\"/>'\n          ).prependTo($row);\n\n        if (\n          $.inArray(\n            $row.children('.element').data('id'),\n            this.state.collapsedElementIds\n          ) !== -1\n        ) {\n          $li.addClass('collapsed');\n        }\n\n        this.initToggle($toggle);\n      }\n\n      if (this.settings.sortable) {\n        this.structureDrag = new Craft.StructureDrag(\n          this,\n          this.settings.maxLevels\n        );\n      }\n\n      if (this.settings.newChildUrl) {\n        this.initNewChildMenus(this.$container.find('.add'));\n      }\n    },\n\n    initToggle: function ($toggle) {\n      $toggle.on('click', (ev) => {\n        var $li = $(ev.currentTarget).closest('li'),\n          elementId = $li.children('.row').find('.element:first').data('id'),\n          viewStateKey = $.inArray(elementId, this.state.collapsedElementIds);\n\n        if ($li.hasClass('collapsed')) {\n          $li.removeClass('collapsed');\n\n          if (viewStateKey !== -1) {\n            this.state.collapsedElementIds.splice(viewStateKey, 1);\n          }\n        } else {\n          $li.addClass('collapsed');\n\n          if (viewStateKey === -1) {\n            this.state.collapsedElementIds.push(elementId);\n          }\n        }\n\n        if (this.settings.storageKey) {\n          Craft.setLocalStorage(this.settings.storageKey, this.state);\n        }\n      });\n    },\n\n    initNewChildMenus: function ($addBtns) {\n      this.addListener($addBtns, 'click', 'onNewChildMenuClick');\n    },\n\n    onNewChildMenuClick: function (ev) {\n      var $btn = $(ev.currentTarget);\n\n      if (!$btn.data('menubtn')) {\n        var elementId = $btn.parent().children('.element').data('id'),\n          newChildUrl = Craft.getUrl(\n            this.settings.newChildUrl,\n            'parentId=' + elementId\n          );\n\n        $(\n          '<div class=\"menu\"><ul><li><a href=\"' +\n            newChildUrl +\n            '\">' +\n            Craft.t('app', 'New child') +\n            '</a></li></ul></div>'\n        ).insertAfter($btn);\n\n        var menuBtn = new Garnish.MenuBtn($btn);\n        menuBtn.showMenu();\n      }\n    },\n\n    getIndent: function (level) {\n      return (\n        Craft.Structure.baseIndent + (level - 1) * Craft.Structure.nestedIndent\n      );\n    },\n\n    addElement: function ($element) {\n      var $li = $('<li data-level=\"1\"/>').appendTo(this.$container),\n        $row = $(\n          '<div class=\"row\" style=\"margin-' +\n            Craft.left +\n            ': -' +\n            Craft.Structure.baseIndent +\n            'px; padding-' +\n            Craft.left +\n            ': ' +\n            Craft.Structure.baseIndent +\n            'px;\">'\n        ).appendTo($li);\n\n      $row.append($element);\n\n      if (this.settings.sortable) {\n        $row.append(\n          '<a class=\"move icon\" title=\"' + Craft.t('app', 'Move') + '\"></a>'\n        );\n        this.structureDrag.addItems($li);\n      }\n\n      if (this.settings.newChildUrl) {\n        var $addBtn = $(\n          '<a class=\"add icon\" title=\"' + Craft.t('app', 'New child') + '\"></a>'\n        ).appendTo($row);\n        this.initNewChildMenus($addBtn);\n      }\n\n      $row.css('margin-bottom', -30);\n      $row.velocity({'margin-bottom': 0}, 'fast');\n    },\n\n    removeElement: function ($element) {\n      var $li = $element.parent().parent();\n\n      if (this.settings.sortable) {\n        this.structureDrag.removeItems($li);\n      }\n\n      var $parentUl;\n\n      if (!$li.siblings().length) {\n        $parentUl = $li.parent();\n      }\n\n      $li\n        .css('visibility', 'hidden')\n        .velocity({marginBottom: -$li.height()}, 'fast', () => {\n          $li.remove();\n\n          if (typeof $parentUl !== 'undefined') {\n            this._removeUl($parentUl);\n          }\n        });\n    },\n\n    _removeUl: function ($ul) {\n      $ul.siblings('.row').children('.toggle').remove();\n      $ul.remove();\n    },\n\n    destroy: function () {\n      this.$container.removeData('structure');\n      this.base();\n    },\n  },\n  {\n    baseIndent: 8,\n    nestedIndent: 35,\n\n    defaults: {\n      storageKey: null,\n      sortable: false,\n      newChildUrl: null,\n      maxLevels: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Structure drag class\n */\nCraft.StructureDrag = Garnish.Drag.extend({\n  structure: null,\n  maxLevels: null,\n  draggeeLevel: null,\n\n  $helperLi: null,\n  $targets: null,\n  draggeeHeight: null,\n\n  init: function (structure, maxLevels) {\n    this.structure = structure;\n    this.maxLevels = maxLevels;\n\n    this.$insertion = $('<li class=\"draginsertion\"/>');\n\n    var $items = this.structure.$container.find('li');\n\n    this.base($items, {\n      handle: '.element:first, .move:first',\n      helper: this.getHelper.bind(this),\n    });\n  },\n\n  getHelper: function ($helper) {\n    this.$helperLi = $helper;\n    var $ul = $('<ul class=\"structure draghelper\"/>').append($helper);\n    $helper.css(\n      'padding-' + Craft.left,\n      this.$draggee.css('padding-' + Craft.left)\n    );\n    $helper.find('.move').removeAttr('title');\n    return $ul;\n  },\n\n  onDragStart: function () {\n    this.$targets = $();\n\n    // Recursively find each of the targets, in the order they appear to be in\n    this.findTargets(this.structure.$container);\n\n    // How deep does the rabbit hole go?\n    this.draggeeLevel = 0;\n    var $level = this.$draggee;\n    do {\n      this.draggeeLevel++;\n      $level = $level.find('> ul > li');\n    } while ($level.length);\n\n    // Collapse the draggee\n    this.draggeeHeight = this.$draggee.height();\n    this.$draggee.velocity(\n      {\n        height: 0,\n      },\n      'fast',\n      () => {\n        this.$draggee.addClass('hidden');\n      }\n    );\n    this.base();\n\n    this.addListener(Garnish.$doc, 'keydown', function (ev) {\n      if (ev.keyCode === Garnish.ESC_KEY) {\n        this.cancelDrag();\n      }\n    });\n  },\n\n  findTargets: function ($ul) {\n    var $lis = $ul.children().not(this.$draggee);\n\n    for (var i = 0; i < $lis.length; i++) {\n      var $li = $($lis[i]);\n      this.$targets = this.$targets.add($li.children('.row'));\n\n      if (!$li.hasClass('collapsed')) {\n        this.findTargets($li.children('ul'));\n      }\n    }\n  },\n\n  onDrag: function () {\n    if (this._.$closestTarget) {\n      this._.$closestTarget.removeClass('draghover');\n      this.$insertion.remove();\n    }\n\n    // First let's find the closest target\n    this._.$closestTarget = null;\n    this._.closestTargetPos = null;\n    this._.closestTargetYDiff = null;\n    this._.closestTargetOffset = null;\n    this._.closestTargetHeight = null;\n\n    for (this._.i = 0; this._.i < this.$targets.length; this._.i++) {\n      this._.$target = $(this.$targets[this._.i]);\n      this._.targetOffset = this._.$target.offset();\n      this._.targetHeight = this._.$target.outerHeight();\n      this._.targetYMidpoint =\n        this._.targetOffset.top + this._.targetHeight / 2;\n      this._.targetYDiff = Math.abs(this.mouseY - this._.targetYMidpoint);\n\n      if (\n        this._.i === 0 ||\n        (this.mouseY >= this._.targetOffset.top + 5 &&\n          this._.targetYDiff < this._.closestTargetYDiff)\n      ) {\n        this._.$closestTarget = this._.$target;\n        this._.closestTargetPos = this._.i;\n        this._.closestTargetYDiff = this._.targetYDiff;\n        this._.closestTargetOffset = this._.targetOffset;\n        this._.closestTargetHeight = this._.targetHeight;\n      } else {\n        // Getting colder\n        break;\n      }\n    }\n\n    if (!this._.$closestTarget) {\n      return;\n    }\n\n    // Are we hovering above the first row?\n    if (\n      this._.closestTargetPos === 0 &&\n      this.mouseY < this._.closestTargetOffset.top + 5\n    ) {\n      this.$insertion.prependTo(this.structure.$container);\n    } else {\n      this._.$closestTargetLi = this._.$closestTarget.parent();\n      this._.closestTargetLevel = this._.$closestTargetLi.data('level');\n\n      // Is there a next row?\n      if (this._.closestTargetPos < this.$targets.length - 1) {\n        this._.$nextTargetLi = $(\n          this.$targets[this._.closestTargetPos + 1]\n        ).parent();\n        this._.nextTargetLevel = this._.$nextTargetLi.data('level');\n      } else {\n        this._.$nextTargetLi = null;\n        this._.nextTargetLevel = null;\n      }\n\n      // Are we hovering between this row and the next one?\n      this._.hoveringBetweenRows =\n        this.mouseY >=\n        this._.closestTargetOffset.top + this._.closestTargetHeight - 5;\n\n      /**\n       * Scenario 1: Both rows have the same level.\n       *\n       *     * Row 1\n       *     ----------------------\n       *     * Row 2\n       */\n\n      if (\n        this._.$nextTargetLi &&\n        this._.nextTargetLevel == this._.closestTargetLevel\n      ) {\n        if (this._.hoveringBetweenRows) {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel - 1\n          ) {\n            // Position the insertion after the closest target\n            this.$insertion.insertAfter(this._.$closestTargetLi);\n          }\n        } else {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel\n          ) {\n            this._.$closestTarget.addClass('draghover');\n          }\n        }\n      } else if (\n        /**\n         * Scenario 2: Next row is a child of this one.\n         *\n         *     * Row 1\n         *     ----------------------\n         *         * Row 2\n         */\n        this._.$nextTargetLi &&\n        this._.nextTargetLevel > this._.closestTargetLevel\n      ) {\n        if (\n          !this.maxLevels ||\n          this.maxLevels >= this._.nextTargetLevel + this.draggeeLevel - 1\n        ) {\n          if (this._.hoveringBetweenRows) {\n            // Position the insertion as the first child of the closest target\n            this.$insertion.insertBefore(this._.$nextTargetLi);\n          } else {\n            this._.$closestTarget.addClass('draghover');\n            this.$insertion.appendTo(this._.$closestTargetLi.children('ul'));\n          }\n        }\n      } else {\n        /**\n         * Scenario 3: Next row is a child of a parent node, or there is no next row.\n         *\n         *         * Row 1\n         *     ----------------------\n         *     * Row 2\n         */\n        if (this._.hoveringBetweenRows) {\n          // Determine which <li> to position the insertion after\n          this._.draggeeX = this.mouseX - this.targetItemMouseDiffX;\n\n          if (Craft.orientation === 'rtl') {\n            this._.draggeeX += this.$helperLi.width();\n          }\n\n          this._.$parentLis = this._.$closestTarget.parentsUntil(\n            this.structure.$container,\n            'li'\n          );\n          this._.$closestParentLi = null;\n          this._.closestParentLiXDiff = null;\n          this._.closestParentLevel = null;\n\n          for (this._.i = 0; this._.i < this._.$parentLis.length; this._.i++) {\n            this._.$parentLi = $(this._.$parentLis[this._.i]);\n            this._.parentLiX = this._.$parentLi.offset().left;\n\n            if (Craft.orientation === 'rtl') {\n              this._.parentLiX += this._.$parentLi.width();\n            }\n\n            this._.parentLiXDiff = Math.abs(this._.parentLiX - this._.draggeeX);\n            this._.parentLevel = this._.$parentLi.data('level');\n\n            if (\n              (!this.maxLevels ||\n                this.maxLevels >= this._.parentLevel + this.draggeeLevel - 1) &&\n              (!this._.$closestParentLi ||\n                (this._.parentLiXDiff < this._.closestParentLiXDiff &&\n                  (!this._.$nextTargetLi ||\n                    this._.parentLevel >= this._.nextTargetLevel)))\n            ) {\n              this._.$closestParentLi = this._.$parentLi;\n              this._.closestParentLiXDiff = this._.parentLiXDiff;\n              this._.closestParentLevel = this._.parentLevel;\n            }\n          }\n\n          if (this._.$closestParentLi) {\n            this.$insertion.insertAfter(this._.$closestParentLi);\n          }\n        } else {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel\n          ) {\n            this._.$closestTarget.addClass('draghover');\n          }\n        }\n      }\n    }\n  },\n\n  cancelDrag: function () {\n    this.$insertion.remove();\n\n    if (this._.$closestTarget) {\n      this._.$closestTarget.removeClass('draghover');\n    }\n\n    this.onMouseUp();\n  },\n\n  onDragStop: function () {\n    // Are we repositioning the draggee?\n    if (\n      this._.$closestTarget &&\n      (this.$insertion.parent().length ||\n        this._.$closestTarget.hasClass('draghover'))\n    ) {\n      var $draggeeParent, moved;\n\n      // Are we about to leave the draggee's original parent childless?\n      if (!this.$draggee.siblings().length) {\n        $draggeeParent = this.$draggee.parent();\n      }\n\n      if (this.$insertion.parent().length) {\n        // Make sure the insertion isn't right next to the draggee\n        var $closestSiblings = this.$insertion\n          .next()\n          .add(this.$insertion.prev());\n\n        if ($.inArray(this.$draggee[0], $closestSiblings) === -1) {\n          this.$insertion.replaceWith(this.$draggee);\n          moved = true;\n        } else {\n          this.$insertion.remove();\n          moved = false;\n        }\n      } else {\n        var $ul = this._.$closestTargetLi.children('ul');\n\n        // Make sure this is a different parent than the draggee's\n        if (!$draggeeParent || !$ul.length || $ul[0] !== $draggeeParent[0]) {\n          if (!$ul.length) {\n            var $toggle = $(\n              '<div class=\"toggle\" title=\"' +\n                Craft.t('app', 'Show/hide children') +\n                '\"/>'\n            ).prependTo(this._.$closestTarget);\n            this.structure.initToggle($toggle);\n\n            $ul = $('<ul>').appendTo(this._.$closestTargetLi);\n          } else if (this._.$closestTargetLi.hasClass('collapsed')) {\n            this._.$closestTarget.children('.toggle').trigger('click');\n          }\n\n          this.$draggee.appendTo($ul);\n          moved = true;\n        } else {\n          moved = false;\n        }\n      }\n\n      // Remove the class either way\n      this._.$closestTarget.removeClass('draghover');\n\n      if (moved) {\n        // Now deal with the now-childless parent\n        if ($draggeeParent) {\n          this.structure._removeUl($draggeeParent);\n        }\n\n        // Has the level changed?\n        var newLevel =\n          this.$draggee.parentsUntil(this.structure.$container, 'li').length +\n          1;\n\n        var animateCss;\n\n        if (newLevel != this.$draggee.data('level')) {\n          // Correct the helper's padding if moving to/from level 1\n          if (this.$draggee.data('level') == 1) {\n            animateCss = {};\n            animateCss['padding-' + Craft.left] = 38;\n            this.$helperLi.velocity(animateCss, 'fast');\n          } else if (newLevel == 1) {\n            animateCss = {};\n            animateCss['padding-' + Craft.left] = Craft.Structure.baseIndent;\n            this.$helperLi.velocity(animateCss, 'fast');\n          }\n\n          this.setLevel(this.$draggee, newLevel);\n        }\n\n        // Make it real\n        var $element = this.$draggee.children('.row').children('.element');\n\n        var data = {\n          structureId: this.structure.id,\n          elementId: $element.data('id'),\n          siteId: $element.data('site-id'),\n          prevId: this.$draggee\n            .prev()\n            .children('.row')\n            .children('.element')\n            .data('id'),\n          parentId: this.$draggee\n            .parent('ul')\n            .parent('li')\n            .children('.row')\n            .children('.element')\n            .data('id'),\n        };\n\n        Craft.sendActionRequest('POST', 'structures/move-element', {data}).then(\n          (response) => {\n            Craft.cp.displaySuccess(Craft.t('app', 'New order saved.'));\n          }\n        );\n      }\n    }\n\n    // Animate things back into place\n    this.$draggee\n      .velocity('stop')\n      .removeClass('hidden')\n      .velocity(\n        {\n          height: this.draggeeHeight,\n        },\n        'fast',\n        () => {\n          this.$draggee.css('height', 'auto');\n        }\n      );\n\n    this.returnHelpersToDraggees();\n\n    this.base();\n  },\n\n  setLevel: function ($li, level) {\n    $li.data('level', level);\n\n    var indent = this.structure.getIndent(level);\n\n    var css = {};\n    css['margin-' + Craft.left] = '-' + indent + 'px';\n    css['padding-' + Craft.left] = indent + 'px';\n    this.$draggee.children('.row').css(css);\n\n    var $childLis = $li.children('ul').children();\n\n    for (var i = 0; i < $childLis.length; i++) {\n      this.setLevel($($childLis[i]), level + 1);\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Table Element Index View\n */\nCraft.TableElementIndexView = Craft.BaseElementIndexView.extend({\n  $table: null,\n  $tableCaption: null,\n  $selectedSortHeader: null,\n  $statusMessage: null,\n  $editBtn: null,\n  $saveBtn: null,\n  $cancelBtn: null,\n\n  tableSort: null,\n\n  _totalVisiblePostStructureTableDraggee: null,\n  _morePendingPostStructureTableDraggee: false,\n\n  _broadcastListener: null,\n\n  initialSerializedValue: null,\n\n  getElementContainer: function () {\n    // Save a reference to the table\n    this.$table = this.$container.find('table:first');\n    return this.$table.children('tbody:first');\n  },\n\n  afterInit: function () {\n    // Set table caption\n    this.$tableCaption = this.$table.find('caption');\n\n    // Set the sort header\n    this.initTableHeaders();\n\n    this.addListener(Garnish.$win, 'resize', this.setContainerHeight);\n    this.setContainerHeight();\n\n    // Create the table sorter\n    if (\n      (this.settings.sortable ||\n        (this.elementIndex.isAdministrative &&\n          this.elementIndex.viewMode === 'structure' &&\n          Garnish.hasAttr(this.$table, 'data-structure-id'))) &&\n      !this.elementIndex.inlineEditing\n    ) {\n      this.tableSort = new Craft.ElementTableSorter(\n        this,\n        this.getAllElements(),\n        {\n          structureId: this.$table.data('structure-id'),\n          maxLevels: this.$table.attr('data-max-levels'),\n          onSortChange: () => {\n            this.settings.onSortChange(this.tableSort.$draggee);\n          },\n        }\n      );\n    }\n\n    // Handle expand/collapse toggles for Structures\n    if (\n      this.elementIndex.viewMode === 'structure' &&\n      !this.elementIndex.inlineEditing\n    ) {\n      this.addListener(this.$elementContainer, 'click', function (ev) {\n        var $target = $(ev.target);\n\n        if ($target.hasClass('toggle')) {\n          if (this._collapseElement($target) === false) {\n            this._expandElement($target);\n          }\n        }\n      });\n    }\n\n    if (\n      this.elementIndex.isAdministrative &&\n      this.elementIndex.settings.inlineEditable !== false &&\n      this.$elementContainer.has('> tr[data-id] > th .element[data-editable]')\n    ) {\n      this.initForInlineEditing();\n    }\n\n    // Set up the broadcast listener\n    if (Craft.messageReceiver) {\n      this._broadcastListener = (ev) => {\n        if (ev.data.event === 'saveElement') {\n          const $rows = this.$table.find(\n            `> tbody > tr[data-id=\"${ev.data.id}\"]`\n          );\n          if ($rows.length) {\n            const data = {\n              elementType: this.elementIndex.elementType,\n              source: this.elementIndex.sourceKey,\n              id: ev.data.id,\n              siteId: this.elementIndex.siteId,\n            };\n            Craft.sendActionRequest(\n              'POST',\n              'element-indexes/element-table-html',\n              {data}\n            ).then(({data}) => {\n              for (let i = 0; i < $rows.length; i++) {\n                const $row = $rows.eq(i);\n                $row\n                  .find('> th[data-titlecell] .element')\n                  .replaceWith(data.elementHtml);\n                for (let attribute in data.attributeHtml) {\n                  if (data.attributeHtml.hasOwnProperty(attribute)) {\n                    $row\n                      .find(`> td[data-attr=\"${attribute}\"]`)\n                      .html(data.attributeHtml[attribute]);\n                  }\n                }\n              }\n              Craft.cp.elementThumbLoader.load($rows);\n            });\n          }\n        }\n      };\n\n      Craft.messageReceiver.addEventListener(\n        'message',\n        this._broadcastListener\n      );\n    }\n  },\n\n  initForInlineEditing: function () {\n    if (this.elementIndex.inlineEditing) {\n      Craft.initUiElements(this.$elementContainer);\n      this.initialSerializedValue = this.serializeInputs();\n\n      this.$saveBtn = Craft.ui\n        .createSubmitButton({\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n      this.$cancelBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Cancel'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n\n      this.addListener(this.$saveBtn, 'activate', () => {\n        this.$saveBtn.addClass('loading');\n        this.saveChanges()\n          .then((data) => {\n            if (data.errors) {\n              for (let elementId in data.errors) {\n                if (data.errors.hasOwnProperty(elementId)) {\n                  const $row = this.$elementContainer.children(\n                    `[data-id=\"${elementId}\"]`\n                  );\n                  for (let attribute in data.errors[elementId]) {\n                    $row\n                      .find(`[name*=\"${attribute}\"]`)\n                      .closest('td')\n                      .addClass('errors');\n                  }\n                }\n              }\n\n              this.elementIndex.setIndexAvailable();\n              Craft.cp.displayError(\n                Craft.t('app', 'Could not save due to validation errors.')\n              );\n              return;\n            }\n\n            Craft.cp.displaySuccess(Craft.t('app', 'Changes saved.'));\n            this.elementIndex.inlineEditing = false;\n            this.elementIndex.updateElements(true, false);\n          })\n          .catch(() => {\n            this.elementIndex.setIndexAvailable();\n            Craft.cp.displayError();\n          })\n          .finally(() => {\n            this.$saveBtn.removeClass('loading');\n          });\n      });\n\n      this.addListener(this.$cancelBtn, 'activate', () => {\n        this.$cancelBtn.addClass('loading');\n        this.elementIndex.inlineEditing = false;\n        this.elementIndex.updateElements(true, false);\n      });\n\n      this.addListener(this.$elementContainer, 'keydown', (event) => {\n        if (\n          event.keyCode === Garnish.RETURN_KEY &&\n          Garnish.isCtrlKeyPressed(event)\n        ) {\n          this.$saveBtn.trigger('click');\n        } else if (\n          event.keyCode === Garnish.S_KEY &&\n          Garnish.isCtrlKeyPressed(event)\n        ) {\n          event.stopPropagation();\n          event.preventDefault();\n          this.$saveBtn.trigger('click');\n        }\n      });\n    } else {\n      this.$editBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Edit'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n      this.addListener(this.$editBtn, 'activate', () => {\n        this.$editBtn.addClass('loading');\n        this.elementIndex.inlineEditing = true;\n        this.elementIndex.updateElements(true, false);\n      });\n    }\n  },\n\n  serializeInputs: function () {\n    const data = Garnish.getPostData(this.$elementContainer);\n    const serialized = [];\n    for (let i in data) {\n      serialized.push(encodeURIComponent(`${i}=${data[i]}`));\n    }\n    return serialized.join('&');\n  },\n\n  getDeltaInputChanges: function () {\n    const deltaNames = this.$elementContainer\n      .children()\n      .toArray()\n      .map(\n        (e) =>\n          `${this.elementIndex.nestedInputNamespace}[element-${$(e).data(\n            'id'\n          )}]`\n      );\n    return Craft.findDeltaData(\n      this.initialSerializedValue,\n      this.serializeInputs(),\n      deltaNames\n    );\n  },\n\n  haveInputsChanged: function () {\n    return this.serializeInputs() !== this.initialSerializedValue;\n  },\n\n  saveChanges: async function () {\n    let data = this.getDeltaInputChanges();\n    if (!data) {\n      return {};\n    }\n\n    data +=\n      '&' +\n      $.param({\n        elementType: this.elementIndex.elementType,\n        siteId: this.elementIndex.siteId,\n        namespace: this.elementIndex.nestedInputNamespace,\n      });\n\n    const response = await Craft.sendActionRequest(\n      'POST',\n      'element-indexes/save-elements',\n      {\n        data,\n      }\n    );\n\n    return response.data;\n  },\n\n  initTableHeaders: function () {\n    if (this.settings.sortable || this.elementIndex.inlineEditing) {\n      return;\n    }\n\n    let selectedSortAttr, selectedSortDir;\n    if (this.elementIndex.viewMode === 'structure') {\n      selectedSortAttr = 'structure';\n      selectedSortDir = 'asc';\n    } else {\n      [selectedSortAttr, selectedSortDir] =\n        this.elementIndex.getSortAttributeAndDirection();\n    }\n\n    const $tableHeaders = this.$table\n      .children('thead')\n      .children()\n      .children('[data-attribute]');\n\n    for (let i = 0; i < $tableHeaders.length; i++) {\n      const $header = $tableHeaders.eq(i);\n      const attr = $header.attr('data-attribute');\n      let sortValue = 'none';\n\n      // Is this the selected sort attribute?\n      if (attr === selectedSortAttr) {\n        this.$selectedSortHeader = $header;\n        sortValue = selectedSortDir === 'asc' ? 'ascending' : 'descending';\n        $header.addClass('ordered ' + selectedSortDir);\n        this.makeColumnSortable($header, true);\n      } else {\n        // Is this attribute sortable?\n        if (this.elementIndex.getSortOption(attr)) {\n          this.makeColumnSortable($header);\n        }\n      }\n\n      $header.attr('aria-sort', sortValue);\n    }\n  },\n\n  makeColumnSortable: function ($header, sorted = false) {\n    $header.addClass('orderable');\n\n    const headerHtml = $header.html();\n    const $instructions = this.$tableCaption.find('[data-sort-instructions]');\n    const $headerButton = $('<button/>', {\n      id: `${this.elementIndex.idPrefix}-${$header.attr('data-attribute')}`,\n      type: 'button',\n      'aria-pressed': 'false',\n    }).html(headerHtml);\n\n    if ($instructions.length) {\n      $headerButton.attr('aria-describedby', $instructions.attr('id'));\n    }\n\n    if (sorted) {\n      $headerButton.attr('aria-pressed', 'true');\n      $headerButton.on('click', this._handleSelectedSortHeaderClick.bind(this));\n    } else {\n      $headerButton.on(\n        'click',\n        this._handleUnselectedSortHeaderClick.bind(this)\n      );\n    }\n\n    $header.empty().append($headerButton);\n  },\n\n  isVerticalList: function () {\n    return true;\n  },\n\n  getTotalVisible: function () {\n    if (this._isStructureTableDraggingLastElements()) {\n      return this._totalVisiblePostStructureTableDraggee;\n    } else {\n      return this._totalVisible;\n    }\n  },\n\n  setTotalVisible: function (totalVisible) {\n    if (this._isStructureTableDraggingLastElements()) {\n      this._totalVisiblePostStructureTableDraggee = totalVisible;\n    } else {\n      this._totalVisible = totalVisible;\n    }\n  },\n\n  getMorePending: function () {\n    if (this._isStructureTableDraggingLastElements()) {\n      return this._morePendingPostStructureTableDraggee;\n    } else {\n      return this._morePending;\n    }\n  },\n\n  setMorePending: function (morePending) {\n    if (this._isStructureTableDraggingLastElements()) {\n      this._morePendingPostStructureTableDraggee = morePending;\n    } else {\n      this._morePending = this._morePendingPostStructureTableDraggee =\n        morePending;\n    }\n  },\n\n  getLoadMoreParams: function () {\n    var params = this.base();\n\n    // If we are dragging the last elements on the page,\n    // tell the controller to only load elements positioned after the draggee.\n    if (this._isStructureTableDraggingLastElements()) {\n      params.criteria.positionedAfter = this.tableSort.$targetItem.data('id');\n    }\n\n    return params;\n  },\n\n  appendElements: function ($newElements) {\n    this.base($newElements);\n\n    if (this.tableSort) {\n      this.tableSort.addItems($newElements);\n    }\n\n    Craft.cp.updateResponsiveTables();\n  },\n\n  setContainerHeight: function (event) {\n    window.requestAnimationFrame(() => {\n      const $tablePane = this.$container.find('.tablepane');\n      if (!$tablePane.length) {\n        return;\n      }\n\n      const footerHeight = $('#content > #footer').outerHeight(true) || 0;\n      const margin = parseInt(\n        getComputedStyle($tablePane[0]).getPropertyValue('--padding'),\n        10\n      );\n      const containerHeight =\n        window.innerHeight - $tablePane.offset().top - footerHeight - margin;\n\n      $tablePane.css('max-height', containerHeight);\n    });\n  },\n\n  _collapseElement: function ($toggle, force) {\n    if (!force && !$toggle.hasClass('expanded')) {\n      return false;\n    }\n\n    $toggle.removeClass('expanded');\n    $toggle.attr('aria-expanded', 'false');\n\n    // Find and remove the descendant rows\n    var $row = $toggle.closest('tr'),\n      id = $row.data('id'),\n      level = $row.data('level'),\n      $nextRow = $row.next();\n\n    while ($nextRow.length) {\n      if (!Garnish.hasAttr($nextRow, 'data-spinnerrow')) {\n        if ($nextRow.data('level') <= level) {\n          break;\n        }\n\n        if (this.elementSelect) {\n          this.elementSelect.removeItems($nextRow);\n        }\n\n        if (this.tableSort) {\n          this.tableSort.removeItems($nextRow);\n        }\n\n        this._totalVisible--;\n      }\n\n      var $nextNextRow = $nextRow.next();\n      $nextRow.remove();\n      $nextRow = $nextNextRow;\n    }\n\n    // Remember that this row should be collapsed\n    if (!this.elementIndex.instanceState.collapsedElementIds) {\n      this.elementIndex.instanceState.collapsedElementIds = [];\n    }\n\n    this.elementIndex.instanceState.collapsedElementIds.push(id);\n    this.elementIndex.setInstanceState(\n      'collapsedElementIds',\n      this.elementIndex.instanceState.collapsedElementIds\n    );\n\n    // Bottom of the index might be viewable now\n    this.maybeLoadMore();\n  },\n\n  _expandElement: function ($toggle, force) {\n    if (!force && $toggle.hasClass('expanded')) {\n      return false;\n    }\n\n    $toggle.addClass('expanded');\n    $toggle.attr('aria-expanded', 'true');\n\n    // Remove this element from our list of collapsed elements\n    if (this.elementIndex.instanceState.collapsedElementIds) {\n      var $row = $toggle.closest('tr'),\n        id = $row.data('id'),\n        index = $.inArray(\n          id,\n          this.elementIndex.instanceState.collapsedElementIds\n        );\n\n      if (index !== -1) {\n        this.elementIndex.instanceState.collapsedElementIds.splice(index, 1);\n        this.elementIndex.setInstanceState(\n          'collapsedElementIds',\n          this.elementIndex.instanceState.collapsedElementIds\n        );\n\n        // Add a temporary row\n        var $spinnerRow = this._createSpinnerRowAfter($row);\n\n        // Load the nested elements\n        let data = $.extend(true, {}, this.settings.params);\n        data.criteria.descendantOf = id;\n\n        Craft.sendActionRequest('POST', this.settings.loadMoreElementsAction, {\n          data,\n        })\n          .then(async (response) => {\n            // Do we even care about this anymore?\n            if (!$spinnerRow.parent().length) {\n              return;\n            }\n\n            let $newElements = $(response.data.html);\n\n            // Are there more descendants we didn't get in this batch?\n            let totalVisible = this._totalVisible + $newElements.length;\n            let morePending =\n              this.settings.batchSize &&\n              $newElements.length === this.settings.batchSize;\n\n            if (morePending) {\n              // Remove all the elements after it\n              let $nextRows = $spinnerRow.nextAll();\n\n              if (this.elementSelect) {\n                this.elementSelect.removeItems($nextRows);\n              }\n\n              if (this.tableSort) {\n                this.tableSort.removeItems($nextRows);\n              }\n\n              $nextRows.remove();\n              totalVisible -= $nextRows.length;\n            } else {\n              // Maintain the current 'more' status\n              morePending = this._morePending;\n            }\n\n            $spinnerRow.replaceWith($newElements);\n            this.thumbLoader.load($newElements);\n\n            if (this.elementIndex.actions || this.settings.selectable) {\n              this.elementSelect.addItems(\n                $newElements.filter(':not(.disabled)')\n              );\n              this.elementIndex.updateActionTriggers();\n            }\n\n            if (this.tableSort) {\n              this.tableSort.addItems($newElements);\n            }\n\n            await Craft.appendHeadHtml(response.data.headHtml);\n            await Craft.appendBodyHtml(response.data.bodyHtml);\n            Craft.cp.updateResponsiveTables();\n\n            this.setTotalVisible(totalVisible);\n            this.setMorePending(morePending);\n\n            // Is there room to load more right now?\n            this.maybeLoadMore();\n          })\n          .catch((e) => {\n            Craft.cp.displayError();\n            if (!$spinnerRow.parent().length) {\n              return;\n            }\n          });\n      }\n    }\n  },\n\n  _createSpinnerRowAfter: function ($row) {\n    return $(\n      '<tr data-spinnerrow>' +\n        '<td class=\"centeralign\" colspan=\"' +\n        $row.children().length +\n        '\">' +\n        '<div class=\"spinner\"/>' +\n        '</td>' +\n        '</tr>'\n    ).insertAfter($row);\n  },\n\n  _isStructureTableDraggingLastElements: function () {\n    return (\n      this.tableSort &&\n      this.tableSort.dragging &&\n      this.tableSort.draggingLastElements\n    );\n  },\n\n  _handleSelectedSortHeaderClick: function (ev) {\n    var $header = $(ev.currentTarget).closest('th');\n\n    if ($header.hasClass('loading')) {\n      return;\n    }\n\n    // Reverse the sort direction\n    var selectedSortDir = this.elementIndex.getSelectedSortDirection(),\n      newSortDir = selectedSortDir === 'asc' ? 'desc' : 'asc';\n\n    // In case it's actually the structure view\n    this.elementIndex.selectViewMode('table');\n\n    this.elementIndex.setSelectedSortDirection(newSortDir);\n    this._handleSortHeaderClick(ev, $header);\n  },\n\n  _handleUnselectedSortHeaderClick: function (ev) {\n    var $header = $(ev.currentTarget).closest('th');\n\n    if ($header.hasClass('loading')) {\n      return;\n    }\n\n    var attr = $header.attr('data-attribute');\n\n    // In case it's actually the structure view\n    this.elementIndex.selectViewMode('table');\n\n    this.elementIndex.setSelectedSortAttribute(attr);\n    this._handleSortHeaderClick(ev, $header);\n  },\n\n  _handleSortHeaderClick: function (ev, $header) {\n    if (this.$selectedSortHeader) {\n      this.$selectedSortHeader.removeClass('ordered asc desc');\n    }\n\n    $header.addClass('ordered loading');\n    this.elementIndex.updateElements();\n\n    // No need for two spinners\n    this.elementIndex.setIndexAvailable();\n  },\n\n  _updateTableAttributes: function ($element, tableAttributes) {\n    var $tr = $element.closest('tr');\n\n    for (var attr in tableAttributes) {\n      if (!tableAttributes.hasOwnProperty(attr)) {\n        continue;\n      }\n\n      $tr\n        .children('[data-attr=\"' + attr + '\"]:first')\n        .html(tableAttributes[attr]);\n    }\n  },\n\n  destroy: function () {\n    if (this.$editBtn) {\n      this.$editBtn.remove();\n    } else if (this.$cancelBtn) {\n      this.$saveBtn.remove();\n      this.$cancelBtn.remove();\n    }\n\n    if (this._broadcastListener) {\n      Craft.messageReceiver.removeEventListener(\n        'message',\n        this._broadcastListener\n      );\n      delete this._broadcastListener;\n    }\n\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Tab manager\n */\nCraft.Tabs = Garnish.Base.extend({\n  $container: null,\n  $tablist: null,\n  $menuBtn: null,\n  $tabs: null,\n  $firstTab: null,\n  $lastTab: null,\n  $selectedTab: null,\n  $focusableTab: null,\n  menu: null,\n\n  init: function (container) {\n    this.$container = $(container);\n    this.$tablist = this.$container.find('> [role=\"tablist\"]:first');\n    this.$tabs = this.$tablist.find('> [role=\"tab\"]');\n    this.$firstTab = this.$tabs.first();\n    this.$lastTab = this.$tabs.last();\n    this.$selectedTab = this.$tabs.filter('.sel:first');\n    this.$focusableTab = this.$tabs.filter('[tabindex=0]:first');\n    this.$menuBtn = this.$container.find('> .menubtn:first').disclosureMenu();\n    this.menu = this.$menuBtn.data('trigger').$container;\n\n    // Is there already a tab manager?\n    if (this.$container.data('tabs')) {\n      console.warn('Double-instantiating a tab manager on an element');\n      this.$container.data('tabs').destroy();\n    }\n\n    this.$container.data('tabs', this);\n\n    for (let i = 0; i < this.$tabs.length; i++) {\n      const $a = this.$tabs.eq(i);\n\n      // Does it link to an anchor?\n      const href = $a.attr('href');\n      if (href && href.charAt(0) === '#') {\n        this.addListener($a, 'keydown', (ev) => {\n          if ([Garnish.SPACE_KEY, Garnish.RETURN_KEY].includes(ev.keyCode)) {\n            ev.preventDefault();\n            this.selectTab(ev.currentTarget, true);\n          }\n        });\n        this.addListener($a, 'click', (ev) => {\n          ev.preventDefault();\n          this.selectTab(ev.currentTarget, true);\n        });\n      }\n\n      this.addListener($a, 'keydown', (ev) => {\n        let $tab;\n        if (\n          [Garnish.LEFT_KEY, Garnish.RIGHT_KEY].includes(ev.keyCode) &&\n          $.contains(this.$tablist[0], ev.currentTarget)\n        ) {\n          if (\n            ev.keyCode ===\n            (Craft.orientation === 'ltr' ? Garnish.LEFT_KEY : Garnish.RIGHT_KEY)\n          ) {\n            $tab = $(ev.currentTarget).prevAll(\n              '[role=\"tab\"]:not(.hidden):first'\n            );\n            $tab = $tab.length ? $tab : this.$lastTab;\n          } else {\n            $tab = $(ev.currentTarget).nextAll(\n              '[role=\"tab\"]:not(.hidden):first'\n            );\n            $tab = $tab.length ? $tab : this.$firstTab;\n          }\n        } else if (\n          ev.keyCode === Garnish.HOME_KEY ||\n          ev.keyCode === Garnish.END_KEY\n        ) {\n          $tab =\n            ev.keyCode === Garnish.HOME_KEY ? this.$firstTab : this.$lastTab;\n        }\n\n        if ($tab) {\n          ev.preventDefault();\n          this.makeTabFocusable($tab);\n          $tab.focus();\n          this.scrollToTab($tab);\n        }\n      });\n    }\n\n    this.updateMenuBtn();\n\n    Garnish.$win.on('resize', () => {\n      this.updateMenuBtn();\n    });\n\n    const $options = this.getMenuOptions();\n    this.addListener($options, 'activate', (ev) => {\n      const $option = $(ev.currentTarget);\n\n      // Prevent menu options from updating the URL\n      const href = $option.attr('href');\n      if (href && href.charAt(0) === '#') {\n        ev.preventDefault();\n      }\n\n      // Select tab\n      this.selectTab($option.data('id'));\n      this.$menuBtn.data('trigger').hide();\n    });\n  },\n\n  getMenuOptions: function () {\n    return this.menu.find('a');\n  },\n\n  selectTab: function (tab, focusTab = true) {\n    const $tab = this._getTab(tab);\n\n    if ($tab[0] === this.$selectedTab[0]) {\n      return;\n    }\n\n    this.deselectTab();\n    this.$selectedTab = $tab.addClass('sel').attr('aria-selected', 'true');\n    this.makeTabFocusable($tab);\n\n    if (focusTab) {\n      $tab.trigger('focus');\n    }\n\n    this.scrollToTab($tab);\n\n    this.getMenuOptions().removeClass('sel').removeAttr('aria-current');\n    this.getMenuOptions()\n      .filter(`[data-id=\"${$tab.data('id')}\"]`)\n      .addClass('sel')\n      .attr('aria-current', 'true');\n\n    this.trigger('selectTab', {\n      $tab: $tab,\n    });\n\n    $('#content').trigger('scroll');\n\n    const $slideoutContainer = $tab.closest('.slideout-container');\n    if ($slideoutContainer.length) {\n      $slideoutContainer.find('.so-content').trigger('scroll');\n    }\n  },\n\n  deselectTab: function () {\n    const $tab = this.$selectedTab\n      .removeClass('sel')\n      .attr('aria-selected', 'false');\n    this.$selectedTab = null;\n\n    this.trigger('deselectTab', {\n      $tab: $tab,\n    });\n  },\n\n  makeTabFocusable: function (tab) {\n    const $tab = this._getTab(tab);\n\n    if ($tab[0] === this.$focusableTab[0]) {\n      return;\n    }\n\n    this.$focusableTab.attr('tabindex', '-1');\n    this.$focusableTab = $tab.attr('tabindex', '0');\n  },\n\n  scrollToTab: function (tab) {\n    const $tab = this._getTab(tab);\n    const scrollLeft = this.$tablist.scrollLeft();\n    const tabOffset = $tab.offset().left;\n    const elemScrollOffset = tabOffset - this.$tablist.offset().left;\n    let targetScrollLeft = false;\n\n    // Is the tab hidden on the left?\n    if (elemScrollOffset < 0) {\n      targetScrollLeft = scrollLeft + elemScrollOffset - 24;\n    } else {\n      const tabWidth = $tab.outerWidth();\n      const ulWidth = this.$tablist.prop('clientWidth');\n\n      // Is it hidden to the right?\n      if (elemScrollOffset + tabWidth > ulWidth) {\n        targetScrollLeft =\n          scrollLeft + (elemScrollOffset - (ulWidth - tabWidth)) + 24;\n      }\n    }\n\n    if (targetScrollLeft !== false) {\n      this.$tablist.scrollLeft(targetScrollLeft);\n    }\n  },\n\n  updateMenuBtn: function () {\n    if (\n      Math.floor(this.$tablist.prop('scrollWidth') - 48) >\n      this.$container.prop('clientWidth')\n    ) {\n      this.$tablist.addClass('scrollable');\n      this.$menuBtn.removeClass('hidden');\n    } else {\n      this.$tablist.removeClass('scrollable');\n      this.$menuBtn.addClass('hidden');\n    }\n  },\n\n  _getTab: function (tab) {\n    if (tab instanceof jQuery) {\n      return tab;\n    }\n\n    if (tab instanceof HTMLElement) {\n      return $(tab);\n    }\n\n    if (typeof tab !== 'string') {\n      throw 'Invalid tab ID';\n    }\n\n    const $tab = this.$tabs.filter(`[data-id=\"${tab}\"]`);\n\n    if (!$tab.length) {\n      throw `Invalid tab ID: ${tab}`;\n    }\n\n    return $tab;\n  },\n\n  destroy: function () {\n    this.$container.removeData('tabs');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Tag select input\n */\nCraft.TagSelectInput = Craft.BaseElementSelectInput.extend(\n  {\n    searchTimeout: null,\n    searchMenu: null,\n\n    $container: null,\n    $elementsContainer: null,\n    $elements: null,\n    $addTagInput: null,\n    $spinner: null,\n\n    _ignoreBlur: false,\n\n    init: function (settings) {\n      // Normalize the settings\n      // ---------------------------------------------------------------------\n\n      // Are they still passing in a bunch of arguments?\n      if (!$.isPlainObject(settings)) {\n        // Loop through all of the old arguments and apply them to the settings\n        var normalizedSettings = {},\n          args = ['id', 'name', 'tagGroupId', 'sourceElementId'];\n\n        for (var i = 0; i < args.length; i++) {\n          if (typeof arguments[i] !== 'undefined') {\n            normalizedSettings[args[i]] = arguments[i];\n          } else {\n            break;\n          }\n        }\n\n        settings = normalizedSettings;\n      }\n\n      this.base($.extend({}, Craft.TagSelectInput.defaults, settings));\n\n      this.$addTagInput = this.$container.children('.add').children('.text');\n      this.$spinner = this.$addTagInput.next();\n\n      this.addListener(this.$addTagInput, 'input', () => {\n        if (this.searchTimeout) {\n          clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(this.searchForTags.bind(this), 500);\n      });\n\n      this.addListener(this.$addTagInput, 'keydown', function (ev) {\n        if (ev.keyCode === Garnish.RETURN_KEY) {\n          ev.preventDefault();\n        }\n\n        let $option;\n\n        switch (ev.keyCode) {\n          case Garnish.RETURN_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              this.selectTag(this.searchMenu.$options.filter('.hover'));\n            }\n            return;\n          }\n\n          case Garnish.DOWN_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              let $hoverOption = this.searchMenu.$options.filter('.hover');\n              if ($hoverOption.length) {\n                let $nextOption = $hoverOption\n                  .parent()\n                  .nextAll()\n                  .find('button:not(.disabled)')\n                  .first();\n                if ($nextOption.length) {\n                  this.focusOption($nextOption);\n                }\n              } else {\n                this.focusOption(this.searchMenu.$options.eq(0));\n              }\n            }\n            return;\n          }\n\n          case Garnish.UP_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              let $hoverOption = this.searchMenu.$options.filter('.hover');\n              if ($hoverOption.length) {\n                let $prevOption = $hoverOption\n                  .parent()\n                  .prevAll()\n                  .find('button:not(.disabled)')\n                  .last();\n                if ($prevOption.length) {\n                  this.focusOption($prevOption);\n                }\n              } else {\n                this.focusOption(\n                  this.searchMenu.$options.eq(\n                    this.searchMenu.$options.length - 1\n                  )\n                );\n              }\n            }\n            return;\n          }\n        }\n      });\n\n      this.addListener(this.$addTagInput, 'focus', function () {\n        if (this.searchMenu) {\n          this.searchMenu.show();\n        }\n      });\n\n      this.addListener(this.$addTagInput, 'blur', function () {\n        if (this._ignoreBlur) {\n          this._ignoreBlur = false;\n          return;\n        }\n\n        setTimeout(() => {\n          if (this.searchMenu) {\n            this.searchMenu.hide();\n          }\n        }, 1);\n      });\n    },\n\n    focusOption: function ($option) {\n      this.searchMenu.$options.removeClass('hover');\n      $option.addClass('hover');\n      this.searchMenu.$menuList.attr(\n        'aria-activedescendant',\n        $option.attr('id')\n      );\n    },\n\n    // No \"add\" button\n    getAddElementsBtn: function () {\n      return [];\n    },\n\n    getElementSortAxis: function () {\n      return 'x';\n    },\n\n    searchForTags: function () {\n      if (this.searchMenu) {\n        this.killSearchMenu();\n      }\n\n      var val = this.$addTagInput.val();\n\n      if (val) {\n        this.$spinner.removeClass('hidden');\n\n        var excludeIds = [];\n\n        for (var i = 0; i < this.$elements.length; i++) {\n          var id = $(this.$elements[i]).data('id');\n\n          if (id) {\n            excludeIds.push(id);\n          }\n        }\n\n        // take allowSelfRelations into consideration too\n        if (\n          this.settings.sourceElementId &&\n          !this.settings.allowSelfRelations\n        ) {\n          excludeIds.push(this.settings.sourceElementId);\n        }\n\n        var data = {\n          search: this.$addTagInput.val(),\n          tagGroupId: this.settings.tagGroupId,\n          excludeIds: excludeIds,\n        };\n\n        Craft.sendActionRequest('POST', 'tags/search-for-tags', {data})\n          .then((response) => {\n            if (this.searchMenu) {\n              this.killSearchMenu();\n            }\n            this.$spinner.addClass('hidden');\n            var $menu = $('<div class=\"menu tagmenu\"/>').appendTo(Garnish.$bod),\n              $ul = $('<ul/>').appendTo($menu);\n\n            var $li;\n\n            for (var i = 0; i < response.data.tags.length; i++) {\n              $li = $('<li/>').appendTo($ul);\n\n              $('<button class=\"menu-item\" data-icon=\"tag\"/>')\n                .appendTo($li)\n                .text(response.data.tags[i].title)\n                .data('id', response.data.tags[i].id)\n                .addClass(response.data.tags[i].exclude ? 'disabled' : '');\n            }\n\n            if (!response.data.exactMatch) {\n              $li = $('<li/>').appendTo($ul);\n              $('<button class=\"menu-item\" data-icon=\"plus\"/>')\n                .appendTo($li)\n                .text(data.search);\n            }\n\n            $ul.find('button:not(.disabled):first').addClass('hover');\n\n            this.searchMenu = new Garnish.Menu($menu, {\n              attachToElement: this.$addTagInput,\n              onOptionSelect: this.selectTag.bind(this),\n            });\n\n            this.addListener($menu, 'mousedown', () => {\n              this._ignoreBlur = true;\n            });\n\n            this.searchMenu.show();\n          })\n          .catch(({response}) => {\n            // Just in case\n            if (this.searchMenu) {\n              this.killSearchMenu();\n            }\n\n            this.$spinner.addClass('hidden');\n          });\n      } else {\n        this.$spinner.addClass('hidden');\n      }\n    },\n\n    selectTag: function (option) {\n      var $option = $(option);\n\n      if ($option.hasClass('disabled')) {\n        return;\n      }\n\n      var id = $option.data('id');\n      var title = $option.text();\n\n      const $element = $('<div/>', {\n        class: 'chip element small removable',\n        'data-id': id,\n        'data-site-id': this.settings.targetSiteId,\n        'data-label': title,\n        'data-editable': '1',\n      });\n\n      const $li = $('<li/>').appendTo(this.$elementsContainer);\n      $element.appendTo($li);\n\n      var $chipContent = $('<div/>', {\n        class: 'chip-content',\n      }).appendTo($element);\n\n      var $titleContainer = $('<div/>', {\n        class: 'label',\n      }).appendTo($chipContent);\n\n      var $labelLinkContainer = $('<a/>', {\n        class: 'label-link',\n      }).appendTo($titleContainer);\n\n      $('<span/>', {\n        class: 'title',\n        text: title,\n      }).appendTo($labelLinkContainer);\n\n      var $chipActions = $('<div/>', {\n        class: 'chip-actions',\n      }).appendTo($chipContent);\n\n      var $input = $('<input/>', {\n        type: 'hidden',\n        name: this.settings.name + '[]',\n        value: id,\n      }).appendTo($chipContent);\n\n      this.$elements = this.$elements.add($element);\n\n      this.addElements($element);\n\n      this.killSearchMenu();\n      this.$addTagInput.val('');\n      this.$addTagInput.trigger('focus');\n\n      if (!id) {\n        // We need to create the tag first\n        $element.addClass('loading disabled');\n\n        var data = {\n          groupId: this.settings.tagGroupId,\n          title: title,\n        };\n\n        Craft.sendActionRequest('POST', 'tags/create-tag', {data})\n          .then((response) => {\n            $element.attr('data-id', response.data.id);\n            $input.val(response.data.id);\n\n            $element.removeClass('loading disabled');\n          })\n          .catch(({response}) => {\n            this.removeElement($element);\n            Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n          });\n      }\n    },\n\n    killSearchMenu: function () {\n      this.searchMenu.hide();\n      this.searchMenu.destroy();\n      this.searchMenu = null;\n    },\n  },\n  {\n    defaults: {\n      tagGroupId: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Thumb Element Index View\n */\nCraft.ThumbsElementIndexView = Craft.BaseElementIndexView.extend({\n  getElementContainer: function () {\n    return this.$container.children('ul');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Tooltip\n */\nCraft.Tooltip = Garnish.Base.extend({\n  _$trigger: null,\n  _message: null,\n  hud: null,\n  $p: null,\n  hoverTimeout: null,\n  triggerHit: false,\n  shownViaHover: false,\n\n  init: function (trigger, message) {\n    this.$trigger = $(trigger);\n    this.message = message;\n\n    if (\n      this.$trigger[0].tagName !== 'BUTTON' &&\n      this.$trigger.attr('role') !== 'button'\n    ) {\n      console.error('Toggletip buttons need to be <button> elements.');\n    }\n\n    // do our own mouseover/mouseout checks since the native ones are unreliable\n    this.addListener(Garnish.$bod, 'mousemove', (ev) => {\n      if (\n        this.triggerHit !==\n        (this.triggerHit = Garnish.hitTest(ev.pageX, ev.pageY, this._$trigger))\n      ) {\n        if (this.triggerHit) {\n          if (!this.showing) {\n            this.hoverTimeout = setTimeout(() => {\n              this.show();\n              this.shownViaHover = true;\n            }, 500);\n          }\n        } else {\n          clearTimeout(this.hoverTimeout);\n          if (this.shownViaHover) {\n            this.hide();\n          }\n        }\n      }\n    });\n  },\n\n  get showing() {\n    return this.hud && this.hud.showing;\n  },\n\n  get $trigger() {\n    return this._$trigger;\n  },\n\n  set $trigger($trigger) {\n    if (this._$trigger) {\n      this.removeAllListeners(this._$trigger);\n    }\n\n    this._$trigger = $trigger;\n\n    this._$trigger.on('blur', () => {\n      this.hide();\n    });\n    this._$trigger.on('activate', () => {\n      // If it's currently shown via hover, keep showing it and remove shownViaHover\n      if (this.showing && this.shownViaHover) {\n        this.shownViaHover = false;\n      } else {\n        this.toggle();\n      }\n\n      this._$trigger.focus();\n    });\n\n    if (this.hud) {\n      this.hud.$trigger = $trigger;\n      if (this.hud.showing) {\n        this.hud.updateSizeAndPosition(true);\n      }\n    }\n  },\n\n  get message() {\n    return this._message;\n  },\n\n  set message(message) {\n    this._message = message;\n\n    if (this.$p) {\n      this.$p.text(message);\n    }\n  },\n\n  show: function (userId) {\n    this.shownViaHover = false;\n\n    if (this.showing) {\n      return;\n    }\n\n    this.$trigger.attr('aria-expanded', 'true');\n\n    if (!this.hud) {\n      this.$p = $('<p/>', {text: this._message});\n      this.hud = new Craft.Tooltip.HUD(this._$trigger, this.$p, {\n        hudClass: 'hud tooltip-hud',\n        withShade: false,\n        onShow: () => {\n          this.onShow();\n        },\n        onHide: () => {\n          this.onHide();\n        },\n      });\n    } else {\n      this.hud.show();\n    }\n  },\n\n  hide: function () {\n    if (!this.showing) {\n      return;\n    }\n\n    this.$trigger.attr('aria-expanded', 'false');\n\n    if (this.hud) {\n      this.hud.hide();\n    }\n  },\n\n  toggle: function () {\n    if (this.showing) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  },\n\n  onShow: function () {\n    clearTimeout(this.hoverTimeout);\n    this.$p.text(this.message);\n  },\n\n  onHide: function () {\n    clearTimeout(this.hoverTimeout);\n    this.$p.text('');\n  },\n});\n\nCraft.Tooltip.HUD = Garnish.HUD.extend({\n  init: function (trigger, bodyContents, settings) {\n    this.base(trigger, bodyContents, settings);\n    this.$hud.attr('role', 'status');\n  },\n\n  showContainer: function () {\n    this.$hud.removeClass('visually-hidden');\n  },\n\n  hideContainer: function () {\n    this.$hud.addClass('visually-hidden');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.ui = {\n  createButton: function (config) {\n    const $btn = $('<button/>', {\n      type: config.type || 'button',\n      class: 'btn',\n    });\n    if (config.id) {\n      $btn.attr('id', config.id);\n    }\n    if (config.class) {\n      $btn.addClass(config.class);\n    }\n    if (config.ariaLabel) {\n      $btn.attr('aria-label', config.ariaLabel);\n    }\n    if (config.role) {\n      $btn.attr('role', config.role);\n    }\n    if (config.html) {\n      $btn.html(config.html);\n    } else if (config.label) {\n      $btn.append($('<div class=\"label\"/>').text(config.label));\n    } else {\n      $btn.addClass('btn-empty');\n    }\n    if (config.toggle) {\n      $btn.attr('aria-expanded', 'false');\n    }\n    if (config.controls) {\n      $btn.attr('aria-controls', config.controls);\n    }\n    if (config.spinner) {\n      $btn.append($('<div class=\"spinner spinner-absolute\"/>'));\n    }\n    return $btn;\n  },\n\n  createSubmitButton: function (config) {\n    const $btn = this.createButton(\n      Object.assign({}, config, {\n        type: 'submit',\n        label: config.label || Craft.t('app', 'Submit'),\n      })\n    );\n    $btn.addClass('submit');\n    return $btn;\n  },\n\n  createTextInput: function (config) {\n    config = $.extend(\n      {\n        autocomplete: false,\n      },\n      config\n    );\n    var $input = $('<input/>', {\n      attr: {\n        class: 'text',\n        type: config.type || 'text',\n        inputmode: config.inputmode,\n        id: config.id,\n        size: config.size,\n        name: config.name,\n        value: config.value,\n        maxlength: config.maxlength,\n        autofocus: this.getAutofocusValue(config.autofocus),\n        autocomplete:\n          typeof config.autocomplete === 'boolean'\n            ? config.autocomplete\n              ? 'on'\n              : 'off'\n            : config.autocomplete,\n        disabled: this.getDisabledValue(config.disabled),\n        readonly: config.readonly,\n        title: config.title,\n        placeholder: config.placeholder,\n        step: config.step,\n        min: config.min,\n        max: config.max,\n      },\n    });\n\n    if (config.class) {\n      $input.addClass(config.class);\n    }\n    if (config.placeholder) {\n      $input.addClass('nicetext');\n    }\n    if (config.type === 'password') {\n      $input.addClass('password');\n    }\n    if (config.disabled) {\n      $input.addClass('disabled');\n    }\n    if (!config.size) {\n      $input.addClass('fullwidth');\n    }\n\n    if (config.showCharsLeft && config.maxlength) {\n      $input\n        .attr('data-show-chars-left')\n        .css(\n          'padding-' + (Craft.orientation === 'ltr' ? 'right' : 'left'),\n          7.2 * config.maxlength.toString().length + 14 + 'px'\n        );\n    }\n\n    if (config.placeholder || config.showCharsLeft) {\n      new Garnish.NiceText($input);\n    }\n\n    if (config.type === 'password') {\n      return $('<div class=\"passwordwrapper\"/>').append($input);\n    } else {\n      return $input;\n    }\n  },\n\n  createTextField: function (config) {\n    if (!config.id) {\n      config.id = 'text' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTextInput(config), config);\n  },\n\n  createPasswordInput(config) {\n    return this.createTextInput(\n      Object.assign({}, config, {\n        type: 'password',\n      })\n    );\n  },\n\n  createPasswordField(config) {\n    return this.createTextField(\n      Object.assign({}, config, {\n        type: 'password',\n      })\n    );\n  },\n\n  createCopyTextInput: function (config) {\n    let id = config.id || 'copytext' + Math.floor(Math.random() * 1000000000);\n    let buttonId = config.buttonId || `${id}-btn`;\n\n    let $container = $('<div/>', {\n      class: 'copytext',\n    });\n\n    let $input = this.createTextInput(\n      $.extend({}, config, {\n        readonly: true,\n      })\n    ).appendTo($container);\n\n    let $btn = $('<button/>', {\n      type: 'button',\n      id: buttonId,\n      class: 'btn',\n      'data-icon': 'clipboard',\n      title: Craft.t('app', 'Copy to clipboard'),\n      'aria-label': Craft.t('app', 'Copy to clipboard'),\n    }).appendTo($container);\n\n    $btn.on('click', () => {\n      $input[0].select();\n      document.execCommand('copy');\n      Craft.cp.displayNotice(Craft.t('app', 'Copied to clipboard.'));\n      $container.trigger('copy');\n      $input[0].setSelectionRange(0, 0);\n    });\n\n    return $container;\n  },\n\n  createCopyTextBtn: function (config) {\n    let id = config.id || 'copytext' + Math.floor(Math.random() * 1000000000);\n    let value = config.value;\n\n    const $wrapper = $('<div/>', {\n      class: 'copytextbtn-wrapper',\n    });\n\n    let $btn = $('<div/>', {\n      id,\n      class: 'copytextbtn',\n      role: 'button',\n      title: Craft.t('app', 'Copy to clipboard'),\n      tabindex: '0',\n    }).appendTo($wrapper);\n\n    if (config.class) {\n      $btn.addClass(config.class);\n    }\n\n    let $input = $('<input/>', {\n      value,\n      readonly: true,\n      size: value.length,\n      tabindex: '-1',\n      'aria-hidden': 'true',\n      class: 'visually-hidden',\n    }).insertBefore($btn);\n\n    const $value = $('<span/>', {\n      text: value,\n      class: 'copytextbtn__value',\n    }).appendTo($btn);\n\n    $('<span/>', {\n      class: 'visually-hidden',\n      text: Craft.t('app', 'Copy to clipboard'),\n    }).appendTo($btn);\n\n    let $icon = $('<span/>', {\n      class: 'copytextbtn__icon',\n      'data-icon': 'clipboard',\n      'aria-hidden': 'true',\n    }).appendTo($btn);\n\n    const copyValue = function () {\n      $input[0].select();\n      document.execCommand('copy');\n      Craft.cp.displayNotice(Craft.t('app', 'Copied to clipboard.'));\n      $btn.trigger('copy');\n      $input[0].setSelectionRange(0, 0);\n      $btn.focus();\n    };\n\n    $btn.on('activate', () => {\n      copyValue();\n    });\n\n    $btn.on('keydown', (ev) => {\n      if (ev.keyCode === Garnish.SPACE_KEY) {\n        copyValue();\n        ev.preventDefault();\n      }\n    });\n\n    return $wrapper;\n  },\n\n  createCopyTextField: function (config) {\n    if (!config.id) {\n      config.id = 'copytext' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createCopyTextInput(config), config);\n  },\n\n  createCopyTextPrompt: function (config) {\n    let $container = $('<div/>', {\n      class: 'modal fitted',\n    });\n    let $body = $('<div/>', {\n      class: 'body',\n    }).appendTo($container);\n    this.createCopyTextField(\n      $.extend(\n        {\n          size: Math.max(Math.min(config.value.length, 50), 25),\n        },\n        config\n      )\n    ).appendTo($body);\n\n    const $label = $body.find('label');\n\n    // Provide accessible name for modal dialog\n    if ($label.length > 0 && $label.attr('id')) {\n      $container.attr('aria-labelledby', $label.attr('id'));\n    }\n\n    let modal = new Garnish.Modal($container, {\n      closeOtherModals: false,\n    });\n    $container.on('copy', () => {\n      modal.hide();\n    });\n    return $container;\n  },\n\n  createTextarea: function (config) {\n    var $textarea = $('<textarea/>', {\n      class: 'text',\n      rows: config.rows || 2,\n      cols: config.cols || 50,\n      id: config.id,\n      name: config.name,\n      maxlength: config.maxlength,\n      autofocus: config.autofocus && !Garnish.isMobileBrowser(true),\n      disabled: !!config.disabled,\n      placeholder: config.placeholder,\n      html: config.value,\n    });\n\n    if (config.showCharsLeft) {\n      $textarea.attr('data-show-chars-left', '');\n    }\n\n    if (config.class) {\n      $textarea.addClass(config.class);\n    }\n\n    if (!config.size) {\n      $textarea.addClass('fullwidth');\n    }\n\n    return $textarea;\n  },\n\n  createTextareaField: function (config) {\n    if (!config.id) {\n      config.id = 'textarea' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTextarea(config), config);\n  },\n\n  createSelect: function (config) {\n    var $container = $('<div/>', {\n      class: 'select',\n    });\n\n    if (config.class) {\n      $container.addClass(config.class);\n    }\n\n    var $select = $('<select/>', {\n      id: config.id,\n      name: config.name,\n      autofocus: config.autofocus && Garnish.isMobileBrowser(true),\n      disabled: config.disabled,\n      'data-target-prefix': config.targetPrefix,\n      'aria-labelledby': config.labelledBy,\n    }).appendTo($container);\n\n    // Normalize the options into an array\n    if ($.isPlainObject(config.options)) {\n      let options = [];\n      for (var key in config.options) {\n        if (!config.options.hasOwnProperty(key)) {\n          continue;\n        }\n        let option = config.options[key];\n        if ($.isPlainObject(option)) {\n          if (typeof option.optgroup !== 'undefined') {\n            options.push(option);\n          } else {\n            options.push({\n              label: option.label,\n              value: typeof option.value !== 'undefined' ? option.value : key,\n              disabled:\n                typeof option.disabled !== 'undefined'\n                  ? option.disabled\n                  : false,\n            });\n          }\n        } else {\n          options.push({\n            label: option,\n            value: key,\n          });\n        }\n      }\n      config.options = options;\n    }\n\n    var $optgroup = null;\n\n    for (let i = 0; i < config.options.length; i++) {\n      let option = config.options[i];\n\n      // Starting a new <optgroup>?\n      if (typeof option.optgroup !== 'undefined') {\n        $optgroup = $('<optgroup/>', {\n          label: option.optgroup,\n        }).appendTo($select);\n      } else {\n        $('<option/>', {\n          value: option.value,\n          selected: option.value == config.value,\n          disabled:\n            typeof option.disabled !== 'undefined' ? option.disabled : false,\n          html: option.label,\n        }).appendTo($optgroup || $select);\n      }\n    }\n\n    if (config.toggle) {\n      $select.addClass('fieldtoggle');\n      new Craft.FieldToggle($select);\n    }\n\n    return $container;\n  },\n\n  createSelectField: function (config) {\n    if (!config.id) {\n      config.id = 'select' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createSelect(config), config);\n  },\n\n  createCheckbox: function (config) {\n    var id = config.id || 'checkbox' + Math.floor(Math.random() * 1000000000);\n\n    var $input = $('<input/>', {\n      type: 'checkbox',\n      value: typeof config.value !== 'undefined' ? config.value : '1',\n      id: id,\n      class: 'checkbox',\n      name: config.name,\n      checked: config.checked ? 'checked' : null,\n      autofocus: this.getAutofocusValue(config.autofocus),\n      disabled: this.getDisabledValue(config.disabled),\n      'data-target': config.toggle,\n      'data-reverse-target': config.reverseToggle,\n    });\n\n    if (config.class) {\n      $input.addClass(config.class);\n    }\n\n    if (config.toggle || config.reverseToggle) {\n      $input.addClass('fieldtoggle');\n      new Craft.FieldToggle($input);\n    }\n\n    var $label = $('<label/>', {\n      for: id,\n      html: config.label,\n    });\n\n    // Should we include a hidden input first?\n    if (\n      config.name &&\n      (config.name.length < 3 || config.name.slice(-2) !== '[]')\n    ) {\n      return $([\n        $('<input/>', {\n          type: 'hidden',\n          name: config.name,\n          value: '',\n        })[0],\n        $input[0],\n        $label[0],\n      ]);\n    } else {\n      return $([$input[0], $label[0]]);\n    }\n  },\n\n  createCheckboxField: function (config) {\n    if (!config.id) {\n      config.id = 'checkbox' + Math.floor(Math.random() * 1000000000);\n    }\n\n    var $field = $('<div class=\"field checkboxfield\"/>', {\n      id: `${config.id}-field`,\n    });\n\n    if (config.first) {\n      $field.addClass('first');\n    }\n    if (config.instructions) {\n      $field.addClass('has-instructions');\n    }\n\n    this.createCheckbox(config).appendTo($field);\n\n    if (config.instructions) {\n      $('<div class=\"instructions\"/>')\n        .text(config.instructions)\n        .appendTo($field);\n    }\n\n    return $field;\n  },\n\n  createCheckboxSelect: function (config) {\n    const $container = $('<fieldset class=\"checkbox-select\"/>');\n\n    if (config.class) {\n      $container.addClass(config.class);\n    }\n\n    let values = config.values || [];\n    let allChecked = false;\n\n    if (config.showAllOption) {\n      const allValue = config.allValue || '*';\n\n      if (values === allValue) {\n        values = config.options.map((o) => o.value);\n        allChecked = true;\n      }\n\n      // Create the \"All\" checkbox\n      $('<div/>')\n        .appendTo($container)\n        .append(\n          this.createCheckbox({\n            id: config.id,\n            class: 'all',\n            label: '<b>' + (config.allLabel || Craft.t('app', 'All')) + '</b>',\n            name: config.name,\n            value: allValue,\n            checked: allChecked,\n            autofocus: config.autofocus,\n          })\n        );\n\n      // omit the “all” value from the options\n      config.options = config.options.filter((o) => o.value !== allValue);\n    } else {\n      allChecked = false;\n    }\n\n    if (!Array.isArray(values)) {\n      values = [];\n    }\n\n    if (config.sortable) {\n      // Make sure the selected options are listed first\n      config.options.sort((a, b) => {\n        let aPos = values.indexOf(a.value);\n        let bPos = values.indexOf(b.value);\n        if (aPos === -1) {\n          aPos = values.length;\n        }\n        if (bPos === -1) {\n          bPos = values.length;\n        }\n        return aPos - bPos;\n      });\n    }\n\n    // Create the actual options\n    for (let i = 0; i < config.options.length; i++) {\n      const option = config.options[i];\n\n      const $option = $('<div/>', {\n        class: 'checkbox-select-item',\n      }).appendTo($container);\n\n      if (config.sortable) {\n        $('<div/>', {class: 'icon move'}).appendTo($option);\n      }\n\n      this.createCheckbox({\n        label: Craft.escapeHtml(option.label),\n        name: config.name ? Craft.ensureEndsWith(config.name, '[]') : null,\n        value: option.value,\n        checked: allChecked || values.includes(option.value),\n        disabled: allChecked,\n      }).appendTo($option);\n    }\n\n    new Garnish.CheckboxSelect($container);\n\n    if (config.sortable) {\n      const dragSort = new Garnish.DragSort($container.children(':not(.all)'), {\n        handle: '.move',\n        axis: 'y',\n      });\n      $container.data('dragSort', dragSort);\n    }\n\n    return $container;\n  },\n\n  createCheckboxSelectField: function (config) {\n    config.fieldset = true;\n    if (!config.id) {\n      config.id = 'checkboxselect' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createCheckboxSelect(config), config);\n  },\n\n  createLightswitch: function (config) {\n    var value = config.value || '1';\n    var indeterminateValue = config.indeterminateValue || '-';\n\n    var $container = $('<button/>', {\n      type: 'button',\n      class: 'lightswitch',\n      'data-value': value,\n      'data-indeterminate-value': indeterminateValue,\n      id: config.id,\n      role: 'switch',\n      'aria-checked': config.on\n        ? 'true'\n        : config.indeterminate\n          ? 'mixed'\n          : 'false',\n      'aria-labelledby': config.labelId,\n      'data-target': config.toggle,\n      'data-reverse-target': config.reverseToggle,\n    });\n\n    if (config.on) {\n      $container.addClass('on');\n    } else if (config.indeterminate) {\n      $container.addClass('indeterminate');\n    }\n\n    if (config.small) {\n      $container.addClass('small');\n    }\n\n    if (config.disabled) {\n      $container.addClass('disabled');\n    }\n\n    $(\n      '<div class=\"lightswitch-container\">' +\n        '<div class=\"handle\"></div>' +\n        '</div>'\n    ).appendTo($container);\n\n    if (config.name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: config.name,\n        value: config.on\n          ? value\n          : config.indeterminate\n            ? indeterminateValue\n            : '',\n        disabled: config.disabled,\n      }).appendTo($container);\n    }\n\n    if (config.toggle || config.reverseToggle) {\n      $container.addClass('fieldtoggle');\n      new Craft.FieldToggle($container);\n    }\n\n    new Craft.LightSwitch($container, {\n      onChange: config.onChange || $.noop,\n    });\n\n    return $container;\n  },\n\n  createLightswitchField: function (config) {\n    if (!config.id) {\n      config.id = 'lightswitch' + Math.floor(Math.random() * 1000000000);\n    }\n    if (!config.labelId) {\n      config.labelId = `${config.id}-label`;\n    }\n    return this.createField(this.createLightswitch(config), config).addClass(\n      'lightswitch-field'\n    );\n  },\n\n  createColorInput: function (config) {\n    const id = config.id || 'color' + Math.floor(Math.random() * 1000000000);\n    const containerId = config.containerId || id + '-container';\n    const name = config.name || null;\n    const value = config.value || null;\n    const small = config.small || false;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      id: containerId,\n      class: 'flex color-container',\n    });\n\n    const $colorPreviewContainer = $('<div/>', {\n      class: 'color static' + (small ? ' small' : ''),\n    }).appendTo($container);\n\n    const $colorPreview = $('<div/>', {\n      class: 'color-preview',\n      style: config.value ? {backgroundColor: config.value} : null,\n    }).appendTo($colorPreviewContainer);\n\n    const $inputContainer = $('<div/>', {\n      class: 'color-input-container',\n    })\n      .append(\n        $('<div/>', {\n          class: 'color-hex-indicator light code',\n          'aria-hidden': 'true',\n          text: '#',\n        })\n      )\n      .appendTo($container);\n\n    const $input = this.createTextInput({\n      id: id,\n      name: name,\n      value: Craft.ltrim(value, '#'),\n      size: 10,\n      class: 'color-input',\n      autofocus: autofocus,\n      disabled: disabled,\n      'aria-label': Craft.t('app', 'Color hex value'),\n    }).appendTo($inputContainer);\n\n    new Craft.ColorInput($container);\n    return $container;\n  },\n\n  createColorField: function (config) {\n    config.fieldset = true;\n    o;\n    if (!config.id) {\n      config.id = 'color' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createColorInput(config), config);\n  },\n\n  createDateInput: function (config) {\n    const isMobile = Garnish.isMobileBrowser();\n    const id =\n      (config.id || 'date' + Math.floor(Math.random() * 1000000000)) + '-date';\n    const name = config.name || null;\n    const inputName = name ? name + '[date]' : null;\n    const value =\n      config.value && typeof config.value.getMonth === 'function'\n        ? config.value\n        : null;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      class: 'datewrapper',\n    });\n\n    const $input = this.createTextInput({\n      id: id,\n      type: isMobile ? 'date' : 'text',\n      class: isMobile && !value ? 'empty-value' : false,\n      name: inputName,\n      value: value\n        ? isMobile\n          ? value.toISOString().split('T')[0]\n          : Craft.formatDate(value)\n        : '',\n      placeholder: ' ',\n      autocomplete: false,\n      autofocus: autofocus,\n      disabled: disabled,\n    }).appendTo($container);\n\n    $('<div data-icon=\"date\"></div>').appendTo($container);\n\n    if (name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: name + '[timezone]',\n        val: Craft.timezone,\n      }).appendTo($container);\n    }\n\n    if (isMobile) {\n      $input.datetimeinput();\n    } else {\n      $input.datepicker(\n        $.extend(\n          {\n            defaultDate: value || new Date(),\n          },\n          Craft.datepickerOptions\n        )\n      );\n    }\n\n    if (config.hasOuterContainer) {\n      return $container;\n    }\n\n    return $('<div class=\"datetimewrapper\"/>').append($container).datetime();\n  },\n\n  createDateField: function (config) {\n    if (!config.id) {\n      config.id = 'date' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createDateInput(config), config);\n  },\n\n  createDateRangePicker: function (config) {\n    var now = new Date();\n    var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n    config = $.extend(\n      {\n        class: '',\n        options: [\n          'today',\n          'thisWeek',\n          'thisMonth',\n          'thisYear',\n          'past7Days',\n          'past30Days',\n          'past90Days',\n          'pastYear',\n        ],\n        onChange: $.noop,\n        selected: null,\n        startDate: null,\n        endDate: null,\n      },\n      config\n    );\n\n    var $menu = $('<div/>', {class: 'menu'});\n    var $ul = $('<ul/>', {class: 'padded'}).appendTo($menu);\n    var $allOption = $('<a/>')\n      .addClass('sel')\n      .text(Craft.t('app', 'All'))\n      .data('handle', 'all');\n\n    $('<li/>').append($allOption).appendTo($ul);\n\n    var option;\n    var selectedOption;\n    for (var i = 0; i < config.options.length; i++) {\n      var handle = config.options[i];\n      switch (handle) {\n        case 'today':\n          option = {\n            label: Craft.t('app', 'Today'),\n            startDate: today,\n            endDate: today,\n          };\n          break;\n        case 'thisWeek':\n          var firstDayOffset = now.getDay() - Craft.datepickerOptions.firstDay;\n          if (firstDayOffset < 0) {\n            firstDayOffset += 7;\n          }\n          option = {\n            label: Craft.t('app', 'This week'),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - firstDayOffset\n            ),\n            endDate: today,\n          };\n          break;\n        case 'thisMonth':\n          option = {\n            label: Craft.t('app', 'This month'),\n            startDate: new Date(now.getFullYear(), now.getMonth()),\n            endDate: today,\n          };\n          break;\n        case 'thisYear':\n          option = {\n            label: Craft.t('app', 'This year'),\n            startDate: new Date(now.getFullYear(), 0),\n            endDate: today,\n          };\n          break;\n        case 'past7Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 7}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 7\n            ),\n            endDate: today,\n          };\n          break;\n        case 'past30Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 30}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 30\n            ),\n            endDate: today,\n          };\n          break;\n        case 'past90Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 90}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 90\n            ),\n            endDate: today,\n          };\n          break;\n        case 'pastYear':\n          option = {\n            label: Craft.t('app', 'Past year'),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 365\n            ),\n            endDate: today,\n          };\n          break;\n      }\n\n      var $li = $('<li/>');\n      var $a = $('<a/>', {text: option.label})\n        .data('handle', handle)\n        .data('startDate', option.startDate)\n        .data('endDate', option.endDate)\n        .data('startTime', option.startDate ? option.startDate.getTime() : null)\n        .data('endTime', option.endDate ? option.endDate.getTime() : null);\n\n      if (config.selected && handle == config.selected) {\n        selectedOption = $a[0];\n      }\n\n      $li.append($a);\n      $li.appendTo($ul);\n    }\n\n    $('<hr/>').appendTo($menu);\n\n    var $flex = $('<div/>', {class: 'flex flex-nowrap padded'}).appendTo($menu);\n    var $startDate = this.createDateField({label: Craft.t('app', 'From')})\n      .appendTo($flex)\n      .find('input');\n    var $endDate = this.createDateField({label: Craft.t('app', 'To')})\n      .appendTo($flex)\n      .find('input');\n\n    // prevent ESC keypresses in the date inputs from closing the menu\n    var $dateInputs = $startDate.add($endDate);\n    $dateInputs.on('keyup', function (ev) {\n      if (\n        ev.keyCode === Garnish.ESC_KEY &&\n        $(this).data('datepicker') &&\n        $(this).data('datepicker').dpDiv.is(':visible')\n      ) {\n        ev.stopPropagation();\n      }\n    });\n\n    // prevent clicks in the datepicker divs from closing the menu\n    if ($startDate.data('datepicker')) {\n      $startDate.data('datepicker').dpDiv.on('mousedown', function (ev) {\n        ev.stopPropagation();\n      });\n    }\n    if ($endDate.data('datepicker')) {\n      $endDate.data('datepicker').dpDiv.on('mousedown', function (ev) {\n        ev.stopPropagation();\n      });\n    }\n\n    var menu = new Garnish.Menu($menu, {\n      onOptionSelect: function (option) {\n        var $option = $(option);\n        $btn.text($option.text());\n        menu.setPositionRelativeToAnchor();\n        $menu.find('.sel').removeClass('sel');\n        $option.addClass('sel');\n\n        // Update the start/end dates\n        if (!$startDate.hasClass('hasDatepicker')) {\n          $startDate.val($option.data('startDate'));\n          $endDate.val($option.data('endDate'));\n        } else {\n          $startDate.datepicker('setDate', $option.data('startDate'));\n          $endDate.datepicker('setDate', $option.data('endDate'));\n        }\n\n        config.onChange(\n          $option.data('startDate') || null,\n          $option.data('endDate') || null,\n          $option.data('handle')\n        );\n      },\n    });\n\n    $dateInputs.on('change', function () {\n      let startDate = null;\n      let endDate = null;\n      // Do the start & end dates match one of our options?\n      if (!$startDate.hasClass('hasDatepicker')) {\n        let startDateVal = $startDate.val();\n        if (startDateVal !== '') {\n          startDate = new Date(Date.parse(startDateVal));\n        }\n\n        let endDateVal = $endDate.val();\n        if (endDateVal !== '') {\n          endDate = new Date(Date.parse(endDateVal));\n        }\n      } else {\n        startDate = $startDate.datepicker('getDate');\n        endDate = $endDate.datepicker('getDate');\n      }\n\n      let startTime = startDate ? startDate.getTime() : null;\n      let endTime = endDate ? endDate.getTime() : null;\n\n      let $options = $ul.find('a');\n      let $option;\n      let foundOption = false;\n\n      for (let i = 0; i < $options.length; i++) {\n        $option = $options.eq(i);\n        if (\n          startTime === ($option.data('startTime') || null) &&\n          endTime === ($option.data('endTime') || null)\n        ) {\n          menu.selectOption($option[0]);\n          foundOption = true;\n          config.onChange(null, null, $option.data('handle'));\n          break;\n        }\n      }\n\n      if (!foundOption) {\n        $menu.find('.sel').removeClass('sel');\n        $flex.addClass('sel');\n\n        if (!startTime && !endTime) {\n          $btn.text(Craft.t('app', 'All'));\n        } else if (startTime && endTime) {\n          $btn.text($startDate.val() + ' - ' + $endDate.val());\n        } else if (startTime) {\n          $btn.text(Craft.t('app', 'From {date}', {date: $startDate.val()}));\n        } else {\n          $btn.text(Craft.t('app', 'To {date}', {date: $endDate.val()}));\n        }\n        menu.setPositionRelativeToAnchor();\n\n        config.onChange(startDate, endDate, 'custom');\n      }\n    });\n\n    menu.on('hide', function () {\n      $startDate.datepicker('hide');\n      $endDate.datepicker('hide');\n    });\n\n    let btnClasses = 'btn menubtn';\n    if (config.class) {\n      btnClasses = btnClasses + ' ' + config.class;\n    }\n\n    let $btn = $('<button/>', {\n      type: 'button',\n      class: btnClasses,\n      'data-icon': 'date',\n      text: Craft.t('app', 'All'),\n    });\n\n    new Garnish.MenuBtn($btn, menu);\n\n    if (selectedOption) {\n      menu.selectOption(selectedOption);\n    }\n\n    if (config.startDate) {\n      if (!$startDate.hasClass('hasDatepicker')) {\n        // we need the date to be in yyyy-mm-dd format\n        let offset = config.startDate.getTimezoneOffset();\n        let startDate = new Date(\n          config.startDate.getTime() - offset * 60 * 1000\n        );\n        $startDate.val(startDate.toISOString().split('T')[0]);\n      } else {\n        $startDate.datepicker('setDate', config.startDate);\n      }\n    }\n\n    if (config.endDate) {\n      if (!$endDate.hasClass('hasDatepicker')) {\n        // we need the date to be in yyyy-mm-dd format\n        let offset = config.endDate.getTimezoneOffset();\n        let endDate = new Date(config.endDate.getTime() - offset * 60 * 1000);\n        $endDate.val(endDate.toISOString().split('T')[0]);\n      } else {\n        $endDate.datepicker('setDate', config.endDate);\n      }\n    }\n\n    if (config.startDate || config.endDate) {\n      $dateInputs.trigger('change');\n    }\n\n    return $btn;\n  },\n\n  createTimeInput: function (config) {\n    const isMobile = Garnish.isMobileBrowser();\n    const id =\n      (config.id || 'time' + Math.floor(Math.random() * 1000000000)) + '-time';\n    const name = config.name || null;\n    const inputName = name ? name + '[time]' : null;\n    const value =\n      config.value && typeof config.value.getMonth === 'function'\n        ? config.value\n        : null;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      class: 'timewrapper',\n    });\n\n    const $input = this.createTextInput({\n      id: id,\n      type: isMobile ? 'time' : 'text',\n      class: isMobile && !value ? 'empty-value' : false,\n      name: inputName,\n      placeholder: ' ',\n      autocomplete: false,\n      autofocus: autofocus,\n      disabled: disabled,\n    }).appendTo($container);\n\n    $('<div data-icon=\"time\"></div>').appendTo($container);\n\n    if (name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: name + '[timezone]',\n        val: Craft.timezone,\n      }).appendTo($container);\n    }\n\n    if (isMobile) {\n      if (value) {\n        $input.val(value.toISOString().split('T')[1]);\n      }\n      $input.datetimeinput();\n    } else {\n      $input.timepicker(Craft.timepickerOptions);\n      if (value) {\n        $input.timepicker(\n          'setTime',\n          value.getHours() * 3600 + value.getMinutes() * 60 + value.getSeconds()\n        );\n      }\n    }\n\n    if (config.hasOuterContainer) {\n      return $container;\n    }\n\n    return $('<div class=\"datetimewrapper\"/>').append($container).datetime();\n  },\n\n  createTimeField: function (config) {\n    if (!config.id) {\n      config.id = 'time' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTimeInput(config), config);\n  },\n\n  createField: function (input, config) {\n    const label =\n      config.label && config.label !== '__blank__' ? config.label : null;\n\n    const $field = $(config.fieldset ? '<fieldset/>' : '<div/>', {\n      class: 'field',\n      id: config.fieldId || (config.id ? config.id + '-field' : null),\n    });\n\n    if (config.first) {\n      $field.addClass('first');\n    }\n\n    if (config.fieldClass) {\n      $field.addClass(config.fieldClass);\n    }\n\n    if (label && config.fieldset) {\n      $('<legend/>', {\n        text: label,\n        class: 'visually-hidden',\n        'data-label': label,\n      }).appendTo($field);\n    }\n\n    if (label) {\n      const $heading = $('<div class=\"heading\"/>').appendTo($field);\n\n      $(config.fieldset ? '<legend/>' : '<label/>', {\n        id:\n          config.labelId ||\n          (config.id\n            ? `${config.id}-${config.fieldset ? 'legend' : 'label'}`\n            : null),\n        class: config.required ? 'required' : null,\n        for: (!config.fieldset && config.id) || null,\n        text: label,\n      }).appendTo($heading);\n    }\n\n    if (config.instructions) {\n      $('<div class=\"instructions\"/>')\n        .text(config.instructions)\n        .appendTo($field);\n    }\n\n    $('<div class=\"input\"/>').append(input).appendTo($field);\n\n    if (config.tip) {\n      const $tip = $('<p class=\"notice has-icon\"/>');\n      $('<span class=\"icon\" aria-hidden=\"true\"/>').appendTo($tip);\n      $('<span class=\"visually-hidden\"/>')\n        .text(Craft.t('app', 'Tip') + ': ')\n        .appendTo($tip);\n      $('<span/>').text(config.tip).appendTo($tip);\n      $tip.appendTo($field);\n    }\n\n    if (config.warning) {\n      const $warning = $('<p class=\"warning has-icon\"/>');\n      $('<span class=\"icon\" aria-hidden=\"true\"/>').appendTo($warning);\n      $('<span class=\"visually-hidden\"/>')\n        .text(Craft.t('app', 'Warning') + ': ')\n        .appendTo($warning);\n      $('<span/>').text(config.warning).appendTo($warning);\n      $warning.appendTo($field);\n    }\n\n    if (config.errors) {\n      this.addErrorsToField($field, config.errors);\n    }\n\n    return $field;\n  },\n\n  createErrorList: function (errors, fieldErrorsId) {\n    const $list = $('<ul class=\"errors\" tabindex=\"-1\"/>');\n    if (fieldErrorsId) {\n      $list.attr('id', fieldErrorsId);\n    }\n\n    if (errors) {\n      this.addErrorsToList($list, errors);\n    }\n\n    return $list;\n  },\n\n  addErrorsToList: function ($list, errors) {\n    for (var i = 0; i < errors.length; i++) {\n      $('<li/>').text(errors[i].replaceAll('*', '')).appendTo($list);\n    }\n  },\n\n  addErrorsToField: function ($field, errors) {\n    if (!errors) {\n      return;\n    }\n\n    $field.addClass('has-errors');\n    $field.children('.input').addClass('errors');\n\n    const fieldId = $field.attr('id');\n    let fieldErrorsId = '';\n    if (fieldId) {\n      fieldErrorsId = fieldId.replace(new RegExp(`(-field)$`), '-errors');\n    }\n\n    let $errors = $field.children('ul.errors');\n\n    if (!$errors.length) {\n      $errors = this.createErrorList(null, fieldErrorsId).appendTo($field);\n    }\n\n    this.addErrorsToList($errors, errors);\n  },\n\n  clearErrorsFromField: function ($field) {\n    $field.removeClass('has-errors');\n    $field.children('.input').removeClass('errors');\n    $field.children('ul.errors').remove();\n  },\n\n  clearErrorSummary: function ($body) {\n    $body.find('.error-summary').remove();\n  },\n\n  setFocusOnErrorSummary: function ($body) {\n    const errorSummaryContainer = $body.find('.error-summary');\n    if (errorSummaryContainer.length > 0) {\n      errorSummaryContainer.trigger('focus');\n\n      // start listening for clicks on summary errors\n      errorSummaryContainer.find('a').on('click', (ev) => {\n        if ($(ev.currentTarget).hasClass('cross-site-validate') == false) {\n          ev.preventDefault();\n          this.anchorSummaryErrorToField(ev.currentTarget, $body);\n        }\n      });\n    }\n  },\n\n  findErrorsContainerByErrorKey: function ($body, fieldErrorKey) {\n    let errorsElement = $body\n      .find(`[data-error-key=\"${fieldErrorKey}\"]`)\n      .find('ul.errors');\n\n    return $(errorsElement);\n  },\n\n  anchorSummaryErrorToField: function (error, $body) {\n    const fieldErrorKey = $(error).attr('data-field-error-key');\n\n    if (!fieldErrorKey) {\n      return;\n    }\n\n    const $fieldErrorsContainer = this.findErrorsContainerByErrorKey(\n      $body,\n      fieldErrorKey\n    );\n\n    if ($fieldErrorsContainer) {\n      // check if we need to switch tabs first\n      const fieldTabAnchors = this.findTabAnchorForField(\n        $fieldErrorsContainer,\n        $body\n      );\n\n      if (fieldTabAnchors.length > 0) {\n        for (let i = 0; i < fieldTabAnchors.length; i++) {\n          let $tabAnchor = $(fieldTabAnchors[i]);\n          if ($tabAnchor.attr('aria-selected') == 'false') {\n            $tabAnchor.click();\n          }\n        }\n      }\n\n      // check if the parents are collapsed - if yes, expand\n      let $collapsedParents = $fieldErrorsContainer.parents(\n        '.collapsed, .is-collapsed'\n      );\n      if ($collapsedParents.length > 0) {\n        // expand in the reverse order - from outside in!\n        for (let i = $collapsedParents.length; i > 0; i--) {\n          let $item = $($collapsedParents[i - 1]);\n          if ($item.data('block') != undefined) {\n            $item.data('block').expand();\n          } else {\n            $item.find('.titlebar').trigger('doubletap');\n          }\n        }\n      }\n\n      // focus on the field container that contains the error\n      let $field = $fieldErrorsContainer.parents('.field:first');\n      if ($field.is(':visible')) {\n        $field.attr('tabindex', '-1').trigger('focus');\n      } else {\n        // wait in case the field isn't yet visible; (MatrixInput.expand() has a timeout of 200)\n        setTimeout(() => {\n          $field.attr('tabindex', '-1').trigger('focus');\n        }, 201);\n      }\n    }\n  },\n\n  findTabAnchorForField: function ($container, $body) {\n    const fieldTabDivs = $container.parents(\n      `div[data-id^=tab][role=\"tabpanel\"]`\n    );\n\n    let fieldTabAnchors = [];\n    fieldTabDivs.each((i, tabDiv) => {\n      let tabAnchor = $body\n        .find('[role=\"tablist\"]')\n        .find('a[href=\"#' + $(tabDiv).attr('id') + '\"]');\n      fieldTabAnchors.push(tabAnchor);\n    });\n\n    return fieldTabAnchors;\n  },\n\n  getAutofocusValue: function (autofocus) {\n    return autofocus && !Garnish.isMobileBrowser(true) ? 'autofocus' : null;\n  },\n\n  getDisabledValue: function (disabled) {\n    return disabled ? 'disabled' : null;\n  },\n};\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * File Manager.\n */\nCraft.Uploader = Craft.BaseUploader.extend(\n  {\n    uploader: null,\n    _totalFileCounter: 0,\n    _validFileCounter: 0,\n    _onFileAdd: null,\n\n    init: function ($element, settings) {\n      settings = $.extend({}, Craft.Uploader.defaults, settings);\n      this.base($element, settings);\n      delete this.settings.events;\n\n      this.uploader = this.$element.fileupload(this.settings);\n\n      Object.entries(this.events).forEach(([name, handler]) => {\n        this.$element.on(name, handler);\n      });\n\n      this._onFileAdd = this.onFileAdd.bind(this);\n      this.$element.on('fileuploadadd', this._onFileAdd);\n    },\n\n    /**\n     * Set uploader parameters.\n     */\n    setParams: function (paramObject) {\n      this.base(paramObject);\n\n      // Only set params if the uploader has been initialized\n      // It won't be if the input is disabled\n      if (this.uploader.data('blueimpFileupload')) {\n        this.uploader.fileupload('option', {formData: this.formData});\n      }\n    },\n\n    /**\n     * Get the number of uploads in progress.\n     */\n    getInProgress: function () {\n      return this.uploader.fileupload('active');\n    },\n\n    /**\n     * Called on file add.\n     */\n    onFileAdd: function (e, data) {\n      e.stopPropagation();\n\n      var validateExtension = false;\n\n      if (this.allowedKinds) {\n        if (!this._extensionList) {\n          this._createExtensionList();\n        }\n\n        validateExtension = true;\n      }\n\n      // Make sure that file API is there before relying on it\n      data.process().done(() => {\n        var file = data.files[0];\n        var pass = true;\n        if (validateExtension) {\n          var matches = file.name.match(/\\.([a-z0-4_]+)$/i);\n          var fileExtension = matches[1];\n          if (\n            $.inArray(fileExtension.toLowerCase(), this._extensionList) === -1\n          ) {\n            pass = false;\n            this._rejectedFiles.type.push('“' + file.name + '”');\n          }\n        }\n\n        if (file.size > this.settings.maxFileSize) {\n          this._rejectedFiles.size.push('“' + file.name + '”');\n          pass = false;\n        }\n\n        // If the validation has passed for this file up to now, check if we're not hitting any limits\n        if (\n          pass &&\n          typeof this.settings.canAddMoreFiles === 'function' &&\n          !this.settings.canAddMoreFiles(this._validFileCounter)\n        ) {\n          this._rejectedFiles.limit.push('“' + file.name + '”');\n          pass = false;\n        }\n\n        if (pass) {\n          this._validFileCounter++;\n          data.submit();\n        }\n\n        if (++this._totalFileCounter === data.originalFiles.length) {\n          this._totalFileCounter = 0;\n          this._validFileCounter = 0;\n          this.processErrorMessages();\n        }\n      });\n\n      return true;\n    },\n\n    destroy: function () {\n      if (this.uploader.fileupload('instance')) {\n        this.uploader.fileupload('destroy');\n      }\n\n      this.$element.off('fileuploadadd', this._onFileAdd);\n\n      Object.entries(this.events).forEach(([name, handler]) => {\n        this.$element.off(name, handler);\n      });\n    },\n  },\n  {\n    defaults: {\n      autoUpload: false,\n      sequentialUploads: true,\n      maxFileSize: Craft.maxUploadSize,\n      replaceFileInput: false,\n      createAction: 'assets/upload',\n      replaceAction: 'assets/replace-file',\n      deleteAction: 'assets/delete-asset',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.UriFormatGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    sourceVal = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Make it lowercase\n    sourceVal = sourceVal.toLowerCase();\n\n    // Convert extended ASCII characters to basic ASCII\n    sourceVal = Craft.asciiString(sourceVal);\n\n    // Handle must start with a letter and end with a letter/number\n    sourceVal = sourceVal.replace(/^[^a-z]+/, '');\n    sourceVal = sourceVal.replace(/[^a-z0-9]+$/, '');\n\n    // Get the \"words\"\n    var words = Craft.filterArray(sourceVal.split(/[^a-z0-9]+/));\n\n    var uriFormat = words.join(Craft.slugWordSeparator);\n\n    if (uriFormat && this.settings.suffix) {\n      uriFormat += this.settings.suffix;\n    }\n\n    return uriFormat;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * User index class\n */\nCraft.UserIndex = Craft.BaseElementIndex.extend({\n  init: function (elementType, $container, settings) {\n    this.on('selectSource', this.updateUrl.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific group in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultSourceSlug !== 'undefined'\n    ) {\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('slug') === defaultSourceSlug) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateUrl: function () {\n    if (this.settings.context === 'index') {\n      let uri = 'users';\n      const slug = this.$source.data('slug');\n      if (slug) {\n        uri += `/${slug}`;\n      }\n      Craft.setPath(uri);\n    }\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\User', Craft.UserIndex);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Volume folder selector modal class\n */\nCraft.VolumeFolderSelectorModal = Craft.BaseElementSelectorModal.extend(\n  {\n    init: function (settings) {\n      settings = Object.assign(\n        {},\n        Craft.VolumeFolderSelectorModal.defaults,\n        settings,\n        {\n          showSiteMenu: false,\n        }\n      );\n      settings.indexSettings.disabledFolderIds = settings.disabledFolderIds;\n      this.base('craft\\\\elements\\\\Asset', settings);\n    },\n\n    getElementIndexParams: function () {\n      return Object.assign({}, this.base(), {\n        foldersOnly: true,\n      });\n    },\n\n    hasSelection: function () {\n      return (\n        this.base() ||\n        (this.elementIndex &&\n          this.elementIndex.sourcePath.length &&\n          typeof this.elementIndex.sourcePath[\n            this.elementIndex.sourcePath.length - 1\n          ].folderId !== 'undefined' &&\n          !this.settings.disabledFolderIds.includes(\n            this.elementIndex.sourcePath[\n              this.elementIndex.sourcePath.length - 1\n            ].folderId\n          ))\n      );\n    },\n\n    getElementInfo: function ($selectedElements) {\n      return [\n        {\n          folderId: $selectedElements.length\n            ? parseInt(\n                $selectedElements.find('.element:first').data('folder-id')\n              )\n            : this.elementIndex.sourcePath[\n                this.elementIndex.sourcePath.length - 1\n              ].folderId,\n        },\n      ];\n    },\n\n    getIndexSettings: function () {\n      return Object.assign(this.base(), {\n        foldersOnly: true,\n        canSelectElement: ($element) => {\n          const folderId = $element.find('.element:first').data('folder-id');\n          return (\n            folderId && !this.settings.disabledFolderIds.includes(folderId)\n          );\n        },\n      });\n    },\n  },\n  {\n    defaults: {\n      disabledFolderIds: [],\n      indexSettings: {},\n    },\n  }\n);\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!../../../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[4]!./charts.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3790022a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!../../../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[4]!./craft.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80058a3c\", content, true, {});","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","import * as d3 from 'd3';\n\n/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n/** global: d3FormatLocaleDefinition */\n\n// Use old jQuery prefilter behavior\n// see https://jquery.com/upgrade-guide/3.5/\nvar rxhtmlTag =\n  /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi;\njQuery.htmlPrefilter = function (html) {\n  return html.replace(rxhtmlTag, '<$1></$2>');\n};\n\n// Set all the standard Craft.* stuff\n$.extend(Craft, {\n  navHeight: 48,\n\n  isIterable(obj) {\n    return obj && typeof obj[Symbol.iterator] === 'function';\n  },\n\n  /**\n   * @callback indexKeyCallback\n   * @param {Object} currentValue\n   * @param {number} [index]\n   * @returns {string}\n   */\n  /**\n   * Indexes an array of objects by a specified key\n   *\n   * @param {Object[]} arr\n   * @param {(string|indexKeyCallback)} key\n   */\n  index: function (arr, key) {\n    if (arr instanceof NodeList || this.isIterable(arr)) {\n      arr = Array.from(arr);\n    } else if (!Array.isArray(arr)) {\n      throw 'The first argument passed to Craft.index() must be an array, NodeList, or iterable object.';\n    }\n\n    if (typeof key === 'string') {\n      const k = key;\n      key = (item) => item[k];\n    }\n\n    return Object.fromEntries(arr.map((item) => [key(item), item]));\n  },\n\n  /**\n   * Groups an array of objects by a specified key\n   *\n   * @param {Object[]} arr\n   * @param {(string|indexKeyCallback)} key\n   */\n  group: function (arr, key) {\n    if (!Array.isArray(arr)) {\n      throw 'The first argument passed to Craft.group() must be an array.';\n    }\n\n    let index = {};\n\n    return arr.reduce((grouped, obj, i) => {\n      const thisKey = typeof key === 'string' ? obj[key] : key(obj, i);\n      if (!index.hasOwnProperty(thisKey)) {\n        index[thisKey] = [[], thisKey];\n        grouped.push(index[thisKey]);\n      }\n      index[thisKey][0].push(obj);\n      return grouped;\n    }, []);\n  },\n\n  /**\n   * Get a translated message.\n   *\n   * @param {string} category\n   * @param {string} message\n   * @param {Object} params\n   * @returns {string}\n   */\n  t: function (category, message, params) {\n    if (\n      typeof Craft.translations[category] !== 'undefined' &&\n      typeof Craft.translations[category][message] !== 'undefined'\n    ) {\n      message = Craft.translations[category][message];\n    }\n\n    if (params) {\n      return this.formatMessage(message, params);\n    }\n\n    return message;\n  },\n\n  formatMessage: function (pattern, args) {\n    let tokens;\n    if ((tokens = this._tokenizePattern(pattern)) === false) {\n      throw 'Message pattern is invalid.';\n    }\n    for (let i = 0; i < tokens.length; i++) {\n      let token = tokens[i];\n      if (typeof token === 'object') {\n        if ((tokens[i] = this._parseToken(token, args)) === false) {\n          throw 'Message pattern is invalid.';\n        }\n      }\n    }\n    return tokens.join('');\n  },\n\n  _tokenizePattern: function (pattern) {\n    let depth = 1,\n      start,\n      pos;\n    // Get an array of the string characters (factoring in 3+ byte chars)\n    const chars = [...pattern];\n    if ((start = pos = chars.indexOf('{')) === -1) {\n      return [pattern];\n    }\n    let tokens = [chars.slice(0, pos).join('')];\n    while (true) {\n      let open = chars.indexOf('{', pos + 1);\n      let close = chars.indexOf('}', pos + 1);\n      if (open === -1) {\n        open = false;\n      }\n      if (close === -1) {\n        close = false;\n      }\n      if (open === false && close === false) {\n        break;\n      }\n      if (open === false) {\n        open = chars.length;\n      }\n      if (close > open) {\n        depth++;\n        pos = open;\n      } else {\n        depth--;\n        pos = close;\n      }\n      if (depth === 0) {\n        tokens.push(\n          chars\n            .slice(start + 1, pos)\n            .join('')\n            .split(',', 3)\n        );\n        start = pos + 1;\n        tokens.push(chars.slice(start, open).join(''));\n        start = open;\n      }\n\n      if (depth !== 0 && (open === false || close === false)) {\n        break;\n      }\n    }\n    if (depth !== 0) {\n      return false;\n    }\n\n    return tokens;\n  },\n\n  _parseToken: function (token, args) {\n    // parsing pattern based on ICU grammar:\n    // http://icu-project.org/apiref/icu4c/classMessageFormat.html#details\n    const param = token[0].trim();\n    if (typeof args[param] === 'undefined') {\n      return `{${token.join(',')}}`;\n    }\n    const arg = args[param];\n    const type = typeof token[1] !== 'undefined' ? token[1].trim() : 'none';\n    switch (type) {\n      case 'number':\n        return (() => {\n          let format = typeof token[2] !== 'undefined' ? token[2].trim() : null;\n          if (format !== null && format !== 'integer') {\n            throw `Message format 'number' is only supported for integer values.`;\n          }\n          let number = Craft.formatNumber(arg);\n          let pos;\n          if (format === null && (pos = `${arg}`.indexOf('.')) !== -1) {\n            number += `.${arg.substring(pos + 1)}`;\n          }\n          return number;\n        })();\n      case 'none':\n        return arg;\n      case 'select':\n        return (() => {\n          /* http://icu-project.org/apiref/icu4c/classicu_1_1SelectFormat.html\n                        selectStyle = (selector '{' message '}')+\n                        */\n          if (typeof token[2] === 'undefined') {\n            return false;\n          }\n          let select = this._tokenizePattern(token[2]);\n          let c = select.length;\n          let message = false;\n          for (let i = 0; i + 1 < c; i++) {\n            if (Array.isArray(select[i]) || !Array.isArray(select[i + 1])) {\n              return false;\n            }\n            let selector = select[i++].trim();\n            if (\n              (message === false && selector === 'other') ||\n              selector == arg\n            ) {\n              message = select[i].join(',');\n            }\n          }\n          if (message === false) {\n            return false;\n          }\n          return this.formatMessage(message, args);\n        })();\n      case 'plural':\n        return (() => {\n          /* http://icu-project.org/apiref/icu4c/classicu_1_1PluralFormat.html\n                        pluralStyle = [offsetValue] (selector '{' message '}')+\n                        offsetValue = \"offset:\" number\n                        selector = explicitValue | keyword\n                        explicitValue = '=' number  // adjacent, no white space in between\n                        keyword = [^[[:Pattern_Syntax:][:Pattern_White_Space:]]]+\n                        message: see MessageFormat\n                        */\n          if (typeof token[2] === 'undefined') {\n            return false;\n          }\n          let plural = this._tokenizePattern(token[2]);\n          const c = plural.length;\n          let message = false;\n          let offset = 0;\n          for (let i = 0; i + 1 < c; i++) {\n            if (\n              typeof plural[i] === 'object' ||\n              typeof plural[i + 1] !== 'object'\n            ) {\n              return false;\n            }\n            let selector = plural[i++].trim();\n            let selectorChars = [...selector];\n\n            if (i === 1 && selector.substring(0, 7) === 'offset:') {\n              let pos = [...selector.replace(/[\\n\\r\\t]/g, ' ')].indexOf(' ', 7);\n              if (pos === -1) {\n                throw 'Message pattern is invalid.';\n              }\n              offset = parseInt(selectorChars.slice(7, pos).join('').trim());\n              selector = selectorChars\n                .slice(pos + 1, pos + 1 + selectorChars.length)\n                .join('')\n                .trim();\n            }\n            if (\n              (message === false && selector === 'other') ||\n              (selector[0] === '=' &&\n                parseInt(\n                  selectorChars.slice(1, 1 + selectorChars.length).join('')\n                ) === arg) ||\n              (selector === 'one' && arg - offset === 1)\n            ) {\n              message = (\n                typeof plural[i] === 'string' ? [plural[i]] : plural[i]\n              )\n                .map((p) => {\n                  return p.replace('#', arg - offset);\n                })\n                .join(',');\n            }\n          }\n          if (message === false) {\n            return false;\n          }\n          return this.formatMessage(message, args);\n        })();\n      default:\n        throw `Message format '${type}' is not supported.`;\n    }\n  },\n\n  formatDate: function (date) {\n    if (typeof date !== 'object') {\n      date = new Date(date);\n    }\n\n    return $.datepicker.formatDate(Craft.datepickerOptions.dateFormat, date);\n  },\n\n  /**\n   * Formats a number.\n   *\n   * @param {string} number\n   * @param {string} [format] D3 format\n   * @returns {string}\n   */\n  formatNumber: function (number, format) {\n    if (typeof format == 'undefined') {\n      format = ',.0f';\n    }\n\n    var formatter = d3.formatLocale(d3FormatLocaleDefinition).format(format);\n\n    return formatter(number);\n  },\n\n  /**\n   * @param {string} key\n   * @param {boolean} shift\n   * @param {boolean} alt\n   */\n  shortcutText: function (key, shift, alt) {\n    if (Craft.clientOs === 'Mac') {\n      return (alt ? '⌥' : '') + (shift ? '⇧' : '') + '⌘' + key;\n    }\n    return 'Ctrl+' + (alt ? 'Alt+' : '') + (shift ? 'Shift+' : '') + key;\n  },\n\n  /**\n   * Escapes some HTML.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  escapeHtml: function (str) {\n    return $('<div/>').text(str).html();\n  },\n\n  /**\n   * Escapes special regular expression characters.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  escapeRegex: function (str) {\n    // h/t https://stackoverflow.com/a/9310752\n    return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n  },\n\n  /**\n   * Returns the text in a string that might contain HTML tags.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  getText: function (str) {\n    return $('<div/>').html(str).text();\n  },\n\n  /**\n   * Encodes a URI copmonent. Mirrors PHP's rawurlencode().\n   *\n   * @param {string} str\n   * @returns {string}\n   * @see http://stackoverflow.com/questions/1734250/what-is-the-equivalent-of-javascripts-encodeuricomponent-in-php\n   */\n  encodeUriComponent: function (str) {\n    str = encodeURIComponent(str);\n\n    var differences = {\n      '!': '%21',\n      '*': '%2A',\n      \"'\": '%27',\n      '(': '%28',\n      ')': '%29',\n    };\n\n    for (var chr in differences) {\n      var re = new RegExp('\\\\' + chr, 'g');\n      str = str.replace(re, differences[chr]);\n    }\n\n    return str;\n  },\n\n  /**\n   * Selects the full value of a given text input.\n   *\n   * @param {(jQuery|HTMLElement|string)} input\n   */\n  selectFullValue: function (input) {\n    var $input = $(input);\n    var val = $input.val();\n\n    // Does the browser support setSelectionRange()?\n    if (typeof $input[0].setSelectionRange !== 'undefined') {\n      // Select the whole value\n      var length = val.length * 2;\n      $input[0].setSelectionRange(0, length);\n    } else {\n      // Refresh the value to get the cursor positioned at the end\n      $input.val(val);\n    }\n  },\n\n  /**\n   * Formats an ID out of an input name.\n   *\n   * @param {string} inputName\n   * @returns {string}\n   */\n  formatInputId: function (inputName) {\n    // IDs must begin with a letter\n    let id = inputName.replace(/^[^A-Za-z]+/, '');\n    id = this.rtrim(id.replace(/[^A-Za-z0-9_.]+/g, '-'), '-');\n    return id || this.randomString(10);\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @param {string} [baseUrl]\n   * @returns {string}\n   */\n  getUrl: function (path, params, baseUrl) {\n    if (typeof path !== 'string') {\n      path = '';\n    }\n\n    // Normalize the params\n    let anchor = null;\n    if ($.isPlainObject(params)) {\n      if (typeof params['#'] !== 'undefined') {\n        anchor = params['#'];\n        delete params['#'];\n      }\n    } else if (typeof params === 'string') {\n      let anchorPos = params.indexOf('#');\n      if (anchorPos !== -1) {\n        anchor = params.substring(anchorPos + 1);\n        params = params.substring(0, anchorPos);\n      }\n      params = Object.fromEntries(new URLSearchParams(params).entries());\n    } else {\n      params = {};\n    }\n\n    // Was there already an anchor on the path?\n    let anchorPos = path.indexOf('#');\n    if (anchorPos !== -1) {\n      // Only keep it if the params didn't specify a new anchor\n      if (!anchor) {\n        anchor = path.substring(anchorPos + 1);\n      }\n      path = path.substring(0, anchorPos);\n    }\n\n    // Were there already any query string params in the path?\n    let qsPos = path.indexOf('?');\n    if (qsPos !== -1) {\n      params = $.extend(\n        Object.fromEntries(\n          new URLSearchParams(path.substring(qsPos + 1)).entries()\n        ),\n        params\n      );\n      path = path.substring(0, qsPos);\n    }\n\n    // Return path if it appears to be an absolute URL.\n    if (path.search('://') !== -1 || path[0] === '/') {\n      return (\n        path +\n        (!$.isEmptyObject(params) ? `?${$.param(params)}` : '') +\n        (anchor ? `#${anchor}` : '')\n      );\n    }\n\n    path = Craft.trim(path, '/');\n\n    // Put it all together\n    let url;\n\n    if (baseUrl) {\n      url = baseUrl;\n\n      if (path && Craft.pathParam) {\n        // Does baseUrl already contain a path?\n        var pathMatch = url.match(\n          new RegExp('[&?]' + Craft.escapeRegex(Craft.pathParam) + '=[^&]+')\n        );\n        if (pathMatch) {\n          url = url.replace(\n            pathMatch[0],\n            Craft.rtrim(pathMatch[0], '/') + '/' + path\n          );\n          path = '';\n        }\n      }\n    } else {\n      url = Craft.baseUrl;\n    }\n\n    // Does the base URL already have a query string?\n    qsPos = url.indexOf('?');\n    if (qsPos !== -1) {\n      params = $.extend(\n        Object.fromEntries(\n          new URLSearchParams(url.substring(qsPos + 1)).entries()\n        ),\n        params\n      );\n      url = url.substring(0, qsPos);\n    }\n\n    if (!Craft.omitScriptNameInUrls && path) {\n      if (Craft.usePathInfo || !Craft.pathParam) {\n        // Make sure that the script name is in the URL\n        if (url.search(Craft.scriptName) === -1) {\n          url = Craft.rtrim(url, '/') + '/' + Craft.scriptName;\n        }\n      } else {\n        // Move the path into the query string params\n\n        // Is the path param already set?\n        if (typeof params[Craft.pathParam] !== 'undefined') {\n          let basePath = params[Craft.pathParam].trimEnd();\n          path = basePath + (path ? '/' + path : '');\n        }\n\n        params[Craft.pathParam] = path;\n        path = null;\n      }\n    }\n\n    if (path) {\n      url = Craft.rtrim(url, '/') + '/' + path;\n    }\n\n    if (!$.isEmptyObject(params)) {\n      url += `?${$.param(params)}`;\n    }\n\n    if (anchor) {\n      url += `#${anchor}`;\n    }\n\n    return url;\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getCpUrl: function (path, params) {\n    return this.getUrl(path, params, Craft.baseCpUrl);\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getSiteUrl: function (path, params) {\n    return this.getUrl(path, params, Craft.baseSiteUrl);\n  },\n\n  /**\n   * Returns an action URL.\n   *\n   * @param {string} action\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getActionUrl: function (action, params) {\n    return Craft.getUrl(action, params, Craft.actionUrl);\n  },\n\n  /**\n   * Redirects the window to a given URL.\n   *\n   * @param {string} url\n   */\n  redirectTo: function (url) {\n    document.location.href = this.getUrl(url);\n  },\n\n  /**\n   * Replaces the page’s current URL.\n   *\n   * The location hash will be left intact, unless the given URL specifies one.\n   *\n   * @param {string} url\n   */\n  setUrl: function (url) {\n    if (typeof history === 'undefined') {\n      return;\n    }\n\n    if (!url.match(/#/)) {\n      url += document.location.hash;\n    }\n\n    history.replaceState({}, '', url);\n\n    // If there's a site crumb menu, update each of its URLs\n    const siteLinks = document.querySelectorAll('#site-crumb-menu a[href]');\n    for (const link of siteLinks) {\n      const site = this.getQueryParam('site', link.href);\n      link.href = this.getUrl(url, {site});\n    }\n  },\n\n  /**\n   * Replaces the page’s current URL based on the given path, leaving the current query string and hash intact.\n   *\n   * @param {string} path\n   */\n  setPath: function (path) {\n    this.path = path;\n    this.setUrl(Craft.getUrl(path, document.location.search));\n  },\n\n  /**\n   * Replaces the page’s current URL based on the given query param name and value, leaving the current URI, other query params, and hash intact.\n   *\n   * @param {string} name\n   * @param {*} value\n   */\n  setQueryParam(name, value) {\n    const baseUrl = document.location.origin + document.location.pathname;\n    const params = this.getQueryParams();\n\n    if (typeof value !== 'undefined' && value !== null && value !== false) {\n      params[name] = value;\n    } else {\n      delete params[name];\n    }\n\n    this.setUrl(Craft.getUrl(baseUrl, params));\n  },\n\n  /**\n   * Returns the current URL with a certain page added to it.\n   *\n   * @param {int} page\n   * @returns {string}\n   */\n  getPageUrl: function (page) {\n    let url = document.location.origin + document.location.pathname;\n    url = Craft.rtrim(url, '/');\n\n    let qs = document.location.search\n      ? document.location.search.substring(1)\n      : '';\n\n    // query string-based pagination?\n    if (Craft.pageTrigger[0] === '?') {\n      const pageParam = Craft.pageTrigger.substring(1);\n      // remove the existing page param\n      if (document.location.search) {\n        const params = Object.fromEntries(new URLSearchParams(qs).entries());\n        delete params[pageParam];\n        qs = $.param(params);\n      }\n      if (page !== 1) {\n        qs += (qs !== '' ? '&' : '') + `${pageParam}=${page}`;\n      }\n    } else {\n      // Remove the existing page segment(s)\n      url = url.replace(\n        new RegExp('/' + Craft.escapeRegex(Craft.pageTrigger) + '\\\\d+$'),\n        ''\n      );\n\n      if (page !== 1) {\n        url += `/${Craft.pageTrigger}${page}`;\n      }\n    }\n\n    return url + (qs ? `?${qs}` : '') + document.location.hash;\n  },\n\n  /**\n   * Returns a hidden CSRF token input, if CSRF protection is enabled.\n   *\n   * @returns {string}\n   */\n  getCsrfInput: function () {\n    if (Craft.csrfTokenName) {\n      return (\n        '<input type=\"hidden\" name=\"' +\n        Craft.csrfTokenName +\n        '\" value=\"' +\n        Craft.csrfTokenValue +\n        '\"/>'\n      );\n    } else {\n      return '';\n    }\n  },\n\n  /**\n   * @callback postActionRequestCallback\n   * @param {?Object} response\n   * @param {string} textStatus\n   * @param {Object} jqXHR\n   */\n  /**\n   * Posts an action request to the server.\n   *\n   * @param {string} action\n   * @param {Object} [data]\n   * @param {postActionRequestCallback} [callback]\n   * @param {Object} [options]\n   * @returns {Object}\n   * @deprecated in 3.4.6. sendActionRequest() should be used instead\n   */\n  postActionRequest: function (action, data, callback, options) {\n    // Make 'data' optional\n    if (typeof data === 'function') {\n      options = callback;\n      callback = data;\n      data = {};\n    }\n\n    options = options || {};\n\n    if (options.contentType && options.contentType.match(/\\bjson\\b/)) {\n      if (typeof data === 'object') {\n        data = JSON.stringify(data);\n      }\n      options.contentType = 'application/json; charset=utf-8';\n    }\n\n    var jqXHR = $.ajax(\n      $.extend(\n        {\n          url: Craft.getActionUrl(action),\n          type: 'POST',\n          dataType: 'json',\n          headers: this._actionHeaders(),\n          data: data,\n          success: callback,\n          error: function (jqXHR, textStatus, errorThrown) {\n            // Ignore incomplete requests, likely due to navigating away from the page\n            // h/t https://stackoverflow.com/a/22107079/1688568\n            if (jqXHR.readyState !== 4) {\n              return;\n            }\n\n            if (jqXHR.status !== 400) {\n              if (typeof Craft.cp !== 'undefined') {\n                Craft.cp.displayError();\n              } else {\n                alert(Craft.t('app', 'A server error occurred.'));\n              }\n            }\n\n            if (callback) {\n              callback(\n                jqXHR.status === 400 ? jqXHR.responseJSON : null,\n                textStatus,\n                jqXHR\n              );\n            }\n          },\n        },\n        options\n      )\n    );\n\n    // Call the 'send' callback\n    if (typeof options.send === 'function') {\n      options.send(jqXHR);\n    }\n\n    return jqXHR;\n  },\n\n  _actionHeaders: function () {\n    let headers = {\n      'X-Registered-Asset-Bundles': [\n        ...new Set(Craft.registeredAssetBundles),\n      ].join(','),\n      'X-Registered-Js-Files': [...new Set(Craft.registeredJsFiles)].join(','),\n    };\n\n    if (Craft.csrfTokenValue) {\n      headers['X-CSRF-Token'] = Craft.csrfTokenValue;\n    }\n\n    return headers;\n  },\n\n  /**\n   * Sends a request to a Craft/plugin action\n   * @param {string} method The request action to use ('GET' or 'POST')\n   * @param {?string} [action] The action to request\n   * @param {Object} [options] Axios request options\n   * @returns {Promise}\n   * @since 3.4.6\n   */\n  sendActionRequest: function (method, action, options = {}) {\n    if ($.isPlainObject(action)) {\n      options = action;\n      action = null;\n    }\n\n    if (method.toUpperCase() === 'POST' && action && options.data) {\n      // Avoid conflicting `action` params\n      if (typeof options.data === 'string') {\n        const namespace =\n          options && options.headers && options.headers['X-Craft-Namespace'];\n        const actionName = this.namespaceInputName('action', namespace);\n        options.data += `&${actionName}=${action}`;\n      } else {\n        delete options.data.action;\n      }\n    }\n\n    return new Promise((resolve, reject) => {\n      options = options ? $.extend({}, options) : {};\n      options.method = method;\n      options.url = action ? Craft.getActionUrl(action) : Craft.getCpUrl();\n      options.headers = $.extend(\n        {\n          'X-Requested-With': 'XMLHttpRequest',\n        },\n        options.headers || {},\n        this._actionHeaders()\n      );\n      options.params = $.extend({}, options.params || {}, {\n        // Force Safari to not load from cache\n        v: new Date().getTime(),\n      });\n      axios.request(options).then(resolve).catch(reject);\n    });\n  },\n\n  /**\n   * Sends a request to the Craftnet API.\n   * @param {string} method The request action to use ('GET' or 'POST')\n   * @param {string} uri The API endpoint URI\n   * @param {Object} options Axios request options\n   * @returns {Promise}\n   * @since 3.3.16\n   */\n  sendApiRequest: function (method, uri, options = {}) {\n    return new Promise((resolve, reject) => {\n      options = options ? $.extend({}, options) : {};\n      let cancelToken = options.cancelToken || null;\n\n      // Get the latest headers\n      this._getApiHeaders(cancelToken)\n        .then((apiHeaders) => {\n          // Send the API request\n          options.method = method;\n          options.baseURL = Craft.baseApiUrl;\n          options.url = uri;\n          options.headers = $.extend(apiHeaders, options.headers || {});\n          options.params = $.extend(\n            Craft.apiParams || {},\n            options.params || {},\n            {\n              // Force Safari to not load from cache\n              v: new Date().getTime(),\n            }\n          );\n\n          // Force the API to process the Craft headers if this is the first API request\n          if (!this._apiHeaders) {\n            options.params.processCraftHeaders = 1;\n          }\n\n          if (Craft.httpProxy) {\n            options.proxy = Craft.httpProxy;\n          }\n\n          axios\n            .request(options)\n            .then((apiResponse) => {\n              // Process the response headers\n              this._processApiHeaders(apiResponse.headers, cancelToken)\n                .then(() => {\n                  // Finally return the API response data\n                  resolve(apiResponse.data);\n                })\n                .catch(reject);\n            })\n            .catch(reject);\n        })\n        .catch(reject);\n    });\n  },\n\n  _loadingApiHeaders: false,\n  _apiHeaders: null,\n  _apiHeaderWaitlist: [],\n\n  /**\n   * Returns the headers that should be sent with API requests.\n   *\n   * @param {Object} [cancelToken]\n   * @returns {Promise}\n   */\n  _getApiHeaders: function (cancelToken) {\n    return new Promise((resolve, reject) => {\n      // Are we already loading them?\n      if (this._loadingApiHeaders) {\n        this._apiHeaderWaitlist.push([resolve, reject]);\n        return;\n      }\n\n      // Are the headers already cached?\n      if (this._apiHeaders) {\n        resolve(this._apiHeaders);\n        return;\n      }\n\n      this._loadingApiHeaders = true;\n      this.sendActionRequest('POST', 'app/api-headers', {\n        cancelToken: cancelToken,\n      })\n        .then((response) => {\n          // Make sure we even are waiting for these anymore\n          if (!this._loadingApiHeaders) {\n            reject(e);\n            return;\n          }\n\n          resolve(response.data);\n        })\n        .catch((e) => {\n          this._rejectApiRequests(reject, e);\n        });\n    });\n  },\n\n  _processApiHeaders: function (headers, cancelToken) {\n    return new Promise((resolve, reject) => {\n      // Have we already processed them?\n      if (this._apiHeaders) {\n        resolve();\n        return;\n      }\n\n      this.sendActionRequest('POST', 'app/process-api-response-headers', {\n        data: {\n          headers: headers,\n        },\n        cancelToken: cancelToken,\n      })\n        .then((response) => {\n          // Make sure we even are waiting for these anymore\n          if (!this._loadingApiHeaders) {\n            reject(e);\n            return;\n          }\n\n          this._apiHeaders = response.data;\n          this._loadingApiHeaders = false;\n\n          resolve();\n\n          // Was anything else waiting for them?\n          while (this._apiHeaderWaitlist.length) {\n            this._apiHeaderWaitlist.shift()[0](this._apiHeaders);\n          }\n        })\n        .catch((e) => {\n          this._rejectApiRequests(reject, e);\n        });\n    });\n  },\n\n  _rejectApiRequests: function (reject, e) {\n    this._loadingApiHeaders = false;\n    reject(e);\n    while (this._apiHeaderWaitlist.length) {\n      this._apiHeaderWaitlist.shift()[1](e);\n    }\n  },\n\n  /**\n   * Clears the cached API headers.\n   */\n  clearCachedApiHeaders: function () {\n    this._apiHeaders = null;\n    this._loadingApiHeaders = false;\n\n    // Reject anything in the header waitlist\n    while (this._apiHeaderWaitlist.length) {\n      this._apiHeaderWaitlist.shift()[1]();\n    }\n  },\n\n  /**\n   * Requests a URL and downloads the response.\n   *\n   * @param {string} method the request method to use\n   * @param {string} url the URL\n   * @param {(string|Object)} [body] the request body, if method = POST\n   * @returns {Promise}\n   */\n  downloadFromUrl: function (method, url, body) {\n    return new Promise((resolve, reject) => {\n      // h/t https://nehalist.io/downloading-files-from-post-requests/\n      let request = new XMLHttpRequest();\n      request.open(method, url, true);\n      if (typeof body === 'object') {\n        request.setRequestHeader(\n          'Content-Type',\n          'application/json; charset=UTF-8'\n        );\n        body = JSON.stringify(body);\n      } else {\n        request.setRequestHeader(\n          'Content-Type',\n          'application/x-www-form-urlencoded; charset=UTF-8'\n        );\n      }\n      request.responseType = 'blob';\n\n      request.onload = () => {\n        // Only handle status code 200\n        if (request.status === 200) {\n          // Try to find out the filename from the content disposition `filename` value\n          let disposition = request.getResponseHeader('content-disposition');\n          let matches = /\"([^\"]*)\"/.exec(disposition);\n          let filename =\n            matches != null && matches[1] ? matches[1] : 'Download';\n\n          // Encode the download into an anchor href\n          let contentType = request.getResponseHeader('content-type');\n          let blob = new Blob([request.response], {type: contentType});\n          let link = document.createElement('a');\n          link.href = window.URL.createObjectURL(blob);\n          link.download = filename;\n          document.body.appendChild(link);\n          link.click();\n          document.body.removeChild(link);\n\n          resolve();\n        } else {\n          reject();\n        }\n      };\n\n      request.send(body);\n    });\n  },\n\n  /**\n   * Converts a comma-delimited string into an array.\n   *\n   * @param {string} str\n   * @returns array\n   */\n  stringToArray: function (str) {\n    if (typeof str !== 'string') {\n      return str;\n    }\n\n    var arr = str.split(',');\n    for (var i = 0; i < arr.length; i++) {\n      arr[i] = $.trim(arr[i]);\n    }\n    return arr;\n  },\n\n  /**\n   * @callback findDeltaDataCallback\n   * @param {string} deltaName\n   * @param {Array} params\n   */\n  /**\n   * Compares old and new post data, and removes any values that haven't\n   * changed within the given list of delta namespaces.\n   *\n   * @param {string} oldData\n   * @param {string} newData\n   * @param {Object} deltaNames\n   * @param {findDeltaDataCallback|null} [callback] Callback function that should be called whenever a new group of modified params has been found\n   * @param {Object} [initialDeltaValues] Initial delta values. If undefined, `Craft.initialDeltaValues` will be used.\n   * @param {Object} [forceModifiedDeltaNames] List of delta names that should be considered modified regardless of their param values\n   * @param {boolean} [asArray] Whether the params should be returned as an array\n   * @returns {string}\n   */\n  findDeltaData: function (\n    oldData,\n    newData,\n    deltaNames,\n    callback = null,\n    initialDeltaValues = {},\n    forceModifiedDeltaNames = [],\n    asArray = false\n  ) {\n    const [modifiedDeltaNames, groupedNewParams] = this.findModifiedDeltaNames(\n      oldData,\n      newData,\n      deltaNames,\n      initialDeltaValues,\n      forceModifiedDeltaNames\n    );\n\n    // Figure out which of the new params should actually be posted\n    let params = groupedNewParams.__root__;\n    for (let name of modifiedDeltaNames) {\n      params = params.concat(groupedNewParams[name]);\n      params.push(`modifiedDeltaNames[]=${name}`);\n      if (callback) {\n        callback(name, groupedNewParams[name]);\n      }\n    }\n\n    return asArray ? params : params.join('&');\n  },\n\n  /**\n   * Returns the delta names that have been modified, given old and new form data.\n   *\n   * @param {string} oldData\n   * @param {string} newData\n   * @param {Object} deltaNames\n   * @param {Object} [initialDeltaValues] Initial delta values. If undefined, `Craft.initialDeltaValues` will be used.\n   * @param {Object} [modifiedDeltaNames] List of delta names that should be considered modified regardless of their param values\n   * @param {boolean} [mostSpecific] Whether the most specific modified delta names should be returned\n   * @returns {Array}\n   */\n  findModifiedDeltaNames: function (\n    oldData,\n    newData,\n    deltaNames,\n    initialDeltaValues = {},\n    modifiedDeltaNames = [],\n    mostSpecific = false\n  ) {\n    // Make sure oldData and newData are always strings. This is important because further below String.split is called.\n    oldData = typeof oldData === 'string' ? oldData : '';\n    newData = typeof newData === 'string' ? newData : '';\n    if (!Array.isArray(deltaNames)) {\n      deltaNames = [];\n    }\n    if (!$.isPlainObject(initialDeltaValues)) {\n      initialDeltaValues = {};\n    }\n    if (!Array.isArray(modifiedDeltaNames)) {\n      modifiedDeltaNames = [];\n    }\n\n    // Sort the delta namespaces from least -> most specific\n    deltaNames.sort((a, b) => {\n      if (a.length === b.length) {\n        return 0;\n      }\n      if (mostSpecific) {\n        return a.length < b.length ? 1 : -1;\n      }\n      return a.length > b.length ? 1 : -1;\n    });\n\n    // Group all the old & new params by namespace\n    const groupedOldParams = this._groupParamsByDeltaNames(\n      oldData.split('&'),\n      deltaNames,\n      false,\n      initialDeltaValues\n    );\n    const groupedNewParams = this._groupParamsByDeltaNames(\n      newData.split('&'),\n      deltaNames,\n      true,\n      false\n    );\n\n    for (let name of deltaNames) {\n      if (\n        !modifiedDeltaNames.includes(name) &&\n        typeof groupedNewParams[name] === 'object' &&\n        (typeof groupedOldParams[name] !== 'object' ||\n          JSON.stringify(groupedOldParams[name]) !==\n            JSON.stringify(groupedNewParams[name]))\n      ) {\n        modifiedDeltaNames.push(name);\n      }\n    }\n\n    return [modifiedDeltaNames, groupedNewParams];\n  },\n\n  /**\n   * @param {Object} params\n   * @param {Object} deltaNames\n   * @param {boolean} withRoot\n   * @param {(boolean|Object)} initialValues\n   * @returns {Object}\n   * @private\n   */\n  _groupParamsByDeltaNames: function (\n    params,\n    deltaNames,\n    withRoot,\n    initialValues\n  ) {\n    const grouped = {};\n\n    if (withRoot) {\n      grouped.__root__ = [];\n    }\n\n    // sort delta names from most to least specific\n    deltaNames = deltaNames.sort((a, b) => b.length - a.length);\n\n    for (let name of deltaNames) {\n      grouped[name] = [];\n    }\n\n    const encodeURIComponentExceptEqualChar = (o) =>\n      encodeURIComponent(o).replace('%3D', '=');\n\n    params = params.map((p) => decodeURIComponent(p));\n\n    paramLoop: for (let param of params) {\n      for (let name of deltaNames) {\n        const paramName = param.substring(0, name.length + 1);\n        if ([`${name}=`, `${name}[`].includes(paramName)) {\n          if (typeof grouped[name] === 'undefined') {\n            grouped[name] = [];\n          }\n          grouped[name].push(encodeURIComponentExceptEqualChar(param));\n          continue paramLoop;\n        }\n      }\n\n      if (withRoot) {\n        grouped.__root__.push(encodeURIComponentExceptEqualChar(param));\n      }\n    }\n\n    if (initialValues) {\n      const serializeParam = (name, value) => {\n        if (Array.isArray(value) || $.isPlainObject(value)) {\n          value = $.param(value);\n        } else if (typeof value === 'string') {\n          value = encodeURIComponent(value);\n        } else if (value === null) {\n          value = '';\n        }\n        return `${encodeURIComponent(name)}=${value}`;\n      };\n\n      for (let name in initialValues) {\n        if (initialValues.hasOwnProperty(name)) {\n          if ($.isPlainObject(initialValues[name])) {\n            grouped[name] = [];\n            for (let subName in initialValues[name]) {\n              if (initialValues[name].hasOwnProperty(subName)) {\n                grouped[name].push(\n                  serializeParam(\n                    `${name}[${subName}]`,\n                    initialValues[name][subName]\n                  )\n                );\n              }\n            }\n          } else {\n            grouped[name] = [serializeParam(name, initialValues[name])];\n          }\n        }\n      }\n    }\n\n    return grouped;\n  },\n\n  /**\n   * Expands an object of POST array-style strings into an actual array.\n   *\n   * @param {Object} arr\n   * @returns {Array}\n   */\n  expandPostArray: function (arr) {\n    var expanded = {};\n    var i;\n\n    for (var key in arr) {\n      if (!arr.hasOwnProperty(key)) {\n        continue;\n      }\n\n      var value = arr[key],\n        m = key.match(/^(\\w+)(\\[.*)?/),\n        keys;\n\n      if (m[2]) {\n        // Get all of the nested keys\n        keys = m[2].match(/\\[[^\\[\\]]*\\]/g);\n\n        // Chop off the brackets\n        for (i = 0; i < keys.length; i++) {\n          keys[i] = keys[i].substring(1, keys[i].length - 1);\n        }\n      } else {\n        keys = [];\n      }\n\n      keys.unshift(m[1]);\n\n      var parentElem = expanded;\n\n      for (i = 0; i < keys.length; i++) {\n        if (i < keys.length - 1) {\n          if (typeof parentElem[keys[i]] !== 'object') {\n            // Figure out what this will be by looking at the next key\n            if (!keys[i + 1] || parseInt(keys[i + 1]) == keys[i + 1]) {\n              parentElem[keys[i]] = [];\n            } else {\n              parentElem[keys[i]] = {};\n            }\n          }\n\n          parentElem = parentElem[keys[i]];\n        } else {\n          // Last one. Set the value\n          if (!keys[i]) {\n            keys[i] = parentElem.length;\n          }\n\n          parentElem[keys[i]] = value;\n        }\n      }\n    }\n\n    return expanded;\n  },\n\n  /**\n   * Creates a form element populated with hidden inputs based on a string of serialized form data.\n   *\n   * @param {string} [data]\n   * @returns {(jQuery|HTMLElement)}\n   */\n  createForm: function (data) {\n    var $form = $('<form/>', {\n      attr: {\n        method: 'post',\n        action: '',\n        'accept-charset': 'UTF-8',\n      },\n    });\n\n    if (typeof data === 'string') {\n      var values = data.split('&');\n      var chunks;\n      for (var i = 0; i < values.length; i++) {\n        chunks = values[i].split('=', 2);\n        $('<input/>', {\n          type: 'hidden',\n          name: decodeURIComponent(chunks[0]),\n          value: decodeURIComponent(chunks[1] || ''),\n        }).appendTo($form);\n      }\n    }\n\n    return $form;\n  },\n\n  /**\n   * Compares two variables and returns whether they are equal in value.\n   * Recursively compares array and object values.\n   *\n   * @param {*} obj1\n   * @param {*} obj2\n   * @param {boolean} [sortObjectKeys] Whether object keys should be sorted before being compared. Default is true.\n   * @returns boolean\n   */\n  compare: function (obj1, obj2, sortObjectKeys) {\n    // Compare the types\n    if (typeof obj1 !== typeof obj2) {\n      return false;\n    }\n\n    if (typeof obj1 === 'object' && obj1 !== null && obj2 !== null) {\n      // Compare the lengths\n      if (obj1.length !== obj2.length) {\n        return false;\n      }\n\n      // Is one of them an array but the other is not?\n      if (Array.isArray(obj1) !== Array.isArray(obj2)) {\n        return false;\n      }\n\n      // If they're actual objects (not arrays), compare the keys\n      if (!Array.isArray(obj1)) {\n        if (typeof sortObjectKeys === 'undefined' || sortObjectKeys === true) {\n          if (\n            !Craft.compare(\n              Craft.getObjectKeys(obj1).sort(),\n              Craft.getObjectKeys(obj2).sort()\n            )\n          ) {\n            return false;\n          }\n        } else {\n          if (\n            !Craft.compare(Craft.getObjectKeys(obj1), Craft.getObjectKeys(obj2))\n          ) {\n            return false;\n          }\n        }\n      }\n\n      // Compare each value\n      for (var i in obj1) {\n        if (!obj1.hasOwnProperty(i)) {\n          continue;\n        }\n\n        if (!Craft.compare(obj1[i], obj2[i])) {\n          return false;\n        }\n      }\n\n      // All clear\n      return true;\n    } else {\n      return obj1 === obj2;\n    }\n  },\n\n  /**\n   * Returns an array of an object's keys.\n   *\n   * @param {Object} obj\n   * @returns {string[]}\n   */\n  getObjectKeys: function (obj) {\n    var keys = [];\n\n    for (var key in obj) {\n      if (!obj.hasOwnProperty(key)) {\n        continue;\n      }\n\n      keys.push(key);\n    }\n\n    return keys;\n  },\n\n  /**\n   * Takes an array or string of chars, and places a backslash before each one, returning the combined string.\n   *\n   * Userd by ltrim() and rtrim()\n   *\n   * @param {(string|Object)} chars\n   * @returns {string}\n   */\n  escapeChars: function (chars) {\n    if (!Array.isArray(chars)) {\n      chars = chars.split();\n    }\n\n    var escaped = '';\n\n    for (var i = 0; i < chars.length; i++) {\n      escaped += '\\\\' + chars[i];\n    }\n\n    return escaped;\n  },\n\n  /**\n   * Trim characters off of the beginning of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  ltrim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trimStart();\n    }\n    const re = new RegExp('^[' + Craft.escapeChars(chars) + ']+');\n    return str.replace(re, '');\n  },\n\n  /**\n   * Trim characters off of the end of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  rtrim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trimEnd();\n    }\n    const re = new RegExp('[' + Craft.escapeChars(chars) + ']+$');\n    return str.replace(re, '');\n  },\n\n  /**\n   * Trim characters off of the beginning and end of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  trim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trim();\n    }\n    str = Craft.ltrim(str, chars);\n    str = Craft.rtrim(str, chars);\n    return str;\n  },\n\n  /**\n   * Returns whether a string starts with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @returns {boolean}\n   * @deprecated String.prototype.endsWith() should be used instead\n   */\n  startsWith: function (str, substr) {\n    return str.startsWith(substr);\n  },\n\n  /**\n   * Ensures a string starts with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @return {string}\n   */\n  ensureStartsWith: function (str, substr) {\n    if (!str.startsWith(substr)) {\n      str = substr + str;\n    }\n    return str;\n  },\n\n  /**\n   * Ensures a string ends with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @return {string}\n   */\n  ensureEndsWith: function (str, substr) {\n    if (!str.endsWith(substr)) {\n      str += substr;\n    }\n    return str;\n  },\n\n  /**\n   * @callback filterArrayCallback\n   * @param {*} value\n   * @param {number} index\n   * @return {boolean}\n   */\n  /**\n   * Filters an array.\n   *\n   * @param {Object} arr\n   * @param {filterArrayCallback} [callback] A user-defined callback function. If null, we'll just remove any elements that equate to false.\n   * @returns {Array}\n   */\n  filterArray: function (arr, callback) {\n    var filtered = [];\n\n    for (var i = 0; i < arr.length; i++) {\n      var include;\n\n      if (typeof callback === 'function') {\n        include = callback(arr[i], i);\n      } else {\n        include = arr[i];\n      }\n\n      if (include) {\n        filtered.push(arr[i]);\n      }\n    }\n\n    return filtered;\n  },\n\n  /**\n   * @callback filterObjectCallback\n   * @param {*} value\n   * @param {string} key\n   * @return {boolean}\n   */\n  /**\n   * Filters an object by a callback method.\n   *\n   * @param {Object} obj\n   * @param {filterObjectCallback} [callback] A user-defined callback function. If null, values that equate to false will be removed.\n   * @returns {Object}\n   */\n  filterObject(obj, callback) {\n    if (typeof callback === 'undefined') {\n      callback = (v) => !!v;\n    }\n    return Object.fromEntries(Object.entries(obj).filter(callback));\n  },\n\n  /**\n   * Returns whether an element is in an array (unlike jQuery.inArray(), which returns the element’s index, or -1).\n   *\n   * @param {*} elem\n   * @param {(Object|Array)} arr\n   * @returns {boolean}\n   */\n  inArray: function (elem, arr) {\n    if ($.isPlainObject(arr)) {\n      arr = Object.values(arr);\n    }\n    return arr.includes(elem);\n  },\n\n  /**\n   * Removes an element from an array.\n   *\n   * @param {*} elem\n   * @param {Array} arr\n   * @returns {boolean} Whether the element could be found or not.\n   */\n  removeFromArray: function (elem, arr) {\n    var index = $.inArray(elem, arr);\n    if (index !== -1) {\n      arr.splice(index, 1);\n      return true;\n    } else {\n      return false;\n    }\n  },\n\n  /**\n   * Returns the last element in an array.\n   *\n   * @param {Array} arr\n   * @returns {*}\n   */\n  getLast: function (arr) {\n    if (!arr.length) {\n      return null;\n    } else {\n      return arr[arr.length - 1];\n    }\n  },\n\n  /**\n   * Makes the first character of a string uppercase.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  uppercaseFirst: function (str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  },\n\n  /**\n   * Makes the first character of a string lowercase.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  lowercaseFirst: function (str) {\n    return str.charAt(0).toLowerCase() + str.slice(1);\n  },\n\n  parseUrl: function (url) {\n    var m = url.match(\n      /^(?:(https?):\\/\\/|\\/\\/)([^\\/\\:]*)(?:\\:(\\d+))?(\\/[^\\?]*)?(?:\\?([^#]*))?(#.*)?/\n    );\n    if (!m) {\n      return {};\n    }\n    return {\n      scheme: m[1],\n      host: m[2] + (m[3] ? ':' + m[3] : ''),\n      hostname: m[2],\n      port: m[3] || null,\n      path: m[4] || '/',\n      query: m[5] || null,\n      hash: m[6] || null,\n    };\n  },\n\n  /**\n   * Returns a URL’s query params as an object.\n   * @param {string} [url] The URL. The window’s URL will be used by default.\n   * @returns Object\n   */\n  getQueryParams: function (url) {\n    let qs;\n    if (url) {\n      const m = url.match(/\\?.+/);\n      if (!m) {\n        return {};\n      }\n      qs = m[0];\n    } else {\n      qs = window.location.search;\n    }\n    return Object.fromEntries(new URLSearchParams(qs).entries());\n  },\n\n  /**\n   * Returns a query param.\n   * @param {string} name The param name\n   * @param {string} [url] The URL. The window’s URL will be used by default.\n   * @returns Object\n   */\n  getQueryParam: function (name, url) {\n    return this.getQueryParams(url)[name];\n  },\n\n  isSameHost: function (url) {\n    var requestUrlInfo = this.parseUrl(document.location.href);\n    if (!requestUrlInfo) {\n      return false;\n    }\n    var urlInfo = this.parseUrl(url);\n    if (!urlInfo) {\n      return false;\n    }\n    return requestUrlInfo.host === urlInfo.host;\n  },\n\n  /**\n   * Converts a number of seconds into a human-facing time duration.\n   */\n  secondsToHumanTimeDuration: function (seconds, showSeconds) {\n    if (typeof showSeconds === 'undefined') {\n      showSeconds = true;\n    }\n\n    var secondsInWeek = 604800,\n      secondsInDay = 86400,\n      secondsInHour = 3600,\n      secondsInMinute = 60;\n\n    var weeks = Math.floor(seconds / secondsInWeek);\n    seconds = seconds % secondsInWeek;\n\n    var days = Math.floor(seconds / secondsInDay);\n    seconds = seconds % secondsInDay;\n\n    var hours = Math.floor(seconds / secondsInHour);\n    seconds = seconds % secondsInHour;\n\n    var minutes;\n\n    if (showSeconds) {\n      minutes = Math.floor(seconds / secondsInMinute);\n      seconds = seconds % secondsInMinute;\n    } else {\n      minutes = Math.round(seconds / secondsInMinute);\n      seconds = 0;\n    }\n\n    var timeComponents = [];\n\n    if (weeks) {\n      timeComponents.push(\n        weeks +\n          ' ' +\n          (weeks === 1 ? Craft.t('app', 'week') : Craft.t('app', 'weeks'))\n      );\n    }\n\n    if (days) {\n      timeComponents.push(\n        days +\n          ' ' +\n          (days === 1 ? Craft.t('app', 'day') : Craft.t('app', 'days'))\n      );\n    }\n\n    if (hours) {\n      timeComponents.push(\n        hours +\n          ' ' +\n          (hours === 1 ? Craft.t('app', 'hour') : Craft.t('app', 'hours'))\n      );\n    }\n\n    if (minutes || (!showSeconds && !weeks && !days && !hours)) {\n      timeComponents.push(\n        minutes +\n          ' ' +\n          (minutes === 1 ? Craft.t('app', 'minute') : Craft.t('app', 'minutes'))\n      );\n    }\n\n    if (seconds || (showSeconds && !weeks && !days && !hours && !minutes)) {\n      timeComponents.push(\n        seconds +\n          ' ' +\n          (seconds === 1 ? Craft.t('app', 'second') : Craft.t('app', 'seconds'))\n      );\n    }\n\n    return timeComponents.join(', ');\n  },\n\n  /**\n   * Converts extended ASCII characters to ASCII.\n   *\n   * @param {string} str\n   * @param {Object} [charMap]\n   * @returns {string}\n   */\n  asciiString: function (str, charMap) {\n    // Normalize NFD chars to NFC\n    str = str.normalize('NFC');\n\n    var asciiStr = '';\n    var char;\n\n    for (var i = 0; i < str.length; i++) {\n      char = str.charAt(i);\n      asciiStr +=\n        typeof (charMap || Craft.asciiCharMap)[char] === 'string'\n          ? (charMap || Craft.asciiCharMap)[char]\n          : char;\n    }\n\n    return asciiStr;\n  },\n\n  uuid: function () {\n    if (typeof crypto.randomUUID === 'function') {\n      return crypto.randomUUID();\n    }\n\n    // h/t https://stackoverflow.com/a/2117523/1688568\n    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n      (\n        c ^\n        (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n      ).toString(16)\n    );\n  },\n\n  /**\n   * @param {string} name\n   * @param {string} [namespace]\n   * @returns {string}\n   */\n  namespaceInputName: function (name, namespace) {\n    if (!namespace) {\n      return name;\n    }\n\n    return name.replace(/([^'\"\\[\\]]+)([^'\"]*)/, `${namespace}[$1]$2`);\n  },\n\n  /**\n   * @param {string} id\n   * @param {string} [namespace]\n   * @returns {string}\n   */\n  namespaceId: function (id, namespace) {\n    return (\n      (namespace ? `${Craft.formatInputId(namespace)}-` : '') +\n      Craft.formatInputId(id)\n    );\n  },\n\n  randomString: function (length) {\n    // h/t https://stackoverflow.com/a/1349426/1688568\n    var result = '';\n    var characters =\n      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    for (var i = 0; i < length; i++) {\n      result += characters.charAt(Math.floor(Math.random() * 62));\n    }\n    return result;\n  },\n\n  /**\n   * Creates a validation error list.\n   *\n   * @param {Object} errors\n   * @returns {jQuery}\n   */\n  createErrorList: function (errors) {\n    var $ul = $(document.createElement('ul')).addClass('errors');\n\n    for (var i = 0; i < errors.length; i++) {\n      var $li = $(document.createElement('li'));\n      $li.appendTo($ul);\n      $li.html(errors[i]);\n    }\n\n    return $ul;\n  },\n\n  _existingCss: null,\n  _existingJs: null,\n\n  _appendHtml: async function (html, $parent) {\n    if (!html) {\n      return;\n    }\n\n    const nodes = $.parseHTML(html.trim(), true).filter((node) => {\n      if (node.nodeName === 'LINK' && node.href) {\n        if (!this._existingCss) {\n          this._existingCss = $('link[href]')\n            .toArray()\n            .map((n) => n.href.replace(/&/g, '&amp;'));\n        }\n\n        if (this._existingCss.includes(node.href)) {\n          return false;\n        }\n\n        this._existingCss.push(node.href);\n        return true;\n      }\n\n      if (node.nodeName === 'SCRIPT' && node.src) {\n        if (!this._existingJs) {\n          this._existingJs = $('script[src]')\n            .toArray()\n            .map((n) => n.src.replace(/&/g, '&amp;'));\n        }\n\n        // if this is a cross-domain JS resource, use our app/resource-js proxy to load it\n        if (\n          node.src.startsWith(this.resourceBaseUrl) &&\n          !this.isSameHost(node.src)\n        ) {\n          node.src = this.getActionUrl('app/resource-js', {\n            url: node.src,\n          });\n        }\n\n        if (this._existingJs.includes(node.src)) {\n          return false;\n        }\n\n        this._existingJs.push(node.src);\n      }\n\n      return true;\n    });\n\n    $parent.append(nodes);\n  },\n\n  /**\n   * Appends HTML to the page `<head>`.\n   *\n   * @param {string} html\n   * @returns {Promise}\n   */\n  appendHeadHtml: async function (html) {\n    await this._appendHtml(html, $('head'));\n  },\n\n  /**\n   * Appends HTML to the page `<body>`.\n   *\n   * @param {string} html\n   * @returns {Promise}\n   */\n  appendBodyHtml: async function (html) {\n    await this._appendHtml(html, Garnish.$bod);\n  },\n\n  /**\n   * Appends HTML to the page `<body>`.\n   *\n   * @deprecated in 4.0.0. `appendBodyHtml()` should be used instead\n   */\n  appendFootHtml: function (html) {\n    console.warn(\n      'Craft.appendFootHtml() is deprecated. Craft.appendBodyHtml() should be used instead.'\n    );\n    this.appendBodyHtml(html);\n  },\n\n  /**\n   * Initializes any common UI elements in a given container.\n   *\n   * @param {Object} $container\n   */\n  initUiElements: function ($container) {\n    $('.grid', $container).grid();\n    $('.info', $container).infoicon();\n    $('.checkbox-select', $container).checkboxselect();\n    $('.fieldtoggle', $container).fieldtoggle();\n    $('.lightswitch', $container).lightswitch();\n    $('.nicetext', $container).nicetext();\n    $('.datetimewrapper', $container).datetime();\n    $(\n      '.datewrapper > input[type=\"date\"], .timewrapper > input[type=\"time\"]',\n      $container\n    ).datetimeinput();\n    $('.formsubmit', $container).formsubmit();\n    // menus last, since they can mess with the DOM\n    $('.menubtn:not([data-disclosure-trigger])', $container).menubtn();\n    $('[data-disclosure-trigger]', $container).disclosureMenu();\n\n    // Open outbound links in new windows\n    // hat tip: https://stackoverflow.com/a/2911045/1688568\n    $('a', $container).each(function () {\n      if (\n        this.hostname.length &&\n        this.hostname !== location.hostname &&\n        typeof $(this).attr('target') === 'undefined'\n      ) {\n        $(this).attr('rel', 'noopener').attr('target', '_blank');\n      }\n    });\n  },\n\n  _elementIndexClasses: {},\n  _elementSelectorModalClasses: {},\n  _elementEditorClasses: {},\n  _uploaderClasses: {},\n  _authFormHandlers: {},\n\n  /**\n   * Registers an element index class for a given element type.\n   *\n   * @param {string} elementType\n   * @param {function} func\n   */\n  registerElementIndexClass: function (elementType, func) {\n    if (typeof this._elementIndexClasses[elementType] !== 'undefined') {\n      throw (\n        'An element index class has already been registered for the element type “' +\n        elementType +\n        '”.'\n      );\n    }\n\n    this._elementIndexClasses[elementType] = func;\n  },\n\n  /**\n   * Registers a file uploader class for a given filesystem type.\n   *\n   * @param {string} fsType\n   * @param {function} func\n   */\n  registerUploaderClass: function (fsType, func) {\n    if (typeof this._uploaderClasses[fsType] !== 'undefined') {\n      throw (\n        'An asset uploader class has already been registered for the filesystem type “' +\n        fsType +\n        '”.'\n      );\n    }\n\n    this._uploaderClasses[fsType] = func;\n  },\n\n  /**\n   * Registers an element selector modal class for a given element type.\n   *\n   * @param {string} elementType\n   * @param {function} func\n   */\n  registerElementSelectorModalClass: function (elementType, func) {\n    if (typeof this._elementSelectorModalClasses[elementType] !== 'undefined') {\n      throw (\n        'An element selector modal class has already been registered for the element type “' +\n        elementType +\n        '”.'\n      );\n    }\n\n    this._elementSelectorModalClasses[elementType] = func;\n  },\n\n  registerAuthFormHandler(method, func) {\n    if (typeof this._authFormHandlers[method] !== 'undefined') {\n      throw `An authentication form handler has already been registered for the method “${method}”.`;\n    }\n\n    this._authFormHandlers[method] = func;\n  },\n\n  /**\n   * Creates a new element index for a given element type.\n   *\n   * @param {string} elementType\n   * @param {jQuery} $container\n   * @param {Object} settings\n   * @returns {BaseElementIndex}\n   */\n  createElementIndex: function (elementType, $container, settings) {\n    var func;\n\n    if (typeof this._elementIndexClasses[elementType] !== 'undefined') {\n      func = this._elementIndexClasses[elementType];\n    } else {\n      func = Craft.BaseElementIndex;\n    }\n\n    return new func(elementType, $container, settings);\n  },\n\n  /**\n   * Creates a file uploader for a given filesystem type.\n   *\n   * @param {string} fsType\n   * @param {jQuery} $container\n   * @param {Object} settings\n   * @returns {Uploader}\n   */\n  createUploader: function (fsType, $container, settings) {\n    const func =\n      typeof this._uploaderClasses[fsType] !== 'undefined'\n        ? this._uploaderClasses[fsType]\n        : Craft.Uploader;\n\n    const uploader = new func($container, settings);\n    uploader.fsType = fsType;\n\n    return uploader;\n  },\n\n  /**\n   * Creates a new element selector modal for a given element type.\n   *\n   * @param {string} elementType\n   * @param {Object} settings\n   */\n  createElementSelectorModal: function (elementType, settings) {\n    var func;\n\n    if (typeof this._elementSelectorModalClasses[elementType] !== 'undefined') {\n      func = this._elementSelectorModalClasses[elementType];\n    } else {\n      func = Craft.BaseElementSelectorModal;\n    }\n\n    return new func(elementType, settings);\n  },\n\n  createAuthFormHandler(method, container, onSuccess, showError) {\n    if (typeof this._authFormHandlers[method] === 'undefined') {\n      throw `No authentication form has been registered for the method \"${method}\".`;\n    }\n\n    if (container instanceof jQuery) {\n      if (!container.length) {\n        throw 'No form element specified.';\n      }\n      container = container[0];\n    }\n\n    if (!showError) {\n      showError = (error) => {\n        Craft.cp.displayError(error);\n      };\n    }\n\n    return new this._authFormHandlers[method](container, onSuccess, showError);\n  },\n\n  /**\n   * Creates a new element editor slideout for a given element type.\n   *\n   * @param {string} elementType\n   * @param {(jQuery|HTMLElement|string)} element\n   * @param {Object} settings\n   */\n  createElementEditor: function (elementType, element, settings) {\n    // Param mapping\n    if (typeof settings === 'undefined' && $.isPlainObject(element)) {\n      // (settings)\n      settings = element;\n      element = null;\n    } else if (typeof settings !== 'object') {\n      settings = {};\n    }\n\n    if (!settings.elementType) {\n      settings.elementType = elementType;\n    }\n\n    return new Craft.ElementEditorSlideout(element, settings);\n  },\n\n  /**\n   * Retrieves a value from localStorage if it exists.\n   *\n   * @param {string} key\n   * @param {*} defaultValue\n   */\n  getLocalStorage: function (key, defaultValue) {\n    key = 'Craft-' + Craft.systemUid + '.' + key;\n\n    if (\n      typeof localStorage !== 'undefined' &&\n      typeof localStorage[key] !== 'undefined'\n    ) {\n      return JSON.parse(localStorage[key]);\n    } else {\n      return defaultValue;\n    }\n  },\n\n  /**\n   * Saves a value to localStorage.\n   *\n   * @param {string} key\n   * @param {*} value\n   */\n  setLocalStorage: function (key, value) {\n    if (typeof localStorage !== 'undefined') {\n      key = 'Craft-' + Craft.systemUid + '.' + key;\n\n      // localStorage might be filled all the way up.\n      // Especially likely if this is a private window in Safari 8+, where localStorage technically exists,\n      // but has a max size of 0 bytes.\n      try {\n        localStorage[key] = JSON.stringify(value);\n      } catch (e) {}\n    }\n  },\n\n  /**\n   * Removes a value from localStorage.\n   * @param {string} key\n   */\n  removeLocalStorage: function (key) {\n    if (typeof localStorage !== 'undefined') {\n      localStorage.removeItem(`Craft-${Craft.systemUid}.${key}`);\n    }\n  },\n\n  /**\n   * Returns a cookie value, if it exists, otherwise returns `false`\n   * @returns {(string|boolean)}\n   */\n  getCookie: function (name) {\n    // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie\n    return document.cookie.replace(\n      new RegExp(\n        `(?:(?:^|.*;\\\\s*)Craft-${Craft.systemUid}:${name}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`\n      ),\n      '$1'\n    );\n  },\n\n  /**\n   * Sets a cookie value.\n   * @param {string} name\n   * @param {string} value\n   * @param {Object} [options]\n   * @param {string} [options.path] The cookie path.\n   * @param {string} [options.domain] The cookie domain. Defaults to the `defaultCookieDomain` config setting.\n   * @param {number} [options.maxAge] The max age of the cookie (in seconds)\n   * @param {Date} [options.expires] The expiry date of the cookie. Defaults to none (session-based cookie).\n   * @param {boolean} [options.secure] Whether this is a secure cookie. Defaults to the `useSecureCookies`\n   * config setting.\n   * @param {string} [options.sameSite] The SameSite value (`lax` or `strict`). Defaults to the\n   * `sameSiteCookieValue` config setting.\n   */\n  setCookie: function (name, value, options) {\n    options = $.extend({}, this.defaultCookieOptions, options);\n    let cookie = `Craft-${Craft.systemUid}:${name}=${encodeURIComponent(\n      value\n    )}`;\n    if (options.path) {\n      cookie += `;path=${options.path}`;\n    }\n    if (options.domain) {\n      cookie += `;domain=${options.domain}`;\n    }\n    if (options.maxAge) {\n      cookie += `;max-age-in-seconds=${options.maxAge}`;\n    } else if (options.expires) {\n      cookie += `;expires=${options.expires.toUTCString()}`;\n    }\n    if (options.secure) {\n      cookie += ';secure';\n    }\n    document.cookie = cookie;\n  },\n\n  /**\n   * Removes a cookie\n   * @param {string} name\n   */\n  removeCookie: function (name) {\n    this.setCookie(name, '', new Date('1970-01-01T00:00:00'));\n  },\n\n  /**\n   * Returns element information from its DOM element.\n   *\n   * @param {(jQuery|HTMLElement|string)} element\n   * @returns {Object}\n   */\n  getElementInfo: function (element) {\n    let $element = $(element);\n\n    if (!$element.hasClass('element')) {\n      $element = $element.find('.element:first');\n    }\n\n    return {\n      id: $element.data('id'),\n      siteId: $element.data('site-id'),\n      label: $element.data('label'),\n      status: $element.data('status'),\n      url: $element.data('url'),\n      hasThumb: $element.hasClass('has-thumb'),\n      $element: $element,\n    };\n  },\n\n  /**\n   * Changes an element to the requested size.\n   *\n   * @param {(jQuery|HTMLElement|string))} element\n   * @param {string} size\n   */\n  setElementSize: function (element, size) {\n    const $element = $(element);\n\n    if (size !== 'small' && size !== 'large') {\n      size = 'small';\n    }\n\n    if ($element.hasClass(size)) {\n      return;\n    }\n\n    const otherSize = size === 'small' ? 'large' : 'small';\n\n    $element.addClass(size).removeClass(otherSize);\n\n    if ($element.hasClass('has-thumb')) {\n      const $oldImg = $element.find('> .thumb > img'),\n        imgSize = size === 'small' ? '30' : '100',\n        $newImg = $('<img/>', {\n          sizes: imgSize + 'px',\n          srcset: $oldImg.attr('srcset') || $oldImg.attr('data-pfsrcset'),\n        });\n\n      $oldImg.replaceWith($newImg);\n\n      picturefill({\n        elements: [$newImg[0]],\n      });\n    }\n  },\n\n  refreshElementInstances(elementId) {\n    const $elements = $(`div.element[data-id=\"${elementId}\"][data-settings]`);\n    if (!$elements.length) {\n      return;\n    }\n    const elementsBySite = {};\n    for (let i = 0; i < $elements.length; i++) {\n      const $element = $elements.eq(i);\n      const siteId = $element.data('site-id');\n      if (typeof elementsBySite[siteId] === 'undefined') {\n        elementsBySite[siteId] = {\n          key: i,\n          type: $element.data('type'),\n          id: elementId,\n          siteId,\n          instances: [],\n        };\n      }\n      elementsBySite[siteId].instances.push($element.data('settings'));\n    }\n    const data = {\n      elements: Object.values(elementsBySite),\n    };\n    Craft.sendActionRequest('POST', 'app/render-elements', {data}).then(\n      ({data}) => {\n        const instances = data.elements[elementId] || {};\n        for (let key of Object.keys(instances)) {\n          const $element = $elements.eq(key);\n          const $replacement = $(instances[key]);\n          for (let attribute of $replacement[0].attributes) {\n            if (attribute.name === 'class') {\n              $element.addClass(attribute.value);\n            } else {\n              $element.attr(attribute.name, attribute.value);\n            }\n          }\n          const $actions = $element\n            .find(\n              '> .chip-content .chip-actions,> .card-actions-container .card-actions'\n            )\n            .detach();\n          const $inputs = $element.find('input,button').detach();\n          $element.html($replacement.html());\n\n          if ($actions.length) {\n            const $oldStatus = $actions.find('span.status');\n            const $newStatus = $replacement.find('span.status');\n\n            if (\n              $oldStatus.length &&\n              $newStatus.length &&\n              $oldStatus[0].classList !== $newStatus[0].classList\n            ) {\n              $actions.find('span.status').replaceWith($newStatus);\n            }\n\n            $element\n              .find(\n                '> .chip-content .chip-actions,> .card-actions-container .card-actions'\n              )\n              .replaceWith($actions);\n          }\n          if ($inputs.length) {\n            $inputs.appendTo($element);\n          }\n        }\n        Craft.cp.elementThumbLoader.load($elements);\n      }\n    );\n  },\n\n  refreshComponentInstances(type, id) {\n    const $chips = $(\n      `div.chip[data-type=\"${$.escapeSelector(\n        type\n      )}\"][data-id=\"${id}\"][data-settings]`\n    );\n    if (!$chips.length) {\n      return;\n    }\n    const instances = [];\n    for (let i = 0; i < $chips.length; i++) {\n      instances.push($chips.eq(i).data('settings'));\n    }\n    const data = {\n      components: [{type, id, instances}],\n    };\n    Craft.sendActionRequest('POST', 'app/render-components', {data}).then(\n      ({data}) => {\n        for (let i = 0; i < data.components[type][id].length; i++) {\n          const $chip = $chips.eq(i);\n          const $replacement = $(data.components[type][id][i]);\n          for (let attribute of $replacement[0].attributes) {\n            if (attribute.name === 'class') {\n              $chip.addClass(attribute.value);\n            } else {\n              $chip.attr(attribute.name, attribute.value);\n            }\n          }\n          const $actions = $chip.find('.chip-actions').detach();\n          const $inputs = $chip.find('input,button').detach();\n          $chip.html($replacement.html());\n          if ($actions.length) {\n            $chip.find('.chip-actions').replaceWith($actions);\n          }\n          if ($inputs.length) {\n            $inputs.appendTo($chip);\n          }\n        }\n      }\n    );\n  },\n\n  /**\n   * Adds actions to a chip or card.\n   *\n   * @param {jQuery|HTMLElement} chip\n   * @param {Array} actions\n   */\n  addActionsToChip(chip, actions) {\n    if (!actions?.length) {\n      return;\n    }\n\n    const $actions = $(chip).find(\n      '> .chip-content > .chip-actions, > .card-actions-container > .card-actions'\n    );\n    let $actionMenuBtn = $actions.find('.action-btn');\n\n    if (!$actionMenuBtn.length) {\n      // the chip/card doesn't have an action menu yet, so add one\n      const menuId = `actions-${Math.floor(Math.random() * 1000000)}`;\n      const labelId = `${menuId}-label`;\n      const $label = $('<label/>', {\n        id: labelId,\n        class: 'visually-hidden',\n        text: Craft.t('app', 'Actions'),\n      }).appendTo($actions);\n      $actionMenuBtn = $('<button/>', {\n        class: 'btn action-btn',\n        type: 'button',\n        title: Craft.t('app', 'Actions'),\n        'aria-controls': menuId,\n        'aria-describedby': labelId,\n        'data-disclosure-trigger': 'true',\n      }).insertAfter($label);\n      $('<div/>', {\n        id: menuId,\n        class: 'menu menu--disclosure',\n      }).insertAfter($actionMenuBtn);\n    }\n\n    const disclosureMenu = $actionMenuBtn\n      .disclosureMenu()\n      .data('disclosureMenu');\n\n    const safeActions = actions.filter((a) => !a.destructive);\n    const destructiveActions = actions.filter((a) => a.destructive);\n\n    if (safeActions.length) {\n      disclosureMenu.addItems(safeActions, disclosureMenu.addGroup());\n    }\n\n    if (destructiveActions.length) {\n      disclosureMenu.addItems(destructiveActions, disclosureMenu.addGroup());\n    }\n\n    Craft.initUiElements(disclosureMenu.$container);\n  },\n\n  /**\n   * Submits a form.\n   * @param {Object} $form\n   * @param {Object} [options]\n   * @param {string} [options.action] The `action` param value override\n   * @param {string} [options.redirect] The `redirect` param value override\n   * @param {string} [options.confirm] A confirmation message that should be shown to the user before submit\n   * @param {Object} [options.params] Additional params that should be added to the form, defined as name/value pairs\n   * @param {Object} [options.data] Additional data to be passed to the submit event\n   * @param {boolean} [options.retainScroll] Whether the scroll position should be stored and reapplied on the next page load\n   * @param {boolean} [options.requireElevatedSession] Whether an elevated session is required\n   */\n  submitForm: function ($form, options) {\n    if (typeof options === 'undefined') {\n      options = {};\n    }\n\n    if (options.confirm && !confirm(options.confirm)) {\n      return;\n    }\n\n    if (options.requireElevatedSession) {\n      Craft.elevatedSessionManager.requireElevatedSession(() => {\n        this._submitFormInternal($form, options);\n      });\n    } else {\n      this._submitFormInternal($form, options);\n    }\n  },\n\n  _submitFormInternal($form, options) {\n    const namespace = options.namespace ?? null;\n\n    if (options.action) {\n      $('<input/>', {\n        type: 'hidden',\n        name: this.namespaceInputName('action', namespace),\n        val: options.action,\n      }).appendTo($form);\n    }\n\n    if (options.redirect) {\n      $('<input/>', {\n        type: 'hidden',\n        name: this.namespaceInputName('redirect', namespace),\n        val: options.redirect,\n      }).appendTo($form);\n    }\n\n    if (options.params) {\n      for (let name in options.params) {\n        let value = options.params[name];\n        $('<input/>', {\n          type: 'hidden',\n          name: this.namespaceInputName(name, namespace),\n          val: value,\n        }).appendTo($form);\n      }\n    }\n\n    if (options.retainScroll) {\n      this.setLocalStorage('scrollY', window.scrollY);\n    }\n\n    $form.trigger($.extend({type: 'submit'}, options.data));\n  },\n\n  /**\n   * Traps focus within a container, so when focus is tabbed out of it, it’s cycled back into it.\n   * @param {Object} container\n   */\n  trapFocusWithin: function (container) {\n    Garnish.trapFocusWithin(container);\n  },\n\n  /**\n   * Sets focus to the first focusable element within a container.\n   * @param {Object} container\n   */\n  setFocusWithin: function (container) {\n    Garnish.setFocusWithin(container);\n  },\n\n  /**\n   * Reduces an input’s value to characters that match the given regex pattern.\n   * @param {jQuery|HTMLElement} input\n   * @param {RegExp} regex\n   */\n  filterInputVal: function (input, regex) {\n    const $input = $(input);\n    const val = $input.val();\n    let selectionStart = $input[0].selectionStart;\n    let newVal = '';\n    for (let i = 0; i < val.length; i++) {\n      if (val[i].match(regex)) {\n        newVal += val[i];\n      } else if (i < selectionStart) {\n        selectionStart--;\n      }\n    }\n    if (newVal !== val) {\n      $input.val(newVal);\n      $input[0].setSelectionRange(selectionStart, selectionStart);\n    }\n  },\n\n  /**\n   * Reduces an input’s value to numeric characters.\n   * @param {jQuery|HTMLElement} input\n   * @param {RegExp} regex\n   */\n  filterNumberInputVal: function (input) {\n    this.filterInputVal(input, /[0-9.,\\-]/);\n  },\n\n  /**\n   * Sets/removes attributes on an element.\n   *\n   * Attributes set to `null` or `false` will be removed.\n   *\n   * @param {(jQuery|HTMLElement|string)} element\n   * @param {Object} attributes\n   */\n  setElementAttributes: function (element, attributes) {\n    const $element = $(element);\n\n    for (let name in attributes) {\n      if (!attributes.hasOwnProperty(name)) {\n        continue;\n      }\n\n      let value = attributes[name];\n\n      if (value === null || value === false) {\n        $element.removeAttr(name);\n      } else if (value === true) {\n        $element.attr(name, '');\n      } else if (Array.isArray(value) || $.isPlainObject(value)) {\n        if (Craft.dataAttributes.includes(name)) {\n          // Make sure it's an object\n          value = Object.assign({}, value);\n          for (let n in value) {\n            if (!value.hasOwnProperty(n)) {\n              continue;\n            }\n            let subValue = value[n];\n            if (subValue === null || subValue === false) {\n              continue;\n            }\n            if ($.isPlainObject(subValue) || Array.isArray(subValue)) {\n              subValue = JSON.stringify(subValue);\n            } else if (subValue === true) {\n              subValue = '';\n            } else {\n              subValue = this.escapeHtml(subValue);\n            }\n            $element.attr(`${name}-${n}`, subValue);\n          }\n        } else if (name === 'class') {\n          // Make sure it's an array\n          if ($.isPlainObject(value)) {\n            value = Object.values(value);\n          }\n          for (let c of value) {\n            $element.addClass(c);\n          }\n        } else if (name === 'style') {\n          $element.css(value);\n        } else {\n          $element.attr(name, JSON.stringify(value));\n        }\n      } else {\n        $element.attr(name, this.escapeHtml(value));\n      }\n    }\n  },\n\n  isVisible: function () {\n    return (\n      typeof document.visibilityState === 'undefined' ||\n      document.visibilityState === 'visible'\n    );\n  },\n\n  useMobileStyles: function () {\n    return Garnish.isMobileBrowser() || document.body.clientWidth < 600;\n  },\n});\n\n// -------------------------------------------\n//  Broadcast channel\n// -------------------------------------------\n\nCraft.pageId = Craft.uuid();\n\nif (typeof BroadcastChannel !== 'undefined') {\n  const channelName = `CraftCMS:${Craft.appId}`;\n  Craft.broadcaster = new BroadcastChannel(channelName);\n  Craft.messageReceiver = new BroadcastChannel(channelName);\n\n  Craft.broadcaster.addEventListener('message', (ev) => {\n    switch (ev.data.event) {\n      case 'beforeTrackJobProgress':\n        Craft.cp.cancelJobTracking();\n        break;\n\n      case 'trackJobProgress':\n        Craft.cp.setJobData(ev.data.jobData);\n\n        if (Craft.cp.jobInfo.length) {\n          // Check again after a longer delay than usual,\n          // as it looks like another browser tab is driving for now\n          const delay = Craft.cp.getNextJobDelay() + 1000;\n          Craft.cp.trackJobProgress(delay);\n        }\n\n        break;\n    }\n  });\n\n  Craft.messageReceiver.addEventListener('message', (ev) => {\n    if (ev.data.event === 'saveElement') {\n      Craft.refreshElementInstances(ev.data.id);\n    }\n  });\n}\n\n// -------------------------------------------\n//  Custom jQuery plugins\n// -------------------------------------------\n\n$.extend($.fn, {\n  animateLeft: function (pos, duration, easing, complete) {\n    if (Craft.orientation === 'ltr') {\n      return this.velocity({left: pos}, duration, easing, complete);\n    } else {\n      return this.velocity({right: pos}, duration, easing, complete);\n    }\n  },\n\n  animateRight: function (pos, duration, easing, complete) {\n    if (Craft.orientation === 'ltr') {\n      return this.velocity({right: pos}, duration, easing, complete);\n    } else {\n      return this.velocity({left: pos}, duration, easing, complete);\n    }\n  },\n\n  /**\n   * Disables elements by adding a .disabled class and preventing them from receiving focus.\n   */\n  disable: function () {\n    return this.each(function () {\n      var $elem = $(this);\n      $elem.addClass('disabled');\n\n      if ($elem.data('activatable')) {\n        $elem.removeAttr('tabindex');\n      }\n    });\n  },\n\n  /**\n   * Enables elements by removing their .disabled class and allowing them to receive focus.\n   */\n  enable: function () {\n    return this.each(function () {\n      var $elem = $(this);\n      $elem.removeClass('disabled');\n\n      if ($elem.data('activatable')) {\n        $elem.attr('tabindex', '0');\n      }\n    });\n  },\n\n  /**\n   * Sets the element as the container of a grid.\n   */\n  grid: function () {\n    return this.each(function () {\n      var $container = $(this),\n        settings = {};\n\n      if ($container.data('item-selector')) {\n        settings.itemSelector = $container.data('item-selector');\n      }\n      if ($container.data('cols')) {\n        settings.cols = parseInt($container.data('cols'));\n      }\n      if ($container.data('max-cols')) {\n        settings.maxCols = parseInt($container.data('max-cols'));\n      }\n      if ($container.data('min-col-width')) {\n        settings.minColWidth = parseInt($container.data('min-col-width'));\n      }\n      if ($container.data('mode')) {\n        settings.mode = $container.data('mode');\n      }\n      if ($container.data('fill-mode')) {\n        settings.fillMode = $container.data('fill-mode');\n      }\n      if ($container.data('col-class')) {\n        settings.colClass = $container.data('col-class');\n      }\n      if ($container.data('snap-to-grid')) {\n        settings.snapToGrid = !!$container.data('snap-to-grid');\n      }\n\n      new Craft.Grid(this, settings);\n    });\n  },\n\n  infoicon: function () {\n    return this.each(function () {\n      new Craft.InfoIcon(this);\n    });\n  },\n\n  /**\n   * Sets the element as a container for a checkbox select.\n   */\n  checkboxselect: function () {\n    return this.each(function () {\n      if (!$.data(this, 'checkboxSelect')) {\n        new Garnish.CheckboxSelect(this);\n      }\n    });\n  },\n\n  /**\n   * Sets the element as a field toggle trigger.\n   */\n  fieldtoggle: function () {\n    return this.each(function () {\n      if (!$.data(this, 'fieldtoggle')) {\n        new Craft.FieldToggle(this);\n      }\n    });\n  },\n\n  lightswitch: function (settings, settingName, settingValue) {\n    // param mapping\n    if (settings === 'settings') {\n      if (typeof settingName === 'string') {\n        settings = {};\n        settings[settingName] = settingValue;\n      } else {\n        settings = settingName;\n      }\n\n      return this.each(function () {\n        var obj = $.data(this, 'lightswitch');\n        if (obj) {\n          obj.setSettings(settings);\n        }\n      });\n    } else {\n      if (!$.isPlainObject(settings)) {\n        settings = {};\n      }\n\n      return this.each(function () {\n        var thisSettings = $.extend({}, settings);\n\n        if (Garnish.hasAttr(this, 'data-value')) {\n          thisSettings.value = $(this).attr('data-value');\n        }\n\n        if (Garnish.hasAttr(this, 'data-indeterminate-value')) {\n          thisSettings.indeterminateValue = $(this).attr(\n            'data-indeterminate-value'\n          );\n        }\n\n        if (!$.data(this, 'lightswitch')) {\n          new Craft.LightSwitch(this, thisSettings);\n        }\n      });\n    }\n  },\n\n  nicetext: function () {\n    return this.each(function () {\n      if (!$.data(this, 'nicetext')) {\n        new Garnish.NiceText(this);\n      }\n    });\n  },\n\n  formsubmit: function () {\n    // Secondary form submit buttons\n    return this.on('activate', function (ev) {\n      const $btn = $(ev.currentTarget);\n      const params = $btn.data('params') || {};\n      if ($btn.data('param')) {\n        params[$btn.data('param')] = $btn.data('value');\n      }\n\n      let $form;\n      let namespace = null;\n\n      if ($btn.attr('data-form') === 'false') {\n        $form = Craft.createForm()\n          .addClass('hidden')\n          .append(Craft.getCsrfInput())\n          .appendTo(Garnish.$bod);\n      } else {\n        let $anchor = $btn.closest('.menu--disclosure').length\n          ? $btn.closest('.menu--disclosure').data('trigger').$trigger\n          : $btn.data('menu')\n            ? $btn.data('menu').$anchor\n            : $btn;\n\n        let isFullPage = $anchor.parents('.slideout').length == 0;\n\n        if (isFullPage) {\n          $form = $anchor.attr('data-form')\n            ? $('#' + $anchor.attr('data-form'))\n            : $btn.attr('data-form')\n              ? $('#' + $btn.attr('data-form'))\n              : $anchor.closest('form');\n        } else {\n          $form = $anchor.closest('form');\n          namespace = $anchor.parents('.slideout').data('cpScreen').namespace;\n        }\n\n        if ($anchor.data('disclosureMenu')) {\n          $anchor.data('disclosureMenu').hide();\n        }\n      }\n\n      Craft.submitForm($form, {\n        confirm: $btn.data('confirm'),\n        action: $btn.data('action'),\n        redirect: $btn.data('redirect'),\n        requireElevatedSession: Garnish.hasAttr(\n          $btn,\n          'data-require-elevated-session'\n        ),\n        namespace: namespace,\n        params: params,\n        data: $.extend(\n          {\n            customTrigger: $btn,\n          },\n          $btn.data('event-data')\n        ),\n      });\n    });\n  },\n\n  menubtn: function () {\n    return this.each(function () {\n      var $btn = $(this);\n\n      if (!$btn.data('menubtn') && $btn.next().hasClass('menu')) {\n        var settings = {};\n\n        if ($btn.data('menu-anchor')) {\n          settings.menuAnchor = $btn.data('menu-anchor');\n        }\n\n        new Garnish.MenuBtn($btn, settings);\n      }\n    });\n  },\n\n  disclosureMenu: function (settings) {\n    return this.each(function () {\n      const $trigger = $(this);\n      // Only instantiate if it's not already a disclosure trigger, and it references a disclosure content\n      if (!$trigger.data('trigger') && $trigger.attr('aria-controls')) {\n        new Garnish.DisclosureMenu($trigger, settings);\n      }\n    });\n  },\n\n  datetime: function () {\n    return this.each(function () {\n      let $wrapper = $(this);\n      let $inputs = $wrapper.find('input:not([name$=\"[timezone]\"])');\n      let checkValue = () => {\n        let hasValue = false;\n        for (let i = 0; i < $inputs.length; i++) {\n          if ($inputs.eq(i).val() && !$inputs.eq(i).is(':disabled')) {\n            hasValue = true;\n            break;\n          }\n        }\n        if (hasValue) {\n          if (!$wrapper.children('.clear-btn').length) {\n            let $btn = $('<button/>', {\n              type: 'button',\n              class: 'clear-btn',\n              title: Craft.t('app', 'Clear'),\n              'aria-label': Craft.t('app', 'Clear'),\n            })\n              .appendTo($wrapper)\n              .on('click', () => {\n                for (let i = 0; i < $inputs.length; i++) {\n                  $inputs.eq(i).val('').trigger('input').trigger('change');\n                }\n                $btn.remove();\n                $inputs.first().filter('[type=\"text\"]').focus();\n              });\n          }\n        } else {\n          $wrapper.children('.clear-btn').remove();\n        }\n      };\n      $inputs.on('change', checkValue);\n      checkValue();\n    });\n  },\n\n  datetimeinput: function () {\n    return this.each(function () {\n      const $input = $(this);\n      const checkValue = () => {\n        if ($input.val() === '') {\n          $input.addClass('empty-value');\n        } else {\n          $input.removeClass('empty-value');\n        }\n      };\n      $input.on('input', checkValue);\n      checkValue();\n    });\n  },\n});\n\n// Override Garnish.NiceText.charsLeftHtml() to be more accessible\nGarnish.NiceText.charsLeftHtml = (charsLeft) => {\n  return Craft.t(\n    'app',\n    '<span class=\"visually-hidden\">Characters left:</span> {chars, number}',\n    {\n      chars: charsLeft,\n    }\n  );\n};\n\nGarnish.$doc.ready(function () {\n  Craft.initUiElements();\n});\n","/* [@simplewebauthn/browser@7.4.0] */\nfunction utf8StringToBuffer(value) {\n    return new TextEncoder().encode(value);\n}\n\nfunction bufferToBase64URLString(buffer) {\n    const bytes = new Uint8Array(buffer);\n    let str = '';\n    for (const charCode of bytes) {\n        str += String.fromCharCode(charCode);\n    }\n    const base64String = btoa(str);\n    return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n    const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n    const padLength = (4 - (base64.length % 4)) % 4;\n    const padded = base64.padEnd(base64.length + padLength, '=');\n    const binary = atob(padded);\n    const buffer = new ArrayBuffer(binary.length);\n    const bytes = new Uint8Array(buffer);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n    return (window?.PublicKeyCredential !== undefined && typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n    const { id } = descriptor;\n    return {\n        ...descriptor,\n        id: base64URLStringToBuffer(id),\n        transports: descriptor.transports,\n    };\n}\n\nfunction isValidDomain(hostname) {\n    return (hostname === 'localhost' || /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n    code;\n    constructor({ message, code, cause, name, }) {\n        super(message, { cause });\n        this.name = name ?? cause.name;\n        this.code = code;\n    }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n    const { publicKey } = options;\n    if (!publicKey) {\n        throw Error('options was missing required publicKey property');\n    }\n    if (error.name === 'AbortError') {\n        if (options.signal instanceof AbortSignal) {\n            return new WebAuthnError({\n                message: 'Registration ceremony was sent an abort signal',\n                code: 'ERROR_CEREMONY_ABORTED',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'ConstraintError') {\n        if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n            return new WebAuthnError({\n                message: 'Discoverable credentials were required but no available authenticator supported it',\n                code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n                cause: error,\n            });\n        }\n        else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n            return new WebAuthnError({\n                message: 'User verification was required but no available authenticator supported it',\n                code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'InvalidStateError') {\n        return new WebAuthnError({\n            message: 'The authenticator was previously registered',\n            code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n            cause: error\n        });\n    }\n    else if (error.name === 'NotAllowedError') {\n        return new WebAuthnError({\n            message: error.message,\n            code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n            cause: error,\n        });\n    }\n    else if (error.name === 'NotSupportedError') {\n        const validPubKeyCredParams = publicKey.pubKeyCredParams.filter(param => param.type === 'public-key');\n        if (validPubKeyCredParams.length === 0) {\n            return new WebAuthnError({\n                message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n                code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n                cause: error,\n            });\n        }\n        return new WebAuthnError({\n            message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n            code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n            cause: error,\n        });\n    }\n    else if (error.name === 'SecurityError') {\n        const effectiveDomain = window.location.hostname;\n        if (!isValidDomain(effectiveDomain)) {\n            return new WebAuthnError({\n                message: `${window.location.hostname} is an invalid domain`,\n                code: 'ERROR_INVALID_DOMAIN',\n                cause: error\n            });\n        }\n        else if (publicKey.rp.id !== effectiveDomain) {\n            return new WebAuthnError({\n                message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n                code: 'ERROR_INVALID_RP_ID',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'TypeError') {\n        if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n            return new WebAuthnError({\n                message: 'User ID was not between 1 and 64 characters',\n                code: 'ERROR_INVALID_USER_ID_LENGTH',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'UnknownError') {\n        return new WebAuthnError({\n            message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n            code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n            cause: error,\n        });\n    }\n    return error;\n}\n\nclass WebAuthnAbortService {\n    controller;\n    createNewAbortSignal() {\n        if (this.controller) {\n            const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n            abortError.name = 'AbortError';\n            this.controller.abort(abortError);\n        }\n        const newController = new AbortController();\n        this.controller = newController;\n        return newController.signal;\n    }\n}\nconst webauthnAbortService = new WebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n    if (!attachment) {\n        return;\n    }\n    if (attachments.indexOf(attachment) < 0) {\n        return;\n    }\n    return attachment;\n}\n\nasync function startRegistration(creationOptionsJSON) {\n    if (!browserSupportsWebAuthn()) {\n        throw new Error('WebAuthn is not supported in this browser');\n    }\n    const publicKey = {\n        ...creationOptionsJSON,\n        challenge: base64URLStringToBuffer(creationOptionsJSON.challenge),\n        user: {\n            ...creationOptionsJSON.user,\n            id: utf8StringToBuffer(creationOptionsJSON.user.id),\n        },\n        excludeCredentials: creationOptionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n    };\n    const options = { publicKey };\n    options.signal = webauthnAbortService.createNewAbortSignal();\n    let credential;\n    try {\n        credential = (await navigator.credentials.create(options));\n    }\n    catch (err) {\n        throw identifyRegistrationError({ error: err, options });\n    }\n    if (!credential) {\n        throw new Error('Registration was not completed');\n    }\n    const { id, rawId, response, type } = credential;\n    let transports = undefined;\n    if (typeof response.getTransports === 'function') {\n        transports = response.getTransports();\n    }\n    let responsePublicKeyAlgorithm = undefined;\n    if (typeof response.getPublicKeyAlgorithm === 'function') {\n        responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n    }\n    let responsePublicKey = undefined;\n    if (typeof response.getPublicKey === 'function') {\n        const _publicKey = response.getPublicKey();\n        if (_publicKey !== null) {\n            responsePublicKey = bufferToBase64URLString(_publicKey);\n        }\n    }\n    let responseAuthenticatorData;\n    if (typeof response.getAuthenticatorData === 'function') {\n        responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n    }\n    return {\n        id,\n        rawId: bufferToBase64URLString(rawId),\n        response: {\n            attestationObject: bufferToBase64URLString(response.attestationObject),\n            clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n            transports,\n            publicKeyAlgorithm: responsePublicKeyAlgorithm,\n            publicKey: responsePublicKey,\n            authenticatorData: responseAuthenticatorData,\n        },\n        type,\n        clientExtensionResults: credential.getClientExtensionResults(),\n        authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n    };\n}\n\nfunction bufferToUTF8String(value) {\n    return new TextDecoder('utf-8').decode(value);\n}\n\nasync function browserSupportsWebAuthnAutofill() {\n    const globalPublicKeyCredential = window.PublicKeyCredential;\n    return (globalPublicKeyCredential.isConditionalMediationAvailable !== undefined &&\n        globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n    const { publicKey } = options;\n    if (!publicKey) {\n        throw Error('options was missing required publicKey property');\n    }\n    if (error.name === 'AbortError') {\n        if (options.signal instanceof AbortSignal) {\n            return new WebAuthnError({\n                message: 'Authentication ceremony was sent an abort signal',\n                code: 'ERROR_CEREMONY_ABORTED',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'NotAllowedError') {\n        return new WebAuthnError({\n            message: error.message,\n            code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n            cause: error,\n        });\n    }\n    else if (error.name === 'SecurityError') {\n        const effectiveDomain = window.location.hostname;\n        if (!isValidDomain(effectiveDomain)) {\n            return new WebAuthnError({\n                message: `${window.location.hostname} is an invalid domain`,\n                code: 'ERROR_INVALID_DOMAIN',\n                cause: error,\n            });\n        }\n        else if (publicKey.rpId !== effectiveDomain) {\n            return new WebAuthnError({\n                message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n                code: 'ERROR_INVALID_RP_ID',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'UnknownError') {\n        return new WebAuthnError({\n            message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n            code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n            cause: error,\n        });\n    }\n    return error;\n}\n\nasync function startAuthentication(requestOptionsJSON, useBrowserAutofill = false) {\n    if (!browserSupportsWebAuthn()) {\n        throw new Error('WebAuthn is not supported in this browser');\n    }\n    let allowCredentials;\n    if (requestOptionsJSON.allowCredentials?.length !== 0) {\n        allowCredentials = requestOptionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n    }\n    const publicKey = {\n        ...requestOptionsJSON,\n        challenge: base64URLStringToBuffer(requestOptionsJSON.challenge),\n        allowCredentials,\n    };\n    const options = {};\n    if (useBrowserAutofill) {\n        if (!(await browserSupportsWebAuthnAutofill())) {\n            throw Error('Browser does not support WebAuthn autofill');\n        }\n        const eligibleInputs = document.querySelectorAll(\"input[autocomplete*='webauthn']\");\n        if (eligibleInputs.length < 1) {\n            throw Error('No <input> with `\"webauthn\"` in its `autocomplete` attribute was detected');\n        }\n        options.mediation = 'conditional';\n        publicKey.allowCredentials = [];\n    }\n    options.publicKey = publicKey;\n    options.signal = webauthnAbortService.createNewAbortSignal();\n    let credential;\n    try {\n        credential = (await navigator.credentials.get(options));\n    }\n    catch (err) {\n        throw identifyAuthenticationError({ error: err, options });\n    }\n    if (!credential) {\n        throw new Error('Authentication was not completed');\n    }\n    const { id, rawId, response, type } = credential;\n    let userHandle = undefined;\n    if (response.userHandle) {\n        userHandle = bufferToUTF8String(response.userHandle);\n    }\n    return {\n        id,\n        rawId: bufferToBase64URLString(rawId),\n        response: {\n            authenticatorData: bufferToBase64URLString(response.authenticatorData),\n            clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n            signature: bufferToBase64URLString(response.signature),\n            userHandle,\n        },\n        type,\n        clientExtensionResults: credential.getClientExtensionResults(),\n        authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n    };\n}\n\nasync function platformAuthenticatorIsAvailable() {\n    if (!browserSupportsWebAuthn()) {\n        return false;\n    }\n    return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\n","/** global: Craft */\n/** global: Garnish */\nimport * as d3 from 'd3';\n\n/**\n * Craft Charts\n */\nCraft.charts = {};\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.DataTable\n */\nCraft.charts.DataTable = Garnish.Base.extend({\n  columns: null,\n  rows: null,\n\n  init: function (data) {\n    let columns = data.columns;\n    let rows = data.rows;\n\n    rows.forEach((d) => {\n      $.each(d, function (cellIndex) {\n        var column = columns[cellIndex];\n\n        var parseTime;\n\n        switch (column.type) {\n          case 'date':\n            parseTime = d3.timeParse('%Y-%m-%d');\n            d[cellIndex] = parseTime(d[cellIndex]);\n            break;\n\n          case 'datetime':\n            parseTime = d3.timeParse('%Y-%m-%d %H:00:00');\n            d[cellIndex] = parseTime(d[cellIndex]);\n            break;\n\n          case 'percent':\n            d[cellIndex] = d[cellIndex] / 100;\n            break;\n\n          case 'number':\n            d[cellIndex] = +d[cellIndex];\n            break;\n\n          default:\n          // do nothing\n        }\n      });\n    });\n\n    this.columns = columns;\n    this.rows = rows;\n  },\n});\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Tip\n */\n\nCraft.charts.Tip = Garnish.Base.extend({\n  $container: null,\n  $tip: null,\n\n  init: function ($container) {\n    this.$container = $container;\n\n    this.$tip = $('<div class=\"tooltip\"></div>').appendTo(this.$container);\n\n    this.hide();\n  },\n\n  setContent: function (html) {\n    this.$tip.html(html);\n  },\n\n  setPosition: function (position) {\n    this.$tip.css('left', `${position.left}px`);\n    this.$tip.css('top', `${position.top}px`);\n  },\n\n  show: function () {\n    this.$tip.css('display', 'block');\n  },\n\n  hide: function () {\n    this.$tip.css('display', 'none');\n  },\n});\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.BaseChart\n */\nCraft.charts.BaseChart = Garnish.Base.extend(\n  {\n    $container: null,\n    $chart: null,\n\n    chartBaseClass: 'cp-chart',\n    dataTable: null,\n\n    formatLocale: null,\n    timeFormatLocale: null,\n    orientation: null,\n\n    svg: null,\n    width: null,\n    height: null,\n\n    init: function (container, settings) {\n      this.$container = container;\n\n      this.setSettings(Craft.charts.BaseChart.defaults);\n      this.setSettings(settings);\n\n      var globalSettings = {\n        formats: window.d3Formats,\n        formatLocaleDefinition: window.d3FormatLocaleDefinition,\n        timeFormatLocaleDefinition: window.d3TimeFormatLocaleDefinition,\n      };\n\n      this.setSettings(globalSettings);\n\n      d3.select(window).on('resize', () => {\n        this.resize();\n      });\n    },\n\n    setSettings: function (settings, defaults) {\n      var baseSettings =\n        typeof this.settings === 'undefined' ? {} : this.settings;\n      this.settings = $.extend(true, {}, baseSettings, defaults, settings);\n    },\n\n    draw: function (dataTable, settings) {\n      // Settings and chart attributes\n\n      this.setSettings(settings);\n\n      this.dataTable = dataTable;\n      this.formatLocale = d3.formatLocale(this.settings.formatLocaleDefinition);\n      this.timeFormatLocale = d3.timeFormatLocale(\n        this.settings.timeFormatLocaleDefinition\n      );\n      this.orientation = this.settings.orientation;\n\n      // Set (or reset) the chart element\n\n      if (this.$chart) {\n        this.$chart.remove();\n      }\n\n      var className = this.chartBaseClass;\n\n      if (this.settings.chartClass) {\n        className += ' ' + this.settings.chartClass;\n      }\n\n      this.$chart = $(`<div class=\"${className}\" />`).appendTo(this.$container);\n    },\n\n    resize: function () {\n      this.draw(this.dataTable, this.settings);\n    },\n\n    onAfterDrawTicks: function () {\n      // White border for ticks' text\n      $('.tick', this.$chart).each(function (tickKey, tick) {\n        var $tickText = $('text', tick);\n\n        var $clone = $tickText.clone();\n        $clone.appendTo(tick);\n\n        $tickText.attr('stroke', '#ffffff');\n        $tickText.attr('stroke-width', 3);\n      });\n    },\n  },\n  {\n    defaults: {\n      formatLocaleDefinition: null,\n      timeFormatLocaleDefinition: null,\n      formats: {\n        numberFormat: ',.2f',\n        percentFormat: ',.2%',\n        currencyFormat: '$,.2f',\n        shortDateFormats: {\n          day: '%-m/%-d',\n          month: '%-m/%y',\n          year: '%Y',\n        },\n      },\n      margin: {top: 0, right: 0, bottom: 0, left: 0},\n      chartClass: null,\n      colors: ['#0594D1', '#DE3800', '#FF9A00', '#009802', '#9B009B'],\n    },\n  }\n);\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Area\n */\nCraft.charts.Area = Craft.charts.BaseChart.extend(\n  {\n    tip: null,\n    drawingArea: null,\n\n    init: function (container, settings) {\n      this.base(container, Craft.charts.Area.defaults);\n\n      this.setSettings(settings);\n    },\n\n    draw: function (dataTable, settings) {\n      this.base(dataTable, settings);\n\n      if (this.tip) {\n        this.tip = null;\n      }\n\n      var margin = this.getChartMargin();\n\n      this.width = this.$chart.width() - margin.left - margin.right;\n      this.height = this.$chart.height() - margin.top - margin.bottom;\n\n      // Append SVG to chart element\n\n      var svg = {\n        width: this.width + (margin.left + margin.right),\n        height: this.height + (margin.top + margin.bottom),\n        translateX: this.orientation !== 'rtl' ? margin.left : margin.right,\n        translateY: margin.top,\n      };\n\n      this.svg = d3\n        .select(this.$chart.get(0))\n        .append('svg')\n        .attr('width', svg.width)\n        .attr('height', svg.height);\n\n      this.drawingArea = this.svg\n        .append('g')\n        .attr('transform', `translate(${svg.translateX},${svg.translateY})`);\n\n      // Draw elements\n\n      this.drawTicks();\n      this.drawAxes();\n      this.drawChart();\n      this.drawTipTriggers();\n    },\n\n    drawTicks: function () {\n      // Draw X ticks\n\n      var x = this.getX(true);\n      var xTicks = 3;\n      var xAxis = d3\n        .axisBottom(x)\n        .tickFormat(this.getXFormatter())\n        .ticks(xTicks);\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'x ticks-axis')\n        .attr('transform', `translate(0, ${this.height})`)\n        .call(xAxis);\n\n      // Draw Y ticks\n\n      var y = this.getY();\n      var yTicks = 2;\n      var yAxis;\n\n      if (this.orientation !== 'rtl') {\n        yAxis = d3\n          .axisLeft(y)\n          .tickFormat(this.getYFormatter())\n          .tickValues(this.getYTickValues())\n          .ticks(yTicks);\n\n        this.drawingArea.append('g').attr('class', 'y ticks-axis').call(yAxis);\n      } else {\n        yAxis = d3\n          .axisRight(y)\n          .tickFormat(this.getYFormatter())\n          .tickValues(this.getYTickValues())\n          .ticks(yTicks);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'y ticks-axis')\n          .attr('transform', `translate(${this.width},0)`)\n          .call(yAxis);\n      }\n\n      // On after draw ticks\n\n      this.onAfterDrawTicks();\n    },\n\n    drawAxes: function () {\n      if (this.settings.xAxis.showAxis) {\n        var x = this.getX();\n        var xAxis = d3.axisBottom(x).ticks(0).tickSizeOuter(0);\n        this.drawingArea\n          .append('g')\n          .attr('class', 'x axis')\n          .attr('transform', `translate(0, ${this.height})`)\n          .call(xAxis);\n      }\n\n      if (this.settings.yAxis.showAxis) {\n        var y = this.getY();\n        var chartPadding = 0;\n        var yAxis;\n\n        if (this.orientation === 'rtl') {\n          yAxis = d3.axisLeft(y).ticks(0);\n          this.drawingArea\n            .append('g')\n            .attr('class', 'y axis')\n            .attr('transform', `translate(${this.width - chartPadding}, 0)`)\n            .call(yAxis);\n        } else {\n          yAxis = d3.axisRight(y).ticks(0);\n          this.drawingArea\n            .append('g')\n            .attr('class', 'y axis')\n            .attr('transform', `translate(${chartPadding}, 0)`)\n            .call(yAxis);\n        }\n      }\n    },\n\n    drawChart: function () {\n      var x = this.getX(true);\n      var y = this.getY();\n\n      // X & Y grid lines\n\n      if (this.settings.xAxis.gridlines) {\n        var xLineAxis = d3.axisBottom(x);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'x grid-line')\n          .attr('transform', `translate(0,${this.height})`)\n          .call(xLineAxis.tickSize(-this.height, 0, 0).tickFormat(''));\n      }\n\n      var yTicks = 2;\n\n      if (this.settings.yAxis.gridlines) {\n        var yLineAxis = d3.axisLeft(y);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'y grid-line')\n          .attr('transform', 'translate(0 , 0)')\n          .call(\n            yLineAxis\n              .tickSize(-this.width, 0)\n              .tickFormat('')\n              .tickValues(this.getYTickValues())\n              .ticks(yTicks)\n          );\n      }\n\n      // Line\n\n      var line = d3\n        .line()\n        .x(function (d) {\n          return x(d[0]);\n        })\n        .y(function (d) {\n          return y(d[1]);\n        });\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'chart-line')\n        .append('path')\n        .datum(this.dataTable.rows)\n        .style('fill', 'none')\n        .style('stroke', this.settings.colors[0])\n        .style('stroke-width', '3px')\n        .attr('d', line);\n\n      // Area\n\n      var area = d3\n        .area()\n        .x(function (d) {\n          return x(d[0]);\n        })\n        .y0(this.height)\n        .y1(function (d) {\n          return y(d[1]);\n        });\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'chart-area')\n        .append('path')\n        .datum(this.dataTable.rows)\n        .style('fill', this.settings.colors[0])\n        .style('fill-opacity', '0.3')\n        .attr('d', area);\n\n      // Plots\n\n      if (this.settings.plots) {\n        this.drawingArea\n          .append('g')\n          .attr('class', 'plots')\n          .selectAll('circle')\n          .data(this.dataTable.rows)\n          .enter()\n          .append('circle')\n          .style('fill', this.settings.colors[0])\n          .attr('class', (d, index) => `plot plot-${index}`)\n          .attr('r', 4)\n          .attr('cx', (d) => x(d[0]))\n          .attr('cy', (d) => y(d[1]));\n      }\n    },\n\n    drawTipTriggers: function () {\n      if (this.settings.tips) {\n        if (!this.tip) {\n          this.tip = new Craft.charts.Tip(this.$chart);\n        }\n\n        // Define xAxisTickInterval\n\n        var chartMargin = this.getChartMargin();\n        var tickSizeOuter = 6;\n        var length =\n          this.drawingArea.select('.x path.domain').node().getTotalLength() -\n          chartMargin.left -\n          chartMargin.right -\n          tickSizeOuter * 2;\n        var xAxisTickInterval = length / (this.dataTable.rows.length - 1);\n\n        // Tip trigger width\n\n        var tipTriggerWidth = Math.max(0, xAxisTickInterval);\n\n        // Draw triggers\n\n        var x = this.getX(true);\n        var y = this.getY();\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'tip-triggers')\n          .selectAll('rect')\n          .data(this.dataTable.rows)\n          .enter()\n          .append('rect')\n          .attr('class', (d, index) => `tip-trigger tip-trigger-${index}`)\n          .attr('data-index', (d, index) => index)\n          .style('fill', 'transparent')\n          .style('fill-opacity', '1')\n          .attr('width', tipTriggerWidth)\n          .attr('height', this.height)\n          .attr('x', (d) => x(d[0]) - tipTriggerWidth / 2)\n          .on('mouseover', (event, dataValue) => {\n            const index = d3.select(event.target).attr('data-index');\n\n            // Expand plot\n            this.drawingArea.select('.plot-' + index).attr('r', 5);\n\n            // Set tip content\n\n            var $content = $('<div />');\n            var $xValue = $('<div class=\"x-value\" />').appendTo($content);\n            var $yValue = $('<div class=\"y-value\" />').appendTo($content);\n\n            $xValue.html(this.getXFormatter()(dataValue[0]));\n            $yValue.html(this.getYFormatter()(dataValue[1]));\n\n            var content = $content.get(0);\n\n            this.tip.setContent(content);\n\n            // Set tip position\n\n            var margin = this.getChartMargin();\n\n            var offset = 24;\n            var top = y(dataValue[1]) + offset;\n            var left;\n\n            if (this.orientation !== 'rtl') {\n              left = x(dataValue[0]) + margin.left + offset;\n\n              var calcLeft =\n                this.$chart.offset().left + left + this.tip.$tip.width();\n              var maxLeft =\n                this.$chart.offset().left + this.$chart.width() - offset;\n\n              if (calcLeft > maxLeft) {\n                left = x(dataValue[0]) - (this.tip.$tip.width() + offset);\n              }\n            } else {\n              left =\n                x(dataValue[0]) -\n                (this.tip.$tip.width() + margin.left + offset);\n            }\n\n            if (left < 0) {\n              left = x(dataValue[0]) + margin.left + offset;\n            }\n\n            var position = {\n              top: top,\n              left: left,\n            };\n\n            this.tip.setPosition(position);\n\n            // Show tip\n\n            this.tip.show();\n          })\n          .on('mouseout', (event, dataValue) => {\n            const index = d3.select(event.target).attr('data-index');\n\n            // Unexpand Plot\n            this.drawingArea.select('.plot-' + index).attr('r', 4);\n\n            // Hide tip\n            this.tip.hide();\n          });\n      }\n    },\n\n    getChartMargin: function () {\n      var margin = this.settings.margin;\n\n      // Estimate the max width of y ticks and set it as the left margin\n\n      var values = this.getYTickValues();\n      var yTicksMaxWidth = 0;\n\n      $.each(values, (key, value) => {\n        var characterWidth = 8;\n\n        var formatter = this.getYFormatter();\n\n        var formattedValue = formatter(value);\n        var computedTickWidth = formattedValue.length * characterWidth;\n\n        if (computedTickWidth > yTicksMaxWidth) {\n          yTicksMaxWidth = computedTickWidth;\n        }\n      });\n\n      yTicksMaxWidth += 10;\n\n      margin.left = yTicksMaxWidth;\n\n      return margin;\n    },\n\n    getX: function (padded) {\n      var xDomainMin = d3.min(this.dataTable.rows, function (d) {\n        return d[0];\n      });\n\n      var xDomainMax = d3.max(this.dataTable.rows, function (d) {\n        return d[0];\n      });\n\n      var xDomain = [xDomainMin, xDomainMax];\n\n      if (this.orientation === 'rtl') {\n        xDomain = [xDomainMax, xDomainMin];\n      }\n\n      var left = 0;\n      var right = 0;\n\n      if (padded) {\n        left = 0;\n        right = 0;\n      }\n\n      var x = d3.scaleTime().range([left, this.width - right]);\n\n      x.domain(xDomain);\n\n      return x;\n    },\n\n    getY: function () {\n      var yDomain = [0, this.getYMaxValue()];\n\n      var y = d3.scaleLinear().range([this.height, 0]);\n\n      y.domain(yDomain);\n\n      return y;\n    },\n\n    getXFormatter: function () {\n      var formatter;\n\n      if (this.settings.xAxis.formatter !== $.noop) {\n        formatter = this.settings.xAxis.formatter(this);\n      } else {\n        formatter = Craft.charts.utils.getTimeFormatter(\n          this.timeFormatLocale,\n          this.settings\n        );\n      }\n\n      return formatter;\n    },\n\n    getYFormatter: function () {\n      var formatter;\n\n      if (this.settings.yAxis.formatter !== $.noop) {\n        formatter = this.settings.yAxis.formatter(this);\n      } else {\n        formatter = Craft.charts.utils.getNumberFormatter(\n          this.formatLocale,\n          this.dataTable.columns[1].type,\n          this.settings\n        );\n      }\n\n      return formatter;\n    },\n\n    getYMaxValue: function () {\n      let max = d3.max(this.dataTable.rows, (d) => d[1]);\n\n      if (max === 0) {\n        max = 1;\n      }\n\n      return max;\n    },\n\n    getYTickValues: function () {\n      var maxValue = this.getYMaxValue();\n\n      if (maxValue > 1) {\n        return [maxValue / 2, maxValue];\n      } else {\n        return [0, maxValue];\n      }\n    },\n  },\n  {\n    defaults: {\n      chartClass: 'area',\n      margin: {top: 25, right: 5, bottom: 25, left: 0},\n      plots: true,\n      tips: true,\n      xAxis: {\n        gridlines: false,\n        showAxis: true,\n        formatter: $.noop,\n      },\n      yAxis: {\n        gridlines: true,\n        showAxis: false,\n        formatter: $.noop,\n      },\n    },\n  }\n);\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Utils\n */\nCraft.charts.utils = {\n  getDuration: function (seconds) {\n    var secondsNum = parseInt(seconds, 10);\n\n    var duration = {\n      hours: Math.floor(secondsNum / 3600),\n      minutes: Math.floor((secondsNum - duration.hours * 3600) / 60),\n      seconds: secondsNum - duration.hours * 3600 - duration.minutes * 60,\n    };\n\n    if (duration.hours < 10) {\n      duration.hours = `0${duration.hours}`;\n    }\n\n    if (duration.minutes < 10) {\n      duration.minutes = `0${duration.minutes}`;\n    }\n\n    if (duration.seconds < 10) {\n      duration.seconds = `0${duration.seconds}`;\n    }\n\n    return `${duration.hours}:${duration.minutes}:${duration.seconds}`;\n  },\n\n  getTimeFormatter: function (timeFormatLocale, chartSettings) {\n    switch (chartSettings.dataScale) {\n      case 'year':\n        return timeFormatLocale.format('%Y');\n\n      case 'month':\n        return timeFormatLocale.format(\n          chartSettings.formats.shortDateFormats.month\n        );\n\n      case 'hour':\n        return timeFormatLocale.format(\n          `${chartSettings.formats.shortDateFormats.day} %H:00:00`\n        );\n\n      default:\n        return timeFormatLocale.format(\n          chartSettings.formats.shortDateFormats.day\n        );\n    }\n  },\n\n  getNumberFormatter: function (formatLocale, type, chartSettings) {\n    switch (type) {\n      case 'currency':\n        return formatLocale.format(chartSettings.formats.currencyFormat);\n\n      case 'percent':\n        return formatLocale.format(chartSettings.formats.percentFormat);\n\n      case 'time':\n        return Craft.charts.utils.getDuration;\n\n      case 'number':\n        return formatLocale.format(chartSettings.formats.numberFormat);\n    }\n  },\n};\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","/** global: Craft */\n/** global: Garnish */\nimport {\n  browserSupportsWebAuthn,\n  platformAuthenticatorIsAvailable,\n} from '@simplewebauthn/browser';\n\n/**\n * Elevated Session Manager\n */\nCraft.ElevatedSessionManager = Garnish.Base.extend(\n  {\n    fetchingTimeout: false,\n\n    loginModal: null,\n    showingLoginModal: false,\n\n    onSuccess: null,\n    onCancel: null,\n    success: false,\n\n    /**\n     * @callback requireElevatedSessionCallback\n     */\n    /**\n     * Requires that the user has an elevated session.\n     *\n     * @param {requireElevatedSessionCallback} onSuccess The callback function that should be called once the user has an elevated session\n     * @param {requireElevatedSessionCallback} [onCancel] The callback function that should be called if establishing an elevated session is cancelled\n     * @param {number} [minSafeElevatedSessionTimeout] The minimum amount of time that must be remaining on an existing elevated session\n     * (in seconds), for it to be considered safe. (Defaults to 5.)\n     */\n    async requireElevatedSession(\n      onSuccess,\n      onCancel,\n      minSafeElevatedSessionTimeout\n    ) {\n      this.onSuccess = onSuccess;\n      this.onCancel = onCancel;\n\n      // Check the time remaining on the user’s elevated session (if any)\n      this.fetchingTimeout = true;\n\n      let data;\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'users/get-elevated-session-timeout'\n        );\n        data = response.data;\n      } finally {\n        this.fetchingTimeout = false;\n      }\n\n      if (\n        data.timeout === false ||\n        data.timeout >=\n          (minSafeElevatedSessionTimeout ||\n            Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout)\n      ) {\n        this.onSuccess();\n      } else {\n        // Show the login modal\n        this.showLoginModal();\n      }\n    },\n\n    /**\n     * Shows the login modal.\n     */\n    async showLoginModal() {\n      if (this.showingLoginModal) {\n        return;\n      }\n\n      this.showingLoginModal = true;\n\n      if (this.loginModal) {\n        this.loginModal.destroy();\n      }\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'users/login-modal',\n        {\n          data: {\n            email: Craft.userEmail,\n            forElevatedSession: true,\n          },\n        }\n      );\n      const $container = $(data.html);\n\n      this.loginModal = new Garnish.Modal($container, {\n        closeOtherModals: false,\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        shadeClass: 'modal-shade dark login-modal-shade',\n        onFadeIn: async () => {\n          Craft.initUiElements($container);\n          new Craft.LoginForm($container.find('.login-container'), {\n            showPasskeyBtn: Craft.userHasPasskeys,\n            onLogin: () => {\n              this.success = true;\n              this.loginModal.hide();\n            },\n          });\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n        },\n        onFadeOut: () => {\n          this.loginModal.destroy();\n          this.loginModal = null;\n        },\n        onHide: () => {\n          this.showingLoginModal = false;\n          if (this.success) {\n            this.onSuccess();\n          } else if (this.onCancel) {\n            this.onCancel();\n          }\n        },\n      });\n    },\n  },\n  {\n    minSafeElevatedSessionTimeout: 5,\n  }\n);\n\n// Instantiate it\nCraft.elevatedSessionManager = new Craft.ElevatedSessionManager();\n","/** global: Craft */\nimport {\n  browserSupportsWebAuthn,\n  platformAuthenticatorIsAvailable,\n  startAuthentication,\n} from '@simplewebauthn/browser';\n\n/** global: Garnish */\nCraft.LoginForm = Garnish.Base.extend(\n  {\n    $container: null,\n    $form: null,\n    $usernameInput: null,\n    $passwordInput: null,\n    $rememberMeCheckbox: null,\n    $forgotPasswordLink: null,\n    $submitBtn: null,\n    submitBtn: null,\n    $errors: null,\n    $altMethodContainer: null,\n    $passkeyBtn: null,\n\n    modal: null,\n    resetPasswordForm: null,\n    validateOnInput: false,\n\n    async init(container, settings) {\n      this.$container = $(container);\n      this.$form = this.$container.find('.login-form');\n      this.$usernameInput = this.$form.find('.login-username');\n      this.$passwordInput = this.$form.find('.login-password');\n      this.$rememberMeCheckbox = this.$form.find('.login-remember-me');\n      this.$forgotPasswordLink = this.$form.find('.login-forgot-password');\n      this.$submitBtn = this.$form.find('button.submit');\n      this.$errors = this.$container.find('.login-errors');\n      this.$altMethodContainer = this.$container.find(\n        '.alternative-login-methods'\n      );\n      this.$passkeyBtn = this.$altMethodContainer.find('.login-passkey-btn');\n\n      this.setSettings(settings, Craft.LoginForm.defaults);\n\n      this.modal = this.$container.closest('.modal').data('modal');\n\n      this.submitBtn = new Garnish.MultiFunctionBtn(this.$submitBtn, {\n        changeButtonText: true,\n      });\n\n      new Craft.PasswordInput(this.$passwordInput, {\n        onToggleInput: ($newPasswordInput) => {\n          this.removeListener(this.$passwordInput, 'input');\n          this.$passwordInput = $newPasswordInput;\n          this.addListener(this.$passwordInput, 'input', 'onInput');\n        },\n      });\n\n      this.addListener(this.$usernameInput, 'input', 'onInput');\n      this.addListener(this.$passwordInput, 'input', 'onInput');\n      this.addListener(\n        this.$forgotPasswordLink,\n        'activate',\n        'showResetPasswordForm'\n      );\n      this.addListener(this.$form, 'submit', 'onSubmit');\n\n      // Focus first empty field in form\n      if (!Garnish.isMobileBrowser()) {\n        if (this.$usernameInput.val()) {\n          this.$passwordInput.trigger('focus');\n        } else {\n          this.$usernameInput.trigger('focus');\n        }\n      }\n\n      if (\n        this.settings.showPasskeyBtn &&\n        browserSupportsWebAuthn() &&\n        (await platformAuthenticatorIsAvailable())\n      ) {\n        this.$passkeyBtn.removeClass('hidden');\n        this.onResize();\n        this.addListener(this.$passkeyBtn, 'activate', () => {\n          this.loginWithPasskey();\n        });\n      }\n\n      if (\n        this.$altMethodContainer.children().filter('.btn:not(.hidden)').length\n      ) {\n        this.$altMethodContainer.removeClass('hidden');\n      }\n    },\n\n    validate() {\n      const usernameValidates = Craft.LoginForm.validateUsernameOrEmail(\n        this.$usernameInput.val()\n      );\n      if (usernameValidates !== true) {\n        return usernameValidates;\n      }\n\n      const passwordLength = this.$passwordInput.val().length;\n      if (passwordLength < Craft.minPasswordLength) {\n        return Craft.t(\n          'yii',\n          '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.',\n          {\n            attribute: Craft.t('app', 'Password'),\n            min: Craft.minPasswordLength,\n          }\n        );\n      }\n      if (passwordLength > Craft.maxPasswordLength) {\n        return Craft.t(\n          'yii',\n          '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.',\n          {\n            attribute: Craft.t('app', 'Password'),\n            max: Craft.maxPasswordLength,\n          }\n        );\n      }\n\n      return true;\n    },\n\n    onInput() {\n      if (this.validateOnInput && this.validate() === true) {\n        this.clearErrors();\n      }\n    },\n\n    onSubmit(event) {\n      // Prevent full HTTP submits\n      event.preventDefault();\n\n      const error = this.validate();\n      if (error !== true) {\n        this.showError(error);\n        this.validateOnInput = true;\n        return;\n      }\n\n      this.clearErrors();\n      this.submitBtn.busyEvent();\n\n      const data = {\n        loginName: this.$usernameInput.val(),\n        password: this.$passwordInput.val(),\n        rememberMe: this.$rememberMeCheckbox.prop('checked') ? 'y' : '',\n      };\n\n      Craft.sendActionRequest('POST', 'users/login', {data})\n        .then(({data}) => {\n          if (data.authMethod) {\n            this.show2faForm(data);\n          } else {\n            this.submitBtn.successEvent();\n            this.settings.onLogin(data.returnUrl);\n          }\n        })\n        .catch((e) => {\n          this.submitBtn.failureEvent();\n\n          Garnish.shake(this.$form, 'left');\n\n          // Add the error message\n          this.showError(\n            e?.response?.data?.message ||\n              Craft.t('app', 'A server error occurred.')\n          );\n\n          this.submitBtn.failureEvent();\n        });\n    },\n\n    showResetPasswordForm() {\n      this.clearErrors();\n      this.$form.addClass('hidden');\n\n      if (!this.resetPasswordForm) {\n        this.resetPasswordForm = new Craft.LoginForm.ResetPasswordForm(\n          this,\n          this.$container\n        );\n      }\n\n      this.resetPasswordForm.$form.removeClass('hidden');\n      this.resetPasswordForm.$usernameInput.val(this.$usernameInput.val());\n\n      if (!Garnish.isMobileBrowser()) {\n        this.resetPasswordForm.$usernameInput.trigger('focus');\n      }\n\n      this.onResize();\n    },\n\n    async show2faForm(data) {\n      this.clearErrors();\n      this.$form.addClass('hidden');\n\n      const $authForm = $(data.authForm).insertAfter(this.$form);\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n      Craft.initUiElements($authForm);\n\n      Craft.createAuthFormHandler(\n        data.authMethod,\n        $authForm,\n        () => {\n          this.settings.onLogin(data.returnUrl);\n        },\n        (error) => {\n          this.showError(error);\n        }\n      );\n\n      if (!Garnish.isMobileBrowser()) {\n        setTimeout(() => {\n          $authForm.find(':focusable:first').trigger('focus');\n        }, 100);\n      }\n\n      if (data.otherMethods.length) {\n        const $hr = $('<hr/>').insertAfter($authForm);\n        const $altContainer = $(\n          '<div class=\"login-alt-container\"/>'\n        ).insertAfter($hr);\n        const $button = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'Try another way'),\n            spinner: true,\n          })\n          .addClass('menubtn')\n          .appendTo($altContainer);\n        const $menu = $('<div class=\"menu login-alt-menu\"/>').appendTo(\n          $altContainer\n        );\n        const $ul = $('<ul/>').appendTo($menu);\n        for (let method of data.otherMethods) {\n          $('<li/>')\n            .append(\n              $('<a/>', {\n                text: method.name,\n                'data-method': method.class,\n              })\n            )\n            .appendTo($ul);\n        }\n        new Garnish.MenuBtn($button, {\n          onOptionSelect: (option) => {\n            $button.addClass('loading');\n\n            Craft.sendActionRequest('post', 'users/auth-form', {\n              data: {\n                method: $(option).data('method'),\n              },\n            })\n              .then(({data}) => {\n                $authForm.remove();\n                $hr.remove();\n                $altContainer.remove();\n                console.log(data);\n                this.show2faForm(data);\n              })\n              .finally(() => {\n                $button.removeClass('loading');\n              });\n          },\n        });\n      }\n\n      this.onResize();\n    },\n\n    showError(error) {\n      this.clearErrors();\n\n      $('<p style=\"display: none;\">' + error + '</p>')\n        .appendTo(this.$errors)\n        .velocity('fadeIn');\n\n      this.$errors.removeClass('hidden');\n      this.onResize();\n    },\n\n    clearErrors() {\n      this.$errors.empty().addClass('hidden');\n      this.onResize();\n    },\n\n    onResize() {\n      if (this.modal) {\n        Garnish.requestAnimationFrame(() => {\n          this.modal.updateSizeAndPosition();\n        });\n      }\n    },\n\n    async loginWithPasskey() {\n      if (this.$passkeyBtn.hasClass('loading')) {\n        return;\n      }\n\n      this.$passkeyBtn.addClass('loading');\n\n      try {\n        const optionsResponse = await Craft.sendActionRequest(\n          'POST',\n          'auth/passkey-request-options'\n        );\n        const authResponse = await startAuthentication(\n          optionsResponse.data.options\n        );\n        const loginResponse = await Craft.sendActionRequest(\n          'POST',\n          'users/login-with-passkey',\n          {\n            data: {\n              requestOptions: JSON.stringify(optionsResponse.data.options),\n              response: JSON.stringify(authResponse),\n            },\n          }\n        );\n\n        this.settings.onLogin(loginResponse.data.returnUrl);\n      } catch (e) {\n        const message = e?.response?.data?.message;\n        if (message) {\n          this.showError(message);\n        }\n      } finally {\n        this.$passkeyBtn.removeClass('loading');\n      }\n    },\n  },\n  {\n    validateUsernameOrEmail(val) {\n      if (val.length === 0) {\n        if (Craft.useEmailAsUsername) {\n          return Craft.t('app', 'Invalid email.');\n        }\n        return Craft.t('app', 'Invalid username or email.');\n      }\n\n      if (Craft.useEmailAsUsername && !val.match('.+@.+..+')) {\n        return Craft.t('app', 'Invalid email.');\n      }\n\n      return true;\n    },\n\n    defaults: {\n      showPasskeyBtn: true,\n      onLogin: (returnUrl) => {\n        window.location.href = returnUrl;\n      },\n    },\n  }\n);\n\nCraft.LoginForm.ResetPasswordForm = Garnish.Base.extend({\n  loginForm: null,\n  $container: null,\n  $form: null,\n  $usernameInput: null,\n  $submitBtn: null,\n  $backBtn: null,\n  validateOnInput: false,\n\n  init(loginForm, container) {\n    this.loginForm = loginForm;\n    this.$container = $(container);\n    this.$form = this.$container\n      .find('.login-reset-password')\n      .removeClass('hidden');\n    this.$usernameInput = this.$form.find('.login-username');\n    this.$submitBtn = this.$form.find('button.submit');\n    this.$backBtn = this.$form.find('.login-reset-back-btn');\n\n    this.addListener(this.$usernameInput, 'input', 'onInput');\n    this.addListener(this.$form, 'submit', 'onSubmit');\n    this.addListener(this.$backBtn, 'activate', 'showLoginForm');\n  },\n\n  validate() {\n    return Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val());\n  },\n\n  onInput() {\n    if (this.validateOnInput && this.validate() === true) {\n      this.loginForm.clearErrors();\n    }\n  },\n\n  onSubmit(event) {\n    // Prevent full HTTP submits\n    event.preventDefault();\n\n    const error = this.validate();\n    if (error !== true) {\n      this.loginForm.showError(error);\n      this.validateOnInput = true;\n      return;\n    }\n\n    this.loginForm.clearErrors();\n    this.$submitBtn.addClass('loading');\n\n    const data = {\n      loginName: this.$usernameInput.val(),\n    };\n\n    Craft.sendActionRequest('POST', 'users/send-password-reset-email', {data})\n      .then((response) => {\n        new Craft.LoginForm.ResetPasswordForm.MessageSentModal();\n      })\n      .catch((error) => {\n        this.showError(\n          (error &&\n            error.response &&\n            error.response.data &&\n            error.response.data.message) ||\n            Craft.t('app', 'A server error occurred.')\n        );\n      })\n      .finally(() => {\n        this.$submitBtn.removeClass('loading');\n      });\n  },\n\n  showLoginForm() {\n    this.loginForm.clearErrors();\n    this.$form.addClass('hidden');\n    this.loginForm.$form.removeClass('hidden');\n    this.loginForm.$usernameInput.val(this.$usernameInput.val());\n\n    if (!Garnish.isMobileBrowser()) {\n      this.loginForm.$usernameInput.trigger('focus');\n    }\n\n    this.loginForm.onResize();\n  },\n});\n\nCraft.LoginForm.ResetPasswordForm.MessageSentModal = Garnish.Modal.extend({\n  init() {\n    const $container = $(\n      '<div class=\"modal fitted email-sent\"><div class=\"body\">' +\n        Craft.t(\n          'app',\n          'Check your email for instructions to reset your password.'\n        ) +\n        '</div></div>'\n    ).appendTo(Garnish.$bod);\n\n    this.base($container);\n  },\n\n  hide() {},\n});\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = currentWin.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = currentWin.frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return floating.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x;\n  const y = rect.top + scroll.scrollTop - offsets.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element) || isTopLayer(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...(await getDimensionsFn(data.floating))\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n","import {arrow, computePosition, flip, offset, shift} from '@floating-ui/dom';\n\n/**\n * Tooltip\n *\n * Renders a tooltip on hover or focus of the parent element.\n *\n * Tooltips are used to provide additional or context for an element. By default\n * the tooltip will be positioned below an element and will avoid the edges\n * of the browser window.\n *\n * @property {'top'|'top-start'|'top-end'|'right'|'right-start'|'right-end'|'bottom'|'bottom-start'|'bottom-end'|'left'|'left-start'|'left-end'} placement - The placement of the tooltip relative to the parent element.\n * @property {boolean} arrow - Whether the tooltip should have an arrow.\n * @property {number} offset - The offset of the tooltip from the parent element.\n * @property {number} delay - The delay before the tooltip is shown on mouseentery.\n * @method show - Show the tooltip.\n * @method hide - Hide the tooltip.\n * @method update - Update the position of the tooltip.\n * @example <craft-tooltip arrow=\"false\" placement=\"top\" offset=\"10\">Tooltip content</craft-tooltip>\n */\nclass CraftTooltip extends HTMLElement {\n  connectedCallback() {\n    this.arrowElement = this.querySelector('.arrow');\n\n    this.arrow = this.getAttribute('arrow') !== 'false';\n    this.offset = this.hasAttribute('offset')\n      ? parseInt(this.getAttribute('offset'), 10)\n      : 8;\n\n    this.placement = this.getAttribute('placement') || 'bottom';\n    this.direction = getComputedStyle(this).direction;\n    this.delay = this.getAttribute('delay') || 500;\n    this.delayTimeout = null;\n\n    if (this.arrow && !this.arrowElement) {\n      this.renderInner();\n      this.renderArrow();\n    }\n\n    this.listeners = [\n      ['mouseenter', this.show, this.delay],\n      ['focus', this.show, 0],\n      ['mouseleave', this.hide, 0],\n      ['blur', this.hide, 0],\n    ];\n\n    this.listeners.forEach(([event, handler, delay]) => {\n      this.parentElement?.addEventListener(event, handler.bind(this, delay));\n    });\n\n    // Close on ESC\n    document.addEventListener('keyup', this.handleKeyUp.bind(this));\n\n    // Update & hide to make sure everything is where it needs to be\n    this.update();\n    this.hide();\n  }\n\n  disconnectedCallback() {\n    this.hide();\n\n    if (this.listeners.length) {\n      this.listeners.forEach(([event, handler]) => {\n        this.parentElement?.removeEventListener(event, handler.bind(this));\n      });\n    }\n\n    document.removeEventListener('keyup', this.handleKeyUp.bind(this));\n  }\n\n  handleKeyUp(e) {\n    if (e.key === 'Escape') {\n      this.hide();\n    }\n  }\n\n  /**\n   * Renders an inner container so we can use padding for the offset and\n   * maintain a better hover experience for users using zoom.\n   */\n  renderInner() {\n    this.inner = document.createElement('span');\n    this.inner.classList.add('inner');\n    this.inner.innerText = this.innerText;\n\n    // Replace the content with the inner container\n    this.innerHTML = '';\n    this.appendChild(this.inner);\n  }\n\n  renderArrow() {\n    this.arrowElement = document.createElement('span');\n    this.arrowElement.classList.add('arrow');\n    this.inner.appendChild(this.arrowElement);\n  }\n\n  show(delay) {\n    this.update();\n\n    this.delayTimeout = setTimeout(() => {\n      Object.assign(this.style, {\n        opacity: 1,\n        transform: ['left', 'right'].includes(this.getStaticSide())\n          ? `translateX(0)`\n          : `translateY(0)`,\n        // Make sure if a user hovers over the label itself, it stays open\n        pointerEvents: 'auto',\n      });\n    }, delay);\n  }\n\n  hide() {\n    if (this.delayTimeout) {\n      clearTimeout(this.delayTimeout);\n    }\n\n    Object.assign(this.style, {\n      opacity: 0,\n      transform: this.getInitialTransform(),\n      pointerEvents: 'none',\n    });\n  }\n\n  getInitialTransform() {\n    // Make sure the bubble moves in a natural direction\n    return {\n      top: `translateY(-${this.offset}px)`,\n      right: `translateX(${this.offset}px)`,\n      bottom: `translateY(${this.offset}px)`,\n      left: `translateX(-${this.offset}px)`,\n    }[this.getStaticSide()];\n  }\n\n  getStaticSide() {\n    return {\n      top: 'bottom',\n      right: 'left',\n      bottom: 'top',\n      left: 'right',\n    }[this.placement.split('-')[0]];\n  }\n\n  update() {\n    computePosition(this.parentElement, this, {\n      strategy: 'fixed',\n      placement: this.placement,\n      middleware: [\n        flip(),\n        shift({padding: 10}),\n        offset(0),\n        ...(this.arrow ? [arrow({element: this.arrowElement})] : []),\n      ],\n    }).then(({x, y, middlewareData, placement}) => {\n      // Placement may have changed\n      this.placement = placement;\n\n      Object.assign(this.style, {\n        left: `${x}px`,\n        top: `${y}px`,\n        // Add padding to the static side for accessible hovers\n        [`padding${Craft.uppercaseFirst(this.getStaticSide())}`]:\n          `${this.offset}px`,\n      });\n\n      if (!this.arrowElement) {\n        return;\n      }\n\n      const {x: arrowX, y: arrowY} = middlewareData.arrow;\n      this.arrowElement.dataset.placement = placement;\n      Object.assign(this.arrowElement.style, {\n        left: arrowX != null ? `${arrowX}px` : '',\n        top: arrowY != null ? `${arrowY}px` : '',\n        right: '',\n        bottom: '',\n        [this.getStaticSide()]: '-4px',\n      });\n    });\n  }\n}\n\ncustomElements.define('craft-tooltip', CraftTooltip);\n"],"names":["Craft","Accordion","Garnish","Base","extend","$trigger","targetSelector","_$target","init","trigger","_this","this","$","data","console","warn","destroy","attr","concat","addListener","event","key","keyCode","SPACE_KEY","RETURN_KEY","preventDefault","onTriggerClick","hideTarget","showTarget","$target","_this2","length","_currentHeight","height","removeClass","addClass","i","$t","prop","_targetHeight","css","overflow","velocity","getUserPreferredAnimationDuration","eq","$win","hasClass","removeData","base","AdminTable","settings","totalItems","sorter","$noItems","$table","$tbody","$deleteBtns","setSettings","defaults","allowDeleteAll","minItems","noItemsSelector","tableSelector","children","sortable","DataTableSorter","onSortChange","reorderItems","bind","find","handleDeleteBtnClick","updateUI","addRow","row","maxItems","$row","appendTo","$deleteBtn","addItems","add","ids","$items","id","idAttribute","push","JSON","stringify","sendActionRequest","reorderAction","then","response","onReorderItems","cp","displaySuccess","t","reorderSuccessMessage","catch","_ref","displayError","reorderFailMessage","target","closest","confirmDeleteItem","deleteItem","confirmDeleteMessage","name","getItemName","confirm","_this3","getItemId","deleteAction","handleDeleteItemSuccess","_ref2","handleDeleteItemFailure","deleteFailMessage","removeItems","remove","onDeleteItem","deleteSuccessMessage","escapeHtml","nameAttribute","hide","show","$moveButtons","newItemBtnSelector","noop","AssetImageEditor","Modal","$body","$footer","$imageTools","$buttons","$cancelBtn","$replaceBtn","$saveBtn","$focalPointBtn","$editorContainer","$straighten","$croppingCanvas","$spinner","$constraintContainer","$constraintRadioInputs","$customConstraints","canvas","image","viewport","focalPoint","grid","croppingCanvas","clipper","croppingRectangle","cropperHandles","cropperGrid","croppingShade","imageStraightenAngle","viewportRotation","originalWidth","originalHeight","imageVerticeCoords","zoomRatio","animationInProgress","currentView","assetId","cacheBust","draggingCropper","scalingCropper","draggingFocal","previousMouseX","previousMouseY","shiftKeyHeld","editorHeight","editorWidth","cropperState","scaleFactor","flipData","focalPointState","maxImageSize","lastLoadedDimensions","imageIsLoading","mouseMoveEvent","croppingConstraint","constraintOrientation","showingCustomConstraint","saving","renderImage","renderCropper","_queue","Queue","Date","now","allowDegreeFractions","isImagick","prefersReducedMotion","animationDuration","x","y","$container","$bod","type","class","text","allowSavingAsNew","ui","createButton","label","spinner","saveImage","createSubmitButton","removeListener","$shade","getMaxImageSize","loadEditor","browserViewportWidth","$doc","get","documentElement","clientWidth","browserViewportHeight","clientHeight","Math","max","window","devicePixelRatio","html","$tabs","$viewsContainer","$views","innerHeight","innerWidth","_showSpinner","updateSizeAndPosition","$customConstraintWrapper","filter","parent","append","size","value","val","test","fabric","StaticCanvas","width","enableRetinaScaling","requestAnimationFrame","renderAll","imageUrl","getActionUrl","Image","fromURL","imageObject","set","originX","originY","left","top","getHeight","getWidth","getScaledImageDimensions","_setFittedImageVerticeCoordinates","_repositionEditorElements","focalState","imageDimensions","offsetX","offsetY","focal","focalData","adjustedX","adjustedY","storeFocalPointState","_createFocalPoint","_createViewport","storeCropperState","_addControlListeners","_handleMouseMove","_handleMouseDown","_handleMouseUp","_handleMouseOut","_hideSpinner","first","_reloadImage","setSrc","outerHeight","previousEditorDimensions","setDimensions","currentScaledDimensions","getZoomToFitRatio","previouslyOccupiedArea","_getBoundingRectangle","_repositionCropper","getZoomToCoverRatio","_repositionImage","_repositionViewport","_repositionFocalPoint","_zoomImage","Rect","fill","globalCompositeOperation","sizeFactor","focalX","focalY","deltaX","deltaY","Group","Circle","radius","strokeWidth","stroke","toggleFocalPoint","dimensions","state","currentWidth","ratio","hasOrientationChanged","_","imageRatio","editorRatio","min","round","_getPrevTab","newTabIndex","activeTabIndex","_getActiveTabIndex","_getNextTab","_getActiveTab","$activeTab","index","_this4","_handleTabClick","LEFT_KEY","UP_KEY","$prevTab","activateTab","RIGHT_KEY","DOWN_KEY","$nextTab","rotateImage","flipImage","straighteningInput","SlideRuleInput","onStart","_showGrid","onChange","slider","straighten","onEnd","_hideGrid","_cleanupFocalPointAfterStraighten","ev","SHIFT_KEY","_handleConstraintChange","_handleOrientationClick","_applyCustomConstraint","_handleConstraintClick","constraint","currentTarget","siblings","_showCustomConstraint","_hideCustomConstraint","setCroppingConstraint","enforceCroppingConstraint","$constraints","$constraint","labelSelector","$label","split","reverse","join","replace","_getCustomConstraint","w","h","parseFloat","isNaN","_setCustomConstraint","$tab","tab","view","tabindex","showView","_this5","enableSlider","disableSlider","Promise","resolve","reject","disableCropMode","enableCropMode","zoomFactor","degrees","_this6","parseInt","imageZoomRatio","newAngle","angle","scaledImageDimensions","viewportProperties","imageProperties","angleInRadians","PI","newDeltaX","cos","sin","newDeltaY","modifiedDeltaX","modifiedDeltaY","temp","animate","duration","onComplete","cleanAngle","_adjustFocalPointByAngle","_resetFocalPointPosition","axis","_this7","editorCenter","setValue","properties","scaleY","scaleX","previousAngle","_adjustEditorElementsOnStraighten","newCenterX","newCenterY","angleDelta","currentZoomRatio","adjustmentRatio","cropperCenterX","cropperCenterY","imageVertices","getImageVerticeCoords","rectangle","_getZoomRatioToFitRectangle","_isCenterInside","opacity","object","containingObject","newFocalX","newFocalY","adjustedFocalX","adjustedFocalY","containingVertices","vertex","rectangleVertices","_getRectangleVertices","verticeIndex","arePointsInsideRectangle","edge","_getEdgeCrossed","rectangleCenter","distanceFromVertexToEdge","abs","sqrt","pow","distanceFromCenterToEdge","_this8","$button","postData","imageRotation","cropData","zoom","onSave","broadcaster","postMessage","runQueue","Preview","refresh","message","finally","scaledWidth","scaledHeight","boundingBox","_getImageBoundingBox","scale","vertScale","horiScale","getCombinedZoomRatio","strokeOptions","gridWidth","gridHeight","xStep","yStep","Line","onFadeOut","removeAllListeners","_this9","_editorModeTransition","cropperData","_showCropper","_this10","_hideCropper","targetZoom","inverseZoomFactor","imageOffsetX","imageOffsetY","callback","_this11","pause","resume","clipperData","_setupCropperLayer","_redrawCropperElements","_this12","backgroundColor","hoverCursor","selection","position","rectangleRatio","rectWidth","rectHeight","lineOptions","gridOptions","pathGroup","Path","cropTextTop","cropTextBackgroundColor","previousImageArea","currentOffset","areaFactor","coordinateSet","a","b","c","d","_isMouseOver","move","handle","_cropperHandleHitTest","pageX","pageY","_handleMouseMoveInternal","_handleFocalDrag","_handleCropperDrag","_handleCropperResize","_setMouseCursor","vertices","dxi","dyi","furthest","furthestDeltas","newX","newY","_this13","previousHeight","previousWidth","startingRectangle","_calculateNewCropperSizeByDeltas","cropperDirection","topDelta","leftDelta","change","match","isMobileBrowser","cursor","parentOffset","offset","mouseX","mouseY","lb","rb","tb","bb","topLeft","topRight","bottomRight","bottomLeft","zoomMode","topVerticalSegment","bottomVerticalSegment","rightHorizontalSegment","leftHorizontalSegment","verticalOffset","horizontalOffset","_debug","fabricObj","debugger","points","ab","_getVector","bc","scalarAbAb","_getScalarProduct","scalarBcBc","point","ap","bp","scalarAbAp","scalarBcBp","projectsOnAB","projectsOnBC","_getVectorMagnitude","vector","_getAngleBetweenVectors","acos","edgePoints","centerPoint","smallestDiff","edgeCrossed","edgeIndex","toCenter","edgeVector","toVertex","diff","box","proportion","_regeneratorRuntime","e","r","Object","prototype","n","hasOwnProperty","o","defineProperty","Symbol","iterator","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","l","f","s","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","keys","pop","prev","charAt","slice","stop","rval","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_defineProperty","obj","toPrimitive","String","_toPrimitive","_deleteFolder","_deleteCurrentFolder","AssetIndex","BaseElementIndex","$includeSubfoldersContainer","$includeSubfoldersCheckbox","showingIncludeSubfoldersCheckbox","$uploadButton","$uploadInput","$progressBar","uploader","promptHandler","progressBar","currentFolderId","$listedFolders","itemDrag","_uploadTotalFiles","_uploadFileProgress","_currentUploaderSettings","_includeSubfolders","elementType","assign","context","queryParams","getQueryParams","includeSubfolders","DragDrop","activeDropTargetClass","minMouseDist","hideDraggee","moveHelperToCursor","item","$targetItem","elementSelect","selectItem","_findDraggableItems","getSelectedElements","$item","$dropTargets","$visibleSources","toArray","source","hasAttr","sourcePath","not","$source","step","folderId","$btn","$draggee","targetFolderId","_targetFolderId","$activeDropTarget","returnHelpersToDraggees","fadeOutHelpers","$folders","$assets","folderIds","map","assetIds","mover","AssetMover","moveFolders","totalFoldersMoved","moveAssets","totalAssetsMoved","totalItemsMoved","displayNotice","elementIndex","updateElements","$main","modal","on","_positionProgressBar","$dropTarget","is","afterInit","foldersOnly","initForFiles","PromptHandler","ProgressBar","createUploadInputs","_this$$uploadButton","_this$$uploadInput","style","addButton","insertBefore","isIndexBusy","onSelectSource","fsType","_this$uploader","_this$settings","options","fileInput","dropZone","events","fileuploadstart","_onUploadStart","fileuploadprogressall","_onUploadProgress","fileuploaddone","_onUploadSuccess","fileuploadalways","_onUploadAlways","fileuploadfail","_onUploadFailure","criteria","kind","allowedKinds","createUploader","setParams","onSourcePathChange","currentFolder","_this$uploader2","canMoveSubItems","selectable","multiSelect","startSearching","hideSidebar","hasChildren","floor","random","insertAfter","$search","$subContainer","setSelecetedSourceState","checked","getSelectedSourceState","marginBottom","stopSearching","getViewSettings","canSelectElement","getViewParams","showFolders","trashed","setIndexBusy","resetProgressBar","showProgressBar","resetPrompts","CustomEvent","detail","progress","loaded","total","setProgressPercentage","result","selectElementAfterUpdate","conflict","prompt","file","filename","choices","title","modalSettings","hideOnEsc","hideOnShadeClick","addPrompt","isLastUpload","hideProgressBar","setIndexAvailable","getPromptCount","showBatchPrompts","_uploadFollowup","_updateAfterUpload","_data$jqXHR","_data$files","jqXHR","responseJSON","errors","files","errorMessages","flat","clearSearch","setSelectedSortAttribute","returnData","setItemCount","doFollowup","parameterArray","parameterIndex","action","_this4$uploader$setti","replaceAction","followupAlways","incrementProcessedItemCount","updateProgressBar","followupSuccess","choice","sourceAssetId","conflictingAssetId","targetFilename","followupFailure","onUpdateElements","_onUpdateElements","getAllElements","newElements","$newElements","$elements","_onKeyDown","_onElementFocus","_loop","$folder","$link","folderName","disabledFolderIds","includes","has","href","getCpUrl","uri","role","firstFocusableEl","focus","removeAllItems","shiftKey","PreviewFileModal","openInstance","selfDestruct","$element","$focusedItem","_loadPreview","stopPropagation","startingWidth","startingHeight","getSourcePathLabel","getSourcePathActionLabel","getSourcePathActions","actions","canCreate","onSelect","_createSubfolder","canRename","_renameFolder","canMove","getMoveTargetSourceKeys","_moveFolder","canDelete","destructive","deleteCurrentFolder","subfolderName","parentId","_ref3","_callee","_context","deleteFolder","_callee2","folder","_e$response","_context2","t0","_x","newName","_ref4","peerFiles","$sources","volumeHandle","parentFolder","VolumeFolderSelectorModal","sources","showTitle","modalTitle","selectBtnLabel","indexSettings","defaultSource","sourceKey","defaultSourcePath","_ref5","targetFolder","$sourcePathActionsBtn","scrollTop","windowHeight","registerElementIndexClass","requests","for","params","_batchMoveRequests","conflictChoices","handleConflictChoice","request","force","suggestedFilename","transferList","folderIdsToDelete","onSuccess","merge","totalMoved","_processTransferList","_deleteFolders","_batchRequests","responses","_step","_iterator","_createForOfIteratorHelper","success","prompts","_step2","nextRequests","_iterator2","nextRequest","nextTotalMoved","_step3","activeRequests","_iterator3","failure","AssetSelectInput","BaseElementSelectInput","$uploadBtn","openPreviewTimeout","canUpload","_attachUploader","updateAddElementsBtn","$elementsContainer","elementSelectSettings","makeFocusable","openPreview","clearOpenPreviewTimeout","clearTimeout","minGutter","$addElementBtn","limit","describedBy","$fileInput","multiple","canAddMoreFiles","_onUploadComplete","fieldId","sourceElementId","elementId","siteId","enableAddElementsBtn","disableAddElementsBtn","selectUploadedFile","element","canAddMoreElements","$newElement","margin","outerWidth","animateCss","addElements","elements","instances","viewMode","elementInfo","getElementInfo","selectElements","appendHeadHtml","headHtml","appendBodyHtml","bodyHtml","slotsTaken","AssetSelectorModal","BaseElementSelectorModal","$selectTransformBtn","_selectedTransform","transforms","createSelectTransformButton","$btnGroup","$primaryButtons","$selectBtn","$menu","$menuList","MenuButton","MenuBtn","onOptionSelect","onSelectTransform","disable","onSelectionChange","allowTransforms","enable","option","transform","selectImagesWithTransform","transformUrls","$selectedElements","imageIdsWithMissingUrls","showFooterSpinner","fetchMissingTransformUrls","hideFooterSpinner","url","canSelectImageTransforms","registerElementSelectorModalClass","AssetsFieldSettings","$useSingleFolderInput","$sourceInputs","$defaultUploadLocationSelect","$defaultUploadLocationOptions","useSingleFolderToggleId","sourcesFieldId","defaultUploadLocationId","updateDefaultUploadLocationSelect","firstEnabledValue","defaultUploadLocationVal","$input","getOption","$selectedOption","AuthManager","remainingSessionTime","checkRemainingSessionTimer","showLoginModalTimer","decrementLogoutWarningInterval","showingLogoutWarningModal","showingLoginModal","logoutWarningModal","loginModal","$logoutWarningPara","$passwordInput","$loginBtn","loginBtn","username","updateRemainingSessionTime","setCheckRemainingSessionTimer","seconds","setTimeout","checkRemainingSessionTime","extendSession","_yield$Craft$sendActi","csrfTokenValue","timeout","isGuest","minSafeSessionTime","showLogoutWarningModal","checkInterval","hideLogoutWarningModal","showLoginModal","hideLoginModal","quickShow","$form","$logoutBtn","$renewSessionBtn","prependTo","autoShow","closeOtherModals","shadeClass","onFadeIn","updateLogoutWarningMessage","setInterval","decrementLogoutWarning","time","secondsToHumanTimeDuration","clearInterval","quick","quickHide","_callee3","_yield$Craft$sendActi2","_context3","email","userEmail","_onFadeIn","initUiElements","LoginForm","showPasskeyBtn","userHasPasskeys","onLogin","_this2$loginModal","onHide","logout","dataType","redirectTo","renewSession","closeModal","successEvent","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","allowArrayLike","it","F","_e","normalCompletion","didErr","_e2","minLen","_arrayLikeToArray","toString","from","len","arr2","_onDeleteElements","_onBeforeDeleteElements","_onDuplicateElements","_onBeforeDuplicateElements","_createTriggers2","_submitActionInternal2","_submitAction","initialized","idPrefix","instanceState","_sourceStates","sourceStatesStorageKey","searchTimeout","sourceSelect","sourceNav","$sidebar","showingSidebar","hasImplicitSource","rootSourceKey","sourceViewModes","$rootSource","sourcesByKey","$sourceActionsContainer","$sourceActionsBtn","$toolbar","toolbarOffset","$srStatusContainer","$searchContainer","$filterBtn","searching","searchText","sortByScore","drafts","$clearSearchBtn","$statusMenuBtn","$statusMenuContainer","statusMenu","status","$siteMenuBtn","siteMenu","sourcePaths","$sourcePathOuterContainer","$sourcePathInnerContainer","$sourcePathOverflowBtnContainer","$updateSpinner","$viewModeBtnContainer","viewModeBtns","_viewParams","_previousViewParams","_viewMode","_autoSelectElements","$countSpinner","$countContainer","$actionsContainer","$actionMenuBtn","page","resultSet","totalResults","totalUnfilteredResults","$exportBtn","actionsHeadHtml","actionsBodyHtml","$selectAllContainer","$selectAllCheckbox","showingActionTriggers","exporters","exportersByType","triggers","_$triggers","_cancelToken","viewMenus","activeViewMenu","filterHuds","_activeElement","inlineEditing","nestedInputNamespace","canSort","validateViewMode","paginated","isAdministrative","hasActiveFilter","isActive","baseCriteria","currentStep","sourceStates","__IMP__","setInstanceState","setLocalStorage","randomString","toolbarSelector","namespaceId","findSources","getDefaultInstanceState","storageKey","getLocalStorage","initSources","menubtn","menu","_handleStatusChange","$option","$options","_setSite","_handleSiteChange","defaultSiteId","getSiteId","$storedSiteOption","updateElementsIfSearchTextChanged","disableAutofocus","stepKey","selector","selectOption","setQueryParam","sourcePathStep","selectDefaultSource","getDefaultSourcePath","afterSetInitialSource","loadSourcePathByKey","lastSourceKey","sourceRootIndex","findIndex","onAfterInit","namespaceInputName","namespace","handleResize","search","filters","createFilterHud","showOnInit","serialized","sort","lastDashPos","lastIndexOf","substring","dir","setPage","pageNum","showSourcePath","_updateSourcePathVisibility","_createCancelToken","axios","CancelToken","token","_cancelRequests","cancel","getSourceContainer","getSourceLabel","getItemLabel","elementTypeNames","elementTypeName","toLowerCase","getItemsLabel","elementTypePluralName","getFirstItemNumber","batchSize","getLastItemNumber","getSite","sites","SourceNav","_handleSourceSelectionChange","initSource","_getSourcesInList","getQueryParam","getDefaultSourceKey","getSourceByKey","selectSource","refreshSources","refreshSourcesAction","replaceWith","isCancel","initSourceToggle","expandedSources","indexOf","_expandSource","deinitSourceToggle","$toggle","_getSourceToggle","deinitSource","selectedSource","_sourceKey","preferStoredSource","$lastSource","segment","testSourceKey","_collapseSource","canView","getDefaultExpandedSources","$overflowBtn","overflowMenuId","$overflowUl","$nav","$ol","$overflowMenu","disclosureMenu","$overflowLi","icon","selectSourcePathStep","isFirst","isLast","$li","$btnBody","actionBtnLabel","menuId","groupedActions","administrative","group","_buildSourcePathActionList","history","replaceState","firstStep","lastStep","removeAttr","overage","_checkSourcePathOverage","getBoundingClientRect","$ul","$a","num","storeInstanceState","getSourceState","defaultValue","lastSlashPos","sourceState","viewState","k","storeSortAttributeAndDirection","getPageUrl","_resetCount","updateSourceMenu","empty","getSourceActions","_buildActionList","userIsAdmin","allowAdminChanges","createCustomizeSourcesModal","updateViewMenu","hideTrigger","getViewModesForSource","mode","ViewMenu","showTrigger","canHaveDrafts","draftOf","savedDraftsOnly","condition","referenceElementId","referenceElementSiteId","disabledElementIds","showHeaderColumn","order","collapsedElementIds","_this$getSortAttribut2","getSortAttributeAndDirection","sortAttribute","sortDirection","conditionConfig","filterConfig","tableColumns","getDefaultTableColumns","preservePagination","pageChanged","onBeforeUpdateElements","updateElementsAction","cancelToken","fixedHeader","headerContainerHeight","$headerContainer","maxScrollTop","$scrollContainer","_updateView","criteriaHasChanged","sourceHasChanged","itemLabel","itemsLabel","_countResults","successMessage","last","items","updateLiveRegion","getSortMessage","compare","sortHasChanged","attribute","getSelectedSortAttribute","direction","getSelectedSortDirection","sortLabel","getSortLabel","currentMessage","showActionTriggers","_createTriggers","submitAction","actionParams","beforeCallback","selectedElementIds","viewParams","getSelectedElementIds","_findAction","expandPostArray","elementAction","elementIds","download","csrfTokenName","downloadFromUrl","submitActionsAction","badgeCounts","_updateBadgeCounts","afterAction","_x2","_x3","actionClass","onAfterAction","hideActionTriggers","detach","updateSelectAllCheckbox","totalSelected","getEnabledElements","updateActionTriggers","setStatus","getSortOption","getDefaultSort","setSortAttribute","sortOption","defaultDir","attributes","lastAttr","oldHistory","orderHistory","setSortDirection","setSelectedSortDirection","getSelectedViewMode","getSourceLevel","parentsUntil","getParentSource","$parent","getRootSource","updateContentHeading","$firstOption","sourceViewMode","$viewModeBtn","className","selectViewMode","doesSourceHaveViewMode","filterHudExists","updateFilterBtn","urlParams","setUrl","getUrl","path","selectSourceByKey","getSourceData","$parentSource","getSortOptions","sortOptions","defaultSort","getTableColumnOptions","getTableColumnOption","getSelectedTableColumns","setSelectedTableColumns","updateTableColumnField","viewModes","orientation","allowedViewModes","createView","getViewClass","TableElementIndexView","CardsElementIndexView","ThumbsElementIndexView","rememberDisabledElementId","inArray","forgetDisabledElementId","splice","enableElements","parents","onEnableElements","disableElements","onDisableElements","getElementById","enableElementsById","makeArray","disableElementsById","getButtonContainer","isShowingSidebar","buttonContainer","document","activeElement","contains","blur","elementsHeight","scrollParent","positionTop","setProperty","body","CustomizeSourcesModal","onSelectSite","onCountResults","totalUnfiltered","$selectedItem","_handleActionTriggerSubmit","_submitActionInternal","getPostData","_handleMenuActionTriggerSubmit","_this14","beforeActivate","afterActivate","_x4","_x5","_x6","selectedOption","queryParam","firstSite","updateSourceVisibility","$heading","$headings","setSiteId","_this15","some","site","uid","_handleSelectionChange","_handleSourceDblClick","_toggleSource","_handleSourceToggleClick","$list","topLevel","_getChildSources","$childSources","_this16","_callee4","_step4","_iterator4","_step5","_context4","countLabel","$paginationContainer","totalPages","ceil","$paginationNav","$prevBtn","disabled","$nextBtn","selectAllElements","deselectAllElements","checkboxMode","waitForDoubleClicks","selectElementById","$badge","_this17","countElementsAction","unfilteredTotal","_callee5","safeMenuActions","destructiveMenuActions","formId","$menuTrigger","$safeList","$destructiveList","_context5","_createMenuTriggerList","currentElementIndex","_showExportHud","_this18","typeOptions","$typeField","createSelectField","$formatField","$typeSelect","formattable","$limitField","createTextField","placeholder","$submitBtn","$exportSubmit","MultiFunctionBtn","HUD","submitting","busyEvent","format","_step6","_iterator5","showFilterHud","FilterHud","showing","canDuplicateElements","selectedItems","onBeforeDuplicateElements","_callee6","_context6","_x7","onDuplicateElements","_callee7","_context7","_x8","canDeleteElements","onBeforeDeleteElements","_callee8","_context8","_x9","onDeleteElements","_callee9","_context9","_x10","inlineEditable","container","handleClick","handleKeypress","_deinitItem","getClosestItem","deselectAll","selectedClass","itemsChanged","selectionChanged","callbackFrame","cancelAnimationFrame","$sortField","$sortAttributeSelect","$sortDirectionPicker","sortDirectionListbox","$tableColumnsField","$tableColumnsContainer","$revertContainer","$revertBtn","$closeBtn","_this19","_buildMenu","DisclosureMenu","updateSortField","updateTableFieldVisibility","tidyTableColumnField","FX_DURATION","_this$elementIndex$ge2","$scoreOption","prepend","select","_this20","$lastContainer","lastIndex","$checkbox","$checkboxes","_getTableColumnCheckboxes","defaultOrder","column","reduce","_objectSpread","checkboxA","checkboxB","revert","_this21","$metaContainer","_createSortField","_createTableColumnsField","$footerContainer","_createRevertBtn","_this22","groups","startsWith","unshift","optgroup","$sortAttributeSelectContainer","createSelect","Listbox","$field","createField","fieldset","_this23","columns","createCheckboxSelect","_onTableColumnChange","$selectedCheckboxes","_this24","loading","$clearBtn","cleared","_this25","$loadingContent","hudClass","$hud","$tip","_callee10","$btnContainer","_context10","hudHtml","clear","setBusy","setReady","setFocus","serialize","_x11","elem","func","setFocusWithin","updateSizeAndPositionInternal","hudHeight","searchOffset","availableSpace","bottom","overflowY","onShow","hasRules","BaseElementIndexView","$loadingMoreSpinner","$elementContainer","$scroller","loadingMore","_totalVisible","_morePending","_handleEnableElements","_handleDisableElements","thumbLoader","elementThumbLoader","getElementContainer","setTotalVisible","setMorePending","load","Select","filterSelectableElements","multi","vertical","isVerticalList","_handleElementEditing","createElementEditor","maybeLoadMore","$selectedItems","selectElement","selectAll","getElementCheckbox","getTotalVisible","totalVisible","getMorePending","morePending","canLoadMore","loadMore","loadMoreElementsAction","getLoadMoreParams","appendElements","onAppendElements","off","_selectStructuredElements","_selectElements","_onModalSelect","elementSort","elementEditor","modalFirstOpen","_initialized","isPlainObject","normalizedSettings","modalStorageKey","maintainHierarchy","getContainer","getElementsContainer","getAddElementsBtn","getSpinner","initElementSelect","initElementSort","resetElements","getElements","DragSort","getSelectedItems","ignoreHandleSelector","getElementSortAxis","collapseDraggees","magnetStrength","helperLagBase","updateButtonContainer","showSpinner","hideSpinner","focusNextLogicalElement","focusLastRemoveBtn","$removeBtns","removeElements","defineElementActions","addActionsToChip","moveForwardBtn","moveBackwardBtn","$prev","$next","toggleItem","editable","_handleShowElementEditor","nodeName","isTouchCapable","BACKSPACE_KEY","DELETE_KEY","removeElement","onAddElements","moveElementForward","moveElementBackward","elementSelectInput","prevalidate","replaceElement","replacementId","$existing","showActionMenu","_e$response2","_this$elementSelect","resetItemOrder","_$nextElement","$nextElement","lastElementIndex","onRemoveElements","$allElements","_animateStructureElementAway","animateElementAway","right","REMOVE_FX_DURATION","showModal","createModal","createElementSelectorModal","getModalSettings","hideOnSelect","showSiteMenu","getDisabledElementIds","onModalSelect","onModalHide","triggerElement","allowSelfRelations","inputUiType","inputUiSize","slotsLeft","disableCancelBtn","disableSelectBtn","$modalElement","selectStructuredElements","updateDisabledElementsInModal","enableCancelBtn","enableSelectBtn","createNewElement","appendElement","animateElementIntoPlace","onSelectElements","$newInput","$newElementsContainer","filteredElements","_i2","containerId","branchLimit","selectionLabel","clone","setElementSize","single","$inputElement","origOffset","destOffset","$helper","zIndex","ADD_FX_DURATION","editorSettings","supportSidebarToggleView","$content","$sourceToggles","$sidebarToggleBtn","$sidebarCloseBtn","$mainHeading","$secondaryButtons","headingId","$headingContainer","fullscreen","updateModalBottomPadding","footerHeight","updateSidebarView","sidebarShouldBeHidden","buildSidebarToggleView","resetView","$mainHeader","$sidebarHeader","getActiveSourceName","toggle","controls","closeSidebar","toggleSidebar","sidebarIsOpen","openSidebar","uiLayerManager","addLayer","registerShortcut","ESC_KEY","$focusedEl","getFocusedElement","removeLayer","_createElementIndex","updateSelectBtnState","updateHeading","hasSelection","clearMouseUpTimeout","disableElementsOnSelect","getElementIndexParams","bodyAction","createElementIndex","getIndexSettings","touchData","firstTap","secondTap","resizable","onCancel","BaseInputGenerator","listening","startListening","setNewSource","stopListening","onSourceTextChange","updateTarget","onTargetTextChange","onFormSubmit","updateWhenHidden","sourceVal","targetVal","generateTargetValue","dispatchEvent","InputEvent","inputType","Event","selectFullValue","BaseUploader","formData","_rejectedFiles","_extensionList","_inProgressCounter","createAction","paramObject","getInProgress","processErrorMessages","str","kinds","humanFileSize","maxFileSize","bytes","threshold","toFixed","_createExtensionList","allowedKind","fileKinds","j","extensions","ext","pasteZone","maxUploadSize","headers","Accept","paramName","CP","authManager","$navToggle","$globalSidebar","$globalContainer","$mainContainer","$pageContainer","$alerts","$crumbs","$crumbList","$crumbItems","$crumbMenuTriggerItem","$crumbMenu","$crumbMenuList","$crumbMenuItems","$notificationContainer","$primaryForm","$header","$mainContent","$details","$sidebarContainer","$sidebarToggle","$contentContainer","$edition","$confirmUnloadForms","$deltaForms","$collapsibleTables","isMobile","tabManager","enableQueue","totalJobs","jobInfo","displayedJobInfo","displayedJobInfoUnchanged","trackJobProgressTimeout","trackingJobProgress","jobProgressCancelToken","jobProgressIcon","checkingForUpdates","forcingRefreshOnUpdatesCheck","includingDetailsOnUpdatesCheck","checkForUpdatesCallbacks","checkForUpdatesFailureCallbacks","resizeTimeout","ElementThumbLoader","$allInstructions","$instructions","updateFixedHeader","ready","handleWindowResize","setSidebarNavAttributes","initSpecialForms","initAlerts","shortcuts","S_KEY","ctrl","redirect","retainScroll","shortcut","shift","submitPrimaryForm","initTabs","LOCATION_HASH","selectTab","scrollY","removeLocalStorage","scrollTo","_handleInputFocus","_handleInputBlur","announcements","$unreadMessage","hud","hasUnreads","unread","contents","heading","each","hostname","location","footer","IntersectionObserver","classList","intersectionRatio","rootMargin","observe","$contentHeader","$noticeContainer","$forms","_loop2","serializer","findDeltaData","createForm","submit","confirmUnload","livePreview","inPreviewMode","originalEvent","returnValue","saveShortcut","submitForm","updateSidebarMenuLabel","toggleNav","isExpanded","navIsExpanded","disableGlobalSidebar","enableGlobalSidebar","isAlwaysVisible","getComputedStyle","getPropertyValue","trim","newState","toggleClass","Tabs","querySelectorAll","link","updateTabs","tabs","$tabContainer","$tabsContainer","$tabsList","$tablist","$selectedTab","selectedTabIndex","$focusableTab","deselectTab","handleBreadcrumbVisibility","maxWidth","itemWidths","$crumb","sum","$labelContainer","visibleTotalWidth","updateResponsiveTables","_i","_$table","_containerWidth","_check","_isCollapsed","headerHeight","headerWidth","_setFixedTopPos","displayNotification","notification","Notification","notificationType","iconLabel","fetchAlerts","queue","alerts","displayAlerts","alert","content","showIcon","$shunnableAlerts","$resolvableButtonsContainer","$refreshBtn","sendApiRequest","updateContext","description","contextBtnLabel","querySelector","textContent","menuItem","descriptionEl","createElement","showSiteCrumbMenuItem","li","setSiteCrumbMenuItemStatus","statusEl","checkForUpdates","forceRefresh","includeDetails","onFailure","realOnSuccess","realOnFailure","_checkForUpdates","updateUtilitiesBadge","callbacks","updateInfo","_getUpdates","_checkForCachedUpdates","cached","onlyIfCached","_ref6","updates","_cacheUpdates","_ref7","$utilitiesLink","_ref8","badgeCount","$badgeLabel","$screenReaderText","runQueueAutomatically","trackJobProgress","delay","cancelJobTracking","getNextJobDelay","_trackJobProgressInternal","setJobData","jobData","setJobInfo","jobs","oldInfo","getDisplayedJobInfo","progressLabel","updateJobIcon","statuses","JOB_STATUS_RESERVED","JOB_STATUS_FAILED","JOB_STATUS_WAITING","JobProgressIcon","hideFailMode","setDescription","setProgress","showFailMode","actionUrl","baseCpUrl","baseUrl","cpTrigger","notificationDuration","JOB_STATUS_DONE","closing","closeTimeout","_preventDelayedClose","originalActiveElement","$icon","$closeBtnContainer","details","close","_negMargin","_initDelayedClose","isVisible","delayedClose","preventDelayedClose","one","$progressLabel","failMode","_$bgCanvas","_$staticCanvas","_$hoverCanvas","_$failCanvas","_staticCtx","_hoverCtx","_canvasSize","_arcPos","_arcRadius","_lineWidth","_arcStartPos","_arcEndPos","_arcStartStepSize","_arcEndStepSize","_arcStep","_arcStepTimeout","_arcAnimateCallback","_progressBar","canAccessQueueManager","$prefixContainer","$canvasContainer","m","_createCanvas","getContext","_drawArc","_animateArc","_setArc","color","$canvas","ctx","strokeStyle","lineWidth","lineCap","startPos","endPos","clearRect","beginPath","arc","closePath","targetStartPos","targetEndPos","_takeNextArcStep","cardSort","helper","onInsertionPointChange","helpers","CategoryIndex","editableGroups","$newCategoryBtnGroup","$newCategoryBtn","updateButton","editableCategoryGroups","defaultGroupHandle","selectedSourceHandle","$menuBtn","selectedGroup","visibleLabel","ariaLabel","isCtrlKeyPressed","button","open","_createCategory","$menuContainer","anchorRole","setPath","groupId","cpEditUrl","fresh","draftId","groupSourceKey","CategorySelectInput","selectedCategoryIds","categoryIds","onResponse","$allCategories","_animateCategoryAway","ColorInput","$colorContainer","$colorPreview","$colorInput","createColorInput","handleTextChange","_this$settings$preset","input","setAttribute","presets","listId","updateColor","repeat","_browserSupportsColorInputs","doesBrowserSupportColorInputs","ComponentSelectInput","componentSelect","componentSort","$components","$addBtn","$createBtn","initComponentSelect","initComponentSort","resetComponents","getOptions","addComponent","slideout","CpScreenSlideout","modelClass","modelId","getComponents","showOption","hideOption","getComponentSortAxis","canAddMoreComponents","updateButtons","removeComponents","addComponents","$component","defineComponentActions","click","$selected","removeComponent","moveComponentForward","moveComponentBackward","_this$componentSelect","$nextComponent","lastComponentIndex","animateComponentAway","getSelectedComponentIds","_arguments","addToMenu","canAdd","$menuItem","components","inputName","withMenuItems","menuItems","addItem","hideItem","CpModal","showingLoadSpinner","$loadSpinner","ignoreFailedRequest","fieldsWithErrors","showSubmitButton","containerElement","containerAttributes","$contents","handleSubmit","closeMeMaybe","$sidebarBtn","refreshInitialData","showLoadSpinner","getParams","requestOptions","update","deltaNames","initialDeltaValues","hideLoadSpinner","bodyClass","submitButtonLabel","formAttributes","setElementAttributes","showSubmitSpinner","hideSubmitSpinner","handleSubmitResponse","handleSubmitError","clearErrors","notificationSettings","refreshComponentInstances","modelName","closeOnSubmit","isAxiosError","showErrors","entries","fieldErrors","addErrorsToField","clearErrorsFromField","isDirty","initialValue","visible","novalidate","Slideout","hasTabs","hasCpLink","hasSidebar","$actionBtn","$editLink","ltr","showSidebar","closeOnEsc","closeOnShadeClick","hideSidebarIfOverlapping","updateHeaderVisibility","forceShow","showHeader","editUrl","actionMenu","labelId","sidebar","notice","_closedSidebarStyles","offsetWidth","_openedSidebarStyles","trapFocusWithin","bubble","bubbleShortcut","errorSummary","showErrorSummary","errorCount","clearErrorSummary","$tabsWithErrors","tabDataId","tabUid","$tabErrorSummary","tabErrorCount","headingText","errorTabUid","setFocusOnErrorSummary","_this$tabManager","tabMenu","tabErrorIndicator","fieldTabAnchors","findTabAnchorForField","$fieldTabAnchor","$tabMenuItem","isOpen","CraftDisclosure","_HTMLElement","_classCallCheck","_callSuper","_inherits","getAttribute","addEventListener","expanded","removeEventListener","dataset","_wrapNativeSuper","HTMLElement","customElements","CraftElementLabel","labelLink","tooltip","desiredWidth","calculateWidth","innerText","hasOverflow","scrollWidth","createTooltip","contextLabel","appendChild","_this$tooltip","_this$$tabs$data","tag","visibility","whiteSpace","fontFamily","innerHTML","removeChild","CraftGlobalSidebar","expand","collapse","_item$querySelector","setCookie","destroyTooltips","createTooltips","_buildModal","_createSettings","_createSettings2","_createSettings3","_createSettings4","$elementIndexSourcesContainer","$sourcesContainer","$sourcesHeader","$sourcesHeading","$sourceSettingsContainer","$sourceSettingsHeader","$addSourceMenu","addSourceMenu","$footerBtnContainer","$loadingSpinner","sourceSort","baseSortOptions","availableTableAttributes","customFieldAttributes","conditionBuilderHtml","conditionBuilderJs","userGroups","setContainer","buildModal","$menuBtnContainer","addSource","$newHeadingBtn","$newCustomSourceBtn","defaultSortOptions","sourceData","scrollContainerToElement","focusLabelInput","uuid","tableAttributes","useMobileStyles","$labelInput","getSourceName","focusIsInside","currentLayer","isNew","$itemLabel","$itemInput","Heading","updateItemLabel","Source","CustomSource","save","disabledSourceKeys","reload","appendIndexSourceItem","$sourceItem","$lastSourceItem","isHeading","$lastTopLevelSource","BaseSource","$settingsContainer","isNative","isSelected","deselect","createSettings","getIndexSourceItem","$sortDirectionInput","createLightswitchField","createSortField","createTableAttributesField","$inputContainer","handleSortAttributeChange","useDefaultDir","createCheckboxSelectField","instructions","_toConsumableArray","$labelField","defaultId","swapPlaceholders","formatInputId","showAllOption","handleLabelInputChange","table","$rows","getHelper","caboose","Y_AXIS","$helperRow","helperClass","$cells","$helperCells","DeleteUserModal","userId","$deleteActionRadios","$deleteSubmitBtn","userSelect","_deleting","idParam","getCsrfInput","$contentSummary","contentSummary","_submitBtnLabel","validateDeleteInputs","withContent","validates","onSubmit","DynamicGenerator","EditableTable","baseName","biggestId","$addRowBtn","$tableParent","$statusMessage","rowCount","hasMaxRows","hasMinRows","radioCheckboxes","copyDraggeeInputValuesToHelper","updateAllRows","rowIdPrefix","initialize","initializeIfVisible","minRows","updateAddRowButton","lazyInitRows","$tr","$textarea","createRowObj","canAddRow","staticRows","updateRow","canDeleteRow","updateDeleteRowButton","rowId","updateStatusMessage","allowDelete","deleteRow","onDeleteRow","allowAdd","maxRows","createRow","defaultValues","onAddRow","allowReorder","getRowObj","Row","focusOnPrevRow","tdIndex","blurTd","prevRow","$prevTr","$tds","focusOnNextRow","nextRow","$nextTr","importData","lines","textualColTypes","colId","$cell","col","scope","code","createCheckbox","small","createDateInput","createLightswitch","default","createTimeInput","createTextInput","rows","niceTexts","tds","$textareas","tr","td","textareasByColId","NiceText","onHeightChange","onTextareaHeightChange","radioMode","applyToggleCheckbox","autopopulate","HandleGenerator","allowNonAlphaStart","$inputs","onTextareaFocus","onRadioCheckboxChange","checkbox","checkboxColId","neg","checkboxCol","colum","ignoreNextTextareaFocus","charCode","handlePaste","clipboardData","getData","validateValue","safeValue","filterNumberInputVal","tallestTextareaHeight","tdHeight","numericKeyCodes","_afterActivate","_beforeActivate","ElementActionTrigger","maxLevels","newChildUrl","triggerEnabled","batch","bulk","activate","updateTrigger","validateSelection","enableTrigger","disableTrigger","requireId","_call","handleTriggerActivation","globalElementIndex","_openPreview","ElementEditor","isFullPage","$activityContainer","$expandSiteStatusesBtn","$statusIcon","$previewBtn","metaModal","$nameTextInput","$saveMetaBtn","$siteStatusPane","$globalLightswitch","$siteLightswitches","$additionalSiteField","siteIds","newSiteIds","enableAutosave","lastSerializedValue","formObserver","submittingForm","draftElementIds","failed","httpStatus","httpError","openingPreview","preview","activatedPreviewToken","previewTokenQueue","previewLinks","hiddenTipsStorageKey","systemUid","activityTooltips","tipDismissBtn","_this$settings$previe","_createQueue","autosaveDrafts","previewTargets","_$actionBtn$data","$viewAction","getTokenizedPreviewUrl","siteStatuses","$spinnerContainer","canEditMultipleSites","enablePreview","$previewBtnContainer","createPreviewLink","createShareMenu","canSave","edition","Pro","_checkActivity","serializeForm","isProvisionalDraft","initForProvisionalDraft","isUnpublishedDraft","initForDraft","canSaveCanonical","saveDraft","listenForChanges","showStatusHud","handleDismissibleTips","messageReceiver","canonicalId","URL","searchParams","delete","listeningForChanges","pauseLevel","_this$formObserver$_p","_this$formObserver","_pauseLevel","FormObserver","checkForm","stopListeningForChanges","_this$formObserver2","_this$formObserver3","$discardButton","initialHeight","$notice","heightDiff","hashedCpEditUrl","provisional","createEditMetaAction","alt","expandSiteStatuses","$enabledForSiteField","revisionId","_getOtherSupportedSites","_createSiteStatusField","$globalField","_showField","siteStatusValues","hasEnabled","hasDisabled","originalEnabledValue","originalSerializedStatus","encodeURIComponent","enabledForSite","_updateGlobalStatus","serializedStatuses","additionalSites","_createAddlSiteField","_updateSiteStatuses","_removeField","allEnabled","allDisabled","turnOn","turnOff","turnIndeterminate","enabled","fieldClass","$lightswitch","selectLabelId","$addlSiteSelectLabel","$addlSiteSelectContainer","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","labelledBy","$addlSiteSelect","addlSiteInfo","enabledByDefault","_saveFailMessage","_saveSuccessMessage","spinners","statusIcons","statusMessage","destructiveGroup","getFirstDestructiveGroup","addGroup","targetUrl","targetLabel","activatePreviewToken","updatePreviewLinks","updatePreviewLinkHref","isLive","getPreviewTokenParams","previewToken","getPreviewToken","randoParam","asPromise","siteToken","previewUrl","tokenParam","createTokenParams","getPreview","$statusIcons","_this14$formObserver","_this14$formObserver2","ensureIsDraftOrRevision","onlyIfChanged","setFormValue","canCreateDrafts","markDeltaNameAsModified","names","removeActionParams","isPreviewActive","$editor","actionName","redirectName","RegExp","escapeRegex","_saveDraftInternal","updateFieldLayout","modifiedDeltaNames","findModifiedDeltaNames","prepareData","$modifiedFields","escapeSelector","param","visibleLayoutElements","selectedTabId","_saveHeaders","_afterSaveDraft","_afterUpdateFieldLayout","createdProvisionalDraft","docTitle","siteSettings","draftName","creator","timestamp","updatePreviewTargets","checkMetaValues","modifiedAttributes","updatedTimestamp","canonicalUpdatedTimestamp","afterUpdate","pageId","_showFailStatus","setStatusMessage","modifiedFieldNames","preparedData","deltaName","decodeURIComponent","extraData","deltaCallback","asArray","getDraftElementId","newTarget","$previewLink","noChanges","newSelectedTabId","$allTabContainers","changedElements","tabInfo","$oldElement","_$oldElement","$placeholder","$unusedTabContainers","$newSelectedTab","missingElements","showMetaModal","createMetaModal","$modal","$hudBody","$nameField","$nameInputContainer","saveMeta","shakeMetaModal","shake","_this26","_this27","stopImmediatePropagation","autosave","customTrigger","_this28","hideTip","getHiddenTipsUids","setHiddenTipsUids","uids","targetElement","$targetParent","layoutElementUid","Storage","hiddenTips","_this29","dontExtendSession","focusedTooltip","activity","userName","$thumb","userThumb","Tooltip","_Object$keys","elementUpdated","canonicalUpdated","$reloadBtn","ElementEditorSlideout","editor","saveParams","onSaveElement","validators","expandData","ElementFieldSettings","allowMultipleSources","$maintainHierarchyField","$maintainHierarchyButton","$sourcesField","$sourceSelect","$branchLimitField","$maxRelationsField","$minRelationsField","$viewModeField","maintainHierarchyFieldId","branchLimitFieldId","minRelationsFieldId","maxRelationsFieldId","viewModeFieldId","updateLimitFields","updateMaintainHierarchyField","showField","$checkedInputs","ElementTableSorter","tableView","_helperMargin","_$firstRowCells","_$titleHelperCell","_titleHelperCellOuterWidth","_ancestors","_updateAncestorsFrame","_draggeeLevel","_draggeeLevelDelta","draggingLastElements","_loadingDraggeeLevelDelta","_targetLevel","_targetLevelBounds","_positionChanged","singleHelper","helperSpacingY","findDraggee","_level","$nextRow","nextRowLevel","nextRowLevelDelta","_getAjaxBaseData","dragging","delta","drag","$outerContainer","$innerContainer","$helperCell","$firstRowCell","canInsertBefore","_getLevelBounds","canInsertAfter","onDragStart","_getAncestors","_setTargetLevelBounds","onDrag","_updateIndent","_updateAncestorsBeforeRepaint","onDragStop","levelDiff","newLevel","padding","_getLevelIndent","$structureTextAlternative","altText","structureId","$spinnerRow","$prevRow","prevRowLevel","prevId","_createSpinnerRowAfter","onPositionChange","_expandElement","onReturnHelpersToDraggees","newDraggeeIndexes","oldDraggeeIndexes","$postDraggeeItems","nextAll","_minLevel","_maxLevel","forcePositionChange","_mouseDist","realMouseX","mousedownX","_indentationDist","LEVEL_INDENT","_targetLevelMouseDiff","_magnetImpact","MAX_GIVE","_closestLevelMagnetIndent","level","targetLevel","_$prevRow","_updateAncestors","_$ancestor","_newAncestors","ancestorTitle","HELPER_MARGIN","workers","Worker","$thumbs","addToQueue","invisibleThumbs","thumb","active","loadNext","retryAll","_Craft$ElementThumbLo","loader","_interval","_timeout","loadNextIfRemoved","deactivate","_clearInterval","_clearTimeout","$img","sizes","srcset","picturefill","ElevatedSessionForm","inputs","form","getInputPostVal","handleFormSubmit","elevatedSessionManager","fetchingTimeout","inputsChanged","$currentInput","requireElevatedSession","EntryIndex","publishableSections","$newEntryBtnGroup","$newEntryBtn","includedSections","section","defaultSectionHandle","sectionHandle","entryTypeHandle","selectedSection","_createEntry","sectionId","entry","FieldLayoutDesigner","$configInput","$newTabBtn","$libraryContainer","$selectedLibrary","$fieldLibrary","$uiLibrary","$uiLibraryElements","$fieldSearch","$clearFieldSearchBtn","$fieldGroups","$fields","$createFieldBtn","tabGrid","elementDrag","_config","_$selectedFields","parse","_fieldHandles","$workspace","$fieldSearchContainer","Grid","itemSelector","minColWidth","fillMode","snapToGrid","initTab","ElementDrag","initLibraryElements","customizableTabs","tabDrag","TabDrag","customizableUi","$libraryPicker","updateFieldSearchResults","refreshSelectedFields","$matches","$group","Tab","removeFieldByHandle","addTab","$lastTab","updatePositionInConfig","config","updateConfig","refreshLibraryFields","$fieldGroup","hasHandle","$selector","_$fields$eq$data","selectorHtml","designer","$libraryElement","cloneLibraryElementForSelection","initElement","refreshCols","display","createSlideout","js","_callee3$","settingsHtml","eval","destroyed","createMenu","$tabContent","onActivate","moveUl","moveLeftBtn","moveLeft","moveRightBtn","moveRight","layoutConfig","settingsNamespace","applySettings","labelHtml","Element","designerConfig","newIndex","tabConfig","oldIndex","isMandatory","isMultiInstance","isField","requirable","thumbable","previewable","hasCustomWidth","hasSettings","defaultHandle","initUi","SlidePicker","valueLabel","pct","makeRequiredBtn","dropRequiredBtn","makeThumbnailBtn","dropThumbnailBtn","showInCardsBtn","omitFromCardsBtn","showFieldEditor","actionUl","iconColor","makeRequired","dropRequired","makeThumbnail","dropThumbnail","showInCards","omitFromCards","moveGroup","moveUpBtn","moveUp","moveDownBtn","moveDown","required","providesThumbs","includeInCards","$fieldsContainer","applyConfig","multiInstanceTypesOnly","$oldSelector","$newSelector","_$fields$eq$data2","_callee11","_context11","_callee12","_context12","_callee13","_context13","_callee14","_context14","_callee15","withSettings","_e$response3","_e$response4","$oldContainer","$newContainer","_context15","_callee16","_context16","elementConfig","BaseDrag","Drag","$insertion","showingInsertion","$caboose","findItems","createInsertion","createCaboose","removeCaboose","swapDraggeeWithInsertion","swapInsertionWithDraggee","setMidpoints","_closestItem","_closestItemMouseDiff","_$item","_midpoint","_mouseDiff","getDist","checkForNewClosestItem","draggeeDisplay","_showDraggee","draggingLibraryElement","draggingField","draggingMultiInstanceElement","originalTab","isDraggeeMandatory","isHoveringOverTab","hitTest","$fieldContainers","FieldToggle","targetPrefix","reverseTargetSelector","_$reverseTarget","getType","normalizeTargetSelector","findTargets","onToggleChange","getToggleVal","boolean","postVal","_show","_callback","_recentKeypress","_formData","_mutationObserver","_selectizeInputs","_serialize","_checkFormAfterDelay","MutationObserver","records","record","_formChanged","addedNodes","node","_initSelectizeInputs","attributeName","_initSelectizeInput","childList","subtree","characterData","attributeFilter","hasAttribute","_hasNamedNodes","removedNodes","parentNode","nodes","disconnect","totalCols","colGutterDrop","colPctWidth","possibleItemColspans","possibleItemPositionsByColspan","itemPositions","itemColspansByPosition","layouts","layout","itemHeights","leftPadding","_refreshingCols","_refreshColsAfterRefresh","_forceRefreshColsAfterRefresh","handleContainerHeightProxy","setItems","oldHeight","scrollHeight","cols","maxCols","gutter","itemIndex","tallestItemHeight","colIndex","itemHeight","remainder","itemHeightsByColspan","positionRight","positionLeft","minColspan","maxColspan","colspan","getItemWidthCss","minPosition","maxPosition","colHeights","createLayouts","layoutTotalCols","highestTotalCols","layoutHeights","shortestHeight","shortestLayouts","emptySpaces","emptySpace","colspans","getItemLeftPosCss","positions","isSimpleLayout","positionItems","completeRefreshCols","onRefreshCols","getItemWidth","getItemWidthInPx","getItemLeftPosInPx","prevPositions","prevColspans","prevColHeights","prevEmptySpace","LayoutGenerator","endingCol","affectedColHeights","onItemResize","newHeight","colClass","tallestColHeightsByPosition","colHeightsForPosition","tallestColHeight","asciiString","words","filterArray","handleCasing","toUpperCase","IconPicker","$preview","$chooseBtn","$removeBtn","$searchInput","$iconListContainer","$iconList","defaultListHtml","removeIcon","updateIcons","selectIcon","listHtml","loadIcons","ImageUpload","containerSelector","initImageUpload","uploadAction","postParameters","fileInputSelector","uploadParamName","initButtons","uploadButtonSelector","deleteButtonSelector","refreshImage","onAfterRefreshImage","_response$jqXHR","_ref2$errors","InfoIcon","$liveRegion","previousSibling","nodeType","Node","TEXT_NODE","nodeValue","showHud","closeOtherHUDs","LightSwitch","indeterminate","dragger","dragStartMargin","outerContainer","X_AXIS","_onDragStart","_onDrag","_onDragStop","$wrapper","muteEvent","changed","_onSettle","_getOffMargin","indeterminateValue","_onMouseDown","_onMouseUp","_getMargin","mouseDistX","selectedOptionIndex","focusClass","LivePreview","$extraFields","$dragHandle","$previewContainer","$iframeContainer","$iframe","$fieldPlaceholder","basePostData","fields","lastPostData","updateIframeInterval","checkAgain","dragStartEditorWidth","_slideInOnIframeLoad","_scrollX","_scrollY","_editorWidth","_editorWidthInPx","baseSiteUrl","protocol","previewParams","extraFields","defaultEditorWidth","moveFieldsBack","editorWidthInPx","inPx","minEditorWidthInPx","exit","enter","$editorHeader","getIframeWidth","$clone","_getClone","updateIframe","slideIn","createToken","previewAction","updateWidths","animateLeft","animateRight","$newClone","field","contentWindow","scrollLeft","ajax","xhrFields","withCredentials","crossDomain","handleSuccess","handleError","forceUpdateIframe","write","copyInputValues","getActive","_createElement","NestedElementManager","initCards","initElementIndex","createButtonLabel","updateCreateBtn","createAttributes","createMenuId","buttonHtml","ownerId","ownerIdParam","showInGrid","deinitCards","_onSortChange","markAsDirty","baseInputName","getBaseActionData","ownerElementType","ownerSiteId","allIds","getElementIds","t1","t2","getBaseElementOffset","t3","maxElements","getTotalElements","minElements","addElementCard","ul","deleteLabel","deleteConfirmationMessage","deleteElement","_e$response$data$mess","_e$response5","fieldHandle","PasswordInput","$passwordWrapper","$textInput","$showPasswordToggle","showingPassword","passwordInput","initInputFocusEvents","hidePassword","setCurrentInput","updateToggleLabel","showPassword","autocapitalize","togglePassword","onToggleInput","onInputChange","onClick","setSelectionRange","selectionStart","selectionEnd","$previewWrapper","$previewSkipLink","$bumperLink","$notifier","$previewHeader","$targetBtn","$targetMenu","$deviceTypeContainer","$orientationBtn","$deviceMask","$devicePreviewContainer","iframeLoaded","$tempInput","activeTarget","currentDeviceType","deviceOrientation","deviceWidth","deviceHeight","deviceMaskDimensions","phone","tablet","iframeHeight","_updateIframeProxy","previewSkipLinkText","$modalLabel","switchTarget","_buildDeviceTypeFieldset","$buttonContainer","_getDeviceTypeTranslation","translation","_getDeviceOrientationTranslation","deviceType","deviceBtnGroup","switchDeviceType","_activeTarget","_autoRefresh","previewTarget","hideModalBackgroundLayers","resetModalBackgroundLayerVisibility","_devicePreviewIsActive","updateDevicePreview","_useIframeResizer","previewIframeResizerOptions","resetScroll","sameHost","isSameHost","frameborder","src","iFrameResize","checkOrigin","scrolling","onInit","iframe","_updateNotifier","newDeviceType","switchOrientation","hZoom","wZoom","previewHeight","previewWidth","maskHeight","maskWidth","translate","rotationDeg","marginTop","marginLeft","$triggerElement","$bumperButtonStart","$bumperButtonEnd","requestId","jQuery","defaultSettings","_onHide","instance","loadAsset","focusItem","_addBumperButtons","_addModalName","destruct","desiredHeight","containerHeight","containerWidth","_resizeContainer","previewHtml","resizePreviewImage","maxHeight","imageFocalPoint","renderFocal","$innerProgressBar","$progressBarStatus","_itemCount","_processedItemCount","_displaySteps","displaySteps","setProcessedItemCount","count","incrementItemCount","percentage","$modalContainerDiv","$prompt","$promptApplyToRemainingContainer","$promptApplyToRemainingCheckbox","$promptApplyToRemainingLabel","$pomptChoices","_prompts","_promptBatchCallback","_promptBatchReturnData","_promptBatchNum","_showNextPromptInBatch","remainingInBatch","_showPrompt","_handleBatchPromptSelection","applyToRemaining","choiceData","itemsToGo","_promptCallback","$promptMessage","$promptChoices","$promptButtons","$radioButton","_selectPromptChoice","number","fadeOut","_cancelPrompt","running","paused","pausedForVisibility","isPaused","_resume","job","_add","qResolve","qReject","_exec","totalSteps","HOME_KEY","END_KEY","_min","_max","Number","isInteger","prevAll","triggerEvent","$activeButton","startPositionX","graduationsMin","graduationsMax","slideMin","slideMax","$overlay","$cursor","$graduations","$graduationsUl","_handleResize","_handleTapStart","_handleTapMove","_handleTapEnd","_handleKeypress","graduationsCalculatedWidth","valueToPosition","current","PAGE_UP_KEY","PAGE_DOWN_KEY","touch","startLeft","curX","positionToValue","scaleMin","scaleMax","addModalAttributes","autoOpen","setTriggerElement","_cancelTransitionListeners","activePreview","updateWidthsForPreviewPane","dragHandler","addPanel","removePanel","filterObject","openPanels","panel","updateStyles","totalPanels","SlugGenerator","limitAutoSlugsToAscii","charMap","allowUppercaseInSlug","XRegExp","matchChain","slugWordSeparator","Structure","structureDrag","$parents","initToggle","StructureDrag","initNewChildMenus","viewStateKey","$addBtns","onNewChildMenuClick","showMenu","getIndent","baseIndent","nestedIndent","addElement","$parentUl","_removeUl","structure","draggeeLevel","$helperLi","$targets","draggeeHeight","$level","cancelDrag","$lis","$closestTarget","closestTargetPos","closestTargetYDiff","closestTargetOffset","closestTargetHeight","targetOffset","targetHeight","targetYMidpoint","targetYDiff","$closestTargetLi","closestTargetLevel","$nextTargetLi","nextTargetLevel","hoveringBetweenRows","draggeeX","targetItemMouseDiffX","$parentLis","$closestParentLi","closestParentLiXDiff","closestParentLevel","$parentLi","parentLiX","parentLiXDiff","parentLevel","onMouseUp","$draggeeParent","moved","$closestSiblings","setLevel","indent","$childLis","_saveChanges","$tableCaption","$selectedSortHeader","$editBtn","tableSort","_totalVisiblePostStructureTableDraggee","_morePendingPostStructureTableDraggee","_broadcastListener","initialSerializedValue","initTableHeaders","setContainerHeight","_collapseElement","initForInlineEditing","elementHtml","attributeHtml","serializeInputs","saveChanges","getDeltaInputChanges","haveInputsChanged","selectedSortAttr","selectedSortDir","$tableHeaders","sortValue","makeColumnSortable","sorted","headerHtml","$headerButton","_handleSelectedSortHeaderClick","_handleUnselectedSortHeaderClick","_isStructureTableDraggingLastElements","positionedAfter","$tablePane","$nextNextRow","descendantOf","$nextRows","newSortDir","_handleSortHeaderClick","_updateTableAttributes","$firstTab","makeTabFocusable","scrollToTab","updateMenuBtn","getMenuOptions","focusTab","_getTab","$slideoutContainer","elemScrollOffset","targetScrollLeft","tabWidth","ulWidth","TagSelectInput","searchMenu","$addTagInput","_ignoreBlur","searchForTags","selectTag","$hoverOption","$nextOption","focusOption","$prevOption","killSearchMenu","excludeIds","tagGroupId","tags","exclude","exactMatch","Menu","attachToElement","targetSiteId","$chipContent","$titleContainer","$labelLinkContainer","_$trigger","_message","$p","hoverTimeout","triggerHit","shownViaHover","tagName","withShade","bodyContents","showContainer","hideContainer","autocomplete","inputmode","maxlength","autofocus","getAutofocusValue","getDisabledValue","readonly","showCharsLeft","createPasswordInput","createPasswordField","createCopyTextInput","buttonId","execCommand","createCopyTextBtn","copyValue","createCopyTextField","createCopyTextPrompt","createTextarea","createTextareaField","$select","$optgroup","selected","reverseToggle","createCheckboxField","allChecked","allValue","allLabel","aPos","bPos","ensureEndsWith","CheckboxSelect","dragSort","$colorPreviewContainer","ltrim","createColorField","getMonth","toISOString","formatDate","timezone","datetimeinput","datepicker","defaultDate","datepickerOptions","hasOuterContainer","datetime","createDateField","createDateRangePicker","today","getFullYear","getDate","startDate","endDate","$allOption","firstDayOffset","getDay","firstDay","getTime","$flex","$startDate","$endDate","$dateInputs","dpDiv","setPositionRelativeToAnchor","startDateVal","endDateVal","startTime","endTime","foundOption","date","btnClasses","getTimezoneOffset","timepicker","timepickerOptions","getHours","getMinutes","getSeconds","createTimeField","tip","warning","$warning","createErrorList","fieldErrorsId","addErrorsToList","replaceAll","$errors","errorSummaryContainer","anchorSummaryErrorToField","findErrorsContainerByErrorKey","fieldErrorKey","errorsElement","$fieldErrorsContainer","$tabAnchor","$collapsedParents","fieldTabDivs","tabDiv","tabAnchor","Uploader","_totalFileCounter","_validFileCounter","_onFileAdd","fileupload","handler","onFileAdd","validateExtension","process","pass","fileExtension","originalFiles","autoUpload","sequentialUploads","replaceFileInput","UriFormatGenerator","uriFormat","suffix","UserIndex","updateUrl","defaultSourceSlug","slug","__esModule","module","locals","exports","listToStyles","list","styles","newStyles","part","media","sourceMap","parts","hasDocument","DEBUG","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","navigator","userAgent","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","ssrId","btoa","unescape","firstChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","valueof","epsilon","translateX","translateY","center","bandwidth","entering","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","ticks","domain","spacing","range","range0","range1","copy","tick","tickExit","tickEnter","line","insert","transition","isFinite","tickSize","axisRight","axisBottom","axisLeft","none","matches","childMatcher","childFirst","firstElementChild","EnterNode","datum","ownerDocument","namespaceURI","_parent","__data__","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","arraylike","ascending","NaN","child","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","string","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","nextSibling","lower","creatorInherit","createElementNS","creatorFixed","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","typename","__on","listener","onAdd","contextListener","createEvent","initEvent","bubbles","cancelable","dispatchConstant","dispatchFunction","root","Selection","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","getAttributeNS","property","classed","before","deep","typenames","parseTypenames","dispatch","Dispatch","types","T","that","taskHead","taskTail","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_time","timer","restart","wake","timerFlush","Infinity","sleep","nap","poke","elapsed","emptyOn","emptyTween","CREATED","STARTED","timing","schedules","__transition","tween","start","ease","schedule","svgNode","rotate","skewX","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","q","xa","ya","xb","yb","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","factory","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","exec","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","basis","v0","v1","v2","v3","channels","displayable","formatHex8","formatHsl","clamp","nogamma","linear","rgbGamma","exponential","gamma","end","rgbSpline","spline","colors","reA","reB","am","bm","bs","bi","zero","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","interrupt","defaultTiming","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","comma","precision","exponent","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","e10","e5","e2","tickSpec","power","log10","factor","i2","inc","tickIncrement","tickStep","descending","bisector","compare1","compare2","lo","hi","mid","ascendingBisect","bisectRight","genericArray","nb","na","setTime","ArrayBuffer","isView","DataView","valueOf","unit","normalize","bimap","d0","d1","r0","r1","polymap","bisect","unknown","continuous","untransform","piecewise","output","rescale","invert","rangeRound","transformer","initRange","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","maxIter","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationYear","timeInterval","floori","offseti","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pad","pads","newParse","Z","Q","V","W","U","X","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","dISO","z","getUTCMilliseconds","dow","UTCdISO","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","x0","x1","Linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","lineTo","moveTo","pi","tau","tauEpsilon","strings","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","dx","dy","cw","da","rect","withPath","shape","RangeError","defined","curve","buffer","defined0","applyX","applyY","invertX","invertY","rescaleX","rescaleY","_appendBodyHtml","_appendHeadHtml","_appendHtml2","rxhtmlTag","htmlPrefilter","navHeight","isIterable","NodeList","fromEntries","grouped","thisKey","category","translations","formatMessage","pattern","tokens","_tokenizePattern","_parseToken","pos","depth","chars","formatNumber","plural","selectorChars","dateFormat","d3","d3FormatLocaleDefinition","formatter","shortcutText","clientOs","getText","encodeUriComponent","differences","chr","rtrim","anchor","anchorPos","URLSearchParams","qsPos","isEmptyObject","pathParam","pathMatch","omitScriptNameInUrls","usePathInfo","scriptName","trimEnd","getSiteUrl","hash","origin","pathname","qs","pageTrigger","pageParam","postActionRequest","contentType","_actionHeaders","textStatus","errorThrown","readyState","send","Set","registeredAssetBundles","registeredJsFiles","_getApiHeaders","apiHeaders","baseURL","baseApiUrl","apiParams","_apiHeaders","processCraftHeaders","httpProxy","proxy","apiResponse","_processApiHeaders","_loadingApiHeaders","_apiHeaderWaitlist","_rejectApiRequests","clearCachedApiHeaders","XMLHttpRequest","setRequestHeader","responseType","onload","disposition","getResponseHeader","blob","Blob","createObjectURL","stringToArray","oldData","newData","forceModifiedDeltaNames","_this$findModifiedDel2","groupedNewParams","__root__","mostSpecific","groupedOldParams","_groupParamsByDeltaNames","withRoot","initialValues","encodeURIComponentExceptEqualChar","paramLoop","_iterator6","serializeParam","subName","parentElem","chunks","obj1","obj2","sortObjectKeys","getObjectKeys","escapeChars","escaped","trimStart","substr","ensureStartsWith","endsWith","filtered","removeFromArray","getLast","uppercaseFirst","lowercaseFirst","parseUrl","scheme","host","port","query","requestUrlInfo","urlInfo","showSeconds","secondsInWeek","weeks","minutes","hours","timeComponents","char","asciiStr","asciiCharMap","crypto","randomUUID","getRandomValues","Uint8Array","_existingCss","_existingJs","_appendHtml","parseHTML","resourceBaseUrl","appendFootHtml","infoicon","checkboxselect","fieldtoggle","lightswitch","nicetext","formsubmit","_elementIndexClasses","_elementSelectorModalClasses","_elementEditorClasses","_uploaderClasses","_authFormHandlers","registerUploaderClass","registerAuthFormHandler","createAuthFormHandler","showError","localStorage","removeItem","getCookie","cookie","defaultCookieOptions","maxAge","expires","toUTCString","secure","removeCookie","hasThumb","otherSize","$oldImg","$newImg","refreshElementInstances","elementsBySite","_step7","$replacement","_iterator7","$actions","$oldStatus","$newStatus","$chips","_step8","$chip","_iterator8","chip","safeActions","destructiveActions","_submitFormInternal","_options$namespace","filterInputVal","regex","newVal","dataAttributes","subValue","_step9","_iterator9","visibilityState","BroadcastChannel","channelName","appId","bufferToBase64URLString","fromCharCode","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","descriptor","transports","easing","$elem","settingName","settingValue","thisSettings","$anchor","menuAnchor","checkValue","hasValue","charsLeftHtml","charsLeft","charts","DataTable","cellIndex","parseTime","Tip","setContent","setPosition","BaseChart","$chart","chartBaseClass","dataTable","timeFormatLocale","globalSettings","d3Formats","formatLocaleDefinition","timeFormatLocaleDefinition","d3TimeFormatLocaleDefinition","resize","baseSettings","draw","chartClass","onAfterDrawTicks","tickKey","$tickText","numberFormat","percentFormat","currencyFormat","shortDateFormats","Area","drawingArea","getChartMargin","drawTicks","drawAxes","drawChart","drawTipTriggers","xAxis","getX","getXFormatter","yAxis","getY","getYFormatter","getYTickValues","showAxis","gridlines","xLineAxis","yLineAxis","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","plots","tips","chartMargin","xAxisTickInterval","getTotalLength","tipTriggerWidth","dataValue","$xValue","$yValue","yTicksMaxWidth","computedTickWidth","xDomainMin","xDomainMax","xDomain","yDomain","getYMaxValue","utils","getTimeFormatter","getNumberFormatter","maxValue","getDuration","secondsNum","chartSettings","dataScale","WebAuthnError","cause","super","webauthnAbortService","controller","createNewAbortSignal","abortError","abort","newController","AbortController","signal","attachments","toAuthenticatorAttachment","attachment","startAuthentication","requestOptionsJSON","useBrowserAutofill","allowCredentials","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","AbortSignal","effectiveDomain","rpId","identifyAuthenticationError","rawId","userHandle","TextDecoder","decode","bufferToUTF8String","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","platformAuthenticatorIsAvailable","isUserVerifyingPlatformAuthenticatorAvailable","ElevatedSessionManager","minSafeElevatedSessionTimeout","forElevatedSession","$usernameInput","$rememberMeCheckbox","$forgotPasswordLink","submitBtn","$altMethodContainer","$passkeyBtn","resetPasswordForm","validateOnInput","changeButtonText","$newPasswordInput","onResize","loginWithPasskey","validate","usernameValidates","validateUsernameOrEmail","passwordLength","minPasswordLength","maxPasswordLength","onInput","loginName","password","rememberMe","authMethod","show2faForm","returnUrl","failureEvent","showResetPasswordForm","ResetPasswordForm","$authForm","$hr","$altContainer","authForm","otherMethods","log","optionsResponse","authResponse","loginResponse","useEmailAsUsername","loginForm","$backBtn","MessageSentModal","showLoginForm","createCoords","oppositeSideMap","oppositeAlignmentMap","placement","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","expandPaddingObject","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","rects","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","isNode","getWindow","_node$ownerDocument","isHTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","overflowX","isTableElement","isContainingBlock","webkit","isWebKit","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","getNodeScroll","pageXOffset","pageYOffset","getParentNode","assignedSlot","getNearestOverflowAncestor","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","hasOffset","offsetHeight","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","clippingAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","centerOffset","CraftTooltip","arrowElement","delayTimeout","renderInner","renderArrow","listeners","_this$parentElement","parentElement","handleKeyUp","_this2$parentElement","inner","getStaticSide","pointerEvents","getInitialTransform","mergedOptions","platformWithCache","middleware","validMiddleware","statefulPlacement","resetCount","nextX","nextY","initialPlacement","computePosition","_middlewareData$flip","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","bt","getSideList","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$map$so","acc","arrowX","arrowY"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"cp.js","mappings":"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","sources":["webpack:///./js/Accordion.js","webpack:///./js/AdminTable.js","webpack:///./js/AssetImageEditor.js","webpack:///./js/AssetIndex.js","webpack:///./js/AssetMover.js","webpack:///./js/AssetSelectInput.js","webpack:///./js/AssetSelectorModal.js","webpack:///./js/AssetsFieldSettings.js","webpack:///./js/AuthManager.js","webpack:///./js/BaseElementIndex.js","webpack:///./js/BaseElementIndexView.js","webpack:///./js/BaseElementSelectInput.js","webpack:///./js/BaseElementSelectorModal.js","webpack:///./js/BaseInputGenerator.js","webpack:///./js/BaseUploader.js","webpack:///./js/CP.js","webpack:///./js/CardsElementIndexView.js","webpack:///./js/CategoryIndex.js","webpack:///./js/CategorySelectInput.js","webpack:///./js/ColorInput.js","webpack:///./js/ComponentSelectInput.js","webpack:///./js/CpModal.js","webpack:///./js/CpScreenSlideout.js","webpack:///./js/CraftDisclosure.js","webpack:///./js/CraftElementLabel.js","webpack:///./js/CraftGlobalSidebar.js","webpack:///./js/CraftProxyScrollbar.js","webpack:///./js/CustomizeSourcesModal.js","webpack:///./js/DataTableSorter.js","webpack:///./js/DeleteUserModal.js","webpack:///./js/DynamicGenerator.js","webpack:///./js/EditableTable.js","webpack:///./js/ElementActionTrigger.js","webpack:///./js/ElementEditor.js","webpack:///./js/ElementEditorSlideout.js","webpack:///./js/ElementFieldSettings.js","webpack:///./js/ElementTableSorter.js","webpack:///./js/ElementThumbLoader.js","webpack:///./js/ElevatedSessionForm.js","webpack:///./js/EntryIndex.js","webpack:///./js/FieldLayoutDesigner.js","webpack:///./js/FieldToggle.js","webpack:///./js/FormObserver.js","webpack:///./js/Grid.js","webpack:///./js/HandleGenerator.js","webpack:///./js/IconPicker.js","webpack:///./js/ImageUpload.js","webpack:///./js/InfoIcon.js","webpack:///./js/LightSwitch.js","webpack:///./js/Listbox.js","webpack:///./js/LivePreview.js","webpack:///./js/NestedElementManager.js","webpack:///./js/PasswordInput.js","webpack:///./js/Preview.js","webpack:///./js/PreviewFileModal.js","webpack:///./js/ProgressBar.js","webpack:///./js/PromptHandler.js","webpack:///./js/Queue.js","webpack:///./js/SlidePicker.js","webpack:///./js/SlideRuleInput.js","webpack:///./js/Slideout.js","webpack:///./js/SlugGenerator.js","webpack:///./js/Structure.js","webpack:///./js/StructureDrag.js","webpack:///./js/TableElementIndexView.js","webpack:///./js/Tabs.js","webpack:///./js/TagSelectInput.js","webpack:///./js/ThumbsElementIndexView.js","webpack:///./js/Tooltip.js","webpack:///./js/UI.js","webpack:///./js/Uploader.js","webpack:///./js/UriFormatGenerator.js","webpack:///./js/UserIndex.js","webpack:///./js/VolumeFolderSelectorModal.js","webpack:///./css/charts.scss?4afb","webpack:///./css/craft.scss?1b58","webpack:///../../../../../node_modules/vue-style-loader/lib/listToStyles.js","webpack:///../../../../../node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///../../../../../node_modules/d3-array/src/max.js","webpack:///../../../../../node_modules/d3-axis/src/identity.js","webpack:///../../../../../node_modules/d3-axis/src/axis.js","webpack:///../../../../../node_modules/d3-selection/src/selector.js","webpack:///../../../../../node_modules/d3-selection/src/selectorAll.js","webpack:///../../../../../node_modules/d3-selection/src/matcher.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectChild.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectChildren.js","webpack:///../../../../../node_modules/d3-selection/src/selection/sparse.js","webpack:///../../../../../node_modules/d3-selection/src/selection/enter.js","webpack:///../../../../../node_modules/d3-selection/src/selection/data.js","webpack:///../../../../../node_modules/d3-selection/src/selection/sort.js","webpack:///../../../../../node_modules/d3-selection/src/namespaces.js","webpack:///../../../../../node_modules/d3-selection/src/namespace.js","webpack:///../../../../../node_modules/d3-selection/src/selection/attr.js","webpack:///../../../../../node_modules/d3-selection/src/window.js","webpack:///../../../../../node_modules/d3-selection/src/selection/style.js","webpack:///../../../../../node_modules/d3-selection/src/selection/property.js","webpack:///../../../../../node_modules/d3-selection/src/selection/classed.js","webpack:///../../../../../node_modules/d3-selection/src/selection/text.js","webpack:///../../../../../node_modules/d3-selection/src/selection/html.js","webpack:///../../../../../node_modules/d3-selection/src/selection/raise.js","webpack:///../../../../../node_modules/d3-selection/src/selection/lower.js","webpack:///../../../../../node_modules/d3-selection/src/creator.js","webpack:///../../../../../node_modules/d3-selection/src/selection/insert.js","webpack:///../../../../../node_modules/d3-selection/src/selection/remove.js","webpack:///../../../../../node_modules/d3-selection/src/selection/clone.js","webpack:///../../../../../node_modules/d3-selection/src/selection/on.js","webpack:///../../../../../node_modules/d3-selection/src/selection/dispatch.js","webpack:///../../../../../node_modules/d3-selection/src/selection/index.js","webpack:///../../../../../node_modules/d3-selection/src/selection/select.js","webpack:///../../../../../node_modules/d3-selection/src/selection/selectAll.js","webpack:///../../../../../node_modules/d3-selection/src/array.js","webpack:///../../../../../node_modules/d3-selection/src/selection/filter.js","webpack:///../../../../../node_modules/d3-selection/src/constant.js","webpack:///../../../../../node_modules/d3-selection/src/selection/exit.js","webpack:///../../../../../node_modules/d3-selection/src/selection/join.js","webpack:///../../../../../node_modules/d3-selection/src/selection/merge.js","webpack:///../../../../../node_modules/d3-selection/src/selection/order.js","webpack:///../../../../../node_modules/d3-selection/src/selection/call.js","webpack:///../../../../../node_modules/d3-selection/src/selection/nodes.js","webpack:///../../../../../node_modules/d3-selection/src/selection/node.js","webpack:///../../../../../node_modules/d3-selection/src/selection/size.js","webpack:///../../../../../node_modules/d3-selection/src/selection/empty.js","webpack:///../../../../../node_modules/d3-selection/src/selection/each.js","webpack:///../../../../../node_modules/d3-selection/src/selection/append.js","webpack:///../../../../../node_modules/d3-selection/src/selection/datum.js","webpack:///../../../../../node_modules/d3-selection/src/selection/iterator.js","webpack:///../../../../../node_modules/d3-dispatch/src/dispatch.js","webpack:///../../../../../node_modules/d3-timer/src/timer.js","webpack:///../../../../../node_modules/d3-timer/src/timeout.js","webpack:///../../../../../node_modules/d3-transition/src/transition/schedule.js","webpack:///../../../../../node_modules/d3-interpolate/src/number.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/decompose.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/parse.js","webpack:///../../../../../node_modules/d3-interpolate/src/transform/index.js","webpack:///../../../../../node_modules/d3-transition/src/transition/tween.js","webpack:///../../../../../node_modules/d3-color/src/define.js","webpack:///../../../../../node_modules/d3-color/src/color.js","webpack:///../../../../../node_modules/d3-interpolate/src/basis.js","webpack:///../../../../../node_modules/d3-interpolate/src/constant.js","webpack:///../../../../../node_modules/d3-interpolate/src/color.js","webpack:///../../../../../node_modules/d3-interpolate/src/rgb.js","webpack:///../../../../../node_modules/d3-interpolate/src/basisClosed.js","webpack:///../../../../../node_modules/d3-interpolate/src/string.js","webpack:///../../../../../node_modules/d3-transition/src/transition/interpolate.js","webpack:///../../../../../node_modules/d3-transition/src/transition/attr.js","webpack:///../../../../../node_modules/d3-transition/src/transition/attrTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/delay.js","webpack:///../../../../../node_modules/d3-transition/src/transition/duration.js","webpack:///../../../../../node_modules/d3-transition/src/transition/selection.js","webpack:///../../../../../node_modules/d3-transition/src/transition/style.js","webpack:///../../../../../node_modules/d3-transition/src/transition/index.js","webpack:///../../../../../node_modules/d3-transition/src/transition/select.js","webpack:///../../../../../node_modules/d3-transition/src/transition/selectAll.js","webpack:///../../../../../node_modules/d3-transition/src/transition/filter.js","webpack:///../../../../../node_modules/d3-transition/src/transition/merge.js","webpack:///../../../../../node_modules/d3-transition/src/transition/transition.js","webpack:///../../../../../node_modules/d3-transition/src/transition/on.js","webpack:///../../../../../node_modules/d3-transition/src/transition/styleTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/text.js","webpack:///../../../../../node_modules/d3-transition/src/transition/textTween.js","webpack:///../../../../../node_modules/d3-transition/src/transition/remove.js","webpack:///../../../../../node_modules/d3-transition/src/transition/ease.js","webpack:///../../../../../node_modules/d3-transition/src/transition/easeVarying.js","webpack:///../../../../../node_modules/d3-transition/src/transition/end.js","webpack:///../../../../../node_modules/d3-transition/src/selection/transition.js","webpack:///../../../../../node_modules/d3-ease/src/cubic.js","webpack:///../../../../../node_modules/d3-transition/src/selection/index.js","webpack:///../../../../../node_modules/d3-transition/src/selection/interrupt.js","webpack:///../../../../../node_modules/d3-transition/src/interrupt.js","webpack:///../../../../../node_modules/d3-brush/src/brush.js","webpack:///../../../../../node_modules/d3-format/src/formatDecimal.js","webpack:///../../../../../node_modules/d3-format/src/exponent.js","webpack:///../../../../../node_modules/d3-format/src/formatSpecifier.js","webpack:///../../../../../node_modules/d3-format/src/formatPrefixAuto.js","webpack:///../../../../../node_modules/d3-format/src/formatRounded.js","webpack:///../../../../../node_modules/d3-format/src/formatTypes.js","webpack:///../../../../../node_modules/d3-format/src/identity.js","webpack:///../../../../../node_modules/d3-format/src/locale.js","webpack:///../../../../../node_modules/d3-format/src/defaultLocale.js","webpack:///../../../../../node_modules/d3-format/src/formatGroup.js","webpack:///../../../../../node_modules/d3-format/src/formatNumerals.js","webpack:///../../../../../node_modules/d3-format/src/formatTrim.js","webpack:///../../../../../node_modules/d3-array/src/ticks.js","webpack:///../../../../../node_modules/d3-array/src/ascending.js","webpack:///../../../../../node_modules/d3-array/src/descending.js","webpack:///../../../../../node_modules/d3-array/src/bisector.js","webpack:///../../../../../node_modules/d3-array/src/bisect.js","webpack:///../../../../../node_modules/d3-array/src/number.js","webpack:///../../../../../node_modules/d3-interpolate/src/array.js","webpack:///../../../../../node_modules/d3-interpolate/src/date.js","webpack:///../../../../../node_modules/d3-interpolate/src/object.js","webpack:///../../../../../node_modules/d3-interpolate/src/numberArray.js","webpack:///../../../../../node_modules/d3-interpolate/src/value.js","webpack:///../../../../../node_modules/d3-interpolate/src/round.js","webpack:///../../../../../node_modules/d3-scale/src/number.js","webpack:///../../../../../node_modules/d3-scale/src/continuous.js","webpack:///../../../../../node_modules/d3-scale/src/constant.js","webpack:///../../../../../node_modules/d3-scale/src/init.js","webpack:///../../../../../node_modules/d3-scale/src/linear.js","webpack:///../../../../../node_modules/d3-scale/src/tickFormat.js","webpack:///../../../../../node_modules/d3-format/src/precisionPrefix.js","webpack:///../../../../../node_modules/d3-format/src/precisionRound.js","webpack:///../../../../../node_modules/d3-format/src/precisionFixed.js","webpack:///../../../../../node_modules/d3-time/src/duration.js","webpack:///../../../../../node_modules/d3-time/src/interval.js","webpack:///../../../../../node_modules/d3-time/src/millisecond.js","webpack:///../../../../../node_modules/d3-time/src/second.js","webpack:///../../../../../node_modules/d3-time/src/minute.js","webpack:///../../../../../node_modules/d3-time/src/hour.js","webpack:///../../../../../node_modules/d3-time/src/day.js","webpack:///../../../../../node_modules/d3-time/src/week.js","webpack:///../../../../../node_modules/d3-time/src/month.js","webpack:///../../../../../node_modules/d3-time/src/year.js","webpack:///../../../../../node_modules/d3-time/src/ticks.js","webpack:///../../../../../node_modules/d3-time-format/src/locale.js","webpack:///../../../../../node_modules/d3-time-format/src/defaultLocale.js","webpack:///../../../../../node_modules/d3-scale/src/time.js","webpack:///../../../../../node_modules/d3-scale/src/nice.js","webpack:///../../../../../node_modules/d3-selection/src/select.js","webpack:///../../../../../node_modules/d3-shape/src/array.js","webpack:///../../../../../node_modules/d3-shape/src/constant.js","webpack:///../../../../../node_modules/d3-shape/src/curve/linear.js","webpack:///../../../../../node_modules/d3-path/src/path.js","webpack:///../../../../../node_modules/d3-shape/src/path.js","webpack:///../../../../../node_modules/d3-shape/src/point.js","webpack:///../../../../../node_modules/d3-shape/src/line.js","webpack:///../../../../../node_modules/d3-zoom/src/transform.js","webpack:///./js/Craft.js","webpack:///../../../../../node_modules/@simplewebauthn/browser/dist/bundle/index.js","webpack:///./js/Chart.js","webpack:///../../../../../node_modules/d3-shape/src/area.js","webpack:///../../../../../node_modules/d3-array/src/min.js","webpack:///./js/ElevatedSessionManager.js","webpack:///./js/LoginForm.js","webpack:///../../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","webpack:///../../../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","webpack:///../../../../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","webpack:///../../../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","webpack:///./js/CraftTooltip.js"],"sourcesContent":["/** global: Craft */\n/** global: Garnish */\n/**\n * Accordion\n */\nCraft.Accordion = Garnish.Base.extend({\n  $trigger: null,\n  targetSelector: null,\n\n  _$target: null,\n\n  init: function (trigger) {\n    this.$trigger = $(trigger);\n\n    // Is this already an accordion trigger?\n    if (this.$trigger.data('accordion')) {\n      console.warn('Double-instantiating an accordion trigger on an element');\n      this.$trigger.data('accordion').destroy();\n    }\n\n    this.$trigger.data('accordion', this);\n    this.targetSelector = this.$trigger.attr('aria-controls')\n      ? `#${this.$trigger.attr('aria-controls')}`\n      : null;\n\n    if (this.targetSelector) {\n      this._$target = $(this.targetSelector);\n    }\n\n    this.addListener(this.$trigger, 'click', 'onTriggerClick');\n    this.addListener(this.$trigger, 'keypress', (event) => {\n      const key = event.keyCode;\n\n      if (key === Garnish.SPACE_KEY || key === Garnish.RETURN_KEY) {\n        event.preventDefault();\n        this.onTriggerClick();\n      }\n    });\n  },\n\n  onTriggerClick: function () {\n    const isOpen = this.$trigger.attr('aria-expanded') === 'true';\n\n    if (isOpen) {\n      this.hideTarget(this._$target);\n    } else {\n      this.showTarget(this._$target);\n    }\n  },\n\n  showTarget: function ($target) {\n    if ($target && $target.length) {\n      this.showTarget._currentHeight = $target.height();\n\n      $target.removeClass('hidden');\n\n      this.$trigger\n        .removeClass('collapsed')\n        .addClass('expanded')\n        .attr('aria-expanded', 'true');\n\n      for (let i = 0; i < $target.length; i++) {\n        (($t) => {\n          if ($t.prop('nodeName') !== 'SPAN') {\n            $t.height('auto');\n            this.showTarget._targetHeight = $t.height();\n            $t.css({\n              height: this.showTarget._currentHeight,\n              overflow: 'hidden',\n            });\n\n            $t.velocity('stop');\n\n            $t.velocity(\n              {height: this.showTarget._targetHeight},\n              Garnish.getUserPreferredAnimationDuration('fast'),\n              function () {\n                $t.css({\n                  height: '',\n                  overflow: '',\n                });\n              }\n            );\n          }\n        })($target.eq(i));\n      }\n\n      delete this.showTarget._targetHeight;\n      delete this.showTarget._currentHeight;\n\n      // Trigger a resize event in case there are any grids in the target that need to initialize\n      Garnish.$win.trigger('resize');\n    }\n  },\n\n  hideTarget: function ($target) {\n    if ($target && $target.length) {\n      this.$trigger\n        .removeClass('expanded')\n        .addClass('collapsed')\n        .attr('aria-expanded', 'false');\n\n      for (let i = 0; i < $target.length; i++) {\n        (($t) => {\n          if ($t.hasClass('hidden')) {\n            return;\n          }\n          if ($t.prop('nodeName') === 'SPAN') {\n            $t.addClass('hidden');\n          } else {\n            $t.css('overflow', 'hidden');\n            $t.velocity('stop');\n            $t.velocity(\n              {height: 0},\n              Garnish.getUserPreferredAnimationDuration('fast'),\n              function () {\n                $t.addClass('hidden');\n              }\n            );\n          }\n        })($target.eq(i));\n      }\n    }\n  },\n\n  destroy: function () {\n    this.$trigger.removeData('accordion');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Admin table class\n */\nCraft.AdminTable = Garnish.Base.extend(\n  {\n    settings: null,\n    totalItems: null,\n    sorter: null,\n\n    $noItems: null,\n    $table: null,\n    $tbody: null,\n    $deleteBtns: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.AdminTable.defaults);\n\n      if (!this.settings.allowDeleteAll) {\n        this.settings.minItems = 1;\n      }\n\n      this.$noItems = $(this.settings.noItemsSelector);\n      this.$table = $(this.settings.tableSelector);\n      this.$tbody = this.$table.children('tbody');\n      this.totalItems = this.$tbody.children().length;\n\n      if (this.settings.sortable) {\n        this.sorter = new Craft.DataTableSorter(this.$table, {\n          onSortChange: this.reorderItems.bind(this),\n        });\n      }\n\n      this.$deleteBtns = this.$table.find('.delete:not(.disabled)');\n      this.addListener(this.$deleteBtns, 'click', 'handleDeleteBtnClick');\n      this.addListener(this.$deleteBtns, 'keydown', (event) => {\n        if (\n          event.keyCode === Garnish.SPACE_KEY ||\n          event.keyCode === Garnish.RETURN_KEY\n        ) {\n          event.preventDefault();\n          this.handleDeleteBtnClick(event);\n        }\n      });\n\n      this.updateUI();\n    },\n\n    addRow: function (row) {\n      if (this.settings.maxItems && this.totalItems >= this.settings.maxItems) {\n        // Sorry pal.\n        return;\n      }\n\n      var $row = $(row).appendTo(this.$tbody),\n        $deleteBtn = $row.find('.delete');\n\n      if (this.settings.sortable) {\n        this.sorter.addItems($row);\n      }\n\n      this.$deleteBtns = this.$deleteBtns.add($deleteBtn);\n\n      this.addListener($deleteBtn, 'click', 'handleDeleteBtnClick');\n      this.totalItems++;\n\n      this.updateUI();\n    },\n\n    reorderItems: function () {\n      if (!this.settings.sortable) {\n        return;\n      }\n\n      // Get the new field order\n      var ids = [];\n\n      for (var i = 0; i < this.sorter.$items.length; i++) {\n        var id = $(this.sorter.$items[i]).attr(this.settings.idAttribute);\n        ids.push(id);\n      }\n\n      // Send it to the server\n      var data = {\n        ids: JSON.stringify(ids),\n      };\n\n      Craft.sendActionRequest('POST', this.settings.reorderAction, {data})\n        .then((response) => {\n          this.onReorderItems(ids);\n          Craft.cp.displaySuccess(\n            Craft.t('app', this.settings.reorderSuccessMessage)\n          );\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(\n            Craft.t('app', this.settings.reorderFailMessage)\n          );\n        });\n    },\n\n    handleDeleteBtnClick: function (event) {\n      if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n        // Sorry pal.\n        return;\n      }\n\n      var $row = $(event.target).closest('tr');\n\n      if (this.confirmDeleteItem($row)) {\n        this.deleteItem($row);\n      }\n    },\n\n    confirmDeleteItem: function ($row) {\n      if (!this.settings.confirmDeleteMessage) {\n        return true;\n      }\n\n      var name = this.getItemName($row);\n      return confirm(\n        Craft.t('app', this.settings.confirmDeleteMessage, {name})\n      );\n    },\n\n    deleteItem: function ($row) {\n      var data = {\n        id: this.getItemId($row),\n      };\n\n      Craft.sendActionRequest('POST', this.settings.deleteAction, {data})\n        .then((response) => this.handleDeleteItemSuccess(response.data, $row))\n        .catch(({response}) =>\n          this.handleDeleteItemFailure(response.data, $row)\n        );\n    },\n\n    handleDeleteItemFailure: function (data, $row) {\n      var id = this.getItemId($row),\n        name = this.getItemName($row);\n\n      Craft.cp.displayError(\n        Craft.t('app', this.settings.deleteFailMessage, {name})\n      );\n    },\n\n    handleDeleteItemSuccess: function (data, $row) {\n      var id = this.getItemId($row),\n        name = this.getItemName($row);\n\n      if (this.sorter) {\n        this.sorter.removeItems($row);\n      }\n\n      $row.remove();\n      this.totalItems--;\n      this.updateUI();\n      this.onDeleteItem(id);\n\n      if (this.settings.deleteSuccessMessage) {\n        Craft.cp.displaySuccess(\n          Craft.t('app', this.settings.deleteSuccessMessage, {name})\n        );\n      }\n    },\n\n    onReorderItems: function (ids) {\n      this.settings.onReorderItems(ids);\n    },\n\n    onDeleteItem: function (id) {\n      this.settings.onDeleteItem(id);\n    },\n\n    getItemId: function ($row) {\n      return $row.attr(this.settings.idAttribute);\n    },\n\n    getItemName: function ($row) {\n      return Craft.escapeHtml($row.attr(this.settings.nameAttribute));\n    },\n\n    updateUI: function () {\n      // Show the \"No Whatever Exists\" message if there aren't any\n      if (this.totalItems === 0) {\n        this.$table.hide();\n        this.$noItems.removeClass('hidden');\n      } else {\n        this.$table.show();\n        this.$noItems.addClass('hidden');\n      }\n\n      // Disable the sort buttons if there's only one row\n      if (this.settings.sortable) {\n        var $moveButtons = this.$table.find('.move');\n\n        if (this.totalItems === 1) {\n          $moveButtons.addClass('disabled');\n        } else {\n          $moveButtons.removeClass('disabled');\n        }\n      }\n\n      // Disable the delete buttons if we've reached the minimum items\n      if (this.settings.minItems && this.totalItems <= this.settings.minItems) {\n        this.$deleteBtns.addClass('disabled');\n      } else {\n        this.$deleteBtns.removeClass('disabled');\n      }\n\n      // Hide the New Whatever button if we've reached the maximum items\n      if (this.settings.newItemBtnSelector) {\n        if (\n          this.settings.maxItems &&\n          this.totalItems >= this.settings.maxItems\n        ) {\n          $(this.settings.newItemBtnSelector).addClass('hidden');\n        } else {\n          $(this.settings.newItemBtnSelector).removeClass('hidden');\n        }\n      }\n    },\n  },\n  {\n    defaults: {\n      tableSelector: null,\n      noItemsSelector: null,\n      newItemBtnSelector: null,\n      idAttribute: 'data-id',\n      nameAttribute: 'data-name',\n      sortable: false,\n      allowDeleteAll: true,\n      minItems: 0,\n      maxItems: null,\n      reorderAction: null,\n      deleteAction: null,\n      reorderSuccessMessage: Craft.t('app', 'New order saved.'),\n      reorderFailMessage: Craft.t('app', 'Couldn’t save new order.'),\n      confirmDeleteMessage: Craft.t(\n        'app',\n        'Are you sure you want to delete “{name}”?'\n      ),\n      deleteSuccessMessage: Craft.t('app', '“{name}” deleted.'),\n      deleteFailMessage: Craft.t('app', 'Couldn’t delete “{name}”.'),\n      onReorderItems: $.noop,\n      onDeleteItem: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Asset image editor class\n */\n\nCraft.AssetImageEditor = Garnish.Modal.extend(\n  {\n    // jQuery objects\n    $body: null,\n    $footer: null,\n    $imageTools: null,\n    $buttons: null,\n    $cancelBtn: null,\n    $replaceBtn: null,\n    $saveBtn: null,\n    $focalPointBtn: null,\n    $editorContainer: null,\n    $straighten: null,\n    $croppingCanvas: null,\n    $spinner: null,\n    $constraintContainer: null,\n    $constraintRadioInputs: null,\n    $customConstraints: null,\n\n    // FabricJS objects\n    canvas: null,\n    image: null,\n    viewport: null,\n    focalPoint: null,\n    grid: null,\n    croppingCanvas: null,\n    clipper: null,\n    croppingRectangle: null,\n    cropperHandles: null,\n    cropperGrid: null,\n    croppingShade: null,\n\n    // Image state attributes\n    imageStraightenAngle: 0,\n    viewportRotation: 0,\n    originalWidth: 0,\n    originalHeight: 0,\n    imageVerticeCoords: null,\n    zoomRatio: 1,\n\n    // Editor state attributes\n    animationInProgress: false,\n    currentView: '',\n    assetId: null,\n    cacheBust: null,\n    draggingCropper: false,\n    scalingCropper: false,\n    draggingFocal: false,\n    previousMouseX: 0,\n    previousMouseY: 0,\n    shiftKeyHeld: false,\n    editorHeight: 0,\n    editorWidth: 0,\n    cropperState: false,\n    scaleFactor: 1,\n    flipData: {},\n    focalPointState: false,\n    maxImageSize: null,\n    lastLoadedDimensions: null,\n    imageIsLoading: false,\n    mouseMoveEvent: null,\n    croppingConstraint: false,\n    constraintOrientation: 'landscape',\n    showingCustomConstraint: false,\n    saving: false,\n\n    // Rendering proxy functions\n    renderImage: null,\n    renderCropper: null,\n\n    _queue: null,\n\n    init: function (assetId, settings) {\n      this._queue = new Craft.Queue();\n\n      this.cacheBust = Date.now();\n\n      this.setSettings(settings, Craft.AssetImageEditor.defaults);\n\n      if (this.settings.allowDegreeFractions === null) {\n        this.settings.allowDegreeFractions = Craft.isImagick;\n      }\n\n      if (Garnish.prefersReducedMotion()) {\n        this.settings.animationDuration = 1;\n      }\n\n      this.assetId = assetId;\n      this.flipData = {x: 0, y: 0};\n\n      // Build the modal\n      this.$container = $(\n        '<form class=\"modal fitted imageeditor\"></form>'\n      ).appendTo(Garnish.$bod);\n      this.$body = $('<div class=\"body\"></div>').appendTo(this.$container);\n      this.$footer = $('<div class=\"footer\"/>').appendTo(this.$container);\n\n      this.base(this.$container, this.settings);\n\n      this.$buttons = $('<div class=\"buttons right\"/>').appendTo(this.$footer);\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn cancel',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo(this.$buttons);\n\n      if (this.settings.allowSavingAsNew) {\n        this.$saveBtn = Craft.ui\n          .createButton({\n            class: 'save copy',\n            label: Craft.t('app', 'Save as a new asset'),\n            spinner: true,\n          })\n          .appendTo(this.$buttons);\n        this.addListener(this.$saveBtn, 'activate', this.saveImage);\n      }\n\n      this.$replaceBtn = Craft.ui\n        .createSubmitButton({\n          class: 'save replace',\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .appendTo(this.$buttons);\n\n      this.addListener(this.$replaceBtn, 'activate', this.saveImage);\n      this.addListener(this.$cancelBtn, 'activate', this.hide);\n      this.removeListener(this.$shade, 'click');\n\n      this.maxImageSize = this.getMaxImageSize();\n      Craft.sendActionRequest('POST', 'assets/image-editor', {\n        data: {assetId},\n      }).then((response) => this.loadEditor(response.data));\n    },\n\n    /**\n     * Get the max image size that is viewable in the editor currently\n     */\n    getMaxImageSize: function () {\n      var browserViewportWidth =\n        Garnish.$doc.get(0).documentElement.clientWidth;\n      var browserViewportHeight =\n        Garnish.$doc.get(0).documentElement.clientHeight;\n\n      return (\n        Math.max(browserViewportHeight, browserViewportWidth) *\n        (window.devicePixelRatio > 1 ? 2 : 1)\n      );\n    },\n\n    /**\n     * Load the editor markup and start loading components and the image.\n     *\n     * @param {Object} data\n     */\n    loadEditor: function (data) {\n      if (!data.html) {\n        Craft.cp.displayError(\n          Craft.t('app', 'Could not load the image editor.')\n        );\n      }\n\n      this.$body.html(data.html);\n      this.$tabs = $('.tabs li', this.$body);\n      this.$viewsContainer = $('.views', this.$body);\n      this.$views = $('> div', this.$viewsContainer);\n      this.$imageTools = $('.image-container .image-tools', this.$body);\n      this.$editorContainer = $('.image-container .image', this.$body);\n      this.$constraintContainer = $('.constraint-group', this.$body);\n      this.$constraintRadioInputs = $(\n        '[name=\"constraint\"]',\n        this.$constraintContainer\n      );\n      this.$focalPointBtn = $('.focal-point', this.$body);\n      this.editorHeight = this.$editorContainer.innerHeight();\n      this.editorWidth = this.$editorContainer.innerWidth();\n\n      this._showSpinner();\n\n      this.updateSizeAndPosition();\n\n      $customConstraintWrapper = this.$constraintRadioInputs\n        .filter('[value=\"custom\"]')\n        .parent();\n\n      // Add custom constraint inputs to fieldset\n      this.$customConstraints = $('<div/>', {\n        class: 'constraint custom hidden',\n        'data-constraint': 'custom',\n      })\n        .append(\n          $('<input/>', {\n            type: 'text',\n            class: 'custom-constraint-w',\n            size: 3,\n            value: 1,\n            'aria-label': Craft.t('app', 'Width unit'),\n          })\n        )\n        .append(\n          $('<span/>', {\n            class: 'custom-constraint-spacer',\n            text: 'x',\n            'aria-hidden': 'true',\n          })\n        )\n        .append(\n          $('<input/>', {\n            type: 'text',\n            class: 'custom-constraint-h',\n            size: 3,\n            value: 1,\n            'aria-label': Craft.t('app', 'Height unit'),\n          })\n        )\n        .appendTo($customConstraintWrapper);\n\n      // Specify which get flipped on orientation change\n      this.$constraintRadioInputs\n        .filter(function () {\n          const regex = /^\\d*\\.\\d+$/;\n          const value = $(this).val();\n          return regex.test(value);\n        })\n        .addClass('flip');\n\n      // Load the canvas on which we'll host our image and set up the proxy render function\n      this.canvas = new fabric.StaticCanvas('image-canvas');\n\n      // Set up the cropping canvas jquery element for tracking all the nice events\n      this.$croppingCanvas = $('#cropping-canvas', this.$editorContainer);\n      this.$croppingCanvas.width(this.editorWidth);\n      this.$croppingCanvas.height(this.editorHeight);\n\n      this.canvas.enableRetinaScaling = true;\n      this.renderImage = () => {\n        Garnish.requestAnimationFrame(this.canvas.renderAll.bind(this.canvas));\n      };\n\n      // Load the image from URL\n      var imageUrl = Craft.getActionUrl('assets/edit-image', {\n        assetId: this.assetId,\n        size: this.maxImageSize,\n        cacheBust: this.cacheBust,\n      });\n\n      // Load image and set up the initial properties\n      fabric.Image.fromURL(imageUrl, (imageObject) => {\n        this.image = imageObject;\n        this.image.set({\n          originX: 'center',\n          originY: 'center',\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n        });\n        this.canvas.add(this.image);\n\n        this.originalHeight = this.image.getHeight();\n        this.originalWidth = this.image.getWidth();\n        this.zoomRatio = 1;\n\n        this.lastLoadedDimensions = this.getScaledImageDimensions();\n\n        // Set up the image bounding box, viewport and position everything\n        this._setFittedImageVerticeCoordinates();\n        this._repositionEditorElements();\n\n        // Set up the focal point\n        var focalState = {\n          imageDimensions: this.getScaledImageDimensions(),\n          offsetX: 0,\n          offsetY: 0,\n        };\n\n        var focal = false;\n        if (data.focalPoint) {\n          // Transform the focal point coordinates from relative to absolute\n          var focalData = data.focalPoint;\n\n          // Resolve for the current image dimensions.\n          var adjustedX = focalState.imageDimensions.width * focalData.x;\n          var adjustedY = focalState.imageDimensions.height * focalData.y;\n\n          focalState.offsetX = adjustedX - focalState.imageDimensions.width / 2;\n          focalState.offsetY =\n            adjustedY - focalState.imageDimensions.height / 2;\n\n          focal = true;\n        }\n\n        this.storeFocalPointState(focalState);\n\n        if (focal) {\n          this._createFocalPoint();\n        }\n\n        this._createViewport();\n        this.storeCropperState();\n\n        // Add listeners to buttons\n        this._addControlListeners();\n\n        // Add mouse event listeners\n        this.addListener(\n          this.$croppingCanvas,\n          'mousemove,touchmove',\n          this._handleMouseMove\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mousedown,touchstart',\n          this._handleMouseDown\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mouseup,touchend',\n          this._handleMouseUp\n        );\n        this.addListener(\n          this.$croppingCanvas,\n          'mouseout,touchcancel',\n          this._handleMouseOut\n        );\n\n        this._hideSpinner();\n\n        // Render it, finally\n        this.renderImage();\n\n        // Make sure verything gets fired for the first tab\n        this.$tabs.first().trigger('click');\n      });\n    },\n\n    /**\n     * Reload the image to better fit the current available image editor viewport.\n     */\n    _reloadImage: function () {\n      if (this.imageIsLoading) {\n        return;\n      }\n\n      this.imageIsLoading = true;\n      this.maxImageSize = this.getMaxImageSize();\n\n      // Load the image from URL\n      var imageUrl = Craft.getActionUrl('assets/edit-image', {\n        assetId: this.assetId,\n        size: this.maxImageSize,\n        cacheBust: this.cacheBust,\n      });\n\n      this.image.setSrc(imageUrl, (imageObject) => {\n        this.originalHeight = imageObject.getHeight();\n        this.originalWidth = imageObject.getWidth();\n        this.lastLoadedDimensions = {\n          width: this.originalHeight,\n          height: this.originalWidth,\n        };\n        this.updateSizeAndPosition();\n        this.renderImage();\n        this.imageIsLoading = false;\n      });\n    },\n\n    /**\n     * Update the modal size and position on browser resize\n     */\n    updateSizeAndPosition: function () {\n      if (!this.$container) {\n        return;\n      }\n\n      // Fullscreen modal\n      var innerWidth = window.innerWidth;\n      var innerHeight = window.innerHeight;\n\n      this.$container.css({\n        width: innerWidth,\n        'min-width': innerWidth,\n        left: 0,\n\n        height: innerHeight,\n        'min-height': innerHeight,\n        top: 0,\n      });\n\n      this.$body.css({\n        height: innerHeight - (this.$footer.outerHeight() - 1),\n      });\n\n      if (innerWidth < innerHeight) {\n        this.$container.addClass('vertical');\n      } else {\n        this.$container.removeClass('vertical');\n      }\n\n      // If image is already loaded, make sure it looks pretty.\n      if (this.$editorContainer && this.image) {\n        this._repositionEditorElements();\n      }\n    },\n\n    /**\n     * Reposition the editor elements to accurately reflect the editor state with current dimensions\n     */\n    _repositionEditorElements: function () {\n      // Remember what the dimensions were before the resize took place\n      var previousEditorDimensions = {\n        width: this.editorWidth,\n        height: this.editorHeight,\n      };\n\n      this.editorHeight = this.$editorContainer.innerHeight();\n      this.editorWidth = this.$editorContainer.innerWidth();\n\n      this.canvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      var currentScaledDimensions = this.getScaledImageDimensions();\n\n      // If we're cropping now, we have to reposition the cropper correctly in case\n      // the area for image changes, forcing the image size to change as well.\n      if (this.currentView === 'crop') {\n        this.zoomRatio = this.getZoomToFitRatio(\n          this.getScaledImageDimensions()\n        );\n        var previouslyOccupiedArea = this._getBoundingRectangle(\n          this.imageVerticeCoords\n        );\n        this._setFittedImageVerticeCoordinates();\n        this._repositionCropper(previouslyOccupiedArea);\n      } else {\n        // Otherwise just recalculate the image zoom ratio\n        this.zoomRatio =\n          this.getZoomToCoverRatio(this.getScaledImageDimensions()) *\n          this.scaleFactor;\n      }\n\n      // Reposition the image relatively to the previous editor dimensions.\n      this._repositionImage(previousEditorDimensions);\n      this._repositionViewport();\n      this._repositionFocalPoint(previousEditorDimensions);\n      this._zoomImage();\n\n      this.renderImage();\n\n      if (\n        currentScaledDimensions.width / this.lastLoadedDimensions.width > 1.5 ||\n        currentScaledDimensions.height / this.lastLoadedDimensions.height > 1.5\n      ) {\n        this._reloadImage();\n      }\n    },\n\n    /**\n     * Reposition image based on how the editor dimensions have changed.\n     * This ensures keeping the image center offset, if there is any.\n     *\n     * @param {Object} previousEditorDimensions\n     */\n    _repositionImage: function (previousEditorDimensions) {\n      this.image.set({\n        left:\n          this.image.left -\n          (previousEditorDimensions.width - this.editorWidth) / 2,\n        top:\n          this.image.top -\n          (previousEditorDimensions.height - this.editorHeight) / 2,\n      });\n    },\n\n    /**\n     * Create the viewport for image editor.\n     */\n    _createViewport: function () {\n      this.viewport = new fabric.Rect({\n        width: this.image.width,\n        height: this.image.height,\n        fill: 'rgba(127,0,0,1)',\n        originX: 'center',\n        originY: 'center',\n        globalCompositeOperation: 'destination-in', // This clips everything outside of the viewport\n        left: this.image.left,\n        top: this.image.top,\n      });\n      this.canvas.add(this.viewport);\n      this.renderImage();\n    },\n\n    /**\n     * Create the focal point.\n     */\n    _createFocalPoint: function () {\n      var focalPointState = this.focalPointState;\n      var sizeFactor =\n        this.getScaledImageDimensions().width /\n        focalPointState.imageDimensions.width;\n\n      var focalX =\n        focalPointState.offsetX *\n        sizeFactor *\n        this.zoomRatio *\n        this.scaleFactor;\n      var focalY =\n        focalPointState.offsetY *\n        sizeFactor *\n        this.zoomRatio *\n        this.scaleFactor;\n\n      // Adjust by image margins\n      focalX += this.image.left;\n      focalY += this.image.top;\n\n      var deltaX = 0;\n      var deltaY = 0;\n\n      // When creating a fresh focal point, drop it dead in the center of the viewport, not the image.\n      if (\n        this.viewport &&\n        focalPointState.offsetX === 0 &&\n        focalPointState.offsetY === 0\n      ) {\n        if (this.currentView !== 'crop') {\n          deltaX = this.viewport.left - this.image.left;\n          deltaY = this.viewport.top - this.image.top;\n        } else {\n          // Unless we have a cropper showing, in which case drop it in the middle of the cropper\n          deltaX = this.clipper.left - this.image.left;\n          deltaY = this.clipper.top - this.image.top;\n        }\n\n        // Bump focal to middle of viewport\n        focalX += deltaX;\n        focalY += deltaY;\n\n        // Reflect changes in saved state\n        focalPointState.offsetX +=\n          deltaX / (sizeFactor * this.zoomRatio * this.scaleFactor);\n        focalPointState.offsetY +=\n          deltaY / (sizeFactor * this.zoomRatio * this.scaleFactor);\n      }\n\n      this.focalPoint = new fabric.Group(\n        [\n          new fabric.Circle({\n            radius: 8,\n            fill: 'rgba(0,0,0,0.5)',\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,0.8)',\n            left: 0,\n            top: 0,\n            originX: 'center',\n            originY: 'center',\n          }),\n          new fabric.Circle({\n            radius: 1,\n            fill: 'rgba(255,255,255,0)',\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,0.8)',\n            left: 0,\n            top: 0,\n            originX: 'center',\n            originY: 'center',\n          }),\n        ],\n        {\n          originX: 'center',\n          originY: 'center',\n          left: focalX,\n          top: focalY,\n        }\n      );\n\n      this.storeFocalPointState(focalPointState);\n      this.canvas.add(this.focalPoint);\n    },\n\n    /**\n     * Toggle focal point\n     */\n    toggleFocalPoint: function () {\n      if (!this.focalPoint) {\n        this._createFocalPoint();\n        this.$focalPointBtn.attr('aria-pressed', 'true');\n      } else {\n        this.canvas.remove(this.focalPoint);\n        this.focalPoint = null;\n        this.$focalPointBtn.attr('aria-pressed', 'false');\n      }\n\n      this.renderImage();\n    },\n\n    /**\n     * Reposition the viewport to handle editor resizing.\n     */\n    _repositionViewport: function () {\n      if (this.viewport) {\n        var dimensions = {\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n        };\n\n        // If we're cropping, nothing exciting happens for the viewport\n        if (this.currentView === 'crop') {\n          dimensions.width = this.editorWidth;\n          dimensions.height = this.editorHeight;\n        } else {\n          // If this is the first initial reposition, no cropper state yet\n          if (this.cropperState) {\n            // Recall the state\n            var state = this.cropperState;\n\n            var scaledImageDimensions = this.getScaledImageDimensions();\n            // Make sure we have the correct current image size\n            var sizeFactor =\n              scaledImageDimensions.width / state.imageDimensions.width;\n\n            // Set the viewport dimensions\n            dimensions.width = state.width * sizeFactor * this.zoomRatio;\n            dimensions.height = state.height * sizeFactor * this.zoomRatio;\n\n            // Adjust the image position to show the correct part of the image in the viewport\n            this.image.set({\n              left: this.editorWidth / 2 - state.offsetX * sizeFactor,\n              top: this.editorHeight / 2 - state.offsetY * sizeFactor,\n            });\n          } else {\n            $.extend(dimensions, this.getScaledImageDimensions());\n          }\n        }\n        this.viewport.set(dimensions);\n      }\n    },\n\n    _repositionFocalPoint: function (previousEditorDimensions) {\n      if (this.focalPoint) {\n        var offsetX = this.focalPoint.left - this.editorWidth / 2;\n        var offsetY = this.focalPoint.top - this.editorHeight / 2;\n\n        var currentWidth = this.image.width;\n        var newWidth = this.getScaledImageDimensions().width * this.zoomRatio;\n        var ratio = newWidth / currentWidth / this.scaleFactor;\n\n        offsetX -= (previousEditorDimensions.width - this.editorWidth) / 2;\n        offsetY -= (previousEditorDimensions.height - this.editorHeight) / 2;\n\n        offsetX *= ratio;\n        offsetY *= ratio;\n\n        this.focalPoint.set({\n          left: this.editorWidth / 2 + offsetX,\n          top: this.editorHeight / 2 + offsetY,\n        });\n      }\n    },\n\n    /**\n     * Return true if the image orientation has changed\n     */\n    hasOrientationChanged: function () {\n      return this.viewportRotation % 180 !== 0;\n    },\n\n    /**\n     * Return the current image dimensions that would be used in the current image area with no straightening or rotation applied.\n     */\n    getScaledImageDimensions: function () {\n      if (typeof this.getScaledImageDimensions._ === 'undefined') {\n        this.getScaledImageDimensions._ = {};\n      }\n\n      this.getScaledImageDimensions._.imageRatio =\n        this.originalHeight / this.originalWidth;\n      this.getScaledImageDimensions._.editorRatio =\n        this.editorHeight / this.editorWidth;\n\n      this.getScaledImageDimensions._.dimensions = {};\n      if (\n        this.getScaledImageDimensions._.imageRatio >\n        this.getScaledImageDimensions._.editorRatio\n      ) {\n        this.getScaledImageDimensions._.dimensions.height = Math.min(\n          this.editorHeight,\n          this.originalHeight\n        );\n        this.getScaledImageDimensions._.dimensions.width = Math.round(\n          this.originalWidth /\n            (this.originalHeight /\n              this.getScaledImageDimensions._.dimensions.height)\n        );\n      } else {\n        this.getScaledImageDimensions._.dimensions.width = Math.min(\n          this.editorWidth,\n          this.originalWidth\n        );\n        this.getScaledImageDimensions._.dimensions.height = Math.round(\n          this.originalHeight *\n            (this.getScaledImageDimensions._.dimensions.width /\n              this.originalWidth)\n        );\n      }\n\n      return this.getScaledImageDimensions._.dimensions;\n    },\n\n    /**\n     * Set the image dimensions to reflect the current zoom ratio.\n     */\n    _zoomImage: function () {\n      if (typeof this._zoomImage._ === 'undefined') {\n        this._zoomImage._ = {};\n      }\n\n      this._zoomImage._.imageDimensions = this.getScaledImageDimensions();\n      this.image.set({\n        width: this._zoomImage._.imageDimensions.width * this.zoomRatio,\n        height: this._zoomImage._.imageDimensions.height * this.zoomRatio,\n      });\n    },\n\n    /**\n     * Gets previous tab element from currently-active.\n     */\n    _getPrevTab: function () {\n      const activeTabIndex = this._getActiveTabIndex();\n\n      if (activeTabIndex < 0) return;\n\n      let newTabIndex;\n\n      if (activeTabIndex > 0) {\n        newTabIndex = activeTabIndex - 1;\n      } else {\n        newTabIndex = this.$tabs.length - 1;\n      }\n\n      return this.$tabs.eq(newTabIndex);\n    },\n\n    /**\n     * Gets next tab element from currently-active.\n     */\n    _getNextTab: function () {\n      const activeTabIndex = this._getActiveTabIndex();\n\n      if (activeTabIndex < 0) return;\n\n      let newTabIndex;\n\n      if (activeTabIndex < this.$tabs.length - 1) {\n        newTabIndex = activeTabIndex + 1;\n      } else {\n        newTabIndex = 0;\n      }\n\n      return this.$tabs.eq(newTabIndex);\n    },\n\n    /**\n     * Gets active tab element\n     */\n    _getActiveTab: function () {\n      return this.$tabs.filter('[aria-selected=\"true\"]');\n    },\n\n    /**\n     * Gets index of active tab among sibling tabs\n     */\n    _getActiveTabIndex: function () {\n      const $activeTab = this._getActiveTab();\n\n      if (!$activeTab.length) return;\n\n      return $activeTab.index();\n    },\n\n    /**\n     * Set up listeners for the controls.\n     */\n    _addControlListeners: function () {\n      // Tabs\n      this.addListener(this.$tabs, 'click', this._handleTabClick);\n      this.addListener(this.$tabs, 'keydown', (event) => {\n        switch (event.keyCode) {\n          case Garnish.LEFT_KEY:\n          case Garnish.UP_KEY:\n            event.preventDefault();\n            const $prevTab = this._getPrevTab();\n            this.activateTab($prevTab);\n            break;\n          case Garnish.RIGHT_KEY:\n          case Garnish.DOWN_KEY:\n            event.preventDefault();\n            const $nextTab = this._getNextTab();\n            this.activateTab($nextTab);\n            break;\n        }\n      });\n\n      // Focal point\n      this.addListener(this.$focalPointBtn, 'click', this.toggleFocalPoint);\n\n      // Rotate controls\n      this.addListener($('.rotate-left'), 'click', function () {\n        this.rotateImage(-90);\n      });\n      this.addListener($('.rotate-right'), 'click', function () {\n        this.rotateImage(90);\n      });\n      this.addListener($('.flip-vertical'), 'click', function () {\n        this.flipImage('y');\n      });\n      this.addListener($('.flip-horizontal'), 'click', function () {\n        this.flipImage('x');\n      });\n\n      // Straighten slider\n      this.straighteningInput = new Craft.SlideRuleInput('slide-rule', {\n        onStart: () => {\n          this._showGrid();\n        },\n        onChange: (slider) => {\n          this.straighten(slider);\n        },\n        onEnd: () => {\n          this._hideGrid();\n          this._cleanupFocalPointAfterStraighten();\n        },\n      });\n\n      // Cropper scale modifier key\n      this.addListener(Garnish.$doc, 'keydown', function (ev) {\n        if (ev.keyCode === Garnish.SHIFT_KEY) {\n          this.shiftKeyHeld = true;\n        }\n      });\n      this.addListener(Garnish.$doc, 'keyup', function (ev) {\n        if (ev.keyCode === Garnish.SHIFT_KEY) {\n          this.shiftKeyHeld = false;\n        }\n      });\n\n      this.addListener(\n        this.$constraintRadioInputs,\n        'change',\n        this._handleConstraintChange\n      );\n      this.addListener(\n        $('.orientation input', this.$container),\n        'click',\n        this._handleOrientationClick\n      );\n      this.addListener(\n        $('.constraint-group .custom input', this.$container),\n        'keyup',\n        this._applyCustomConstraint\n      );\n    },\n\n    /**\n     * Handle a constraint button click.\n     *\n     * @param {Object} ev\n     */\n    _handleConstraintClick: function (ev) {\n      var constraint = $(ev.currentTarget).data('constraint');\n      var $target = $(ev.currentTarget);\n      $target.siblings().removeClass('active');\n      $target.addClass('active');\n\n      if (constraint == 'custom') {\n        this._showCustomConstraint();\n        this._applyCustomConstraint();\n        return;\n      }\n\n      this._hideCustomConstraint();\n\n      this.setCroppingConstraint(constraint);\n      this.enforceCroppingConstraint();\n    },\n\n    /**\n     * Handle a constraint change.\n     *\n     * @param {Object} ev\n     */\n    _handleConstraintChange: function (ev) {\n      const constraint = $(ev.target).val();\n\n      if (constraint == 'custom') {\n        this._showCustomConstraint();\n        this._applyCustomConstraint();\n        return;\n      }\n\n      this._hideCustomConstraint();\n\n      this.setCroppingConstraint(constraint);\n      this.enforceCroppingConstraint();\n    },\n\n    /**\n     * Handle an orientation switch click.\n     *\n     * @param {Object} ev\n     */\n    _handleOrientationClick: function (ev) {\n      if (ev.currentTarget.value === this.constraintOrientation) {\n        return;\n      }\n      this.constraintOrientation = ev.currentTarget.value;\n\n      const $constraints = $('.flip', this.$constraintContainer);\n\n      for (var i = 0; i < $constraints.length; i++) {\n        var $constraint = $($constraints[i]);\n        const labelSelector = 'label[for=\"' + $constraint.attr('id') + '\"]';\n        const $label = $(labelSelector, this.$constraintContainer);\n        $constraint.val(1 / $constraint.val());\n        $label.html(\n          $label.text().split(':').reverse().join(':').replace(/\\s/g, '')\n        );\n      }\n\n      $constraints.filter(':checked').trigger('change');\n    },\n\n    /**\n     * Apply the custom ratio set in the inputs\n     */\n    _applyCustomConstraint: function () {\n      var constraint = this._getCustomConstraint();\n\n      if (constraint.w > 0 && constraint.h > 0) {\n        this.setCroppingConstraint(constraint.w / constraint.h);\n        this.enforceCroppingConstraint();\n      }\n    },\n\n    /**\n     * Get the custom constraint.\n     *\n     * @returns {{w: *, h: *}}\n     */\n    _getCustomConstraint: function () {\n      var w = parseFloat($('.custom-constraint-w').val());\n      var h = parseFloat($('.custom-constraint-h').val());\n      return {\n        w: isNaN(w) ? 0 : w,\n        h: isNaN(h) ? 0 : h,\n      };\n    },\n\n    /**\n     * Set the custom constraint.\n     *\n     * @param {number} w\n     * @param {number} h\n     */\n    _setCustomConstraint: function (w, h) {\n      $('.custom-constraint-w').val(parseFloat(w));\n      $('.custom-constraint-h').val(parseFloat(h));\n    },\n\n    /**\n     * Hide the custom constraint inputs.\n     */\n    _hideCustomConstraint: function () {\n      this.showingCustomConstraint = false;\n      this.$customConstraints.addClass('hidden');\n      $('.orientation', this.$container).removeClass('hidden');\n    },\n\n    /**\n     * Show the custom constraint inputs.\n     */\n    _showCustomConstraint: function () {\n      if (this.showingCustomConstraint) {\n        return;\n      }\n\n      this.showingCustomConstraint = true;\n      this.$customConstraints.removeClass('hidden');\n      $('.orientation', this.$container).addClass('hidden');\n    },\n\n    /**\n     * Handle tab click.\n     *\n     * @param {Object} ev\n     */\n    _handleTabClick: function (ev) {\n      if (!this.animationInProgress) {\n        var $tab = $(ev.currentTarget);\n        this.activateTab($tab);\n      }\n    },\n\n    /**\n     * Activate a tab.\n     *\n     * @param {(jQuery|HTMLElement|string)} tab\n     */\n\n    activateTab: function (tab) {\n      const view = $(tab).data('view');\n      this.$tabs.removeClass('selected').attr({\n        'aria-selected': 'false',\n        tabindex: '-1',\n      });\n      $(tab)\n        .addClass('selected')\n        .attr({\n          'aria-selected': 'true',\n          tabindex: '0',\n        })\n        .trigger('focus');\n      this.showView(view);\n    },\n\n    /**\n     * Show a view.\n     *\n     * @param {string} view\n     */\n    showView: function (view) {\n      if (this.currentView === view) {\n        return;\n      }\n\n      this.$views.addClass('hidden');\n      var $view = this.$views.filter('[data-view=\"' + view + '\"]');\n      $view.removeClass('hidden');\n\n      if (view === 'rotate') {\n        this.enableSlider();\n      } else {\n        this.disableSlider();\n      }\n\n      // Now that most likely our editor dimensions have changed, time to reposition stuff\n      this.updateSizeAndPosition();\n\n      // See if we have to enable or disable crop mode as we transition between tabs\n      if (this.currentView === 'crop' && view !== 'crop') {\n        this._queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              this.disableCropMode();\n              resolve();\n            })\n        );\n      } else if (this.currentView !== 'crop' && view === 'crop') {\n        this._queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              this.enableCropMode();\n              resolve();\n            })\n        );\n      }\n\n      // Mark the current view\n      this.currentView = view;\n    },\n\n    /**\n     * Store the current cropper state.\n     *\n     * Cropper state is always assumed to be saved at a zoom ratio of 1 to be used\n     * as the basis for recalculating the cropper position and dimensions.\n     *\n     * @param {Object} [state]\n     */\n    storeCropperState: function (state) {\n      if (typeof this.storeCropperState._ === 'undefined') {\n        this.storeCropperState._ = {};\n      }\n\n      // If we're asked to store a specific state.\n      if (state) {\n        this.cropperState = state;\n      } else if (this.clipper) {\n        this.storeCropperState._.zoomFactor = 1 / this.zoomRatio;\n\n        this.cropperState = {\n          offsetX:\n            (this.clipper.left - this.image.left) *\n            this.storeCropperState._.zoomFactor,\n          offsetY:\n            (this.clipper.top - this.image.top) *\n            this.storeCropperState._.zoomFactor,\n          height: this.clipper.height * this.storeCropperState._.zoomFactor,\n          width: this.clipper.width * this.storeCropperState._.zoomFactor,\n          imageDimensions: this.getScaledImageDimensions(),\n        };\n      } else {\n        this.storeCropperState._.dimensions = this.getScaledImageDimensions();\n        this.cropperState = {\n          offsetX: 0,\n          offsetY: 0,\n          height: this.storeCropperState._.dimensions.height,\n          width: this.storeCropperState._.dimensions.width,\n          imageDimensions: this.storeCropperState._.dimensions,\n        };\n      }\n    },\n\n    /**\n     * Store focal point coordinates in a manner that is not tied to zoom ratio and rotation.\n     */\n    storeFocalPointState: function (state) {\n      if (typeof this.storeFocalPointState._ === 'undefined') {\n        this.storeFocalPointState._ = {};\n      }\n\n      // If we're asked to store a specific state.\n      if (state) {\n        this.focalPointState = state;\n      } else if (this.focalPoint) {\n        this.storeFocalPointState._.zoomFactor = 1 / this.zoomRatio;\n        this.focalPointState = {\n          offsetX:\n            ((this.focalPoint.left - this.image.left) *\n              this.storeFocalPointState._.zoomFactor) /\n            this.scaleFactor,\n          offsetY:\n            ((this.focalPoint.top - this.image.top) *\n              this.storeFocalPointState._.zoomFactor) /\n            this.scaleFactor,\n          imageDimensions: this.getScaledImageDimensions(),\n        };\n      }\n    },\n\n    /**\n     * Rotate the image along with the viewport.\n     *\n     * @param {number} degrees\n     */\n    rotateImage: function (degrees) {\n      if (!this.animationInProgress) {\n        // We're not that kind of an establishment, sir.\n        if (degrees !== 90 && degrees !== -90) {\n          return false;\n        }\n\n        this.animationInProgress = true;\n        this.viewportRotation += degrees;\n\n        // Normalize the viewport rotation angle so it's between 0 and 359\n        this.viewportRotation = parseInt(\n          (this.viewportRotation + 360) % 360,\n          10\n        );\n\n        var newAngle = this.image.angle + degrees;\n        var scaledImageDimensions = this.getScaledImageDimensions();\n        var imageZoomRatio;\n\n        if (this.hasOrientationChanged()) {\n          imageZoomRatio = this.getZoomToCoverRatio({\n            height: scaledImageDimensions.width,\n            width: scaledImageDimensions.height,\n          });\n        } else {\n          imageZoomRatio = this.getZoomToCoverRatio(scaledImageDimensions);\n        }\n\n        // In cases when for some reason we've already zoomed in on the image,\n        // use existing zoom.\n        if (this.zoomRatio > imageZoomRatio) {\n          imageZoomRatio = this.zoomRatio;\n        }\n\n        var viewportProperties = {\n          angle: degrees === 90 ? '+=90' : '-=90',\n        };\n\n        var imageProperties = {\n          angle: newAngle,\n          width: scaledImageDimensions.width * imageZoomRatio,\n          height: scaledImageDimensions.height * imageZoomRatio,\n        };\n\n        var scaleFactor = 1;\n        if (this.scaleFactor < 1) {\n          scaleFactor = 1 / this.scaleFactor;\n          this.scaleFactor = 1;\n        } else {\n          if (this.viewport.width > this.editorHeight) {\n            scaleFactor = this.editorHeight / this.viewport.width;\n          } else if (this.viewport.height > this.editorWidth) {\n            scaleFactor = this.editorWidth / this.viewport.height;\n          }\n          this.scaleFactor = scaleFactor;\n        }\n\n        if (scaleFactor < 1) {\n          imageProperties.width *= scaleFactor;\n          imageProperties.height *= scaleFactor;\n        }\n\n        var state = this.cropperState;\n\n        // Make sure we reposition the image as well to focus on the same image area\n        var deltaX = state.offsetX;\n        var deltaY = state.offsetY;\n        var angleInRadians = degrees * (Math.PI / 180);\n\n        // Calculate how the cropper would need to move in a circle to maintain\n        // the focus on the same region if the image was rotated with zoom intact.\n        var newDeltaX =\n          deltaX * Math.cos(angleInRadians) - deltaY * Math.sin(angleInRadians);\n        var newDeltaY =\n          deltaX * Math.sin(angleInRadians) + deltaY * Math.cos(angleInRadians);\n\n        var sizeFactor =\n          scaledImageDimensions.width / state.imageDimensions.width;\n\n        var modifiedDeltaX =\n          newDeltaX * sizeFactor * this.zoomRatio * this.scaleFactor;\n        var modifiedDeltaY =\n          newDeltaY * sizeFactor * this.zoomRatio * this.scaleFactor;\n\n        imageProperties.left = this.editorWidth / 2 - modifiedDeltaX;\n        imageProperties.top = this.editorHeight / 2 - modifiedDeltaY;\n\n        state.offsetX = newDeltaX;\n        state.offsetY = newDeltaY;\n\n        var temp = state.width;\n        state.width = state.height;\n        state.height = temp;\n\n        this.storeCropperState(state);\n\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n        }\n\n        this.viewport.animate(viewportProperties, {\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            // If we're zooming the image in or out, better do the same to viewport\n            var temp = this.viewport.height * scaleFactor;\n            this.viewport.height = this.viewport.width * scaleFactor;\n            this.viewport.width = temp;\n            this.viewport.set({angle: 0});\n          },\n        });\n\n        // Animate the rotation and dimension change\n        this.image.animate(imageProperties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            var cleanAngle = parseFloat((this.image.angle + 360) % 360);\n            this.image.set({angle: cleanAngle});\n            this.animationInProgress = false;\n            if (this.focalPoint) {\n              this._adjustFocalPointByAngle(degrees);\n              this.straighten(this.straighteningInput);\n              this.canvas.add(this.focalPoint);\n            } else {\n              this._resetFocalPointPosition();\n            }\n          },\n        });\n      }\n    },\n\n    /**\n     * Flip an image along an axis.\n     *\n     * @param {string} axis\n     */\n    flipImage: function (axis) {\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        if (this.hasOrientationChanged()) {\n          axis = axis === 'y' ? 'x' : 'y';\n        }\n\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n        } else {\n          this._resetFocalPointPosition();\n        }\n\n        var editorCenter = {x: this.editorWidth / 2, y: this.editorHeight / 2};\n        this.straighteningInput.setValue(-this.imageStraightenAngle);\n        this.imageStraightenAngle = -this.imageStraightenAngle;\n        var properties = {\n          angle: this.viewportRotation + this.imageStraightenAngle,\n        };\n\n        var deltaY, deltaX;\n        var cropperState = this.cropperState;\n        var focalPointState = this.focalPointState;\n\n        // Reposition the image, viewport, and stored cropper and focal point states.\n        if (\n          (axis === 'y' && this.hasOrientationChanged()) ||\n          (axis !== 'y' && !this.hasOrientationChanged())\n        ) {\n          cropperState.offsetX = -cropperState.offsetX;\n          focalPointState.offsetX = -focalPointState.offsetX;\n          deltaX = this.image.left - editorCenter.x;\n          properties.left = editorCenter.x - deltaX;\n        } else {\n          cropperState.offsetY = -cropperState.offsetY;\n          focalPointState.offsetY = -focalPointState.offsetY;\n          deltaY = this.image.top - editorCenter.y;\n          properties.top = editorCenter.y - deltaY;\n        }\n\n        if (axis === 'y') {\n          properties.scaleY = this.image.scaleY * -1;\n          this.flipData.y = 1 - this.flipData.y;\n        } else {\n          properties.scaleX = this.image.scaleX * -1;\n          this.flipData.x = 1 - this.flipData.x;\n        }\n\n        this.storeCropperState(cropperState);\n        this.storeFocalPointState(focalPointState);\n\n        this.image.animate(properties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            this.animationInProgress = false;\n            if (this.focalPoint) {\n              // Well this is handy\n              this._adjustFocalPointByAngle(0);\n              this.canvas.add(this.focalPoint);\n            }\n          },\n        });\n      }\n    },\n\n    /**\n     * Perform the straightening with input slider.\n     *\n     * @param {Craft.SlideRuleInput} slider\n     */\n    straighten: function (slider) {\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        var previousAngle = this.image.angle;\n\n        this.imageStraightenAngle =\n          (this.settings.allowDegreeFractions\n            ? parseFloat(slider.value)\n            : Math.round(parseFloat(slider.value))) % 360;\n\n        // Straighten the image\n        this.image.set({\n          angle: this.viewportRotation + this.imageStraightenAngle,\n        });\n\n        // Set the new zoom ratio\n        this.zoomRatio =\n          this.getZoomToCoverRatio(this.getScaledImageDimensions()) *\n          this.scaleFactor;\n        this._zoomImage();\n\n        if (this.cropperState) {\n          this._adjustEditorElementsOnStraighten(previousAngle);\n        }\n\n        this.renderImage();\n\n        this.animationInProgress = false;\n      }\n    },\n\n    /**\n     * Adjust the cropped viewport when straightening the image to correct for\n     * bumping into edges, keeping focus on the cropped area center and to\n     * maintain the illusion that the image is being straightened relative to the viewport center.\n     *\n     * @param {integer} previousAngle integer the previous image angle before straightening\n     */\n    _adjustEditorElementsOnStraighten: function (previousAngle) {\n      var scaledImageDimensions = this.getScaledImageDimensions();\n      var angleDelta = this.image.angle - previousAngle;\n      var state = this.cropperState;\n\n      var currentZoomRatio = this.zoomRatio;\n      var adjustmentRatio = 1;\n\n      var deltaX, deltaY, newCenterX, newCenterY, sizeFactor;\n\n      do {\n        // Get the cropper center coordinates\n        var cropperCenterX = state.offsetX;\n        var cropperCenterY = state.offsetY;\n        var angleInRadians = angleDelta * (Math.PI / 180);\n\n        // Calculate how the cropper would need to move in a circle to maintain\n        // the focus on the same region if the image was rotated with zoom intact.\n        newCenterX =\n          cropperCenterX * Math.cos(angleInRadians) -\n          cropperCenterY * Math.sin(angleInRadians);\n        newCenterY =\n          cropperCenterX * Math.sin(angleInRadians) +\n          cropperCenterY * Math.cos(angleInRadians);\n\n        sizeFactor = scaledImageDimensions.width / state.imageDimensions.width;\n\n        // Figure out the final image offset to keep the viewport focused where we need it\n        deltaX = newCenterX * currentZoomRatio * sizeFactor;\n        deltaY = newCenterY * currentZoomRatio * sizeFactor;\n\n        // If the image would creep in the viewport, figure out how to math around it.\n        var imageVertices = this.getImageVerticeCoords(currentZoomRatio);\n        var rectangle = {\n          width: this.viewport.width,\n          height: this.viewport.height,\n          left: this.editorWidth / 2 - this.viewport.width / 2 + deltaX,\n          top: this.editorHeight / 2 - this.viewport.height / 2 + deltaY,\n        };\n        adjustmentRatio = this._getZoomRatioToFitRectangle(\n          rectangle,\n          imageVertices\n        );\n        currentZoomRatio = currentZoomRatio * adjustmentRatio;\n\n        // If we had to make adjustments, do the calculations again\n      } while (adjustmentRatio !== 1);\n\n      // Reposition the image correctly\n      this.image.set({\n        left: this.editorWidth / 2 - deltaX,\n        top: this.editorHeight / 2 - deltaY,\n      });\n\n      // Finally, store the new cropper state to reflect the rotation change.\n      state.offsetX = newCenterX;\n      state.offsetY = newCenterY;\n      state.width = this.viewport.width / currentZoomRatio / sizeFactor;\n      state.height = this.viewport.height / currentZoomRatio / sizeFactor;\n\n      this.storeCropperState(state);\n\n      // Zoom the image in and we're done.\n      this.zoomRatio = currentZoomRatio;\n\n      if (this.focalPoint) {\n        this._adjustFocalPointByAngle(angleDelta);\n\n        if (!this._isCenterInside(this.focalPoint, this.viewport)) {\n          this.focalPoint.set({opacity: 0});\n        } else {\n          this.focalPoint.set({opacity: 1});\n        }\n      } else if (angleDelta !== 0) {\n        this._resetFocalPointPosition();\n      }\n\n      this._zoomImage();\n    },\n\n    /**\n     * If focal point is active and outside of viewport after straightening, reset it.\n     */\n    _cleanupFocalPointAfterStraighten: function () {\n      if (\n        this.focalPoint &&\n        !this._isCenterInside(this.focalPoint, this.viewport)\n      ) {\n        this.focalPoint.set({opacity: 1});\n        var state = this.focalPointState;\n        state.offsetX = 0;\n        state.offsetY = 0;\n        this.storeFocalPointState(state);\n        this.toggleFocalPoint();\n      }\n    },\n\n    /**\n     * Reset focal point to the middle of image.\n     */\n    _resetFocalPointPosition: function () {\n      var state = this.focalPointState;\n      state.offsetX = 0;\n      state.offsetY = 0;\n      this.storeFocalPointState(state);\n    },\n\n    /**\n     * Returns true if a center of an object is inside another rectangle shaped object that is not rotated.\n     *\n     * @param {Object} object\n     * @param {Object} containingObject\n     * @returns {boolean}\n     */\n    _isCenterInside: function (object, containingObject) {\n      return (\n        object.left > containingObject.left - containingObject.width / 2 &&\n        object.top > containingObject.top - containingObject.height / 2 &&\n        object.left < containingObject.left + containingObject.width / 2 &&\n        object.top < containingObject.top + containingObject.height / 2\n      );\n    },\n\n    /**\n     * Adjust the focal point by an angle in degrees.\n     * @param {number} angle\n     */\n    _adjustFocalPointByAngle: function (angle) {\n      var angleInRadians = angle * (Math.PI / 180);\n      var state = this.focalPointState;\n\n      var focalX = state.offsetX;\n      var focalY = state.offsetY;\n\n      // Calculate how the focal point would need to move in a circle to keep on the same spot\n      // on the image if it was rotated with zoom intact.\n      var newFocalX =\n        focalX * Math.cos(angleInRadians) - focalY * Math.sin(angleInRadians);\n      var newFocalY =\n        focalX * Math.sin(angleInRadians) + focalY * Math.cos(angleInRadians);\n      var sizeFactor =\n        this.getScaledImageDimensions().width / state.imageDimensions.width;\n\n      var adjustedFocalX = newFocalX * sizeFactor * this.zoomRatio;\n      var adjustedFocalY = newFocalY * sizeFactor * this.zoomRatio;\n\n      this.focalPoint.left = this.image.left + adjustedFocalX;\n      this.focalPoint.top = this.image.top + adjustedFocalY;\n\n      state.offsetX = newFocalX;\n      state.offsetY = newFocalY;\n      this.storeFocalPointState(state);\n    },\n\n    /**\n     * Get the zoom ratio required to fit a rectangle within another rectangle, that is defined by vertices.\n     * If the rectangle fits, 1 will be returned.\n     *\n     * @param {Object} rectangle\n     * @param {Object} containingVertices\n     */\n    _getZoomRatioToFitRectangle: function (rectangle, containingVertices) {\n      var rectangleVertices = this._getRectangleVertices(rectangle);\n      var vertex;\n\n      // Check if any of the viewport vertices end up out of bounds\n      for (\n        var verticeIndex = 0;\n        verticeIndex < rectangleVertices.length;\n        verticeIndex++\n      ) {\n        vertex = rectangleVertices[verticeIndex];\n\n        if (!this.arePointsInsideRectangle([vertex], containingVertices)) {\n          break;\n        }\n\n        vertex = false;\n      }\n\n      // If there's no vertex set after loop, it means that all of them are inside the image rectangle\n      var adjustmentRatio;\n\n      if (!vertex) {\n        adjustmentRatio = 1;\n      } else {\n        // Find out which edge got crossed by the vertex\n        var edge = this._getEdgeCrossed(containingVertices, vertex);\n\n        var rectangleCenter = {\n          x: rectangle.left + rectangle.width / 2,\n          y: rectangle.top + rectangle.height / 2,\n        };\n\n        // Calculate how much further that edge needs to be.\n        // https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line#Line_defined_by_two_points\n        var distanceFromVertexToEdge =\n          Math.abs(\n            (edge[1].y - edge[0].y) * vertex.x -\n              (edge[1].x - edge[0].x) * vertex.y +\n              edge[1].x * edge[0].y -\n              edge[1].y * edge[0].x\n          ) /\n          Math.sqrt(\n            Math.pow(edge[1].y - edge[0].y, 2) +\n              Math.pow(edge[1].x - edge[0].x, 2)\n          );\n        var distanceFromCenterToEdge =\n          Math.abs(\n            (edge[1].y - edge[0].y) * rectangleCenter.x -\n              (edge[1].x - edge[0].x) * rectangleCenter.y +\n              edge[1].x * edge[0].y -\n              edge[1].y * edge[0].x\n          ) /\n          Math.sqrt(\n            Math.pow(edge[1].y - edge[0].y, 2) +\n              Math.pow(edge[1].x - edge[0].x, 2)\n          );\n\n        // Adjust the zoom ratio\n        adjustmentRatio =\n          (distanceFromVertexToEdge + distanceFromCenterToEdge) /\n          distanceFromCenterToEdge;\n      }\n\n      return adjustmentRatio;\n    },\n\n    /**\n     * Save the image.\n     *\n     * @param {Object} ev\n     */\n    saveImage: function (ev) {\n      var $button = $(ev.currentTarget);\n      if (this.saving) {\n        return false;\n      }\n\n      this.saving = true;\n      $button.addClass('loading');\n      const replace = $button.hasClass('replace');\n\n      var postData = {\n        assetId: this.assetId,\n        viewportRotation: this.viewportRotation,\n        imageRotation: this.imageStraightenAngle,\n        replace: replace ? 1 : 0,\n      };\n\n      if (this.cropperState) {\n        var cropData = {};\n\n        cropData.height = this.cropperState.height;\n        cropData.width = this.cropperState.width;\n        cropData.offsetX = this.cropperState.offsetX;\n        cropData.offsetY = this.cropperState.offsetY;\n\n        postData.imageDimensions = this.cropperState.imageDimensions;\n\n        postData.cropData = cropData;\n      } else {\n        postData.imageDimensions = this.getScaledImageDimensions();\n      }\n\n      if (this.focalPoint) {\n        postData.focalPoint = this.focalPointState;\n      }\n\n      postData.flipData = this.flipData;\n      postData.zoom = this.zoomRatio;\n\n      Craft.sendActionRequest('POST', 'assets/save-image', {data: postData})\n        .then(({data}) => {\n          this.onSave(data);\n          if (replace && Craft.broadcaster) {\n            Craft.broadcaster.postMessage({\n              event: 'saveElement',\n              id: this.assetId,\n            });\n          }\n          this.hide();\n          Craft.cp.runQueue();\n\n          // Refresh Live Preview\n          Craft.Preview.refresh();\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(response.data.message);\n        })\n        .finally(() => {\n          this.$buttons.find('.btn').removeClass('loading');\n          this.saving = false;\n        });\n    },\n\n    /**\n     * Return image zoom ratio depending on the straighten angle to cover a viewport by given dimensions.\n     *\n     * @param {Object} dimensions\n     */\n    getZoomToCoverRatio: function (dimensions) {\n      // Convert the angle to radians\n      var angleInRadians =\n        Math.abs(this.imageStraightenAngle) * (Math.PI / 180);\n\n      // Calculate the dimensions of the scaled image using the magic of math\n      var scaledWidth =\n        Math.sin(angleInRadians) * dimensions.height +\n        Math.cos(angleInRadians) * dimensions.width;\n      var scaledHeight =\n        Math.sin(angleInRadians) * dimensions.width +\n        Math.cos(angleInRadians) * dimensions.height;\n\n      // Calculate the ratio\n      return Math.max(\n        scaledWidth / dimensions.width,\n        scaledHeight / dimensions.height\n      );\n    },\n\n    /**\n     * Return image zoom ratio depending on the straighten angle to fit inside a viewport by given dimensions.\n     *\n     * @param {Object} dimensions\n     */\n    getZoomToFitRatio: function (dimensions) {\n      // Get the bounding box for a rotated image\n      var boundingBox = this._getImageBoundingBox(dimensions);\n\n      // Scale the bounding box to fit\n      var scale = 1;\n      if (\n        boundingBox.height > this.editorHeight ||\n        boundingBox.width > this.editorWidth\n      ) {\n        var vertScale = this.editorHeight / boundingBox.height;\n        var horiScale = this.editorWidth / boundingBox.width;\n        scale = Math.min(horiScale, vertScale);\n      }\n\n      return scale;\n    },\n\n    /**\n     * Return the combined zoom ratio to fit a rectangle inside image that's been zoomed to fit.\n     */\n    getCombinedZoomRatio: function (dimensions) {\n      return (\n        this.getZoomToCoverRatio(dimensions) /\n        this.getZoomToFitRatio(dimensions)\n      );\n    },\n\n    /**\n     * Draw the grid.\n     *\n     * @private\n     */\n    _showGrid: function () {\n      if (!this.grid) {\n        var strokeOptions = {\n          strokeWidth: 1,\n          stroke: 'rgba(255,255,255,0.5)',\n        };\n\n        var lineCount = 8;\n        var gridWidth = this.viewport.width;\n        var gridHeight = this.viewport.height;\n        var xStep = gridWidth / (lineCount + 1);\n        var yStep = gridHeight / (lineCount + 1);\n\n        var grid = [\n          new fabric.Rect({\n            strokeWidth: 2,\n            stroke: 'rgba(255,255,255,1)',\n            originX: 'center',\n            originY: 'center',\n            width: gridWidth,\n            height: gridHeight,\n            left: gridWidth / 2,\n            top: gridHeight / 2,\n            fill: 'rgba(255,255,255,0)',\n          }),\n        ];\n\n        var i;\n        for (i = 1; i <= lineCount; i++) {\n          grid.push(\n            new fabric.Line(\n              [i * xStep, 0, i * xStep, gridHeight],\n              strokeOptions\n            )\n          );\n        }\n        for (i = 1; i <= lineCount; i++) {\n          grid.push(\n            new fabric.Line([0, i * yStep, gridWidth, i * yStep], strokeOptions)\n          );\n        }\n\n        this.grid = new fabric.Group(grid, {\n          left: this.editorWidth / 2,\n          top: this.editorHeight / 2,\n          originX: 'center',\n          originY: 'center',\n          angle: this.viewport.angle,\n        });\n\n        this.canvas.add(this.grid);\n        this.renderImage();\n      }\n    },\n\n    /**\n     * Hide the grid\n     */\n    _hideGrid: function () {\n      this.canvas.remove(this.grid);\n      this.grid = null;\n      this.renderImage();\n    },\n\n    /**\n     * Remove all the events when hiding the editor.\n     */\n    onFadeOut: function () {\n      this.destroy();\n    },\n\n    /**\n     * Make sure underlying content is not scrolled by accident.\n     */\n    show: function () {\n      this.base();\n      Garnish.$bod.addClass('no-scroll');\n    },\n\n    /**\n     * Allow the content to scroll.\n     */\n    hide: function () {\n      this.removeAllListeners();\n      this.straighteningInput.removeAllListeners();\n      Garnish.$bod.removeClass('no-scroll');\n      this.base();\n    },\n\n    /**\n     * onSave callback.\n     */\n    onSave: function (data) {\n      this.settings.onSave(data);\n      this.trigger('save');\n    },\n\n    /**\n     * Enable the rotation slider.\n     */\n    enableSlider: function () {\n      this.$imageTools.removeClass('hidden');\n    },\n\n    /**\n     * Disable the rotation slider.\n     */\n    disableSlider: function () {\n      this.$imageTools.addClass('hidden');\n    },\n\n    /**\n     * Switch to crop mode.\n     */\n    enableCropMode: function () {\n      var imageDimensions = this.getScaledImageDimensions();\n      this.zoomRatio = this.getZoomToFitRatio(imageDimensions);\n\n      var viewportProperties = {\n        width: this.editorWidth,\n        height: this.editorHeight,\n      };\n\n      var imageProperties = {\n        width: imageDimensions.width * this.zoomRatio,\n        height: imageDimensions.height * this.zoomRatio,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      };\n\n      var callback = () => {\n        this._setFittedImageVerticeCoordinates();\n\n        // Restore cropper\n        var state = this.cropperState;\n        var scaledImageDimensions = this.getScaledImageDimensions();\n        var sizeFactor =\n          scaledImageDimensions.width / state.imageDimensions.width;\n\n        // Restore based on the stored information\n        var cropperData = {\n          left: this.image.left + state.offsetX * sizeFactor * this.zoomRatio,\n          top: this.image.top + state.offsetY * sizeFactor * this.zoomRatio,\n          width: state.width * sizeFactor * this.zoomRatio,\n          height: state.height * sizeFactor * this.zoomRatio,\n        };\n\n        this._showCropper(cropperData);\n\n        if (this.focalPoint) {\n          sizeFactor =\n            scaledImageDimensions.width /\n            this.focalPointState.imageDimensions.width;\n          this.focalPoint.left =\n            this.image.left +\n            this.focalPointState.offsetX * sizeFactor * this.zoomRatio;\n          this.focalPoint.top =\n            this.image.top +\n            this.focalPointState.offsetY * sizeFactor * this.zoomRatio;\n          this.canvas.add(this.focalPoint);\n        }\n      };\n\n      this._editorModeTransition(callback, imageProperties, viewportProperties);\n    },\n\n    /**\n     * Switch out of crop mode.\n     */\n    disableCropMode: function () {\n      var viewportProperties = {};\n\n      this._hideCropper();\n      var imageDimensions = this.getScaledImageDimensions();\n      var targetZoom =\n        this.getZoomToCoverRatio(imageDimensions) * this.scaleFactor;\n      var inverseZoomFactor = targetZoom / this.zoomRatio;\n      this.zoomRatio = targetZoom;\n\n      var imageProperties = {\n        width: imageDimensions.width * this.zoomRatio,\n        height: imageDimensions.height * this.zoomRatio,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      };\n\n      var offsetX = this.clipper.left - this.image.left;\n      var offsetY = this.clipper.top - this.image.top;\n\n      var imageOffsetX = offsetX * inverseZoomFactor;\n      var imageOffsetY = offsetY * inverseZoomFactor;\n      imageProperties.left = this.editorWidth / 2 - imageOffsetX;\n      imageProperties.top = this.editorHeight / 2 - imageOffsetY;\n\n      // Calculate the cropper dimensions after all the zooming\n      viewportProperties.height = this.clipper.height * inverseZoomFactor;\n      viewportProperties.width = this.clipper.width * inverseZoomFactor;\n\n      if (\n        !this.focalPoint ||\n        (this.focalPoint &&\n          !this._isCenterInside(this.focalPoint, this.clipper))\n      ) {\n        if (this.focalPoint) {\n          this.toggleFocalPoint();\n        }\n\n        this._resetFocalPointPosition();\n      }\n\n      var callback = () => {\n        // Reposition focal point correctly\n        if (this.focalPoint) {\n          var sizeFactor =\n            this.getScaledImageDimensions().width /\n            this.focalPointState.imageDimensions.width;\n          this.focalPoint.left =\n            this.image.left +\n            this.focalPointState.offsetX * sizeFactor * this.zoomRatio;\n          this.focalPoint.top =\n            this.image.top +\n            this.focalPointState.offsetY * sizeFactor * this.zoomRatio;\n          this.canvas.add(this.focalPoint);\n        }\n      };\n\n      this._editorModeTransition(callback, imageProperties, viewportProperties);\n    },\n\n    /**\n     * @callback editorModeTransitionCallback\n     */\n    /**\n     * Transition between cropping end editor modes\n     *\n     * @param {editorModeTransitionCallback}\n     * @param {Object} imageProperties\n     * @param {Object} viewportProperties\n     * @private\n     */\n    _editorModeTransition: function (\n      callback,\n      imageProperties,\n      viewportProperties\n    ) {\n      this._queue.pause();\n\n      if (!this.animationInProgress) {\n        this.animationInProgress = true;\n\n        // Without this it looks semi-broken during animation\n        if (this.focalPoint) {\n          this.canvas.remove(this.focalPoint);\n          this.renderImage();\n        }\n\n        this.image.animate(imageProperties, {\n          onChange: this.canvas.renderAll.bind(this.canvas),\n          duration: this.settings.animationDuration,\n          onComplete: () => {\n            callback();\n            this.animationInProgress = false;\n            this.renderImage();\n            this._queue.resume();\n          },\n        });\n\n        this.viewport.animate(viewportProperties, {\n          duration: this.settings.animationDuration,\n        });\n      }\n    },\n\n    _showSpinner: function () {\n      if (!this.$spinner) {\n        this.$spinner = $('<div class=\"spinner big spinner-absolute\"/>');\n      }\n      this.$spinner.appendTo(this.$container.find('.image'));\n    },\n\n    _hideSpinner: function () {\n      this.$spinner.remove();\n    },\n\n    /**\n     * Show the cropper.\n     *\n     * @param {Object} clipperData\n     */\n    _showCropper: function (clipperData) {\n      this._setupCropperLayer(clipperData);\n      this._redrawCropperElements();\n      this.renderCropper();\n    },\n\n    /**\n     * Hide the cropper.\n     */\n    _hideCropper: function () {\n      if (this.clipper) {\n        this.croppingCanvas.remove(this.clipper);\n        this.croppingCanvas.remove(this.croppingShade);\n        this.croppingCanvas.remove(this.cropperHandles);\n        this.croppingCanvas.remove(this.cropperGrid);\n        this.croppingCanvas.remove(this.croppingRectangle);\n\n        this.croppingCanvas = null;\n        this.renderCropper = null;\n      }\n    },\n\n    /**\n     * Draw the cropper.\n     *\n     * @param {Object} clipperData\n     */\n    _setupCropperLayer: function (clipperData) {\n      // Set up the canvas for cropper\n      this.croppingCanvas = new fabric.StaticCanvas('cropping-canvas', {\n        backgroundColor: 'rgba(0,0,0,0)',\n        hoverCursor: 'default',\n        selection: false,\n      });\n\n      this.croppingCanvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      this.renderCropper = () =>\n        Garnish.requestAnimationFrame(\n          this.croppingCanvas.renderAll.bind(this.croppingCanvas)\n        );\n\n      $('#cropping-canvas', this.$editorContainer).css({\n        position: 'absolute',\n        top: 0,\n        left: 0,\n      });\n\n      this.croppingShade = new fabric.Rect({\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n        originX: 'center',\n        originY: 'center',\n        width: this.editorWidth,\n        height: this.editorHeight,\n        fill: 'rgba(0,0,0,0.7)',\n      });\n\n      // Calculate the cropping rectangle size\n      var imageDimensions = this.getScaledImageDimensions();\n      var rectangleRatio =\n        this.imageStraightenAngle === 0\n          ? 1\n          : this.getCombinedZoomRatio(imageDimensions) * 1.2;\n      var rectWidth = imageDimensions.width / rectangleRatio;\n      var rectHeight = imageDimensions.height / rectangleRatio;\n\n      if (this.hasOrientationChanged()) {\n        var temp = rectHeight;\n        rectHeight = rectWidth;\n        rectWidth = temp;\n      }\n\n      // Set up the cropping viewport rectangle\n      this.clipper = new fabric.Rect({\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n        originX: 'center',\n        originY: 'center',\n        width: rectWidth,\n        height: rectHeight,\n        stroke: 'black',\n        fill: 'rgba(128,0,0,1)',\n        strokeWidth: 0,\n      });\n\n      // Set from clipper data\n      if (clipperData) {\n        this.clipper.set(clipperData);\n      }\n\n      this.clipper.globalCompositeOperation = 'destination-out';\n      this.croppingCanvas.add(this.croppingShade);\n      this.croppingCanvas.add(this.clipper);\n    },\n\n    /**\n     * Redraw the cropper boundaries\n     */\n    _redrawCropperElements: function () {\n      if (typeof this._redrawCropperElements._ === 'undefined') {\n        this._redrawCropperElements._ = {};\n      }\n\n      if (this.cropperHandles) {\n        this.croppingCanvas.remove(this.cropperHandles);\n        this.croppingCanvas.remove(this.cropperGrid);\n        this.croppingCanvas.remove(this.croppingRectangle);\n      }\n      this._redrawCropperElements._.lineOptions = {\n        strokeWidth: 4,\n        stroke: 'rgb(255,255,255)',\n        fill: false,\n      };\n\n      this._redrawCropperElements._.gridOptions = {\n        strokeWidth: 2,\n        stroke: 'rgba(255,255,255,0.5)',\n      };\n\n      // Draw the handles\n      this._redrawCropperElements._.pathGroup = [\n        new fabric.Path(\n          'M 0,10 L 0,0 L 10,0',\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M ' +\n            (this.clipper.width - 8) +\n            ',0 L ' +\n            (this.clipper.width + 4) +\n            ',0 L ' +\n            (this.clipper.width + 4) +\n            ',10',\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M ' +\n            (this.clipper.width + 4) +\n            ',' +\n            (this.clipper.height - 8) +\n            ' L' +\n            (this.clipper.width + 4) +\n            ',' +\n            (this.clipper.height + 4) +\n            ' L ' +\n            (this.clipper.width - 8) +\n            ',' +\n            (this.clipper.height + 4),\n          this._redrawCropperElements._.lineOptions\n        ),\n        new fabric.Path(\n          'M 10,' +\n            (this.clipper.height + 4) +\n            ' L 0,' +\n            (this.clipper.height + 4) +\n            ' L 0,' +\n            (this.clipper.height - 8),\n          this._redrawCropperElements._.lineOptions\n        ),\n      ];\n\n      this.cropperHandles = new fabric.Group(\n        this._redrawCropperElements._.pathGroup,\n        {\n          left: this.clipper.left,\n          top: this.clipper.top,\n          originX: 'center',\n          originY: 'center',\n        }\n      );\n\n      // Don't forget the rectangle\n      this.croppingRectangle = new fabric.Rect({\n        left: this.clipper.left,\n        top: this.clipper.top,\n        width: this.clipper.width,\n        height: this.clipper.height,\n        fill: 'rgba(0,0,0,0)',\n        stroke: 'rgba(255,255,255,0.8)',\n        strokeWidth: 2,\n        originX: 'center',\n        originY: 'center',\n      });\n\n      this.cropperGrid = new fabric.Group(\n        [\n          new fabric.Line(\n            [\n              this.clipper.width * 0.33,\n              0,\n              this.clipper.width * 0.33,\n              this.clipper.height,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              this.clipper.width * 0.66,\n              0,\n              this.clipper.width * 0.66,\n              this.clipper.height,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              0,\n              this.clipper.height * 0.33,\n              this.clipper.width,\n              this.clipper.height * 0.33,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n          new fabric.Line(\n            [\n              0,\n              this.clipper.height * 0.66,\n              this.clipper.width,\n              this.clipper.height * 0.66,\n            ],\n            this._redrawCropperElements._.gridOptions\n          ),\n        ],\n        {\n          left: this.clipper.left,\n          top: this.clipper.top,\n          originX: 'center',\n          originY: 'center',\n        }\n      );\n\n      this._redrawCropperElements._.cropTextTop =\n        this.croppingRectangle.top + this.clipper.height / 2 + 12;\n      this._redrawCropperElements._.cropTextBackgroundColor = 'rgba(0,0,0,0)';\n\n      if (\n        this._redrawCropperElements._.cropTextTop + 12 >\n        this.editorHeight - 2\n      ) {\n        this._redrawCropperElements._.cropTextTop -= 24;\n        this._redrawCropperElements._.cropTextBackgroundColor =\n          'rgba(0,0,0,0.5)';\n      }\n\n      this.croppingCanvas.add(this.cropperHandles);\n      this.croppingCanvas.add(this.cropperGrid);\n      this.croppingCanvas.add(this.croppingRectangle);\n    },\n\n    /**\n     * Reposition the cropper when the image editor dimensions change.\n     *\n     * @param {Object} previousImageArea\n     */\n    _repositionCropper: function (previousImageArea) {\n      if (!this.croppingCanvas) {\n        return;\n      }\n\n      // Get the current clipper offset relative to center\n      var currentOffset = {\n        x: this.clipper.left - this.croppingCanvas.width / 2,\n        y: this.clipper.top - this.croppingCanvas.height / 2,\n      };\n\n      // Resize the cropping canvas\n      this.croppingCanvas.setDimensions({\n        width: this.editorWidth,\n        height: this.editorHeight,\n      });\n\n      // Check by what factor will the new final bounding box be different\n      var currentArea = this._getBoundingRectangle(this.imageVerticeCoords);\n      var areaFactor = currentArea.width / previousImageArea.width;\n\n      // Adjust the cropper size to scale along with the bounding box\n      this.clipper.width = Math.round(this.clipper.width * areaFactor);\n      this.clipper.height = Math.round(this.clipper.height * areaFactor);\n\n      // Adjust the coordinates: re-position clipper in relation to the new center to adjust\n      // for editor size changes and then multiply by the size factor to adjust for image size changes\n      this.clipper.left = this.editorWidth / 2 + currentOffset.x * areaFactor;\n      this.clipper.top = this.editorHeight / 2 + currentOffset.y * areaFactor;\n\n      // Resize the cropping shade\n      this.croppingShade.set({\n        width: this.editorWidth,\n        height: this.editorHeight,\n        left: this.editorWidth / 2,\n        top: this.editorHeight / 2,\n      });\n\n      this._redrawCropperElements();\n      this.renderCropper();\n    },\n\n    /**\n     * Get the dimensions of a bounding rectangle by a set of four coordinates.\n     *\n     * @param {Object} coordinateSet\n     */\n    _getBoundingRectangle: function (coordinateSet) {\n      return {\n        width:\n          Math.max(\n            coordinateSet.a.x,\n            coordinateSet.b.x,\n            coordinateSet.c.x,\n            coordinateSet.d.x\n          ) -\n          Math.min(\n            coordinateSet.a.x,\n            coordinateSet.b.x,\n            coordinateSet.c.x,\n            coordinateSet.d.x\n          ),\n        height:\n          Math.max(\n            coordinateSet.a.y,\n            coordinateSet.b.y,\n            coordinateSet.c.y,\n            coordinateSet.d.y\n          ) -\n          Math.min(\n            coordinateSet.a.y,\n            coordinateSet.b.y,\n            coordinateSet.c.y,\n            coordinateSet.d.y\n          ),\n      };\n    },\n\n    /**\n     * Handle the mouse being clicked.\n     *\n     * @param {Object} ev\n     */\n    _handleMouseDown: function (ev) {\n      // Focal before resize before dragging\n      var focal = this.focalPoint && this._isMouseOver(ev, this.focalPoint);\n      var move = this.croppingCanvas && this._isMouseOver(ev, this.clipper);\n      var handle = this.croppingCanvas && this._cropperHandleHitTest(ev);\n\n      if (handle || move || focal) {\n        this.previousMouseX = ev.pageX;\n        this.previousMouseY = ev.pageY;\n\n        if (focal) {\n          this.draggingFocal = true;\n        } else if (handle) {\n          this.scalingCropper = handle;\n        } else if (move) {\n          this.draggingCropper = true;\n        }\n      }\n    },\n\n    /**\n     * Handle the mouse being moved.\n     *\n     * @param {Object} ev\n     */\n    _handleMouseMove: function (ev) {\n      if (this.mouseMoveEvent !== null) {\n        Garnish.requestAnimationFrame(this._handleMouseMoveInternal.bind(this));\n      }\n      this.mouseMoveEvent = ev;\n    },\n\n    _handleMouseMoveInternal: function () {\n      if (this.mouseMoveEvent === null) {\n        return;\n      }\n\n      if (this.focalPoint && this.draggingFocal) {\n        this._handleFocalDrag(this.mouseMoveEvent);\n        this.storeFocalPointState();\n        this.renderImage();\n      } else if (this.draggingCropper || this.scalingCropper) {\n        if (this.draggingCropper) {\n          this._handleCropperDrag(this.mouseMoveEvent);\n        } else {\n          this._handleCropperResize(this.mouseMoveEvent);\n        }\n\n        this._redrawCropperElements();\n\n        this.storeCropperState();\n        this.renderCropper();\n      } else {\n        this._setMouseCursor(this.mouseMoveEvent);\n      }\n\n      this.previousMouseX = this.mouseMoveEvent.pageX;\n      this.previousMouseY = this.mouseMoveEvent.pageY;\n\n      this.mouseMoveEvent = null;\n    },\n\n    /**\n     * Handle mouse being released.\n     */\n    _handleMouseUp: function () {\n      this.draggingCropper = false;\n      this.scalingCropper = false;\n      this.draggingFocal = false;\n    },\n\n    /**\n     * Handle mouse out\n     *\n     * @param {Object} ev\n     */\n    _handleMouseOut: function (ev) {\n      this._handleMouseUp(ev);\n      this.mouseMoveEvent = ev;\n      this._handleMouseMoveInternal();\n    },\n\n    /**\n     * Handle cropper being dragged.\n     *\n     * @param {Object} ev\n     */\n    _handleCropperDrag: function (ev) {\n      if (typeof this._handleCropperDrag._ === 'undefined') {\n        this._handleCropperDrag._ = {};\n      }\n\n      this._handleCropperDrag._.deltaX = ev.pageX - this.previousMouseX;\n      this._handleCropperDrag._.deltaY = ev.pageY - this.previousMouseY;\n\n      if (\n        this._handleCropperDrag._.deltaX === 0 &&\n        this._handleCropperDrag._.deltaY === 0\n      ) {\n        return false;\n      }\n\n      this._handleCropperDrag._.rectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      this._handleCropperDrag._.vertices = this._getRectangleVertices(\n        this._handleCropperDrag._.rectangle,\n        this._handleCropperDrag._.deltaX,\n        this._handleCropperDrag._.deltaY\n      );\n\n      // If this would drag it outside of the image\n      if (\n        !this.arePointsInsideRectangle(\n          this._handleCropperDrag._.vertices,\n          this.imageVerticeCoords\n        )\n      ) {\n        // Try to find the furthest point in the same general direction where we can drag it\n\n        // Delta iterator setup\n        this._handleCropperDrag._.dxi = 0;\n        this._handleCropperDrag._.dyi = 0;\n        this._handleCropperDrag._.xStep =\n          this._handleCropperDrag._.deltaX > 0 ? -1 : 1;\n        this._handleCropperDrag._.yStep =\n          this._handleCropperDrag._.deltaY > 0 ? -1 : 1;\n\n        // The furthest we can move\n        this._handleCropperDrag._.furthest = 0;\n        this._handleCropperDrag._.furthestDeltas = {};\n\n        // Loop through every combination of dragging it not so far\n        for (\n          this._handleCropperDrag._.dxi = Math.min(\n            Math.abs(this._handleCropperDrag._.deltaX),\n            10\n          );\n          this._handleCropperDrag._.dxi >= 0;\n          this._handleCropperDrag._.dxi--\n        ) {\n          for (\n            this._handleCropperDrag._.dyi = Math.min(\n              Math.abs(this._handleCropperDrag._.deltaY),\n              10\n            );\n            this._handleCropperDrag._.dyi >= 0;\n            this._handleCropperDrag._.dyi--\n          ) {\n            this._handleCropperDrag._.vertices = this._getRectangleVertices(\n              this._handleCropperDrag._.rectangle,\n              this._handleCropperDrag._.dxi *\n                (this._handleCropperDrag._.deltaX > 0 ? 1 : -1),\n              this._handleCropperDrag._.dyi *\n                (this._handleCropperDrag._.deltaY > 0 ? 1 : -1)\n            );\n\n            if (\n              this.arePointsInsideRectangle(\n                this._handleCropperDrag._.vertices,\n                this.imageVerticeCoords\n              )\n            ) {\n              if (\n                this._handleCropperDrag._.dxi + this._handleCropperDrag._.dyi >\n                this._handleCropperDrag._.furthest\n              ) {\n                this._handleCropperDrag._.furthest =\n                  this._handleCropperDrag._.dxi + this._handleCropperDrag._.dyi;\n                this._handleCropperDrag._.furthestDeltas = {\n                  x:\n                    this._handleCropperDrag._.dxi *\n                    (this._handleCropperDrag._.deltaX > 0 ? 1 : -1),\n                  y:\n                    this._handleCropperDrag._.dyi *\n                    (this._handleCropperDrag._.deltaY > 0 ? 1 : -1),\n                };\n              }\n            }\n          }\n        }\n\n        // REALLY can't drag along the cursor movement\n        if (this._handleCropperDrag._.furthest == 0) {\n          return;\n        } else {\n          this._handleCropperDrag._.deltaX =\n            this._handleCropperDrag._.furthestDeltas.x;\n          this._handleCropperDrag._.deltaY =\n            this._handleCropperDrag._.furthestDeltas.y;\n        }\n      }\n\n      this.clipper.set({\n        left: this.clipper.left + this._handleCropperDrag._.deltaX,\n        top: this.clipper.top + this._handleCropperDrag._.deltaY,\n      });\n    },\n\n    /**\n     * Handle focal point being dragged.\n     *\n     * @param {Object} ev\n     */\n    _handleFocalDrag: function (ev) {\n      if (typeof this._handleFocalDrag._ === 'undefined') {\n        this._handleFocalDrag._ = {};\n      }\n\n      if (this.focalPoint) {\n        this._handleFocalDrag._.deltaX = ev.pageX - this.previousMouseX;\n        this._handleFocalDrag._.deltaY = ev.pageY - this.previousMouseY;\n\n        if (\n          this._handleFocalDrag._.deltaX === 0 &&\n          this._handleFocalDrag._.deltaY === 0\n        ) {\n          return;\n        }\n\n        this._handleFocalDrag._.newX =\n          this.focalPoint.left + this._handleFocalDrag._.deltaX;\n        this._handleFocalDrag._.newY =\n          this.focalPoint.top + this._handleFocalDrag._.deltaY;\n\n        // Just make sure that the focal point stays inside the image\n        if (this.currentView === 'crop') {\n          if (\n            !this.arePointsInsideRectangle(\n              [\n                {\n                  x: this._handleFocalDrag._.newX,\n                  y: this._handleFocalDrag._.newY,\n                },\n              ],\n              this.imageVerticeCoords\n            )\n          ) {\n            return;\n          }\n        } else {\n          if (\n            !(\n              this.viewport.left -\n                this.viewport.width / 2 -\n                this._handleFocalDrag._.newX <\n                0 &&\n              this.viewport.left +\n                this.viewport.width / 2 -\n                this._handleFocalDrag._.newX >\n                0 &&\n              this.viewport.top -\n                this.viewport.height / 2 -\n                this._handleFocalDrag._.newY <\n                0 &&\n              this.viewport.top +\n                this.viewport.height / 2 -\n                this._handleFocalDrag._.newY >\n                0\n            )\n          ) {\n            return;\n          }\n        }\n\n        this.focalPoint.set({\n          left: this.focalPoint.left + this._handleFocalDrag._.deltaX,\n          top: this.focalPoint.top + this._handleFocalDrag._.deltaY,\n        });\n      }\n    },\n\n    /**\n     * Set the cropping constraint\n     * @param {string} constraint\n     */\n    setCroppingConstraint: function (constraint) {\n      // In case this caused the sidebar width to change.\n      this.updateSizeAndPosition();\n\n      switch (constraint) {\n        case 'none':\n          this.croppingConstraint = false;\n          break;\n\n        case 'original':\n          this.croppingConstraint = this.originalWidth / this.originalHeight;\n          break;\n\n        case 'current':\n          this.croppingConstraint = this.clipper.width / this.clipper.height;\n          break;\n\n        case 'custom':\n          break;\n        default:\n          this.croppingConstraint = parseFloat(constraint);\n\n          break;\n      }\n    },\n\n    /**\n     * Enforce the cropping constraint\n     */\n    enforceCroppingConstraint: function () {\n      if (typeof this.enforceCroppingConstraint._ === 'undefined') {\n        this.enforceCroppingConstraint._ = {};\n      }\n\n      if (this.animationInProgress || !this.croppingConstraint) {\n        return;\n      }\n\n      this.animationInProgress = true;\n\n      // Mock the clipping rectangle for collision tests\n      this.enforceCroppingConstraint._.rectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      // If wider than it should be\n      if (this.clipper.width > this.clipper.height * this.croppingConstraint) {\n        this.enforceCroppingConstraint._.previousHeight =\n          this.enforceCroppingConstraint._.rectangle.height;\n\n        // Make it taller!\n        this.enforceCroppingConstraint._.rectangle.height =\n          this.clipper.width / this.croppingConstraint;\n\n        // Getting really awkward having to convert between 0;0 being center or top-left corner.\n        this.enforceCroppingConstraint._.rectangle.top -=\n          (this.enforceCroppingConstraint._.rectangle.height -\n            this.enforceCroppingConstraint._.previousHeight) /\n          2;\n\n        // If the clipper would end up out of bounds, make it narrower instead.\n        if (\n          !this.arePointsInsideRectangle(\n            this._getRectangleVertices(\n              this.enforceCroppingConstraint._.rectangle\n            ),\n            this.imageVerticeCoords\n          )\n        ) {\n          this.enforceCroppingConstraint._.rectangle.width =\n            this.clipper.height * this.croppingConstraint;\n          this.enforceCroppingConstraint._.rectangle.height =\n            this.enforceCroppingConstraint._.rectangle.width /\n            this.croppingConstraint;\n        }\n      } else {\n        // Follow the same pattern, if taller than it should be.\n        this.enforceCroppingConstraint._.previousWidth =\n          this.enforceCroppingConstraint._.rectangle.width;\n        this.enforceCroppingConstraint._.rectangle.width =\n          this.clipper.height * this.croppingConstraint;\n        this.enforceCroppingConstraint._.rectangle.left -=\n          (this.enforceCroppingConstraint._.rectangle.width -\n            this.enforceCroppingConstraint._.previousWidth) /\n          2;\n\n        if (\n          !this.arePointsInsideRectangle(\n            this._getRectangleVertices(\n              this.enforceCroppingConstraint._.rectangle\n            ),\n            this.imageVerticeCoords\n          )\n        ) {\n          this.enforceCroppingConstraint._.rectangle.height =\n            this.clipper.width / this.croppingConstraint;\n          this.enforceCroppingConstraint._.rectangle.width =\n            this.enforceCroppingConstraint._.rectangle.height *\n            this.croppingConstraint;\n        }\n      }\n\n      this.enforceCroppingConstraint._.properties = {\n        height: this.enforceCroppingConstraint._.rectangle.height,\n        width: this.enforceCroppingConstraint._.rectangle.width,\n      };\n\n      // Make sure to redraw cropper handles and gridlines when resizing\n      this.clipper.animate(this.enforceCroppingConstraint._.properties, {\n        onChange: () => {\n          this._redrawCropperElements();\n          this.croppingCanvas.renderAll();\n        },\n        duration: this.settings.animationDuration,\n        onComplete: () => {\n          this._redrawCropperElements();\n          this.animationInProgress = false;\n          this.renderCropper();\n          this.storeCropperState();\n        },\n      });\n    },\n\n    /**\n     * Handle cropper being resized.\n     *\n     * @param {Object} ev\n     */\n    _handleCropperResize: function (ev) {\n      if (typeof this._handleCropperResize._ === 'undefined') {\n        this._handleCropperResize._ = {};\n      }\n\n      // Size deltas\n      this._handleCropperResize._.deltaX = ev.pageX - this.previousMouseX;\n      this._handleCropperResize._.deltaY = ev.pageY - this.previousMouseY;\n\n      if (this.scalingCropper === 'b' || this.scalingCropper === 't') {\n        this._handleCropperResize._.deltaX = 0;\n      }\n\n      if (this.scalingCropper === 'l' || this.scalingCropper === 'r') {\n        this._handleCropperResize._.deltaY = 0;\n      }\n\n      if (\n        this._handleCropperResize._.deltaX === 0 &&\n        this._handleCropperResize._.deltaY === 0\n      ) {\n        return;\n      }\n\n      // Translate from center-center origin to absolute coords\n      this._handleCropperResize._.startingRectangle = {\n        left: this.clipper.left - this.clipper.width / 2,\n        top: this.clipper.top - this.clipper.height / 2,\n        width: this.clipper.width,\n        height: this.clipper.height,\n      };\n\n      this._handleCropperResize._.rectangle =\n        this._calculateNewCropperSizeByDeltas(\n          this._handleCropperResize._.startingRectangle,\n          this._handleCropperResize._.deltaX,\n          this._handleCropperResize._.deltaY,\n          this.scalingCropper\n        );\n\n      if (\n        this._handleCropperResize._.rectangle.height < 30 ||\n        this._handleCropperResize._.rectangle.width < 30\n      ) {\n        return;\n      }\n\n      if (\n        !this.arePointsInsideRectangle(\n          this._getRectangleVertices(this._handleCropperResize._.rectangle),\n          this.imageVerticeCoords\n        )\n      ) {\n        return;\n      }\n\n      // Translate back to center-center origin.\n      this.clipper.set({\n        top:\n          this._handleCropperResize._.rectangle.top +\n          this._handleCropperResize._.rectangle.height / 2,\n        left:\n          this._handleCropperResize._.rectangle.left +\n          this._handleCropperResize._.rectangle.width / 2,\n        width: this._handleCropperResize._.rectangle.width,\n        height: this._handleCropperResize._.rectangle.height,\n      });\n\n      this._redrawCropperElements();\n    },\n\n    _calculateNewCropperSizeByDeltas: function (\n      startingRectangle,\n      deltaX,\n      deltaY,\n      cropperDirection\n    ) {\n      if (typeof this._calculateNewCropperSizeByDeltas._ === 'undefined') {\n        this._calculateNewCropperSizeByDeltas._ = {};\n      }\n\n      // Center deltas\n      this._calculateNewCropperSizeByDeltas._.topDelta = 0;\n      this._calculateNewCropperSizeByDeltas._.leftDelta = 0;\n\n      this._calculateNewCropperSizeByDeltas._.rectangle = startingRectangle;\n      this._calculateNewCropperSizeByDeltas._.deltaX = deltaX;\n      this._calculateNewCropperSizeByDeltas._.deltaY = deltaY;\n\n      // Lock the aspect ratio if needed\n      if (this.croppingConstraint) {\n        this._calculateNewCropperSizeByDeltas._.change = 0;\n\n        // Take into account the mouse direction and figure out the \"real\" change in cropper size\n        switch (cropperDirection) {\n          case 't':\n            this._calculateNewCropperSizeByDeltas._.change =\n              -this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'b':\n            this._calculateNewCropperSizeByDeltas._.change =\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'r':\n            this._calculateNewCropperSizeByDeltas._.change =\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'l':\n            this._calculateNewCropperSizeByDeltas._.change =\n              -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tr':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? -this._calculateNewCropperSizeByDeltas._.deltaY\n                : this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tl':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? -this._calculateNewCropperSizeByDeltas._.deltaY\n                : -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'br':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? this._calculateNewCropperSizeByDeltas._.deltaY\n                : this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'bl':\n            this._calculateNewCropperSizeByDeltas._.change =\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaY) >\n              Math.abs(this._calculateNewCropperSizeByDeltas._.deltaX)\n                ? this._calculateNewCropperSizeByDeltas._.deltaY\n                : -this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n        }\n\n        if (this.croppingConstraint > 1) {\n          this._calculateNewCropperSizeByDeltas._.deltaX =\n            this._calculateNewCropperSizeByDeltas._.change;\n          this._calculateNewCropperSizeByDeltas._.deltaY =\n            this._calculateNewCropperSizeByDeltas._.deltaX /\n            this.croppingConstraint;\n        } else {\n          this._calculateNewCropperSizeByDeltas._.deltaY =\n            this._calculateNewCropperSizeByDeltas._.change;\n          this._calculateNewCropperSizeByDeltas._.deltaX =\n            this._calculateNewCropperSizeByDeltas._.deltaY *\n            this.croppingConstraint;\n        }\n\n        this._calculateNewCropperSizeByDeltas._.rectangle.height +=\n          this._calculateNewCropperSizeByDeltas._.deltaY;\n        this._calculateNewCropperSizeByDeltas._.rectangle.width +=\n          this._calculateNewCropperSizeByDeltas._.deltaX;\n\n        // Make the cropper compress/expand relative to the correct edge to make it feel \"right\"\n        switch (cropperDirection) {\n          case 't':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX / 2;\n            break;\n          case 'b':\n            this._calculateNewCropperSizeByDeltas._.rectangle.left +=\n              -this._calculateNewCropperSizeByDeltas._.deltaX / 2;\n            break;\n          case 'r':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top +=\n              -this._calculateNewCropperSizeByDeltas._.deltaY / 2;\n            break;\n          case 'l':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY / 2;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'tr':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            break;\n          case 'tl':\n            this._calculateNewCropperSizeByDeltas._.rectangle.top -=\n              this._calculateNewCropperSizeByDeltas._.deltaY;\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n          case 'bl':\n            this._calculateNewCropperSizeByDeltas._.rectangle.left -=\n              this._calculateNewCropperSizeByDeltas._.deltaX;\n            break;\n        }\n      } else {\n        // Lock the aspect ratio\n        if (\n          this.shiftKeyHeld &&\n          (cropperDirection === 'tl' ||\n            cropperDirection === 'tr' ||\n            cropperDirection === 'bl' ||\n            cropperDirection === 'br')\n        ) {\n          this._calculateNewCropperSizeByDeltas._.ratio;\n          if (Math.abs(deltaX) > Math.abs(deltaY)) {\n            this._calculateNewCropperSizeByDeltas._.ratio =\n              startingRectangle.width / startingRectangle.height;\n            this._calculateNewCropperSizeByDeltas._.deltaY =\n              this._calculateNewCropperSizeByDeltas._.deltaX /\n              this._calculateNewCropperSizeByDeltas._.ratio;\n            this._calculateNewCropperSizeByDeltas._.deltaY *=\n              cropperDirection === 'tr' || cropperDirection === 'bl' ? -1 : 1;\n          } else {\n            this._calculateNewCropperSizeByDeltas._.ratio =\n              startingRectangle.width / startingRectangle.height;\n            this._calculateNewCropperSizeByDeltas._.deltaX =\n              this._calculateNewCropperSizeByDeltas._.deltaY *\n              this._calculateNewCropperSizeByDeltas._.ratio;\n            this._calculateNewCropperSizeByDeltas._.deltaX *=\n              cropperDirection === 'tr' || cropperDirection === 'bl' ? -1 : 1;\n          }\n        }\n\n        if (cropperDirection.match(/t/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.top +=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n          this._calculateNewCropperSizeByDeltas._.rectangle.height -=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n        }\n        if (cropperDirection.match(/b/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.height +=\n            this._calculateNewCropperSizeByDeltas._.deltaY;\n        }\n        if (cropperDirection.match(/r/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.width +=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n        }\n        if (cropperDirection.match(/l/)) {\n          this._calculateNewCropperSizeByDeltas._.rectangle.left +=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n          this._calculateNewCropperSizeByDeltas._.rectangle.width -=\n            this._calculateNewCropperSizeByDeltas._.deltaX;\n        }\n      }\n\n      this._calculateNewCropperSizeByDeltas._.rectangle.top =\n        this._calculateNewCropperSizeByDeltas._.rectangle.top;\n      this._calculateNewCropperSizeByDeltas._.rectangle.left =\n        this._calculateNewCropperSizeByDeltas._.rectangle.left;\n      this._calculateNewCropperSizeByDeltas._.rectangle.width =\n        this._calculateNewCropperSizeByDeltas._.rectangle.width;\n      this._calculateNewCropperSizeByDeltas._.rectangle.height =\n        this._calculateNewCropperSizeByDeltas._.rectangle.height;\n\n      return this._calculateNewCropperSizeByDeltas._.rectangle;\n    },\n\n    /**\n     * Set mouse cursor by it's position over cropper.\n     *\n     * @param {Object} ev\n     */\n    _setMouseCursor: function (ev) {\n      if (typeof this._setMouseCursor._ === 'undefined') {\n        this._setMouseCursor._ = {};\n      }\n\n      if (Garnish.isMobileBrowser(true)) {\n        return;\n      }\n      this._setMouseCursor._.cursor = 'default';\n      this._setMouseCursor._.handle =\n        this.croppingCanvas && this._cropperHandleHitTest(ev);\n      if (this.focalPoint && this._isMouseOver(ev, this.focalPoint)) {\n        this._setMouseCursor._.cursor = 'pointer';\n      } else if (this._setMouseCursor._.handle) {\n        if (\n          this._setMouseCursor._.handle === 't' ||\n          this._setMouseCursor._.handle === 'b'\n        ) {\n          this._setMouseCursor._.cursor = 'ns-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'l' ||\n          this._setMouseCursor._.handle === 'r'\n        ) {\n          this._setMouseCursor._.cursor = 'ew-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'tl' ||\n          this._setMouseCursor._.handle === 'br'\n        ) {\n          this._setMouseCursor._.cursor = 'nwse-resize';\n        } else if (\n          this._setMouseCursor._.handle === 'bl' ||\n          this._setMouseCursor._.handle === 'tr'\n        ) {\n          this._setMouseCursor._.cursor = 'nesw-resize';\n        }\n      } else if (this.croppingCanvas && this._isMouseOver(ev, this.clipper)) {\n        this._setMouseCursor._.cursor = 'move';\n      }\n\n      $('.body').css('cursor', this._setMouseCursor._.cursor);\n    },\n\n    /**\n     * Test whether the mouse cursor is on any cropper handles.\n     *\n     * @param {Object} ev\n     */\n    _cropperHandleHitTest: function (ev) {\n      if (typeof this._cropperHandleHitTest._ === 'undefined') {\n        this._cropperHandleHitTest._ = {};\n      }\n\n      this._cropperHandleHitTest._.parentOffset = this.$croppingCanvas.offset();\n      this._cropperHandleHitTest._.mouseX =\n        ev.pageX - this._cropperHandleHitTest._.parentOffset.left;\n      this._cropperHandleHitTest._.mouseY =\n        ev.pageY - this._cropperHandleHitTest._.parentOffset.top;\n\n      // Compensate for center origin coordinate-wise\n      this._cropperHandleHitTest._.lb =\n        this.clipper.left - this.clipper.width / 2;\n      this._cropperHandleHitTest._.rb =\n        this._cropperHandleHitTest._.lb + this.clipper.width;\n      this._cropperHandleHitTest._.tb =\n        this.clipper.top - this.clipper.height / 2;\n      this._cropperHandleHitTest._.bb =\n        this._cropperHandleHitTest._.tb + this.clipper.height;\n\n      // Left side top/bottom\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb - 3\n      ) {\n        if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.tb + 10 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.tb - 3\n        ) {\n          return 'tl';\n        } else if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.bb + 3 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.bb - 10\n        ) {\n          return 'bl';\n        }\n      }\n      // Right side top/bottom\n      if (\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.rb - 13 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb + 3\n      ) {\n        if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.tb + 10 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.tb - 3\n        ) {\n          return 'tr';\n        } else if (\n          this._cropperHandleHitTest._.mouseY <\n            this._cropperHandleHitTest._.bb + 2 &&\n          this._cropperHandleHitTest._.mouseY >\n            this._cropperHandleHitTest._.bb - 10\n        ) {\n          return 'br';\n        }\n      }\n\n      // Left or right\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.lb + 3 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb - 3 &&\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb - 10 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb + 10\n      ) {\n        return 'l';\n      }\n      if (\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb + 1 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.rb - 5 &&\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb - 10 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb + 10\n      ) {\n        return 'r';\n      }\n\n      // Top or bottom\n      if (\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.tb + 4 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.tb - 2 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb - 10\n      ) {\n        return 't';\n      }\n      if (\n        this._cropperHandleHitTest._.mouseY <\n          this._cropperHandleHitTest._.bb + 2 &&\n        this._cropperHandleHitTest._.mouseY >\n          this._cropperHandleHitTest._.bb - 4 &&\n        this._cropperHandleHitTest._.mouseX >\n          this._cropperHandleHitTest._.lb + 10 &&\n        this._cropperHandleHitTest._.mouseX <\n          this._cropperHandleHitTest._.rb - 10\n      ) {\n        return 'b';\n      }\n\n      return false;\n    },\n\n    /**\n     * Test whether the mouse cursor is on a fabricJS object.\n     *\n     * @param {Object} event\n     * @param {Object} object\n     * @returns {boolean}\n     */\n    _isMouseOver: function (event, object) {\n      if (typeof this._isMouseOver._ === 'undefined') {\n        this._isMouseOver._ = {};\n      }\n\n      this._isMouseOver._.parentOffset = this.$croppingCanvas.offset();\n      this._isMouseOver._.mouseX =\n        event.pageX - this._isMouseOver._.parentOffset.left;\n      this._isMouseOver._.mouseY =\n        event.pageY - this._isMouseOver._.parentOffset.top;\n\n      // Compensate for center origin coordinate-wise\n      this._isMouseOver._.lb = object.left - object.width / 2;\n      this._isMouseOver._.rb = this._isMouseOver._.lb + object.width;\n      this._isMouseOver._.tb = object.top - object.height / 2;\n      this._isMouseOver._.bb = this._isMouseOver._.tb + object.height;\n\n      return (\n        this._isMouseOver._.mouseX >= this._isMouseOver._.lb &&\n        this._isMouseOver._.mouseX <= this._isMouseOver._.rb &&\n        this._isMouseOver._.mouseY >= this._isMouseOver._.tb &&\n        this._isMouseOver._.mouseY <= this._isMouseOver._.bb\n      );\n    },\n\n    /**\n     * Get vertices of a rectangle defined by left,top,height and width properties.\n     * Optionally it's possible to provide offsetX and offsetY values.\n     * Left and top properties of rectangle reference the top-left corner.\n     *\n     * @param {Object} rectangle\n     * @param {number} [offsetX]\n     * @param {number} [offsetY]\n     */\n    _getRectangleVertices: function (rectangle, offsetX, offsetY) {\n      if (typeof this._getRectangleVertices._ === 'undefined') {\n        this._getRectangleVertices._ = {};\n      }\n\n      if (typeof offsetX === 'undefined') {\n        offsetX = 0;\n      }\n      if (typeof offsetY === 'undefined') {\n        offsetY = 0;\n      }\n\n      this._getRectangleVertices._.topLeft = {\n        x: rectangle.left + offsetX,\n        y: rectangle.top + offsetY,\n      };\n\n      this._getRectangleVertices._.topRight = {\n        x: this._getRectangleVertices._.topLeft.x + rectangle.width,\n        y: this._getRectangleVertices._.topLeft.y,\n      };\n      this._getRectangleVertices._.bottomRight = {\n        x: this._getRectangleVertices._.topRight.x,\n        y: this._getRectangleVertices._.topRight.y + rectangle.height,\n      };\n      this._getRectangleVertices._.bottomLeft = {\n        x: this._getRectangleVertices._.topLeft.x,\n        y: this._getRectangleVertices._.bottomRight.y,\n      };\n\n      return [\n        this._getRectangleVertices._.topLeft,\n        this._getRectangleVertices._.topRight,\n        this._getRectangleVertices._.bottomRight,\n        this._getRectangleVertices._.bottomLeft,\n      ];\n    },\n\n    /**\n     * Set image vertice coordinates for an image that's been zoomed to fit.\n     */\n    _setFittedImageVerticeCoordinates: function () {\n      this.imageVerticeCoords = this.getImageVerticeCoords('fit');\n    },\n\n    /**\n     * Get image vertice coords by a zoom mode and taking into account the straightening angle.\n     * The zoomMode can be either \"cover\", \"fit\" or a discrete float value.\n     *\n     * @param {string} zoomMode\n     */\n    getImageVerticeCoords: function (zoomMode) {\n      var angleInRadians =\n        -1 *\n        ((this.hasOrientationChanged() ? 90 : 0) + this.imageStraightenAngle) *\n        (Math.PI / 180);\n\n      var imageDimensions = this.getScaledImageDimensions();\n\n      var ratio;\n\n      if (typeof zoomMode === 'number') {\n        ratio = zoomMode;\n      } else if (zoomMode === 'cover') {\n        ratio = this.getZoomToCoverRatio(imageDimensions);\n      } else {\n        ratio = this.getZoomToFitRatio(imageDimensions);\n      }\n\n      // Get the dimensions of the scaled image\n      var scaledHeight = imageDimensions.height * ratio;\n      var scaledWidth = imageDimensions.width * ratio;\n\n      // Calculate the segments of the containing box for the image.\n      // When referring to top/bottom or right/left segments, these are on the\n      // right-side and bottom projection of the containing box for the zoomed out image.\n      var topVerticalSegment = Math.cos(angleInRadians) * scaledHeight;\n      var bottomVerticalSegment = Math.sin(angleInRadians) * scaledWidth;\n      var rightHorizontalSegment = Math.cos(angleInRadians) * scaledWidth;\n      var leftHorizontalSegment = Math.sin(angleInRadians) * scaledHeight;\n\n      // Calculate the offsets from editor box for the image-containing box\n      var verticalOffset =\n        (this.editorHeight - (topVerticalSegment + bottomVerticalSegment)) / 2;\n      var horizontalOffset =\n        (this.editorWidth - (leftHorizontalSegment + rightHorizontalSegment)) /\n        2;\n\n      // Finally, calculate the image vertice coordinates\n      return {\n        a: {\n          x: horizontalOffset + rightHorizontalSegment,\n          y: verticalOffset,\n        },\n        b: {\n          x: this.editorWidth - horizontalOffset,\n          y: verticalOffset + topVerticalSegment,\n        },\n        c: {\n          x: horizontalOffset + leftHorizontalSegment,\n          y: this.editorHeight - verticalOffset,\n        },\n        d: {\n          x: horizontalOffset,\n          y: verticalOffset + bottomVerticalSegment,\n        },\n      };\n    },\n\n    /**\n     * Debug stuff by continuously rendering a fabric object on canvas.\n     *\n     * @param {Object} fabricObj\n     */\n    _debug: function (fabricObj) {\n      this.canvas.remove(this.debugger);\n      this.debugger = fabricObj;\n      this.canvas.add(this.debugger);\n    },\n\n    /**\n     * Given an array of points in the form of {x: int, y:int} and a rectangle in the form of\n     * {a:{x:int, y:int}, b:{x:int, y:int}, c:{x:int, y:int}} (the fourth vertice is unnecessary)\n     * return true if the point is in the rectangle.\n     *\n     * Adapted from: http://stackoverflow.com/a/2763387/2040791\n     *\n     * @param {Object} points\n     * @param {Object} rectangle\n     */\n    arePointsInsideRectangle: function (points, rectangle) {\n      if (typeof this.arePointsInsideRectangle._ === 'undefined') {\n        this.arePointsInsideRectangle._ = {};\n      }\n\n      // Pre-calculate the vectors and scalar products for two rectangle edges\n      this.arePointsInsideRectangle._.ab = this._getVector(\n        rectangle.a,\n        rectangle.b\n      );\n      this.arePointsInsideRectangle._.bc = this._getVector(\n        rectangle.b,\n        rectangle.c\n      );\n      this.arePointsInsideRectangle._.scalarAbAb = this._getScalarProduct(\n        this.arePointsInsideRectangle._.ab,\n        this.arePointsInsideRectangle._.ab\n      );\n      this.arePointsInsideRectangle._.scalarBcBc = this._getScalarProduct(\n        this.arePointsInsideRectangle._.bc,\n        this.arePointsInsideRectangle._.bc\n      );\n\n      for (\n        this.arePointsInsideRectangle._.i = 0;\n        this.arePointsInsideRectangle._.i < points.length;\n        this.arePointsInsideRectangle._.i++\n      ) {\n        this.arePointsInsideRectangle._.point =\n          points[this.arePointsInsideRectangle._.i];\n\n        // Calculate the vectors for two rectangle sides and for\n        // the vector from vertices a and b to the point P\n        this.arePointsInsideRectangle._.ap = this._getVector(\n          rectangle.a,\n          this.arePointsInsideRectangle._.point\n        );\n        this.arePointsInsideRectangle._.bp = this._getVector(\n          rectangle.b,\n          this.arePointsInsideRectangle._.point\n        );\n\n        // Calculate scalar or dot products for some vector combinations\n        this.arePointsInsideRectangle._.scalarAbAp = this._getScalarProduct(\n          this.arePointsInsideRectangle._.ab,\n          this.arePointsInsideRectangle._.ap\n        );\n        this.arePointsInsideRectangle._.scalarBcBp = this._getScalarProduct(\n          this.arePointsInsideRectangle._.bc,\n          this.arePointsInsideRectangle._.bp\n        );\n\n        this.arePointsInsideRectangle._.projectsOnAB =\n          0 <= this.arePointsInsideRectangle._.scalarAbAp &&\n          this.arePointsInsideRectangle._.scalarAbAp <=\n            this.arePointsInsideRectangle._.scalarAbAb;\n        this.arePointsInsideRectangle._.projectsOnBC =\n          0 <= this.arePointsInsideRectangle._.scalarBcBp &&\n          this.arePointsInsideRectangle._.scalarBcBp <=\n            this.arePointsInsideRectangle._.scalarBcBc;\n\n        if (\n          !(\n            this.arePointsInsideRectangle._.projectsOnAB &&\n            this.arePointsInsideRectangle._.projectsOnBC\n          )\n        ) {\n          return false;\n        }\n      }\n\n      return true;\n    },\n\n    /**\n     * Returns an object representing the vector between points a and b.\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getVector: function (a, b) {\n      return {x: b.x - a.x, y: b.y - a.y};\n    },\n\n    /**\n     * Returns the scalar product of two vectors\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getScalarProduct: function (a, b) {\n      return a.x * b.x + a.y * b.y;\n    },\n\n    /**\n     * Returns the magnitude of a vector_redrawCropperElements\n     * .\n     *\n     * @param {Object} vector\n     */\n    _getVectorMagnitude: function (vector) {\n      return Math.sqrt(vector.x * vector.x + vector.y * vector.y);\n    },\n\n    /**\n     * Returns the angle between two vectors in degrees with two decimal points\n     *\n     * @param {Object} a\n     * @param {Object} b\n     */\n    _getAngleBetweenVectors: function (a, b) {\n      return (\n        Math.round(\n          ((Math.acos(\n            Math.min(\n              1,\n              this._getScalarProduct(a, b) /\n                (this._getVectorMagnitude(a) * this._getVectorMagnitude(b))\n            )\n          ) *\n            180) /\n            Math.PI) *\n            100\n        ) / 100\n      );\n    },\n\n    /**\n     * Return the rectangle edge crossed by an imaginary line drawn from editor center to a vertex\n     *\n     * @param {Object} rectangle\n     * @param {Object} vertex\n     *\n     * @returns {*}\n     */\n    _getEdgeCrossed: function (rectangle, vertex) {\n      // Determine over which edge the vertex is\n      var edgePoints = [\n        [rectangle.a, rectangle.b],\n        [rectangle.b, rectangle.c],\n        [rectangle.c, rectangle.d],\n        [rectangle.d, rectangle.a],\n      ];\n\n      var centerPoint = {x: this.editorWidth / 2, y: this.editorHeight / 2};\n      var smallestDiff = 180;\n      var edgeCrossed = null;\n\n      // Test each edge\n      for (var edgeIndex = 0; edgeIndex < edgePoints.length; edgeIndex++) {\n        var edge = edgePoints[edgeIndex];\n        var toCenter = this._getVector(edge[0], centerPoint);\n        var edgeVector = this._getVector(edge[0], edge[1]);\n        var toVertex = this._getVector(edge[0], vertex);\n\n        // If the angle between toCenter/toVertex is the sum of\n        // angles between edgeVector/toCenter and edgeVector/toVertex, it means that\n        // the edgeVector is between the other two meaning that this is the offending vertex.\n        // To avoid the rounding errors, we'll take the closest match\n        var diff = Math.abs(\n          this._getAngleBetweenVectors(toCenter, toVertex) -\n            (this._getAngleBetweenVectors(toCenter, edgeVector) +\n              this._getAngleBetweenVectors(edgeVector, toVertex))\n        );\n\n        if (diff < smallestDiff) {\n          smallestDiff = diff;\n          edgeCrossed = edge;\n        }\n      }\n\n      return edgeCrossed;\n    },\n\n    /**\n     * Get the image bounding box by image scaled dimensions, taking ingo account the straightening angle.\n     *\n     * @param {Object} dimensions\n     */\n    _getImageBoundingBox: function (dimensions) {\n      var box = {};\n\n      var angleInRadians =\n        Math.abs(this.imageStraightenAngle) * (Math.PI / 180);\n\n      var proportion = dimensions.height / dimensions.width;\n      box.height =\n        dimensions.width *\n        (Math.sin(angleInRadians) + Math.cos(angleInRadians) * proportion);\n      box.width =\n        dimensions.width *\n        (Math.cos(angleInRadians) + Math.sin(angleInRadians) * proportion);\n\n      if (this.hasOrientationChanged()) {\n        var temp = box.width;\n        box.width = box.height;\n        box.height = temp;\n      }\n\n      return box;\n    },\n  },\n  {\n    defaults: {\n      animationDuration: 100,\n      allowSavingAsNew: true,\n      onSave: $.noop,\n      allowDegreeFractions: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset index class\n */\nCraft.AssetIndex = Craft.BaseElementIndex.extend(\n  {\n    $includeSubfoldersContainer: null,\n    $includeSubfoldersCheckbox: null,\n    showingIncludeSubfoldersCheckbox: false,\n\n    $uploadButton: null,\n    $uploadInput: null,\n    $progressBar: null,\n\n    uploader: null,\n    promptHandler: null,\n    progressBar: null,\n    currentFolderId: null,\n\n    $listedFolders: null,\n    itemDrag: null,\n\n    _uploadTotalFiles: 0,\n    _uploadFileProgress: {},\n    _currentUploaderSettings: {},\n    _includeSubfolders: null,\n\n    init: function (elementType, $container, settings) {\n      settings = Object.assign({}, Craft.AssetIndex.defaults, settings);\n      this.setSettings(settings, Craft.BaseElementIndex.defaults);\n\n      if (this.settings.context === 'index') {\n        // remember whether includeSubfolders was set in the query string,\n        // before the URL is updated\n        const queryParams = Craft.getQueryParams();\n        if (queryParams.includeSubfolders !== undefined) {\n          this._includeSubfolders = !!parseInt(queryParams.includeSubfolders);\n        }\n      }\n\n      this.base(elementType, $container, this.settings);\n\n      if (this.settings.context === 'index') {\n        this.itemDrag = new Garnish.DragDrop({\n          activeDropTargetClass: 'sel',\n          minMouseDist: 10,\n          hideDraggee: false,\n          moveHelperToCursor: true,\n          activeDropTargetClass: 'active-drop-target',\n          handle: (item) => $(item).closest('tr,li'),\n          filter: () => {\n            const $container = this.itemDrag.$targetItem.closest('tr,li');\n            this.view.elementSelect.selectItem($container);\n            return this._findDraggableItems(this.view.getSelectedElements());\n          },\n          helper: ($item, index) =>\n            $('<div class=\"offset-drag-helper\"/>')\n              .append($item)\n              .css({\n                opacity: Math.max(0.9 - 0.05 * index, 0),\n                width: '',\n                height: '',\n              }),\n          dropTargets: () => {\n            // volume sources\n            let $dropTargets = $(\n              this.$visibleSources\n                .toArray()\n                .filter(\n                  (source) =>\n                    Garnish.hasAttr(source, 'data-folder-id') &&\n                    Garnish.hasAttr(source, 'data-can-move-peer-files-to')\n                )\n            );\n            if (this.sourcePath.length <= 1) {\n              // exclude the current source since we're already at the root of it\n              $dropTargets = $dropTargets.not(this.$source);\n            } else {\n              // parent folders in the source path\n              for (let i = 0; i < this.sourcePath.length - 1; i++) {\n                const step = this.sourcePath[i];\n                if (step.folderId) {\n                  $dropTargets = $dropTargets.add(step.$btn);\n                }\n              }\n            }\n            // folders in the elements listing\n            if (this.$listedFolders) {\n              $dropTargets = $dropTargets\n                .add(\n                  this.$listedFolders\n                    .filter('[data-folder-id]')\n                    .closest('tr,li')\n                )\n                .not(this.view.getSelectedElements());\n            }\n            return $dropTargets;\n          },\n          onDragStart: () => {\n            Garnish.$bod.addClass('dragging');\n            this.itemDrag.$draggee.closest('tr,li').addClass('draggee');\n          },\n          onDragStop: () => {\n            Garnish.$bod.removeClass('dragging');\n\n            const $draggee = this.itemDrag.$draggee;\n            const targetFolderId = this._targetFolderId(\n              this.itemDrag.$activeDropTarget\n            );\n\n            if (!targetFolderId) {\n              $draggee.closest('tr,li').removeClass('draggee');\n              this.itemDrag.returnHelpersToDraggees();\n              return;\n            }\n\n            this.itemDrag.fadeOutHelpers();\n\n            const $folders = $draggee.filter('[data-is-folder]');\n            const $assets = $draggee.not($folders);\n            const folderIds = $folders.toArray().map((item) => {\n              return parseInt($(item).data('folder-id'));\n            });\n            const assetIds = $assets.toArray().map((item) => {\n              return parseInt($(item).data('id'));\n            });\n\n            const mover = new Craft.AssetMover();\n            mover\n              .moveFolders(folderIds, targetFolderId)\n              .then((totalFoldersMoved) => {\n                mover\n                  .moveAssets(assetIds, targetFolderId)\n                  .then((totalAssetsMoved) => {\n                    const totalItemsMoved =\n                      totalFoldersMoved + totalAssetsMoved;\n                    if (totalItemsMoved) {\n                      Craft.cp.displayNotice(\n                        Craft.t(\n                          'app',\n                          '{totalItems, plural, =1{Item} other{Items}} moved.',\n                          {\n                            totalItems: totalItemsMoved,\n                          }\n                        )\n                      );\n                      Craft.elementIndex.updateElements(true);\n                    } else {\n                      $draggee.closest('tr,li').removeClass('draggee');\n                    }\n                  });\n              });\n          },\n        });\n\n        this.addListener(Garnish.$win, 'resize,scroll', '_positionProgressBar');\n      } else {\n        this.addListener(this.$main, 'scroll', '_positionProgressBar');\n\n        if (this.settings.modal) {\n          this.settings.modal.on(\n            'updateSizeAndPosition',\n            this._positionProgressBar.bind(this)\n          );\n        }\n      }\n    },\n\n    _findDraggableItems: function ($items) {\n      return $(\n        $items\n          .toArray()\n          .map((item) => $(item).find('.element:first')[0])\n          .filter((item) => item && Garnish.hasAttr(item, 'data-movable'))\n      );\n    },\n\n    _targetFolderId: function ($dropTarget) {\n      if (!$dropTarget || !$dropTarget.length) {\n        return false;\n      }\n\n      // source?\n      if ($dropTarget.is(this.$visibleSources)) {\n        return $dropTarget.data('folder-id');\n      }\n\n      // source path step?\n      for (let i = 0; i < this.sourcePath.length - 1; i++) {\n        const step = this.sourcePath[i];\n        if ($dropTarget.is(step.$btn)) {\n          return step.folderId;\n        }\n      }\n\n      // folder in the element listing?\n      return $dropTarget.find('.element:first').data('folder-id') || false;\n    },\n\n    afterInit: function () {\n      if (!this.settings.foldersOnly) {\n        this.initForFiles();\n      }\n\n      this.base();\n    },\n\n    /**\n     * Initialize the uploader.\n     *\n     * @private\n     */\n    initForFiles: function () {\n      this.promptHandler = new Craft.PromptHandler();\n      this.progressBar = new Craft.ProgressBar(this.$main, false);\n    },\n\n    createUploadInputs: function () {\n      this.$uploadButton?.remove();\n      this.$uploadInput?.remove();\n\n      this.$uploadButton = $('<button/>', {\n        type: 'button',\n        class: 'btn submit',\n        'data-icon': 'upload',\n        style: 'position: relative; overflow: hidden;',\n        'aria-label': Craft.t('app', 'Upload files'),\n        text: Craft.t('app', 'Upload files'),\n      });\n      this.addButton(this.$uploadButton);\n\n      this.$uploadInput = $(\n        '<input type=\"file\" multiple=\"multiple\" name=\"assets-upload\" />'\n      )\n        .hide()\n        .insertBefore(this.$uploadButton);\n\n      this.$uploadButton.on('click', () => {\n        if (this.$uploadButton.hasClass('disabled')) {\n          return;\n        }\n        if (!this.isIndexBusy) {\n          this.$uploadButton\n            .parent()\n            .find('input[name=assets-upload]')\n            .trigger('click');\n        }\n      });\n    },\n\n    onSelectSource: function () {\n      if (!this.settings.foldersOnly) {\n        this.currentFolderId =\n          this.currentFolderId || this.$source.data('folder-id');\n        const fsType = this.$source.data('fs-type');\n\n        this.createUploadInputs();\n\n        if (\n          this.currentFolderId &&\n          Garnish.hasAttr(this.$source, 'data-can-upload')\n        ) {\n          this.uploader?.destroy();\n          this.$uploadButton.removeClass('disabled');\n\n          const options = {\n            fileInput: this.$uploadInput,\n            dropZone: this.$container,\n            events: {\n              fileuploadstart: this._onUploadStart.bind(this),\n              fileuploadprogressall: this._onUploadProgress.bind(this),\n              fileuploaddone: this._onUploadSuccess.bind(this),\n              fileuploadalways: this._onUploadAlways.bind(this),\n              fileuploadfail: this._onUploadFailure.bind(this),\n            },\n          };\n\n          if (this.settings?.criteria?.kind) {\n            options.allowedKinds = this.settings.criteria.kind;\n          }\n\n          this._currentUploaderSettings = options;\n\n          this.uploader = Craft.createUploader(\n            fsType,\n            this.$uploadButton,\n            options\n          );\n          this.uploader.setParams({\n            folderId: this.currentFolderId,\n          });\n        } else {\n          this.$uploadButton.addClass('disabled');\n        }\n      }\n\n      this.base();\n    },\n\n    onSourcePathChange: function () {\n      const currentFolder = this.sourcePath.length\n        ? this.sourcePath[this.sourcePath.length - 1]\n        : null;\n      this.currentFolderId = currentFolder?.folderId;\n\n      if (!this.settings.foldersOnly && this.currentFolderId) {\n        this.uploader?.setParams({\n          folderId: this.currentFolderId,\n        });\n\n        // will the user be allowed to move items in this folder?\n        const canMoveSubItems =\n          this.context === 'index' && !!currentFolder.canMoveSubItems;\n        this.settings.selectable = this.settings.selectable || canMoveSubItems;\n        this.settings.multiSelect =\n          this.settings.multiSelect || canMoveSubItems;\n      }\n\n      this.base();\n    },\n\n    startSearching: function () {\n      // Does this source have subfolders?\n      if (\n        !this.settings.hideSidebar &&\n        this.sourcePath.length &&\n        this.sourcePath[this.sourcePath.length - 1].hasChildren\n      ) {\n        if (this.$includeSubfoldersContainer === null) {\n          var id =\n            'includeSubfolders-' + Math.floor(Math.random() * 1000000000);\n\n          this.$includeSubfoldersContainer = $(\n            '<div style=\"margin-bottom: -25px; opacity: 0;\"/>'\n          ).insertAfter(this.$search);\n          var $subContainer = $('<div style=\"padding-top: 5px;\"/>').appendTo(\n            this.$includeSubfoldersContainer\n          );\n          this.$includeSubfoldersCheckbox = $(\n            '<input type=\"checkbox\" id=\"' + id + '\" class=\"checkbox\"/>'\n          ).appendTo($subContainer);\n          $('<label class=\"light smalltext\" for=\"' + id + '\"/>')\n            .text(' ' + Craft.t('app', 'Search in subfolders'))\n            .appendTo($subContainer);\n\n          this.addListener(\n            this.$includeSubfoldersCheckbox,\n            'change',\n            function () {\n              this.setSelecetedSourceState(\n                'includeSubfolders',\n                this.$includeSubfoldersCheckbox.prop('checked')\n              );\n              this.updateElements();\n            }\n          );\n        } else {\n          this.$includeSubfoldersContainer\n            .velocity('stop')\n            .removeClass('hidden');\n        }\n\n        let checked;\n        if (this._includeSubfolders !== null) {\n          checked = this._includeSubfolders;\n          this._includeSubfolders = null;\n        } else {\n          checked = this.getSelectedSourceState('includeSubfolders', false);\n        }\n        this.$includeSubfoldersCheckbox.prop('checked', checked);\n\n        this.$includeSubfoldersContainer.velocity(\n          {\n            marginBottom: 0,\n            opacity: 1,\n          },\n          'fast'\n        );\n\n        this.showingIncludeSubfoldersCheckbox = true;\n      }\n\n      this.base();\n    },\n\n    stopSearching: function () {\n      if (this.showingIncludeSubfoldersCheckbox) {\n        this.$includeSubfoldersContainer.velocity('stop');\n\n        this.$includeSubfoldersContainer.velocity(\n          {\n            marginBottom: -25,\n            opacity: 0,\n          },\n          {\n            duration: 'fast',\n            complete: () => {\n              this.$includeSubfoldersContainer.addClass('hidden');\n            },\n          }\n        );\n\n        this.showingIncludeSubfoldersCheckbox = false;\n      }\n\n      this.base();\n    },\n\n    getViewSettings: function () {\n      const settings = {};\n\n      if (this.settings.context === 'index') {\n        // Allow folders to be selected\n        settings.canSelectElement = () => true;\n      }\n\n      return settings;\n    },\n\n    getViewParams: function () {\n      const data = Object.assign(this.base(), {\n        showFolders: this.settings.showFolders && !this.trashed,\n        foldersOnly: this.settings.foldersOnly,\n      });\n\n      if (\n        this.showingIncludeSubfoldersCheckbox &&\n        this.$includeSubfoldersCheckbox.prop('checked')\n      ) {\n        data.criteria.includeSubfolders = true;\n      }\n\n      return data;\n    },\n\n    /**\n     * React on upload submit.\n     *\n     * @private\n     */\n    _onUploadStart: function () {\n      this.setIndexBusy();\n\n      // Initial values\n      this._positionProgressBar();\n      this.progressBar.resetProgressBar();\n      this.progressBar.showProgressBar();\n\n      this.promptHandler.resetPrompts();\n    },\n\n    /**\n     * Update uploaded byte count.\n     */\n    _onUploadProgress: function (event, data = null) {\n      data = event instanceof CustomEvent ? event.detail : data;\n\n      var progress = parseInt(Math.min(data.loaded / data.total, 1) * 100, 10);\n      this.progressBar.setProgressPercentage(progress);\n    },\n\n    /**\n     * On upload success.\n     *\n     * @param {Object} event\n     * @param {Object} data\n     * @private\n     */\n    _onUploadSuccess: function (event, data = null) {\n      const result = event instanceof CustomEvent ? event.detail : data.result;\n\n      // Add the uploaded file to the selected ones, if appropriate\n      this.selectElementAfterUpdate(result.assetId);\n\n      // If there is a prompt, add it to the queue\n      if (result.conflict) {\n        result.prompt = {\n          message: Craft.t('app', result.conflict, {file: result.filename}),\n          choices: [\n            {value: 'keepBoth', title: Craft.t('app', 'Keep both')},\n            {value: 'replace', title: Craft.t('app', 'Replace it')},\n          ],\n          modalSettings: {\n            hideOnEsc: false,\n            hideOnShadeClick: false,\n          },\n        };\n\n        this.promptHandler.addPrompt(result);\n      }\n\n      Craft.cp.runQueue();\n    },\n\n    /**\n     * On upload complete no matter what (success, fail, or abort).\n     */\n    _onUploadAlways: function () {\n      if (this.uploader.isLastUpload()) {\n        this.progressBar.hideProgressBar();\n        this.setIndexAvailable();\n\n        if (this.promptHandler.getPromptCount()) {\n          this.promptHandler.showBatchPrompts(this._uploadFollowup.bind(this));\n        } else {\n          this._updateAfterUpload();\n        }\n      }\n    },\n\n    /**\n     * On Upload Failure.\n     */\n    _onUploadFailure: function (event, data = null) {\n      const response =\n        event instanceof CustomEvent ? event.detail : data?.jqXHR?.responseJSON;\n\n      let {message, filename, errors} = response || {};\n      filename = filename || data?.files?.[0].name;\n      let errorMessages = errors ? Object.values(errors).flat() : [];\n\n      if (!message) {\n        if (errorMessages.length) {\n          message = errorMessages.join('\\n');\n        } else if (filename) {\n          message = Craft.t('app', 'Upload failed for “{filename}”.', {\n            filename,\n          });\n        } else {\n          message = Craft.t('app', 'Upload failed.');\n        }\n      }\n\n      Craft.cp.displayError(message);\n    },\n\n    /**\n     * Update the elements after an upload, setting sort to dateModified descending, if not using index.\n     *\n     * @private\n     */\n    _updateAfterUpload: function () {\n      if (this.settings.context !== 'index') {\n        this.clearSearch();\n        this.setSelectedSortAttribute('dateCreated', 'desc');\n      }\n      this.updateElements();\n    },\n\n    /**\n     * Follow up to an upload that triggered at least one conflict resolution prompt.\n     *\n     * @param {Object} returnData\n     * @private\n     */\n    _uploadFollowup: function (returnData) {\n      this.setIndexBusy();\n      this.progressBar.resetProgressBar();\n\n      this.promptHandler.resetPrompts();\n\n      var finalCallback = () => {\n        this.progressBar.hideProgressBar();\n        this.setIndexAvailable();\n        this._updateAfterUpload();\n      };\n\n      this.progressBar.setItemCount(returnData.length);\n\n      var doFollowup = (parameterArray, parameterIndex, callback) => {\n        var data = {};\n        var action = null;\n        const {replaceAction, deleteAction} = this.uploader.settings;\n\n        const followupAlways = () => {\n          parameterIndex++;\n          this.progressBar.incrementProcessedItemCount(1);\n          this.progressBar.updateProgressBar();\n\n          if (parameterIndex === parameterArray.length) {\n            callback();\n          } else {\n            doFollowup(parameterArray, parameterIndex, callback);\n          }\n        };\n        const followupSuccess = (data) => {\n          if (data.assetId) {\n            this.selectElementAfterUpdate(data.assetId);\n          }\n\n          followupAlways();\n        };\n        const followupFailure = (data) => {\n          Craft.cp.displayError(data.message);\n          followupAlways();\n        };\n\n        if (parameterArray[parameterIndex].choice === 'replace') {\n          action = replaceAction;\n          data.sourceAssetId = parameterArray[parameterIndex].assetId;\n\n          if (parameterArray[parameterIndex].conflictingAssetId) {\n            data.assetId = parameterArray[parameterIndex].conflictingAssetId;\n          } else {\n            data.targetFilename = parameterArray[parameterIndex].filename;\n          }\n        } else if (parameterArray[parameterIndex].choice === 'cancel') {\n          action = deleteAction;\n          data.assetId = parameterArray[parameterIndex].assetId;\n        }\n\n        if (!action) {\n          // We don't really need to do another request, so let's pretend that already happened\n          followupSuccess({\n            assetId: parameterArray[parameterIndex].assetId,\n          });\n        } else {\n          Craft.sendActionRequest('POST', action, {data})\n            .then((response) => followupSuccess(response.data))\n            .catch(({response}) => followupFailure(response.data));\n        }\n      };\n\n      this.progressBar.showProgressBar();\n      doFollowup(returnData, 0, finalCallback);\n    },\n\n    /**\n     * Perform actions after updating elements\n     * @private\n     */\n    onUpdateElements: function () {\n      this._onUpdateElements(false, this.view.getAllElements());\n      this.view.on('appendElements', (ev) => {\n        this._onUpdateElements(true, ev.newElements);\n      });\n\n      this.base();\n    },\n\n    /**\n     * Do the after-update initializations\n     * @private\n     */\n    _onUpdateElements: function (append, $newElements) {\n      this.removeListener(this.$elements, 'keydown');\n      this.addListener(this.$elements, 'keydown', this._onKeyDown.bind(this));\n      if (this.view.elementSelect) {\n        this.view.elementSelect.on(\n          'focusItem',\n          this._onElementFocus.bind(this)\n        );\n      }\n\n      this.$listedFolders = $newElements.find(\n        '.element[data-is-folder][data-folder-name]'\n      );\n      for (let i = 0; i < this.$listedFolders.length; i++) {\n        const $folder = this.$listedFolders.eq(i);\n        const $label = $folder.find('.label');\n        const $link = $label.find('.label-link');\n        const folderId = parseInt($folder.data('folder-id'));\n        const folderName = $folder.data('folder-name');\n        const label = Craft.t('app', '{name} folder', {\n          name: folderName,\n        });\n        if (this.settings.disabledFolderIds.includes(folderId)) {\n          $label.attr('aria-label', label);\n          $newElements.has($folder).addClass('disabled');\n          continue;\n        }\n        const sourcePath = $folder.data('source-path');\n        if (sourcePath) {\n          $link.attr({\n            href: Craft.getCpUrl(sourcePath[sourcePath.length - 1].uri),\n            role: 'button',\n            'aria-label': label,\n          });\n          this.addListener($link, 'activate', (ev) => {\n            this.sourcePath = sourcePath;\n            this.clearSearch(false);\n            this.updateElements().then(() => {\n              const firstFocusableEl = this.$elements.find(\n                ':focusable:not(.selectallcontainer)'\n              )[0];\n              if (firstFocusableEl) {\n                firstFocusableEl.focus();\n              }\n            });\n          });\n        }\n      }\n\n      if (this.itemDrag) {\n        const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n        const canMoveSubItems = !!(\n          currentFolder &&\n          currentFolder.folderId &&\n          currentFolder.canMoveSubItems\n        );\n        if (!canMoveSubItems || !append) {\n          this.itemDrag.removeAllItems();\n        }\n        if (canMoveSubItems) {\n          this.itemDrag.addItems(this._findDraggableItems($newElements));\n        }\n      }\n    },\n\n    /**\n     * Handle a keypress\n     * @private\n     */\n    _onKeyDown: function (ev) {\n      if (ev.keyCode === Garnish.SPACE_KEY && ev.shiftKey) {\n        if (Craft.PreviewFileModal.openInstance) {\n          Craft.PreviewFileModal.openInstance.selfDestruct();\n        } else if (this.view.elementSelect) {\n          var $element = this.view.elementSelect.$focusedItem.find('.element');\n\n          if ($element.length) {\n            this._loadPreview($element);\n          }\n        }\n\n        ev.stopPropagation();\n        return false;\n      }\n    },\n\n    /**\n     * Handle element being focused\n     * @private\n     */\n    _onElementFocus: function (ev) {\n      var $element = $(ev.item).find('.element');\n\n      if (Craft.PreviewFileModal.openInstance && $element.length) {\n        this._loadPreview($element);\n      }\n    },\n\n    /**\n     * Load the preview for an asset\n     * @private\n     */\n    _loadPreview: function ($element) {\n      var settings = {};\n\n      if ($element.data('image-width')) {\n        settings.startingWidth = $element.data('image-width');\n        settings.startingHeight = $element.data('image-height');\n      }\n\n      new Craft.PreviewFileModal(\n        $element.data('id'),\n        this.view.elementSelect,\n        settings\n      );\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathLabel: function () {\n      return Craft.t('app', 'Volume path');\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathActionLabel: function () {\n      return Craft.t('app', 'Folder actions');\n    },\n\n    getSourcePathActions: function () {\n      const actions = [];\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n\n      if (currentFolder.canCreate) {\n        actions.push({\n          label: Craft.t('app', 'New subfolder'),\n          onSelect: () => {\n            this._createSubfolder();\n          },\n        });\n      }\n\n      if (this.settings.context === 'index') {\n        if (currentFolder.canRename) {\n          actions.push({\n            label: Craft.t('app', 'Rename folder'),\n            onSelect: () => {\n              this._renameFolder();\n            },\n          });\n\n          if (\n            currentFolder.canMove &&\n            this.getMoveTargetSourceKeys(true).length\n          ) {\n            actions.push({\n              label: Craft.t('app', 'Move folder'),\n              onSelect: () => {\n                this._moveFolder();\n              },\n            });\n          }\n\n          if (currentFolder.canDelete) {\n            actions.push({\n              label: Craft.t('app', 'Delete folder'),\n              destructive: true,\n              onSelect: () => {\n                this.deleteCurrentFolder();\n              },\n            });\n          }\n        }\n      }\n\n      return actions;\n    },\n\n    _createSubfolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const subfolderName = prompt(\n        Craft.t('app', 'Enter the name of the folder')\n      );\n\n      if (subfolderName) {\n        const data = {\n          parentId: currentFolder.folderId,\n          folderName: subfolderName,\n        };\n\n        this.setIndexBusy();\n\n        Craft.sendActionRequest('POST', 'assets/create-folder', {data})\n          .then((response) => {\n            this.setIndexAvailable();\n            Craft.cp.displayNotice(Craft.t('app', 'Folder created.'));\n            this.updateElements(true);\n          })\n          .catch(({response}) => {\n            this.setIndexAvailable();\n            Craft.cp.displayError(response.data.message);\n          });\n      }\n    },\n\n    deleteCurrentFolder: async function () {\n      if (\n        await this.deleteFolder(this.sourcePath[this.sourcePath.length - 1])\n      ) {\n        this.sourcePath = this.sourcePath.slice(0, this.sourcePath.length - 1);\n        this.updateElements();\n      }\n    },\n\n    deleteFolder: async function (folder) {\n      if (\n        !confirm(\n          Craft.t('app', 'Really delete folder “{folder}”?', {\n            folder: folder.label,\n          })\n        )\n      ) {\n        return false;\n      }\n\n      this.setIndexBusy();\n\n      try {\n        await Craft.sendActionRequest('POST', 'assets/delete-folder', {\n          data: {\n            folderId: folder.folderId,\n          },\n        });\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n        return false;\n      } finally {\n        this.setIndexAvailable();\n      }\n\n      Craft.cp.displayNotice(Craft.t('app', 'Folder deleted.'));\n      return true;\n    },\n\n    /**\n     * Rename\n     */\n    _renameFolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const newName = prompt(\n        Craft.t('app', 'Rename folder'),\n        currentFolder.label\n      );\n\n      if (!newName || newName === currentFolder.label) {\n        return;\n      }\n\n      this.setIndexBusy();\n\n      Craft.sendActionRequest('POST', 'assets/rename-folder', {\n        data: {\n          folderId: currentFolder.folderId,\n          newName: newName,\n        },\n      })\n        .then((response) => {\n          Craft.cp.displayNotice(Craft.t('app', 'Folder renamed.'));\n          const sourcePath = this.sourcePath.slice();\n          sourcePath[sourcePath.length - 1].label = response.data.newName;\n          sourcePath[sourcePath.length - 1].uri =\n            sourcePath[sourcePath.length - 2].uri + `/${response.data.newName}`;\n          this.sourcePath = sourcePath;\n        })\n        .catch(({response}) => {\n          Craft.cp.displayError(response.data.message);\n        })\n        .finally(() => {\n          this.setIndexAvailable();\n        });\n    },\n\n    getMoveTargetSourceKeys: function (peerFiles) {\n      const attr = peerFiles\n        ? 'data-can-move-peer-files-to'\n        : 'data-can-move-to';\n      return this.$sources\n        .toArray()\n        .filter((source) => {\n          const volumeHandle = $(source).data('volume-handle');\n          return (\n            volumeHandle &&\n            volumeHandle !== 'temp' &&\n            Garnish.hasAttr(source, attr)\n          );\n        })\n        .map((source) => $(source).data('key'));\n    },\n\n    _moveFolder: function () {\n      const currentFolder = this.sourcePath[this.sourcePath.length - 1];\n      const parentFolder = this.sourcePath[this.sourcePath.length - 2];\n\n      const disabledFolderIds = [currentFolder.folderId];\n      if (parentFolder) {\n        disabledFolderIds.push(parentFolder.folderId);\n      }\n\n      new Craft.VolumeFolderSelectorModal({\n        sources: this.getMoveTargetSourceKeys(true),\n        showTitle: true,\n        modalTitle: Craft.t('app', 'Move to'),\n        selectBtnLabel: Craft.t('app', 'Move'),\n        disabledFolderIds: disabledFolderIds,\n        indexSettings: {\n          defaultSource: this.sourceKey,\n          defaultSourcePath: this.sourcePath.slice(\n            0,\n            this.sourcePath.length - 1\n          ),\n        },\n        onSelect: ([targetFolder]) => {\n          this.$sourcePathActionsBtn.focus();\n          const mover = new Craft.AssetMover();\n          mover\n            .moveFolders([currentFolder.folderId], targetFolder.folderId)\n            .then((totalFoldersMoved) => {\n              if (totalFoldersMoved) {\n                Craft.cp.displayNotice(\n                  Craft.t(\n                    'app',\n                    '{totalItems, plural, =1{Item} other{Items}} moved.',\n                    {\n                      totalItems: totalFoldersMoved,\n                    }\n                  )\n                );\n                this.sourcePath = this.sourcePath.slice(\n                  0,\n                  this.sourcePath.length - 1\n                );\n                this.clearSearch(false);\n                this.updateElements();\n              }\n            });\n        },\n      });\n    },\n\n    _positionProgressBar: function () {\n      if (!this.progressBar) {\n        this.progressBar = new Craft.ProgressBar(this.$main, true);\n      }\n\n      var $container = $(),\n        scrollTop = 0,\n        offset = 0;\n\n      if (this.settings.context === 'index') {\n        $container = this.progressBar.$progressBar.closest('#content');\n        scrollTop = Garnish.$win.scrollTop();\n      } else {\n        $container = this.progressBar.$progressBar.closest('.main');\n        scrollTop = this.$main.scrollTop();\n      }\n\n      var containerTop = $container.offset().top;\n      var diff = scrollTop - containerTop;\n      var windowHeight = Garnish.$win.height();\n\n      if ($container.height() > windowHeight) {\n        offset = windowHeight / 2 - 6 + diff;\n      } else {\n        offset = $container.height() / 2 - 6;\n      }\n\n      if (this.settings.context !== 'index') {\n        offset = scrollTop + ($container.height() / 2 - 6);\n      }\n\n      this.progressBar.$progressBar.css({\n        top: offset,\n      });\n    },\n  },\n  {\n    defaults: {\n      showFolders: true,\n      foldersOnly: false,\n      disabledFolderIds: [],\n    },\n  }\n);\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\Asset', Craft.AssetIndex);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset mover class\n */\nCraft.AssetMover = Garnish.Base.extend({\n  moveAssets: function (assetIds, targetFolderId) {\n    const requests = assetIds.map((assetId) => {\n      return {\n        for: 'asset',\n        action: 'assets/move-asset',\n        params: {\n          assetId,\n          folderId: targetFolderId,\n        },\n      };\n    });\n    return this._batchMoveRequests(requests, {\n      conflictChoices: [\n        {\n          value: 'keepBoth',\n          title: Craft.t('app', 'Keep both'),\n        },\n        {\n          value: 'replace',\n          title: Craft.t('app', 'Replace it'),\n        },\n      ],\n      handleConflictChoice: function (prompt) {\n        const params = {\n          folderId: prompt.request.params.folderId,\n          assetId: prompt.assetId,\n        };\n        switch (prompt.choice) {\n          case 'replace':\n            params.force = true;\n            break;\n          case 'keepBoth':\n            params.filename = prompt.suggestedFilename;\n            break;\n        }\n        return {\n          action: 'assets/move-asset',\n          params,\n        };\n      },\n    });\n  },\n\n  moveFolders: function (folderIds, targetFolderId) {\n    return new Promise((resolve, reject) => {\n      const transferList = [];\n      const folderIdsToDelete = [];\n\n      const requests = folderIds.map((folderId) => {\n        return {\n          for: 'folder',\n          action: 'assets/move-folder',\n          params: {\n            folderId,\n            parentId: targetFolderId,\n          },\n          onSuccess: (response) => {\n            if (response.transferList.length) {\n              transferList.push(...response.transferList);\n            }\n            folderIdsToDelete.push(folderId);\n          },\n        };\n      });\n\n      this._batchMoveRequests(requests, {\n        conflictChoices: [\n          {\n            value: 'replace',\n            title: Craft.t(\n              'app',\n              'Replace the folder (all existing files will be deleted)'\n            ),\n          },\n          {\n            value: 'merge',\n            title: Craft.t(\n              'app',\n              'Merge the folder (any conflicting files will be replaced)'\n            ),\n          },\n        ],\n        handleConflictChoice: function (prompt) {\n          const params = {\n            folderId: prompt.folderId,\n            parentId: prompt.parentId,\n          };\n          switch (prompt.choice) {\n            case 'replace':\n              params.force = true;\n              break;\n            case 'merge':\n              params.merge = true;\n              break;\n          }\n          return {\n            action: 'assets/move-folder',\n            params,\n          };\n        },\n      })\n        .then((totalMoved) => {\n          this._processTransferList(transferList).then(() => {\n            this._deleteFolders(folderIdsToDelete).then(() => {\n              resolve(totalMoved);\n            });\n          });\n        })\n        .catch(reject);\n    });\n  },\n\n  _processTransferList: function (transferList) {\n    return this._batchRequests(\n      transferList.map((params) => {\n        return {\n          action: 'assets/move-asset',\n          params,\n        };\n      })\n    );\n  },\n\n  _deleteFolders: function (folderIds) {\n    return this._batchRequests(\n      folderIds.map((folderId) => {\n        return {\n          action: 'assets/delete-folder',\n          params: {folderId},\n        };\n      })\n    );\n  },\n\n  _batchMoveRequests: function (requests, settings) {\n    return new Promise((resolve) => {\n      let totalMoved = 0;\n\n      this._batchRequests(requests).then((responses) => {\n        Craft.elementIndex.promptHandler.resetPrompts();\n\n        // Loop through all the responses\n        for (const response of responses) {\n          if (response.success) {\n            totalMoved++;\n          }\n\n          // Push prompt into prompt array\n          if (response.conflict) {\n            Craft.elementIndex.promptHandler.addPrompt(\n              Object.assign({}, response, {\n                prompt: {\n                  message: response.conflict,\n                  choices: settings.conflictChoices,\n                },\n              })\n            );\n          }\n\n          if (response.error) {\n            Craft.cp.displayError(response.error);\n          }\n        }\n\n        if (!Craft.elementIndex.promptHandler.getPromptCount()) {\n          resolve(totalMoved);\n          return;\n        }\n\n        Craft.elementIndex.promptHandler.showBatchPrompts((prompts) => {\n          Craft.elementIndex.promptHandler.resetPrompts();\n          const nextRequests = [];\n          for (const prompt of prompts) {\n            if (prompt.choice === 'cancel') {\n              continue;\n            }\n            if (settings.handleConflictChoice) {\n              const nextRequest = settings.handleConflictChoice(prompt);\n              if (prompt.request && prompt.request.onSuccess) {\n                nextRequest.onSuccess = prompt.request.onSuccess;\n              }\n              nextRequests.push(nextRequest);\n            }\n          }\n          this._batchMoveRequests(nextRequests, settings).then(\n            (nextTotalMoved) => {\n              resolve(totalMoved + nextTotalMoved);\n            }\n          );\n        });\n      });\n    });\n  },\n\n  _batchRequests: function (requests) {\n    return new Promise((resolve) => {\n      if (!requests.length) {\n        resolve([]);\n        return;\n      }\n\n      Craft.elementIndex.setIndexBusy();\n      Craft.elementIndex._positionProgressBar();\n      Craft.elementIndex.progressBar.resetProgressBar();\n      Craft.elementIndex.progressBar.setItemCount(requests.length);\n      Craft.elementIndex.progressBar.showProgressBar();\n\n      const responses = [];\n      let activeRequests = requests.length;\n\n      for (const request of requests) {\n        Craft.sendActionRequest('POST', request.action, {\n          data: request.params,\n        })\n          .then((response) => {\n            responses.push(\n              Object.assign(\n                {\n                  success: true,\n                },\n                response.data,\n                {request}\n              )\n            );\n            if (request.onSuccess) {\n              request.onSuccess(response.data);\n            }\n          })\n          .catch((failure) => {\n            if (failure.response && failure.response.data) {\n              responses.push(\n                Object.assign(\n                  {\n                    success: false,\n                  },\n                  failure.response.data,\n                  {request}\n                )\n              );\n            }\n          })\n          .finally(() => {\n            // Was that the last one?\n            if (--activeRequests === 0) {\n              Craft.elementIndex.setIndexAvailable();\n              Craft.elementIndex.progressBar.hideProgressBar();\n              // If assets were just merged we should get the reference tags updated right away\n              Craft.cp.runQueue();\n              resolve(responses);\n            } else {\n              Craft.elementIndex.progressBar.incrementProcessedItemCount(1);\n              Craft.elementIndex.progressBar.updateProgressBar();\n            }\n          });\n      }\n    });\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset select input\n */\nCraft.AssetSelectInput = Craft.BaseElementSelectInput.extend({\n  $uploadBtn: null,\n  uploader: null,\n  progressBar: null,\n  openPreviewTimeout: null,\n\n  init: function () {\n    this.base.apply(this, arguments);\n    if (this.settings.canUpload) {\n      this._attachUploader();\n    }\n\n    this.updateAddElementsBtn();\n\n    this.addListener(\n      this.$elementsContainer,\n      'keydown',\n      this._onKeyDown.bind(this)\n    );\n    this.elementSelect.on('focusItem', this._onElementFocus.bind(this));\n  },\n\n  elementSelectSettings() {\n    return Object.assign(this.base(), {\n      makeFocusable: true,\n    });\n  },\n\n  /**\n   * Handle a keypress\n   * @private\n   */\n  _onKeyDown: function (ev) {\n    if (ev.keyCode === Garnish.SPACE_KEY && ev.shiftKey) {\n      this.openPreview();\n      ev.stopPropagation();\n      return false;\n    }\n  },\n\n  clearOpenPreviewTimeout: function () {\n    if (this.openPreviewTimeout) {\n      clearTimeout(this.openPreviewTimeout);\n      this.openPreviewTimeout = null;\n    }\n  },\n\n  openPreview: function ($element) {\n    if (Craft.PreviewFileModal.openInstance) {\n      Craft.PreviewFileModal.openInstance.selfDestruct();\n    } else {\n      if (!$element) {\n        $element = this.$elements\n          .filter(':focus')\n          .add(this.$elements.has(':focus'));\n      }\n\n      if ($element.length) {\n        this._loadPreview($element);\n      }\n    }\n  },\n\n  /**\n   * Handle element being focused\n   * @private\n   */\n  _onElementFocus: function (ev) {\n    var $element = $(ev.item);\n\n    if (Craft.PreviewFileModal.openInstance && $element.length) {\n      this._loadPreview($element);\n    }\n  },\n\n  /**\n   * Load the preview for an asset\n   * @private\n   */\n  _loadPreview: function ($element) {\n    var settings = {\n      minGutter: 50,\n    };\n\n    if ($element.data('image-width')) {\n      settings.startingWidth = $element.data('image-width');\n      settings.startingHeight = $element.data('image-height');\n    }\n\n    new Craft.PreviewFileModal(\n      $element.data('id'),\n      this.elementSelect,\n      settings\n    );\n  },\n\n  /**\n   * Attach the uploader with drag event handler\n   */\n  _attachUploader: function () {\n    this.progressBar = new Craft.ProgressBar(\n      $('<div class=\"progress-shade\"></div>').appendTo(this.$container)\n    );\n\n    if (this.$addElementBtn) {\n      this.$uploadBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn dashed',\n        'data-icon': 'upload',\n        'aria-label':\n          this.settings.limit == 1\n            ? Craft.t('app', 'Upload a file')\n            : Craft.t('app', 'Upload files'),\n        'aria-describedby': this.settings.describedBy,\n        text:\n          this.settings.limit == 1\n            ? Craft.t('app', 'Upload a file')\n            : Craft.t('app', 'Upload files'),\n      }).insertAfter(this.$addElementBtn);\n      this.$fileInput = $('<input/>', {\n        type: 'file',\n        class: 'hidden',\n        multiple: this.settings.limit != 1,\n      }).insertAfter(this.$uploadBtn);\n\n      // Trigger a window resize in case the field is inside an element editor HUD\n      Garnish.$win.trigger('resize');\n    }\n\n    var options = {\n      dropZone: this.$container,\n      fileInput: this.$fileInput,\n    };\n\n    if (typeof this.settings.criteria.kind !== 'undefined') {\n      options.allowedKinds = this.settings.criteria.kind;\n    }\n\n    options.canAddMoreFiles = this.canAddMoreFiles.bind(this);\n\n    options.events = {};\n    options.events.fileuploadstart = this._onUploadStart.bind(this);\n    options.events.fileuploadprogressall = this._onUploadProgress.bind(this);\n    options.events.fileuploaddone = this._onUploadComplete.bind(this);\n    options.events.fileuploadfail = this._onUploadFailure.bind(this);\n\n    this.uploader = Craft.createUploader(\n      this.settings.fsType,\n      this.$container,\n      options\n    );\n\n    const params = {\n      fieldId: this.settings.fieldId,\n    };\n    if (this.settings.sourceElementId) {\n      params.elementId = this.settings.sourceElementId;\n    }\n    if (this.settings.criteria.siteId) {\n      params.siteId = this.settings.criteria.siteId;\n    }\n    this.uploader.setParams(params);\n\n    if (this.$uploadBtn) {\n      this.$uploadBtn.on('click', (ev) => {\n        // We can't store a reference to the file input, because it gets replaced with a new input\n        // each time a new file is uploaded - see https://stackoverflow.com/a/25034721/1688568\n        this.$uploadBtn.next('input[type=file]').trigger('click');\n      });\n    }\n  },\n\n  enableAddElementsBtn: function () {\n    if (this.$uploadBtn) {\n      this.$uploadBtn.removeClass('hidden');\n    }\n\n    this.base();\n  },\n\n  disableAddElementsBtn: function () {\n    if (this.$uploadBtn) {\n      this.$uploadBtn.addClass('hidden');\n    }\n\n    this.base();\n  },\n\n  /**\n   * Add the freshly uploaded file to the input field.\n   */\n  selectUploadedFile: function (element) {\n    // Check if we're able to add new elements\n    if (!this.canAddMoreElements()) {\n      return;\n    }\n\n    var $newElement = element.$element;\n\n    $newElement.appendTo(this.$elementsContainer);\n\n    var margin = -($newElement.outerWidth() + 10);\n\n    this.$addElementBtn.css('margin-' + Craft.left, margin + 'px');\n\n    var animateCss = {};\n    animateCss['margin-' + Craft.left] = 0;\n    this.$addElementBtn.velocity(animateCss, 'fast');\n\n    this.addElements($newElement);\n\n    delete this.modal;\n  },\n\n  /**\n   * On upload start.\n   */\n  _onUploadStart: function () {\n    this.progressBar.$progressBar.css({\n      top: Math.round(this.$container.outerHeight() / 2) - 6,\n    });\n\n    this.$container.addClass('uploading');\n    this.progressBar.resetProgressBar();\n    this.progressBar.showProgressBar();\n  },\n\n  /**\n   * On upload progress.\n   */\n  _onUploadProgress: function (event, data = null) {\n    data = event instanceof CustomEvent ? event.detail : data;\n\n    var progress = parseInt(Math.min(data.loaded / data.total, 1) * 100, 10);\n    this.progressBar.setProgressPercentage(progress);\n  },\n\n  /**\n   * On a file being uploaded.\n   */\n  _onUploadComplete: function (event, data = null) {\n    const result = event instanceof CustomEvent ? event.detail : data.result;\n\n    Craft.sendActionRequest('POST', 'app/render-elements', {\n      data: {\n        elements: [\n          {\n            type: 'craft\\\\elements\\\\Asset',\n            id: result.assetId,\n            siteId: this.settings.criteria.siteId,\n            instances: [\n              {\n                context: 'field',\n                ui: ['list', 'large'].includes(this.settings.viewMode)\n                  ? 'chip'\n                  : 'card',\n                size: this.settings.viewMode === 'large' ? 'large' : 'small',\n              },\n            ],\n          },\n        ],\n      },\n    })\n      .then(async ({data}) => {\n        const elementInfo = Craft.getElementInfo(\n          data.elements[result.assetId][0]\n        );\n        this.selectElements([elementInfo]);\n\n        await Craft.appendHeadHtml(data.headHtml);\n        await Craft.appendBodyHtml(data.bodyHtml);\n\n        // Last file\n        if (this.uploader.isLastUpload()) {\n          this.progressBar.hideProgressBar();\n          this.$container.removeClass('uploading');\n          this.$container.trigger('change');\n        }\n      })\n      .catch((error) => {\n        if (error && error.response) {\n          Craft.cp.displayError(response.data.message);\n        } else {\n          Craft.cp.displayError();\n          throw error;\n        }\n      });\n\n    Craft.cp.runQueue();\n  },\n\n  /**\n   * On Upload Failure.\n   */\n  _onUploadFailure: function (event, data = null) {\n    const response =\n      event instanceof CustomEvent ? event.detail : data?.jqXHR?.responseJSON;\n\n    let {message, filename, errors} = response || {};\n\n    filename = filename || data?.files?.[0].name;\n\n    let errorMessages = errors ? Object.values(errors).flat() : [];\n\n    if (!message) {\n      if (errorMessages.length) {\n        message = errorMessages.join('\\n');\n      } else if (filename) {\n        message = Craft.t('app', 'Upload failed for “{filename}”.', {filename});\n      } else {\n        message = Craft.t('app', 'Upload failed.');\n      }\n    }\n\n    Craft.cp.displayError(message);\n    this.progressBar.hideProgressBar();\n    this.$container.removeClass('uploading');\n  },\n\n  /**\n   * We have to take into account files about to be added as well\n   */\n  canAddMoreFiles: function (slotsTaken) {\n    return (\n      !this.settings.limit ||\n      this.$elements.length + slotsTaken < this.settings.limit\n    );\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Asset selector modal class\n */\nCraft.AssetSelectorModal = Craft.BaseElementSelectorModal.extend(\n  {\n    $selectTransformBtn: null,\n    _selectedTransform: null,\n\n    init: function (elementType, settings) {\n      settings = $.extend({}, Craft.AssetSelectorModal.defaults, settings);\n\n      this.base(elementType, settings);\n\n      if (settings.transforms.length) {\n        this.createSelectTransformButton(settings.transforms);\n      }\n    },\n\n    createSelectTransformButton: function (transforms) {\n      if (!transforms || !transforms.length) {\n        return;\n      }\n\n      var $btnGroup = $('<div class=\"btngroup\"/>').appendTo(\n        this.$primaryButtons\n      );\n      this.$selectBtn.appendTo($btnGroup);\n\n      this.$selectTransformBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn menubtn disabled',\n        text: Craft.t('app', 'Select transform'),\n      }).appendTo($btnGroup);\n\n      var $menu = $('<div class=\"menu\" data-align=\"right\"></div>').insertAfter(\n          this.$selectTransformBtn\n        ),\n        $menuList = $('<ul></ul>').appendTo($menu);\n\n      for (var i = 0; i < transforms.length; i++) {\n        $(\n          '<li><a data-transform=\"' +\n            transforms[i].handle +\n            '\">' +\n            transforms[i].name +\n            '</a></li>'\n        ).appendTo($menuList);\n      }\n\n      var MenuButton = new Garnish.MenuBtn(this.$selectTransformBtn, {\n        onOptionSelect: this.onSelectTransform.bind(this),\n      });\n      MenuButton.disable();\n\n      this.$selectTransformBtn.data('menuButton', MenuButton);\n    },\n\n    onSelectionChange: function (ev) {\n      var $selectedElements = this.elementIndex.getSelectedElements(),\n        allowTransforms = false;\n\n      if ($selectedElements.length && this.settings.transforms.length) {\n        allowTransforms = true;\n      }\n\n      var MenuBtn = null;\n\n      if (this.$selectTransformBtn) {\n        MenuBtn = this.$selectTransformBtn.data('menuButton');\n      }\n\n      if (allowTransforms) {\n        if (MenuBtn) {\n          MenuBtn.enable();\n        }\n\n        this.$selectTransformBtn.removeClass('disabled');\n      } else if (this.$selectTransformBtn) {\n        if (MenuBtn) {\n          MenuBtn.disable();\n        }\n\n        this.$selectTransformBtn.addClass('disabled');\n      }\n\n      this.base();\n    },\n\n    onSelectTransform: function (option) {\n      var transform = $(option).data('transform');\n      this.selectImagesWithTransform(transform);\n    },\n\n    selectImagesWithTransform: function (transform) {\n      // First we must get any missing transform URLs\n      if (\n        typeof Craft.AssetSelectorModal.transformUrls[transform] === 'undefined'\n      ) {\n        Craft.AssetSelectorModal.transformUrls[transform] = {};\n      }\n\n      var $selectedElements = this.elementIndex.getSelectedElements(),\n        imageIdsWithMissingUrls = [];\n\n      for (var i = 0; i < $selectedElements.length; i++) {\n        var $item = $($selectedElements[i]),\n          elementId = Craft.getElementInfo($item).id;\n\n        if (\n          typeof Craft.AssetSelectorModal.transformUrls[transform][\n            elementId\n          ] === 'undefined'\n        ) {\n          imageIdsWithMissingUrls.push(elementId);\n        }\n      }\n\n      if (imageIdsWithMissingUrls.length) {\n        this.showFooterSpinner();\n\n        this.fetchMissingTransformUrls(\n          imageIdsWithMissingUrls,\n          transform,\n          () => {\n            this.hideFooterSpinner();\n            this.selectImagesWithTransform(transform);\n          }\n        );\n      } else {\n        this._selectedTransform = transform;\n        this.selectElements();\n        this._selectedTransform = null;\n      }\n    },\n\n    fetchMissingTransformUrls: function (\n      imageIdsWithMissingUrls,\n      transform,\n      callback\n    ) {\n      var elementId = imageIdsWithMissingUrls.pop();\n\n      var data = {\n        assetId: elementId,\n        handle: transform,\n      };\n\n      Craft.sendActionRequest('POST', 'assets/generate-transform', {data})\n        .then((response) => {\n          Craft.AssetSelectorModal.transformUrls[transform][elementId] =\n            response.data.url || false;\n        })\n        .catch(() => {\n          Craft.AssetSelectorModal.transformUrls[transform][elementId] = false;\n        })\n        .finally(() => {\n          // More to load?\n          if (imageIdsWithMissingUrls.length) {\n            this.fetchMissingTransformUrls(\n              imageIdsWithMissingUrls,\n              transform,\n              callback\n            );\n          } else {\n            callback();\n          }\n        });\n    },\n\n    getElementInfo: function ($selectedElements) {\n      var info = this.base($selectedElements);\n\n      if (this._selectedTransform) {\n        for (var i = 0; i < info.length; i++) {\n          var elementId = info[i].id;\n\n          if (\n            typeof Craft.AssetSelectorModal.transformUrls[\n              this._selectedTransform\n            ][elementId] !== 'undefined' &&\n            Craft.AssetSelectorModal.transformUrls[this._selectedTransform][\n              elementId\n            ] !== false\n          ) {\n            info[i].url =\n              Craft.AssetSelectorModal.transformUrls[this._selectedTransform][\n                elementId\n              ];\n          }\n        }\n      }\n\n      return info;\n    },\n\n    onSelect: function (elementInfo) {\n      this.settings.onSelect(elementInfo, this._selectedTransform);\n    },\n  },\n  {\n    defaults: {\n      canSelectImageTransforms: false,\n      transforms: [],\n    },\n\n    transformUrls: {},\n  }\n);\n\n// Register it!\nCraft.registerElementSelectorModalClass(\n  'craft\\\\elements\\\\Asset',\n  Craft.AssetSelectorModal\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Assets field settings\n */\nCraft.AssetsFieldSettings = Garnish.Base.extend({\n  $useSingleFolderInput: null,\n  $sourceInputs: null,\n  $defaultUploadLocationSelect: null,\n  $defaultUploadLocationOptions: null,\n\n  init: function (\n    useSingleFolderToggleId,\n    sourcesFieldId,\n    defaultUploadLocationId\n  ) {\n    this.$useSingleFolderInput = $(`#${useSingleFolderToggleId}`);\n    this.$sourceInputs = $(`#${sourcesFieldId} input`);\n    this.$defaultUploadLocationSelect = $(`#${defaultUploadLocationId}`);\n    this.$defaultUploadLocationOptions =\n      this.$defaultUploadLocationSelect.children('option');\n    this.updateDefaultUploadLocationSelect();\n\n    // Give CheckboxSelect a chance to register its change event first\n    Garnish.requestAnimationFrame(() => {\n      this.addListener(\n        this.$useSingleFolderInput,\n        'change',\n        'updateDefaultUploadLocationSelect'\n      );\n      this.addListener(\n        this.$sourceInputs,\n        'change',\n        'updateDefaultUploadLocationSelect'\n      );\n    });\n  },\n\n  updateDefaultUploadLocationSelect: function () {\n    if (this.$useSingleFolderInput.prop('checked')) {\n      return;\n    }\n\n    const defaultUploadLocationVal = this.$defaultUploadLocationSelect.val();\n    let firstEnabledValue;\n\n    for (let i = 0; i < this.$sourceInputs.length; i++) {\n      const $input = this.$sourceInputs.eq(i);\n      const val = $input.val();\n      const checked = $input.prop('checked');\n      if (val === '*') {\n        if (checked) {\n          this.$defaultUploadLocationOptions.prop('disabled', false);\n          return;\n        }\n      } else {\n        this.getOption(val).prop('disabled', !checked);\n        if (checked && !firstEnabledValue) {\n          firstEnabledValue = val;\n        }\n      }\n    }\n\n    const $selectedOption = this.getOption(defaultUploadLocationVal);\n    if (\n      !$selectedOption.length ||\n      ($selectedOption.prop('disabled') && firstEnabledValue)\n    ) {\n      this.$defaultUploadLocationSelect.val(firstEnabledValue);\n    }\n  },\n\n  getOption: function (val) {\n    return this.$defaultUploadLocationOptions.filter(`[value=\"${val}\"]`);\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * AuthManager class\n */\nCraft.AuthManager = Garnish.Base.extend(\n  {\n    remainingSessionTime: null,\n    checkRemainingSessionTimer: null,\n    showLoginModalTimer: null,\n    decrementLogoutWarningInterval: null,\n\n    showingLogoutWarningModal: false,\n    showingLoginModal: false,\n\n    logoutWarningModal: null,\n    loginModal: null,\n\n    $logoutWarningPara: null,\n    $passwordInput: null,\n    $loginBtn: null,\n    loginBtn: null,\n\n    /**\n     * Init\n     */\n    init: function () {\n      if (Craft.username) {\n        this.updateRemainingSessionTime(Craft.remainingSessionTime, false);\n      }\n    },\n\n    /**\n     * Sets a timer for the next time to check the auth timeout.\n     */\n    setCheckRemainingSessionTimer: function (seconds) {\n      if (this.checkRemainingSessionTimer) {\n        clearTimeout(this.checkRemainingSessionTimer);\n      }\n\n      this.checkRemainingSessionTimer = setTimeout(\n        this.checkRemainingSessionTime.bind(this),\n        seconds * 1000\n      );\n    },\n\n    /**\n     * Pings the server to see how many seconds are left on the current user session, and handles the response.\n     */\n    async checkRemainingSessionTime(extendSession) {\n      const url = Craft.getActionUrl(\n        'users/session-info',\n        !extendSession ? 'dontExtendSession=1' : null\n      );\n      try {\n        const {data} = await Craft.sendActionRequest('GET', url);\n        if (typeof Craft.csrfTokenValue !== 'undefined') {\n          Craft.csrfTokenValue = data.csrfTokenValue;\n        }\n        this.updateRemainingSessionTime(data.timeout, data.isGuest);\n      } catch (e) {\n        this.updateRemainingSessionTime(-1, false);\n      }\n    },\n\n    /**\n     * Updates our record of the auth timeout, and handles it.\n     */\n    updateRemainingSessionTime: function (remainingSessionTime, isGuest) {\n      this.remainingSessionTime = parseInt(remainingSessionTime);\n\n      // Are we within the warning window?\n      if (\n        this.remainingSessionTime !== -1 &&\n        this.remainingSessionTime < Craft.AuthManager.minSafeSessionTime\n      ) {\n        // Is there still time to renew the session?\n        if (!isGuest || this.remainingSessionTime) {\n          if (!this.showingLogoutWarningModal) {\n            // Show the warning modal\n            this.showLogoutWarningModal();\n          }\n\n          const seconds = Math.min(\n            Craft.AuthManager.checkInterval,\n            this.remainingSessionTime\n          );\n          this.setCheckRemainingSessionTimer(Math.max(1, seconds));\n        } else {\n          // Show the login modal\n          if (!this.showingLoginModal) {\n            this.hideLogoutWarningModal();\n            this.showLoginModal();\n          }\n          this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);\n        }\n      } else {\n        // Everything's good!\n        this.hideLogoutWarningModal();\n        this.hideLoginModal();\n\n        // Will be be within the minSafeSessionTime before the next update?\n        if (\n          this.remainingSessionTime !== -1 &&\n          this.remainingSessionTime <\n            Craft.AuthManager.minSafeSessionTime +\n              Craft.AuthManager.checkInterval\n        ) {\n          this.setCheckRemainingSessionTimer(\n            this.remainingSessionTime - Craft.AuthManager.minSafeSessionTime + 1\n          );\n        } else {\n          this.setCheckRemainingSessionTimer(Craft.AuthManager.checkInterval);\n        }\n      }\n    },\n\n    /**\n     * Shows the logout warning modal.\n     */\n    showLogoutWarningModal: function () {\n      var quickShow;\n\n      if (this.showingLoginModal) {\n        this.hideLoginModal(true);\n        quickShow = true;\n      } else {\n        quickShow = false;\n      }\n\n      this.showingLogoutWarningModal = true;\n\n      if (!this.logoutWarningModal) {\n        let $form = $(\n          '<form id=\"logoutwarningmodal\" class=\"modal alert fitted\"/>'\n        );\n        let $body = $('<div class=\"body\"/>').appendTo($form);\n        let $buttons = $('<div class=\"buttons right\"/>').appendTo($body);\n        let $logoutBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Sign out now'),\n        }).appendTo($buttons);\n        let $renewSessionBtn = $('<button/>', {\n          type: 'submit',\n          class: 'btn submit',\n          text: Craft.t('app', 'Keep me signed in'),\n        }).appendTo($buttons);\n\n        this.$logoutWarningPara = $('<p/>').prependTo($body);\n\n        this.logoutWarningModal = new Garnish.Modal($form, {\n          autoShow: false,\n          closeOtherModals: false,\n          hideOnEsc: false,\n          hideOnShadeClick: false,\n          shadeClass: 'modal-shade dark logoutwarningmodalshade',\n          onFadeIn: function () {\n            if (!Garnish.isMobileBrowser(true)) {\n              // Auto-focus the renew button\n              setTimeout(function () {\n                $renewSessionBtn.trigger('focus');\n              }, 100);\n            }\n          },\n        });\n\n        this.addListener($logoutBtn, 'activate', 'logout');\n        this.addListener($form, 'submit', 'renewSession');\n      }\n\n      if (quickShow) {\n        this.logoutWarningModal.quickShow();\n      } else {\n        this.logoutWarningModal.show();\n      }\n\n      this.updateLogoutWarningMessage();\n\n      this.decrementLogoutWarningInterval = setInterval(\n        this.decrementLogoutWarning.bind(this),\n        1000\n      );\n    },\n\n    /**\n     * Updates the logout warning message indicating that the session is about to expire.\n     */\n    updateLogoutWarningMessage: function () {\n      this.$logoutWarningPara.text(\n        Craft.t('app', 'Your session will expire in {time}.', {\n          time: Craft.secondsToHumanTimeDuration(this.remainingSessionTime),\n        })\n      );\n\n      this.logoutWarningModal.updateSizeAndPosition();\n    },\n\n    decrementLogoutWarning: function () {\n      if (this.remainingSessionTime > 0) {\n        this.remainingSessionTime--;\n        this.updateLogoutWarningMessage();\n      }\n\n      if (this.remainingSessionTime === 0) {\n        clearInterval(this.decrementLogoutWarningInterval);\n      }\n    },\n\n    /**\n     * Hides the logout warning modal.\n     */\n    hideLogoutWarningModal: function (quick) {\n      this.showingLogoutWarningModal = false;\n\n      if (this.logoutWarningModal) {\n        if (quick) {\n          this.logoutWarningModal.quickHide();\n        } else {\n          this.logoutWarningModal.hide();\n        }\n\n        if (this.decrementLogoutWarningInterval) {\n          clearInterval(this.decrementLogoutWarningInterval);\n        }\n      }\n    },\n\n    /**\n     * Shows the login modal.\n     */\n    async showLoginModal() {\n      if (this.showingLoginModal) {\n        return;\n      }\n\n      this.showingLoginModal = true;\n\n      if (this.loginModal) {\n        this.loginModal.destroy();\n      }\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'users/login-modal',\n        {\n          data: {\n            email: Craft.userEmail,\n          },\n        }\n      );\n      const $container = $(data.html);\n\n      this.loginModal = new Garnish.Modal($container, {\n        closeOtherModals: false,\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        shadeClass: 'modal-shade dark blurred login-modal-shade',\n        onFadeIn: async () => {\n          Craft.initUiElements($container);\n          new Craft.LoginForm($container.find('.login-container'), {\n            showPasskeyBtn: Craft.userHasPasskeys,\n            onLogin: () => {\n              this.loginModal.hide();\n            },\n          });\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n        },\n        onFadeOut: () => {\n          this.loginModal?.destroy();\n          this.loginModal = null;\n        },\n        onHide: () => {\n          this.showingLoginModal = false;\n        },\n      });\n    },\n\n    /**\n     * Hides the login modal.\n     */\n    hideLoginModal: function (quick) {\n      if (this.loginModal) {\n        if (quick) {\n          this.loginModal.quickHide();\n        } else {\n          this.loginModal.hide();\n        }\n        // reset the modal\n        this.loginModal.destroy();\n        this.loginModal = null;\n      }\n    },\n\n    logout: function () {\n      $.get({\n        url: Craft.getActionUrl('users/logout'),\n        dataType: 'json',\n        success: () => {\n          Craft.redirectTo('');\n        },\n      });\n    },\n\n    renewSession: function (ev) {\n      if (ev) {\n        ev.preventDefault();\n      }\n\n      this.hideLogoutWarningModal();\n      this.checkRemainingSessionTime(true);\n    },\n\n    closeModal: function () {\n      this.loginBtn.successEvent();\n      this.hideLoginModal();\n      this.checkRemainingSessionTime();\n    },\n  },\n  {\n    checkInterval: 60,\n    minSafeSessionTime: 120,\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Element index class\n */\nCraft.BaseElementIndex = Garnish.Base.extend(\n  {\n    initialized: false,\n    elementType: null,\n    idPrefix: null,\n\n    instanceState: null,\n    _sourceStates: null,\n    sourceStatesStorageKey: null,\n\n    searchTimeout: null,\n    sourceSelect: null,\n    sourceNav: null,\n\n    $container: null,\n    $main: null,\n    isIndexBusy: false,\n\n    $sidebar: null,\n    showingSidebar: null,\n    hasImplicitSource: false,\n    sourceKey: null,\n    rootSourceKey: null,\n    sourceViewModes: null,\n    $source: null,\n    $rootSource: null,\n    sourcesByKey: null,\n    $visibleSources: null,\n\n    $sourceActionsContainer: null,\n    $sourceActionsBtn: null,\n\n    $toolbar: null,\n    toolbarOffset: null,\n\n    $srStatusContainer: null,\n    $searchContainer: null,\n    $search: null,\n    $filterBtn: null,\n    searching: false,\n    searchText: null,\n    sortByScore: null,\n    trashed: false,\n    drafts: false,\n    $clearSearchBtn: null,\n\n    $statusMenuBtn: null,\n    $statusMenuContainer: null,\n    statusMenu: null,\n    status: null,\n\n    $siteMenuBtn: null,\n    siteMenu: null,\n    siteId: null,\n\n    sourcePaths: null,\n    $sourcePathOuterContainer: null,\n    $sourcePathInnerContainer: null,\n    $sourcePathOverflowBtnContainer: null,\n    $sourcePathActionsBtn: null,\n\n    $elements: null,\n    $updateSpinner: null,\n    $viewModeBtnContainer: null,\n    viewModeBtns: null,\n    _viewParams: null,\n    _previousViewParams: null,\n    _viewMode: null,\n    view: null,\n    _autoSelectElements: null,\n    $countSpinner: null,\n    $countContainer: null,\n    $actionsContainer: null,\n    $actionMenuBtn: null,\n    page: 1,\n    resultSet: null,\n    totalResults: null,\n    totalUnfilteredResults: null,\n    $exportBtn: null,\n\n    actions: null,\n    actionsHeadHtml: null,\n    actionsBodyHtml: null,\n    $selectAllContainer: null,\n    $selectAllCheckbox: null,\n    showingActionTriggers: false,\n    exporters: null,\n    exportersByType: null,\n    triggers: null,\n    _$triggers: null,\n\n    _cancelToken: null,\n\n    viewMenus: null,\n    activeViewMenu: null,\n    filterHuds: null,\n\n    _activeElement: null,\n\n    inlineEditing: false,\n    nestedInputNamespace: null,\n\n    get viewMode() {\n      if (this._viewMode === 'structure' && !this.canSort) {\n        // return the default\n        return this.validateViewMode(null);\n      }\n\n      return this.validateViewMode(this._viewMode);\n    },\n\n    set viewMode(viewMode) {\n      this._viewMode = viewMode ? this.validateViewMode(viewMode) : null;\n    },\n\n    get paginated() {\n      return !!(this.isAdministrative && this.viewMode !== 'structure');\n    },\n\n    get selectable() {\n      return (\n        !!(this.actions || this.settings.selectable) && !this.inlineEditing\n      );\n    },\n\n    get multiSelect() {\n      return !!(\n        this.actions ||\n        (this.settings.selectable && this.settings.multiSelect)\n      );\n    },\n\n    get sortable() {\n      return this.settings.sortable && this.canSort && !this.inlineEditing;\n    },\n\n    get canSort() {\n      return (\n        this.isAdministrative &&\n        !this.status &&\n        !this.trashed &&\n        !this.drafts &&\n        !this.searching &&\n        !this.hasActiveFilter\n      );\n    },\n\n    get isAdministrative() {\n      return ['index', 'embedded-index'].includes(this.settings.context);\n    },\n\n    get hasActiveFilter() {\n      return (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey] &&\n        this.filterHuds[this.siteId][this.sourceKey].isActive\n      );\n    },\n\n    get baseCriteria() {\n      const criteria = {};\n      if (this.$source) {\n        Object.assign(criteria, this.$source.data('criteria'));\n      }\n      if (this.settings.criteria) {\n        Object.assign(criteria, this.settings.criteria);\n      }\n      if (this.sourcePath.length) {\n        const currentStep = this.sourcePath[this.sourcePath.length - 1];\n        if (currentStep.criteria) {\n          Object.assign(criteria, currentStep.criteria);\n        }\n      }\n      return criteria;\n    },\n\n    get sourceStates() {\n      if (this.hasImplicitSource) {\n        return {\n          __IMP__: this.instanceState.source || {},\n        };\n      }\n\n      return this._sourceStates;\n    },\n\n    set sourceStates(sourceStates) {\n      if (this.hasImplicitSource) {\n        this.setInstanceState('source', sourceStates.__IMP__ || {});\n      } else {\n        this._sourceStates = sourceStates;\n        Craft.setLocalStorage(this.sourceStatesStorageKey, this.sourceStates);\n      }\n    },\n\n    /**\n     * Constructor\n     */\n    init: function (elementType, $container, settings) {\n      this.elementType = elementType;\n      this.$container = $container;\n      this.setSettings(settings, Craft.BaseElementIndex.defaults);\n\n      this.$container.data('elementIndex', this);\n\n      this.nestedInputNamespace = `elementindex-${Math.floor(\n        Math.random() * 100000\n      )}`;\n      this.sourcePaths = {};\n\n      // Define an ID prefix that can be used for dynamically created elements\n      // ---------------------------------------------------------------------\n\n      this.idPrefix = Craft.randomString(10);\n\n      // Find the DOM elements\n      // ---------------------------------------------------------------------\n\n      this.$main = this.$container.find('.main');\n      this.$toolbar = this.$container.find(this.settings.toolbarSelector);\n      this.$statusMenuBtn = this.$toolbar.find('.statusmenubtn:first');\n      this.$statusMenuContainer = this.$statusMenuBtn.parent();\n      this.$siteMenuBtn = this.$container.find('.sitemenubtn:first');\n\n      this.$searchContainer = this.$toolbar.find('.search-container:first');\n      this.$search = this.$searchContainer.children('input:first');\n      this.$filterBtn = this.$searchContainer.children('.filter-btn:first');\n      this.$clearSearchBtn = this.$searchContainer.children('.clear-btn:first');\n\n      this.$sidebar = this.$container.find('.sidebar:first');\n      this.$sourceActionsContainer = this.$sidebar.find(\n        `#${this.namespaceId('source-actions')}`\n      );\n      this.$sourceActionsContainer = this.$sidebar.find('#source-actions');\n      this.$srStatusContainer = this.$container.find('[data-status-message]');\n\n      this.$elements = this.$container.find('.elements:first');\n      this.$updateSpinner = this.$elements.find('.spinner');\n\n      if (!this.$updateSpinner.length) {\n        this.$updateSpinner = $('<div/>', {\n          class: 'update-spinner spinner spinner-absolute',\n        }).appendTo(this.$elements);\n      }\n\n      this.$countSpinner = this.$container.find(\n        `#${this.namespaceId('count-spinner')}`\n      );\n      this.$countContainer = this.$container.find(\n        `#${this.namespaceId('count-container')}`\n      );\n      this.$actionsContainer = this.$container.find(\n        `#${this.namespaceId('actions-container')}`\n      );\n      this.$exportBtn = this.$container.find(\n        `#${this.namespaceId('export-btn')}`\n      );\n\n      // Hide sidebar if needed\n      if (this.settings.hideSidebar) {\n        this.$sidebar.hide();\n        $('.body, .content', this.$container).removeClass('has-sidebar');\n      }\n\n      // Find the sources\n      // ---------------------------------------------------------------------\n\n      const $sources = this.findSources();\n\n      // Is there just an implicit source?\n      if ($sources.length === 1 && $sources.data('key') === '__IMP__') {\n        this.hasImplicitSource = true;\n      }\n\n      // Set the state objects\n      // ---------------------------------------------------------------------\n\n      this.instanceState = this.getDefaultInstanceState();\n\n      // Instance states (selected source) are stored by a custom storage key defined in the settings\n      if (this.settings.storageKey) {\n        $.extend(\n          this.instanceState,\n          Craft.getLocalStorage(this.settings.storageKey),\n          {}\n        );\n      }\n\n      // Source states (view mode, etc.) are stored by the element type and context\n      if (!this.hasImplicitSource) {\n        this._sourceStates = {};\n\n        this.sourceStatesStorageKey =\n          'BaseElementIndex.' + this.elementType + '.' + this.settings.context;\n        Object.assign(\n          this._sourceStates,\n          Craft.getLocalStorage(this.sourceStatesStorageKey, {})\n        );\n      }\n\n      // Initialize the sources\n      // ---------------------------------------------------------------------\n\n      if (!this.initSources($sources)) {\n        return;\n      }\n\n      // Initialize the status menu\n      // ---------------------------------------------------------------------\n\n      if (this.$statusMenuBtn.length) {\n        this.statusMenu = this.$statusMenuBtn.menubtn().data('menubtn').menu;\n        this.statusMenu.on('optionselect', this._handleStatusChange.bind(this));\n      }\n\n      // Initialize the site menu\n      // ---------------------------------------------------------------------\n\n      // Is there a site menu?\n      if (this.$siteMenuBtn.length) {\n        this.siteMenu = this.$siteMenuBtn.menubtn().data('menubtn').menu;\n\n        // Figure out the initial site\n        var $option = this.siteMenu.$options.filter('.sel:first');\n\n        if (!$option.length) {\n          $option = this.siteMenu.$options.first();\n        }\n\n        if ($option.length) {\n          this._setSite($option.data('site-id'));\n        } else {\n          // No site options -- they must not have any site permissions\n          this.settings.criteria = {id: '0'};\n        }\n\n        this.siteMenu.on('optionselect', this._handleSiteChange.bind(this));\n\n        if (this.siteId) {\n          // Should we be using a different default site?\n          var defaultSiteId =\n            this.settings.defaultSiteId || Craft.cp.getSiteId();\n\n          if (defaultSiteId && defaultSiteId != this.siteId) {\n            // Is that one available here?\n            var $storedSiteOption = this.siteMenu.$options.filter(\n              '[data-site-id=\"' + defaultSiteId + '\"]:first'\n            );\n\n            if ($storedSiteOption.length) {\n              // Todo: switch this to siteMenu.selectOption($storedSiteOption) once Menu is updated to support that\n              $storedSiteOption.trigger('click');\n            }\n          }\n        }\n      } else if (\n        this.settings.criteria &&\n        this.settings.criteria.siteId &&\n        this.settings.criteria.siteId !== '*'\n      ) {\n        this._setSite(this.settings.criteria.siteId);\n      } else {\n        this._setSite(Craft.siteId);\n      }\n\n      // Don't let the criteria override the selected site\n      if (this.settings.criteria && this.settings.criteria.siteId) {\n        delete this.settings.criteria.siteId;\n      }\n\n      // Initialize the search input\n      // ---------------------------------------------------------------------\n\n      // Automatically update the elements after new search text has been sitting for a 1/2 second\n      this.addListener(this.$search, 'input', () => {\n        if (!this.searching && this.$search.val()) {\n          this.startSearching();\n        } else if (this.searching && !this.$search.val()) {\n          this.stopSearching();\n        }\n\n        if (this.searchTimeout) {\n          clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(\n          this.updateElementsIfSearchTextChanged.bind(this),\n          500\n        );\n      });\n\n      // Update the elements when the Return key is pressed\n      this.addListener(this.$search, 'keypress', (ev) => {\n        if (ev.keyCode === Garnish.RETURN_KEY) {\n          ev.preventDefault();\n\n          if (this.searchTimeout) {\n            clearTimeout(this.searchTimeout);\n          }\n\n          this.updateElementsIfSearchTextChanged();\n        }\n      });\n\n      // Clear the search when the X button is clicked\n      this.addListener(this.$clearSearchBtn, 'click', () => {\n        this.clearSearch(true);\n\n        if (!Garnish.isMobileBrowser(true)) {\n          this.$search.trigger('focus');\n        }\n      });\n\n      // Autofocus the Search box, unless this is an embedded index\n      if (\n        this.settings.context !== 'embedded-index' &&\n        !Garnish.isMobileBrowser(true) &&\n        Craft.disableAutofocus === false\n      ) {\n        this.$search.trigger('focus');\n      }\n\n      // View menus\n      this.viewMenus = {};\n\n      // Filter HUDs\n      this.filterHuds = {};\n      this.addListener(this.$filterBtn, 'click', 'showFilterHud');\n\n      // Set the default status\n      // ---------------------------------------------------------------------\n\n      const queryParams =\n        this.settings.context === 'index' ? Craft.getQueryParams() : {};\n\n      if (queryParams.status) {\n        let selector;\n        switch (queryParams.status) {\n          case 'trashed':\n            selector = '[data-trashed]';\n            break;\n          case 'drafts':\n            selector = '[data-drafts]';\n            break;\n          default:\n            selector = `[data-status=\"${queryParams.status}\"]`;\n        }\n\n        const $option = this.statusMenu.$options.filter(selector);\n        if ($option.length) {\n          this.statusMenu.selectOption($option[0]);\n        } else {\n          Craft.setQueryParam('status', null);\n        }\n      }\n\n      // Initialize the Export button\n      // ---------------------------------------------------------------------\n\n      this.addListener(this.$exportBtn, 'click', '_showExportHud');\n\n      // Let everyone know that the UI is initialized\n      // ---------------------------------------------------------------------\n\n      this.initialized = true;\n      this.afterInit();\n\n      // Select the initial source + source path\n      // ---------------------------------------------------------------------\n\n      // Grab the localStorage step key up front, so we don's lose track of it when the default source's default\n      // source path is selected\n      let stepKey;\n      if (this.settings.context === 'index') {\n        if (queryParams.sourcePathStep !== undefined) {\n          stepKey = queryParams.sourcePathStep;\n        } else {\n          stepKey = this.getSelectedSourceState('sourcePathStep');\n        }\n      } else {\n        stepKey = this.instanceState.sourcePathStep || null;\n      }\n\n      this.selectDefaultSource();\n\n      const sourcePath = this.getDefaultSourcePath();\n\n      // If no default source path was explicitly configured, or it's set to the root of the volume, use the localStorage key\n      if ((!sourcePath || sourcePath.length == 1) && stepKey) {\n        this.loadSourcePathByKey(stepKey).then((sourcePath) => {\n          if (sourcePath) {\n            // Filter out any source path steps that are above the source's root\n            const lastSourceKey = this.sourceKey.split('/').slice(-1)[0];\n            const sourceRootIndex = sourcePath.findIndex(\n              (p) => p.key === lastSourceKey\n            );\n            if (sourceRootIndex !== -1) {\n              this.sourcePath = sourcePath.slice(sourceRootIndex);\n            }\n          }\n          this.afterSetInitialSource(queryParams);\n        });\n      } else {\n        if (sourcePath) {\n          this.sourcePath = sourcePath;\n        }\n        this.afterSetInitialSource(queryParams);\n      }\n    },\n\n    afterInit: function () {\n      this.onAfterInit();\n    },\n\n    namespaceInputName(name) {\n      return Craft.namespaceInputName(name, this.settings.namespace);\n    },\n\n    namespaceId(id) {\n      return Craft.namespaceId(id, this.settings.namespace);\n    },\n\n    loadSourcePathByKey: function (stepKey) {\n      return new Promise((resolve, reject) => {\n        // If the step key is equal to the current source key, then it represents the root. No source path needed.\n        if (stepKey === this.sourceKey) {\n          resolve([]);\n          return;\n        }\n\n        const params = this.getViewParams();\n        params.stepKey = stepKey;\n\n        Craft.sendActionRequest('POST', 'element-indexes/source-path', {\n          data: params,\n        })\n          .then(({data}) => {\n            resolve(data.sourcePath);\n          })\n          .catch(reject);\n      });\n    },\n\n    afterSetInitialSource: function (queryParams) {\n      // Resize handler\n      // ---------------------------------------------------------------------\n\n      if (this.settings.context === 'index') {\n        this.addListener(Garnish.$win, 'resize', 'handleResize');\n      }\n\n      this.handleResize();\n\n      // Respect initial search\n      // ---------------------------------------------------------------------\n      // Has to go after selecting the default source because selecting a source\n      // clears out search params\n\n      if (queryParams.search) {\n        this.startSearching();\n        this.searchText = queryParams.search;\n      }\n\n      // Respect the initial filters\n      // ---------------------------------------------------------------------\n\n      if (queryParams.filters) {\n        this.createFilterHud({\n          showOnInit: false,\n          serialized: queryParams.filters,\n        });\n      }\n\n      // Select the default sort attribute/direction\n      // ---------------------------------------------------------------------\n\n      if (queryParams.sort) {\n        const lastDashPos = queryParams.sort.lastIndexOf('-');\n        if (lastDashPos !== -1) {\n          const attr = queryParams.sort.substring(0, lastDashPos);\n          const dir = queryParams.sort.substring(lastDashPos + 1);\n          this.setSelectedSortAttribute(attr, dir);\n        }\n      }\n\n      // Load the first batch of elements!\n      // ---------------------------------------------------------------------\n\n      // Default to whatever page is in the URL\n      this.setPage(Craft.pageNum);\n\n      this.updateElements(true);\n    },\n\n    handleResize: function () {\n      if (this.sourcePath.length && this.settings.showSourcePath) {\n        this._updateSourcePathVisibility();\n      }\n    },\n\n    _createCancelToken: function () {\n      this._cancelToken = axios.CancelToken.source();\n      return this._cancelToken.token;\n    },\n\n    _cancelRequests: function () {\n      if (this._cancelToken) {\n        this._cancelToken.cancel();\n      }\n    },\n\n    getSourceContainer: function () {\n      return this.$sidebar.find('nav > ul');\n    },\n\n    getSourceLabel: function () {\n      return this.$source.data('label');\n    },\n\n    getItemLabel: function () {\n      return Craft.elementTypeNames[this.elementType]\n        ? Craft.elementTypeNames[this.elementType][2]\n        : this.settings.elementTypeName.toLowerCase();\n    },\n\n    getItemsLabel: function () {\n      return Craft.elementTypeNames[this.elementType]\n        ? Craft.elementTypeNames[this.elementType][3]\n        : this.settings.elementTypePluralName.toLowerCase();\n    },\n\n    getFirstItemNumber: function (total) {\n      return Math.min(this.settings.batchSize * (this.page - 1) + 1, total);\n    },\n\n    getLastItemNumber: function (first, total) {\n      return Math.min(first + (this.settings.batchSize - 1), total);\n    },\n\n    get $sources() {\n      if (!this.sourceNav) {\n        return undefined;\n      }\n\n      return this.sourceNav.$items;\n    },\n\n    getSite: function () {\n      if (!this.siteId) {\n        return undefined;\n      }\n      return Craft.sites.find((s) => s.id == this.siteId);\n    },\n\n    initSources: function ($sources) {\n      if (typeof $sources === 'undefined') {\n        $sources = this.findSources();\n      }\n\n      // No source, no party.\n      if ($sources.length === 0) {\n        return false;\n      }\n\n      if (!this.sourceNav) {\n        this.sourceNav = new SourceNav(this.$sidebar.find('nav'), {\n          onSelectionChange: this._handleSourceSelectionChange.bind(this),\n        });\n      }\n\n      this.sourcesByKey = {};\n\n      for (let i = 0; i < $sources.length; i++) {\n        this.initSource($($sources[i]));\n      }\n\n      return true;\n    },\n\n    findSources: function () {\n      return this._getSourcesInList(this.getSourceContainer(), true);\n    },\n\n    selectDefaultSource: function () {\n      // The `source` query param should always take precedence\n      let sourceKey;\n      if (this.settings.context === 'index') {\n        sourceKey = Craft.getQueryParam('source');\n      }\n\n      if (!sourceKey) {\n        sourceKey = this.getDefaultSourceKey();\n      }\n\n      let $source;\n\n      if (sourceKey) {\n        $source = this.getSourceByKey(sourceKey);\n\n        // Make sure it's visible\n        if (this.$visibleSources.index($source) === -1) {\n          $source = null;\n        }\n      }\n\n      if (!sourceKey || !$source) {\n        // Select the first source by default\n        $source = this.$visibleSources.first();\n      }\n\n      return this.selectSource($source);\n    },\n\n    refreshSources: function () {\n      this.sourceNav.removeAllItems();\n\n      this.setIndexBusy();\n\n      Craft.sendActionRequest('POST', this.settings.refreshSourcesAction, {\n        data: {\n          context: this.settings.context,\n          elementType: this.elementType,\n        },\n      })\n        .then((response) => {\n          this.setIndexAvailable();\n          this.getSourceContainer().replaceWith(response.data.html);\n          this.initSources();\n          this.selectDefaultSource();\n        })\n        .catch((e) => {\n          if (!axios.isCancel(e)) {\n            this.setIndexAvailable();\n            Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n          }\n        });\n    },\n\n    initSource: function ($source) {\n      this.sourceNav.addItems($source);\n      this.initSourceToggle($source);\n      this.sourcesByKey[$source.data('key')] = $source;\n\n      if (\n        $source.data('hasNestedSources') &&\n        this.instanceState.expandedSources.indexOf($source.data('key')) !== -1\n      ) {\n        this._expandSource($source);\n      }\n    },\n\n    initSourceToggle: function ($source) {\n      // Remove handlers for the same thing. Just in case.\n      this.deinitSourceToggle($source);\n\n      var $toggle = this._getSourceToggle($source);\n\n      if ($toggle.length) {\n        this.addListener($source, 'dblclick', '_handleSourceDblClick');\n        this.addListener($toggle, 'click', '_handleSourceToggleClick');\n        $source.data('hasNestedSources', true);\n      } else {\n        $source.data('hasNestedSources', false);\n      }\n    },\n\n    deinitSource: function ($source) {\n      this.sourceNav.removeItems($source);\n      this.deinitSourceToggle($source);\n      delete this.sourcesByKey[$source.data('key')];\n    },\n\n    deinitSourceToggle: function ($source) {\n      if ($source.data('hasNestedSources')) {\n        this.removeListener($source, 'dblclick');\n        this.removeListener(this._getSourceToggle($source), 'click');\n      }\n\n      $source.removeData('hasNestedSources');\n    },\n\n    getDefaultInstanceState: function () {\n      const state = {\n        selectedSource: null,\n        expandedSources: [],\n      };\n\n      if (this.hasImplicitSource) {\n        state.source = {};\n      }\n\n      return state;\n    },\n\n    getDefaultSourceKey: function () {\n      if (\n        this.settings.preferStoredSource &&\n        this.instanceState.selectedSource\n      ) {\n        // Discard the defaults and go with localStorage\n        this.settings.defaultSource = null;\n        this.settings.defaultSourcePath = null;\n        return this.instanceState.selectedSource;\n      }\n\n      let sourceKey = null;\n\n      if (this.settings.defaultSource) {\n        let $lastSource = null;\n        let refreshSources = false;\n\n        for (const segment of this.settings.defaultSource.split('/')) {\n          if ($lastSource) {\n            this._expandSource($lastSource);\n            refreshSources = true;\n          }\n\n          const testSourceKey =\n            (sourceKey !== null ? `${sourceKey}/` : '') + segment;\n          const $source = this.getSourceByKey(testSourceKey);\n\n          if (!$source) {\n            if ($lastSource) {\n              this._collapseSource($lastSource);\n            }\n            break;\n          }\n\n          $lastSource = $source;\n          sourceKey = testSourceKey;\n        }\n\n        if (refreshSources) {\n          // Make sure that the modal is aware of the newly expanded sources\n          this._setSite(this.siteId);\n        }\n      }\n\n      if (!sourceKey) {\n        // If we couldn't resolve a default source, clear out the defaultSource and defaultSourcePath\n        // settings, as defaultSourcePath is expected to be relative to defaultSource\n        // (https://github.com/craftcms/cms/issues/13072)\n        this.settings.defaultSource = null;\n        this.settings.defaultSourcePath = null;\n      }\n\n      return sourceKey ?? this.instanceState.selectedSource;\n    },\n\n    /**\n     * @returns {Object[]|null}\n     */\n    getDefaultSourcePath: function () {\n      // @link https://github.com/craftcms/cms/issues/13006\n      if (\n        this.settings.defaultSourcePath !== null &&\n        this.settings.defaultSourcePath[0] !== undefined &&\n        this.settings.defaultSourcePath[0].canView === true\n      ) {\n        return this.settings.defaultSourcePath;\n      } else {\n        return null;\n      }\n    },\n\n    getDefaultExpandedSources: function () {\n      return this.instanceState.expandedSources;\n    },\n\n    /**\n     * @returns {Object[]}\n     */\n    get sourcePath() {\n      return this.sourcePaths[this.sourceKey] || [];\n    },\n\n    /**\n     * @param {Object[]|null} sourcePath\n     */\n    set sourcePath(sourcePath) {\n      this.sourcePaths[this.sourceKey] =\n        sourcePath && sourcePath.length ? sourcePath : null;\n\n      if (this.$sourcePathOuterContainer) {\n        this.$sourcePathOuterContainer.remove();\n        this.$sourcePathOuterContainer = null;\n        this.$sourcePathInnerContainer = null;\n        this.$sourcePathOverflowBtnContainer = null;\n        this.$sourcePathActionsBtn = null;\n      }\n\n      if (this.sourcePaths[this.sourceKey] && this.settings.showSourcePath) {\n        const actions = this.getSourcePathActions();\n\n        this.$sourcePathOuterContainer = $('<div/>', {\n          class: 'source-path',\n        }).insertBefore(this.$elements);\n        this.$sourcePathInnerContainer = $('<div/>', {\n          class: 'chevron-btns',\n        }).appendTo(this.$sourcePathOuterContainer);\n        const $nav = $('<nav/>', {\n          'aria-label': this.getSourcePathLabel(),\n        }).appendTo(this.$sourcePathInnerContainer);\n        const $ol = $('<ol/>').appendTo($nav);\n\n        let $overflowBtn, overflowMenuId, $overflowUl;\n\n        if (sourcePath.length > 1) {\n          this.$sourcePathOverflowBtnContainer = $('<li/>', {\n            class: 'first-step hidden',\n          }).appendTo($ol);\n\n          overflowMenuId = 'menu' + Math.floor(Math.random() * 1000000);\n          $overflowBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'More items'),\n            'aria-label': Craft.t('app', 'More items'),\n            'data-disclosure-trigger': true,\n            'aria-controls': overflowMenuId,\n          })\n            .append(\n              $('<span/>', {class: 'btn-body'}).append(\n                $('<span/>', {class: 'label'}).append(\n                  $('<span/>', {\n                    'data-icon': 'ellipsis',\n                    'aria-hidden': 'true',\n                  })\n                )\n              )\n            )\n            .append($('<span/>', {class: 'chevron-right'}))\n            .appendTo(this.$sourcePathOverflowBtnContainer);\n\n          const $overflowMenu = $('<div/>', {\n            id: overflowMenuId,\n            class: 'menu menu--disclosure',\n          }).appendTo(this.$sourcePathOverflowBtnContainer);\n          $overflowUl = $('<ul/>').appendTo($overflowMenu);\n\n          $overflowBtn.disclosureMenu();\n        }\n\n        for (let i = 0; i < sourcePath.length; i++) {\n          ((i) => {\n            const step = sourcePath[i];\n\n            if ($overflowUl && i < sourcePath.length - 1) {\n              step.$overflowLi = $('<li/>', {\n                class: 'hidden',\n              }).appendTo($overflowUl);\n\n              $('<a/>', {\n                class: 'flex flex-nowrap',\n                href: '#',\n                type: 'button',\n                role: 'button',\n                html: step.icon\n                  ? `<span data-icon=\"${step.icon}\" aria-hidden=\"true\"></span><span>${step.label}</span>`\n                  : step.label,\n              })\n                .appendTo(step.$overflowLi)\n                .on('click', (ev) => {\n                  ev.preventDefault();\n                  $overflowBtn.data('trigger').hide();\n                  this.selectSourcePathStep(i);\n                });\n            }\n\n            const isFirst = i === 0;\n            const isLast = i === sourcePath.length - 1;\n\n            step.$li = $('<li/>').appendTo($ol);\n\n            if (isFirst) {\n              step.$li.addClass('first-step');\n            }\n\n            step.$btn = $('<a/>', {\n              href: step.uri ? Craft.getCpUrl(step.uri) : '#',\n              class: 'btn',\n              role: 'button',\n            });\n\n            if (step.icon) {\n              step.$btn.attr('aria-label', step.label);\n            }\n\n            const $btnBody = $('<span/>', {\n              class: 'btn-body',\n            }).appendTo(step.$btn);\n\n            step.$label = $('<span/>', {\n              class: 'label',\n              html: step.icon\n                ? `<span data-icon=\"${step.icon}\" aria-hidden=\"true\"></span>`\n                : step.label,\n            }).appendTo($btnBody);\n\n            step.$btn.append($('<span class=\"chevron-left\"/>'));\n\n            if (!isLast || !actions.length) {\n              step.$btn.append($('<span class=\"chevron-right\"/>'));\n            } else {\n              step.$btn.addClass('has-action-menu');\n            }\n\n            if (isLast) {\n              step.$btn.addClass('current-step').attr('aria-current', 'page');\n            }\n\n            step.$btn.appendTo(step.$li);\n\n            this.addListener(step.$btn, 'activate', () => {\n              this.selectSourcePathStep(i);\n            });\n          })(i);\n        }\n\n        // Action menu\n        if (actions && actions.length) {\n          const actionBtnLabel = this.getSourcePathActionLabel();\n          const menuId = 'menu' + Math.floor(Math.random() * 1000000);\n          this.$sourcePathActionsBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn current-step',\n            title: actionBtnLabel,\n            'aria-label': actionBtnLabel,\n            'data-disclosure-trigger': true,\n            'aria-controls': menuId,\n          })\n            .append(\n              $('<span/>', {class: 'btn-body'}).append(\n                $('<span/>', {class: 'label'})\n              )\n            )\n            .append($('<span/>', {class: 'chevron-right'}))\n            .appendTo(this.$sourcePathInnerContainer);\n\n          const groupedActions = [\n            actions.filter((a) => !a.destructive && !a.administrative),\n            actions.filter((a) => a.destructive && !a.administrative),\n            actions.filter((a) => a.administrative),\n          ].filter((group) => group.length);\n\n          const $menu = $('<div/>', {\n            id: menuId,\n            class: 'menu menu--disclosure',\n          }).appendTo(this.$sourcePathInnerContainer);\n\n          groupedActions.forEach((group, index) => {\n            if (index !== 0) {\n              $('<hr/>').appendTo($menu);\n            }\n            this._buildSourcePathActionList(group).appendTo($menu);\n          });\n\n          this.$sourcePathActionsBtn.disclosureMenu();\n          this._updateSourcePathVisibility();\n        }\n\n        // Update the URL if we're on the index page\n        if (\n          this.settings.context === 'index' &&\n          typeof sourcePath[sourcePath.length - 1].uri !== 'undefined' &&\n          typeof history != 'undefined'\n        ) {\n          history.replaceState(\n            {},\n            '',\n            Craft.getCpUrl(sourcePath[sourcePath.length - 1].uri)\n          );\n        }\n      }\n\n      // Store the source path\n      const sourcePathStep =\n        (this.sourcePaths[this.sourceKey]\n          ? this.sourcePaths[this.sourceKey][\n              this.sourcePaths[this.sourceKey].length - 1\n            ].key\n          : null) || null;\n      if (this.settings.context === 'index') {\n        this.setSelecetedSourceState('sourcePathStep', sourcePathStep);\n      } else {\n        this.setInstanceState('sourcePathStep', sourcePathStep);\n      }\n\n      this.onSourcePathChange();\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathLabel: function () {\n      return '';\n    },\n\n    /**\n     * @returns {Object[]}\n     */\n    getSourcePathActions: function () {\n      return [];\n    },\n\n    /**\n     * @returns {string}\n     */\n    getSourcePathActionLabel: function () {\n      return '';\n    },\n\n    _updateSourcePathVisibility: function () {\n      const firstStep = this.sourcePath[0];\n      const lastStep = this.sourcePath[this.sourcePath.length - 1];\n\n      // reset the source path styles\n      if (this.$sourcePathOverflowBtnContainer) {\n        this.$sourcePathOverflowBtnContainer.addClass('hidden');\n        firstStep.$li.addClass('first-step');\n      }\n\n      for (const step of this.sourcePath) {\n        if (step.$overflowLi) {\n          step.$overflowLi.addClass('hidden');\n        }\n        step.$li.removeClass('hidden');\n      }\n\n      lastStep.$label.css('width', '');\n      lastStep.$btn.removeAttr('title');\n\n      let overage = this._checkSourcePathOverage();\n      if (!overage) {\n        return;\n      }\n\n      // show the overflow menu, if we have one\n      if (this.$sourcePathOverflowBtnContainer) {\n        this.$sourcePathOverflowBtnContainer.removeClass('hidden');\n        firstStep.$li.removeClass('first-step');\n\n        for (let i = 0; i < this.sourcePath.length - 1; i++) {\n          const step = this.sourcePath[i];\n          step.$overflowLi.removeClass('hidden');\n          step.$li.addClass('hidden');\n\n          // are we done yet?\n          overage = this._checkSourcePathOverage();\n          if (!overage) {\n            return;\n          }\n        }\n      }\n\n      // if we're still here, truncation is the only remaining strategy\n      if (!lastStep.icon) {\n        const width = lastStep.$label[0].getBoundingClientRect().width;\n        lastStep.$label.width(Math.floor(width - overage));\n        lastStep.$btn.attr('title', lastStep.label);\n      }\n    },\n\n    _checkSourcePathOverage: function () {\n      const outerWidth =\n        this.$sourcePathOuterContainer[0].getBoundingClientRect().width;\n      const innerWidth =\n        this.$sourcePathInnerContainer[0].getBoundingClientRect().width;\n      return Math.max(innerWidth - outerWidth, 0);\n    },\n\n    _buildSourcePathActionList: function (actions) {\n      const $ul = $('<ul/>');\n\n      actions.forEach((action) => {\n        const $a = $('<a/>', {\n          href: '#',\n          type: 'button',\n          role: 'button',\n          'aria-label': action.label,\n          text: action.label,\n        }).on('click', (ev) => {\n          ev.preventDefault();\n          this.$sourcePathActionsBtn.data('trigger').hide();\n          if (action.onSelect) {\n            action.onSelect();\n          }\n        });\n\n        if (action.destructive) {\n          $a.addClass('error');\n        }\n\n        $('<li/>').append($a).appendTo($ul);\n      });\n\n      return $ul;\n    },\n\n    onSourcePathChange: function () {\n      this.settings.onSourcePathChange();\n      this.trigger('sourcePathChange');\n    },\n\n    selectSourcePathStep: function (num) {\n      this.sourcePath = this.sourcePath.slice(0, num + 1);\n      this.sourcePath[num].$btn.focus();\n      this.clearSearch(false);\n      this.updateElements();\n    },\n\n    startSearching: function () {\n      // Show the clear button\n      this.$clearSearchBtn.removeClass('hidden');\n      this.searching = true;\n      this.sortByScore = true;\n    },\n\n    clearSearch: function (updateElements) {\n      if (!this.searching) {\n        return;\n      }\n\n      this.$search.val('');\n\n      if (this.searchTimeout) {\n        clearTimeout(this.searchTimeout);\n      }\n\n      this.stopSearching();\n\n      if (updateElements) {\n        this.updateElementsIfSearchTextChanged();\n      } else {\n        this.searchText = null;\n      }\n    },\n\n    stopSearching: function () {\n      // Hide the clear button\n      this.$clearSearchBtn.addClass('hidden');\n      this.searching = false;\n      this.sortByScore = false;\n    },\n\n    setInstanceState: function (key, value) {\n      if (typeof key === 'object') {\n        $.extend(this.instanceState, key);\n      } else {\n        this.instanceState[key] = value;\n      }\n\n      this.storeInstanceState();\n    },\n\n    storeInstanceState: function () {\n      if (this.settings.storageKey) {\n        Craft.setLocalStorage(this.settings.storageKey, this.instanceState);\n      }\n    },\n\n    getSourceState: function (sourceKey, key, defaultValue) {\n      // account for when all sources are disabled\n      if (!sourceKey) {\n        return null;\n      }\n\n      if (typeof this.sourceStates[sourceKey] === 'undefined') {\n        // If this is a nested source key, see if we have a source state for the parent\n        const lastSlashPos = sourceKey.lastIndexOf('/');\n        if (lastSlashPos !== -1) {\n          return this.getSourceState(\n            sourceKey.substring(0, lastSlashPos),\n            key,\n            defaultValue\n          );\n        }\n      }\n\n      const sourceState = this.sourceStates[sourceKey] || {};\n\n      if (typeof key === 'undefined') {\n        return Object.assign({}, sourceState);\n      }\n      if (typeof sourceState[key] !== 'undefined') {\n        return sourceState[key];\n      }\n      return typeof defaultValue !== 'undefined' ? defaultValue : null;\n    },\n\n    getSelectedSourceState: function (key, defaultValue) {\n      return this.getSourceState(\n        this.instanceState.selectedSource,\n        key,\n        defaultValue\n      );\n    },\n\n    setSelecetedSourceState: function (key, value) {\n      var viewState = this.getSelectedSourceState();\n\n      // account for when all sources are disabled\n      if (viewState == null) {\n        viewState = [];\n      }\n\n      if (typeof key === 'object') {\n        for (let k in key) {\n          if (key.hasOwnProperty(k)) {\n            if (key[k] !== null) {\n              viewState[k] = key[k];\n            } else {\n              delete viewState[k];\n            }\n          }\n        }\n      } else if (value !== null) {\n        viewState[key] = value;\n      } else {\n        delete viewState[key];\n      }\n\n      // account for when all sources are disabled\n      let sourceKey = '*';\n      if (this.instanceState.selectedSource != undefined) {\n        // otherwise do what we used to do\n        sourceKey = this.instanceState.selectedSource;\n      }\n\n      const sourceStates = this.sourceStates;\n      sourceStates[sourceKey] = viewState;\n\n      this.sourceStates = sourceStates;\n    },\n\n    /**\n     * @deprecated in 4.3.0.\n     */\n    storeSortAttributeAndDirection: function () {},\n\n    /**\n     * Sets the page number.\n     */\n    setPage: function (page) {\n      if (!this.isAdministrative) {\n        return;\n      }\n\n      page = Math.max(page, 1);\n      this.page = page;\n\n      const url = Craft.getPageUrl(this.page);\n      history.replaceState({}, '', url);\n    },\n\n    _resetCount: function () {\n      this.resultSet = null;\n      this.totalResults = null;\n      this.totalUnfilteredResults = null;\n    },\n\n    updateSourceMenu: function () {\n      if (!this.$sourceActionsContainer.length) {\n        return;\n      }\n\n      if (this.$sourceActionsBtn) {\n        this.$sourceActionsBtn.data('trigger').destroy();\n        this.$sourceActionsContainer.empty();\n        $(`#${this.namespaceId('source-actions-menu')}`).remove();\n        this.$sourceActionsBtn = null;\n      }\n\n      const actions = this.getSourceActions();\n      if (!actions.length) {\n        return;\n      }\n\n      const groupedActions = [\n        actions.filter((a) => !a.destructive && !a.administrative),\n        actions.filter((a) => a.destructive && !a.administrative),\n        actions.filter((a) => a.administrative),\n      ].filter((group) => group.length);\n\n      this.$sourceActionsBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn action-btn hairline',\n        title: Craft.t('app', 'Source settings'),\n        'aria-label': Craft.t('app', 'Source settings'),\n        'aria-controls': 'source-actions-menu',\n      }).appendTo(this.$sourceActionsContainer);\n\n      const $menu = $('<div/>', {\n        id: 'source-actions-menu',\n        class: 'menu menu--disclosure',\n      }).appendTo(this.$sourceActionsContainer);\n\n      groupedActions.forEach((group, index) => {\n        if (index !== 0) {\n          $('<hr/>').appendTo($menu);\n        }\n\n        this._buildActionList(group).appendTo($menu);\n      });\n\n      this.$sourceActionsBtn.disclosureMenu();\n    },\n\n    _buildActionList: function (actions) {\n      const $ul = $('<ul/>');\n\n      actions.forEach((action) => {\n        const $button = $('<button/>', {\n          type: 'button',\n          class: 'menu-item',\n          text: action.label,\n        }).on('click', () => {\n          this.$sourceActionsBtn.data('trigger').hide();\n          if (action.onSelect) {\n            action.onSelect();\n          }\n        });\n\n        if (action.destructive) {\n          $button.addClass('error');\n        }\n\n        $('<li/>').append($button).appendTo($ul);\n      });\n\n      return $ul;\n    },\n\n    getSourceActions: function () {\n      let actions = [];\n\n      if (Craft.userIsAdmin && Craft.allowAdminChanges) {\n        actions.push({\n          label: Craft.t('app', 'Customize sources'),\n          administrative: true,\n          onSelect: () => {\n            this.createCustomizeSourcesModal();\n          },\n        });\n      }\n\n      return actions;\n    },\n\n    updateViewMenu: function () {\n      if (\n        !this.activeViewMenu ||\n        this.activeViewMenu !== this.viewMenus[this.sourceKey]\n      ) {\n        if (this.activeViewMenu) {\n          this.activeViewMenu.hideTrigger();\n        }\n        if (!this.viewMenus[this.sourceKey]) {\n          if (\n            !this.getViewModesForSource().find(\n              (mode) => mode.mode === 'table'\n            ) &&\n            this.settings.sortable\n          ) {\n            return;\n          }\n          this.viewMenus[this.sourceKey] = new ViewMenu(this, this.$source);\n        }\n        this.activeViewMenu = this.viewMenus[this.sourceKey];\n        this.activeViewMenu.showTrigger();\n      }\n    },\n\n    /**\n     * Returns any additional settings that should be passed to the view instance.\n     */\n    getViewSettings: function () {\n      return {};\n    },\n\n    /**\n     * Returns the data that should be passed to the elementIndex/getElements controller action\n     * when loading elements.\n     */\n    getViewParams: function () {\n      // baseCriteria: the criteria properties determined by the source and element index config\n      // criteria: everything the user had some say in\n\n      // baseCriteria will determine the unfilteredTotal count, in case something needs to know\n      // the total number of elements the user has access to\n\n      const baseCriteria = Object.assign(\n        {\n          status: null,\n          drafts: this.settings.canHaveDrafts ? null : false,\n          draftOf: this.settings.canHaveDrafts && this.drafts ? null : false,\n          savedDraftsOnly: true,\n        },\n        this.baseCriteria,\n        {\n          siteId: this.siteId,\n        }\n      );\n\n      const criteria = {\n        offset: this.settings.batchSize * (this.page - 1),\n        limit: this.settings.batchSize,\n        search: this.searching ? this.searchText : null,\n      };\n\n      // Only set drafts/draftOf/trashed params when needed, so we don't potentially override a source's criteria\n      if (this.settings.canHaveDrafts && this.drafts) {\n        criteria.drafts = true;\n      }\n\n      if (this.trashed) {\n        criteria.trashed = true;\n      }\n\n      if (!this.$statusMenuContainer.hasClass('hidden') && this.status) {\n        criteria.status = this.status;\n      }\n\n      const params = {\n        context: this.settings.context,\n        elementType: this.elementType,\n        canHaveDrafts: this.settings.canHaveDrafts,\n        source: this.instanceState.selectedSource,\n        condition: this.settings.condition,\n        referenceElementId: this.settings.referenceElementId,\n        referenceElementSiteId: this.settings.referenceElementSiteId,\n        baseCriteria,\n        criteria,\n        disabledElementIds: this.settings.disabledElementIds,\n        viewState: $.extend({}, this.getSelectedSourceState()),\n        paginated: this.paginated,\n        selectable: this.selectable,\n        sortable: this.sortable,\n      };\n\n      params.viewState.showHeaderColumn = this.settings.showHeaderColumn;\n      params.viewState.inlineEditing = this.inlineEditing;\n      params.viewState.nestedInputNamespace = this.nestedInputNamespace;\n\n      // override viewState.mode in case it's different from what's stored\n      params.viewState.mode = this.viewMode;\n\n      if (this.viewMode === 'structure') {\n        params.viewState.mode = 'table';\n        params.viewState.order = 'structure';\n        params.viewState.sort = 'asc';\n\n        if (typeof this.instanceState.collapsedElementIds === 'undefined') {\n          this.instanceState.collapsedElementIds = [];\n        }\n        params.collapsedElementIds = this.instanceState.collapsedElementIds;\n      } else if (!this.sortable && !this.inlineEditing) {\n        // Possible that the order/sort isn't entirely accurate if we're sorting by Score\n        const [sortAttribute, sortDirection] =\n          this.getSortAttributeAndDirection();\n        params.viewState.order = sortAttribute;\n        params.viewState.sort = sortDirection;\n      }\n\n      if (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey] &&\n        (this.filterHuds[this.siteId][this.sourceKey].conditionConfig ||\n          this.filterHuds[this.siteId][this.sourceKey].serialized)\n      ) {\n        params.filterConfig =\n          this.filterHuds[this.siteId][this.sourceKey].conditionConfig;\n        params.filters =\n          this.filterHuds[this.siteId][this.sourceKey].serialized;\n      }\n\n      if (\n        this.hasImplicitSource &&\n        typeof params.viewState.tableColumns === 'undefined'\n      ) {\n        params.viewState.tableColumns = this.getDefaultTableColumns();\n      }\n\n      // Give plugins a chance to hook in here\n      this.trigger('registerViewParams', {\n        params: params,\n      });\n\n      return params;\n    },\n\n    updateElements: function (preservePagination, pageChanged) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're not fully initialized yet\n        if (!this.initialized) {\n          reject('The element index isn’t initialized yet.');\n          return;\n        }\n\n        this.onBeforeUpdateElements();\n\n        // Cancel any ongoing requests\n        this._cancelRequests();\n\n        this.setIndexBusy();\n\n        // Kill the old view class\n        if (this.view) {\n          this.view.disable();\n        }\n\n        if (preservePagination !== true) {\n          this.setPage(1);\n          this._resetCount();\n        }\n\n        this._previousViewParams = this._viewParams;\n        this._viewParams = this.getViewParams();\n\n        Craft.sendActionRequest('POST', this.settings.updateElementsAction, {\n          data: this._viewParams,\n          cancelToken: this._createCancelToken(),\n        })\n          .then((response) => {\n            this.setIndexAvailable();\n\n            if (this.settings.context === 'index') {\n              if (Craft.cp.fixedHeader) {\n                const headerContainerHeight =\n                  Craft.cp.$headerContainer.height();\n                const maxScrollTop =\n                  this.$main.offset().top - headerContainerHeight;\n                if (maxScrollTop < Garnish.$scrollContainer.scrollTop()) {\n                  Garnish.$scrollContainer.scrollTop(maxScrollTop);\n                }\n              }\n            } else {\n              this.$main.scrollTop(0);\n            }\n\n            this._updateView(this._viewParams, response.data);\n\n            if (this.criteriaHasChanged() && !this.sourceHasChanged()) {\n              const itemLabel = this.getItemLabel();\n              const itemsLabel = this.getItemsLabel();\n\n              this._countResults().then((total) => {\n                let successMessage;\n\n                if (!this.paginated) {\n                  successMessage = Craft.t(\n                    'app',\n                    'Showing {total, number} {total, plural, =1{{item}} other{{items}}}',\n                    {\n                      total: total,\n                      item: itemLabel,\n                      items: itemsLabel,\n                    }\n                  );\n                } else {\n                  const first = this.getFirstItemNumber(total);\n                  successMessage = Craft.t(\n                    'app',\n                    'Showing {first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}',\n                    {\n                      first: first,\n                      last: this.getLastItemNumber(first, total),\n                      total: total,\n                      item: itemLabel,\n                      items: itemsLabel,\n                    }\n                  );\n                }\n\n                this.updateLiveRegion(successMessage);\n              });\n            } else {\n              this.updateLiveRegion(this.getSortMessage());\n            }\n\n            resolve();\n          })\n          .catch((e) => {\n            if (!axios.isCancel(e)) {\n              this.setIndexAvailable();\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n            }\n            reject(e);\n          });\n      });\n    },\n\n    criteriaHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return !Craft.compare(\n        this._viewParams.criteria,\n        this._previousViewParams.criteria\n      );\n    },\n\n    sourceHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return this._viewParams.source !== this._previousViewParams.source;\n    },\n\n    sortHasChanged: function () {\n      if (!this._previousViewParams) {\n        return false;\n      }\n\n      return (\n        this._viewParams.viewState.order !==\n          this._previousViewParams.viewState.order ||\n        this._viewParams.viewState.sort !==\n          this._previousViewParams.viewState.sort\n      );\n    },\n\n    updateElementsIfSearchTextChanged: function () {\n      if (\n        this.searchText !==\n        (this.searchText = this.searching ? this.$search.val() : null)\n      ) {\n        if (this.settings.context === 'index') {\n          Craft.setQueryParam('search', this.$search.val());\n        }\n        this.updateElements();\n      }\n    },\n\n    getSortMessage: function () {\n      const attribute = this.getSelectedSortAttribute();\n      const direction =\n        this.getSelectedSortDirection() === 'asc'\n          ? Craft.t('app', 'Ascending')\n          : Craft.t('app', 'Descending');\n      const sortLabel = this.getSortLabel(attribute);\n\n      if (!attribute && !direction && !sortLabel) return;\n\n      return Craft.t('app', '{name} sorted by {attribute}, {direction}', {\n        name: this.getSourceLabel(),\n        attribute: sortLabel,\n        direction: direction,\n      });\n    },\n\n    updateLiveRegion: function (message) {\n      if (!message) return;\n\n      this.$srStatusContainer.empty().text(message);\n\n      // Clear message after interval\n      setTimeout(() => {\n        const currentMessage = this.$srStatusContainer.text();\n\n        // Check that this is the same message and hasn't been updated since\n        if (message !== currentMessage) return;\n\n        this.$srStatusContainer.empty();\n      }, 5000);\n    },\n\n    showActionTriggers: function () {\n      // Ignore if they're already shown\n      if (this.showingActionTriggers) {\n        return;\n      }\n\n      if (!this._$triggers) {\n        this._createTriggers();\n      } else {\n        this._$triggers.appendTo(this.$actionsContainer);\n      }\n\n      this.showingActionTriggers = true;\n    },\n\n    submitAction: async function (action, actionParams, beforeCallback) {\n      // Make sure something's selected\n      var selectedElementIds = this.view.getSelectedElementIds(),\n        totalSelected = selectedElementIds.length;\n\n      if (totalSelected === 0) {\n        return false;\n      }\n\n      if (typeof action === 'string') {\n        action = this._findAction(action);\n      }\n\n      if (action.confirm && !confirm(action.confirm)) {\n        return false;\n      }\n\n      if (beforeCallback) {\n        await beforeCallback();\n      }\n\n      // Cancel any ongoing requests\n      this._cancelRequests();\n\n      // Get ready to submit\n      var viewParams = this.getViewParams();\n\n      actionParams = actionParams ? Craft.expandPostArray(actionParams) : {};\n      var params = $.extend(viewParams, action.settings || {}, actionParams, {\n        elementAction: action.type,\n        elementIds: selectedElementIds,\n      });\n\n      // Do it\n      this.setIndexBusy();\n      this._autoSelectElements = selectedElementIds;\n\n      if (action.download) {\n        if (Craft.csrfTokenName) {\n          params[Craft.csrfTokenName] = Craft.csrfTokenValue;\n        }\n        try {\n          await Craft.downloadFromUrl(\n            'POST',\n            Craft.getActionUrl(this.settings.submitActionsAction),\n            params\n          );\n        } finally {\n          this.setIndexAvailable();\n        }\n      } else {\n        try {\n          const response = await Craft.sendActionRequest(\n            'POST',\n            this.settings.submitActionsAction,\n            {\n              data: params,\n              cancelToken: this._createCancelToken(),\n            }\n          );\n\n          // Update the count text too\n          this._resetCount();\n          this._updateView(viewParams, response.data);\n\n          if (typeof response.data.badgeCounts !== 'undefined') {\n            this._updateBadgeCounts(response.data.badgeCounts);\n          }\n\n          if (response.data.message) {\n            Craft.cp.displaySuccess(response.data.message);\n          }\n\n          this.afterAction(action, params);\n        } catch (e) {\n          Craft.cp.displayError(e?.response?.data?.message);\n        } finally {\n          this.setIndexAvailable();\n        }\n      }\n    },\n\n    _findAction: function (actionClass) {\n      for (var i = 0; i < this.actions.length; i++) {\n        if (this.actions[i].type === actionClass) {\n          return this.actions[i];\n        }\n      }\n      throw `Invalid element action: ${actionClass}`;\n    },\n\n    afterAction: function (action, params) {\n      // There may be a new background job that needs to be run\n      Craft.cp.runQueue();\n\n      this.onAfterAction(action, params);\n    },\n\n    hideActionTriggers: function () {\n      // Ignore if there aren't any\n      if (!this.showingActionTriggers) {\n        return;\n      }\n\n      this._$triggers.detach();\n\n      this.showingActionTriggers = false;\n    },\n\n    updateSelectAllCheckbox: function () {\n      if (this.$selectAllCheckbox) {\n        const totalSelected = this.view.getSelectedElements().length;\n\n        if (totalSelected !== 0) {\n          if (totalSelected === this.view.getEnabledElements().length) {\n            this.$selectAllCheckbox.removeClass('indeterminate');\n            this.$selectAllCheckbox.addClass('checked');\n            this.$selectAllCheckbox.attr('aria-checked', 'true');\n          } else {\n            this.$selectAllCheckbox.addClass('indeterminate');\n            this.$selectAllCheckbox.removeClass('checked');\n            this.$selectAllCheckbox.attr('aria-checked', 'mixed');\n          }\n        } else {\n          this.$selectAllCheckbox.removeClass('indeterminate checked');\n          this.$selectAllCheckbox.attr('aria-checked', 'false');\n        }\n      }\n    },\n\n    updateActionTriggers: function () {\n      // Do we have an action UI to update?\n      if (this.actions) {\n        const totalSelected = this.view.getSelectedElements().length;\n\n        if (totalSelected !== 0) {\n          this.showActionTriggers();\n        } else {\n          this.hideActionTriggers();\n        }\n      }\n    },\n\n    getSelectedElements: function () {\n      return this.view ? this.view.getSelectedElements() : $();\n    },\n\n    getSelectedElementIds: function () {\n      return this.view ? this.view.getSelectedElementIds() : [];\n    },\n\n    setStatus: function (status) {\n      // Find the option (and make sure it actually exists)\n      var $option = this.statusMenu.$options.filter(\n        'a[data-status=\"' + status + '\"]:first'\n      );\n\n      if ($option.length) {\n        this.statusMenu.selectOption($option[0]);\n      }\n    },\n\n    /**\n     * Returns the selected sort attribute for a source\n     * @param {jQuery} [$source]\n     * @returns {string}\n     */\n    getSelectedSortAttribute: function ($source) {\n      $source = $source || this.$source;\n\n      if ($source) {\n        const attribute = this.getSourceState($source.data('key'), 'order');\n\n        // Make sure it's valid\n        if (this.getSortOption(attribute, $source)) {\n          return attribute;\n        }\n      }\n\n      return this.getDefaultSort()[0];\n    },\n\n    /**\n     * Returns the selected sort direction for a source\n     * @param {jQuery} [$source]\n     * @returns {string}\n     */\n    getSelectedSortDirection: function ($source) {\n      $source = $source || this.$source;\n\n      if ($source) {\n        const direction = this.getSourceState($source.data('key'), 'sort');\n\n        // Make sure it's valid\n        if (['asc', 'desc'].includes(direction)) {\n          return direction;\n        }\n      }\n\n      return this.getDefaultSort()[1];\n    },\n\n    /**\n     * @deprecated in 4.3.0. Use setSelectedSortAttribute() instead.\n     */\n    setSortAttribute: function (attr) {\n      this.setSelectedSortAttribute(attr);\n    },\n\n    /**\n     * Sets the selected sort attribute and direction.\n     *\n     * If direction isn’t provided, the attribute’s default direction will be used.\n     *\n     * @param {string} attr\n     * @param {string} [dir]\n     */\n    setSelectedSortAttribute: function (attr, dir) {\n      // If score, keep track of that separately\n      if (attr === 'score') {\n        this.sortByScore = true;\n        return;\n      }\n\n      this.sortByScore = false;\n\n      // Make sure it's valid\n      const sortOption = this.getSortOption(attr);\n      if (!sortOption) {\n        console.warn(`Invalid sort option: ${attr}`);\n        return;\n      }\n\n      if (!dir) {\n        dir = sortOption.defaultDir;\n      }\n\n      const history = [];\n\n      // Remember the previous choices\n      const attributes = [attr];\n\n      // Only include the last attribute if it changed\n      const lastAttr = this.getSelectedSourceState('order');\n      if (lastAttr && lastAttr !== attr) {\n        history.push([lastAttr, this.getSelectedSourceState('sort')]);\n        attributes.push(lastAttr);\n      }\n\n      const oldHistory = this.getSelectedSourceState('orderHistory', []);\n      for (let i = 0; i < oldHistory.length; i++) {\n        const [a] = oldHistory[i];\n        if (a && !attributes.includes(a)) {\n          history.push(oldHistory[i]);\n          attributes.push(a);\n        } else {\n          break;\n        }\n      }\n\n      this.setSelecetedSourceState({\n        order: attr,\n        sort: dir,\n        orderHistory: history,\n      });\n\n      if (this.settings.context === 'index') {\n        // Update the query string\n        Craft.setQueryParam('sort', `${attr}-${dir}`);\n      }\n    },\n\n    /**\n     * @deprecated in 4.3.0. Use setSelectedSortAttribute() or setSelectedSortDirection() instead.\n     */\n    setSortDirection: function (dir) {\n      this.setSelectedSortDirection(dir);\n    },\n\n    /**\n     * Sets the selected sort direction, maintaining the current sort attribute.\n     * @param {string} dir\n     */\n    setSelectedSortDirection: function (dir) {\n      this.setSelectedSortAttribute(this.getSelectedSortAttribute(), dir);\n    },\n\n    /**\n     * Returns the actual sort attribute, which may be different from what's selected.\n     * @returns {string[]}\n     */\n    getSortAttributeAndDirection: function () {\n      if (this.searching && this.sortByScore) {\n        return ['score', 'desc'];\n      }\n\n      return [this.getSelectedSortAttribute(), this.getSelectedSortDirection()];\n    },\n\n    getSortLabel: function (attr) {\n      const sortOption = this.getSortOption(attr);\n      return sortOption ? sortOption.label : null;\n    },\n\n    getSelectedViewMode: function () {\n      return this.validateViewMode(this.getSelectedSourceState('mode') || null);\n    },\n\n    /**\n     * Returns the nesting level for a given source, where 1 = the root level\n     * @param {jQuery} $source\n     * @returns {number}\n     */\n    getSourceLevel: function ($source) {\n      return $source.parentsUntil('nav', 'ul.nested').length + 1;\n    },\n\n    /**\n     * Returns a source’s parent, or null if it’s the root source\n     * @param {jQuery} $source\n     * @returns {?jQuery}\n     */\n    getParentSource: function ($source) {\n      const $parent = $source.parent().parent().siblings('a');\n      return $parent.length ? $parent : null;\n    },\n\n    /**\n     * Returns the root level source for a given source.\n     * @param {jQuery} $source\n     * @returns {jQuery}\n     */\n    getRootSource: function ($source) {\n      let $parent;\n      while (($parent = this.getParentSource($source))) {\n        $source = $parent;\n      }\n      return $source;\n    },\n\n    getSourceByKey: function (key) {\n      return this.sourcesByKey[key] || null;\n    },\n\n    selectSource: function (source) {\n      const $source = $(source);\n\n      // return false if there truly are no sources;\n      // don't attempt to check only default/visible sources\n      if (!this.sourcesByKey || !Object.keys(this.sourcesByKey).length) {\n        return false;\n      }\n\n      if (\n        this.$source &&\n        this.$source[0] &&\n        this.$source[0] === $source[0] &&\n        $source.data('key') === this.sourceKey\n      ) {\n        return false;\n      }\n\n      // Hide action triggers if they're currently being shown\n      this.hideActionTriggers();\n\n      this.$source = $source;\n      this.$rootSource = this.getRootSource($source);\n      this.sourceKey = $source.data('key');\n      this.rootSourceKey = this.$rootSource.data('key');\n      this.setInstanceState('selectedSource', this.sourceKey);\n      this.sourceNav.selectItem($source);\n\n      Craft.cp.updateContentHeading();\n\n      if (this.searching) {\n        // Clear the search value without causing it to update elements\n        this.searchText = null;\n        this.$search.val('');\n        if (this.settings.context === 'index') {\n          Craft.setQueryParam('search', null);\n        }\n        this.stopSearching();\n      }\n\n      // Status menu\n      // ----------------------------------------------------------------------\n\n      if (this.$statusMenuBtn.length) {\n        if (typeof this.baseCriteria.status !== 'undefined') {\n          this.$statusMenuContainer.addClass('hidden');\n        } else {\n          this.$statusMenuContainer.removeClass('hidden');\n        }\n\n        if (this.trashed) {\n          // Swap to the initial status\n          var $firstOption = this.statusMenu.$options.first();\n          this.setStatus($firstOption.data('status'));\n        }\n      }\n\n      // View mode buttons\n      // ----------------------------------------------------------------------\n\n      // Clear out any previous view mode data\n      if (this.$viewModeBtnContainer) {\n        this.$viewModeBtnContainer.remove();\n      }\n\n      this.viewModeBtns = {};\n      this.viewMode = null;\n\n      // Get the new list of view modes\n      this.sourceViewModes = this.getViewModesForSource();\n\n      // Create the buttons if there's more than one mode available to this source\n      if (this.sourceViewModes.length > 1) {\n        this.$viewModeBtnContainer = $(\n          '<section class=\"btngroup btngroup--exclusive\"/>'\n        )\n          .attr('aria-label', Craft.t('app', 'View'))\n          .insertAfter(this.$searchContainer);\n\n        for (var i = 0; i < this.sourceViewModes.length; i++) {\n          let sourceViewMode = this.sourceViewModes[i];\n\n          let $viewModeBtn = $('<button/>', {\n            type: 'button',\n            class:\n              'btn' +\n              (typeof sourceViewMode.className !== 'undefined'\n                ? ` ${sourceViewMode.className}`\n                : ''),\n            'data-view': sourceViewMode.mode,\n            'data-icon': sourceViewMode.icon,\n            'aria-label': sourceViewMode.title,\n            'aria-pressed': 'false',\n            title: sourceViewMode.title,\n          }).appendTo(this.$viewModeBtnContainer);\n\n          this.viewModeBtns[sourceViewMode.mode] = $viewModeBtn;\n\n          this.addListener(\n            $viewModeBtn,\n            'click',\n            {mode: sourceViewMode.mode},\n            function (ev) {\n              this.selectViewMode(ev.data.mode);\n              this.updateElements();\n            }\n          );\n        }\n      }\n\n      // Figure out which mode we should start with\n      var viewMode = this.getSelectedSourceState('mode');\n\n      // Maintain the structure view for source states that were saved with an older Craft version\n      if (\n        viewMode === 'table' &&\n        this.getSourceState($source.data('key'), 'order') === 'structure'\n      ) {\n        viewMode = 'structure';\n      }\n\n      if (!viewMode || !this.doesSourceHaveViewMode(viewMode)) {\n        // Try to keep using the current view mode\n        if (this.viewMode && this.doesSourceHaveViewMode(this.viewMode)) {\n          viewMode = this.viewMode;\n        }\n        // Just use the first one\n        else {\n          viewMode = this.sourceViewModes[0].mode;\n        }\n      }\n\n      this.selectViewMode(viewMode);\n\n      this.updateSourceMenu();\n      this.updateViewMenu();\n\n      if (!this.filterHudExists() && this.$source.data('default-filter')) {\n        this.createFilterHud({\n          showOnInit: false,\n          conditionConfig: this.$source.data('default-filter'),\n        });\n      } else {\n        this.updateFilterBtn();\n      }\n\n      this.onSelectSource();\n\n      this.sourcePath =\n        this.sourcePaths[this.sourceKey] ||\n        this.$source.data('default-source-path');\n\n      if (this.settings.context === 'index') {\n        const urlParams = Craft.getQueryParams();\n        urlParams.source = this.sourceKey;\n        Craft.setUrl(Craft.getUrl(Craft.path, urlParams));\n      }\n\n      return true;\n    },\n\n    selectSourceByKey: function (key) {\n      var $source = this.getSourceByKey(key);\n\n      if ($source) {\n        return this.selectSource($source);\n      } else {\n        return false;\n      }\n    },\n\n    getSourceData($source, key) {\n      $source ||= this.$source;\n      if (!$source) {\n        return undefined;\n      }\n      const data = $source.data(key);\n      if (data === undefined) {\n        const $parentSource = this.getParentSource($source);\n        if ($parentSource) {\n          return this.getSourceData($parentSource, key);\n        }\n      }\n      return data;\n    },\n\n    /**\n     * Returns the available sort attributes for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {Object[]}\n     */\n    getSortOptions: function ($source) {\n      const sortOptions = this.getSourceData($source, 'sort-opts') || [];\n\n      // Make sure there's at least one attribute\n      if (!sortOptions.length) {\n        sortOptions.push({\n          label: Craft.t('app', 'Title'),\n          attr: 'title',\n          defaultDir: 'asc',\n        });\n      }\n\n      return sortOptions;\n    },\n\n    /**\n     * Returns info about a sort attribute.\n     * @param {string} attribute\n     * @param {jQuery} [$source]\n     * @returns {?Object}\n     */\n    getSortOption: function (attribute, $source) {\n      return (\n        this.getSortOptions($source).find((o) => o.attr === attribute) || null\n      );\n    },\n\n    /**\n     * Returns the default sort attribute and direction for a source.\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getDefaultSort: function ($source) {\n      let defaultSort = this.getSourceData($source, 'default-sort');\n      if (defaultSort) {\n        if (typeof defaultSort === 'string') {\n          defaultSort = [defaultSort];\n        }\n\n        // Make sure it's valid\n        const sortOption = this.getSortOption(defaultSort[0], $source);\n        if (sortOption) {\n          // Fill in the default direction if it's not specified\n          if (!defaultSort[1]) {\n            defaultSort[1] = sortOption.defaultDir;\n          }\n\n          return defaultSort;\n        }\n      }\n\n      // Default to the first sort option\n      const sortOptions = this.getSortOptions($source);\n      return [sortOptions[0].attr, sortOptions[0].defaultDir];\n    },\n\n    /**\n     * Returns the available table columns for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {Object[]}\n     */\n    getTableColumnOptions: function ($source) {\n      return this.getSourceData($source, 'table-col-opts') || [];\n    },\n\n    /**\n     * Returns info about a table column.\n     * @param {string} attribute\n     * @param {jQuery} [$source]\n     * @returns {?Object}\n     */\n    getTableColumnOption: function (attribute, $source) {\n      return (\n        this.getTableColumnOptions($source).find((o) => o.attr === attribute) ||\n        null\n      );\n    },\n\n    /**\n     * Returns the default table columns for a source (or the selected root source)\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getDefaultTableColumns: function ($source) {\n      return this.getSourceData($source, 'default-table-cols') || [];\n    },\n\n    /**\n     * Returns the selected sort attribute for a source\n     * @param {jQuery} [$source]\n     * @returns {string[]}\n     */\n    getSelectedTableColumns: function ($source) {\n      $source ||= this.$source;\n      if ($source) {\n        const attributes = this.getSourceState(\n          $source.data('key'),\n          'tableColumns'\n        );\n\n        if (attributes) {\n          // Only return the valid ones\n          return attributes.filter(\n            (a) => !!this.getTableColumnOption(a, $source)\n          );\n        }\n      }\n\n      return this.getDefaultTableColumns($source);\n    },\n\n    setSelectedTableColumns: function (attributes) {\n      this.setSelecetedSourceState({\n        tableColumns: attributes,\n      });\n\n      // Update the view menu\n      if (this.activeViewMenu) {\n        this.activeViewMenu.updateTableColumnField();\n      }\n    },\n\n    getViewModesForSource: function () {\n      const viewModes = [];\n\n      if (!Garnish.isMobileBrowser(true)) {\n        if (Garnish.hasAttr(this.$source, 'data-has-structure')) {\n          viewModes.push({\n            mode: 'structure',\n            title: Craft.t('app', 'Display in a structured table'),\n            icon: Craft.orientation === 'rtl' ? 'structurertl' : 'structure',\n          });\n        }\n\n        viewModes.push({\n          mode: 'table',\n          title: Craft.t('app', 'Display in a table'),\n          icon: 'list',\n        });\n      }\n\n      if (this.$source && Garnish.hasAttr(this.$source, 'data-has-thumbs')) {\n        viewModes.push({\n          mode: 'thumbs',\n          title: Craft.t('app', 'Display as thumbnails'),\n          icon: 'grid',\n        });\n      }\n\n      viewModes.push({\n        mode: 'cards',\n        title: Craft.t('app', 'Display as cards'),\n        icon: 'element-cards',\n      });\n\n      if (this.settings.allowedViewModes) {\n        return viewModes.filter((mode) =>\n          this.settings.allowedViewModes.includes(mode.mode)\n        );\n      }\n\n      return viewModes;\n    },\n\n    doesSourceHaveViewMode: function (viewMode) {\n      if (!this.sourceViewModes) {\n        return false;\n      }\n\n      for (var i = 0; i < this.sourceViewModes.length; i++) {\n        if (this.sourceViewModes[i].mode === viewMode) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    validateViewMode: function (viewMode) {\n      if (viewMode && this.doesSourceHaveViewMode(viewMode)) {\n        return viewMode;\n      }\n\n      if (this.sourceViewModes && this.sourceViewModes.length) {\n        return this.sourceViewModes[0].mode;\n      }\n\n      return this.doesSourceHaveViewMode('table') ? 'table' : 'cards';\n    },\n\n    selectViewMode: function (viewMode, force) {\n      // Make sure that the current source supports it\n      if (!force && !this.doesSourceHaveViewMode(viewMode)) {\n        viewMode = this.sourceViewModes[0].mode;\n      }\n\n      // Has anything changed?\n      if (viewMode === this._viewMode) {\n        return;\n      }\n\n      // Deselect the previous view mode\n      if (\n        this._viewMode &&\n        typeof this.viewModeBtns[this._viewMode] !== 'undefined'\n      ) {\n        this.viewModeBtns[this._viewMode]\n          .removeClass('active')\n          .attr('aria-pressed', 'false');\n      }\n\n      this._viewMode = viewMode;\n      this.setSelecetedSourceState('mode', this._viewMode);\n\n      if (typeof this.viewModeBtns[this._viewMode] !== 'undefined') {\n        this.viewModeBtns[this._viewMode]\n          .addClass('active')\n          .attr('aria-pressed', 'true');\n      }\n    },\n\n    createView: function (mode, settings) {\n      var viewClass = this.getViewClass(mode);\n      return new viewClass(this, this.$elements, settings);\n    },\n\n    getViewClass: function (mode) {\n      switch (mode) {\n        case 'table':\n        case 'structure':\n          return Craft.TableElementIndexView;\n        case 'cards':\n          return Craft.CardsElementIndexView;\n        case 'thumbs':\n          return Craft.ThumbsElementIndexView;\n        default:\n          throw `View mode \"${mode}\" not supported.`;\n      }\n    },\n\n    rememberDisabledElementId: function (id) {\n      var index = $.inArray(id, this.settings.disabledElementIds);\n\n      if (index === -1) {\n        this.settings.disabledElementIds.push(id);\n      }\n    },\n\n    forgetDisabledElementId: function (id) {\n      var index = $.inArray(id, this.settings.disabledElementIds);\n\n      if (index !== -1) {\n        this.settings.disabledElementIds.splice(index, 1);\n      }\n    },\n\n    enableElements: function ($elements) {\n      $elements\n        .removeClass('disabled')\n        .parents('.disabled')\n        .removeClass('disabled');\n\n      for (var i = 0; i < $elements.length; i++) {\n        var id = $($elements[i]).data('id');\n        this.forgetDisabledElementId(id);\n      }\n\n      this.onEnableElements($elements);\n    },\n\n    disableElements: function ($elements) {\n      $elements.removeClass('sel').addClass('disabled');\n\n      for (var i = 0; i < $elements.length; i++) {\n        var id = $($elements[i]).data('id');\n        this.rememberDisabledElementId(id);\n      }\n\n      this.onDisableElements($elements);\n    },\n\n    getElementById: function (id) {\n      return this.view.getElementById(id);\n    },\n\n    enableElementsById: function (ids) {\n      ids = $.makeArray(ids);\n\n      for (var i = 0; i < ids.length; i++) {\n        var id = ids[i],\n          $element = this.getElementById(id);\n\n        if ($element && $element.length) {\n          this.enableElements($element);\n        } else {\n          this.forgetDisabledElementId(id);\n        }\n      }\n    },\n\n    disableElementsById: function (ids) {\n      ids = $.makeArray(ids);\n\n      for (var i = 0; i < ids.length; i++) {\n        var id = ids[i],\n          $element = this.getElementById(id);\n\n        if ($element && $element.length) {\n          this.disableElements($element);\n        } else {\n          this.rememberDisabledElementId(id);\n        }\n      }\n    },\n\n    selectElementAfterUpdate: function (id) {\n      if (this._autoSelectElements === null) {\n        this._autoSelectElements = [];\n      }\n\n      this._autoSelectElements.push(id);\n    },\n\n    addButton: function ($button) {\n      this.getButtonContainer().append($button);\n    },\n\n    isShowingSidebar: function () {\n      if (this.showingSidebar === null) {\n        this.showingSidebar =\n          this.$sidebar.length && !this.$sidebar.hasClass('hidden');\n      }\n\n      return this.showingSidebar;\n    },\n\n    getButtonContainer: function () {\n      // Is there a predesignated place where buttons should go?\n      if (this.settings.buttonContainer) {\n        return $(this.settings.buttonContainer);\n      } else {\n        var $container = $(`#${this.namespaceId('action-buttons')}`);\n\n        if (!$container.length) {\n          $container = $(`<div/>`, {\n            id: this.namespaceId('action-buttons'),\n          }).appendTo($(`#${this.namespaceId('header')}`));\n        }\n\n        return $container;\n      }\n    },\n\n    setIndexBusy: function () {\n      this.$elements.addClass('busy');\n      this.$updateSpinner.appendTo(this.$elements);\n      this.isIndexBusy = true;\n\n      // Blur the active element, if it's within the element listing pane\n      if (\n        document.activeElement &&\n        this.$elements[0].contains(document.activeElement)\n      ) {\n        this._activeElement = document.activeElement;\n        document.activeElement.blur();\n      }\n\n      let elementsHeight = this.$elements.height();\n      let windowHeight = window.innerHeight;\n      let scrollTop = $(document).scrollTop();\n\n      if (this.settings.context == 'modal') {\n        windowHeight = this.$elements.parents('.modal').height();\n        scrollTop = this.$elements.scrollParent().scrollTop();\n      }\n\n      if (elementsHeight > windowHeight) {\n        let positionTop = Math.floor(scrollTop + windowHeight / 2) - 100;\n        positionTop = Math.floor((positionTop / elementsHeight) * 100);\n\n        document.documentElement.style.setProperty(\n          '--elements-busy-top-position',\n          positionTop + '%'\n        );\n      }\n      this.updateLiveRegion(Craft.t('app', 'Loading'));\n    },\n\n    setIndexAvailable: function () {\n      this.$elements.removeClass('busy');\n      this.$updateSpinner.remove();\n      this.isIndexBusy = false;\n\n      // Refocus the previously-focused element\n      if (this._activeElement) {\n        if (\n          !document.activeElement ||\n          document.activeElement === document.body\n        ) {\n          if (document.body.contains(this._activeElement)) {\n            this._activeElement.focus();\n          } else if (this._activeElement.id) {\n            $(`#${this._activeElement.id}`).focus();\n          }\n        }\n        this._activeElement = null;\n      }\n    },\n\n    createCustomizeSourcesModal: function () {\n      // Recreate it each time\n      var modal = new Craft.CustomizeSourcesModal(this, {\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        onHide: function () {\n          modal.destroy();\n        },\n      });\n\n      return modal;\n    },\n\n    disable: function () {\n      if (this.sourceNav) {\n        this.sourceNav.disable();\n      }\n\n      if (this.view) {\n        this.view.disable();\n      }\n\n      this.base();\n    },\n\n    enable: function () {\n      if (this.sourceNav) {\n        this.sourceNav.enable();\n      }\n\n      if (this.view) {\n        this.view.enable();\n      }\n\n      this.base();\n    },\n\n    onAfterInit: function () {\n      this.settings.onAfterInit();\n      this.trigger('afterInit');\n    },\n\n    onSelectSource: function () {\n      this.settings.onSelectSource(this.sourceKey);\n      this.trigger('selectSource', {sourceKey: this.sourceKey});\n    },\n\n    onSelectSite: function () {\n      this.settings.onSelectSite(this.siteId);\n      this.trigger('selectSite', {siteId: this.siteId});\n    },\n\n    onBeforeUpdateElements: function () {\n      this.settings.onBeforeUpdateElements();\n      this.trigger('beforeUpdateElements');\n    },\n\n    onUpdateElements: function () {\n      this.settings.onUpdateElements();\n      this.trigger('updateElements');\n    },\n\n    onCountResults: function () {\n      this.settings.onCountResults(\n        this.totalResults,\n        this.totalUnfilteredResults\n      );\n      this.trigger('countResults', {\n        total: this.totalResults,\n        totalUnfiltered: this.totalUnfilteredResults,\n      });\n    },\n\n    onSelectionChange: function () {\n      this.settings.onSelectionChange();\n      this.trigger('selectionChange');\n    },\n\n    onEnableElements: function ($elements) {\n      this.settings.onEnableElements($elements);\n      this.trigger('enableElements', {elements: $elements});\n    },\n\n    onDisableElements: function ($elements) {\n      this.settings.onDisableElements($elements);\n      this.trigger('disableElements', {elements: $elements});\n    },\n\n    onAfterAction: function (action, params) {\n      this.settings.onAfterAction(action, params);\n      this.trigger('afterAction', {action: action, params: params});\n    },\n\n    // UI state handlers\n    // -------------------------------------------------------------------------\n\n    _handleSourceSelectionChange: function (event) {\n      // If the selected source was just removed (maybe because its parent was collapsed),\n      // there won't be a selected source\n\n      if (!this.sourceNav.$selectedItem) {\n        this.sourceNav.selectItem(this.$visibleSources.first());\n        return;\n      }\n\n      if (this.selectSource(this.sourceNav.$selectedItem)) {\n        this.updateElements();\n      }\n    },\n\n    _handleActionTriggerSubmit: function (ev) {\n      ev.preventDefault();\n\n      const $form = $(ev.currentTarget);\n\n      // Make sure Craft.ElementActionTrigger isn't overriding this\n      if ($form.hasClass('disabled') || $form.data('custom-handler')) {\n        return;\n      }\n\n      this._submitActionInternal(\n        $form.data('action'),\n        $form.data('trigger') && $form.data('trigger').data('trigger'),\n        Garnish.getPostData($form)\n      );\n    },\n\n    _handleMenuActionTriggerSubmit: function (ev) {\n      const $option = $(ev.option);\n\n      // Make sure Craft.ElementActionTrigger isn't overriding this\n      if ($option.hasClass('disabled') || $option.data('custom-handler')) {\n        return;\n      }\n\n      this._submitActionInternal(\n        $option.data('action'),\n        $option.data('trigger')\n      );\n    },\n\n    _submitActionInternal: async function (action, trigger, actionParams) {\n      const $selectedElements = this.getSelectedElements();\n\n      await this.submitAction(action, actionParams, async () => {\n        if (trigger) {\n          await trigger.settings.beforeActivate($selectedElements, this);\n        }\n      });\n\n      if (trigger) {\n        await trigger.settings.afterActivate($selectedElements, this);\n      }\n    },\n\n    _handleStatusChange: function (ev) {\n      this.statusMenu.$options.removeClass('sel');\n      var $option = $(ev.selectedOption).addClass('sel');\n      this.$statusMenuBtn.html($option.html());\n\n      this.trashed = false;\n      this.drafts = false;\n      this.status = null;\n      let queryParam = null;\n\n      if (Garnish.hasAttr($option, 'data-trashed')) {\n        this.trashed = true;\n        queryParam = 'trashed';\n      } else if (Garnish.hasAttr($option, 'data-drafts')) {\n        this.drafts = true;\n        queryParam = 'drafts';\n      } else {\n        this.status = queryParam = $option.data('status') || null;\n      }\n\n      if (this.settings.context === 'index') {\n        Craft.setQueryParam('status', queryParam);\n      }\n\n      this.updateElements();\n    },\n\n    _handleSiteChange: function (ev) {\n      this.siteMenu.$options.removeClass('sel');\n      var $option = $(ev.selectedOption).addClass('sel');\n      this.$siteMenuBtn.html($option.html());\n      this._setSite($option.data('site-id'));\n      if (this.initialized) {\n        this.updateElements();\n      }\n      this.onSelectSite();\n    },\n\n    _setSite: function (siteId) {\n      let firstSite = this.siteId === null;\n      this.siteId = siteId;\n\n      this.updateSourceVisibility();\n\n      if (\n        this.initialized &&\n        !firstSite &&\n        (!this.$source || !this.$source.length) &&\n        this.$visibleSources.length\n      ) {\n        this.selectSource(this.$visibleSources[0]);\n      }\n\n      // Hide any empty-nester headings\n      var $headings = this.getSourceContainer().children('.heading');\n      var $heading;\n\n      for (let i = 0; i < $headings.length; i++) {\n        $heading = $headings.eq(i);\n        if ($heading.has('> ul > li:not(.hidden)').length !== 0) {\n          $heading.removeClass('hidden');\n        } else {\n          $heading.addClass('hidden');\n        }\n      }\n\n      if (this.initialized) {\n        if (this.settings.context === 'index') {\n          // Remember this site for later\n          Craft.cp.setSiteId(siteId);\n        }\n\n        this.updateFilterBtn();\n      }\n    },\n\n    updateSourceVisibility: function () {\n      this.$visibleSources = $();\n\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = this.$sources.eq(i);\n\n        if (\n          !Garnish.hasAttr($source, 'data-disabled') &&\n          (typeof $source.data('sites') === 'undefined' ||\n            $source\n              .data('sites')\n              .toString()\n              .split(',')\n              .some((siteId) => {\n                if (siteId == this.siteId) {\n                  return true;\n                }\n                // maybe UUIDs were used\n                if (siteId != parseInt(siteId)) {\n                  const site = Craft.sites.find(\n                    (site) => site.id == this.siteId\n                  );\n                  if (site && siteId == site.uid) {\n                    return true;\n                  }\n                }\n\n                return false;\n              }))\n        ) {\n          $source.parent().removeClass('hidden');\n          this.$visibleSources = this.$visibleSources.add($source);\n        } else {\n          $source.parent().addClass('hidden');\n\n          // Is this the currently selected source?\n          if (this.$source && this.$source.get(0) === $source.get(0)) {\n            this.$source = null;\n            this.$rootSource = null;\n            this.sourceKey = null;\n            this.rootSourceKey = null;\n          }\n        }\n      }\n    },\n\n    _handleSelectionChange: function () {\n      this.updateSelectAllCheckbox();\n      this.updateActionTriggers();\n      this.onSelectionChange();\n    },\n\n    _handleSourceDblClick: function (ev) {\n      this._toggleSource($(ev.currentTarget));\n      ev.stopPropagation();\n    },\n\n    _handleSourceToggleClick: function (ev) {\n      this._toggleSource($(ev.currentTarget).prev('a'));\n      ev.stopPropagation();\n    },\n\n    // Source management\n    // -------------------------------------------------------------------------\n\n    _getSourcesInList: function ($list, topLevel) {\n      let $sources = $list.find('> li:not(.heading) > a');\n      if (topLevel) {\n        $sources = $sources.add($list.find('> li.heading > ul > li > a'));\n      }\n      return $sources;\n    },\n\n    _getChildSources: function ($source) {\n      var $list = $source.siblings('ul');\n      return this._getSourcesInList($list);\n    },\n\n    _getSourceToggle: function ($source) {\n      return $source.siblings('.toggle');\n    },\n\n    _toggleSource: function ($source) {\n      if ($source.parent('li').hasClass('expanded')) {\n        this._collapseSource($source);\n      } else {\n        this._expandSource($source);\n      }\n    },\n\n    _expandSource: function ($source) {\n      $source.next('.toggle').attr({\n        'aria-expanded': 'true',\n      });\n      $source.parent('li').addClass('expanded');\n\n      var $childSources = this._getChildSources($source);\n      for (let i = 0; i < $childSources.length; i++) {\n        this.initSource($($childSources[i]));\n        if (this.$visibleSources) {\n          this.$visibleSources = this.$visibleSources.add($childSources[i]);\n        }\n      }\n\n      var key = $source.data('key');\n      if (this.instanceState.expandedSources.indexOf(key) === -1) {\n        this.instanceState.expandedSources.push(key);\n        this.storeInstanceState();\n      }\n    },\n\n    _collapseSource: function ($source) {\n      $source.next('.toggle').attr({\n        'aria-expanded': 'false',\n        'aria-label': Craft.t('app', 'Show nested sources'),\n      });\n      $source.parent('li').removeClass('expanded');\n\n      var $childSources = this._getChildSources($source);\n      for (let i = 0; i < $childSources.length; i++) {\n        this.deinitSource($($childSources[i]));\n        this.$visibleSources = this.$visibleSources.not($childSources[i]);\n      }\n\n      var i = this.instanceState.expandedSources.indexOf($source.data('key'));\n      if (i !== -1) {\n        this.instanceState.expandedSources.splice(i, 1);\n        this.storeInstanceState();\n      }\n    },\n\n    // View\n    // -------------------------------------------------------------------------\n\n    async _updateView(params, response) {\n      // Cleanup\n      // -------------------------------------------------------------\n\n      // Get rid of the old action triggers regardless of whether the new batch has actions or not\n      if (this.actions) {\n        this.hideActionTriggers();\n\n        if (this.triggers) {\n          for (let trigger of this.triggers) {\n            trigger.destroy();\n          }\n        }\n\n        this.actions =\n          this.actionsHeadHtml =\n          this.actionsBodyHtml =\n          this.triggers =\n          this._$triggers =\n          this.$actionMenuBtn =\n            null;\n      }\n\n      // Update the count text\n      // -------------------------------------------------------------\n\n      if (this.$countContainer.length) {\n        this.$countSpinner.removeClass('hidden');\n        this.$countContainer.html('');\n\n        this._countResults()\n          .then((total) => {\n            this.$countSpinner.addClass('hidden');\n            const itemLabel = this.getItemLabel();\n            const itemsLabel = this.getItemsLabel();\n\n            if (!this.paginated) {\n              let countLabel = Craft.t(\n                'app',\n                '{total, number} {total, plural, =1{{item}} other{{items}}}',\n                {\n                  total: total,\n                  item: itemLabel,\n                  items: itemsLabel,\n                }\n              );\n              this.$countContainer.text(countLabel);\n            } else {\n              const first = this.getFirstItemNumber(total);\n              const last = this.getLastItemNumber(first, total);\n              let countLabel = Craft.t(\n                'app',\n                '{first, number}-{last, number} of {total, number} {total, plural, =1{{item}} other{{items}}}',\n                {\n                  first: first,\n                  last: last,\n                  total: total,\n                  item: itemLabel,\n                  items: itemsLabel,\n                }\n              );\n\n              let $paginationContainer = $(\n                '<div class=\"flex pagination\"/>'\n              ).appendTo(this.$countContainer);\n              let totalPages = Math.max(\n                Math.ceil(total / this.settings.batchSize),\n                1\n              );\n\n              const $paginationNav = $('<nav/>', {\n                class: 'flex',\n                'aria-label': Craft.t('app', '{element} pagination', {\n                  element: itemLabel,\n                }),\n              }).appendTo($paginationContainer);\n\n              let $prevBtn = $('<button/>', {\n                type: 'button',\n                role: 'button',\n                class:\n                  'page-link prev-page' + (this.page > 1 ? '' : ' disabled'),\n                disabled: this.page === 1,\n                title: Craft.t('app', 'Previous Page'),\n              }).appendTo($paginationNav);\n              let $nextBtn = $('<button/>', {\n                type: 'button',\n                role: 'button',\n                class:\n                  'page-link next-page' +\n                  (this.page < totalPages ? '' : ' disabled'),\n                disabled: this.page === totalPages,\n                title: Craft.t('app', 'Next Page'),\n              }).appendTo($paginationNav);\n\n              $('<div/>', {\n                class: 'page-info',\n                text: countLabel,\n              }).appendTo($paginationContainer);\n\n              if (this.page > 1) {\n                this.addListener($prevBtn, 'click', function () {\n                  this.removeListener($prevBtn, 'click');\n                  this.removeListener($nextBtn, 'click');\n                  this.setPage(this.page - 1);\n                  this.updateElements(true);\n                });\n              }\n\n              if (this.page < totalPages) {\n                this.addListener($nextBtn, 'click', function () {\n                  this.removeListener($prevBtn, 'click');\n                  this.removeListener($nextBtn, 'click');\n                  this.setPage(this.page + 1);\n                  this.updateElements(true);\n                });\n              }\n            }\n          })\n          .catch(() => {\n            this.$countSpinner.addClass('hidden');\n          });\n      }\n\n      // Update the view with the new container + elements HTML\n      // -------------------------------------------------------------\n\n      this.$elements.html(response.html);\n      await Craft.appendHeadHtml(response.headHtml);\n      await Craft.appendBodyHtml(response.bodyHtml);\n\n      // Batch actions setup\n      // -------------------------------------------------------------\n\n      this.$selectAllContainer = this.$elements.find(\n        '.selectallcontainer:first'\n      );\n\n      if (this.multiSelect || (response.actions && response.actions.length)) {\n        if (this.$selectAllContainer.length) {\n          if (response.actions && response.actions.length) {\n            this.actions = response.actions;\n            this.actionsHeadHtml = response.actionsHeadHtml;\n            this.actionsBodyHtml = response.actionsBodyHtml;\n          }\n\n          if (this.settings.actions && this.settings.actions.length) {\n            if (!this.actions) {\n              this.actions = [];\n            }\n\n            for (let action of this.settings.actions) {\n              // clone it so bodyHtml doesn't make it into this.actions\n              action = Object.assign({}, action);\n              if (action.bodyHtml) {\n                this.actionsBodyHtml += action.bodyHtml;\n                delete action.bodyHtml;\n              }\n              this.actions.push(action);\n            }\n          }\n\n          // Create the select all checkbox\n          this.$selectAllCheckbox = $('<div class=\"checkbox\"/>')\n            .prependTo(this.$selectAllContainer)\n            .attr({\n              role: 'checkbox',\n              tabindex: '0',\n              'aria-checked': 'false',\n              'aria-label': Craft.t('app', 'Select all'),\n            });\n\n          this.addListener(this.$selectAllContainer, 'click', function () {\n            if (this.view.getSelectedElements().length === 0) {\n              this.view.selectAllElements();\n            } else {\n              this.view.deselectAllElements();\n            }\n          });\n\n          this.addListener(this.$selectAllCheckbox, 'keydown', function (ev) {\n            if (ev.keyCode === Garnish.SPACE_KEY) {\n              ev.preventDefault();\n\n              $(ev.currentTarget).trigger('click');\n            }\n          });\n        }\n      } else if (this.$selectAllContainer.prop('nodeName') !== 'TH') {\n        if (!this.$selectAllContainer.siblings().length) {\n          this.$selectAllContainer.parent('.header').remove();\n        }\n        this.$selectAllContainer.remove();\n      }\n\n      // Exporters setup\n      // -------------------------------------------------------------\n\n      this.exporters = response.exporters;\n      this.exportersByType = Craft.index(this.exporters || [], (e) => e.type);\n\n      if (this.exporters && this.exporters.length) {\n        this.$exportBtn.removeClass('hidden');\n      } else {\n        this.$exportBtn.addClass('hidden');\n      }\n\n      // Create the view\n      // -------------------------------------------------------------\n\n      const settings = Object.assign(\n        {\n          context: this.settings.context,\n          batchSize:\n            this.isAdministrative || this.viewMode === 'structure'\n              ? this.settings.batchSize\n              : null,\n          params: params,\n          selectable: this.selectable,\n          multiSelect: this.multiSelect,\n          canSelectElement: this.settings.canSelectElement,\n          checkboxMode: this.selectable,\n          waitForDoubleClicks: this.settings.waitForDoubleClicks,\n          sortable: this.sortable,\n          onSelectionChange: this._handleSelectionChange.bind(this),\n          onSortChange: this.settings.onSortChange,\n        },\n        this.getViewSettings()\n      );\n\n      // Kill the old view class\n      if (this.view) {\n        this.view.destroy();\n        delete this.view;\n      }\n\n      this.view = this.createView(this.getSelectedViewMode(), settings);\n\n      // Auto-select elements\n      // -------------------------------------------------------------\n\n      if (this._autoSelectElements) {\n        if (this.selectable) {\n          for (var i = 0; i < this._autoSelectElements.length; i++) {\n            this.view.selectElementById(this._autoSelectElements[i]);\n          }\n        }\n\n        this._autoSelectElements = null;\n      }\n\n      // Trigger the event\n      // -------------------------------------------------------------\n\n      this.onUpdateElements();\n    },\n\n    _updateBadgeCounts: function (badgeCounts) {\n      for (let sourceKey in badgeCounts) {\n        if (badgeCounts.hasOwnProperty(sourceKey)) {\n          const $source = this.getSourceByKey(sourceKey);\n          if ($source) {\n            let $badge = $source.children('.badge');\n            if (badgeCounts[sourceKey] !== null) {\n              if (!$badge.length) {\n                $badge = $('<span class=\"badge\"/>').appendTo($source);\n              }\n              $badge.text(badgeCounts[sourceKey]);\n            } else if ($badge) {\n              $badge.remove();\n            }\n          }\n        }\n      }\n    },\n\n    _countResults: function () {\n      return new Promise((resolve, reject) => {\n        if (this.totalResults !== null) {\n          resolve(this.totalResults, this.totalUnfilteredResults);\n          this.onCountResults();\n        } else {\n          var params = this.getViewParams();\n          delete params.baseCriteria.offset;\n          delete params.baseCriteria.limit;\n\n          // Make sure we've got an active result set ID\n          if (this.resultSet === null) {\n            this.resultSet = Math.floor(Math.random() * 100000000);\n          }\n          params.resultSet = this.resultSet;\n\n          Craft.sendActionRequest('POST', this.settings.countElementsAction, {\n            data: params,\n            cancelToken: this._createCancelToken(),\n          })\n            .then((response) => {\n              if (response.data.resultSet == this.resultSet) {\n                this.totalResults = response.data.total;\n                this.totalUnfilteredResults = response.data.unfilteredTotal;\n                resolve(this.totalResults, this.totalUnfilteredResults);\n                this.onCountResults();\n              } else {\n                reject();\n              }\n            })\n            .catch(reject);\n        }\n      });\n    },\n\n    _createTriggers: async function () {\n      this.triggers = [];\n      this._$triggers = $();\n      const safeMenuActions = [];\n      const destructiveMenuActions = [];\n\n      for (let i = 0; i < this.actions.length; i++) {\n        const action = this.actions[i];\n\n        if (action.trigger) {\n          const $trigger = $('<div/>', {\n            id: `${this.namespaceId(action.type)}-actiontrigger`,\n          }).append(action.trigger);\n          $trigger.find('.btn').addClass('secondary');\n\n          // Add any active inputs to action.settings,\n          // and remove their input names so they don't muck up the parent form\n          if (!action.settings) {\n            action.settings = {};\n          }\n          $.extend(\n            action.settings,\n            Craft.expandPostArray(Garnish.getPostData($trigger))\n          );\n          $trigger.find('[name]').removeAttr('name');\n\n          // create a new form at the end of the DOM, in case the element index is within another form\n          const formId = `element-action-form-${Math.floor(\n            Math.random() * 1000000\n          )}`;\n          const $form = $('<form/>', {\n            id: formId,\n            method: 'post',\n            action: '',\n            class: 'hidden',\n            data: {action},\n          }).appendTo(Garnish.$bod);\n\n          // redirect all submits to the remote form\n          $trigger\n            .find('button[type=submit],input[type=submit],.formsubmit')\n            .addClass('formsubmit')\n            .attr('data-form', formId);\n\n          $form.data('trigger', $trigger);\n\n          this.addListener($form, 'submit', '_handleActionTriggerSubmit');\n          this._$triggers = this._$triggers.add($trigger);\n        } else {\n          if (!action.destructive) {\n            safeMenuActions.push(action);\n          } else {\n            destructiveMenuActions.push(action);\n          }\n        }\n      }\n\n      if (safeMenuActions.length || destructiveMenuActions.length) {\n        const $menuTrigger = $('<form/>');\n\n        this.$actionMenuBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn secondary menubtn',\n          'data-icon': 'settings',\n          title: Craft.t('app', 'Actions'),\n        }).appendTo($menuTrigger);\n\n        const $menu = $('<ul class=\"menu\"/>').appendTo($menuTrigger),\n          $safeList = this._createMenuTriggerList(safeMenuActions, false),\n          $destructiveList = this._createMenuTriggerList(\n            destructiveMenuActions,\n            true\n          );\n\n        if ($safeList) {\n          $safeList.appendTo($menu);\n        }\n\n        if ($safeList && $destructiveList) {\n          $('<hr/>').appendTo($menu);\n        }\n\n        if ($destructiveList) {\n          $destructiveList.appendTo($menu);\n        }\n\n        this._$triggers = this._$triggers.add($menuTrigger);\n      }\n\n      this._$triggers.appendTo(this.$actionsContainer);\n\n      if (this.isAdministrative) {\n        // set Craft.currentElementIndex for actions\n        Craft.currentElementIndex = this;\n      }\n\n      await Craft.appendHeadHtml(this.actionsHeadHtml);\n      await Craft.appendBodyHtml(this.actionsBodyHtml);\n\n      Craft.initUiElements(this._$triggers);\n\n      if (this.$actionMenuBtn) {\n        this.$actionMenuBtn\n          .data('menubtn')\n          .on('optionSelect', this._handleMenuActionTriggerSubmit.bind(this));\n      }\n    },\n\n    _showExportHud: function () {\n      this.$exportBtn.addClass('active');\n      this.$exportBtn.attr('aria-expanded', 'true');\n\n      var $form = $('<form/>', {\n        class: 'export-form',\n      });\n\n      var typeOptions = [];\n      for (var i = 0; i < this.exporters.length; i++) {\n        typeOptions.push({\n          label: this.exporters[i].name,\n          value: this.exporters[i].type,\n        });\n      }\n      var $typeField = Craft.ui\n        .createSelectField({\n          label: Craft.t('app', 'Export Type'),\n          options: typeOptions,\n          class: 'fullwidth',\n        })\n        .appendTo($form);\n\n      var $formatField = Craft.ui\n        .createSelectField({\n          label: Craft.t('app', 'Format'),\n          options: [\n            {label: 'CSV', value: 'csv'},\n            {label: 'JSON', value: 'json'},\n            {label: 'XML', value: 'xml'},\n          ],\n          class: 'fullwidth',\n        })\n        .appendTo($form);\n\n      let $typeSelect = $typeField.find('select');\n      this.addListener($typeSelect, 'change', () => {\n        let type = $typeSelect.val();\n        if (this.exportersByType[type].formattable) {\n          $formatField.removeClass('hidden');\n        } else {\n          $formatField.addClass('hidden');\n        }\n      });\n      $typeSelect.trigger('change');\n\n      // Only show the Limit field if there aren't any selected elements\n      var selectedElementIds = this.view.getSelectedElementIds();\n\n      if (!selectedElementIds.length) {\n        var $limitField = Craft.ui\n          .createTextField({\n            label: Craft.t('app', 'Limit'),\n            placeholder: Craft.t('app', 'No limit'),\n            type: 'number',\n            min: 1,\n          })\n          .appendTo($form);\n      }\n\n      const $submitBtn = Craft.ui\n        .createSubmitButton({\n          class: 'fullwidth',\n          label: Craft.t('app', 'Export'),\n          spinner: true,\n        })\n        .appendTo($form);\n\n      const $exportSubmit = new Garnish.MultiFunctionBtn($submitBtn);\n\n      var hud = new Garnish.HUD(this.$exportBtn, $form);\n\n      hud.on('hide', () => {\n        this.$exportBtn.removeClass('active');\n        this.$exportBtn.attr('aria-expanded', 'false');\n      });\n\n      var submitting = false;\n\n      this.addListener($form, 'submit', function (ev) {\n        ev.preventDefault();\n        if (submitting) {\n          return;\n        }\n\n        submitting = true;\n        $exportSubmit.busyEvent();\n\n        var params = this.getViewParams();\n        delete params.baseCriteria.offset;\n        delete params.baseCriteria.limit;\n        delete params.collapsedElementIds;\n\n        params.type = $typeField.find('select').val();\n        params.format = $formatField.find('select').val();\n\n        if (selectedElementIds.length) {\n          params.criteria.id = selectedElementIds;\n        } else {\n          var limit = parseInt($limitField.find('input').val());\n          if (limit && !isNaN(limit)) {\n            params.criteria.limit = limit;\n          }\n        }\n\n        if (Craft.csrfTokenValue) {\n          params[Craft.csrfTokenName] = Craft.csrfTokenValue;\n        }\n\n        Craft.downloadFromUrl(\n          'POST',\n          Craft.getActionUrl('element-indexes/export'),\n          params\n        )\n          .catch((e) => {\n            if (!axios.isCancel(e)) {\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n            }\n          })\n          .finally(() => {\n            submitting = false;\n            $exportSubmit.successEvent();\n          });\n      });\n    },\n\n    _createMenuTriggerList: function (actions, destructive) {\n      if (actions && actions.length) {\n        const $ul = $('<ul/>');\n\n        for (let action of actions) {\n          $('<li/>')\n            .append(\n              $('<a/>', {\n                id: `${this.namespaceId(action.type)}-actiontrigger`,\n                class: destructive ? 'error' : null,\n                data: {action},\n                text: action.name,\n              })\n            )\n            .appendTo($ul);\n        }\n\n        return $ul;\n      }\n    },\n\n    filterHudExists: function () {\n      return (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey]\n      );\n    },\n\n    showFilterHud: function () {\n      if (!this.filterHudExists()) {\n        this.createFilterHud();\n      } else {\n        this.filterHuds[this.siteId][this.sourceKey].show();\n      }\n    },\n\n    createFilterHud: function (settings) {\n      if (!this.filterHuds[this.siteId]) {\n        this.filterHuds[this.siteId] = {};\n      }\n\n      this.filterHuds[this.siteId][this.sourceKey] = new FilterHud(\n        this,\n        this.sourceKey,\n        this.siteId,\n        settings\n      );\n\n      this.updateFilterBtn();\n    },\n\n    updateFilterBtn: function () {\n      this.$filterBtn.removeClass('active');\n\n      if (this.settings.context === 'index') {\n        Craft.setQueryParam('filters', null);\n      }\n\n      if (\n        this.filterHuds[this.siteId] &&\n        this.filterHuds[this.siteId][this.sourceKey]\n      ) {\n        this.$filterBtn\n          .attr(\n            'aria-controls',\n            this.filterHuds[this.siteId][this.sourceKey].id\n          )\n          .attr(\n            'aria-expanded',\n            this.filterHuds[this.siteId][this.sourceKey].showing\n              ? 'true'\n              : 'false'\n          );\n\n        if (this.hasActiveFilter) {\n          this.$filterBtn.addClass('active');\n\n          if (this.settings.context === 'index') {\n            Craft.setQueryParam(\n              'filters',\n              this.filterHuds[this.siteId][this.sourceKey].serialized\n            );\n          }\n        }\n      } else {\n        this.$filterBtn.attr('aria-controls', null);\n      }\n    },\n  },\n  {\n    defaults: {\n      context: 'index',\n      namespace: null,\n      modal: null,\n      storageKey: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      allowedViewModes: null,\n      showHeaderColumn: true,\n      criteria: null,\n      batchSize: 100,\n      disabledElementIds: [],\n      selectable: false,\n      multiSelect: false,\n      waitForDoubleClicks: false,\n      canSelectElement: null,\n      canDuplicateElements: (selectedItems) => true,\n      onBeforeDuplicateElements: async (selectedItems) => {},\n      onDuplicateElements: async (selectedItems) => {},\n      canDeleteElements: (selectedItems) => true,\n      onBeforeDeleteElements: async (selectedItems) => {},\n      onDeleteElements: async (selectedItems) => {},\n      sortable: false,\n      inlineEditable: null,\n      actions: null,\n      buttonContainer: null,\n      hideSidebar: false,\n      toolbarSelector: '.toolbar:first',\n      refreshSourcesAction: 'element-indexes/get-source-tree-html',\n      updateElementsAction: 'element-indexes/get-elements',\n      countElementsAction: 'element-indexes/count-elements',\n      submitActionsAction: 'element-indexes/perform-action',\n      defaultSiteId: null,\n      defaultSource: null,\n      defaultSourcePath: null,\n      preferStoredSource: false,\n      showSourcePath: true,\n      canHaveDrafts: false,\n\n      elementTypeName: Craft.t('app', 'Element'),\n      elementTypePluralName: Craft.t('app', 'Elements'),\n\n      onAfterInit: $.noop,\n      onSelectSource: $.noop,\n      onSelectSite: $.noop,\n      onBeforeUpdateElements: $.noop,\n      onUpdateElements: $.noop,\n      onCountResults: $.noop,\n      onSelectionChange: $.noop,\n      onSourcePathChange: $.noop,\n      onEnableElements: $.noop,\n      onDisableElements: $.noop,\n      onAfterAction: $.noop,\n      onSortChange: $.noop,\n    },\n  }\n);\n\nconst SourceNav = Garnish.Base.extend(\n  {\n    $container: null,\n    $items: null,\n    $selectedItem: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      const items = this.$container.find('[data-source-item]');\n\n      this.setSettings(settings, SourceNav.defaults);\n\n      this.$items = $();\n      this.addItems(items);\n    },\n\n    addItems: function (items) {\n      const $items = $(items);\n\n      for (var i = 0; i < $items.length; i++) {\n        const item = $items[i];\n\n        this.addListener(item, 'click', this.handleClick.bind(this));\n        this.addListener(item, 'keydown', this.handleKeypress.bind(this));\n      }\n\n      this.$items = this.$items.add($items);\n    },\n\n    /**\n     * Remove All Items\n     */\n    removeAllItems: function () {\n      for (var i = 0; i < this.$items.length; i++) {\n        this._deinitItem(this.$items[i]);\n      }\n\n      this.$items = $();\n      this.$selectedItem = $();\n    },\n\n    handleKeypress: function (event) {\n      const {keyCode} = event;\n\n      if (keyCode === Garnish.RETURN_KEY || keyCode === Garnish.SPACE_KEY) {\n        event.preventDefault();\n        this.selectItem(event.target);\n      }\n    },\n\n    handleClick: function (event) {\n      const $item = this.getClosestItem(event.target);\n\n      this.selectItem($item);\n    },\n\n    getClosestItem: function (element) {\n      return $(element).closest('[data-source-item]');\n    },\n\n    selectItem: function (item) {\n      if (item.length === 0) {\n        return;\n      }\n\n      const $item = $(item);\n      this.deselectAll();\n\n      this.$selectedItem = $item\n        .attr('aria-current', 'true')\n        .addClass(this.settings.selectedClass);\n\n      this.onSelectionChange();\n    },\n\n    deselectAll: function () {\n      this.$items\n        .attr('aria-current', 'false')\n        .removeClass(this.settings.selectedClass);\n\n      this.onSelectionChange();\n    },\n\n    removeItems: function (items) {\n      let selectedItem;\n\n      items = $.makeArray(items);\n\n      let itemsChanged = false,\n        selectionChanged = false;\n\n      for (let i = 0; i < items.length; i++) {\n        const item = items[i];\n\n        // Is this item in the list of navigation items?\n        const index = $.inArray(item, this.$items);\n\n        // Yes! Then deinitialize the item and remove it from the list\n        if (index !== -1) {\n          this._deinitItem(item);\n          this.$items.splice(index, 1);\n          itemsChanged = true;\n\n          // One of the items is currently selected\n          if ($(item).is(this.$selectedItem)) {\n            selectionChanged = true;\n            this.$selectedItem = null;\n          }\n        }\n      }\n\n      if (itemsChanged) {\n        if (selectionChanged) {\n          $(items).removeClass(this.settings.selectedClass);\n          this.onSelectionChange();\n        }\n      }\n    },\n\n    onSelectionChange: function () {\n      if (this.callbackFrame) {\n        Garnish.cancelAnimationFrame(this.callbackFrame);\n        this.callbackFrame = null;\n      }\n\n      this.callbackFrame = Garnish.requestAnimationFrame(\n        function () {\n          this.callbackFrame = null;\n          this.trigger('selectionChange');\n          this.settings.onSelectionChange();\n        }.bind(this)\n      );\n    },\n\n    _deinitItem: function (item) {\n      const $item = $(item);\n      this.removeAllListeners($item);\n    },\n  },\n  {\n    defaults: {\n      selectedClass: 'sel',\n      onSelectionChange: $.noop,\n    },\n  }\n);\n\nconst ViewMenu = Garnish.Base.extend({\n  elementIndex: null,\n  $source: null,\n  sourceKey: null,\n  menu: null,\n  id: null,\n\n  $trigger: null,\n  $container: null,\n  $sortField: null,\n  $sortAttributeSelect: null,\n  $sortDirectionPicker: null,\n  sortDirectionListbox: null,\n  $tableColumnsField: null,\n  $tableColumnsContainer: null,\n  $revertContainer: null,\n  $revertBtn: null,\n  $closeBtn: null,\n\n  init: function (elementIndex, $source) {\n    this.elementIndex = elementIndex;\n    this.$source = $source;\n    this.sourceKey = $source.data('key');\n    this.id = `view-menu-${Math.floor(Math.random() * 1000000000)}`;\n\n    this.$trigger = $('<button/>', {\n      type: 'button',\n      class: 'btn menubtn hidden',\n      text: Craft.t('app', 'View'),\n      'aria-label': Craft.t('app', 'View settings'),\n      'aria-controls': this.id,\n      'data-icon': 'sliders',\n    }).appendTo(this.elementIndex.$toolbar);\n\n    this.$container = $('<div/>', {\n      id: this.id,\n      class: 'menu menu--disclosure element-index-view-menu',\n      'data-align': 'right',\n    }).appendTo(Garnish.$bod);\n\n    this._buildMenu();\n\n    this.addListener(this.$container, 'mousedown', (ev) => {\n      ev.stopPropagation();\n    });\n\n    this.menu = new Garnish.DisclosureMenu(this.$trigger);\n\n    this.menu.on('show', () => {\n      this.$trigger.addClass('active');\n      this.updateSortField();\n      this.updateTableFieldVisibility();\n    });\n\n    this.menu.on('hide', () => {\n      this.$trigger.removeClass('active');\n\n      // Move all checked table column checkboxes to the top once it's fully faded out\n      setTimeout(() => {\n        this.tidyTableColumnField();\n      }, Garnish.FX_DURATION);\n    });\n  },\n\n  showTrigger: function () {\n    this.$trigger.removeClass('hidden');\n  },\n\n  hideTrigger: function () {\n    this.$trigger.data('trigger').hide();\n    this.$trigger.addClass('hidden');\n    this.menu.hide();\n  },\n\n  updateTableFieldVisibility: function () {\n    // we only want to show the \"Table Columns\" checkboxes and \"Use defaults\" btn in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      if (this.$tableColumnsContainer) {\n        this.$tableColumnsContainer\n          .closest('.table-columns-field')\n          .addClass('hidden');\n      }\n      if (this.$revertBtn) {\n        this.$revertBtn.addClass('hidden');\n      }\n    } else {\n      if (this.$tableColumnsContainer) {\n        this.$tableColumnsContainer\n          .closest('.table-columns-field')\n          .removeClass('hidden');\n      }\n      if (this.$revertBtn) {\n        this.$revertBtn.removeClass('hidden');\n      }\n    }\n  },\n\n  updateSortField: function () {\n    if (this.elementIndex.settings.sortable) {\n      return;\n    }\n\n    if (this.$sortField) {\n      if (this.elementIndex.viewMode === 'structure') {\n        this.$sortField.addClass('hidden');\n        if (this.$tableColumnsField) {\n          this.$tableColumnsField.addClass('first-child');\n        }\n      } else {\n        this.$sortField.removeClass('hidden');\n        if (this.$tableColumnsField) {\n          this.$tableColumnsField.removeClass('first-child');\n        }\n      }\n    }\n\n    let [attribute, direction] =\n      this.elementIndex.getSortAttributeAndDirection();\n\n    // Add/remove a score option\n    const $scoreOption = this.$sortAttributeSelect.children(\n      'option[value=\"score\"]'\n    );\n\n    // If searching by score, just keep showing the actual selection\n    if (this.elementIndex.searching) {\n      if (!$scoreOption.length) {\n        this.$sortAttributeSelect.prepend(\n          $('<option/>', {\n            value: 'score',\n            text: Craft.t('app', 'Score'),\n          })\n        );\n      }\n    } else if ($scoreOption.length) {\n      $scoreOption.remove();\n    }\n\n    this.$sortAttributeSelect.val(attribute);\n    this.sortDirectionListbox.select(direction === 'asc' ? 0 : 1);\n\n    if (attribute === 'score') {\n      this.sortDirectionListbox.disable();\n      this.$sortDirectionPicker.addClass('disabled');\n    } else {\n      this.sortDirectionListbox.enable();\n      this.$sortDirectionPicker.removeClass('disabled');\n    }\n  },\n\n  updateTableColumnField: function () {\n    if (!this.$tableColumnsContainer) {\n      return;\n    }\n\n    const attributes = this.elementIndex.getSelectedTableColumns();\n    let $lastContainer, lastIndex;\n\n    attributes.forEach((attribute) => {\n      const $checkbox = this.$tableColumnsContainer.find(\n        `input[value=\"${attribute}\"]`\n      );\n      if (!$checkbox.prop('checked')) {\n        $checkbox.prop('checked', true);\n      }\n      const $container = $checkbox.parent();\n\n      // Do we need to move it up?\n      if ($lastContainer && $container.index() < lastIndex) {\n        $container.insertAfter($lastContainer);\n      }\n\n      $lastContainer = $container;\n      lastIndex = $container.index();\n    });\n\n    // See if we need to uncheck any checkboxes\n    const $checkboxes = this._getTableColumnCheckboxes();\n    for (let i = 0; i < $checkboxes.length; i++) {\n      const $checkbox = $checkboxes.eq(i);\n      if ($checkbox.prop('checked') && !attributes.includes($checkbox.val())) {\n        $checkbox.prop('checked', false);\n      }\n    }\n  },\n\n  tidyTableColumnField: function () {\n    if (!this.$tableColumnsContainer) {\n      return;\n    }\n\n    const defaultOrder = this.elementIndex\n      .getTableColumnOptions(this.$source)\n      .map((column) => column.attr)\n      .reduce((obj, attr, index) => {\n        return {...obj, [attr]: index};\n      }, {});\n\n    this.$tableColumnsContainer\n      .children()\n      .sort((a, b) => {\n        const checkboxA = $(a).children('input[type=\"checkbox\"]')[0];\n        const checkboxB = $(b).children('input[type=\"checkbox\"]')[0];\n        if (checkboxA.checked && checkboxB.checked) {\n          return 0;\n        }\n        if (checkboxA.checked || checkboxB.checked) {\n          return checkboxA.checked ? -1 : 1;\n        }\n        return defaultOrder[checkboxA.value] < defaultOrder[checkboxB.value]\n          ? -1\n          : 1;\n      })\n      .appendTo(this.$tableColumnsContainer);\n  },\n\n  revert: function () {\n    this.elementIndex.setSelecetedSourceState({\n      order: null,\n      sort: null,\n      tableColumns: null,\n    });\n\n    this.updateSortField();\n    this.updateTableColumnField();\n    this.tidyTableColumnField();\n\n    this.$revertBtn.remove();\n    this.$revertBtn = null;\n\n    this.$closeBtn.focus();\n    this.elementIndex.updateElements();\n  },\n\n  _buildMenu: function () {\n    const $metaContainer = $('<div class=\"meta\"/>').appendTo(this.$container);\n\n    if (!this.elementIndex.settings.sortable) {\n      this.$sortField = this._createSortField().appendTo($metaContainer);\n    }\n\n    if (!Garnish.isMobileBrowser(true)) {\n      this.$tableColumnsField =\n        this._createTableColumnsField().appendTo($metaContainer);\n    }\n\n    this.updateSortField();\n\n    if (this.$sortAttributeSelect) {\n      this.$sortAttributeSelect.focus();\n    }\n\n    const $footerContainer = $('<div/>', {\n      class: 'flex menu-footer',\n    }).appendTo(this.$container);\n\n    this.$revertContainer = $('<div/>', {\n      class: 'flex-grow',\n    }).appendTo($footerContainer);\n\n    // Only create the revert button if there's a custom view state\n    if (\n      this.elementIndex.getSelectedSourceState('order') ||\n      this.elementIndex.getSelectedSourceState('sort') ||\n      this.elementIndex.getSelectedSourceState('tableColumns')\n    ) {\n      this._createRevertBtn();\n    }\n\n    // we only want to show the \"Use defaults\" btn in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      if (this.$revertBtn) {\n        this.$revertBtn.addClass('hidden');\n      }\n    }\n\n    this.$closeBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Close'),\n    })\n      .appendTo($footerContainer)\n      .on('click', () => {\n        this.menu.hide();\n      });\n  },\n\n  _createSortField: function () {\n    const $container = $('<div class=\"flex\"/>');\n\n    const options = this.elementIndex\n      .getSortOptions(this.$source)\n      .sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n    const groups = options.reduce(\n      (groups, o) => {\n        const index = o.attr.startsWith('field:') ? 1 : 0;\n        groups[index].push(o);\n        return groups;\n      },\n      [[], []]\n    );\n    if (groups[1].length) {\n      groups[1].unshift({\n        optgroup: Craft.t('app', 'Fields'),\n      });\n    }\n\n    const $sortAttributeSelectContainer = Craft.ui\n      .createSelect({\n        options: groups.flat().map((o) => {\n          return o.optgroup\n            ? o\n            : {\n                label: Craft.escapeHtml(o.label),\n                value: o.attr,\n              };\n        }),\n      })\n      .addClass('fullwidth')\n      .appendTo($('<div class=\"flex-grow\"/>').appendTo($container));\n\n    this.$sortAttributeSelect = $sortAttributeSelectContainer\n      .children('select')\n      .attr({\n        'aria-label': Craft.t('app', 'Sort attribute'),\n      });\n\n    this.$sortDirectionPicker = $('<section/>', {\n      class: 'btngroup btngroup--exclusive',\n      'aria-label': Craft.t('app', 'Sort direction'),\n    })\n      .append(\n        $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          title: Craft.t('app', 'Sort ascending'),\n          'aria-label': Craft.t('app', 'Sort ascending'),\n          'aria-pressed': 'false',\n          'data-icon': 'asc',\n          'data-dir': 'asc',\n        })\n      )\n      .append(\n        $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          title: Craft.t('app', 'Sort descending'),\n          'aria-label': Craft.t('app', 'Sort descending'),\n          'aria-pressed': 'false',\n          'data-icon': 'desc',\n          'data-dir': 'desc',\n        })\n      )\n      .appendTo($container);\n\n    this.sortDirectionListbox = new Craft.Listbox(this.$sortDirectionPicker, {\n      onChange: ($selectedOption) => {\n        const direction = $selectedOption.data('dir');\n        if (direction !== this.elementIndex.getSelectedSortDirection()) {\n          this.elementIndex.setSelectedSortAttribute(\n            this.$sortAttributeSelect.val(),\n            $selectedOption.data('dir')\n          );\n\n          if (!this.elementIndex.sortByScore) {\n            // In case it's actually the structure view\n            this.elementIndex.selectViewMode(this.elementIndex.viewMode);\n          }\n\n          this.elementIndex.updateElements();\n          this._createRevertBtn();\n        }\n      },\n    });\n\n    this.$sortAttributeSelect.on('change', () => {\n      this.elementIndex.setSelectedSortAttribute(\n        this.$sortAttributeSelect.val(),\n        null,\n        false\n      );\n\n      // In case it's actually the structure view\n      this.elementIndex.selectViewMode(this.elementIndex.viewMode);\n\n      this.elementIndex.updateElements();\n      this._createRevertBtn();\n    });\n\n    const $field = Craft.ui.createField($container, {\n      label: Craft.t('app', 'Sort by'),\n      fieldset: true,\n    });\n    $field.addClass('sort-field');\n    return $field;\n  },\n\n  _getTableColumnCheckboxes: function () {\n    if (!this.$tableColumnsContainer) {\n      return $();\n    }\n\n    return this.$tableColumnsContainer.find('input[type=\"checkbox\"]');\n  },\n\n  _createTableColumnsField: function () {\n    const columns = this.elementIndex\n      .getTableColumnOptions(this.$source)\n      .sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n\n    if (!columns.length) {\n      return $();\n    }\n\n    this.$tableColumnsContainer = Craft.ui.createCheckboxSelect({\n      options: columns.map((c) => ({\n        label: c.label,\n        value: c.attr,\n      })),\n      sortable: true,\n    });\n\n    this.updateTableColumnField();\n    this.tidyTableColumnField();\n\n    this.$tableColumnsContainer.data('dragSort').on('sortChange', () => {\n      this._onTableColumnChange();\n    });\n\n    this._getTableColumnCheckboxes().on('change', (ev) => {\n      this._onTableColumnChange();\n    });\n\n    const $field = Craft.ui.createField(this.$tableColumnsContainer, {\n      label: Craft.t('app', 'Table Columns'),\n      fieldset: true,\n    });\n    $field.addClass('table-columns-field');\n\n    // we only want to show the \"Table Columns\" checkboxes in table and structure views\n    if (\n      this.elementIndex.viewMode !== 'table' &&\n      this.elementIndex.viewMode !== 'structure'\n    ) {\n      $field.addClass('hidden');\n    }\n\n    return $field;\n  },\n\n  _onTableColumnChange: function () {\n    const columns = [];\n    const $selectedCheckboxes =\n      this._getTableColumnCheckboxes().filter(':checked');\n    for (let i = 0; i < $selectedCheckboxes.length; i++) {\n      columns.push($selectedCheckboxes.eq(i).val());\n    }\n\n    // Only commit the change if it's different from the current column selections\n    // (maybe an unchecked column was dragged, etc.)\n    if (\n      Craft.compare(\n        columns,\n        this.elementIndex.getSelectedTableColumns(this.$source)\n      )\n    ) {\n      return;\n    }\n\n    this.elementIndex.setSelectedTableColumns(columns, false);\n    this.elementIndex.updateElements();\n    this._createRevertBtn();\n  },\n\n  _createRevertBtn: function () {\n    if (this.$revertBtn) {\n      return;\n    }\n\n    this.$revertBtn = $('<button/>', {\n      type: 'button',\n      class: 'light',\n      text: Craft.t('app', 'Use defaults'),\n    })\n      .appendTo(this.$revertContainer)\n      .on('click', () => {\n        this.revert();\n      });\n  },\n\n  destroy: function () {\n    this.menu.destroy();\n    delete this.menu;\n    this.base();\n  },\n});\n\nconst FilterHud = Garnish.HUD.extend({\n  elementIndex: null,\n  sourceKey: null,\n  siteId: null,\n  id: null,\n  loading: true,\n  conditionConfig: null,\n  serialized: null,\n  $clearBtn: null,\n  cleared: false,\n\n  get isActive() {\n    return this.showing || this.conditionConfig || this.serialized;\n  },\n\n  init: function (elementIndex, sourceKey, siteId, settings) {\n    this.elementIndex = elementIndex;\n    this.sourceKey = sourceKey;\n    this.siteId = siteId;\n    this.id = `filter-${Math.floor(Math.random() * 1000000000)}`;\n\n    if (settings) {\n      if (settings.conditionConfig) {\n        this.conditionConfig = settings.conditionConfig;\n        delete settings.conditionConfig;\n      } else if (settings.serialized) {\n        this.serialized = settings.serialized;\n        delete settings.serialized;\n      }\n    }\n\n    const $loadingContent = $('<div/>')\n      .append(\n        $('<div/>', {\n          class: 'spinner',\n        })\n      )\n      .append(\n        $('<div/>', {\n          text: Craft.t('app', 'Loading'),\n          class: 'visually-hidden',\n          'aria-role': 'alert',\n        })\n      );\n\n    this.base(\n      this.elementIndex.$filterBtn,\n      $loadingContent,\n      Object.assign(\n        {\n          hudClass: 'hud element-filter-hud loading',\n        },\n        settings\n      )\n    );\n\n    this.$hud.attr({\n      id: this.id,\n      'aria-live': 'polite',\n      'aria-busy': 'false',\n    });\n    this.$tip.remove();\n    this.$tip = null;\n\n    this.$body.on('submit', (ev) => {\n      ev.preventDefault();\n      this.hide();\n    });\n\n    Craft.sendActionRequest('POST', 'element-indexes/filter-hud', {\n      data: {\n        elementType: this.elementIndex.elementType,\n        source: this.sourceKey,\n        condition: this.elementIndex.settings.condition,\n        conditionConfig: this.conditionConfig,\n        serialized: this.serialized,\n        id: `${this.id}-filters`,\n      },\n    })\n      .then(async (response) => {\n        this.loading = false;\n        this.$hud.removeClass('loading');\n        $loadingContent.remove();\n\n        this.$main.append(response.data.hudHtml);\n        await Craft.appendHeadHtml(response.data.headHtml);\n        await Craft.appendBodyHtml(response.data.bodyHtml);\n\n        const $btnContainer = $('<div/>', {\n          class: 'flex flex-nowrap',\n        }).appendTo(this.$main);\n        $('<div/>', {\n          class: 'flex-grow',\n        }).appendTo($btnContainer);\n        this.$clearBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Cancel'),\n        }).appendTo($btnContainer);\n        $('<button/>', {\n          type: 'submit',\n          class: 'btn secondary',\n          text: Craft.t('app', 'Apply'),\n        }).appendTo($btnContainer);\n        this.$clearBtn.on('click', () => {\n          this.clear();\n        });\n\n        this.$hud.find('.condition-container').on('htmx:beforeRequest', () => {\n          this.setBusy();\n        });\n\n        this.$hud.find('.condition-container').on('htmx:load', () => {\n          this.setReady();\n          this.updateSizeAndPosition(true);\n        });\n        this.setFocus();\n\n        if (this.conditionConfig) {\n          // conditionConfig => serialized\n          this.conditionConfig = null;\n          this.serialized = this.serialize();\n        }\n      })\n      .catch(() => {\n        Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n      });\n\n    this.$hud.css('position', 'fixed');\n\n    this.addListener(Garnish.$win, 'scroll,resize', () => {\n      this.updateSizeAndPosition(true);\n    });\n  },\n\n  addListener: function (elem, events, data, func) {\n    if (elem === this.$main && events === 'resize') {\n      return;\n    }\n    this.base(elem, events, data, func);\n  },\n\n  setBusy: function () {\n    this.$hud.attr('aria-busy', 'true');\n\n    $('<div/>', {\n      class: 'visually-hidden',\n      text: Craft.t('app', 'Loading'),\n    }).insertAfter(this.$main.find('.htmx-indicator'));\n  },\n\n  setReady: function () {\n    this.$hud.attr('aria-busy', 'false');\n  },\n\n  setFocus: function () {\n    Garnish.setFocusWithin(this.$main);\n  },\n\n  clear: function () {\n    this.cleared = true;\n    this.hide();\n  },\n\n  updateSizeAndPositionInternal: function () {\n    const searchOffset =\n      this.elementIndex.$searchContainer[0].getBoundingClientRect();\n\n    // Ensure HUD is scrollable if content falls off-screen\n    const windowHeight = Garnish.$win.height();\n    let hudHeight;\n    const availableSpace = windowHeight - searchOffset.bottom;\n\n    if (this.$body.height() > availableSpace) {\n      hudHeight = windowHeight - searchOffset.bottom - 10;\n    }\n\n    this.$hud.css({\n      width: this.elementIndex.$searchContainer.outerWidth() - 2,\n      top: searchOffset.top + this.elementIndex.$searchContainer.outerHeight(),\n      left: searchOffset.left + 1,\n      height: hudHeight ? `${hudHeight}px` : 'unset',\n      overflowY: hudHeight ? 'scroll' : 'unset',\n    });\n  },\n\n  onShow: function () {\n    this.base();\n\n    // Cancel => Clear\n    if (this.$clearBtn) {\n      this.$clearBtn.text(Craft.t('app', 'Clear'));\n    }\n\n    this.elementIndex.updateFilterBtn();\n    this.setFocus();\n  },\n\n  onHide: function () {\n    this.base();\n\n    // If something changed, update the elements\n    if (this.serialized !== (this.serialized = this.serialize())) {\n      this.elementIndex.updateElements();\n    }\n\n    if (this.cleared) {\n      this.destroy();\n    } else {\n      this.$hud.detach();\n      this.$shade.detach();\n    }\n\n    this.elementIndex.updateFilterBtn();\n    this.elementIndex.$filterBtn.focus();\n  },\n\n  hasRules: function () {\n    return this.$main.has('.condition-rule').length !== 0;\n  },\n\n  serialize: function () {\n    return !this.cleared && this.hasRules() ? this.$body.serialize() : null;\n  },\n\n  destroy: function () {\n    this.base();\n    delete this.elementIndex.filterHuds[this.siteId][this.sourceKey];\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Base Element Index View\n */\nCraft.BaseElementIndexView = Garnish.Base.extend(\n  {\n    $container: null,\n    $loadingMoreSpinner: null,\n    $elementContainer: null,\n    $scroller: null,\n\n    elementIndex: null,\n    elementSelect: null,\n\n    loadingMore: false,\n\n    _totalVisible: null,\n    _morePending: null,\n    _handleEnableElements: null,\n    _handleDisableElements: null,\n\n    get thumbLoader() {\n      console.warn(\n        'Craft.BaseElementIndexView::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead.'\n      );\n      return Craft.cp.elementThumbLoader;\n    },\n\n    init: function (elementIndex, container, settings) {\n      this.elementIndex = elementIndex;\n      this.$container = $(container);\n      this.setSettings(settings, Craft.BaseElementIndexView.defaults);\n\n      // Create a \"loading-more\" spinner\n      this.$loadingMoreSpinner = $(\n        '<div class=\"centeralign hidden\">' +\n          '<div class=\"spinner loadingmore\"></div>' +\n          '</div>'\n      ).insertAfter(this.$container);\n\n      // Get the actual elements container and its child elements\n      this.$elementContainer = this.getElementContainer();\n      var $elements = this.$elementContainer.children();\n\n      this.setTotalVisible($elements.length);\n      this.setMorePending(\n        this.elementIndex.settings.batchSize &&\n          $elements.length == this.elementIndex.settings.batchSize\n      );\n\n      // Load thumbnails\n      Craft.cp.elementThumbLoader.load($elements);\n\n      if (this.settings.selectable) {\n        this.elementSelect = new Garnish.Select(\n          this.$elementContainer,\n          this.filterSelectableElements($elements),\n          {\n            multi: this.settings.multiSelect,\n            vertical: this.isVerticalList(),\n            filter: (target) => {\n              return !$(target).closest('a[href],.toggle,.btn,[role=button]')\n                .length;\n            },\n            checkboxMode: this.settings.checkboxMode,\n            waitForDoubleClicks: this.settings.waitForDoubleClicks,\n            onSelectionChange: this.onSelectionChange.bind(this),\n          }\n        );\n\n        this._handleEnableElements = (ev) => {\n          this.elementSelect.addItems(\n            this.filterSelectableElements($(ev.elements))\n          );\n        };\n\n        this._handleDisableElements = (ev) => {\n          this.elementSelect.removeItems(ev.elements);\n        };\n\n        this.elementIndex.on('enableElements', this._handleEnableElements);\n        this.elementIndex.on('disableElements', this._handleDisableElements);\n      }\n\n      // Enable inline element editing if this is an index page\n      if (this.elementIndex.isAdministrative) {\n        this._handleElementEditing = (ev) => {\n          if ($(ev.target).closest('a[href],button,[role=button]').length) {\n            // Let the link/button do its thing\n            return;\n          }\n\n          const $target = $(ev.target);\n          var $element;\n\n          if ($target.hasClass('element')) {\n            $element = $target;\n          } else {\n            $element = $target.closest('.element');\n\n            if (!$element.length) {\n              return;\n            }\n          }\n\n          if (\n            Garnish.hasAttr($element, 'data-editable') &&\n            !$element.closest('.elementselect').length\n          ) {\n            Craft.createElementEditor($element.data('type'), $element);\n          }\n        };\n\n        if (!this.elementIndex.trashed) {\n          this.addListener(\n            this.$elementContainer,\n            'dblclick,taphold',\n            this._handleElementEditing\n          );\n        }\n      }\n\n      // Give sub-classes a chance to do post-initialization stuff here\n      this.afterInit();\n\n      // Set up lazy-loading\n      if (\n        !this.elementIndex.paginated &&\n        this.elementIndex.settings.batchSize\n      ) {\n        if (this.settings.context === 'index') {\n          this.$scroller = Garnish.$scrollContainer;\n        } else {\n          this.$scroller = this.elementIndex.$main;\n        }\n\n        this.$scroller.scrollTop(0);\n        this.addListener(this.$scroller, 'scroll', 'maybeLoadMore');\n        this.maybeLoadMore();\n      }\n    },\n\n    filterSelectableElements: function ($elements) {\n      const selectable = [];\n\n      for (let i = 0; i < $elements.length; i++) {\n        const $element = $elements.eq(i);\n        if ($element.hasClass('disabled')) {\n          // remove checkbox from tab order and mark as checked\n          $element.find('.checkbox').attr({\n            tabindex: '-1',\n            'aria-checked': 'true',\n          });\n          continue;\n        }\n        if (this.canSelectElement($element)) {\n          selectable.push($element[0]);\n        } else {\n          // make sure it doesn't have a checkbox\n          $element.find('.checkbox').remove();\n        }\n      }\n\n      return $(selectable);\n    },\n\n    canSelectElement: function ($element) {\n      if (this.settings.canSelectElement) {\n        return this.settings.canSelectElement($element);\n      }\n      return !!$element.data('id');\n    },\n\n    getElementContainer: function () {\n      return this.$container;\n    },\n\n    afterInit: function () {},\n\n    getAllElements: function () {\n      return this.$elementContainer.children();\n    },\n\n    getEnabledElements: function () {\n      return this.$elementContainer.children(':not(.disabled)');\n    },\n\n    getElementById: function (id) {\n      var $element = this.$elementContainer.children(\n        '[data-id=\"' + id + '\"]:first'\n      );\n\n      if ($element.length) {\n        return $element;\n      } else {\n        return null;\n      }\n    },\n\n    getSelectedElements: function () {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      return this.elementSelect.$selectedItems;\n    },\n\n    getSelectedElementIds: function () {\n      let $selectedElements;\n      try {\n        $selectedElements = this.getSelectedElements();\n      } catch (e) {}\n\n      let ids = [];\n      if ($selectedElements) {\n        for (var i = 0; i < $selectedElements.length; i++) {\n          const id = $selectedElements.eq(i).data('id');\n          if (id) {\n            ids.push(id);\n          }\n        }\n      }\n      return ids;\n    },\n\n    selectElement: function ($element) {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      this.elementSelect.selectItem($element, true);\n      return true;\n    },\n\n    selectElementById: function (id) {\n      if (!this.elementSelect) {\n        throw 'This view is not selectable.';\n      }\n\n      var $element = this.getElementById(id);\n\n      if ($element) {\n        this.elementSelect.selectItem($element, true);\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    selectAllElements: function () {\n      this.elementSelect.selectAll();\n    },\n\n    deselectAllElements: function () {\n      this.elementSelect.deselectAll();\n    },\n\n    getElementCheckbox: function (element) {\n      return $(element).find('[role=\"checkbox\"]');\n    },\n\n    isVerticalList: function () {\n      return false;\n    },\n\n    getTotalVisible: function () {\n      return this._totalVisible;\n    },\n\n    setTotalVisible: function (totalVisible) {\n      this._totalVisible = totalVisible;\n    },\n\n    getMorePending: function () {\n      return this._morePending;\n    },\n\n    setMorePending: function (morePending) {\n      this._morePending = morePending;\n    },\n\n    /**\n     * Checks if the user has reached the bottom of the scroll area, and if so, loads the next batch of elemets.\n     */\n    maybeLoadMore: function () {\n      if (this.canLoadMore()) {\n        this.loadMore();\n      }\n    },\n\n    /**\n     * Returns whether the user has reached the bottom of the scroll area.\n     */\n    canLoadMore: function () {\n      if (!this.getMorePending() || !this.elementIndex.settings.batchSize) {\n        return false;\n      }\n\n      // Check if the user has reached the bottom of the scroll area\n      var containerHeight;\n\n      if (this.$scroller[0] === Garnish.$win[0]) {\n        var winHeight = Garnish.$win.innerHeight(),\n          winScrollTop = Garnish.$win.scrollTop(),\n          containerOffset = this.$container.offset().top;\n        containerHeight = this.$container.height();\n\n        return winHeight + winScrollTop >= containerOffset + containerHeight;\n      } else {\n        var containerScrollHeight = this.$scroller.prop('scrollHeight'),\n          containerScrollTop = this.$scroller.scrollTop();\n        containerHeight = this.$scroller.outerHeight();\n\n        return (\n          containerScrollHeight - containerScrollTop <= containerHeight + 15\n        );\n      }\n    },\n\n    /**\n     * Loads the next batch of elements.\n     */\n    loadMore: function () {\n      if (\n        !this.getMorePending() ||\n        this.loadingMore ||\n        !this.elementIndex.settings.batchSize\n      ) {\n        return;\n      }\n\n      this.loadingMore = true;\n      this.$loadingMoreSpinner.removeClass('hidden');\n      this.removeListener(this.$scroller, 'scroll');\n\n      Craft.sendActionRequest('POST', this.settings.loadMoreElementsAction, {\n        data: this.getLoadMoreParams(),\n      })\n        .then(async (response) => {\n          this.loadingMore = false;\n          this.$loadingMoreSpinner.addClass('hidden');\n\n          if (this.isAdministrative) {\n            // set Craft.currentElementIndex for actions\n            Craft.currentElementIndex = this;\n          }\n\n          let $newElements = $(response.data.html);\n\n          this.appendElements($newElements);\n          await Craft.appendHeadHtml(response.data.headHtml);\n          await Craft.appendBodyHtml(response.data.bodyHtml);\n\n          if (this.elementSelect) {\n            this.elementSelect.addItems(\n              this.filterSelectableElements($newElements)\n            );\n            this.elementIndex.updateActionTriggers();\n          }\n\n          this.setTotalVisible(this.getTotalVisible() + $newElements.length);\n          this.setMorePending(\n            $newElements.length == this.elementIndex.settings.batchSize\n          );\n\n          // Is there room to load more right now?\n          this.addListener(this.$scroller, 'scroll', 'maybeLoadMore');\n          this.maybeLoadMore();\n        })\n        .catch((e) => {\n          this.loadingMore = false;\n          this.$loadingMoreSpinner.addClass('hidden');\n        });\n    },\n\n    getLoadMoreParams: function () {\n      // Use the same params that were passed when initializing this view\n      var params = $.extend(true, {}, this.settings.params);\n      params.criteria.offset = this.getTotalVisible();\n      return params;\n    },\n\n    appendElements: function ($newElements) {\n      $newElements.appendTo(this.$elementContainer);\n      Craft.cp.elementThumbLoader.load($newElements);\n      this.onAppendElements($newElements);\n    },\n\n    onAppendElements: function ($newElements) {\n      this.settings.onAppendElements($newElements);\n      this.trigger('appendElements', {\n        newElements: $newElements,\n      });\n    },\n\n    onSelectionChange: function () {\n      this.settings.onSelectionChange();\n      this.trigger('selectionChange');\n    },\n\n    disable: function () {\n      if (this.elementSelect) {\n        this.elementSelect.disable();\n      }\n    },\n\n    enable: function () {\n      if (this.elementSelect) {\n        this.elementSelect.enable();\n      }\n    },\n\n    destroy: function () {\n      // Remove the \"loading-more\" spinner, since we added that outside of the view container\n      this.$loadingMoreSpinner.remove();\n\n      // Delete the element select\n      if (this.elementSelect) {\n        this.elementIndex.off('enableElements', this._handleEnableElements);\n        this.elementIndex.off('disableElements', this._handleDisableElements);\n\n        this.elementSelect.destroy();\n        delete this.elementSelect;\n      }\n\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      context: 'index',\n      batchSize: null,\n      params: null,\n      selectable: false,\n      multiSelect: false,\n      canSelectElement: null,\n      checkboxMode: false,\n      waitForDoubleClicks: false,\n      sortable: false,\n      loadMoreElementsAction: 'element-indexes/get-more-elements',\n      onAppendElements: $.noop,\n      onSelectionChange: $.noop,\n      onSortChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Select input\n */\nCraft.BaseElementSelectInput = Garnish.Base.extend(\n  {\n    elementSelect: null,\n    elementSort: null,\n    modal: null,\n    elementEditor: null,\n    modalFirstOpen: true,\n\n    $container: null,\n    $form: null,\n    $elementsContainer: null,\n    $elements: null,\n    $addElementBtn: null,\n    $spinner: null,\n\n    _initialized: false,\n\n    get thumbLoader() {\n      console.warn(\n        'Craft.BaseElementSelectInput::thumbLoader is deprecated. Craft.cp.elementThumbLoader should be used instead.'\n      );\n      return Craft.cp.elementThumbLoader;\n    },\n\n    init: function (settings) {\n      // Normalize the settings and set them\n      // ---------------------------------------------------------------------\n\n      // Are they still passing in a bunch of arguments?\n      if (!$.isPlainObject(settings)) {\n        // Loop through all of the old arguments and apply them to the settings\n        var normalizedSettings = {},\n          args = [\n            'id',\n            'name',\n            'elementType',\n            'sources',\n            'criteria',\n            'sourceElementId',\n            'limit',\n            'modalStorageKey',\n            'fieldId',\n          ];\n\n        for (var i = 0; i < args.length; i++) {\n          if (typeof arguments[i] !== 'undefined') {\n            normalizedSettings[args[i]] = arguments[i];\n          } else {\n            break;\n          }\n        }\n\n        settings = normalizedSettings;\n      }\n\n      this.setSettings(settings, Craft.BaseElementSelectInput.defaults);\n\n      // Apply the storage key prefix\n      if (this.settings.modalStorageKey) {\n        this.modalStorageKey =\n          'BaseElementSelectInput.' + this.settings.modalStorageKey;\n      }\n\n      // No reason for this to be sortable if we're only allowing 1 selection\n      if (this.settings.limit == 1 || this.settings.maintainHierarchy) {\n        this.settings.sortable = false;\n      }\n\n      this.$container = this.getContainer();\n      this.$form = this.$container.closest('form');\n\n      // Store a reference to this class\n      this.$container.data('elementSelect', this);\n\n      this.$elementsContainer = this.getElementsContainer();\n      this.$addElementBtn = this.getAddElementsBtn();\n      this.$spinner = this.getSpinner();\n\n      this.initElementSelect();\n      this.initElementSort();\n      this.resetElements();\n\n      if (this.$addElementBtn.length) {\n        this.addListener(this.$addElementBtn, 'activate', 'showModal');\n      }\n\n      Garnish.requestAnimationFrame(() => {\n        this._initialized = true;\n      });\n\n      if (this.elementSelect) {\n        this.addListener(Garnish.$win, 'mousedown', (ev) => {\n          if (\n            !this.$container.is(ev.target) &&\n            !this.$container.find(ev.target).length\n          ) {\n            this.elementSelect.deselectAll();\n          }\n        });\n      }\n    },\n\n    get totalSelected() {\n      return this.$elements.length;\n    },\n\n    getContainer: function () {\n      return $('#' + this.settings.id);\n    },\n\n    getElementsContainer: function () {\n      return this.$container.children('.elements');\n    },\n\n    getElements: function () {\n      if (this.$elementsContainer.hasClass('structure')) {\n        return this.$elementsContainer.find('> li .row .element');\n      } else {\n        return this.$elementsContainer.find('> li > .element');\n      }\n    },\n\n    getAddElementsBtn: function () {\n      return this.$container.find('.btn.add:first');\n    },\n\n    getSpinner: function () {\n      return this.$container.find('.spinner');\n    },\n\n    initElementSelect: function () {\n      if (this.settings.selectable) {\n        this.elementSelect = new Garnish.Select(this.elementSelectSettings());\n      }\n    },\n\n    elementSelectSettings() {\n      return {\n        multi: this.settings.sortable,\n        filter: (target) => {\n          return !$(target).closest('a[href],button,[role=button]').length;\n        },\n        // prevent keyboard focus since element selection is only needed for drag-n-drop\n        makeFocusable: false,\n      };\n    },\n\n    initElementSort: function () {\n      if (this.settings.sortable) {\n        this.elementSort = new Garnish.DragSort({\n          container: this.$elementsContainer,\n          filter: this.settings.selectable\n            ? () => {\n                // Only return all the selected items if the target item is selected\n                if (\n                  this.elementSort.$targetItem\n                    .children('.element')\n                    .hasClass('sel')\n                ) {\n                  return this.elementSelect.getSelectedItems().parent('li');\n                } else {\n                  return this.elementSort.$targetItem;\n                }\n              }\n            : null,\n          ignoreHandleSelector: '.delete',\n          handle: (() => {\n            switch (this.settings.viewMode) {\n              case 'list':\n              case 'large':\n                return '> .element > .chip-content > .chip-actions > .move';\n              case 'cards':\n                return '> .element > .card-actions-container > .card-actions > .move';\n              default:\n                return null;\n            }\n          })(),\n          axis: this.getElementSortAxis(),\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onSortChange();\n          },\n        });\n      }\n    },\n\n    getElementSortAxis: function () {\n      if (\n        ['list'].includes(this.settings.viewMode) &&\n        !this.getElementsContainer().hasClass('inline-chips')\n      ) {\n        return 'y';\n      }\n      return null;\n    },\n\n    canAddMoreElements: function () {\n      return (\n        !this.settings.limit || this.$elements.length < this.settings.limit\n      );\n    },\n\n    updateAddElementsBtn: function () {\n      if (this.canAddMoreElements()) {\n        this.enableAddElementsBtn();\n      } else {\n        this.disableAddElementsBtn();\n      }\n    },\n\n    enableAddElementsBtn: function () {\n      if (this.$addElementBtn.length) {\n        this.$addElementBtn.removeClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    disableAddElementsBtn: function () {\n      if (this.$addElementBtn.length) {\n        this.$addElementBtn.addClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    showSpinner: function () {\n      if (this.$spinner) {\n        this.$spinner.removeClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    hideSpinner: function () {\n      if (this.$spinner) {\n        this.$spinner.addClass('hidden');\n      }\n\n      this.updateButtonContainer();\n    },\n\n    updateButtonContainer: function () {\n      const $container =\n        this.$addElementBtn.length && this.$addElementBtn.parent('.flex');\n      if ($container?.length) {\n        if ($container.children(':not(.hidden)').length) {\n          $container.removeClass('hidden');\n        } else {\n          $container.addClass('hidden');\n        }\n      }\n    },\n\n    focusNextLogicalElement: function () {\n      if (this.canAddMoreElements()) {\n        // If can add more elements, focus ADD button\n        if (this.$addElementBtn.length) {\n          this.$addElementBtn.get(0).focus();\n        }\n      } else {\n        // If can't add more elements, focus on the final remove\n        this.focusLastRemoveBtn();\n      }\n    },\n\n    focusLastRemoveBtn: function () {\n      const $removeBtns = this.$container.find('.delete');\n\n      if (!$removeBtns.length) return;\n\n      $removeBtns.last()[0].focus();\n    },\n\n    resetElements: function () {\n      if (this.$elements !== null) {\n        this.removeElements(this.$elements);\n      } else {\n        this.$elements = $();\n      }\n\n      this.addElements(this.getElements());\n    },\n\n    addElements: function ($elements) {\n      // add the action triggers\n      for (let i = 0; i < $elements.length; i++) {\n        const $element = $elements.eq(i);\n        const actions = this.defineElementActions($element);\n\n        if (actions.length) {\n          Craft.addActionsToChip($element, actions);\n\n          const disclosureMenu = $element\n            .find(\n              '> .chip-content > .chip-actions .action-btn, > .card-actions-container > .card-actions .action-btn'\n            )\n            .data('disclosureMenu');\n          const moveForwardBtn = disclosureMenu.$container.find(\n            '[data-move-forward]'\n          )[0];\n          const moveBackwardBtn = disclosureMenu.$container.find(\n            '[data-move-backward]'\n          )[0];\n\n          disclosureMenu.on('show', () => {\n            const $li = $element.parent();\n            const $prev = $li.prev();\n            const $next = $li.next();\n\n            if (moveForwardBtn) {\n              disclosureMenu.toggleItem(moveForwardBtn, $prev.length);\n            }\n            if (moveBackwardBtn) {\n              disclosureMenu.toggleItem(moveBackwardBtn, $next.length);\n            }\n          });\n        }\n\n        if (this.settings.sortable) {\n          $('<button/>', {\n            type: 'button',\n            class: 'move icon',\n            title: Craft.t('app', 'Reorder'),\n            'aria-label': Craft.t('app', 'Reorder'),\n            'aria-describedby': $element.find('.label').attr('id'),\n          }).appendTo(\n            $element.find(\n              '> .chip-content > .chip-actions, > .card-actions-container > .card-actions'\n            )\n          );\n        }\n      }\n\n      Craft.cp.elementThumbLoader.load($elements);\n\n      if (this.settings.selectable) {\n        this.elementSelect.addItems($elements);\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.addItems($elements.parent('li'));\n      }\n\n      if (this.settings.editable) {\n        this._handleShowElementEditor = (ev) => {\n          // don't open the edit slideout if we are tapholding to drag\n          if (ev.type === 'taphold' && ev.target.nodeName === 'BUTTON') {\n            return;\n          }\n\n          var $element = $(ev.currentTarget);\n          if (\n            Garnish.hasAttr($element, 'data-editable') &&\n            !$element.hasClass('disabled') &&\n            !$element.hasClass('loading')\n          ) {\n            this.elementEditor = this.createElementEditor($element);\n          }\n        };\n\n        this.addListener($elements, 'dblclick', this._handleShowElementEditor);\n\n        if ($.isTouchCapable()) {\n          this.addListener($elements, 'taphold', this._handleShowElementEditor);\n        }\n      }\n\n      $elements.on('keydown', (ev) => {\n        if ([Garnish.BACKSPACE_KEY, Garnish.DELETE_KEY].includes(ev.keyCode)) {\n          ev.stopPropagation();\n          ev.preventDefault();\n          const $elements = this.elementSelect.getSelectedItems();\n          for (let i = 0; i < $elements.length; i++) {\n            this.removeElement($elements.eq(i));\n          }\n        }\n      });\n\n      this.$elements = this.$elements.add($elements);\n\n      this.updateAddElementsBtn();\n      this.onAddElements();\n      this.onSortChange();\n    },\n\n    defineElementActions: function ($element) {\n      const actions = [];\n\n      if (this.settings.sortable) {\n        const axis = this.getElementSortAxis();\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-up'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-left'\n                : 'arrow-right',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move up')\n              : Craft.t('app', 'Move forward'),\n          callback: () => {\n            this.moveElementForward($element);\n          },\n          attributes: {\n            'data-move-forward': true,\n          },\n        });\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-down'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-right'\n                : 'arrow-left',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move down')\n              : Craft.t('app', 'Move backward'),\n          callback: () => {\n            this.moveElementBackward($element);\n          },\n          attributes: {\n            'data-move-backward': true,\n          },\n        });\n      }\n\n      actions.push({\n        icon: 'remove',\n        label: Craft.t('app', 'Remove'),\n        callback: () => {\n          this.removeElement($element);\n        },\n        destructive: true,\n      });\n\n      return actions;\n    },\n\n    createElementEditor: function ($element, settings) {\n      settings = Object.assign(\n        {\n          elementSelectInput: this,\n          prevalidate: this.settings.prevalidate,\n        },\n        settings\n      );\n\n      return Craft.createElementEditor(\n        this.settings.elementType,\n        $element,\n        settings\n      );\n    },\n\n    replaceElement: function (elementId, replacementId) {\n      return new Promise((resolve, reject) => {\n        const $existing = this.$elements.filter(`[data-id=\"${elementId}\"]`);\n\n        if (!$existing.length) {\n          reject(`No element selected with an ID of ${elementId}.`);\n          return;\n        }\n\n        this.showSpinner();\n\n        const data = {\n          elementId: replacementId,\n          siteId: this.settings.criteria.siteId,\n          thumbSize: this.settings.viewMode,\n        };\n\n        Craft.sendActionRequest('POST', 'app/render-elements', {\n          data: {\n            elements: [\n              {\n                type: this.settings.elementType,\n                id: replacementId,\n                siteId: this.settings.criteria.siteId,\n                instances: [\n                  {\n                    context: 'field',\n                    ui: ['list', 'large'].includes(this.settings.viewMode)\n                      ? 'chip'\n                      : 'card',\n                    size:\n                      this.settings.viewMode === 'large' ? 'large' : 'small',\n                    showActionMenu: this.settings.showActionMenu,\n                  },\n                ],\n              },\n            ],\n          },\n        })\n          .then(async ({data}) => {\n            this.removeElement($existing);\n            const elementInfo = Craft.getElementInfo(\n              data.elements[replacementId][0]\n            );\n            this.selectElements([elementInfo]).then(resolve);\n            await Craft.appendHeadHtml(data.headHtml);\n            await Craft.appendBodyHtml(data.bodyHtml);\n          })\n          .catch((e) => {\n            Craft.cp.displayError(e?.response?.data?.message);\n            reject(e?.response?.data?.message);\n          })\n          .finally(() => {\n            this.hideSpinner();\n          });\n      });\n    },\n\n    onSortChange() {\n      this.elementSelect?.resetItemOrder();\n      this.$elements = $().add(this.$elements);\n    },\n\n    moveElementForward($element) {\n      const $li = $element.closest('li');\n      const $prev = $li.prev();\n      if ($prev.length) {\n        $li.insertBefore($prev);\n        this.onSortChange();\n      }\n    },\n\n    moveElementBackward($element) {\n      const $li = $element.closest('li');\n      const $next = $li.next();\n      if ($next.length) {\n        $li.insertAfter($next);\n        this.onSortChange();\n      }\n    },\n\n    removeElements: function ($elements) {\n      if (this.settings.selectable) {\n        this.elementSelect.removeItems($elements);\n      }\n\n      if (this.modal) {\n        var ids = [];\n\n        for (var i = 0; i < $elements.length; i++) {\n          var id = $elements.eq(i).data('id');\n\n          if (id) {\n            ids.push(id);\n          }\n        }\n\n        if (ids.length) {\n          this.modal.elementIndex.enableElementsById(ids);\n        }\n      }\n\n      // Disable the hidden input in case the form is submitted before this element gets removed from the DOM\n      $elements.children('input').prop('disabled', true);\n\n      // Move the focus to the next element in the list, if there is one\n      let $nextElement;\n      if (this.settings.selectable) {\n        const lastElementIndex = this.$elements.index($elements.last());\n        $nextElement = this.$elements.eq(lastElementIndex + 1);\n      }\n      if ($nextElement?.length) {\n        $nextElement.focus();\n      } else {\n        this.focusNextLogicalElement();\n      }\n\n      this.$elements = this.$elements.not($elements);\n      this.updateAddElementsBtn();\n      this.onSortChange();\n      this.onRemoveElements();\n    },\n\n    removeElement: function ($element) {\n      if (this.settings.maintainHierarchy) {\n        // Find any descendants this element might have\n        const $allElements = $element.add(\n          $element.parent().siblings('ul').find('.element')\n        );\n\n        // Remove any inputs from the form data\n        $('[name]', $allElements).removeAttr('name');\n\n        // Remove our record of them all at once\n        this.removeElements($allElements);\n\n        // Animate them away one at a time\n        for (let i = 0; i < $allElements.length; i++) {\n          this._animateStructureElementAway($allElements, i);\n        }\n      } else {\n        // Remove any inputs from the form data\n        $('[name]', $element).removeAttr('name');\n        this.removeElements($element);\n        this.animateElementAway($element, () => {\n          $element.parent('li').remove();\n        });\n      }\n    },\n\n    animateElementAway: function ($element, callback) {\n      $element.css('z-index', 0);\n\n      var animateCss = {\n        opacity: -1,\n      };\n      animateCss['margin-' + Craft.left] = -(\n        $element.outerWidth() + parseInt($element.css('margin-' + Craft.right))\n      );\n\n      if (\n        ['list', 'cards'].includes(this.settings.viewMode) ||\n        this.$elements.length === 0\n      ) {\n        animateCss['margin-bottom'] = -(\n          $element.outerHeight() + parseInt($element.css('margin-bottom'))\n        );\n      }\n\n      $element.velocity(\n        animateCss,\n        Craft.BaseElementSelectInput.REMOVE_FX_DURATION,\n        () => {\n          if (callback) {\n            callback();\n          }\n        }\n      );\n    },\n\n    showModal: function () {\n      // Make sure we haven't reached the limit\n      if (!this.canAddMoreElements()) {\n        return;\n      }\n\n      if (!this.modal) {\n        this.modal = this.createModal();\n        this.modalFirstOpen = false;\n      } else {\n        this.modal.show();\n      }\n    },\n\n    createModal: function () {\n      return Craft.createElementSelectorModal(\n        this.settings.elementType,\n        this.getModalSettings()\n      );\n    },\n\n    getModalSettings: function () {\n      const settings = $.extend(\n        {\n          closeOtherModals: false,\n          storageKey: this.modalStorageKey,\n          sources: this.settings.sources,\n          condition: this.settings.condition,\n          referenceElementId: this.settings.referenceElementId,\n          referenceElementSiteId: this.settings.referenceElementSiteId,\n          criteria: Object.assign({}, this.settings.criteria),\n          multiSelect: this.settings.limit != 1,\n          hideOnSelect: false,\n          showSiteMenu: this.settings.showSiteMenu,\n          disabledElementIds: this.getDisabledElementIds(),\n          onSelect: this.onModalSelect.bind(this),\n          onHide: this.onModalHide.bind(this),\n          triggerElement: this.$addElementBtn,\n          modalTitle: Craft.t('app', 'Choose'),\n        },\n        this.settings.modalSettings\n      );\n\n      // make sure the previously-selected source is retained each time the\n      // modal is re-opened\n      if (!this.modalFirstOpen) {\n        settings.preferStoredSource = true;\n      }\n\n      return settings;\n    },\n\n    getSelectedElementIds: function () {\n      var ids = [];\n\n      for (var i = 0; i < this.$elements.length; i++) {\n        ids.push(this.$elements.eq(i).data('id'));\n      }\n\n      return ids;\n    },\n\n    getDisabledElementIds: function () {\n      var ids = this.getSelectedElementIds();\n\n      if (!this.settings.allowSelfRelations && this.settings.sourceElementId) {\n        ids.push(this.settings.sourceElementId);\n      }\n\n      if (this.settings.disabledElementIds) {\n        ids.push(...this.settings.disabledElementIds);\n      }\n\n      return ids;\n    },\n\n    onModalSelect: async function (elements) {\n      // Disable the modal\n      this.modal.disable();\n      this.modal.disableCancelBtn();\n      this.modal.disableSelectBtn();\n      this.modal.showFooterSpinner();\n\n      // re-render the elements even if the view modes match, to be sure we have all the correct settings\n      const [inputUiType, inputUiSize] = (() => {\n        switch (this.settings.viewMode) {\n          case 'large':\n            return ['chip', 'large'];\n          case 'cards':\n            return ['card', null];\n          default:\n            return ['chip', 'small'];\n        }\n      })();\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'app/render-elements',\n        {\n          data: {\n            elements: [\n              {\n                type: this.settings.elementType,\n                id: elements.map((e) => e.id),\n                siteId: elements[0].siteId,\n                instances: [\n                  {\n                    context: 'field',\n                    ui: inputUiType,\n                    size: inputUiSize,\n                    showActionMenu: this.settings.showActionMenu,\n                  },\n                ],\n              },\n            ],\n          },\n        }\n      );\n\n      for (let i = 0; i < elements.length; i++) {\n        if (typeof data.elements[elements[i].id] !== 'undefined') {\n          elements[i].$modalElement = elements[i].$element;\n          elements[i].$element = $(data.elements[elements[i].id][0]);\n        }\n      }\n\n      if (this.settings.maintainHierarchy) {\n        await this.selectStructuredElements(elements);\n      } else {\n        if (this.settings.limit) {\n          // Cut off any excess elements\n          var slotsLeft = this.settings.limit - this.$elements.length;\n\n          if (elements.length > slotsLeft) {\n            elements = elements.slice(0, slotsLeft);\n          }\n        }\n\n        await this.selectElements(elements);\n        this.updateDisabledElementsInModal();\n      }\n\n      // Re-enable and hide the modal\n      this.modal.enable();\n      this.modal.enableCancelBtn();\n      this.modal.enableSelectBtn();\n      this.modal.hideFooterSpinner();\n      this.modal.hide();\n\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n    },\n\n    onModalHide: function () {\n      // If the modal has a condition and a reference element, recreate it each time it’s opened\n      // in case something about the edited element is going to affect the condition\n      if (\n        this.modal &&\n        this.settings.condition &&\n        this.settings.referenceElementId\n      ) {\n        this.modal.destroy();\n        this.modal = null;\n      }\n\n      // If can add more elements, do default behavior of focus on \"Add\" button\n      if (this.canAddMoreElements()) return;\n\n      setTimeout(() => {\n        this.focusNextLogicalElement();\n      }, 200);\n    },\n\n    selectElements: async function (elements) {\n      for (let i = 0; i < elements.length; i++) {\n        let elementInfo = elements[i],\n          $element = this.createNewElement(elementInfo);\n\n        this.appendElement($element);\n        this.addElements($element);\n\n        const $modalElement = elementInfo.$modalElement || elementInfo.$element;\n        if ($modalElement && $modalElement.parent().length) {\n          this.animateElementIntoPlace($modalElement, $element);\n        }\n\n        // Override the element reference with the new one\n        elementInfo.$element = $element;\n      }\n\n      this.onSelectElements(elements);\n    },\n\n    selectStructuredElements: async function (elements) {\n      // Get the new element HTML\n      var selectedElementIds = this.getSelectedElementIds();\n\n      for (var i = 0; i < elements.length; i++) {\n        selectedElementIds.push(elements[i].id);\n      }\n\n      var data = {\n        elementIds: selectedElementIds,\n        siteId: elements[0].siteId,\n        containerId: this.settings.id,\n        name: this.settings.name,\n        branchLimit: this.settings.branchLimit,\n        selectionLabel: this.settings.selectionLabel,\n        elementType: this.settings.elementType,\n      };\n\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'relational-fields/structured-input-html',\n        {data}\n      );\n\n      const $newInput = $(response.data.html),\n        $newElementsContainer = $newInput.children('.elements');\n\n      this.$elementsContainer.replaceWith($newElementsContainer);\n      this.$elementsContainer = $newElementsContainer;\n      this.resetElements();\n\n      const filteredElements = [];\n\n      for (let i = 0; i < elements.length; i++) {\n        const element = elements[i];\n        const $element = this.getElementById(element.id);\n\n        if ($element) {\n          this.animateElementIntoPlace(element.$element, $element);\n          filteredElements.push(element);\n        }\n      }\n\n      this.updateDisabledElementsInModal();\n      this.onSelectElements(filteredElements);\n    },\n\n    createNewElement: function (elementInfo) {\n      var $element = elementInfo.$element.clone();\n      var removeText = Craft.t('app', 'Remove {label}', {\n        label: Craft.escapeHtml(elementInfo.label),\n      });\n      // Make a couple tweaks\n      Craft.setElementSize(\n        $element,\n        this.settings.viewMode === 'large' ? 'large' : 'small'\n      );\n      $element.addClass('removable').append(\n        $('<input/>', {\n          type: 'hidden',\n          name: this.settings.name + (this.settings.single ? '' : '[]'),\n          value: elementInfo.id,\n        })\n      );\n\n      return $element;\n    },\n\n    appendElement: function ($element) {\n      $('<li/>').append($element).appendTo(this.$elementsContainer);\n    },\n\n    animateElementIntoPlace: function ($modalElement, $inputElement) {\n      var origOffset = $modalElement.offset(),\n        destOffset = $inputElement.offset(),\n        $helper = $inputElement\n          .clone()\n          .appendTo(Garnish.$bod)\n          .width($inputElement.width());\n\n      $inputElement.css('visibility', 'hidden');\n\n      $helper.css({\n        position: 'absolute',\n        zIndex: 10000,\n        top: origOffset.top,\n        left: origOffset.left,\n      });\n\n      var animateCss = {\n        top: destOffset.top,\n        left: destOffset.left,\n      };\n\n      $helper.velocity(\n        animateCss,\n        Craft.BaseElementSelectInput.ADD_FX_DURATION,\n        function () {\n          $helper.remove();\n          $inputElement.css('visibility', 'visible');\n        }\n      );\n    },\n\n    updateDisabledElementsInModal: function () {\n      if (this.modal.elementIndex) {\n        this.modal.elementIndex.disableElementsById(\n          this.getDisabledElementIds()\n        );\n      }\n    },\n\n    getElementById: function (id) {\n      for (var i = 0; i < this.$elements.length; i++) {\n        var $element = this.$elements.eq(i);\n\n        if ($element.data('id') == id) {\n          return $element;\n        }\n      }\n    },\n\n    onSelectElements: function (elements) {\n      this.trigger('selectElements', {elements});\n      this.settings.onSelectElements(elements);\n      this.$container.trigger('change');\n    },\n\n    onAddElements: function () {\n      this.trigger('addElements');\n      this.settings.onAddElements();\n      this.$container.trigger('change');\n    },\n\n    onRemoveElements: function () {\n      this.trigger('removeElements');\n      this.settings.onRemoveElements();\n      this.$container.trigger('change');\n    },\n\n    _animateStructureElementAway: function ($allElements, i) {\n      let callback;\n\n      // Is this the last one?\n      if (i === $allElements.length - 1) {\n        callback = () => {\n          const $li = $allElements.first().parent().parent();\n          const $ul = $li.parent();\n\n          if ($ul[0] === this.$elementsContainer[0] || $li.siblings().length) {\n            $li.remove();\n          } else {\n            $ul.remove();\n          }\n        };\n      }\n\n      const func = () => {\n        this.animateElementAway($allElements.eq(i), callback);\n      };\n\n      if (i === 0) {\n        func();\n      } else {\n        setTimeout(func, 100 * i);\n      }\n    },\n  },\n  {\n    ADD_FX_DURATION: 200,\n    REMOVE_FX_DURATION: 200,\n\n    defaults: {\n      id: null,\n      name: null,\n      fieldId: null,\n      elementType: null,\n      sources: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      criteria: {},\n      allowSelfRelations: false,\n      sourceElementId: null,\n      disabledElementIds: null,\n      viewMode: 'list',\n      single: false,\n      maintainHierarchy: false,\n      branchLimit: null,\n      limit: null,\n      showSiteMenu: false,\n      modalStorageKey: null,\n      modalSettings: {},\n      onAddElements: $.noop,\n      onSelectElements: $.noop,\n      onRemoveElements: $.noop,\n      sortable: true,\n      selectable: true,\n      showActionMenu: true,\n      editable: true,\n      prevalidate: false,\n      editorSettings: {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element selector modal class\n */\nCraft.BaseElementSelectorModal = Garnish.Modal.extend(\n  {\n    elementType: null,\n    elementIndex: null,\n\n    supportSidebarToggleView: false,\n\n    $body: null,\n    $content: null,\n    $footer: null,\n    $selectBtn: null,\n    $sidebar: null,\n    $sources: null,\n    $sourceToggles: null,\n    $sidebarToggleBtn: null,\n    $sidebarCloseBtn: null,\n    $mainHeading: null,\n    $main: null,\n    $search: null,\n    $elements: null,\n    $tbody: null,\n    $primaryButtons: null,\n    $secondaryButtons: null,\n    $cancelBtn: null,\n\n    init: function (elementType, settings) {\n      this.elementType = elementType;\n      this.setSettings(settings, Craft.BaseElementSelectorModal.defaults);\n      const headingId = 'elementSelectorModalHeading-' + Date.now();\n\n      // Build the modal\n      const $container = $('<div/>', {\n        class: 'modal elementselectormodal',\n        'aria-labelledby': headingId,\n      }).appendTo(Garnish.$bod);\n      const $headingContainer = $('<div/>', {\n        class: this.settings.showTitle ? 'header' : 'visually-hidden',\n      }).appendTo($container);\n      $('<h1/>', {\n        id: headingId,\n        text: this.settings.modalTitle,\n      }).appendTo($headingContainer);\n      const $body = $('<div/>', {\n        class: 'body',\n      })\n        .append($('<div/>', {class: 'spinner big'}))\n        .appendTo($container);\n      this.$footer = $('<div/>', {\n        class: 'footer',\n      }).appendTo($container);\n\n      if (this.settings.fullscreen) {\n        $container.addClass('fullscreen');\n        this.settings.minGutter = 0;\n      }\n\n      this.base($container, this.settings);\n\n      this.$secondaryButtons = $(\n        '<div class=\"buttons left secondary-buttons\"/>'\n      ).appendTo(this.$footer);\n      this.$primaryButtons = $('<div class=\"buttons right\"/>').appendTo(\n        this.$footer\n      );\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo(this.$primaryButtons);\n      this.$selectBtn = Craft.ui\n        .createSubmitButton({\n          class: 'disabled',\n          label: this.settings.selectBtnLabel,\n          spinner: true,\n        })\n        .attr('aria-disabled', 'true')\n        .appendTo(this.$primaryButtons);\n\n      this.$body = $body;\n\n      this.addListener(this.$cancelBtn, 'activate', 'cancel');\n      this.addListener(this.$selectBtn, 'activate', 'selectElements');\n    },\n\n    updateModalBottomPadding: function () {\n      const footerHeight = this.$footer.outerHeight();\n      const bottomPadding = parseInt(this.$container.css('padding-bottom'));\n\n      if (footerHeight !== bottomPadding) {\n        this.$container.css('padding-bottom', footerHeight);\n      }\n    },\n\n    updateSidebarView: function () {\n      if (!this.supportSidebarToggleView) return;\n\n      if (this.sidebarShouldBeHidden()) {\n        if (!this.$sidebarToggleBtn) this.buildSidebarToggleView();\n      } else {\n        if (this.$sidebarToggleBtn) this.resetView();\n      }\n    },\n\n    sidebarShouldBeHidden: function () {\n      const contentWidth = this.$container.outerWidth();\n      return contentWidth < 550;\n    },\n\n    resetView: function () {\n      if (this.$mainHeader) {\n        this.$mainHeader.remove();\n      }\n\n      if (this.$sidebarHeader) {\n        this.$sidebarHeader.remove();\n      }\n\n      this.$sidebarToggleBtn = null;\n      this.$body.addClass('has-sidebar');\n      this.$content.addClass('has-sidebar');\n      this.$sidebar.removeClass('hidden');\n    },\n\n    buildSidebarToggleView: function () {\n      if (this.$sidebarToggleBtn || !this.sidebarShouldBeHidden()) return;\n\n      this.$sidebarHeader = $('<div class=\"sidebar-header\"/>').prependTo(\n        this.$sidebar\n      );\n\n      this.$sidebarCloseBtn = Craft.ui\n        .createButton({\n          class: 'nav-close close-btn',\n        })\n        .attr('aria-label', Craft.t('app', 'Close'))\n        .removeClass('btn')\n        .appendTo(this.$sidebarHeader);\n\n      this.$mainHeader = $('<div class=\"main-header\"/>').prependTo(this.$main);\n      this.$mainHeading = $(\n        `<h2 class=\"main-heading\">${this.getActiveSourceName()}</h2>`\n      ).appendTo(this.$mainHeader);\n\n      const buttonConfig = {\n        toggle: true,\n        controls: 'modal-sidebar',\n        class: 'nav-toggle',\n      };\n      this.$sidebarToggleBtn = Craft.ui\n        .createButton(buttonConfig)\n        .removeClass('btn')\n        .attr('aria-label', Craft.t('app', 'Show sidebar'))\n        .appendTo(this.$mainHeader);\n\n      this.$sidebar.attr('id', 'modal-sidebar');\n\n      this.closeSidebar();\n\n      this.addListener(this.$sidebarToggleBtn, 'click', () => {\n        this.toggleSidebar();\n      });\n\n      this.addListener(this.$sidebarCloseBtn, 'click', () => {\n        this.toggleSidebar();\n      });\n    },\n\n    sidebarIsOpen: function () {\n      return this.$sidebarToggleBtn.attr('aria-expanded') === 'true';\n    },\n\n    toggleSidebar: function () {\n      if (this.sidebarIsOpen()) {\n        this.closeSidebar();\n      } else {\n        this.openSidebar();\n      }\n    },\n\n    openSidebar: function () {\n      this.$body.addClass('has-sidebar');\n      this.$content.addClass('has-sidebar');\n      this.$sidebar.removeClass('hidden');\n      this.$sidebarToggleBtn.attr('aria-expanded', 'true');\n      this.$sidebar.find(':focusable').first().focus();\n\n      Garnish.uiLayerManager.addLayer(this.$sidebar);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeSidebar();\n\n        // If the focus is currently inside the sidebar, refocus the toggle\n        const $focusedEl = Garnish.getFocusedElement();\n        if ($.contains(this.$sidebar.get(0), $focusedEl.get(0)))\n          this.$sidebarToggleBtn.focus();\n      });\n    },\n\n    closeSidebar: function () {\n      if (!this.$sidebarToggleBtn) return;\n\n      if (this.sidebarIsOpen()) {\n        Garnish.uiLayerManager.removeLayer();\n        this.$sidebar.addClass('hidden');\n        this.$sidebarToggleBtn.attr('aria-expanded', 'false');\n      }\n\n      this.$body.removeClass('has-sidebar');\n      this.$content.removeClass('has-sidebar');\n    },\n\n    getActiveSourceName: function () {\n      return this.$sidebar.find('.sel').text();\n    },\n\n    onFadeIn: function () {\n      if (!this.elementIndex) {\n        this._createElementIndex();\n      } else {\n        // make sure we're able to scroll the entire elementIndex if more elements were added\n        // after modal was first initialised\n        this.updateModalBottomPadding();\n\n        // Auto-focus the Search box\n        if (!Garnish.isMobileBrowser(true)) {\n          this.elementIndex.$search.trigger('focus');\n        }\n      }\n\n      this.base();\n    },\n\n    onSelectionChange: function () {\n      this.updateSelectBtnState();\n    },\n\n    onSelectSource: function () {\n      this.updateHeading();\n      this.updateModalBottomPadding();\n    },\n\n    updateHeading: function () {\n      if (!this.$mainHeading) return;\n\n      this.$mainHeading.text(this.getActiveSourceName());\n    },\n\n    updateSelectBtnState: function () {\n      if (this.$selectBtn) {\n        if (this.hasSelection()) {\n          this.enableSelectBtn();\n        } else {\n          this.disableSelectBtn();\n        }\n      }\n    },\n\n    hasSelection: function () {\n      return (\n        this.elementIndex && this.elementIndex.getSelectedElements().length\n      );\n    },\n\n    enableSelectBtn: function () {\n      this.$selectBtn.removeClass('disabled').attr('aria-disabled', 'false');\n    },\n\n    disableSelectBtn: function () {\n      this.$selectBtn.addClass('disabled').attr('aria-disabled', 'true');\n    },\n\n    enableCancelBtn: function () {\n      this.$cancelBtn.removeClass('disabled');\n    },\n\n    disableCancelBtn: function () {\n      this.$cancelBtn.addClass('disabled');\n    },\n\n    showFooterSpinner: function () {\n      this.$selectBtn.addClass('loading');\n    },\n\n    hideFooterSpinner: function () {\n      this.$selectBtn.removeClass('loading');\n    },\n\n    cancel: function () {\n      if (!this.$cancelBtn.hasClass('disabled')) {\n        this.hide();\n      }\n    },\n\n    selectElements: function () {\n      if (this.hasSelection()) {\n        // TODO: This code shouldn't know about views' elementSelect objects\n        if (this.elementIndex.view && this.elementIndex.view.elementSelect) {\n          this.elementIndex.view.elementSelect.clearMouseUpTimeout();\n        }\n\n        var $selectedElements = this.elementIndex.getSelectedElements(),\n          elementInfo = this.getElementInfo($selectedElements);\n\n        this.onSelect(elementInfo);\n\n        if (this.settings.disableElementsOnSelect) {\n          this.elementIndex.disableElements(\n            this.elementIndex.getSelectedElements()\n          );\n        }\n\n        if (this.settings.hideOnSelect) {\n          this.hide();\n        }\n      }\n    },\n\n    getElementInfo: function ($selectedElements) {\n      var info = [];\n\n      for (var i = 0; i < $selectedElements.length; i++) {\n        var $element = $($selectedElements[i]);\n        var elementInfo = Craft.getElementInfo($element);\n\n        info.push(elementInfo);\n      }\n\n      return info;\n    },\n\n    onShow: function () {\n      this.updateSelectBtnState();\n\n      // Add listeners again since they get removed during modal close\n      this.addListener(Garnish.$win, 'resize', this.updateSidebarView);\n      this.addListener(Garnish.$win, 'resize', this.updateModalBottomPadding);\n\n      this.updateModalBottomPadding();\n      this.updateSidebarView();\n      this.base();\n    },\n\n    onHide: function () {\n      this.closeSidebar();\n      this.base();\n    },\n\n    onSelect: function (elementInfo) {\n      this.settings.onSelect(elementInfo);\n    },\n\n    disable: function () {\n      if (this.elementIndex) {\n        this.elementIndex.disable();\n      }\n\n      this.base();\n    },\n\n    enable: function () {\n      if (this.elementIndex) {\n        this.elementIndex.enable();\n      }\n\n      this.base();\n    },\n\n    getElementIndexParams: function () {\n      // Get the modal body HTML based on the settings\n      const params = {\n        context: 'modal',\n        elementType: this.elementType,\n        sources: this.settings.sources,\n      };\n\n      if (\n        this.settings.showSiteMenu !== null &&\n        this.settings.showSiteMenu !== 'auto'\n      ) {\n        params.showSiteMenu = this.settings.showSiteMenu ? '1' : '0';\n      }\n\n      return params;\n    },\n\n    _createElementIndex: function () {\n      Craft.sendActionRequest('POST', this.settings.bodyAction, {\n        data: this.getElementIndexParams(),\n      }).then((response) => {\n        this.$body.html(response.data.html);\n\n        if (this.$body.has('.sidebar:not(.hidden)').length) {\n          this.$body.addClass('has-sidebar');\n          this.supportSidebarToggleView = true;\n        }\n\n        // Initialize the element index\n        this.elementIndex = Craft.createElementIndex(\n          this.elementType,\n          this.$body,\n          this.getIndexSettings()\n        );\n\n        this.$main = this.elementIndex.$main;\n        this.$sidebar = this.elementIndex.$sidebar;\n        this.$content = this.$body.find('.content');\n\n        this.updateSidebarView();\n        this.updateModalBottomPadding();\n\n        // Double-clicking or double-tapping should select the elements\n        this.addListener(\n          this.elementIndex.$elements,\n          'doubletap',\n          function (ev, touchData) {\n            // Make sure the touch targets are the same\n            // (they may be different if Command/Ctrl/Shift-clicking on multiple elements quickly)\n            // and make sure the element is actually selectable\n            if (touchData.firstTap.target === touchData.secondTap.target) {\n              this.selectElements();\n            }\n          }\n        );\n\n        this.on('updateSizeAndPosition', () => {\n          this.elementIndex.handleResize();\n        });\n\n        this.updateSelectBtnState();\n      });\n    },\n\n    getIndexSettings: function () {\n      return Object.assign(\n        {\n          context: 'modal',\n          modal: this,\n          storageKey: this.settings.storageKey,\n          condition: this.settings.condition,\n          referenceElementId: this.settings.referenceElementId,\n          referenceElementSiteId: this.settings.referenceElementSiteId,\n          criteria: Object.assign({}, this.settings.criteria),\n          disabledElementIds: this.settings.disabledElementIds,\n          selectable: true,\n          multiSelect: this.settings.multiSelect,\n          waitForDoubleClicks: true,\n          buttonContainer: this.$secondaryButtons,\n          onSelectionChange: () => {\n            if (this.elementIndex) {\n              this.onSelectionChange();\n            }\n          },\n          onSourcePathChange: () => {\n            if (this.elementIndex) {\n              this.onSelectionChange();\n            }\n          },\n          onSelectSource: this.onSelectSource.bind(this),\n          hideSidebar: this.settings.hideSidebar,\n          defaultSiteId: this.settings.defaultSiteId,\n          defaultSource: this.settings.defaultSource,\n          defaultSourcePath: this.settings.defaultSourcePath,\n          preferStoredSource: this.settings.preferStoredSource,\n          showSourcePath: this.settings.showSourcePath,\n        },\n        this.settings.indexSettings\n      );\n    },\n  },\n  {\n    defaults: {\n      fullscreen: false,\n      resizable: true,\n      storageKey: null,\n      sources: null,\n      condition: null,\n      referenceElementId: null,\n      referenceElementSiteId: null,\n      criteria: null,\n      multiSelect: false,\n      showSiteMenu: null,\n      disabledElementIds: [],\n      disableElementsOnSelect: false,\n      hideOnSelect: true,\n      modalTitle: Craft.t('app', 'Select element'),\n      showTitle: false,\n      selectBtnLabel: Craft.t('app', 'Select'),\n      onCancel: $.noop,\n      onSelect: $.noop,\n      hideSidebar: false,\n      defaultSiteId: null,\n      defaultSource: null,\n      defaultSourcePath: null,\n      preferStoredSource: false,\n      showSourcePath: true,\n      bodyAction: 'element-selector-modals/body',\n      indexSettings: {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Input Generator\n */\nCraft.BaseInputGenerator = Garnish.Base.extend(\n  {\n    $source: null,\n    $target: null,\n    $form: null,\n    settings: null,\n\n    listening: null,\n    timeout: null,\n\n    init: function (source, target, settings) {\n      this.$source = $(source);\n      this.$target = $(target);\n      this.$form = this.$source.closest('form');\n\n      this.setSettings(settings, Craft.BaseInputGenerator.defaults);\n      this.setSettings(settings);\n\n      this.startListening();\n    },\n\n    setNewSource: function (source) {\n      var listening = this.listening;\n      this.stopListening();\n\n      this.$source = $(source);\n\n      if (listening) {\n        this.startListening();\n      }\n    },\n\n    startListening: function () {\n      if (this.listening) {\n        return;\n      }\n\n      this.listening = true;\n\n      this.addListener(this.$source, 'input', 'onSourceTextChange');\n      this.addListener(this.$target, 'input', 'onTargetTextChange');\n      this.addListener(this.$form, 'submit', 'onFormSubmit');\n    },\n\n    stopListening: function () {\n      if (!this.listening) {\n        return;\n      }\n\n      this.listening = false;\n\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.removeAllListeners(this.$source);\n      this.removeAllListeners(this.$target);\n      this.removeAllListeners(this.$form);\n    },\n\n    onSourceTextChange: function () {\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.timeout = setTimeout(this.updateTarget.bind(this), 250);\n    },\n\n    onTargetTextChange: function () {\n      if (this.$target.get(0) === document.activeElement) {\n        this.stopListening();\n      }\n    },\n\n    onFormSubmit: function () {\n      if (this.timeout) {\n        clearTimeout(this.timeout);\n      }\n\n      this.updateTarget();\n    },\n\n    updateTarget: function () {\n      if (\n        !this.$target.is(':visible') &&\n        this.settings.updateWhenHidden == false\n      ) {\n        return;\n      }\n\n      var sourceVal = this.$source.val();\n\n      if (typeof sourceVal === 'undefined') {\n        // The source input may not exist anymore\n        return;\n      }\n\n      var targetVal = this.generateTargetValue(sourceVal);\n\n      this.$target.val(targetVal);\n\n      for (let i = 0; i < this.$target.length; i++) {\n        this.$target[i].dispatchEvent(\n          new InputEvent('input', {\n            inputType: 'insertText',\n          })\n        );\n        this.$target[i].dispatchEvent(new Event('input'));\n      }\n\n      // If the target already has focus, select its whole value to mimic\n      // the behavior if the value had already been generated and they just tabbed in\n      if (this.$target.is(':focus')) {\n        Craft.selectFullValue(this.$target);\n      }\n    },\n\n    generateTargetValue: function (sourceVal) {\n      return sourceVal;\n    },\n  },\n  {\n    defaults: {\n      updateWhenHidden: false,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Base uploader class\n */\nCraft.BaseUploader = Garnish.Base.extend(\n  {\n    allowedKinds: null,\n    $element: null,\n    $fileInput: null,\n    settings: null,\n    fsType: null,\n    formData: {},\n    events: {},\n    _rejectedFiles: {},\n    _extensionList: null,\n    _inProgressCounter: 0,\n\n    init: function ($element, settings) {\n      this._rejectedFiles = {size: [], type: [], limit: []};\n      this.$element = $element;\n      this.settings = $.extend({}, Craft.BaseUploader.defaults, settings);\n      this.formData = this.settings.formData;\n      this.$fileInput = this.settings.fileInput || $element;\n      this.events = this.settings.events;\n\n      if (!this.settings.url) {\n        this.settings.url = this.settings.replace\n          ? Craft.getActionUrl(this.settings.replaceAction)\n          : Craft.getActionUrl(this.settings.createAction);\n      }\n\n      if (this.settings.allowedKinds && this.settings.allowedKinds.length) {\n        if (typeof this.settings.allowedKinds === 'string') {\n          this.settings.allowedKinds = [this.settings.allowedKinds];\n        }\n\n        this.allowedKinds = this.settings.allowedKinds;\n        delete this.settings.allowedKinds;\n      }\n    },\n\n    /**\n     * Set uploader parameters.\n     */\n    setParams: function (paramObject) {\n      // If CSRF protection isn't enabled, these won't be defined.\n      if (\n        typeof Craft.csrfTokenName !== 'undefined' &&\n        typeof Craft.csrfTokenValue !== 'undefined'\n      ) {\n        // Add the CSRF token\n        paramObject[Craft.csrfTokenName] = Craft.csrfTokenValue;\n      }\n\n      this.formData = paramObject;\n    },\n\n    /**\n     * Get the number of uploads in progress.\n     */\n    getInProgress: function () {\n      return this._inProgressCounter;\n    },\n\n    /**\n     * Return true, if this is the last upload.\n     */\n    isLastUpload: function () {\n      // Processing the last file or not processing at all.\n      return this.getInProgress() < 2;\n    },\n\n    /**\n     * Process error messages.\n     */\n    processErrorMessages: function () {\n      var str;\n\n      if (this._rejectedFiles.type.length) {\n        if (this._rejectedFiles.type.length === 1) {\n          str =\n            'The file {files} could not be uploaded. The allowed file kinds are: {kinds}.';\n        } else {\n          str =\n            'The files {files} could not be uploaded. The allowed file kinds are: {kinds}.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.type.join(', '),\n          kinds: this.allowedKinds.join(', '),\n        });\n        this._rejectedFiles.type = [];\n        Craft.cp.displayError(str);\n      }\n\n      if (this._rejectedFiles.size.length) {\n        if (this._rejectedFiles.size.length === 1) {\n          str =\n            'The file {files} could not be uploaded, because it exceeds the maximum upload size of {size}.';\n        } else {\n          str =\n            'The files {files} could not be uploaded, because they exceeded the maximum upload size of {size}.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.size.join(', '),\n          size: this.humanFileSize(this.settings.maxFileSize),\n        });\n        this._rejectedFiles.size = [];\n        Craft.cp.displayError(str);\n      }\n\n      if (this._rejectedFiles.limit.length) {\n        if (this._rejectedFiles.limit.length === 1) {\n          str =\n            'The file {files} could not be uploaded, because the field limit has been reached.';\n        } else {\n          str =\n            'The files {files} could not be uploaded, because the field limit has been reached.';\n        }\n\n        str = Craft.t('app', str, {\n          files: this._rejectedFiles.limit.join(', '),\n        });\n        this._rejectedFiles.limit = [];\n        Craft.cp.displayError(str);\n      }\n    },\n\n    humanFileSize: function (bytes) {\n      var threshold = 1024;\n\n      if (bytes < threshold) {\n        return bytes + ' B';\n      }\n\n      var units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n      var u = -1;\n\n      do {\n        bytes = bytes / threshold;\n        ++u;\n      } while (bytes >= threshold);\n\n      return bytes.toFixed(1) + ' ' + units[u];\n    },\n\n    _createExtensionList: function () {\n      this._extensionList = [];\n\n      for (var i = 0; i < this.allowedKinds.length; i++) {\n        var allowedKind = this.allowedKinds[i];\n\n        if (typeof Craft.fileKinds[allowedKind] !== 'undefined') {\n          for (\n            var j = 0;\n            j < Craft.fileKinds[allowedKind].extensions.length;\n            j++\n          ) {\n            var ext = Craft.fileKinds[allowedKind].extensions[j];\n            this._extensionList.push(ext);\n          }\n        }\n      }\n    },\n\n    destroy: $.noop,\n  },\n  {\n    defaults: {\n      dropZone: null,\n      pasteZone: null,\n      fileInput: null,\n      maxFileSize: Craft.maxUploadSize,\n      allowedKinds: null,\n      events: {},\n      formData: {},\n      canAddMoreFiles: null,\n      headers: {Accept: 'application/json;q=0.9,*/*;q=0.8'},\n      paramName: 'assets-upload',\n      url: null,\n      createAction: null,\n      replaceAction: null,\n      deleteAction: null,\n      replace: false,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * CP class\n */\nCraft.CP = Garnish.Base.extend(\n  {\n    elementThumbLoader: null,\n    authManager: null,\n\n    $nav: null,\n    $navToggle: null,\n    $globalSidebar: null,\n    $globalContainer: null,\n    $mainContainer: null,\n    $pageContainer: null,\n    $alerts: null,\n    $crumbs: null,\n    $crumbList: null,\n    $crumbItems: null,\n    $crumbMenuTriggerItem: null,\n    $crumbMenu: null,\n    $crumbMenuList: null,\n    $crumbMenuItems: null,\n    $notificationContainer: null,\n    $main: null,\n    $primaryForm: null,\n    $headerContainer: null,\n    $header: null,\n    $mainContent: null,\n    $details: null,\n    $sidebarContainer: null,\n    $sidebarToggle: null,\n    $sidebar: null,\n    $contentContainer: null,\n    $edition: null,\n\n    $confirmUnloadForms: null,\n    $deltaForms: null,\n    $collapsibleTables: null,\n\n    isMobile: null,\n    fixedHeader: false,\n\n    tabManager: null,\n\n    enableQueue: true,\n    totalJobs: 0,\n    jobInfo: null,\n    displayedJobInfo: null,\n    displayedJobInfoUnchanged: 1,\n    trackJobProgressTimeout: null,\n    trackingJobProgress: false,\n    jobProgressCancelToken: null,\n    jobProgressIcon: null,\n\n    checkingForUpdates: false,\n    forcingRefreshOnUpdatesCheck: false,\n    includingDetailsOnUpdatesCheck: false,\n    checkForUpdatesCallbacks: null,\n    checkForUpdatesFailureCallbacks: null,\n\n    resizeTimeout: null,\n\n    init: function () {\n      this.elementThumbLoader = new Craft.ElementThumbLoader();\n\n      // Is this session going to expire?\n      if (Craft.remainingSessionTime !== 0) {\n        this.authManager = new Craft.AuthManager();\n      }\n\n      // Find all the key elements\n      this.$nav = $('#nav');\n      this.$navToggle = $('#primary-nav-toggle');\n      this.$globalSidebar = $('#global-sidebar');\n      this.$globalContainer = $('#global-container');\n      this.$mainContainer = $('#main-container');\n      this.$pageContainer = $('#page-container');\n      this.$alerts = $('#alerts');\n      this.$crumbs = $('#crumbs');\n      this.$crumbList = $('#crumb-list');\n      this.$crumbItems = this.$crumbList.children('li');\n      this.$notificationContainer = $('#notifications');\n      this.$main = $('#main');\n      this.$primaryForm = $('#main-form');\n      this.$headerContainer = $('#header-container');\n      this.$header = $('#header');\n      this.$mainContent = $('#main-content');\n      this.$details = $('#details');\n      this.$sidebarContainer = $('#sidebar-container');\n      this.$sidebarToggle = $('#sidebar-toggle');\n      this.$sidebar = $('#sidebar');\n      this.$contentContainer = $('#content-container');\n      this.$collapsibleTables = $('table.collapsible');\n\n      this.isMobile = Garnish.isMobileBrowser();\n\n      this.updateContentHeading();\n\n      // Swap any instruction text with info icons\n      let $allInstructions = this.$details.find(\n        '.meta > .field > .instructions'\n      );\n\n      for (let i = 0; i < $allInstructions.length; i++) {\n        let $instructions = $allInstructions.eq(i);\n        let $label = $instructions.siblings('.heading').children('label');\n        $('<span/>', {\n          class: 'info',\n          html: $instructions.children().html(),\n        }).appendTo($label);\n        $instructions.remove();\n      }\n\n      if (!this.isMobile && this.$header.length) {\n        this.addListener(Garnish.$win, 'scroll', 'updateFixedHeader');\n        this.updateFixedHeader();\n      }\n\n      Garnish.$doc.ready(() => {\n        // Update responsive tables on window resize\n        this.addListener(Garnish.$win, 'resize', (ev) => {\n          // Ignore element resizes\n          if (ev.target === window) {\n            this.handleWindowResize();\n\n            clearTimeout(this.resizeTimeout);\n            var cp = this;\n            this.resizeTimeout = setTimeout(function () {\n              cp.setSidebarNavAttributes();\n            }, 100);\n          }\n        });\n        this.handleWindowResize();\n        this.setSidebarNavAttributes();\n\n        // Wait a frame before initializing any confirm-unload forms,\n        // so other JS that runs on ready() has a chance to initialize\n        Garnish.requestAnimationFrame(this.initSpecialForms.bind(this));\n      });\n\n      // Alerts\n      if (this.$alerts.length) {\n        this.initAlerts();\n      }\n\n      // Toggles\n      this.addListener(this.$navToggle, 'click', 'toggleNav');\n      this.addListener(this.$sidebarToggle, 'click', 'toggleSidebar');\n\n      // Does this page have a primary form?\n      if (!this.$primaryForm.length) {\n        this.$primaryForm = $('form[data-saveshortcut]:first');\n      }\n\n      // Does the primary form support the save shortcut?\n      if (\n        this.$primaryForm.length &&\n        Garnish.hasAttr(this.$primaryForm, 'data-saveshortcut')\n      ) {\n        let shortcuts = [];\n        let actions = this.$primaryForm.data('actions');\n        if (typeof actions === 'undefined') {\n          shortcuts.push([\n            {\n              keyCode: Garnish.S_KEY,\n              ctrl: true,\n            },\n            {\n              redirect: this.$primaryForm.data('saveshortcut-redirect'),\n              retainScroll: Garnish.hasAttr(\n                this.$primaryForm,\n                'saveshortcut-scroll'\n              ),\n            },\n          ]);\n        } else {\n          for (let i = 0; i < actions.length; i++) {\n            let action = actions[i];\n            if (!action.shortcut) {\n              continue;\n            }\n            shortcuts.push([\n              {\n                keyCode: Garnish.S_KEY,\n                ctrl: true,\n                shift: !!action.shift,\n              },\n              {\n                action: action.action,\n                redirect: action.redirect,\n                confirm: action.confirm,\n                params: action.params,\n                data: action.data,\n                retainScroll: action.retainScroll,\n              },\n            ]);\n          }\n        }\n        for (let i = 0; i < shortcuts.length; i++) {\n          Garnish.uiLayerManager.registerShortcut(shortcuts[i][0], () => {\n            this.submitPrimaryForm(shortcuts[i][1]);\n          });\n        }\n      }\n\n      this.initTabs();\n\n      if (this.tabManager) {\n        if (window.LOCATION_HASH) {\n          const $tab = this.tabManager.$tabs.filter(\n            `[href=\"#${window.LOCATION_HASH}\"]`\n          );\n          if ($tab.length) {\n            this.tabManager.selectTab($tab);\n          }\n        }\n      }\n\n      // Should we match the previous scroll position?\n      let scrollY = Craft.getLocalStorage('scrollY');\n      if (typeof scrollY !== 'undefined') {\n        Craft.removeLocalStorage('scrollY');\n        Garnish.$doc.ready(() => {\n          Garnish.requestAnimationFrame(() => {\n            window.scrollTo(0, scrollY);\n          });\n        });\n      }\n\n      if ($.isTouchCapable()) {\n        this.$mainContainer.on(\n          'focus',\n          'input, textarea, .focusable-input',\n          this._handleInputFocus.bind(this)\n        );\n        this.$mainContainer.on(\n          'blur',\n          'input, textarea, .focusable-input',\n          this._handleInputBlur.bind(this)\n        );\n      }\n\n      // Announcements HUD\n      if (Craft.announcements.length) {\n        let $btn = $('#announcements-btn').removeClass('hidden');\n        const hasUnreads = Craft.announcements.some((a) => a.unread);\n        let $unreadMessage;\n        if (hasUnreads) {\n          $unreadMessage = $('<span/>', {\n            class: 'visually-hidden',\n            html: Craft.t('app', 'Unread messages'),\n          });\n          $btn.addClass('unread').append($unreadMessage);\n        }\n        let hud;\n        this.addListener($btn, 'click', () => {\n          if (!hud) {\n            let contents = '';\n            Craft.announcements.forEach((a) => {\n              contents +=\n                `<div class=\"announcement ${\n                  a.unread ? 'unread' : ''\n                }\" role=\"listitem\">` +\n                '<div class=\"announcement__header\">' +\n                `<h3 class=\"announcement__heading h2\">${a.heading}</h3>` +\n                '<div class=\"announcement-label-container\">' +\n                `<div class=\"announcement-icon\" aria-hidden=\"true\">${a.icon}</div>` +\n                `<div class=\"announcement-label\">${a.label}</div>` +\n                '</div>' +\n                '</div>' +\n                `<p>${a.body}</p>` +\n                '</div>';\n            });\n            hud = new Garnish.HUD(\n              $btn,\n              `<h2 class=\"visually-hidden\">${Craft.t(\n                'app',\n                'Announcements'\n              )}</h2><div id=\"announcements\" role=\"list\">${contents}</div>`,\n              {\n                onShow: () => {\n                  $btn.addClass('active');\n                },\n                onHide: () => {\n                  $btn.removeClass('active');\n                },\n              }\n            );\n\n            // Open outbound links in new windows\n            $('a', hud.$main).each(function () {\n              if (\n                this.hostname.length &&\n                this.hostname !== location.hostname &&\n                typeof $(this).attr('target') === 'undefined'\n              ) {\n                $(this).attr('rel', 'noopener').attr('target', '_blank');\n              }\n            });\n\n            if (hasUnreads) {\n              $btn.removeClass('unread');\n              $unreadMessage.remove();\n              Craft.sendActionRequest(\n                'POST',\n                'users/mark-announcements-as-read',\n                {\n                  data: {\n                    ids: Craft.announcements.map((a) => a.id),\n                  },\n                }\n              );\n            }\n          } else {\n            hud.show();\n          }\n        });\n      }\n\n      // Add .stuck class to #footer when stuck\n      // h/t https://stackoverflow.com/a/61115077/1688568\n      const footer = document.getElementById('footer');\n      if (footer) {\n        const observer = new IntersectionObserver(\n          ([ev]) => {\n            ev.target.classList.toggle('stuck', ev.intersectionRatio < 1);\n          },\n          {\n            rootMargin: '0px 0px -1px 0px',\n            threshold: [1],\n          }\n        );\n        observer.observe(footer);\n      }\n\n      // Load any element thumbs\n      this.elementThumbLoader.load(this.$pageContainer);\n    },\n\n    get $contentHeader() {\n      const $contentHeader = $('#content-header');\n      if ($contentHeader.length) {\n        return $contentHeader;\n      }\n      return $('<header/>', {\n        id: 'content-header',\n        class: 'pane-header',\n      }).prependTo($('#content'));\n    },\n\n    get $noticeContainer() {\n      const $noticeContainer = $('#content-notice');\n      if ($noticeContainer.length) {\n        return $noticeContainer;\n      }\n      return $('<div id=\"content-notice\"/>')\n        .attr('role', 'status')\n        .prependTo(this.$contentHeader);\n    },\n\n    initSpecialForms: function () {\n      // Look for forms that we should watch for changes on\n      this.$confirmUnloadForms = $('form[data-confirm-unload]');\n      this.$deltaForms = $('form[data-delta]');\n\n      if (!this.$confirmUnloadForms.length) {\n        return;\n      }\n\n      const $forms = this.$confirmUnloadForms.add(this.$deltaForms);\n\n      for (let i = 0; i < $forms.length; i++) {\n        const $form = $forms.eq(i);\n        if (!$form.data('initialSerializedValue')) {\n          const serializer =\n            $form.data('serializer') || (() => $form.serialize());\n          $form.data('initialSerializedValue', serializer());\n        }\n        this.addListener($form, 'submit', function (ev) {\n          if (Garnish.hasAttr($form, 'data-confirm-unload')) {\n            this.removeListener(Garnish.$win, 'beforeunload');\n          }\n          if (Garnish.hasAttr($form, 'data-delta')) {\n            ev.preventDefault();\n            const serializer =\n              $form.data('serializer') || (() => $form.serialize());\n            const data = Craft.findDeltaData(\n              $form.data('initialSerializedValue'),\n              serializer(),\n              $form.data('delta-names'),\n              null,\n              $form.data('initial-delta-values'),\n              $form.data('modified-delta-names')\n            );\n            Craft.createForm(data).appendTo(Garnish.$bod).submit();\n          }\n        });\n      }\n\n      this.addListener(Garnish.$win, 'beforeunload', function (ev) {\n        let confirmUnload = false;\n        if (\n          typeof Craft.livePreview !== 'undefined' &&\n          Craft.livePreview.inPreviewMode\n        ) {\n          confirmUnload = true;\n        } else {\n          for (let i = 0; i < this.$confirmUnloadForms.length; i++) {\n            const $form = this.$confirmUnloadForms.eq(i);\n            let serialized;\n            if (typeof $form.data('serializer') === 'function') {\n              serialized = $form.data('serializer')();\n            } else {\n              serialized = $form.serialize();\n            }\n            if ($form.data('initialSerializedValue') !== serialized) {\n              confirmUnload = true;\n              break;\n            }\n          }\n        }\n\n        if (confirmUnload) {\n          var message = Craft.t(\n            'app',\n            'Any changes will be lost if you leave this page.'\n          );\n\n          if (ev) {\n            ev.originalEvent.returnValue = message;\n          } else {\n            window.event.returnValue = message;\n          }\n\n          return message;\n        }\n      });\n    },\n\n    _handleInputFocus: function () {\n      this.updateFixedHeader();\n    },\n\n    _handleInputBlur: function () {\n      this.updateFixedHeader();\n    },\n\n    /**\n     * Submits a form.\n     * @param {Object} [options]\n     * @param {string} [options.action] The `action` param value override\n     * @param {string} [options.redirect] The `redirect` param value override\n     * @param {string} [options.confirm] A confirmation message that should be shown to the user before submit\n     * @param {Object} [options.params] Additional params that should be added to the form, defined as name/value pairs\n     * @param {Object} [options.data] Additional data to be passed to the submit event\n     * @param {boolean} [options.retainScroll] Whether the scroll position should be stored and reapplied on the next page load\n     */\n    submitPrimaryForm: function (options) {\n      // Give other stuff on the page a chance to prepare\n      this.trigger('beforeSaveShortcut');\n\n      if (typeof options !== 'object' || !$.isPlainObject(options)) {\n        options = {};\n      }\n\n      if (!options.redirect) {\n        options.redirect = this.$primaryForm.data('saveshortcut-redirect');\n      }\n\n      if (!options.data) {\n        options.data = {};\n      }\n      options.data.saveShortcut = true;\n\n      Craft.submitForm(this.$primaryForm, options);\n    },\n\n    updateSidebarMenuLabel: function () {\n      this.updateContentHeading();\n    },\n\n    updateContentHeading: function () {\n      const $item = this.$sidebar.find('a.sel:first');\n      const $label = $item.children('.label');\n      $('#content-heading').text($label.length ? $label.text() : $item.text());\n      Garnish.$bod.removeClass('showing-sidebar');\n    },\n\n    toggleNav: function () {\n      const isExpanded = this.navIsExpanded();\n\n      if (isExpanded === null) return;\n\n      if (isExpanded) {\n        this.disableGlobalSidebar();\n        this.$navToggle.focus();\n        this.$navToggle.attr('aria-expanded', 'false');\n        Garnish.$bod.removeClass('showing-nav');\n      } else {\n        this.enableGlobalSidebar();\n        this.$globalSidebar.find(':focusable')[0].focus();\n        this.$navToggle.attr('aria-expanded', 'true');\n        Garnish.$bod.addClass('showing-nav');\n      }\n    },\n\n    /**\n     * Makes the global sidebar navigable by screen reader and keyboard users\n     **/\n    enableGlobalSidebar: function () {\n      this.$globalSidebar.attr('aria-hidden', 'false');\n      this.$globalSidebar.find(':focusable').attr('tabindex', '0');\n    },\n\n    /**\n     * Hides the global sidebar from screen reader and keyboard users\n     **/\n    disableGlobalSidebar: function () {\n      this.$globalSidebar.attr('aria-hidden', 'true');\n      this.$globalSidebar.find(':focusable').attr('tabindex', '-1');\n    },\n\n    setSidebarNavAttributes: function () {\n      const isExpanded = this.navIsExpanded();\n\n      if (isExpanded === null) return;\n\n      if (!isExpanded) {\n        this.disableGlobalSidebar();\n      } else {\n        this.enableGlobalSidebar();\n      }\n    },\n\n    navIsExpanded: function () {\n      if (!this.$globalSidebar[0]) return null;\n\n      const isAlwaysVisible = getComputedStyle(this.$globalSidebar[0])\n        .getPropertyValue('--is-always-visible')\n        .trim();\n\n      return (\n        this.$navToggle.attr('aria-expanded') === 'true' ||\n        isAlwaysVisible === 'true'\n      );\n    },\n\n    toggleSidebar: function () {\n      const expanded = this.$sidebarToggle.attr('aria-expanded') === 'true';\n      const newState = expanded ? 'false' : 'true';\n      this.$sidebarToggle.attr('aria-expanded', newState);\n      Garnish.$bod.toggleClass('showing-sidebar');\n    },\n\n    initTabs: function () {\n      if (this.tabManager) {\n        this.tabManager.destroy();\n        this.tabManager = null;\n      }\n\n      const $tabs = $('#tabs');\n      if (!$tabs.length) {\n        return;\n      }\n\n      this.tabManager = new Craft.Tabs($tabs);\n\n      this.tabManager.on('selectTab', (ev) => {\n        const href = ev.$tab.attr('href');\n\n        // Show its content area\n        if (href && href.charAt(0) === '#') {\n          $(href).removeClass('hidden');\n        }\n\n        // Trigger a resize event to update any UI components that are listening for it\n        Garnish.$win.trigger('resize');\n\n        // Fixes Redactor fixed toolbars on previously hidden panes\n        Garnish.$doc.trigger('scroll');\n\n        // If there is a site crumb menu or context menu, set their links to this tab ID\n        if (href && href.charAt(0) === '#') {\n          const contextLinks = document.querySelectorAll(\n            '#site-crumb-menu a[href], #context-menu a[href]'\n          );\n          for (const link of contextLinks) {\n            link.href = link.href.match(/^[^#]*/)[0] + href;\n          }\n        }\n\n        if (typeof history !== 'undefined') {\n          // Delay changing the hash so it doesn't cause the browser to jump on page load\n          Garnish.requestAnimationFrame(() => {\n            history.replaceState(undefined, undefined, href);\n          });\n        }\n      });\n\n      this.tabManager.on('deselectTab', (ev) => {\n        const href = ev.$tab.attr('href');\n        if (href && href.charAt(0) === '#') {\n          // Hide its content area\n          $(ev.$tab.attr('href')).addClass('hidden');\n        }\n      });\n    },\n\n    updateTabs: function (tabs) {\n      if (tabs) {\n        const $tabContainer = $(tabs).attr('id', 'tabs');\n        if (this.tabManager) {\n          this.tabManager.$container.replaceWith($tabContainer);\n        } else {\n          $tabContainer.appendTo(this.$contentHeader);\n        }\n        this.initTabs();\n      } else if (this.tabManager) {\n        if (this.tabManager.$container.siblings().length) {\n          this.tabManager.$container.remove();\n        } else {\n          this.tabManager.$container.parent().remove();\n        }\n        this.tabManager.destroy();\n        this.tabManager = null;\n      }\n    },\n\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabsContainer() {\n      return this.tabManager ? this.tabManager.$container : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabsList() {\n      return this.tabManager ? this.tabManager.$tablist : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $tabs() {\n      return this.tabManager ? this.tabManager.$tablist.find('> a') : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $selectedTab() {\n      return this.tabManager ? this.tabManager.$selectedTab : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get selectedTabIndex() {\n      return this.tabManager\n        ? this.tabManager.$tabs.index(this.tabManager.$selectedTab)\n        : undefined;\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    get $focusableTab() {\n      return this.tabManager ? this.tabManager.$focusableTab : undefined;\n    },\n    /**\n     * @param {(jQuery|HTMLElement|string)} tab\n     * @deprecated in 3.7.0\n     */\n    selectTab: function (tab) {\n      if (this.tabManager) {\n        this.tabManager.selectTab(tab);\n      }\n    },\n    /**\n     * @deprecated in 3.7.0\n     */\n    deselectTab: function () {\n      if (this.tabManager) {\n        this.tabManager.deselectTab();\n      }\n    },\n\n    handleBreadcrumbVisibility: function () {\n      if (!this.$crumbItems.length) {\n        return;\n      }\n\n      if (this.$crumbMenuItems) {\n        // put everything back\n        this.$crumbItems.css('max-width', '');\n        this.$crumbMenuItems.insertAfter(this.$crumbMenuTriggerItem);\n        this.$crumbMenuTriggerItem.detach();\n        this.$crumbMenuItems = null;\n      }\n\n      const maxWidth = Math.ceil(\n        this.$crumbs[0].getBoundingClientRect().width -\n          this.$navToggle[0].getBoundingClientRect().width\n      );\n      const itemWidths = [];\n\n      for (let i = 0; i < this.$crumbItems.length; i++) {\n        const $crumb = this.$crumbItems.eq(i);\n        itemWidths[i] = $crumb[0].getBoundingClientRect().width;\n      }\n\n      const totalWidth = itemWidths.reduce((sum, width) => sum + width, 0);\n\n      if (totalWidth > maxWidth) {\n        // add the menu trigger\n        if (!this.$crumbMenuTriggerItem) {\n          this.$crumbMenuTriggerItem = $('<li/>', {\n            class: 'crumb',\n          }).prependTo(this.$crumbList);\n          const $labelContainer = $('<div/>', {\n            class: 'crumb-label',\n          }).appendTo(this.$crumbMenuTriggerItem);\n          const $trigger = $('<button/>', {\n            id: 'crumb-menu-trigger',\n            'data-icon': 'ellipsis',\n            'data-disclosure-trigger': 'true',\n            'aria-controls': 'crumb-menu',\n            'aria-haspopup': 'true',\n            'aria-label': Craft.t('app', 'More…'),\n            title: Craft.t('app', 'More…'),\n          }).appendTo($labelContainer);\n\n          this.$crumbMenu = $('<div/>', {\n            id: 'crumb-menu',\n            class: 'menu menu--disclosure',\n            'data-disclosure-menu': 'true',\n          }).appendTo($labelContainer);\n          this.$crumbMenuList = $('<ul/>').appendTo(this.$crumbMenu);\n\n          $trigger.disclosureMenu();\n        } else {\n          this.$crumbMenuTriggerItem.prependTo(this.$crumbList);\n        }\n\n        // see how many crumbs we can include, starting at the end\n        let visibleTotalWidth =\n          this.$crumbMenuTriggerItem[0].getBoundingClientRect().width;\n\n        for (let i = this.$crumbItems.length - 1; i >= 0; i--) {\n          if (visibleTotalWidth + itemWidths[i] > maxWidth) {\n            this.$crumbMenuItems = this.$crumbItems.slice(0, i + 1);\n            this.$crumbMenuItems.appendTo(this.$crumbMenuList);\n            break;\n          }\n\n          visibleTotalWidth += itemWidths[i];\n        }\n      }\n    },\n\n    handleWindowResize: function () {\n      this.updateResponsiveTables();\n      this.handleBreadcrumbVisibility();\n    },\n\n    updateResponsiveTables: function () {\n      for (\n        this.updateResponsiveTables._i = 0;\n        this.updateResponsiveTables._i < this.$collapsibleTables.length;\n        this.updateResponsiveTables._i++\n      ) {\n        this.updateResponsiveTables._$table = this.$collapsibleTables.eq(\n          this.updateResponsiveTables._i\n        );\n        this.updateResponsiveTables._containerWidth =\n          this.updateResponsiveTables._$table.parent().width();\n        this.updateResponsiveTables._check = false;\n\n        if (this.updateResponsiveTables._containerWidth > 0) {\n          // Is this the first time we've checked this table?\n          if (\n            typeof this.updateResponsiveTables._$table.data(\n              'lastContainerWidth'\n            ) === 'undefined'\n          ) {\n            this.updateResponsiveTables._check = true;\n          } else {\n            this.updateResponsiveTables._isCollapsed =\n              this.updateResponsiveTables._$table.hasClass('collapsed');\n\n            // Getting wider?\n            if (\n              this.updateResponsiveTables._containerWidth >\n              this.updateResponsiveTables._$table.data('lastContainerWidth')\n            ) {\n              if (this.updateResponsiveTables._isCollapsed) {\n                this.updateResponsiveTables._$table.removeClass('collapsed');\n                this.updateResponsiveTables._check = true;\n              }\n            } else if (!this.updateResponsiveTables._isCollapsed) {\n              this.updateResponsiveTables._check = true;\n            }\n          }\n\n          // Are we checking the table width?\n          if (this.updateResponsiveTables._check) {\n            if (\n              this.updateResponsiveTables._$table.width() - 30 >\n              this.updateResponsiveTables._containerWidth\n            ) {\n              this.updateResponsiveTables._$table.addClass('collapsed');\n            }\n          }\n\n          // Remember the container width for next time\n          this.updateResponsiveTables._$table.data(\n            'lastContainerWidth',\n            this.updateResponsiveTables._containerWidth\n          );\n        }\n      }\n    },\n\n    updateFixedHeader: function () {\n      if (this.isMobile) {\n        return;\n      }\n\n      // Have we scrolled passed the top of #main?\n      if (\n        this.$main.length &&\n        this.$headerContainer[0].getBoundingClientRect().top < 0\n      ) {\n        const headerHeight = this.$headerContainer.height();\n        const headerWidth = this.$header.width();\n        if (!this.fixedHeader) {\n          // Hard-set the minimum content container height\n          this.$contentContainer.css(\n            'min-height',\n            'calc(100vh - ' + (headerHeight + 14 + 48 - 1) + 'px)'\n          );\n\n          // Hard-set the header container height\n          this.$headerContainer.height(headerHeight);\n          this.$header.width(headerWidth);\n          Garnish.$bod.addClass('fixed-header');\n\n          this.fixedHeader = true;\n        }\n\n        this._setFixedTopPos(this.$sidebar, headerHeight);\n        this._setFixedTopPos(this.$details, headerHeight);\n      } else if (this.fixedHeader) {\n        this.$headerContainer.height('auto');\n        this.$header.width('auto');\n        Garnish.$bod.removeClass('fixed-header');\n        this.$contentContainer.css('min-height', '');\n        this.$sidebar.removeClass('fixed').css('top', '');\n        this.$details.removeClass('fixed').css('top', '');\n        this.fixedHeader = false;\n      }\n    },\n\n    _setFixedTopPos: function ($element, headerHeight) {\n      if (!$element.length || !this.$contentContainer.length) {\n        return;\n      }\n\n      if ($element.outerHeight() >= this.$contentContainer.outerHeight()) {\n        $element.removeClass('fixed').css('top', '');\n        return;\n      }\n\n      $element\n        .addClass('fixed')\n        .css(\n          'top',\n          Math.min(\n            headerHeight + 14,\n            Math.max(\n              this.$mainContent[0].getBoundingClientRect().top,\n              document.documentElement.clientHeight - $element.outerHeight()\n            )\n          ) + 'px'\n        );\n    },\n\n    /**\n     * Dispays a notification.\n     *\n     * @param {string} type `notice`, `success`, or `error`\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayNotification: function (type, message, settings) {\n      const notification = new Craft.CP.Notification(type, message, settings);\n\n      this.trigger('displayNotification', {\n        notificationType: type,\n        message,\n        notification,\n      });\n\n      return notification;\n    },\n\n    /**\n     * Displays a notice.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayNotice: function (message, settings) {\n      return this.displayNotification(\n        'notice',\n        message,\n        Object.assign(\n          {\n            icon: 'info',\n            iconLabel: Craft.t('app', 'Notice'),\n          },\n          settings\n        )\n      );\n    },\n\n    /**\n     * Displays a success notification.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displaySuccess: function (message, settings) {\n      return this.displayNotification(\n        'success',\n        message,\n        Object.assign(\n          {\n            icon: 'check',\n            iconLabel: Craft.t('app', 'Success'),\n          },\n          settings\n        )\n      );\n    },\n\n    /**\n     * Displays an error.\n     *\n     * @param {string} message\n     * @param {Object} [settings]\n     * @param {string} [settings.icon] The icon to show on the notification\n     * @param {string} [settings.iconLabel] The icon’s ARIA label\n     * @param {string} [settings.details] Any additional HTML that should be included below the message\n     * @returns {Object} The notification\n     */\n    displayError: function (message, settings) {\n      if (!message || typeof message === 'object') {\n        settings = message;\n        message = Craft.t('app', 'A server error occurred.');\n      }\n\n      return this.displayNotification(\n        'error',\n        message,\n        Object.assign(\n          {\n            icon: 'alert',\n            iconLabel: Craft.t('app', 'Error'),\n          },\n          settings\n        )\n      );\n    },\n\n    fetchAlerts: function () {\n      return Craft.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            const data = {\n              path: Craft.path,\n            };\n            Craft.sendActionRequest('POST', 'app/get-cp-alerts', {data})\n              .then(({data}) => {\n                resolve(data.alerts);\n              })\n              .catch(reject);\n          })\n      );\n    },\n\n    displayAlerts: function (alerts, animate = true) {\n      this.$alerts.remove();\n\n      if (Array.isArray(alerts) && alerts.length) {\n        this.$alerts = $('<ul id=\"alerts\"/>').prependTo(this.$pageContainer);\n\n        for (let alert of alerts) {\n          if (!$.isPlainObject(alert)) {\n            alert = {\n              content: alert,\n              showIcon: true,\n            };\n          }\n          let content = alert.content;\n          if (alert.showIcon) {\n            content = `<span data-icon=\"alert\" aria-label=\"${Craft.t(\n              'app',\n              'Error'\n            )}\"></span> ${content}`;\n          }\n          $(`<li>${content}</li>`).appendTo(this.$alerts);\n        }\n\n        if (animate) {\n          const height = this.$alerts.outerHeight();\n          this.$alerts\n            .css('margin-top', -height)\n            .velocity({'margin-top': 0}, 'fast');\n        }\n\n        this.initAlerts();\n      }\n    },\n\n    initAlerts: function () {\n      // Are there any shunnable alerts?\n      var $shunnableAlerts = this.$alerts.find('a[class^=\"shun:\"]');\n\n      for (var i = 0; i < $shunnableAlerts.length; i++) {\n        this.addListener($shunnableAlerts[i], 'click', (ev) => {\n          ev.preventDefault();\n\n          Craft.queue.push(\n            () =>\n              new Promise((resolve, reject) => {\n                const $link = $(ev.currentTarget);\n                const data = {\n                  message: $link.prop('className').substring(5),\n                };\n                Craft.sendActionRequest('POST', 'app/shun-cp-alert', {data})\n                  .then(() => {\n                    $link.parent().remove();\n                    resolve();\n                  })\n                  .catch(({response}) => {\n                    this.displayError(response.data.message);\n                    reject();\n                  });\n              })\n          );\n        });\n      }\n\n      const $resolvableButtonsContainer = this.$alerts.find(\n        '.resolvable-alert-buttons'\n      );\n      if ($resolvableButtonsContainer.length) {\n        const $refreshBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'Refresh'),\n            spinner: true,\n          })\n          .appendTo($resolvableButtonsContainer);\n        $refreshBtn.on('click', async () => {\n          $refreshBtn.addClass('loading');\n          try {\n            await Craft.sendApiRequest('GET', 'ping');\n            const alerts = await this.fetchAlerts();\n            this.displayAlerts(alerts, false);\n          } finally {\n            $refreshBtn.removeClass('loading');\n          }\n        });\n      }\n    },\n\n    updateContext: function (label, description) {\n      const contextBtnLabel = document.querySelector(\n        '#context-menu-container > span'\n      );\n      if (contextBtnLabel) {\n        contextBtnLabel.textContent = label;\n      }\n\n      const menuItem = document.querySelector('#context-menu a.sel');\n      if (menuItem) {\n        const labelEl = menuItem.querySelector('.menu-item-label');\n        labelEl.textContent = label;\n\n        let descriptionEl = menuItem.querySelector('.menu-item-description');\n        if (description) {\n          if (!descriptionEl) {\n            descriptionEl = document.createElement('div');\n            descriptionEl.className = 'menu-item-description smalltext light';\n            menuItem.append(descriptionEl);\n          }\n          descriptionEl.textContent = description;\n        } else if (descriptionEl) {\n          descriptionEl.remove();\n        }\n      }\n    },\n\n    showSiteCrumbMenuItem: function (siteId) {\n      const menuItem = document.querySelector(\n        `#site-crumb-menu a[data-site-id=\"${siteId}\"]`\n      );\n      if (menuItem) {\n        const li = menuItem.closest('li');\n        li.classList.remove('hidden');\n        const group = li.closest('.menu-group');\n        if (group) {\n          group.classList.remove('hidden');\n        }\n      }\n    },\n\n    setSiteCrumbMenuItemStatus: function (siteId, status) {\n      const menuItem = document.querySelector(\n        `#site-crumb-menu a[data-site-id=\"${siteId}\"]`\n      );\n      if (menuItem) {\n        let statusEl = menuItem.querySelector('.status');\n\n        if (status) {\n          if (!statusEl) {\n            statusEl = document.createElement('div');\n            menuItem.prepend(statusEl);\n          }\n          statusEl.className = `status ${status}`;\n        } else if (statusEl) {\n          statusEl.remove();\n        }\n      }\n    },\n\n    checkForUpdates: function (\n      forceRefresh,\n      includeDetails,\n      onSuccess,\n      onFailure\n    ) {\n      // Make 'includeDetails' optional\n      if (typeof includeDetails === 'function') {\n        onFailure = onSuccess;\n        onSuccess = includeDetails;\n        includeDetails = false;\n      }\n\n      // If forceRefresh == true, we're currently checking for updates, and not currently forcing a refresh,\n      // then just set a new callback that re-checks for updates when the current one is done.\n      if (\n        this.checkingForUpdates &&\n        ((forceRefresh === true && !this.forcingRefreshOnUpdatesCheck) ||\n          (includeDetails === true && !this.includingDetailsOnUpdatesCheck))\n      ) {\n        const realOnSuccess = onSuccess;\n        const realOnFailure = onFailure;\n        onSuccess = () => {\n          this.checkForUpdates(\n            forceRefresh,\n            includeDetails,\n            realOnSuccess,\n            realOnFailure\n          );\n        };\n      }\n\n      // Callback functions?\n      if (typeof onSuccess === 'function') {\n        if (!Array.isArray(this.checkForUpdatesCallbacks)) {\n          this.checkForUpdatesCallbacks = [];\n        }\n        this.checkForUpdatesCallbacks.push(onSuccess);\n      }\n      if (typeof onFailure === 'function') {\n        if (!Array.isArray(this.checkForUpdatesFailureCallbacks)) {\n          this.checkForUpdatesFailureCallbacks = [];\n        }\n        this.checkForUpdatesFailureCallbacks.push(onFailure);\n      }\n\n      if (!this.checkingForUpdates) {\n        this.checkingForUpdates = true;\n        this.forcingRefreshOnUpdatesCheck = forceRefresh === true;\n        this.includingDetailsOnUpdatesCheck = includeDetails === true;\n\n        this._checkForUpdates(forceRefresh, includeDetails)\n          .then((info) => {\n            this.updateUtilitiesBadge();\n            this.checkingForUpdates = false;\n\n            if (Array.isArray(this.checkForUpdatesCallbacks)) {\n              const callbacks = this.checkForUpdatesCallbacks;\n              this.checkForUpdatesCallbacks = null;\n\n              for (let callback of callbacks) {\n                callback(info);\n              }\n            }\n\n            this.trigger('checkForUpdates', {\n              updateInfo: info,\n            });\n          })\n          .catch(() => {\n            this.checkingForUpdates = false;\n\n            if (Array.isArray(this.checkForUpdatesFailureCallbacks)) {\n              const callbacks = this.checkForUpdatesFailureCallbacks;\n              this.checkForUpdatesFailureCallbacks = null;\n\n              for (let callback of callbacks) {\n                callback();\n              }\n            }\n          });\n      }\n    },\n\n    _checkForUpdates: function (forceRefresh, includeDetails) {\n      return new Promise((resolve, reject) => {\n        if (!forceRefresh) {\n          this._checkForCachedUpdates(includeDetails)\n            .then((info) => {\n              if (info.cached) {\n                resolve(info);\n                return;\n              }\n\n              this._getUpdates(includeDetails)\n                .then((info) => {\n                  resolve(info);\n                })\n                .catch(reject);\n            })\n            .catch(reject);\n        } else {\n          this._getUpdates(includeDetails).then(resolve).catch(reject);\n        }\n      });\n    },\n\n    _checkForCachedUpdates: function (includeDetails) {\n      return new Promise(function (resolve, reject) {\n        var data = {\n          onlyIfCached: true,\n          includeDetails: includeDetails,\n        };\n\n        Craft.sendActionRequest('POST', 'app/check-for-updates', {data})\n          .then(({data}) => {\n            resolve(data);\n          })\n          .catch(() => {\n            resolve({cached: false});\n          });\n      });\n    },\n\n    _getUpdates: function (includeDetails) {\n      return new Promise((resolve, reject) => {\n        Craft.sendApiRequest('GET', 'updates')\n          .then((updates) => {\n            this._cacheUpdates(updates, includeDetails)\n              .then((data) => {\n                resolve(data);\n              })\n              .catch(reject);\n          })\n          .catch(reject);\n      });\n    },\n\n    _cacheUpdates: function (updates, includeDetails) {\n      return new Promise((resolve, reject) => {\n        const data = {\n          updates,\n          includeDetails,\n        };\n\n        Craft.sendActionRequest('POST', 'app/cache-updates', {data})\n          .then(({data}) => {\n            resolve(data);\n          })\n          .catch(reject);\n      });\n    },\n\n    updateUtilitiesBadge: function () {\n      var $utilitiesLink = $('#nav-utilities').find('> a:not(.sel)');\n\n      // Ignore if there is no (non-selected) Utilities nav item\n      if (!$utilitiesLink.length) {\n        return;\n      }\n\n      Craft.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            Craft.sendActionRequest('POST', 'app/get-utilities-badge-count')\n              .then(({data}) => {\n                // Get the existing utility nav badge and screen reader text, if any\n                let $badge = $utilitiesLink.children('.sidebar-action__badge');\n\n                if (data.badgeCount && !$badge.length) {\n                  $badge = $(\n                    '<span class=\"sidebar-action__badge\">' +\n                      '<span class=\"badge\" aria-hidden=\"true\"></span>' +\n                      '<span class=\"visually-hidden\" data-notification></span>' +\n                      '</span>'\n                  ).appendTo($utilitiesLink);\n                }\n\n                const $badgeLabel = $badge.children('.badge');\n                const $screenReaderText = $badge.children(\n                  '[data-notification]'\n                );\n\n                if (data.badgeCount) {\n                  $badgeLabel.text(data.badgeCount);\n                  $screenReaderText.text(\n                    Craft.t(\n                      'app',\n                      '{num, number} {num, plural, =1{notification} other{notifications}}',\n                      {\n                        num: data.badgeCount,\n                      }\n                    )\n                  );\n                } else if ($badge.length) {\n                  $badge.remove();\n                }\n\n                resolve();\n              })\n              .catch(reject);\n          })\n      );\n    },\n\n    runQueue: function () {\n      if (!this.enableQueue) {\n        return;\n      }\n\n      if (Craft.runQueueAutomatically) {\n        Craft.queue.push(\n          () =>\n            new Promise((resolve, reject) => {\n              Craft.sendActionRequest('POST', 'queue/run')\n                .then(() => {\n                  this.trackJobProgress(false, true);\n                  resolve();\n                })\n                .catch(reject);\n            })\n        );\n      } else {\n        this.trackJobProgress(false, true);\n      }\n    },\n\n    trackJobProgress: function (delay, force) {\n      // Ignore if we're already tracking jobs, or the queue is disabled\n      if ((this.trackJobProgressTimeout && !force) || !this.enableQueue) {\n        return;\n      }\n\n      this.cancelJobTracking();\n\n      if (delay) {\n        // Determine the delay based on how long the displayed job info has remained unchanged\n        if (delay === true) {\n          delay = this.getNextJobDelay();\n        }\n        this.trackJobProgressTimeout = setTimeout(\n          this._trackJobProgressInternal.bind(this),\n          delay\n        );\n      } else {\n        this._trackJobProgressInternal();\n      }\n    },\n\n    getNextJobDelay: function () {\n      return Math.min(60000, this.displayedJobInfoUnchanged * 500);\n    },\n\n    _trackJobProgressInternal: function () {\n      this.trackingJobProgress = true;\n\n      Craft.queue.push(async () => {\n        // has this been cancelled?\n        if (!this.trackingJobProgress) {\n          return;\n        }\n\n        // Tell other browser windows to stop tracking job progress\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'beforeTrackJobProgress',\n          });\n        }\n\n        this.jobProgressCancelToken = axios.CancelToken.source();\n\n        let data;\n        try {\n          const response = await Craft.sendActionRequest(\n            'POST',\n            'queue/get-job-info?limit=50&dontExtendSession=1',\n            {\n              cancelToken: this.jobProgressCancelToken.token,\n            }\n          );\n          data = response.data;\n        } catch (e) {\n          // only throw if we weren't expecting this\n          if (this.trackingJobProgress) {\n            throw e;\n          }\n        } finally {\n          this.trackingJobProgress = false;\n          this.trackJobProgressTimeout = null;\n          this.jobProgressCancelToken = null;\n        }\n\n        this.setJobData(data);\n\n        if (this.jobInfo.length) {\n          // Check again after a delay\n          this.trackJobProgress(true);\n        }\n\n        // Notify the other browser tabs about the jobs\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'trackJobProgress',\n            jobData: data,\n          });\n        }\n      });\n    },\n\n    setJobData: function (data) {\n      this.totalJobs = data.total;\n      this.setJobInfo(data.jobs);\n    },\n\n    setJobInfo: function (jobInfo) {\n      if (!this.enableQueue) {\n        return;\n      }\n\n      this.jobInfo = jobInfo;\n\n      // Update the displayed job info\n      var oldInfo = this.displayedJobInfo;\n      this.displayedJobInfo = this.getDisplayedJobInfo();\n\n      // Same old same old?\n      if (\n        oldInfo &&\n        this.displayedJobInfo &&\n        oldInfo.id === this.displayedJobInfo.id &&\n        oldInfo.progress === this.displayedJobInfo.progress &&\n        oldInfo.progressLabel === this.displayedJobInfo.progressLabel &&\n        oldInfo.status === this.displayedJobInfo.status\n      ) {\n        this.displayedJobInfoUnchanged++;\n      } else {\n        // Reset the counter\n        this.displayedJobInfoUnchanged = 1;\n      }\n\n      this.updateJobIcon();\n\n      // Fire a setJobInfo event\n      this.trigger('setJobInfo');\n    },\n\n    cancelJobTracking: function () {\n      this.trackingJobProgress = false;\n\n      if (this.trackJobProgressTimeout) {\n        clearTimeout(this.trackJobProgressTimeout);\n        this.trackJobProgressTimeout = null;\n      }\n\n      if (this.jobProgressCancelToken) {\n        this.jobProgressCancelToken.cancel();\n      }\n    },\n\n    /**\n     * Returns info for the job that should be displayed in the control panel sidebar\n     */\n    getDisplayedJobInfo: function () {\n      if (!this.enableQueue) {\n        return null;\n      }\n\n      // Set the status preference order\n      var statuses = [\n        Craft.CP.JOB_STATUS_RESERVED,\n        Craft.CP.JOB_STATUS_FAILED,\n        Craft.CP.JOB_STATUS_WAITING,\n      ];\n\n      for (var i = 0; i < statuses.length; i++) {\n        for (var j = 0; j < this.jobInfo.length; j++) {\n          if (\n            this.jobInfo[j].status === statuses[i] &&\n            (statuses[i] !== Craft.CP.JOB_STATUS_WAITING ||\n              !this.jobInfo[j].delay)\n          ) {\n            return this.jobInfo[j];\n          }\n        }\n      }\n\n      return null;\n    },\n\n    updateJobIcon: function () {\n      if (!this.enableQueue || !this.$nav.length) {\n        return;\n      }\n\n      if (this.displayedJobInfo) {\n        if (!this.jobProgressIcon) {\n          this.jobProgressIcon = new JobProgressIcon();\n        }\n\n        if (\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_RESERVED ||\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_WAITING\n        ) {\n          this.jobProgressIcon.hideFailMode();\n          this.jobProgressIcon.setDescription(\n            this.displayedJobInfo.description,\n            this.displayedJobInfo.progressLabel\n          );\n          this.jobProgressIcon.setProgress(this.displayedJobInfo.progress);\n        } else if (\n          this.displayedJobInfo.status === Craft.CP.JOB_STATUS_FAILED\n        ) {\n          this.jobProgressIcon.showFailMode(Craft.t('app', 'Failed'));\n        }\n      } else {\n        if (this.jobProgressIcon) {\n          this.jobProgressIcon.hideFailMode();\n          this.jobProgressIcon.complete();\n          delete this.jobProgressIcon;\n        }\n      }\n    },\n\n    /**\n     * Returns the active site for the control panel\n     *\n     * @returns {number}\n     */\n    getSiteId: function () {\n      // If the old BaseElementIndex.siteId value is in localStorage, go aheand and remove & return that\n      let siteId = Craft.getLocalStorage('BaseElementIndex.siteId');\n      if (typeof siteId !== 'undefined') {\n        Craft.removeLocalStorage('BaseElementIndex.siteId');\n        try {\n          this.setSiteId(siteId);\n        } catch (e) {}\n      }\n      return Craft.siteId;\n    },\n\n    /**\n     * Sets the active site for the control panel\n     * @param {number} siteId\n     */\n    setSiteId: function (siteId) {\n      const site = Craft.sites.find((s) => s.id === siteId);\n\n      if (!site) {\n        throw `Invalid site ID: ${siteId}`;\n      }\n\n      Craft.siteId = siteId;\n\n      // update the base URLs used get Craft.getUrl(), etc.\n      Craft.actionUrl = Craft.getUrl(Craft.actionUrl, {site: site.handle});\n      Craft.baseCpUrl = Craft.getUrl(Craft.baseCpUrl, {site: site.handle});\n      Craft.baseUrl = Craft.getUrl(Craft.baseUrl, {site: site.handle});\n\n      // update the current URL\n      const url = Craft.getUrl(document.location.href, {site: site.handle});\n      history.replaceState({}, '', url);\n\n      // update the site--x body class\n      for (let className of document.body.classList) {\n        if (className.match(/^site--/)) {\n          document.body.classList.remove(className);\n        }\n      }\n      document.body.classList.add(`site--${site.handle}`);\n\n      // update other URLs on the page\n      $('a').each(function () {\n        if (\n          this.hostname.length &&\n          this.hostname === location.hostname &&\n          this.href.indexOf(Craft.cpTrigger) !== -1\n        ) {\n          this.href = Craft.getUrl(this.href, {site: site.handle});\n        }\n      });\n    },\n  },\n  {\n    //maxWidth: 1051, //1024,\n\n    /**\n     * @deprecated in 4.2.0. Use Craft.notificationDuration instead.\n     */\n    notificationDuration: 5000,\n\n    JOB_STATUS_WAITING: 1,\n    JOB_STATUS_RESERVED: 2,\n    JOB_STATUS_DONE: 3,\n    JOB_STATUS_FAILED: 4,\n  }\n);\n\nCraft.CP.Notification = Garnish.Base.extend({\n  type: null,\n  message: null,\n  settings: null,\n  closing: false,\n  closeTimeout: null,\n  _preventDelayedClose: false,\n  $container: null,\n  $closeBtn: null,\n  originalActiveElement: null,\n\n  init: function (type, message, settings) {\n    this.type = type;\n    this.message = message;\n    this.settings = settings || {};\n\n    this.$container = $('<div/>', {\n      class: 'notification',\n      'data-type': this.type,\n    }).appendTo(Craft.cp.$notificationContainer);\n\n    const $body = $('<div class=\"notification-body\"/>').appendTo(\n      this.$container\n    );\n\n    if (this.settings.icon) {\n      const $icon = $('<span/>', {\n        class: 'notification-icon',\n        'data-icon': this.settings.icon,\n      }).appendTo($body);\n      if (this.settings.iconLabel) {\n        $icon.attr({\n          'aria-label': this.settings.iconLabel,\n          role: 'img',\n        });\n      } else {\n        $icon.attr('aria-hidden', 'true');\n      }\n    }\n\n    const $main = $('<div class=\"notification-main\"/>').appendTo($body);\n\n    $('<div/>', {\n      class: 'notification-message',\n      text: this.message,\n    }).appendTo($main);\n\n    const $closeBtnContainer = $('<div/>').appendTo(this.$container);\n    this.$closeBtn = $('<button/>', {\n      type: 'button',\n      class: 'notification-close-btn',\n      'aria-label': Craft.t('app', 'Close'),\n      'data-icon': 'remove',\n    }).appendTo($closeBtnContainer);\n\n    if (this.settings.details) {\n      const $detailsContainer = $('<div class=\"notification-details\"/>')\n        .append(this.settings.details)\n        .appendTo($main);\n\n      if ($detailsContainer.find('button,input').length) {\n        this.originalActiveElement = document.activeElement;\n        this.$container.attr('tabindex', '-1').focus();\n        this.addListener(this.$container, 'keydown', (ev) => {\n          if (ev.keyCode === Garnish.ESC_KEY) {\n            this.close();\n          }\n        });\n      }\n    }\n\n    this.$container\n      .css({\n        opacity: 0,\n        'margin-bottom': this._negMargin(),\n      })\n      .velocity({opacity: 1, 'margin-bottom': 0}, {duration: 'fast'});\n\n    Craft.initUiElements(this.$container);\n\n    this.addListener(this.$closeBtn, 'click', 'close');\n\n    if (Craft.notificationDuration) {\n      this._initDelayedClose();\n    }\n  },\n\n  _initDelayedClose: function () {\n    if (this._preventDelayedClose) {\n      return;\n    }\n\n    if (!Craft.isVisible()) {\n      Garnish.$doc.one('visibilitychange', () => {\n        this._initDelayedClose();\n      });\n      return;\n    }\n\n    this.delayedClose();\n\n    this.$container.on(\n      'keypress keyup change focus click mousedown mouseup',\n      (ev) => {\n        if (ev.target != this.$closeBtn[0]) {\n          this.$container.off(\n            'keypress keyup change focus click mousedown mouseup'\n          );\n          this.preventDelayedClose();\n        }\n      }\n    );\n  },\n\n  _negMargin: function () {\n    return `-${this.$container.outerHeight() + 12}px`;\n  },\n\n  close: function () {\n    if (this.closing) {\n      return;\n    }\n\n    if (this.closeTimeout) {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n    }\n\n    this.closing = true;\n\n    if (\n      this.originalActiveElement &&\n      document.activeElement &&\n      (document.activeElement === this.$container[0] ||\n        $.contains(this.$container[0], document.activeElement))\n    ) {\n      $(this.originalActiveElement).focus();\n    }\n\n    this.$container.velocity(\n      {opacity: 0, 'margin-bottom': this._negMargin()},\n      {\n        duration: 'fast',\n        complete: () => {\n          this.destroy();\n        },\n      }\n    );\n  },\n\n  delayedClose: function () {\n    this.closeTimeout = setTimeout(() => {\n      this.close();\n    }, Craft.notificationDuration);\n\n    // Hold off on closing automatically on hover\n    this.$container.one('mouseover', () => {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n\n      this.$container.on('mouseout', (ev) => {\n        if (ev.target == this.$container[0]) {\n          this.$container.off('mouseout');\n          this.delayedClose();\n        }\n      });\n    });\n  },\n\n  preventDelayedClose: function () {\n    this._preventDelayedClose = true;\n\n    if (this.closeTimeout) {\n      clearTimeout(this.closeTimeout);\n      this.closeTimeout = null;\n    }\n\n    this.$container.off('mouseover mouseout');\n  },\n\n  destroy: function () {\n    this.$container.remove();\n    this.base();\n  },\n});\n\nGarnish.$scrollContainer = Garnish.$win;\nCraft.cp = new Craft.CP();\n\n/**\n * Job progress icon class\n */\nvar JobProgressIcon = Garnish.Base.extend({\n  $li: null,\n  $a: null,\n  $label: null,\n  $progressLabel: null,\n\n  progress: null,\n  failMode: false,\n\n  _$bgCanvas: null,\n  _$staticCanvas: null,\n  _$hoverCanvas: null,\n  _$failCanvas: null,\n\n  _staticCtx: null,\n  _hoverCtx: null,\n  _canvasSize: null,\n  _arcPos: null,\n  _arcRadius: null,\n  _lineWidth: null,\n\n  _arcStartPos: 0,\n  _arcEndPos: 0,\n  _arcStartStepSize: null,\n  _arcEndStepSize: null,\n  _arcStep: null,\n  _arcStepTimeout: null,\n  _arcAnimateCallback: null,\n\n  _progressBar: null,\n\n  init: function () {\n    this.$li = $('<li/>', {\n      class: 'nav-item nav-item--job',\n    }).appendTo(Craft.cp.$nav.children('ul'));\n    this.$a = $('<a/>', {\n      id: 'job-icon',\n      class: 'sidebar-action sidebar-action--job',\n      href: Craft.canAccessQueueManager\n        ? Craft.getUrl('utilities/queue-manager')\n        : null,\n    }).appendTo(this.$li);\n    const $prefixContainer = $('<span class=\"sidebar-action__prefix\"/>');\n    this.$canvasContainer = $('<span class=\"nav-icon\"/>').appendTo(\n      $prefixContainer\n    );\n    $prefixContainer.appendTo(this.$a);\n\n    const $labelContainer = $('<span class=\"sidebar-action__label\">');\n    $labelContainer.appendTo(this.$a);\n    this.$label = $('<span class=\"label\"/>').appendTo($labelContainer);\n    this.$progressLabel = $('<span class=\"progress-label\"/>')\n      .appendTo($labelContainer)\n      .hide();\n\n    let m = window.devicePixelRatio > 1 ? 2 : 1;\n    this._canvasSize = 18 * m;\n    this._arcPos = this._canvasSize / 2;\n    this._arcRadius = 7 * m;\n    this._lineWidth = 3 * m;\n\n    this._$bgCanvas = this._createCanvas(\n      'bg',\n      this.$li.css('background-color')\n    );\n    this._$staticCanvas = this._createCanvas('static', this.$li.css('color'));\n    this._$hoverCanvas = this._createCanvas('hover', '#fff');\n    this._$failCanvas = this._createCanvas('fail', '#da5a47').hide();\n\n    this._staticCtx = this._$staticCanvas[0].getContext('2d');\n    this._hoverCtx = this._$hoverCanvas[0].getContext('2d');\n\n    this._drawArc(this._$bgCanvas[0].getContext('2d'), 0, 1);\n    this._drawArc(this._$failCanvas[0].getContext('2d'), 0, 1);\n  },\n\n  setDescription: function (description, progressLabel) {\n    this.$a.attr('title', description);\n    this.$label.text(description);\n    if (progressLabel) {\n      this.$progressLabel.text(progressLabel).show();\n    } else {\n      this.$progressLabel.hide();\n    }\n  },\n\n  setProgress: function (progress) {\n    if (progress == 0) {\n      this._$staticCanvas.hide();\n      this._$hoverCanvas.hide();\n    } else {\n      this._$staticCanvas.show();\n      this._$hoverCanvas.show();\n      if (this.progress && progress > this.progress) {\n        this._animateArc(0, progress / 100);\n      } else {\n        this._setArc(0, progress / 100);\n      }\n    }\n\n    this.progress = progress;\n  },\n\n  complete: function () {\n    this._animateArc(0, 1, () => {\n      this._$bgCanvas.velocity('fadeOut');\n\n      this._animateArc(1, 1, () => {\n        this.$li.remove();\n        this.destroy();\n      });\n    });\n  },\n\n  showFailMode: function (message) {\n    if (this.failMode) {\n      return;\n    }\n\n    this.failMode = true;\n    this.progress = null;\n\n    this._$bgCanvas.hide();\n    this._$staticCanvas.hide();\n    this._$hoverCanvas.hide();\n    this._$failCanvas.show();\n\n    this.setDescription(message);\n  },\n\n  hideFailMode: function () {\n    if (!this.failMode) {\n      return;\n    }\n\n    this.failMode = false;\n\n    this._$bgCanvas.show();\n    this._$staticCanvas.show();\n    this._$hoverCanvas.show();\n    this._$failCanvas.hide();\n  },\n\n  _createCanvas: function (id, color) {\n    var $canvas = $(\n        '<canvas id=\"job-icon-' +\n          id +\n          '\" width=\"' +\n          this._canvasSize +\n          '\" height=\"' +\n          this._canvasSize +\n          '\"/>'\n      ).appendTo(this.$canvasContainer),\n      ctx = $canvas[0].getContext('2d');\n\n    ctx.strokeStyle = color;\n    ctx.lineWidth = this._lineWidth;\n    ctx.lineCap = 'round';\n    return $canvas;\n  },\n\n  _setArc: function (startPos, endPos) {\n    this._arcStartPos = startPos;\n    this._arcEndPos = endPos;\n\n    this._drawArc(this._staticCtx, startPos, endPos);\n    this._drawArc(this._hoverCtx, startPos, endPos);\n  },\n\n  _drawArc: function (ctx, startPos, endPos) {\n    ctx.clearRect(0, 0, this._canvasSize, this._canvasSize);\n    ctx.beginPath();\n    ctx.arc(\n      this._arcPos,\n      this._arcPos,\n      this._arcRadius,\n      (1.5 + startPos * 2) * Math.PI,\n      (1.5 + endPos * 2) * Math.PI\n    );\n    ctx.stroke();\n    ctx.closePath();\n  },\n\n  _animateArc: function (targetStartPos, targetEndPos, callback) {\n    if (this._arcStepTimeout) {\n      clearTimeout(this._arcStepTimeout);\n    }\n\n    this._arcStep = 0;\n    this._arcStartStepSize = (targetStartPos - this._arcStartPos) / 10;\n    this._arcEndStepSize = (targetEndPos - this._arcEndPos) / 10;\n    this._arcAnimateCallback = callback;\n    this._takeNextArcStep();\n  },\n\n  _takeNextArcStep: function () {\n    this._setArc(\n      this._arcStartPos + this._arcStartStepSize,\n      this._arcEndPos + this._arcEndStepSize\n    );\n\n    this._arcStep++;\n\n    if (this._arcStep < 10) {\n      this._arcStepTimeout = setTimeout(this._takeNextArcStep.bind(this), 50);\n    } else if (this._arcAnimateCallback) {\n      this._arcAnimateCallback();\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Cards Element Index View\n */\nCraft.CardsElementIndexView = Craft.BaseElementIndexView.extend({\n  cardSort: null,\n\n  afterInit: function () {\n    // Create the table sorter\n    if (this.settings.sortable) {\n      this.cardSort = new Garnish.DragSort(this.getAllElements(), {\n        container: this.$elementContainer,\n        filter: this.settings.selectable\n          ? () => {\n              // Only return all the selected items if the target item is selected\n              if (\n                this.cardSort.$targetItem.children('.element').hasClass('sel')\n              ) {\n                return this.elementSelect.getSelectedItems().parent('li');\n              } else {\n                return this.cardSort.$targetItem;\n              }\n            }\n          : null,\n        ignoreHandleSelector: null,\n        handle: '> .element > .card-actions-container > .card-actions > .move',\n        collapseDraggees: true,\n        magnetStrength: 4,\n        helperLagBase: 1.5,\n        helper: ($helper) => {\n          $helper.children().outerHeight(this.cardSort.$draggee.height());\n          return $helper;\n        },\n        onInsertionPointChange: () => {\n          for (let $helper of this.cardSort.helpers) {\n            $helper.children().outerHeight(this.cardSort.$draggee.height());\n          }\n        },\n        onSortChange: () => {\n          if (this.settings.selectable) {\n            this.elementSelect.resetItemOrder();\n          }\n          this.settings.onSortChange(this.cardSort.$draggee);\n        },\n      });\n    }\n  },\n\n  getElementContainer: function () {\n    return this.$container.find('> .card-grid');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Category index class\n */\nCraft.CategoryIndex = Craft.BaseElementIndex.extend({\n  editableGroups: null,\n  $newCategoryBtnGroup: null,\n  $newCategoryBtn: null,\n\n  init: function (elementType, $container, settings) {\n    this.editableGroups = [];\n    this.on('selectSource', this.updateButton.bind(this));\n    this.on('selectSite', this.updateButton.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  afterInit: function () {\n    // Find which of the visible groups the user has permission to create new categories in\n    this.editableGroups = Craft.editableCategoryGroups.filter(\n      (g) => !!this.getSourceByKey(`group:${g.uid}`)\n    );\n\n    this.base();\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific category group in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultGroupHandle !== 'undefined'\n    ) {\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('handle') === defaultGroupHandle) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateButton: function () {\n    if (!this.$source) {\n      return;\n    }\n\n    // Get the handle of the selected source\n    const selectedSourceHandle = this.$source.data('handle');\n\n    // Update the New Category button\n    // ---------------------------------------------------------------------\n\n    if (this.editableGroups.length) {\n      // Remove the old button, if there is one\n      if (this.$newCategoryBtnGroup) {\n        this.$newCategoryBtnGroup.remove();\n      }\n\n      // Determine if they are viewing a group that they have permission to create categories in\n      const selectedGroup = this.editableGroups.find(\n        (g) => g.handle === selectedSourceHandle\n      );\n\n      this.$newCategoryBtnGroup = $(\n        '<div class=\"btngroup submit\" data-wrapper/>'\n      );\n      let $menuBtn;\n      const menuId = 'new-category-menu-' + Craft.randomString(10);\n\n      // If they are, show a primary \"New category\" button, and a dropdown of the other groups (if any).\n      // Otherwise only show a menu button\n      if (selectedGroup) {\n        const visibleLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New {type}', {\n                type: Craft.t('app', 'category'),\n              })\n            : Craft.t('app', 'New {group} category', {\n                group: selectedGroup.name,\n              });\n        const ariaLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New category in the {group} category group', {\n                group: selectedGroup.name,\n              })\n            : visibleLabel;\n\n        const role = this.settings.context === 'index' ? 'link' : null;\n\n        this.$newCategoryBtn = Craft.ui\n          .createButton({\n            label: visibleLabel,\n            ariaLabel: ariaLabel,\n            spinner: true,\n            role: role,\n          })\n          .addClass('submit add icon')\n          .appendTo(this.$newCategoryBtnGroup);\n\n        this.addListener(this.$newCategoryBtn, 'click mousedown', (ev) => {\n          // If this is the element index, check for Ctrl+clicks and middle button clicks\n          if (\n            this.settings.context === 'index' &&\n            ((ev.type === 'click' && Garnish.isCtrlKeyPressed(ev)) ||\n              (ev.type === 'mousedown' && ev.originalEvent.button === 1))\n          ) {\n            window.open(Craft.getUrl(`categories/${selectedGroup.handle}/new`));\n          } else if (ev.type === 'click') {\n            this._createCategory(selectedGroup.id);\n          }\n        });\n\n        if (this.editableGroups.length > 1) {\n          $menuBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn submit menubtn btngroup-btn-last',\n            'aria-controls': menuId,\n            'data-disclosure-trigger': '',\n            'aria-label': Craft.t(\n              'app',\n              'New category, choose a category group'\n            ),\n          }).appendTo(this.$newCategoryBtnGroup);\n        }\n      } else {\n        this.$newCategoryBtn = $menuBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'New {type}', {\n              type: Craft.t('app', 'category'),\n            }),\n            ariaLabel: Craft.t('app', 'New category, choose a category group'),\n            spinner: true,\n          })\n          .addClass('submit add icon menubtn btngroup-btn-last')\n          .attr('aria-controls', menuId)\n          .attr('data-disclosure-trigger', '')\n          .appendTo(this.$newCategoryBtnGroup);\n      }\n\n      this.addButton(this.$newCategoryBtnGroup);\n\n      if ($menuBtn) {\n        const $menuContainer = $('<div/>', {\n          id: menuId,\n          class: 'menu menu--disclosure',\n        }).appendTo(this.$newCategoryBtnGroup);\n        const $ul = $('<ul/>').appendTo($menuContainer);\n\n        for (const group of this.editableGroups) {\n          const anchorRole =\n            this.settings.context === 'index' ? 'link' : 'button';\n          if (this.settings.context === 'index' || group !== selectedGroup) {\n            const $li = $('<li/>').appendTo($ul);\n            const $a = $('<a/>', {\n              role: anchorRole === 'button' ? 'button' : null,\n              href: '#', // Allows for click listener and tab order\n              type: anchorRole === 'button' ? 'button' : null,\n              text: Craft.t('app', 'New {group} category', {\n                group: group.name,\n              }),\n            }).appendTo($li);\n            this.addListener($a, 'click', () => {\n              $menuBtn.data('trigger').hide();\n              this._createCategory(group.id);\n            });\n\n            if (anchorRole === 'button') {\n              this.addListener($a, 'keydown', (event) => {\n                if (event.keyCode === Garnish.SPACE_KEY) {\n                  event.preventDefault();\n                  $menuBtn.data('trigger').hide();\n                  this._createCategory(group.id);\n                }\n              });\n            }\n          }\n        }\n\n        new Garnish.DisclosureMenu($menuBtn);\n      }\n    }\n\n    // Update the URL if we're on the Categories index\n    // ---------------------------------------------------------------------\n\n    if (this.settings.context === 'index') {\n      let uri = 'categories';\n\n      if (selectedSourceHandle) {\n        uri += '/' + selectedSourceHandle;\n      }\n\n      Craft.setPath(uri);\n    }\n  },\n\n  _createCategory: function (groupId) {\n    if (this.$newCategoryBtn.hasClass('loading')) {\n      console.warn('New category creation already in progress.');\n      return;\n    }\n\n    // Find the group\n    const group = this.editableGroups.find((s) => s.id === groupId);\n\n    if (!group) {\n      throw `Invalid category group ID: ${groupId}`;\n    }\n\n    this.$newCategoryBtn.addClass('loading');\n\n    Craft.sendActionRequest('POST', 'elements/create', {\n      data: {\n        elementType: this.elementType,\n        siteId: this.siteId,\n        groupId: groupId,\n      },\n    })\n      .then((ev) => {\n        if (this.settings.context === 'index') {\n          document.location.href = Craft.getUrl(ev.data.cpEditUrl, {fresh: 1});\n        } else {\n          const slideout = Craft.createElementEditor(this.elementType, {\n            siteId: this.siteId,\n            elementId: ev.data.element.id,\n            draftId: ev.data.element.draftId,\n            params: {\n              fresh: 1,\n            },\n          });\n          slideout.on('submit', () => {\n            // Make sure the right group is selected\n            const groupSourceKey = `group:${group.uid}`;\n\n            if (this.sourceKey !== groupSourceKey) {\n              this.selectSourceByKey(groupSourceKey);\n            }\n\n            this.clearSearch();\n            this.selectElementAfterUpdate(ev.data.element.id);\n            this.updateElements();\n          });\n        }\n      })\n      .finally(() => {\n        this.$newCategoryBtn.removeClass('loading');\n      });\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass(\n  'craft\\\\elements\\\\Category',\n  Craft.CategoryIndex\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Category select input\n * @deprecated in 4.3.0. Use Craft.BaseElementSelectInput instead.\n */\nCraft.CategorySelectInput = Craft.BaseElementSelectInput.extend({\n  setSettings: function () {\n    this.base.apply(this, arguments);\n    this.settings.sortable = false;\n  },\n\n  getModalSettings: function () {\n    var settings = this.base();\n    settings.hideOnSelect = false;\n    return settings;\n  },\n\n  getElements: function () {\n    return this.$elementsContainer.find('.element');\n  },\n\n  onModalSelect: function (elements) {\n    // Disable the modal\n    this.modal.disable();\n    this.modal.disableCancelBtn();\n    this.modal.disableSelectBtn();\n    this.modal.showFooterSpinner();\n\n    // Get the new category HTML\n    var selectedCategoryIds = this.getSelectedElementIds();\n\n    for (var i = 0; i < elements.length; i++) {\n      selectedCategoryIds.push(elements[i].id);\n    }\n\n    var data = {\n      categoryIds: selectedCategoryIds,\n      siteId: elements[0].siteId,\n      id: this.settings.id,\n      name: this.settings.name,\n      branchLimit: this.settings.branchLimit,\n      selectionLabel: this.settings.selectionLabel,\n    };\n\n    const onResponse = () => {\n      this.modal.enable();\n      this.modal.enableCancelBtn();\n      this.modal.enableSelectBtn();\n      this.modal.hideFooterSpinner();\n    };\n    Craft.sendActionRequest('POST', 'categories/input-html', {data})\n      .then((response) => {\n        onResponse();\n        var $newInput = $(response.data.html),\n          $newElementsContainer = $newInput.children('.elements');\n\n        this.$elementsContainer.replaceWith($newElementsContainer);\n        this.$elementsContainer = $newElementsContainer;\n        this.resetElements();\n\n        var filteredElements = [];\n\n        for (var i = 0; i < elements.length; i++) {\n          var element = elements[i],\n            $element = this.getElementById(element.id);\n\n          if ($element) {\n            this.animateElementIntoPlace(element.$element, $element);\n            filteredElements.push(element);\n          }\n        }\n\n        this.updateDisabledElementsInModal();\n        this.modal.hide();\n        this.onSelectElements(filteredElements);\n      })\n      .catch(({response}) => {\n        onResponse();\n      });\n  },\n\n  removeElement: function ($element) {\n    // Find any descendants this category might have\n    const $allCategories = $element.add(\n      $element.parent().siblings('ul').find('.element')\n    );\n\n    // Remove our record of them all at once\n    this.removeElements($allCategories);\n\n    // Animate them away one at a time\n    for (let i = 0; i < $allCategories.length; i++) {\n      this._animateCategoryAway($allCategories, i);\n    }\n  },\n\n  _animateCategoryAway: function ($allCategories, i) {\n    let callback;\n\n    // Is this the last one?\n    if (i === $allCategories.length - 1) {\n      callback = () => {\n        const $li = $allCategories.first().parent().parent();\n        const $ul = $li.parent();\n\n        if ($ul[0] === this.$elementsContainer[0] || $li.siblings().length) {\n          $li.remove();\n        } else {\n          $ul.remove();\n        }\n      };\n    }\n\n    const func = () => {\n      this.animateElementAway($allCategories.eq(i), callback);\n    };\n\n    if (i === 0) {\n      func();\n    } else {\n      setTimeout(func, 100 * i);\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Color input\n */\nCraft.ColorInput = Garnish.Base.extend(\n  {\n    $container: null,\n    $input: null,\n    $colorContainer: null,\n    $colorPreview: null,\n    $colorInput: null,\n\n    init: function (container, settings) {\n      this.setSettings(settings, Craft.ColorInput.defaults);\n\n      this.$container = $(container);\n      this.$input = this.$container.find('.color-input');\n      this.$colorContainer = this.$container.children('.color');\n      this.$colorPreview = this.$colorContainer.children('.color-preview');\n\n      this.createColorInput();\n      this.handleTextChange();\n\n      this.addListener(this.$input, 'input', 'handleTextChange');\n    },\n\n    createColorInput: function () {\n      var input = document.createElement('input');\n      input.setAttribute('type', 'color');\n\n      if (input.type !== 'color') {\n        // The browser doesn't support input[type=color]\n        return;\n      }\n\n      this.$colorContainer.removeClass('static');\n      this.$colorInput = $(input)\n        .addClass('color-preview-input')\n        .attr({\n          'aria-controls': this.$input.attr('id'),\n          'aria-label': Craft.t('app', 'Color picker'),\n        })\n        .appendTo(this.$colorPreview);\n\n      if (this.settings.presets?.length) {\n        const listId = `listbox-${Math.floor(Math.random() * 1000000)}`;\n        this.$colorInput.attr('list', listId);\n        const $list = $('<datalist/>', {\n          id: listId,\n        }).insertAfter(this.$colorInput);\n        for (let color of this.settings.presets) {\n          $('<option/>').text(color).appendTo($list);\n        }\n      }\n\n      this.addListener(this.$colorInput, 'click', function (ev) {\n        ev.stopPropagation();\n      });\n\n      this.addListener(this.$colorContainer, 'click', function () {\n        this.$colorInput.trigger('click');\n      });\n\n      this.addListener(this.$colorInput, 'input', 'updateColor');\n    },\n\n    updateColor: function () {\n      this.$input.val(this.$colorInput.val());\n      this.handleTextChange();\n    },\n\n    handleTextChange: function () {\n      let val = this.$input.val();\n\n      if (val !== (val = val.trim())) {\n        this.$input.val(val);\n      }\n\n      // Chop off the #\n      if (val.length && val[0] === '#') {\n        val = val.substring(1);\n        this.$input.val(val);\n      }\n\n      // If empty, set the preview to transparent\n      if (!val.length) {\n        this.$colorPreview.css('background-color', '');\n        return;\n      }\n\n      // Now normalize it for the UI stuff\n      if (val.length === 3) {\n        val = val[0].repeat(2) + val[1].repeat(2) + val[2].repeat(2);\n      }\n\n      if (val.match(/^[0-9a-f]{6}$/i)) {\n        this.$colorPreview.css('background-color', `#${val}`);\n        if (this.$colorInput) {\n          this.$colorInput.val(`#${val}`);\n        }\n      } else {\n        this.$colorPreview.css('background-color', '');\n      }\n    },\n  },\n  {\n    defaults: {\n      presets: [],\n    },\n\n    _browserSupportsColorInputs: null,\n\n    doesBrowserSupportColorInputs: function () {\n      if (Craft.ColorInput._browserSupportsColorInputs === null) {\n      }\n\n      return Craft.ColorInput._browserSupportsColorInputs;\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Base component select input\n */\nCraft.ComponentSelectInput = Garnish.Base.extend(\n  {\n    componentSelect: null,\n    componentSort: null,\n\n    $container: null,\n    $form: null,\n    $list: null,\n    $components: null,\n    $addBtn: null,\n    $createBtn: null,\n\n    _initialized: false,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.ComponentSelectInput.defaults);\n\n      // No reason for this to be sortable if we're only allowing one selection\n      if (this.settings.limit === 1) {\n        this.settings.sortable = false;\n      }\n\n      this.$container = $(`#${this.settings.id}`);\n      this.$form = this.$container.closest('form');\n\n      // Store a reference to this class\n      this.$container.data('componentSelect', this);\n\n      this.$list = this.$container.children('ul');\n      this.$addBtn = this.$container.find('.add-btn:first');\n      this.$createBtn = this.$container.find('.create-btn:first');\n\n      this.initComponentSelect();\n      this.initComponentSort();\n      this.resetComponents();\n\n      if (this.$addBtn.length) {\n        this.addListener(this.getOptions(), 'activate', (ev) => {\n          const $button = $(ev.currentTarget);\n          this.addComponent($button.data('type'), $button.data('id'));\n        });\n      }\n\n      if (this.$createBtn.length && this.settings.createAction) {\n        this.addListener(this.$createBtn, 'activate', () => {\n          const slideout = new Craft.CpScreenSlideout(\n            this.settings.createAction\n          );\n          slideout.on('submit', (ev) => {\n            const data = ev.response.data;\n            this.addComponent(data.modelClass, data.modelId, true);\n          });\n          slideout.on('close', () => {\n            this.$createBtn.focus();\n          });\n        });\n      }\n\n      if (this.componentSelect) {\n        this.addListener(Garnish.$win, 'mousedown', (ev) => {\n          if (\n            !this.$container.is(ev.target) &&\n            !this.$container.find(ev.target).length\n          ) {\n            this.componentSelect.deselectAll();\n          }\n        });\n      }\n\n      this._initialized = true;\n    },\n\n    get totalSelected() {\n      return this.$components.length;\n    },\n\n    getComponents() {\n      return this.$list.find('.chip');\n    },\n\n    getOptions() {\n      if (!this.$addBtn.length) {\n        return $();\n      }\n\n      return this.$addBtn\n        .disclosureMenu()\n        .data('disclosureMenu')\n        .$container.find('button');\n    },\n\n    getOption(id) {\n      return this.getOptions().filter(`[data-id=\"${id}\"]`);\n    },\n\n    showOption(id) {\n      this.getOption(id).parent('li').removeClass('hidden');\n    },\n\n    hideOption(id) {\n      this.getOption(id).parent('li').addClass('hidden');\n    },\n\n    initComponentSelect: function () {\n      if (this.settings.selectable) {\n        this.componentSelect = new Garnish.Select({\n          multi: this.settings.sortable,\n          filter: (target) => {\n            return !$(target).closest('a[href],button,[role=button]').length;\n          },\n          // prevent keyboard focus since component selection is only needed for drag-n-drop\n          makeFocusable: false,\n        });\n      }\n    },\n\n    initComponentSort: function () {\n      if (this.settings.sortable) {\n        this.componentSort = new Garnish.DragSort({\n          container: this.$list,\n          filter: this.settings.selectable\n            ? () => {\n                // Only return all the selected items if the target item is selected\n                if (\n                  this.componentSort.$targetItem\n                    .children('.chip')\n                    .hasClass('sel')\n                ) {\n                  return this.componentSelect.getSelectedItems().parent('li');\n                } else {\n                  return this.componentSort.$targetItem;\n                }\n              }\n            : null,\n          ignoreHandleSelector: '.delete',\n          handle: '> .chip > .chip-content > .chip-actions > .move',\n          axis: this.getComponentSortAxis(),\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onChange();\n          },\n        });\n      }\n    },\n\n    getComponentSortAxis: function () {\n      if (!this.$list.hasClass('inline-chips')) {\n        return 'y';\n      }\n      return null;\n    },\n\n    canAddMoreComponents: function () {\n      return (\n        !this.settings.limit || this.$components.length < this.settings.limit\n      );\n    },\n\n    updateButtons() {\n      if (this.canAddMoreComponents()) {\n        if (this.$addBtn.length) {\n          if (this.getOptions().parent(':not(.hidden)').length) {\n            this.$addBtn.removeClass('hidden');\n          } else {\n            this.$addBtn.addClass('hidden');\n          }\n        }\n\n        if (this.$createBtn.length) {\n          this.$createBtn.removeClass('hidden');\n        }\n      } else {\n        if (this.$addBtn.length) {\n          this.$addBtn.addClass('hidden');\n        }\n        if (this.$createBtn.length) {\n          this.$createBtn.addClass('hidden');\n        }\n      }\n\n      const $container = this.$addBtn.length && this.$addBtn.parent('.flex');\n      if ($container && $container.length) {\n        if ($container.children(':not(.hidden)').length) {\n          $container.removeClass('hidden');\n        } else {\n          $container.addClass('hidden');\n        }\n      }\n    },\n\n    focusNextLogicalElement: function () {\n      if (this.canAddMoreComponents()) {\n        // If can add more components, focus ADD button\n        if (this.$addBtn.length) {\n          this.$addBtn.get(0).focus();\n        }\n      } else {\n        // If can't add more components, focus on the final remove\n        this.focusLastRemoveBtn();\n      }\n    },\n\n    focusLastRemoveBtn: function () {\n      const $removeBtns = this.$container.find('.delete');\n\n      if (!$removeBtns.length) return;\n\n      $removeBtns.last()[0].focus();\n    },\n\n    resetComponents: function () {\n      if (this.$components !== null) {\n        this.removeComponents(this.$components);\n      } else {\n        this.$components = $();\n      }\n\n      this.addComponents(this.getComponents());\n    },\n\n    addComponents: function ($components) {\n      // add the action triggers\n      for (let i = 0; i < $components.length; i++) {\n        const $component = $components.eq(i);\n\n        const actions = this.defineComponentActions($component);\n        Craft.addActionsToChip($component, actions);\n\n        const disclosureMenu = $component\n          .find('> .chip-content > .chip-actions .action-btn')\n          .disclosureMenu()\n          .data('disclosureMenu');\n        const moveForwardBtn = disclosureMenu.$container.find(\n          '[data-move-forward]'\n        )[0];\n        const moveBackwardBtn = disclosureMenu.$container.find(\n          '[data-move-backward]'\n        )[0];\n\n        disclosureMenu.on('show', () => {\n          const $li = $component.parent();\n          const $prev = $li.prev();\n          const $next = $li.next();\n\n          if (moveForwardBtn) {\n            disclosureMenu.toggleItem(moveForwardBtn, $prev.length);\n          }\n          if (moveBackwardBtn) {\n            disclosureMenu.toggleItem(moveBackwardBtn, $next.length);\n          }\n        });\n\n        if (this.settings.sortable) {\n          $('<button/>', {\n            type: 'button',\n            class: 'move icon',\n            title: Craft.t('app', 'Reorder'),\n            'aria-label': Craft.t('app', 'Reorder'),\n            'aria-describedby': $component.find('.label').attr('id'),\n          }).appendTo($component.find('.chip-actions'));\n        }\n\n        this.addListener($component, 'dblclick,taphold', (ev) => {\n          // don't open the edit slideout if we are tapholding to drag\n          if (ev.type === 'taphold' && ev.target.nodeName === 'BUTTON') {\n            return;\n          }\n          disclosureMenu.$container.find('[data-edit-action]').click();\n        });\n\n        this.hideOption($component.data('id'));\n      }\n\n      if (this.settings.selectable) {\n        this.componentSelect.addItems($components);\n      }\n\n      if (this.settings.sortable) {\n        this.componentSort.addItems($components.parent('li'));\n      }\n\n      $components.on('keydown', (ev) => {\n        if ([Garnish.BACKSPACE_KEY, Garnish.DELETE_KEY].includes(ev.keyCode)) {\n          ev.stopPropagation();\n          ev.preventDefault();\n          const $selected = this.componentSelect.getSelectedItems();\n          for (let i = 0; i < $selected.length; i++) {\n            this.removeComponent($selected.eq(i));\n          }\n        }\n      });\n\n      this.$components = this.$components.add($components);\n\n      this.onChange();\n    },\n\n    defineComponentActions: function ($component) {\n      const actions = [];\n\n      if (this.settings.sortable) {\n        const axis = this.getComponentSortAxis();\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-up'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-left'\n                : 'arrow-right',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move up')\n              : Craft.t('app', 'Move forward'),\n          callback: () => {\n            this.moveComponentForward($component);\n          },\n          attributes: {\n            'data-move-forward': true,\n          },\n        });\n        actions.push({\n          icon:\n            axis === 'y'\n              ? 'arrow-down'\n              : Craft.orientation === 'ltr'\n                ? 'arrow-right'\n                : 'arrow-left',\n          label:\n            axis === 'y'\n              ? Craft.t('app', 'Move down')\n              : Craft.t('app', 'Move backward'),\n          callback: () => {\n            this.moveComponentBackward($component);\n          },\n          attributes: {\n            'data-move-backward': true,\n          },\n        });\n      }\n\n      actions.push({\n        icon: 'remove',\n        label: Craft.t('app', 'Remove'),\n        callback: () => {\n          this.removeComponent($component);\n        },\n        destructive: true,\n      });\n\n      return actions;\n    },\n\n    onChange() {\n      this.componentSelect?.resetItemOrder();\n      this.$components = $().add(this.$components);\n\n      this.updateButtons();\n\n      if (this._initialized) {\n        this.trigger('change');\n      }\n    },\n\n    moveComponentForward($element) {\n      const $li = $element.closest('li');\n      const $prev = $li.prev();\n      if ($prev.length) {\n        $li.insertBefore($prev);\n        this.onChange();\n      }\n    },\n\n    moveComponentBackward($element) {\n      const $li = $element.closest('li');\n      const $next = $li.next();\n      if ($next.length) {\n        $li.insertAfter($next);\n        this.onChange();\n      }\n    },\n\n    removeComponents: function ($components) {\n      if (this.settings.selectable) {\n        this.componentSelect.removeItems($components);\n      }\n\n      // Disable the hidden input in case the form is submitted before this component gets removed from the DOM\n      $components.children('input').prop('disabled', true);\n\n      for (let i = 0; i < $components.length; i++) {\n        this.showOption($components.eq(i).data('id'));\n      }\n\n      // Move the focus to the next component in the list, if there is one\n      let $nextComponent;\n      if (this.settings.selectable) {\n        const lastComponentIndex = this.$components.index($components.last());\n        $nextComponent = this.$components.eq(lastComponentIndex + 1);\n      }\n      if ($nextComponent.length) {\n        $nextComponent.focus();\n      } else {\n        this.focusNextLogicalElement();\n      }\n\n      this.$components = this.$components.not($components);\n      this.onChange();\n    },\n\n    removeComponent: function ($component) {\n      // Remove any inputs from the form data\n      $('[name]', $component).removeAttr('name');\n      this.removeComponents($component);\n      this.animateComponentAway($component, () => {\n        $component.parent('li').remove();\n      });\n    },\n\n    animateComponentAway: function ($component, callback) {\n      $component.css('z-index', 0);\n\n      var animateCss = {\n        opacity: -1,\n      };\n      animateCss['margin-' + Craft.left] = -(\n        $component.outerWidth() +\n        parseInt($component.css('margin-' + Craft.right))\n      );\n\n      animateCss['margin-bottom'] = -(\n        $component.outerHeight() + parseInt($component.css('margin-bottom'))\n      );\n\n      $component.velocity(\n        animateCss,\n        Craft.ComponentSelectInput.REMOVE_FX_DURATION,\n        () => {\n          if (callback) {\n            callback();\n          }\n        }\n      );\n    },\n\n    getSelectedComponentIds() {\n      const ids = [];\n      for (let i = 0; i < this.$components.length; i++) {\n        ids.push(this.$components.eq(i).data('id'));\n      }\n      return ids;\n    },\n\n    async addComponent(type, id, addToMenu = false) {\n      const disclosureMenu = this.$addBtn.length\n        ? this.$addBtn.disclosureMenu().data('disclosureMenu')\n        : null;\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'app/render-components',\n        {\n          data: {\n            components: [\n              {\n                type,\n                id,\n                instances: [\n                  {\n                    showActionMenu: this.settings.showActionMenu,\n                    inputName: this.settings.name,\n                  },\n                ],\n              },\n            ],\n            withMenuItems: addToMenu,\n            menuId: disclosureMenu?.$container.attr('id'),\n          },\n        }\n      );\n\n      const canAdd = this.canAddMoreComponents();\n\n      if (canAdd) {\n        const $component = $(data.components[type][id][0]);\n        $('<li/>').append($component).appendTo(this.$list);\n        this.addComponents($component);\n      }\n\n      if (addToMenu && disclosureMenu) {\n        const $menuItem = $(data.menuItems[type][id]);\n        disclosureMenu.addItem($menuItem);\n        if (canAdd) {\n          disclosureMenu.hideItem($menuItem.children()[0]);\n        }\n        this.addListener($menuItem.find('button'), 'activate', () => {\n          this.addComponent(type, id);\n        });\n      }\n\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n    },\n  },\n  {\n    REMOVE_FX_DURATION: 200,\n    defaults: {\n      id: null,\n      name: null,\n      limit: null,\n      sortable: true,\n      selectable: true,\n      showActionMenu: true,\n      createAction: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * CP Screen Slideout\n */\nCraft.CpModal = Garnish.Modal.extend(\n  {\n    action: null,\n\n    namespace: null,\n\n    showingLoadSpinner: false,\n\n    $loadSpinner: null,\n\n    $container: null,\n\n    $body: null,\n    $content: null,\n\n    $sidebar: null,\n\n    $footer: null,\n\n    $cancelBtn: null,\n    $saveBtn: null,\n\n    showingSidebar: false,\n\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    fieldsWithErrors: null,\n\n    init: function (action, settings) {\n      this.action = action;\n      this.setSettings(settings, Craft.CpModal.defaults);\n\n      this.fieldsWithErrors = [];\n\n      // Body\n      this.$body = $('<div/>', {class: 'cpmodal-body'});\n\n      // Content\n      this.$content = $('<div/>', {class: 'cpmodal-content'}).appendTo(\n        this.$body\n      );\n\n      // Footer\n      this.$footer = $('<div/>', {class: 'cpmodal-footer hidden'});\n\n      $('<div/>', {class: 'flex-grow'}).appendTo(this.$footer);\n\n      const $btnContainer = $('<div/>', {class: 'flex flex-nowrap'}).appendTo(\n        this.$footer\n      );\n\n      this.$loadSpinner = $('<div/>', {\n        class: 'spinner',\n        title: Craft.t('app', 'Loading'),\n        'aria-label': Craft.t('app', 'Loading'),\n      }).prependTo($btnContainer);\n\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($btnContainer);\n\n      if (this.settings.showSubmitButton) {\n        this.$saveBtn = Craft.ui\n          .createSubmitButton({\n            label: Craft.t('app', 'Save'),\n            spinner: true,\n          })\n          .appendTo($btnContainer);\n      }\n\n      this.$container = $(\n        `<${this.settings.containerElement}/>`,\n        this.settings.containerAttributes\n      );\n\n      let $contents = this.$body.add(this.$footer);\n\n      this.$container.append($contents);\n\n      this.base(this.$container, {\n        autoShow: false,\n      });\n\n      this.$container.data('cpModal', this);\n\n      // Register shortcuts & events\n      Garnish.uiLayerManager.registerShortcut(\n        {\n          keyCode: Garnish.S_KEY,\n          ctrl: true,\n        },\n        (ev) => {\n          this.handleSubmit(ev);\n        }\n      );\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$cancelBtn, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$shade, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$container, 'click', (ev) => {\n        const $target = $(event.target);\n\n        if (\n          this.showingSidebar &&\n          !$target.closest(this.$sidebarBtn).length &&\n          !$target.closest(this.$sidebar).length\n        ) {\n          this.hideSidebar();\n        }\n      });\n      this.addListener(this.$container, 'submit', 'handleSubmit');\n\n      this.load();\n    },\n\n    /**\n     * @param {Object} [data={}]\n     * @param {boolean} [refreshInitialData=true]\n     * @returns {Promise}\n     */\n    load: function (data, refreshInitialData) {\n      return new Promise((resolve, reject) => {\n        this.trigger('beforeLoad');\n        this.showLoadSpinner();\n\n        if (this.cancelToken) {\n          this.ignoreFailedRequest = true;\n          this.cancelToken.cancel();\n        }\n\n        this.cancelToken = axios.CancelToken.source();\n\n        Craft.sendActionRequest(\n          'GET',\n          this.action,\n          $.extend(\n            {\n              params: Object.assign({}, this.getParams(), this.settings.params),\n              cancelToken: this.cancelToken.token,\n              headers: {\n                'X-Craft-Container-Id': this.$container.attr('id'),\n              },\n            },\n            this.settings.requestOptions\n          )\n        )\n          .then((response) => {\n            this.update(response.data)\n              .then(() => {\n                if (refreshInitialData !== false) {\n                  this.$container.data('delta-names', response.data.deltaNames);\n                  this.$container.data(\n                    'initial-delta-values',\n                    response.data.initialDeltaValues\n                  );\n                  this.$container.data(\n                    'initialSerializedValue',\n                    this.$container.serialize()\n                  );\n                }\n                resolve();\n              })\n              .catch((e) => {\n                reject(e);\n              });\n          })\n          .catch((e) => {\n            if (!this.ignoreFailedRequest) {\n              Craft.cp.displayError();\n              reject(e);\n            }\n            this.ignoreFailedRequest = false;\n          })\n          .finally(() => {\n            this.hideLoadSpinner();\n            this.show();\n            this.cancelToken = null;\n          });\n      });\n    },\n\n    getParams: function () {\n      return {};\n    },\n\n    showLoadSpinner: function () {\n      this.$loadSpinner.removeClass('hidden');\n      this.showingLoadSpinner = true;\n    },\n\n    hideLoadSpinner: function () {\n      this.$loadSpinner.addClass('hidden');\n      this.showingLoadSpinner = false;\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    update: function (data) {\n      return new Promise((resolve) => {\n        this.namespace = data.namespace;\n\n        if (data.bodyClass) {\n          this.$body.addClass(data.bodyClass);\n        }\n\n        this.$content.html(data.content);\n\n        if (data.submitButtonLabel) {\n          this.$saveBtn.text(data.submitButtonLabel);\n        }\n\n        if (data.formAttributes) {\n          Craft.setElementAttributes(this.$container, data.formAttributes);\n        }\n\n        this.$footer.removeClass('hidden');\n\n        Garnish.requestAnimationFrame(() => {\n          Craft.appendHeadHtml(data.headHtml);\n          Craft.appendBodyHtml(data.bodyHtml);\n\n          Craft.initUiElements(this.$content);\n          Craft.cp.elementThumbLoader.load($(this.$content));\n\n          if (!Garnish.isMobileBrowser()) {\n            Craft.setFocusWithin(this.$content);\n          }\n\n          resolve();\n          this.trigger('load');\n        });\n      });\n    },\n\n    showSubmitSpinner: function () {\n      this.$saveBtn.addClass('loading');\n    },\n\n    hideSubmitSpinner: function () {\n      this.$saveBtn.removeClass('loading');\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      this.submit();\n    },\n\n    submit: function () {\n      this.showSubmitSpinner();\n      const data = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        this.$container.serialize(),\n        null,\n        this.$container.data('initial-delta-values')\n      );\n\n      Craft.sendActionRequest('POST', null, {\n        data,\n        headers: {\n          'X-Craft-Namespace': this.namespace,\n        },\n      })\n        .then((response) => {\n          this.handleSubmitResponse(response);\n        })\n        .catch((error) => {\n          this.handleSubmitError(error);\n        })\n        .finally(() => {\n          this.hideSubmitSpinner();\n        });\n    },\n\n    handleSubmitResponse: function (response) {\n      this.clearErrors();\n      const data = response.data || {};\n      if (data.message) {\n        Craft.cp.displaySuccess(data.message, data.notificationSettings);\n      }\n      if (data.modelClass && data.modelId) {\n        Craft.refreshComponentInstances(data.modelClass, data.modelId);\n      }\n      this.trigger('submit', {\n        response: response,\n        data: (data.modelName && data[data.modelName]) || {},\n      });\n      if (this.settings.closeOnSubmit) {\n        this.close();\n      }\n    },\n\n    handleSubmitError: function (error) {\n      if (\n        !error.isAxiosError ||\n        !error.response ||\n        !error.response.status === 400\n      ) {\n        Craft.cp.displayError();\n        throw error;\n      }\n\n      const data = error.response.data || {};\n      Craft.cp.displayError(data.message);\n      if (data.errors) {\n        this.showErrors(data.errors);\n      }\n    },\n\n    /**\n     * @param {string[]} errors\n     */\n    showErrors: function (errors) {\n      this.clearErrors();\n\n      Object.entries(errors).forEach(([name, fieldErrors]) => {\n        const $field = this.$container.find(`[data-attribute=\"${name}\"]`);\n        if ($field) {\n          Craft.ui.addErrorsToField($field, fieldErrors);\n          this.fieldsWithErrors.push($field);\n        }\n      });\n      this.updateSizeAndPosition();\n    },\n\n    clearErrors: function () {\n      this.fieldsWithErrors.forEach(($field) => {\n        Craft.ui.clearErrorsFromField($field);\n      });\n    },\n\n    isDirty: function () {\n      const initialValue = this.$container.data('initialSerializedValue');\n      if (typeof initialValue === 'undefined') {\n        return false;\n      }\n\n      const serializer =\n        this.$container.data('serializer') ||\n        (() => this.$container.serialize());\n      return initialValue !== serializer();\n    },\n\n    closeMeMaybe: function () {\n      if (!this.visible) {\n        return;\n      }\n\n      if (\n        !this.isDirty() ||\n        confirm(\n          Craft.t(\n            'app',\n            'Are you sure you want to close this screen? Any changes will be lost.'\n          )\n        )\n      ) {\n        this.close();\n      }\n    },\n\n    close: function () {\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n      this.trigger('close');\n      this.destroy();\n    },\n  },\n  {\n    defaults: {\n      params: {},\n      containerElement: 'form',\n      containerAttributes: {\n        id: `cp-modal-${Math.floor(Math.random() * 100000000)}`,\n        action: '',\n        method: 'post',\n        novalidate: '',\n        class: 'cpmodal modal fitted',\n      },\n      requestOptions: {},\n      closeOnSubmit: true,\n      showSubmitButton: true,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * CP Screen Slideout\n */\nCraft.CpScreenSlideout = Craft.Slideout.extend(\n  {\n    action: null,\n\n    namespace: null,\n\n    showingLoadSpinner: false,\n    hasTabs: false,\n    hasCpLink: false,\n    hasSidebar: false,\n\n    $header: null,\n    $toolbar: null,\n    $tabContainer: null,\n    $loadSpinner: null,\n    $actionBtn: null,\n    $editLink: null,\n    $sidebarBtn: null,\n\n    $body: null,\n    $content: null,\n\n    $sidebar: null,\n\n    $footer: null,\n    $noticeContainer: null,\n    $cancelBtn: null,\n    $saveBtn: null,\n\n    tabManager: null,\n    showingSidebar: false,\n\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    fieldsWithErrors: null,\n\n    init: function (action, settings) {\n      this.action = action;\n      this.setSettings(settings, Craft.CpScreenSlideout.defaults);\n\n      this.fieldsWithErrors = [];\n\n      // Header\n      this.$header = $('<header/>', {class: 'pane-header'});\n      this.$toolbar = $('<div/>', {class: 'so-toolbar'}).appendTo(this.$header);\n      this.$tabContainer = $('<div/>', {class: 'pane-tabs'}).appendTo(\n        this.$toolbar\n      );\n      this.$loadSpinner = $('<div/>', {\n        class: 'spinner',\n        title: Craft.t('app', 'Loading'),\n        'aria-label': Craft.t('app', 'Loading'),\n      }).appendTo(this.$toolbar);\n      this.$editLink = $('<a/>', {\n        target: '_blank',\n        class: 'btn header-btn hidden',\n        title: Craft.t('app', 'Open in a new tab'),\n        'aria-label': Craft.t('app', 'Open in a new tab'),\n        'data-icon': 'external',\n      }).appendTo(this.$toolbar);\n      this.$sidebarBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn header-btn hidden sidebar-btn',\n        title: Craft.t('app', 'Show sidebar'),\n        'aria-label': Craft.t('app', 'Show sidebar'),\n        'data-icon': `sidebar-${Garnish.ltr ? 'right' : 'left'}`,\n        'aria-expanded': 'false',\n      }).appendTo(this.$toolbar);\n\n      this.addListener(this.$sidebarBtn, 'click', (ev) => {\n        ev.preventDefault();\n        if (!this.showingSidebar) {\n          this.showSidebar();\n        } else {\n          this.hideSidebar();\n        }\n      });\n\n      // Body\n      this.$body = $('<div/>', {class: 'so-body'});\n\n      // Content\n      this.$content = $('<div/>', {class: 'so-content'}).appendTo(this.$body);\n\n      // Sidebar\n      this.$sidebar = $('<div/>', {\n        class: 'so-sidebar details hidden',\n      }).appendTo(this.$body);\n\n      // Footer\n      this.$footer = $('<div/>', {class: 'so-footer hidden'});\n      this.$noticeContainer = $('<div/>', {class: 'so-notice'}).appendTo(\n        this.$footer\n      );\n      $('<div/>', {class: 'flex-grow'}).appendTo(this.$footer);\n      const $btnContainer = $('<div/>', {class: 'flex flex-nowrap'}).appendTo(\n        this.$footer\n      );\n      this.$cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($btnContainer);\n      this.$saveBtn = Craft.ui\n        .createSubmitButton({\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .appendTo($btnContainer);\n\n      let $contents = this.$header.add(this.$body).add(this.$footer);\n\n      this.base($contents, {\n        containerElement: 'form',\n        containerAttributes: {\n          id: `cp-screen-${Math.floor(Math.random() * 100000000)}`,\n          action: '',\n          method: 'post',\n          novalidate: '',\n          class: 'cp-screen',\n        },\n        closeOnEsc: false,\n        closeOnShadeClick: false,\n      });\n\n      this.$container.data('cpScreen', this);\n      this.on('beforeClose', () => {\n        this.hideSidebarIfOverlapping();\n      });\n\n      // Register shortcuts & events\n      Garnish.uiLayerManager.registerShortcut(\n        {\n          keyCode: Garnish.S_KEY,\n          ctrl: true,\n        },\n        (ev) => {\n          this.handleSubmit(ev);\n        }\n      );\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$cancelBtn, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$shade, 'click', () => {\n        this.closeMeMaybe();\n      });\n      this.addListener(this.$container, 'click', (ev) => {\n        const $target = $(event.target);\n\n        if (\n          this.showingSidebar &&\n          !$target.closest(this.$sidebarBtn).length &&\n          !$target.closest(this.$sidebar).length\n        ) {\n          this.hideSidebarIfOverlapping();\n        }\n      });\n      this.addListener(this.$container, 'submit', 'handleSubmit');\n\n      this.load();\n    },\n\n    /**\n     * @param {Object} [data={}]\n     * @param {boolean} [refreshInitialData=true]\n     * @returns {Promise}\n     */\n    load: function (data, refreshInitialData) {\n      return new Promise((resolve, reject) => {\n        this.trigger('beforeLoad');\n        this.showLoadSpinner();\n\n        if (this.cancelToken) {\n          this.ignoreFailedRequest = true;\n          this.cancelToken.cancel();\n        }\n\n        this.cancelToken = axios.CancelToken.source();\n\n        Craft.sendActionRequest(\n          'GET',\n          this.action,\n          $.extend(\n            {\n              params: Object.assign({}, this.getParams(), this.settings.params),\n              cancelToken: this.cancelToken.token,\n              headers: {\n                'X-Craft-Container-Id': this.$container.attr('id'),\n              },\n            },\n            this.settings.requestOptions\n          )\n        )\n          .then((response) => {\n            this.update(response.data)\n              .then(() => {\n                if (refreshInitialData !== false) {\n                  this.$container.data('delta-names', response.data.deltaNames);\n                  this.$container.data(\n                    'initial-delta-values',\n                    response.data.initialDeltaValues\n                  );\n                  this.$container.data(\n                    'initialSerializedValue',\n                    this.$container.serialize()\n                  );\n                }\n                resolve();\n              })\n              .catch((e) => {\n                reject(e);\n              });\n          })\n          .catch((e) => {\n            if (!this.ignoreFailedRequest) {\n              Craft.cp.displayError();\n              reject(e);\n            }\n            this.ignoreFailedRequest = false;\n          })\n          .finally(() => {\n            this.hideLoadSpinner();\n            this.cancelToken = null;\n          });\n      });\n    },\n\n    getParams: function () {\n      return {};\n    },\n\n    updateHeaderVisibility: function () {\n      // Should the header be shown regardless of viewport size?\n      const forceShow =\n        this.settings.showHeader ||\n        this.hasTabs ||\n        this.hasCpLink ||\n        this.showingLoadSpinner;\n\n      if (forceShow || this.hasSidebar) {\n        this.$header.removeClass('hidden');\n      } else {\n        this.$header.addClass('hidden');\n      }\n\n      if (forceShow) {\n        this.$header.addClass('so-visible');\n      } else {\n        this.$header.removeClass('so-visible');\n      }\n    },\n\n    showLoadSpinner: function () {\n      this.$loadSpinner.removeClass('hidden');\n      this.showingLoadSpinner = true;\n      this.updateHeaderVisibility();\n    },\n\n    hideLoadSpinner: function () {\n      this.$loadSpinner.addClass('hidden');\n      this.showingLoadSpinner = false;\n      this.updateHeaderVisibility();\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    update: function (data) {\n      return new Promise((resolve) => {\n        this.namespace = data.namespace;\n\n        if (data.bodyClass) {\n          this.$body.addClass(data.bodyClass);\n        }\n\n        this.$content.html(data.content);\n\n        if (data.submitButtonLabel) {\n          this.$saveBtn.text(data.submitButtonLabel);\n        }\n\n        this.updateTabs(data.tabs);\n\n        if (data.formAttributes) {\n          Craft.setElementAttributes(this.$container, data.formAttributes);\n        }\n\n        if (data.editUrl) {\n          this.$editLink.removeClass('hidden').attr('href', data.editUrl);\n          this.hasCpLink = true;\n        } else {\n          this.$editLink.addClass('hidden');\n          this.hasCpLink = false;\n        }\n\n        if (data.actionMenu) {\n          const labelId = Craft.namespaceId(\n            'action-menu-label',\n            this.namespace\n          );\n          const menuId = Craft.namespaceId('action-menu', this.namespace);\n          $('<label/>', {\n            id: labelId,\n            class: 'visually-hidden',\n            text: Craft.t('app', 'Actions'),\n          }).insertBefore(this.$editLink);\n          this.$actionBtn = $('<button/>', {\n            class: 'btn action-btn header-btn',\n            type: 'button',\n            title: Craft.t('app', 'Actions'),\n            'aria-controls': menuId,\n            'aria-describedby': labelId,\n            'data-disclosure-trigger': 'true',\n          }).insertBefore(this.$editLink);\n          $(data.actionMenu).insertBefore(this.$editLink);\n          this.$actionBtn.disclosureMenu();\n        } else {\n          this.$actionBtn = null;\n        }\n\n        if (data.sidebar) {\n          this.$sidebarBtn.removeClass('hidden');\n          this.$sidebar.html(data.sidebar);\n\n          // Open outbound links in new windows\n          this.$sidebar.find('a').each(function () {\n            if (\n              this.hostname.length &&\n              typeof $(this).attr('target') === 'undefined'\n            ) {\n              $(this).attr('target', '_blank');\n            }\n          });\n\n          this.hasSidebar = true;\n\n          // is the slideout wide enough to show it alongside the content?\n          if (this.$container.width() > 700) {\n            this.showSidebar();\n          } else {\n            this.hideSidebar();\n          }\n        } else {\n          this.hideSidebar();\n          this.$sidebarBtn.addClass('hidden');\n          this.$sidebar.addClass('hidden').html('');\n          this.hasSidebar = false;\n        }\n\n        if (data.notice) {\n          this.$noticeContainer.html(data.notice);\n        } else {\n          this.$noticeContainer.empty();\n        }\n\n        this.updateHeaderVisibility();\n        this.$footer.removeClass('hidden');\n\n        Garnish.requestAnimationFrame(async () => {\n          Craft.initUiElements(this.$content);\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n          Craft.cp.elementThumbLoader.load($(this.$content));\n\n          if (data.sidebar) {\n            Craft.initUiElements(this.$sidebar);\n            Craft.cp.elementThumbLoader.load(this.$sidebar);\n          }\n\n          if (!Garnish.isMobileBrowser()) {\n            Craft.setFocusWithin(this.$content);\n          }\n\n          resolve();\n          this.trigger('load');\n        });\n      });\n    },\n\n    updateTabs: function (tabs) {\n      if (this.tabManager) {\n        this.tabManager.destroy();\n        this.tabManager = null;\n        this.$tabContainer.html('');\n      }\n\n      this.hasTabs = !!tabs;\n\n      if (this.hasTabs) {\n        const $tabContainer = $(tabs);\n        this.$tabContainer.replaceWith($tabContainer);\n        this.$tabContainer = $tabContainer;\n        this.tabManager = new Craft.Tabs(this.$tabContainer);\n        this.tabManager.on('deselectTab', (ev) => {\n          $(ev.$tab.attr('href')).addClass('hidden');\n        });\n        this.tabManager.on('selectTab', (ev) => {\n          $(ev.$tab.attr('href')).removeClass('hidden');\n          Garnish.$win.trigger('resize');\n          this.$body.trigger('scroll');\n        });\n      }\n    },\n\n    showSidebar: function () {\n      if (this.showingSidebar) {\n        return;\n      }\n\n      this.$container.addClass('showing-sidebar');\n      this.$body.scrollTop(0).addClass('no-scroll');\n\n      this.$sidebar\n        .off('transitionend.so')\n        .css(this._closedSidebarStyles())\n        .removeClass('hidden');\n\n      // Hack to force CSS animations\n      this.$sidebar[0].offsetWidth;\n\n      this.$sidebar.css(this._openedSidebarStyles());\n\n      if (!Garnish.isMobileBrowser()) {\n        this.$sidebar.one('transitionend.so', () => {\n          Craft.setFocusWithin(this.$sidebar);\n        });\n      }\n\n      Craft.trapFocusWithin(this.$sidebar);\n\n      this.$sidebarBtn.addClass('active').attr({\n        'aria-expanded': 'true',\n      });\n\n      Garnish.$win.trigger('resize');\n      this.$sidebar.trigger('scroll');\n\n      Garnish.uiLayerManager.addLayer({\n        bubble: true,\n      });\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, (ev) => {\n        this.hideSidebarIfOverlapping() || ev.bubbleShortcut();\n      });\n\n      this.showingSidebar = true;\n    },\n\n    hideSidebar: function () {\n      if (!this.showingSidebar) {\n        return;\n      }\n\n      this.$container.removeClass('showing-sidebar');\n      this.$body.removeClass('no-scroll');\n\n      this.$sidebar\n        .off('transitionend.so')\n        .css(this._closedSidebarStyles())\n        .one('transitionend.so', () => {\n          this.$sidebar.addClass('hidden');\n          this.$sidebarBtn.focus();\n        });\n\n      this.$sidebarBtn.removeClass('active').attr({\n        'aria-expanded': 'false',\n      });\n\n      Garnish.uiLayerManager.removeLayer();\n\n      this.showingSidebar = false;\n    },\n\n    hideSidebarIfOverlapping() {\n      if (this.showingSidebar && this.$sidebar.css('position') === 'absolute') {\n        this.hideSidebar();\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    _openedSidebarStyles: function () {\n      return {\n        [Garnish.ltr ? 'right' : 'left']: '0',\n      };\n    },\n\n    _closedSidebarStyles: function () {\n      return {\n        [Garnish.ltr ? 'right' : 'left']: '-350px',\n      };\n    },\n\n    showSubmitSpinner: function () {\n      this.$saveBtn.addClass('loading');\n    },\n\n    hideSubmitSpinner: function () {\n      this.$saveBtn.removeClass('loading');\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      // give other submit handlers a chance to modify things\n      setTimeout(() => {\n        this.submit();\n      }, 1);\n    },\n\n    submit: function () {\n      this.showSubmitSpinner();\n\n      const data = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        this.$container.serialize(),\n        this.$container.data('delta-names'),\n        null,\n        this.$container.data('initial-delta-values')\n      );\n\n      Craft.sendActionRequest('POST', null, {\n        data,\n        headers: {\n          'X-Craft-Namespace': this.namespace,\n        },\n      })\n        .then((response) => {\n          this.handleSubmitResponse(response);\n        })\n        .catch((error) => {\n          this.handleSubmitError(error);\n        })\n        .finally(() => {\n          this.hideSubmitSpinner();\n        });\n    },\n\n    handleSubmitResponse: function (response) {\n      this.clearErrors();\n      const data = response.data || {};\n      if (data.message) {\n        Craft.cp.displaySuccess(data.message, data.notificationSettings);\n      }\n      if (data.modelClass && data.modelId) {\n        Craft.refreshComponentInstances(data.modelClass, data.modelId);\n      }\n      this.trigger('submit', {\n        response: response,\n        data: (data.modelName && data[data.modelName]) || {},\n      });\n      if (this.settings.closeOnSubmit) {\n        this.close();\n      }\n    },\n\n    handleSubmitError: function (error) {\n      if (\n        !error.isAxiosError ||\n        !error.response ||\n        !error.response.status === 400\n      ) {\n        Craft.cp.displayError();\n        throw error;\n      }\n\n      const data = error.response.data || {};\n      Craft.cp.displayError(data.message);\n      if (data.errors) {\n        this.showErrors(data.errors);\n      }\n\n      if (data.errorSummary) {\n        this.showErrorSummary(\n          data.errorSummary,\n          Object.keys(data.errors || {}).length\n        );\n      }\n    },\n\n    showErrorSummary: function (errorSummary, errorCount = 0) {\n      // start by clearing any error summary that might be left\n      Craft.ui.clearErrorSummary(this.$body);\n\n      // if we have multiple tabs - split the error summary into them\n      if (this.tabManager !== null) {\n        let $tabs = this.tabManager.$tabs;\n        let $tabsWithErrors = $tabs.filter('.error');\n        let $content = this.$content;\n\n        $tabs.each(function (i, tab) {\n          let tabDataId = $(tab).data('id');\n          let $tabContainer = $content.find('#' + tabDataId);\n          if ($tabContainer.length > 0) {\n            let tabUid = $tabContainer.data('layout-tab');\n            let $tabErrorSummary = $(errorSummary);\n            let tabErrorCount = $tabErrorSummary.find('ul.errors li').length;\n            let headingText = '';\n\n            // remove any errors that are not specifically for this tab\n            // leave out errors that don't have a tab assignment (e.g. cross-validation errors)\n            $tabErrorSummary.find('ul.errors li').each(function (j, error) {\n              let errorTabUid = $(error).find('a').data('layout-tab');\n              if (\n                typeof errorTabUid !== 'undefined' &&\n                errorTabUid !== tabUid\n              ) {\n                $(error).remove();\n                tabErrorCount--;\n              }\n            });\n\n            if (tabErrorCount > 0) {\n              headingText = Craft.t(\n                'app',\n                'Found {num, number} {num, plural, =1{error} other{errors}} in this tab.',\n                {num: tabErrorCount}\n              );\n\n              // if there are errors in any other tabs - tell users about it.\n              if ($tabsWithErrors.length - 1 > 0) {\n                headingText +=\n                  '<span class=\"visually-hidden\">' +\n                  Craft.t(\n                    'app',\n                    '{total, number} {total, plural, =1{error} other{errors}} found in {num, number} {num, plural, =1{tab} other{tabs}}.',\n                    {\n                      total: errorCount,\n                      num: $tabsWithErrors.length,\n                    }\n                  ) +\n                  '</span>';\n              }\n            } else {\n              headingText = Craft.t('app', 'Found errors in other tabs.');\n            }\n\n            $tabErrorSummary.find('h2').html(headingText);\n\n            $tabErrorSummary.prependTo($tabContainer);\n            Craft.ui.setFocusOnErrorSummary($tabContainer); // this also makes the deep linking work\n          }\n        });\n      } else {\n        // if we only have one tab - just show the error summary as is\n        $(errorSummary).prependTo(this.$content);\n        Craft.ui.setFocusOnErrorSummary(this.$content);\n      }\n    },\n\n    /**\n     * @param {string[]} errors\n     */\n    showErrors: function (errors) {\n      this.clearErrors();\n\n      const tabMenu = this.tabManager?.menu || [];\n      const tabErrorIndicator =\n        '<span data-icon=\"alert\">' +\n        '<span class=\"visually-hidden\">' +\n        Craft.t('app', 'This tab contains errors') +\n        '</span>\\n' +\n        '</span>';\n\n      Object.entries(errors).forEach(([name, fieldErrors]) => {\n        const $field = this.$container.find(`[data-error-key=\"${name}\"]`);\n        if ($field) {\n          Craft.ui.addErrorsToField($field, fieldErrors);\n          this.fieldsWithErrors.push($field);\n\n          // find tabs that contain fields with errors\n          let fieldTabAnchors = Craft.ui.findTabAnchorForField(\n            $field,\n            this.$container\n          );\n\n          // add error indicator to tabs\n          if (fieldTabAnchors.length > 0) {\n            // add error indicator to the tabs menuBtn\n            if (this.tabManager.$menuBtn.hasClass('error') == false) {\n              this.tabManager.$menuBtn.addClass('error');\n              this.tabManager.$menuBtn.append(\n                '<span data-icon=\"alert\"></span>'\n              );\n            }\n\n            for (let i = 0; i < fieldTabAnchors.length; i++) {\n              let $fieldTabAnchor = $(fieldTabAnchors[i]);\n\n              if ($fieldTabAnchor.hasClass('error') == false) {\n                $fieldTabAnchor.addClass('error');\n                $fieldTabAnchor.find('.tab-label').append(tabErrorIndicator);\n\n                // also add the error indicator to the disclosure menu for the tabs\n                if (tabMenu.length) {\n                  let $tabMenuItem = tabMenu.find(\n                    '[data-id=' + $fieldTabAnchor.data('id') + ']'\n                  );\n                  if (\n                    $tabMenuItem.length > 0 &&\n                    $tabMenuItem.hasClass('error') == false\n                  ) {\n                    $tabMenuItem.addClass('error');\n                    $tabMenuItem.append(tabErrorIndicator);\n                  }\n                }\n              }\n            }\n          }\n        }\n      });\n    },\n\n    clearErrors: function () {\n      this.fieldsWithErrors.forEach(($field) => {\n        Craft.ui.clearErrorsFromField($field);\n      });\n    },\n\n    isDirty: function () {\n      const initialValue = this.$container.data('initialSerializedValue');\n      if (typeof initialValue === 'undefined') {\n        return false;\n      }\n\n      const serializer =\n        this.$container.data('serializer') ||\n        (() => this.$container.serialize());\n      return initialValue !== serializer();\n    },\n\n    closeMeMaybe: function () {\n      if (!this.isOpen) {\n        return;\n      }\n\n      if (\n        !this.isDirty() ||\n        confirm(\n          Craft.t(\n            'app',\n            'Are you sure you want to close this screen? Any changes will be lost.'\n          )\n        )\n      ) {\n        this.close();\n      }\n    },\n\n    close: function () {\n      if (this.showingSidebar) {\n        this.hideSidebar();\n      }\n\n      this.base();\n\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n    },\n  },\n  {\n    defaults: {\n      params: {},\n      requestOptions: {},\n      showHeader: null,\n      closeOnSubmit: true,\n    },\n  }\n);\n","/**\n * Very simple disclosure trigger.\n *\n * Allows you to wrap a button[type=\"button\"] and target an element to toggle the `is-open` class on.\n * Set `aria-expanded` on the button\n */\nclass CraftDisclosure extends HTMLElement {\n  connectedCallback() {\n    this.trigger = this.querySelector('button[type=\"button\"]');\n    if (!this.trigger) {\n      console.error(`craft-disclosure elements must include a button`, this);\n      return;\n    }\n\n    this.target = document.getElementById(\n      this.trigger.getAttribute('aria-controls')\n    );\n    if (!this.target) {\n      console.error(\n        `No target with id ${this.trigger.getAttribute(\n          'aria-controls'\n        )} found for disclosure. `,\n        this.trigger\n      );\n      return;\n    }\n\n    if (!this.trigger.getAttribute('aria-expanded')) {\n      this.trigger.setAttribute('aria-expanded', 'false');\n    }\n\n    this.trigger.addEventListener('click', this.toggle.bind(this));\n\n    this.expanded = this.trigger.getAttribute('aria-expanded') === 'true';\n    this.expanded ? this.open() : this.close();\n  }\n\n  disconnectedCallback() {\n    this.open();\n    this.trigger.removeEventListener('click', this.toggle.bind(this));\n  }\n\n  toggle() {\n    if (this.expanded) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  open() {\n    this.trigger.setAttribute('aria-expanded', 'true');\n    this.expanded = true;\n    this.target.dataset.state = 'expanded';\n    this.dispatchEvent(new CustomEvent('open'));\n  }\n\n  close() {\n    this.trigger.setAttribute('aria-expanded', 'false');\n    this.expanded = false;\n    this.target.dataset.state = 'collapsed';\n    this.dispatchEvent(new CustomEvent('close'));\n  }\n}\n\ncustomElements.define('craft-disclosure', CraftDisclosure);\n","/** global: $ */\n/** global: jQuery */\n\n/**\n * Element label\n *\n * Displays a tooltip when the label link overflows its container.\n *\n * @method update Recalculate overflow and create tooltip if necessary.\n * @method calculateWidth Calculate the desired width of the label.\n *\n * @example <craft-element-label><a href=\"#\" class=\"label-link\">Label</a></craft-element-label>\n */\nclass CraftElementLabel extends HTMLElement {\n  connectedCallback() {\n    this.labelLink = this.querySelector('.label-link');\n    this.tooltip = null;\n\n    if (!this.labelLink) {\n      console.warn('No label link found in craft-element-label.');\n      return;\n    }\n\n    /**\n     * When the element is inside a tab, we need to listen for tab changes.\n     * Tabs are initially rendered as `display: none` which will cause the\n     * label to have a width of 0\n     */\n    this.$tabs = $('#tabs');\n    if (this.$tabs.length && this.$tabs.data('tabs')) {\n      this.$tabs.data('tabs').on('selectTab', () => {\n        this.update();\n      });\n    }\n\n    this.update();\n\n    // Update again when the document is ready.\n    // At the moment, this is necessary for this functionality within a dashboard\n    // widget. In that case, this component is rendered too early.\n    $(() => {\n      this.update();\n    });\n  }\n\n  update() {\n    this.desiredWidth = this.calculateWidth(this.innerText);\n    this.hasOverflow = this.desiredWidth > this.scrollWidth;\n\n    // If the label has an overflow, add a tooltip\n    if (!this.hasOverflow) {\n      return;\n    }\n\n    // Do we already have a tooltip?\n    /** @type {CraftTooltip|null} */\n    this.tooltip = this.querySelector('craft-tooltip');\n\n    // If not, create one\n    if (!this.tooltip) {\n      this.createTooltip();\n    }\n  }\n\n  createTooltip() {\n    this.tooltip = document.createElement('craft-tooltip');\n    this.tooltip.setAttribute('aria-hidden', 'true');\n    this.tooltip.innerText = this.innerText;\n\n    // If there's a context label, make it a little nicer\n    const contextLabel = this.querySelector('.context-label');\n    if (contextLabel) {\n      this.tooltip.innerText = this.tooltip.innerText.replace(\n        contextLabel.innerText,\n        ` (${contextLabel.innerText})`\n      );\n    }\n\n    this.labelLink.appendChild(this.tooltip);\n  }\n\n  disconnectedCallback() {\n    this.tooltip?.remove();\n    this.$tabs.data('tabs')?.off('selectTab');\n  }\n\n  calculateWidth(text) {\n    const tag = document.createElement('span');\n    Object.assign(tag.style, {\n      position: 'absolute',\n      visibility: 'hidden',\n      whiteSpace: 'nowrap',\n      fontFamily: 'inherit',\n    });\n    tag.innerHTML = text;\n\n    this.appendChild(tag);\n    const result = tag.clientWidth;\n    this.removeChild(tag);\n    return result;\n  }\n}\n\ncustomElements.define('craft-element-label', CraftElementLabel);\n","class CraftGlobalSidebar extends HTMLElement {\n  connectedCallback() {\n    this.trigger = this.querySelector('#sidebar-trigger');\n\n    if (this.trigger) {\n      this.trigger.addEventListener('open', this.expand.bind(this));\n      this.trigger.addEventListener('close', this.collapse.bind(this));\n    }\n\n    this.items = this.querySelectorAll('.sidebar-action');\n  }\n\n  disconnectedCallback() {\n    if (this.trigger) {\n      this.trigger.removeEventListener('open', this.expand.bind(this));\n      this.trigger.removeEventListener('close', this.collapse.bind(this));\n    }\n\n    this.expand();\n  }\n\n  createTooltips() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        const tooltip = document.createElement('craft-tooltip');\n        tooltip.setAttribute('placement', 'right');\n        tooltip.innerText = item.querySelector('.label')?.innerText;\n        item.append(tooltip);\n      });\n    }\n  }\n\n  destroyTooltips() {\n    if (this.items) {\n      this.items.forEach((item) => {\n        const tooltip = item.querySelector('craft-tooltip');\n        tooltip?.remove();\n      });\n    }\n  }\n\n  expand() {\n    document.body.setAttribute('data-sidebar', 'expanded');\n    Craft.setCookie('sidebar', 'expanded');\n    this.destroyTooltips();\n  }\n\n  collapse() {\n    document.body.setAttribute('data-sidebar', 'collapsed');\n    Craft.setCookie('sidebar', 'collapsed');\n    this.createTooltips();\n  }\n}\n\ncustomElements.define('craft-global-sidebar', CraftGlobalSidebar);\n","/**\n * Proxy scrollbar\n *\n * Display a scrollbar that is synced with another element\n *\n * @property {string} scroller - The selector of the element that will be scrolled\n * @property {string} content - The selector of the element within the scroller containing the overflow content\n * @property {boolean} hidden - Whether the scrollbar should be hidden\n * @property {HTMLElement} proxy - The element that represents the scrollbar\n * @property {HTMLElement} scroller - The element that will be scrolled\n * @property {HTMLElement} content - The element within the scroller containing the overflow content\n */\nclass CraftProxyScrollbar extends HTMLElement {\n  static observedAttributes = ['hidden'];\n\n  get hidden() {\n    return this.getAttribute('hidden');\n  }\n\n  get hasOverflow() {\n    return this.content?.scrollWidth > this.scroller?.clientWidth;\n  }\n\n  connectedCallback() {\n    this.ignoreScrollEvent = false;\n    this.animation = false;\n\n    this.scroller = document.querySelector(this.getAttribute('scroller'));\n    this.content = document.querySelector(this.getAttribute('content'));\n\n    if (!this.scroller || !this.content) {\n      return;\n    }\n\n    this.proxy = document.createElement('div');\n    this.proxy.style.height = '1px';\n    this.proxy.style.width = this.content.getBoundingClientRect().width + 'px';\n\n    this.appendChild(this.proxy);\n\n    this.addEventListener('scroll', this.syncScroll(this.scroller, this));\n    this.scroller.addEventListener(\n      'scroll',\n      this.syncScroll(this, this.scroller)\n    );\n    window.addEventListener('resize', this.handleResize.bind(this));\n\n    Object.assign(this.style, {\n      display: this.hasOverflow ? 'block' : 'none',\n      overflowX: 'scroll',\n    });\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === 'hidden') {\n      this.style.display = newValue ? 'none' : 'block';\n    }\n  }\n\n  disconnectedCallback() {\n    this.proxy.remove();\n\n    this.scroller.removeEventListener(\n      'scroll',\n      this.syncScroll(this.scroller, this)\n    );\n    this.scroller.removeEventListener(\n      'scroll',\n      this.syncScroll(this, this.scroller)\n    );\n\n    window.removeEventListener('resize', this.handleResize.bind(this));\n  }\n\n  handleResize() {\n    this.proxy.style.width = this.content.getBoundingClientRect().width + 'px';\n\n    if (this.hasOverflow) {\n      this.removeAttribute('hidden');\n    } else {\n      this.setAttribute('hidden', 'true');\n    }\n  }\n\n  syncScroll(a, b) {\n    return () => {\n      if (this.ignoreScrollEvent) {\n        return false;\n      }\n\n      if (this.animation) {\n        cancelAnimationFrame(this.animation);\n      }\n\n      this.animation = requestAnimationFrame(() => {\n        this.ignoreScrollEvent = true;\n        a.scrollLeft = b.scrollLeft;\n        this.ignoreScrollEvent = false;\n      });\n    };\n  }\n}\n\ncustomElements.define('craft-proxy-scrollbar', CraftProxyScrollbar);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Customize Sources modal\n */\nCraft.CustomizeSourcesModal = Garnish.Modal.extend({\n  elementIndex: null,\n  $elementIndexSourcesContainer: null,\n\n  $sidebar: null,\n  $sidebarToggleBtn: null,\n  $sourcesContainer: null,\n  $sourcesHeader: null,\n  $sourcesHeading: null,\n  $sourceSettingsContainer: null,\n  $sourceSettingsHeader: null,\n  $addSourceMenu: null,\n  addSourceMenu: null,\n  $footer: null,\n  $footerBtnContainer: null,\n  $saveBtn: null,\n  $cancelBtn: null,\n  $loadingSpinner: null,\n\n  sourceSort: null,\n  sources: null,\n  selectedSource: null,\n\n  elementTypeName: null,\n  baseSortOptions: null,\n  availableTableAttributes: null,\n  customFieldAttributes: null,\n\n  conditionBuilderHtml: null,\n  conditionBuilderJs: null,\n  userGroups: null,\n\n  init: function (elementIndex, settings) {\n    this.base();\n\n    this.setSettings(settings, {\n      resizable: true,\n    });\n\n    this.elementIndex = elementIndex;\n    this.$elementIndexSourcesContainer = this.elementIndex.$sidebar\n      .children('nav')\n      .children('ul');\n\n    const $container = $(\n      '<form class=\"modal customize-sources-modal\"/>'\n    ).appendTo(Garnish.$bod);\n\n    this.$sidebar = $('<div class=\"cs-sidebar block-types\"/>')\n      .appendTo($container)\n      .attr({\n        role: 'navigation',\n        'aria-label': Craft.t('app', 'Source'),\n      });\n    this.$sourcesContainer = $('<div class=\"sources\">').appendTo(this.$sidebar);\n    this.$sourceSettingsContainer = $('<div class=\"source-settings\">').appendTo(\n      $container\n    );\n\n    this.$footer = $('<div class=\"footer\"/>').appendTo($container);\n    this.$footerBtnContainer = $('<div class=\"buttons right\"/>').appendTo(\n      this.$footer\n    );\n    this.$cancelBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Cancel'),\n    }).appendTo(this.$footerBtnContainer);\n    this.$saveBtn = Craft.ui\n      .createSubmitButton({\n        class: 'disabled',\n        label: Craft.t('app', 'Save'),\n        spinner: true,\n      })\n      .appendTo(this.$footerBtnContainer);\n\n    this.$loadingSpinner = $('<div class=\"spinner\"/>').appendTo(\n      this.$sourceSettingsContainer\n    );\n\n    this.setContainer($container);\n    this.show();\n\n    Craft.sendActionRequest(\n      'POST',\n      'element-index-settings/get-customize-sources-modal-data',\n      {\n        data: {\n          elementType: this.elementIndex.elementType,\n        },\n      }\n    )\n      .then((response) => {\n        this.$saveBtn.removeClass('disabled');\n        this.buildModal(response.data);\n      })\n      .finally(() => {\n        this.$loadingSpinner.remove();\n        Garnish.setFocusWithin(this.$sidebar);\n      });\n\n    this.addListener(this.$cancelBtn, 'click', 'hide');\n    this.addListener(this.$saveBtn, 'click', 'save');\n    this.addListener(this.$container, 'submit', 'save');\n  },\n\n  buildModal: async function (response) {\n    this.baseSortOptions = response.baseSortOptions;\n    this.defaultSortOptions = response.defaultSortOptions;\n    this.availableTableAttributes = response.availableTableAttributes;\n    this.customFieldAttributes = response.customFieldAttributes;\n    this.elementTypeName = response.elementTypeName;\n    this.conditionBuilderHtml = response.conditionBuilderHtml;\n    this.conditionBuilderJs = response.conditionBuilderJs;\n    this.sites = response.sites;\n    this.userGroups = response.userGroups;\n\n    if (response.headHtml) {\n      await Craft.appendHeadHtml(response.headHtml);\n    }\n    if (response.bodyHtml) {\n      await Craft.appendBodyHtml(response.bodyHtml);\n    }\n\n    // Create the source item sorter\n    this.sourceSort = new Garnish.DragSort({\n      handle: '.move',\n      axis: 'y',\n    });\n\n    // Create the sources\n    this.sources = [];\n\n    for (let i = 0; i < response.sources.length; i++) {\n      this.sources.push(this.addSource(response.sources[i]));\n    }\n\n    if (!this.selectedSource && typeof this.sources[0] !== 'undefined') {\n      this.sources[0].select();\n    }\n\n    const $menuBtnContainer = $(\n      '<div class=\"buttons left\" data-wrapper/>'\n    ).appendTo(this.$footer);\n    const $menuBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn menubtn add icon',\n      'aria-label': Craft.t('app', 'Add…'),\n      'aria-controls': 'add-source-menu',\n      title: Craft.t('app', 'Add…'),\n      'data-disclosure-trigger': '',\n    }).appendTo($menuBtnContainer);\n\n    this.$addSourceMenu = $('<div/>', {\n      id: 'add-source-menu',\n      class: 'menu menu--disclosure',\n    }).appendTo($menuBtnContainer);\n\n    const addSource = (sourceData) => {\n      const source = this.addSource(sourceData, true);\n      Garnish.scrollContainerToElement(this.$sidebar, source.$item);\n      source.select();\n      this.addSourceMenu.hide();\n    };\n\n    const $newHeadingBtn = $('<button/>', {\n      type: 'button',\n      class: 'menu-item',\n      text: Craft.t('app', 'New heading'),\n    }).on('click', () => {\n      addSource({\n        type: 'heading',\n      });\n      this.focusLabelInput();\n    });\n\n    const $newCustomSourceBtn = $('<button/>', {\n      type: 'button',\n      class: 'menu-item',\n      text: Craft.t('app', 'New custom source'),\n      'data-type': 'custom',\n    }).on('click', () => {\n      const sortOptions = this.baseSortOptions.slice(0);\n      sortOptions.push(this.defaultSortOptions);\n\n      addSource({\n        type: 'custom',\n        key: `custom:${Craft.uuid()}`,\n        sortOptions: sortOptions,\n        defaultSort: [sortOptions[0].attr, sortOptions[1].defaultDir],\n        tableAttributes: [],\n        availableTableAttributes: [],\n      });\n      this.focusLabelInput();\n    });\n\n    const $ul = $('<ul/>')\n      .append($('<li/>').append($newHeadingBtn))\n      .appendTo(this.$addSourceMenu);\n\n    if (response.conditionBuilderHtml) {\n      $('<li/>').append($newCustomSourceBtn).appendTo($ul);\n    }\n\n    if (Craft.useMobileStyles()) {\n      this.buildSidebarToggleView();\n    }\n\n    // Add resize listener to enable/disable sidebar toggle view\n    this.addListener(Garnish.$win, 'resize', this.updateSidebarView);\n\n    this.addSourceMenu = new Garnish.DisclosureMenu($menuBtn);\n  },\n\n  focusLabelInput: function () {\n    this.selectedSource.$labelInput.trigger('focus');\n  },\n\n  getSourceName: function () {\n    return this.selectedSource\n      ? this.selectedSource.sourceData.label\n      : this.sources[0].sourceData.label;\n  },\n\n  updateSidebarView: function () {\n    if (Craft.useMobileStyles()) {\n      if (!this.$sidebarToggleBtn) this.buildSidebarToggleView();\n    } else {\n      if (this.$sidebarToggleBtn) this.resetView();\n    }\n  },\n\n  resetView: function () {\n    if (this.$sourceSettingsHeader) {\n      this.$sourceSettingsHeader.remove();\n    }\n\n    if (this.$sourcesHeader) {\n      this.$sourcesHeader.remove();\n    }\n\n    this.$sidebarToggleBtn = null;\n    this.$container.removeClass('sidebar-hidden');\n  },\n\n  updateHeading: function () {\n    if (!this.$sourcesHeading) return;\n\n    this.$sourcesHeading.text(this.getSourceName());\n  },\n\n  buildSidebarToggleView: function () {\n    this.$sourcesHeader = $('<div class=\"sources-header\"/>')\n      .addClass('sidebar-header')\n      .prependTo(this.$sourcesContainer);\n\n    this.$sidebarCloseBtn = Craft.ui\n      .createButton({\n        class: 'nav-close close-btn',\n      })\n      .attr('aria-label', Craft.t('app', 'Close'))\n      .removeClass('btn')\n      .appendTo(this.$sourcesHeader);\n\n    this.$sourcesHeading = $('<h1 class=\"main-heading\"/>').text(\n      this.getSourceName()\n    );\n\n    this.$sourceSettingsHeader = $('<div class=\"source-settings-header\"/>')\n      .addClass('main-header')\n      .append(this.$sourcesHeading)\n      .prependTo(this.$sourceSettingsContainer);\n\n    // Toggle sidebar button\n    const buttonConfig = {\n      toggle: true,\n      controls: 'modal-sidebar',\n      class: 'nav-toggle',\n    };\n\n    this.$sidebarToggleBtn = Craft.ui\n      .createButton(buttonConfig)\n      .removeClass('btn')\n      .attr('aria-label', Craft.t('app', 'Show sidebar'))\n      .appendTo(this.$sourceSettingsHeader);\n\n    this.closeSidebar();\n\n    // Add listeners\n    this.addListener(this.$sidebarToggleBtn, 'click', () => {\n      this.toggleSidebar();\n    });\n\n    this.addListener(this.$sidebarCloseBtn, 'click', () => {\n      this.toggleSidebar();\n      this.$sidebarToggleBtn.trigger('focus');\n    });\n  },\n\n  toggleSidebar: function () {\n    if (this.sidebarIsOpen()) {\n      this.closeSidebar();\n    } else {\n      this.openSidebar();\n    }\n  },\n\n  openSidebar: function () {\n    this.$container.removeClass('sidebar-hidden');\n    this.$sidebarToggleBtn.attr('aria-expanded', 'true');\n    this.$sidebar.find(':focusable').first().focus();\n\n    Garnish.uiLayerManager.addLayer(this.$sidebar);\n\n    Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n      this.closeSidebar();\n\n      if (Garnish.focusIsInside(this.$sidebar)) {\n        this.$sidebarToggleBtn.focus();\n      }\n    });\n  },\n\n  closeSidebar: function () {\n    this.$container.addClass('sidebar-hidden');\n\n    if (this.$sidebarToggleBtn) {\n      this.$sidebarToggleBtn.attr('aria-expanded', 'false');\n    }\n\n    // if sidebar is topmost layer, remove layer\n    if (Garnish.uiLayerManager.currentLayer.$container.hasClass('cs-sidebar')) {\n      Garnish.uiLayerManager.removeLayer();\n    }\n  },\n\n  sidebarIsOpen: function () {\n    return this.$sidebarToggleBtn.attr('aria-expanded') === 'true';\n  },\n\n  addSource: function (sourceData, isNew) {\n    const $item = $('<div class=\"customize-sources-item\"/>').appendTo(\n      this.$sourcesContainer\n    );\n    const $itemLabel = $('<div class=\"label customize-sources-item__btn\"/>')\n      .attr({\n        tabindex: '0',\n        role: 'button',\n      })\n      .appendTo($item);\n    const $itemInput = $('<input type=\"hidden\"/>').appendTo($item);\n    $(\n      `<a class=\"move icon customize-sources-item__move\" title=\"${Craft.t(\n        'app',\n        'Reorder'\n      )}\" role=\"button\"></a>`\n    ).appendTo($item);\n\n    let source;\n\n    if (sourceData.type === 'heading') {\n      $item.addClass('heading');\n      $itemInput.attr('name', 'sourceOrder[][heading]');\n      source = new Craft.CustomizeSourcesModal.Heading(\n        this,\n        $item,\n        $itemLabel,\n        $itemInput,\n        sourceData,\n        isNew\n      );\n      source.updateItemLabel(sourceData.heading);\n    } else {\n      $itemInput.attr('name', 'sourceOrder[][key]').val(sourceData.key);\n      if (sourceData.type === 'native') {\n        source = new Craft.CustomizeSourcesModal.Source(\n          this,\n          $item,\n          $itemLabel,\n          $itemInput,\n          sourceData,\n          isNew\n        );\n      } else {\n        source = new Craft.CustomizeSourcesModal.CustomSource(\n          this,\n          $item,\n          $itemLabel,\n          $itemInput,\n          sourceData,\n          isNew\n        );\n      }\n      source.updateItemLabel(sourceData.label);\n\n      // Select this by default?\n      if (sourceData.key === this.elementIndex.rootSourceKey) {\n        source.select();\n      }\n    }\n\n    this.sourceSort.addItems($item);\n    return source;\n  },\n\n  save: function (ev) {\n    if (ev) {\n      ev.preventDefault();\n    }\n\n    if (\n      this.$saveBtn.hasClass('disabled') ||\n      this.$saveBtn.hasClass('loading')\n    ) {\n      return;\n    }\n\n    this.$saveBtn.addClass('loading');\n\n    Craft.sendActionRequest(\n      'POST',\n      'element-index-settings/save-customize-sources-modal-settings',\n      {\n        data:\n          this.$container.serialize() +\n          `&elementType=${this.elementIndex.elementType}`,\n      }\n    )\n      .then(({data}) => {\n        // Figure out which source to select\n        let sourceKey = null;\n        if (\n          this.selectedSource &&\n          this.selectedSource.sourceData.key &&\n          !data.disabledSourceKeys.includes(this.selectedSource.sourceData.key)\n        ) {\n          sourceKey = this.selectedSource.sourceData.key;\n        } else if (!this.elementIndex.sourceKey) {\n          sourceKey = this.elementIndex.$visibleSources.first().data('key');\n        }\n\n        if (sourceKey) {\n          this.elementIndex.selectSourceByKey(sourceKey);\n        }\n\n        window.location.reload();\n      })\n      .catch(() => {\n        Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n      })\n      .finally(() => {\n        this.$saveBtn.removeClass('loading');\n      });\n  },\n\n  appendIndexSourceItem: function ($sourceItem, $lastSourceItem) {\n    if (!$lastSourceItem) {\n      $sourceItem.prependTo(this.$elementIndexSourcesContainer);\n    } else {\n      const isHeading = $sourceItem.hasClass('heading');\n      if ($lastSourceItem.hasClass('heading') && !isHeading) {\n        // First source to be placed below a new heading\n        $sourceItem.appendTo($lastSourceItem.children('ul'));\n      } else {\n        if (isHeading) {\n          // New heading. Swap $lastSourceItem with the top level <li> if it's nested\n          const $lastTopLevelSource = $lastSourceItem\n            .parentsUntil(this.$elementIndexSourcesContainer, 'li')\n            .last();\n          if ($lastTopLevelSource.length) {\n            $lastSourceItem = $lastTopLevelSource;\n          }\n        }\n        $sourceItem.insertAfter($lastSourceItem);\n      }\n    }\n  },\n\n  destroy: function () {\n    for (let i = 0; i < this.sources.length; i++) {\n      this.sources[i].destroy();\n    }\n\n    if (this.addSourceMenu) {\n      this.addSourceMenu.destroy();\n      this.$addSourceMenu.remove();\n    }\n\n    delete this.sources;\n    this.base();\n  },\n});\n\nCraft.CustomizeSourcesModal.BaseSource = Garnish.Base.extend({\n  modal: null,\n\n  $item: null,\n  $itemLabel: null,\n  $itemInput: null,\n  $settingsContainer: null,\n\n  sourceData: null,\n  isNew: null,\n\n  init: function (modal, $item, $itemLabel, $itemInput, sourceData, isNew) {\n    this.modal = modal;\n    this.$item = $item;\n    this.$itemLabel = $itemLabel;\n    this.$itemInput = $itemInput;\n    this.sourceData = sourceData;\n    this.isNew = isNew;\n\n    this.$item.data('source', this);\n\n    this.addListener(this.$itemLabel, 'activate', this.select);\n  },\n\n  isHeading: function () {\n    return false;\n  },\n\n  isNative: function () {\n    return false;\n  },\n\n  isSelected: function () {\n    return this.modal.selectedSource === this;\n  },\n\n  select: function () {\n    if (this.isSelected()) {\n      return;\n    }\n\n    if (this.modal.selectedSource) {\n      this.modal.selectedSource.deselect();\n    }\n\n    this.$item.addClass('sel');\n    this.$itemLabel.attr({\n      'aria-current': 'true',\n    });\n    this.modal.selectedSource = this;\n    this.modal.updateHeading();\n\n    if (!this.$settingsContainer) {\n      this.$settingsContainer = $('<div/>').appendTo(\n        this.modal.$sourceSettingsContainer\n      );\n      this.createSettings(this.$settingsContainer);\n    } else {\n      this.$settingsContainer.removeClass('hidden');\n    }\n\n    this.modal.$sourceSettingsContainer.scrollTop(0);\n  },\n\n  createSettings: async function () {},\n\n  getIndexSourceItem: function () {},\n\n  deselect: function () {\n    this.$item.removeClass('sel');\n    this.$itemLabel.attr({\n      'aria-current': 'false',\n    });\n    this.modal.selectedSource = null;\n    this.$settingsContainer.addClass('hidden');\n  },\n\n  updateItemLabel: function (val) {\n    if (val) {\n      this.$itemLabel.text(val);\n    } else {\n      this.$itemLabel.html('&nbsp;');\n    }\n  },\n\n  destroy: function () {\n    this.modal.sourceSort.removeItems(this.$item);\n    this.modal.sources.splice($.inArray(this, this.modal.sources), 1);\n\n    if (this.isSelected()) {\n      this.deselect();\n\n      if (this.modal.sources.length) {\n        this.modal.sources[0].select();\n      }\n\n      Garnish.setFocusWithin(this.modal.$sourceSettingsContainer);\n    }\n\n    this.$item.data('source', null);\n    this.$item.remove();\n\n    if (this.$settingsContainer) {\n      this.$settingsContainer.remove();\n    }\n\n    this.base();\n  },\n});\n\nCraft.CustomizeSourcesModal.Source =\n  Craft.CustomizeSourcesModal.BaseSource.extend({\n    $sortAttributeSelect: null,\n    $sortDirectionPicker: null,\n    $sortDirectionInput: null,\n    sortDirectionListbox: null,\n\n    isNative: function () {\n      return true;\n    },\n\n    createSettings: async function ($container) {\n      Craft.ui\n        .createLightswitchField({\n          label: Craft.t('app', 'Enabled'),\n          name: `sources[${this.sourceData.key}][enabled]`,\n          on: !this.sourceData.disabled,\n        })\n        .appendTo($container);\n      this.createSortField($container);\n      this.createTableAttributesField($container);\n    },\n\n    createSortField: function ($container) {\n      const $inputContainer = $('<div class=\"flex\"/>');\n\n      const options = this.sourceData.sortOptions.sort((a, b) => {\n        return a.label === b.label ? 0 : a.label < b.label ? -1 : 1;\n      });\n      const groups = options.reduce(\n        (groups, o) => {\n          let index;\n          if (o.attr === 'structure') {\n            index = 0;\n          } else {\n            index = o.attr.startsWith('field:') ? 2 : 1;\n          }\n          groups[index].push(o);\n          return groups;\n        },\n        [[], [], []]\n      );\n      if (groups[2].length) {\n        groups[2].unshift({\n          optgroup: Craft.t('app', 'Fields'),\n        });\n      }\n\n      const $sortAttributeSelectContainer = Craft.ui\n        .createSelect({\n          name: `sources[${this.sourceData.key}][defaultSort][0]`,\n          options: groups.flat().map((o) => {\n            return o.optgroup\n              ? o\n              : {\n                  label: Craft.escapeHtml(o.label),\n                  value: o.attr,\n                };\n          }),\n          value: this.sourceData.defaultSort[0],\n        })\n        .addClass('fullwidth')\n        .appendTo($('<div/>').appendTo($inputContainer));\n\n      this.$sortAttributeSelect = $sortAttributeSelectContainer\n        .children('select')\n        .attr('aria-label', Craft.t('app', 'Sort attribute'));\n\n      this.$sortDirectionPicker = $('<section/>', {\n        class: 'btngroup btngroup--exclusive',\n        'aria-label': Craft.t('app', 'Sort direction'),\n      })\n        .append(\n          $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'Sort ascending'),\n            'aria-label': Craft.t('app', 'Sort ascending'),\n            'aria-pressed': 'false',\n            'data-icon': 'asc',\n            'data-dir': 'asc',\n          })\n        )\n        .append(\n          $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            title: Craft.t('app', 'Sort descending'),\n            'aria-label': Craft.t('app', 'Sort descending'),\n            'aria-pressed': 'false',\n            'data-icon': 'desc',\n            'data-dir': 'desc',\n          })\n        )\n        .appendTo($inputContainer);\n\n      this.$sortDirectionInput = $('<input/>', {\n        type: 'hidden',\n        name: `sources[${this.sourceData.key}][defaultSort][1]`,\n      }).appendTo($inputContainer);\n\n      this.sortDirectionListbox = new Craft.Listbox(this.$sortDirectionPicker, {\n        onChange: ($selectedOption) => {\n          this.$sortDirectionInput.val($selectedOption.data('dir'));\n        },\n      });\n\n      this.$sortAttributeSelect.on('change', () => {\n        this.handleSortAttributeChange();\n      });\n\n      this.handleSortAttributeChange(true);\n\n      Craft.ui\n        .createField($inputContainer, {\n          label: Craft.t('app', 'Default Sort'),\n          fieldset: true,\n        })\n        .appendTo($container)\n        .addClass('sort-field');\n    },\n\n    handleSortAttributeChange: function (useDefaultDir) {\n      const attr = this.$sortAttributeSelect.val();\n\n      if (attr === 'structure') {\n        this.sortDirectionListbox.select(0);\n        this.sortDirectionListbox.disable();\n        this.$sortDirectionPicker.addClass('disabled');\n      } else {\n        this.sortDirectionListbox.enable();\n        this.$sortDirectionPicker.removeClass('disabled');\n\n        const dir = useDefaultDir\n          ? this.sourceData.defaultSort[1]\n          : this.sourceData.sortOptions.find((o) => o.attr === attr).defaultDir;\n        this.sortDirectionListbox.select(dir === 'asc' ? 0 : 1);\n      }\n    },\n\n    createTableAttributesField: function ($container) {\n      const availableTableAttributes = this.availableTableAttributes().sort(\n        (a, b) => {\n          return a[1] === b[1] ? 0 : a[1] < b[1] ? -1 : 1;\n        }\n      );\n\n      if (\n        !this.sourceData.tableAttributes.length &&\n        !availableTableAttributes.length\n      ) {\n        return;\n      }\n\n      const name = `sources[${this.sourceData.key}][tableAttributes][]`;\n\n      $('<input/>', {\n        type: 'hidden',\n        name,\n        value: '',\n      }).appendTo($container);\n\n      Craft.ui\n        .createCheckboxSelectField({\n          label: Craft.t('app', 'Default Table Columns'),\n          instructions: Craft.t(\n            'app',\n            'Choose which table columns should be visible for this source by default.'\n          ),\n          name,\n          options: availableTableAttributes.map(([key, label]) => ({\n            label,\n            value: key,\n          })),\n          values: this.sourceData.tableAttributes.map(([key]) => key),\n          sortable: true,\n        })\n        .appendTo($container);\n    },\n\n    availableTableAttributes: function () {\n      const attributes = this.modal.availableTableAttributes.slice(0);\n      attributes.push(...this.sourceData.availableTableAttributes);\n      return attributes;\n    },\n\n    getIndexSourceItem: function () {\n      const $source = this.modal.elementIndex.getSourceByKey(\n        this.sourceData.key\n      );\n\n      if ($source) {\n        return $source.closest('li');\n      }\n    },\n  });\n\nCraft.CustomizeSourcesModal.CustomSource =\n  Craft.CustomizeSourcesModal.Source.extend({\n    $labelInput: null,\n\n    createSettings: async function ($container) {\n      const $labelField = Craft.ui\n        .createTextField({\n          label: Craft.t('app', 'Label'),\n          name: `sources[${this.sourceData.key}][label]`,\n          value: this.sourceData.label,\n        })\n        .appendTo($container);\n      this.$labelInput = $labelField.find('.text');\n      const defaultId = `condition${Math.floor(Math.random() * 1000000)}`;\n\n      const swapPlaceholders = (str) =>\n        str\n          .replace(/__ID__/g, defaultId)\n          .replace(\n            /__SOURCE_KEY__(?=-)/g,\n            Craft.formatInputId(this.sourceData.key)\n          )\n          .replace(/__SOURCE_KEY__/g, this.sourceData.key);\n\n      const conditionBuilderHtml =\n        this.sourceData.conditionBuilderHtml ||\n        swapPlaceholders(this.modal.conditionBuilderHtml);\n      const conditionBuilderJs =\n        this.sourceData.conditionBuilderJs ||\n        swapPlaceholders(this.modal.conditionBuilderJs);\n\n      Craft.ui\n        .createField($('<div/>').append(conditionBuilderHtml), {\n          id: 'criteria',\n          label: Craft.t('app', '{type} Criteria', {\n            type: this.modal.elementTypeName,\n          }),\n        })\n        .appendTo($container);\n\n      if (conditionBuilderJs) {\n        await Craft.appendBodyHtml(conditionBuilderJs);\n      }\n\n      this.createSortField($container);\n      this.createTableAttributesField($container);\n\n      if (Craft.sites.length > 1) {\n        Craft.ui\n          .createCheckboxSelectField({\n            label: Craft.t('app', 'Sites'),\n            instructions: Craft.t(\n              'app',\n              'Choose which sites this source should be visible for.'\n            ),\n            name: `sources[${this.sourceData.key}][sites]`,\n            options: Craft.sites.map((site) => ({\n              label: site.name,\n              value: site.uid,\n            })),\n            values: this.sourceData.sites || '*',\n            showAllOption: true,\n          })\n          .appendTo($container);\n      }\n\n      if (this.modal.userGroups.length) {\n        Craft.ui\n          .createCheckboxSelectField({\n            label: Craft.t('app', 'User Groups'),\n            instructions: Craft.t(\n              'app',\n              'Choose which user groups should have access to this source.'\n            ),\n            name: `sources[${this.sourceData.key}][userGroups]`,\n            options: this.modal.userGroups,\n            values: this.sourceData.userGroups || '*',\n            showAllOption: true,\n          })\n          .appendTo($container);\n      }\n\n      $container.append('<hr/>');\n\n      this.$deleteBtn = $('<a class=\"error delete pointer\"/>')\n        .attr({\n          role: 'button',\n          tabindex: '0',\n        })\n        .text(Craft.t('app', 'Delete custom source'))\n        .appendTo($container);\n\n      this.addListener(this.$labelInput, 'input', 'handleLabelInputChange');\n      this.addListener(this.$deleteBtn, 'activate', 'destroy');\n    },\n\n    availableTableAttributes: function () {\n      const attributes = this.base();\n      if (this.isNew) {\n        attributes.push(...this.modal.customFieldAttributes);\n      }\n      return attributes;\n    },\n\n    handleLabelInputChange: function () {\n      this.updateItemLabel(this.$labelInput.val());\n    },\n\n    getIndexSourceItem: function () {\n      let $source = this.base();\n      let $label;\n\n      if ($source) {\n        $label = $source.find('.label');\n      } else {\n        $label = $('<span/>', {class: 'label'});\n        $source = $('<li/>').append(\n          $('<a/>', {\n            'data-key': this.sourceData.key,\n          }).append($label)\n        );\n      }\n\n      if (this.$labelInput) {\n        let label = this.$labelInput.val().trim();\n        if (label === '') {\n          label = Craft.t('app', '(blank)');\n        }\n        $label.text(label);\n      }\n\n      return $source;\n    },\n  });\n\nCraft.CustomizeSourcesModal.Heading =\n  Craft.CustomizeSourcesModal.BaseSource.extend({\n    $labelInput: null,\n    $deleteBtn: null,\n\n    isHeading: function () {\n      return true;\n    },\n\n    createSettings: async function ($container) {\n      const $labelField = Craft.ui\n        .createTextField({\n          label: Craft.t('app', 'Heading'),\n          instructions: Craft.t(\n            'app',\n            'This can be left blank if you just want an unlabeled separator.'\n          ),\n          value: this.sourceData.heading || '',\n        })\n        .appendTo($container);\n      this.$labelInput = $labelField.find('.text');\n\n      $container.append('<hr/>');\n\n      this.$deleteBtn = $('<a class=\"error delete\"/>')\n        .text(Craft.t('app', 'Delete heading'))\n        .attr({\n          role: 'button',\n          tabindex: '0',\n        })\n        .appendTo($container);\n\n      this.addListener(this.$labelInput, 'input', 'handleLabelInputChange');\n      this.addListener(this.$deleteBtn, 'activate', 'destroy');\n    },\n\n    handleLabelInputChange: function () {\n      this.updateItemLabel(this.$labelInput.val());\n    },\n\n    updateItemLabel: function (val) {\n      this.$itemLabel.html(\n        (val\n          ? Craft.escapeHtml(val)\n          : `<em>${Craft.t('app', '(blank)')}</em>`) + '&nbsp;'\n      );\n      this.$itemInput.val(val);\n    },\n\n    getIndexSourceItem: function () {\n      const label =\n        (this.$labelInput ? this.$labelInput.val() : null) ||\n        this.sourceData.heading ||\n        '';\n      return $('<li class=\"heading\"/>')\n        .append($('<span/>').text(label))\n        .append('<ul/>');\n    },\n  });\n","/** global: Craft */\n/** global: Garnish */\n/**\n * DataTableSorter\n */\nCraft.DataTableSorter = Garnish.DragSort.extend(\n  {\n    $table: null,\n\n    init: function (table, settings) {\n      this.$table = $(table);\n      var $rows = this.$table.children('tbody').children(':not(.filler)');\n\n      settings = $.extend({}, Craft.DataTableSorter.defaults, settings);\n\n      settings.container = this.$table.children('tbody');\n      settings.helper = this.getHelper.bind(this);\n      settings.caboose = '<tr/>';\n      settings.axis = Garnish.Y_AXIS;\n      settings.magnetStrength = 4;\n      settings.helperLagBase = 1.5;\n\n      this.base($rows, settings);\n    },\n\n    getHelper: function ($helperRow) {\n      var $helper = $(\n          '<div class=\"' + this.settings.helperClass + '\"/>'\n        ).appendTo(Garnish.$bod),\n        $table = $('<table/>').appendTo($helper),\n        $tbody = $('<tbody/>').appendTo($table);\n\n      $helperRow.appendTo($tbody);\n\n      // Copy the table width and classes\n      $table.width(this.$table.width());\n      $table.prop('className', this.$table.prop('className'));\n\n      // Copy the column widths\n      var $firstRow = this.$table.find('tr:first'),\n        $cells = $firstRow.children(),\n        $helperCells = $helperRow.children();\n\n      for (var i = 0; i < $helperCells.length; i++) {\n        $($helperCells[i]).width($($cells[i]).width());\n      }\n\n      return $helper;\n    },\n  },\n  {\n    defaults: {\n      handle: '.move',\n      helperClass: 'datatablesorthelper',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Delete User Modal\n */\nCraft.DeleteUserModal = Garnish.Modal.extend(\n  {\n    id: null,\n    userId: null,\n\n    $deleteActionRadios: null,\n    $deleteSubmitBtn: null,\n\n    userSelect: null,\n    _deleting: false,\n\n    init: function (userId, settings) {\n      this.id = Math.floor(Math.random() * 1000000000);\n      this.userId = userId;\n      settings = $.extend(Craft.DeleteUserModal.defaults, settings);\n\n      let $form = $(\n        '<form class=\"modal fitted deleteusermodal\" method=\"post\" accept-charset=\"UTF-8\">' +\n          Craft.getCsrfInput() +\n          '<input type=\"hidden\" name=\"action\" value=\"users/delete-user\"/>' +\n          (!Array.isArray(this.userId)\n            ? '<input type=\"hidden\" name=\"userId\" value=\"' + this.userId + '\"/>'\n            : '') +\n          (settings.redirect\n            ? '<input type=\"hidden\" name=\"redirect\" value=\"' +\n              settings.redirect +\n              '\"/>'\n            : '') +\n          '</form>'\n      ).appendTo(Garnish.$bod);\n      let $body = $(\n        '<div class=\"body\">' +\n          '<div class=\"content-summary\">' +\n          '<p>' +\n          Craft.t('app', 'What do you want to do with their content?') +\n          '</p>' +\n          '<ul class=\"bullets\"></ul>' +\n          '</div>' +\n          '<div class=\"options\">' +\n          '<label><input type=\"radio\" name=\"contentAction\" value=\"transfer\"/> ' +\n          Craft.t('app', 'Transfer it to:') +\n          '</label>' +\n          '<div id=\"transferselect' +\n          this.id +\n          '\" class=\"elementselect\">' +\n          '<ul class=\"elements\"></ul>' +\n          '<button type=\"button\" class=\"btn add icon dashed\">' +\n          Craft.t('app', 'Choose a user') +\n          '</button>' +\n          '</div>' +\n          '</div>' +\n          '<div>' +\n          '<label class=\"error\"><input type=\"radio\" name=\"contentAction\" value=\"delete\"/> ' +\n          Craft.t('app', 'Delete their content') +\n          '</label>' +\n          '</div>' +\n          '</div>'\n      ).appendTo($form);\n      let $buttons = $('<div class=\"buttons right\"/>').appendTo($body);\n      let $cancelBtn = $('<button/>', {\n        type: 'button',\n        class: 'btn',\n        text: Craft.t('app', 'Cancel'),\n      }).appendTo($buttons);\n\n      const $contentSummary = $body.find('.content-summary');\n      if (settings.contentSummary.length) {\n        for (let i = 0; i < settings.contentSummary.length; i++) {\n          $contentSummary\n            .find('ul')\n            .append($('<li/>', {text: settings.contentSummary[i]}));\n        }\n      } else {\n        $contentSummary.find('ul').remove();\n      }\n\n      this.$deleteActionRadios = $body.find('input[type=radio]');\n      this.$deleteSubmitBtn = Craft.ui\n        .createSubmitButton({\n          class: 'disabled',\n          label: this._submitBtnLabel(false),\n          spinner: true,\n        })\n        .appendTo($buttons);\n\n      var idParam;\n\n      if (Array.isArray(this.userId)) {\n        idParam = ['and'];\n\n        for (let i = 0; i < this.userId.length; i++) {\n          idParam.push('not ' + this.userId[i]);\n        }\n      } else {\n        idParam = 'not ' + this.userId;\n      }\n\n      this.userSelect = new Craft.BaseElementSelectInput({\n        id: 'transferselect' + this.id,\n        name: 'transferContentTo',\n        elementType: 'craft\\\\elements\\\\User',\n        criteria: {\n          id: idParam,\n        },\n        limit: 1,\n        modalSettings: {\n          closeOtherModals: false,\n        },\n        onSelectElements: () => {\n          this.updateSizeAndPosition();\n\n          if (!this.$deleteActionRadios.first().prop('checked')) {\n            this.$deleteActionRadios.first().trigger('click');\n          } else {\n            this.validateDeleteInputs();\n          }\n        },\n        onRemoveElements: this.validateDeleteInputs.bind(this),\n        selectable: false,\n        editable: false,\n      });\n\n      this.addListener($cancelBtn, 'click', 'hide');\n\n      this.addListener(\n        this.$deleteActionRadios,\n        'change',\n        'validateDeleteInputs'\n      );\n      this.addListener($form, 'submit', 'handleSubmit');\n\n      this.base($form, settings);\n    },\n\n    _submitBtnLabel: function (withContent) {\n      let message = withContent\n        ? 'Delete {num, plural, =1{user} other{users}} and content'\n        : 'Delete {num, plural, =1{user} other{users}}';\n\n      return Craft.t('app', message, {\n        num: Array.isArray(this.userId) ? this.userId.length : 1,\n      });\n    },\n\n    validateDeleteInputs: function () {\n      var validates = false;\n\n      if (this.$deleteActionRadios.eq(1).prop('checked')) {\n        validates = true;\n        this.$deleteSubmitBtn.find('.label').text(this._submitBtnLabel(true));\n      } else {\n        this.$deleteSubmitBtn.find('.label').text(this._submitBtnLabel(false));\n        if (this.$deleteActionRadios.eq(0).prop('checked')) {\n          validates = !!this.userSelect.totalSelected;\n        }\n      }\n\n      this.updateSizeAndPosition();\n\n      if (validates) {\n        this.$deleteSubmitBtn.removeClass('disabled');\n      } else {\n        this.$deleteSubmitBtn.addClass('disabled');\n      }\n\n      return validates;\n    },\n\n    handleSubmit: function (ev) {\n      if (this._deleting || !this.validateDeleteInputs()) {\n        ev.preventDefault();\n        return;\n      }\n\n      this.$deleteSubmitBtn.addClass('loading');\n      this.disable();\n      this.userSelect.disable();\n      this._deleting = true;\n\n      // Let the onSubmit callback prevent the form from getting submitted\n      try {\n        if (this.settings.onSubmit() === false) {\n          ev.preventDefault();\n        }\n      } catch (e) {\n        ev.preventDefault();\n        this.$deleteSubmitBtn.removeClass('loading');\n        throw e;\n      }\n    },\n\n    onFadeIn: function () {\n      // Auto-focus the first radio\n      if (!Garnish.isMobileBrowser(true)) {\n        this.$deleteActionRadios.first().trigger('focus');\n      }\n\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      contentSummary: [],\n      onSubmit: $.noop,\n      redirect: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.DynamicGenerator = Craft.BaseInputGenerator.extend({\n  callback: $.noop,\n\n  init: function (source, target, callback) {\n    this.callback = callback;\n    this.base(source, target);\n  },\n\n  generateTargetValue: function (sourceVal) {\n    return this.callback(sourceVal);\n  },\n});\n","/* jshint -W083 */\n/**\n * Editable table class\n */\nCraft.EditableTable = Garnish.Base.extend(\n  {\n    initialized: false,\n\n    id: null,\n    baseName: null,\n    columns: null,\n    sorter: null,\n    biggestId: -1,\n\n    $table: null,\n    $tbody: null,\n    $addRowBtn: null,\n    $tableParent: null,\n    $statusMessage: null,\n\n    rowCount: 0,\n    hasMaxRows: false,\n    hasMinRows: false,\n\n    radioCheckboxes: null,\n\n    init: function (id, baseName, columns, settings) {\n      this.id = id;\n      this.baseName = baseName;\n      this.columns = columns;\n      this.setSettings(settings, Craft.EditableTable.defaults);\n      this.radioCheckboxes = {};\n\n      this.$table = $('#' + id);\n      this.$tbody = this.$table.children('tbody');\n      this.$tableParent = this.$table.parent();\n      this.$statusMessage = this.$tableParent.find('[data-status-message]');\n      const $rows = this.$tbody.children();\n      this.rowCount = $rows.length;\n\n      // Is this already an editable table?\n      if (this.$table.data('editable-table')) {\n        console.warn('Double-instantiating an editable table on an element');\n        this.$table.data('editable-table').destroy();\n      }\n\n      this.$table.data('editable-table', this);\n\n      this.sorter = new Craft.DataTableSorter(this.$table, {\n        helperClass: 'editabletablesorthelper',\n        copyDraggeeInputValuesToHelper: true,\n        onSortChange: () => {\n          this.updateAllRows();\n        },\n      });\n\n      for (let i = 0; i < $rows.length; i++) {\n        const $row = $rows.eq(i);\n        const id = parseInt(\n          $row.attr('data-id').substring(this.settings.rowIdPrefix.length)\n        );\n        if (id > this.biggestId) {\n          this.biggestId = id;\n        }\n      }\n\n      if (this.isVisible()) {\n        this.initialize();\n      } else {\n        // Give everything a chance to initialize\n        window.setTimeout(this.initializeIfVisible.bind(this), 500);\n      }\n\n      if (this.settings.minRows && this.rowCount < this.settings.minRows) {\n        for (var i = this.rowCount; i < this.settings.minRows; i++) {\n          this.addRow();\n        }\n      }\n    },\n\n    isVisible: function () {\n      return this.$table.parent().height() > 0;\n    },\n\n    initialize: function () {\n      if (this.initialized) {\n        return false;\n      }\n\n      this.initialized = true;\n      this.removeListener(Garnish.$win, 'resize');\n\n      const $container = this.$table.parent('.input');\n      if ($container.length && this.$table.width() > $container.width()) {\n        $container.css('overflow-x', 'auto');\n      }\n\n      this.$addRowBtn = this.$table.next('.add');\n      this.updateAddRowButton();\n      this.addListener(this.$addRowBtn, 'activate', 'addRow');\n\n      if (this.settings.lazyInitRows) {\n        // Lazily create the row objects\n        this.addListener(\n          this.$tbody,\n          'keypress,keyup,change,focus,blur,click,mousedown,mouseup',\n          (ev) => {\n            const $target = $(ev.target);\n            const $tr = $target.closest('tr');\n            if ($tr.length && !$tr.data('editable-table-row')) {\n              const $textarea = $target.hasClass('editable-table-preview')\n                ? $target.next()\n                : null;\n              this.createRowObj($tr);\n              setTimeout(() => {\n                if ($textarea && !$textarea.is(':focus')) {\n                  $textarea.trigger('focus');\n                }\n              }, 100);\n            }\n          }\n        );\n      } else {\n        const $rows = this.$tbody.children();\n        for (let i = 0; i < $rows.length; i++) {\n          this.createRowObj($rows.eq(i));\n        }\n      }\n\n      return true;\n    },\n    initializeIfVisible: function () {\n      this.removeListener(Garnish.$win, 'resize');\n\n      if (this.isVisible()) {\n        this.initialize();\n      } else {\n        this.addListener(Garnish.$win, 'resize', 'initializeIfVisible');\n      }\n    },\n    updateAddRowButton: function () {\n      if (!this.canAddRow()) {\n        this.$addRowBtn.css('opacity', '0.2');\n        this.$addRowBtn.css('pointer-events', 'none');\n        this.$addRowBtn.attr('aria-disabled', 'true');\n      } else {\n        this.$addRowBtn.css('opacity', '1');\n        this.$addRowBtn.css('pointer-events', 'auto');\n        this.$addRowBtn.attr('aria-disabled', 'false');\n      }\n    },\n    updateAllRows: function () {\n      if (this.settings.staticRows) {\n        return;\n      }\n      const $rows = this.$table.find('> tbody > tr');\n      for (let i = 0; i < $rows.length; i++) {\n        this.updateRow($rows.eq(i));\n      }\n    },\n    updateRow: function ($row) {\n      if (this.settings.staticRows) {\n        return;\n      }\n\n      const $deleteBtn = $row.find('button.delete');\n\n      if ($deleteBtn.length) {\n        $deleteBtn.attr(\n          'aria-label',\n          Craft.t('app', 'Delete row {index}', {\n            index: $row.index() + 1,\n          })\n        );\n        if (this.canDeleteRow()) {\n          $deleteBtn.removeAttr('disabled').removeClass('disabled');\n        } else {\n          $deleteBtn.attr('disabled', 'disabled').addClass('disabled');\n        }\n      }\n    },\n    /**\n     * @deprecated\n     */\n    updateDeleteRowButton: function (rowId) {\n      this.updateRow(this.$table.find(`tr[data-id=\"${rowId}\"]`));\n    },\n    updateStatusMessage: function () {\n      this.$statusMessage.empty();\n      let message;\n\n      if (!this.canAddRow()) {\n        message = Craft.t(\n          'app',\n          'Row could not be added. Maximum number of rows reached.'\n        );\n      } else {\n        message = Craft.t(\n          'app',\n          'Row could not be deleted. Minimum number of rows reached.'\n        );\n      }\n\n      setTimeout(() => {\n        this.$statusMessage.text(message);\n      }, 250);\n    },\n    canDeleteRow: function () {\n      if (!this.settings.allowDelete) {\n        return false;\n      }\n\n      return this.rowCount > this.settings.minRows;\n    },\n    deleteRow: function (row) {\n      if (!this.canDeleteRow()) {\n        this.updateStatusMessage();\n        return;\n      }\n\n      this.sorter.removeItems(row.$tr);\n      row.$tr.remove();\n\n      this.rowCount--;\n\n      this.updateAllRows();\n      this.updateAddRowButton();\n\n      if (this.rowCount === 0) {\n        this.$table.addClass('hidden');\n        this.$addRowBtn.trigger('focus');\n      } else {\n        // Focus element in previous row\n        this.$tbody.find(':focusable').last().trigger('focus');\n      }\n\n      // onDeleteRow callback\n      this.settings.onDeleteRow(row.$tr);\n\n      row.destroy();\n    },\n    canAddRow: function () {\n      if (!this.settings.allowAdd) {\n        return false;\n      }\n\n      if (this.settings.maxRows) {\n        return this.rowCount < this.settings.maxRows;\n      }\n\n      return true;\n    },\n    addRow: function (focus, prepend) {\n      if (!this.canAddRow()) {\n        this.updateStatusMessage();\n        return;\n      }\n\n      var rowId = this.settings.rowIdPrefix + (this.biggestId + 1),\n        $tr = this.createRow(\n          rowId,\n          this.columns,\n          this.baseName,\n          $.extend({}, this.settings.defaultValues)\n        );\n\n      if (prepend) {\n        $tr.prependTo(this.$tbody);\n      } else {\n        $tr.appendTo(this.$tbody);\n      }\n\n      var row = this.createRowObj($tr);\n      this.sorter.addItems($tr);\n\n      // Focus the first input in the row\n      if (focus !== false) {\n        $tr\n          .find('input:visible,textarea:visible,select:visible')\n          .first()\n          .trigger('focus');\n      }\n\n      this.rowCount++;\n      this.updateAllRows();\n      this.updateAddRowButton();\n      this.$table.removeClass('hidden');\n\n      // onAddRow callback\n      this.settings.onAddRow($tr);\n\n      return row;\n    },\n\n    createRow: function (rowId, columns, baseName, values) {\n      return Craft.EditableTable.createRow(\n        rowId,\n        columns,\n        baseName,\n        values,\n        this.settings.allowReorder,\n        this.settings.allowDelete\n      );\n    },\n\n    getRowObj: function ($tr) {\n      return $tr.data('editable-table-row') || this.createRowObj($tr);\n    },\n\n    createRowObj: function ($tr) {\n      return new Craft.EditableTable.Row(this, $tr);\n    },\n\n    focusOnPrevRow: function ($tr, tdIndex, blurTd) {\n      var $prevTr = $tr.prev('tr');\n      var prevRow;\n\n      if ($prevTr.length) {\n        prevRow = this.getRowObj($prevTr);\n      } else {\n        prevRow = this.addRow(false, true);\n      }\n\n      // Focus on the same cell in the previous row\n      if (!prevRow) {\n        return;\n      }\n\n      if (!prevRow.$tds[tdIndex]) {\n        return;\n      }\n\n      if ($(prevRow.$tds[tdIndex]).hasClass('disabled')) {\n        if ($prevTr) {\n          this.focusOnPrevRow($prevTr, tdIndex, blurTd);\n        }\n        return;\n      }\n\n      var $input = $('textarea,input.text', prevRow.$tds[tdIndex]);\n      if ($input.length) {\n        $(blurTd).trigger('blur');\n        $input.trigger('focus');\n      }\n    },\n\n    focusOnNextRow: function ($tr, tdIndex, blurTd) {\n      var $nextTr = $tr.next('tr');\n      var nextRow;\n\n      if ($nextTr.length) {\n        nextRow = this.getRowObj($nextTr);\n      } else {\n        nextRow = this.addRow(false);\n      }\n\n      // Focus on the same cell in the next row\n      if (!nextRow) {\n        return;\n      }\n\n      if (!nextRow.$tds[tdIndex]) {\n        return;\n      }\n\n      if ($(nextRow.$tds[tdIndex]).hasClass('disabled')) {\n        if ($nextTr) {\n          this.focusOnNextRow($nextTr, tdIndex, blurTd);\n        }\n        return;\n      }\n\n      var $input = $('textarea,input.text', nextRow.$tds[tdIndex]);\n      if ($input.length) {\n        $(blurTd).trigger('blur');\n        $input.trigger('focus');\n      }\n    },\n\n    importData: function (data, row, tdIndex) {\n      let lines = data.split(/\\r?\\n|\\r/);\n      for (let i = 0; i < lines.length; i++) {\n        let values = lines[i].split('\\t');\n        for (let j = 0; j < values.length; j++) {\n          let value = values[j];\n          row.$tds\n            .eq(tdIndex + j)\n            .find('textarea,input[type!=hidden]')\n            .val(value)\n            .trigger('input');\n        }\n\n        // move onto the next row\n        let $nextTr = row.$tr.next('tr');\n        if ($nextTr.length) {\n          row = this.getRowObj($nextTr);\n        } else {\n          row = this.addRow(false);\n        }\n      }\n    },\n\n    destroy: function () {\n      this.$table.removeData('editable-table');\n      this.base();\n    },\n  },\n  {\n    textualColTypes: [\n      'autosuggest',\n      'color',\n      'date',\n      'email',\n      'multiline',\n      'number',\n      'singleline',\n      'template',\n      'time',\n      'url',\n    ],\n    defaults: {\n      rowIdPrefix: '',\n      defaultValues: {},\n      allowAdd: false,\n      allowReorder: false,\n      allowDelete: false,\n      minRows: null,\n      maxRows: null,\n      lazyInitRows: true,\n      onAddRow: $.noop,\n      onDeleteRow: $.noop,\n    },\n\n    createRow: function (\n      rowId,\n      columns,\n      baseName,\n      values,\n      allowReorder,\n      allowDelete\n    ) {\n      var $tr = $('<tr/>', {\n        'data-id': rowId,\n      });\n\n      for (var colId in columns) {\n        if (!columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        var col = columns[colId],\n          value = typeof values[colId] !== 'undefined' ? values[colId] : '',\n          $cell;\n\n        if (col.type === 'heading') {\n          $cell = $('<th/>', {\n            scope: 'row',\n            class: col['class'],\n            html: value,\n          });\n        } else {\n          var name = baseName + '[' + rowId + '][' + colId + ']';\n\n          $cell = $('<td/>', {\n            class: `${col.class} ${col.type}-cell`,\n            width: col.width,\n          });\n\n          if (Craft.inArray(col.type, Craft.EditableTable.textualColTypes)) {\n            $cell.addClass('textual');\n          }\n\n          if (col.code) {\n            $cell.addClass('code');\n          }\n\n          switch (col.type) {\n            case 'checkbox':\n              $('<div class=\"checkbox-wrapper\"/>')\n                .append(\n                  Craft.ui.createCheckbox({\n                    name: name,\n                    value: col.value || '1',\n                    checked: !!value,\n                  })\n                )\n                .appendTo($cell);\n              break;\n\n            case 'color':\n              Craft.ui\n                .createColorInput({\n                  name: name,\n                  value: typeof value !== 'object' ? value : null,\n                  small: true,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'date':\n              Craft.ui\n                .createDateInput({\n                  name: name,\n                  value: value,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'lightswitch':\n              Craft.ui\n                .createLightswitch({\n                  name: name,\n                  value: col.value || '1',\n                  on: !!value,\n                  small: true,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'select':\n              Craft.ui\n                .createSelect({\n                  name: name,\n                  options: col.options,\n                  value:\n                    value ||\n                    (function () {\n                      for (var key in col.options) {\n                        if (\n                          col.options.hasOwnProperty(key) &&\n                          col.options[key].default\n                        ) {\n                          return typeof col.options[key].value !== 'undefined'\n                            ? col.options[key].value\n                            : key;\n                        }\n                      }\n                      return null;\n                    })(),\n                  class: 'small',\n                })\n                .appendTo($cell);\n              break;\n\n            case 'time':\n              Craft.ui\n                .createTimeInput({\n                  name: name,\n                  value: value,\n                })\n                .appendTo($cell);\n              break;\n\n            case 'email':\n            case 'url':\n              Craft.ui\n                .createTextInput({\n                  name: name,\n                  value: typeof value !== 'object' ? value : null,\n                  type: col.type,\n                  placeholder: col.placeholder || null,\n                })\n                .appendTo($cell);\n              break;\n\n            default:\n              $('<textarea/>', {\n                name: name,\n                rows: col.rows || 1,\n                val: typeof value !== 'object' ? value : null,\n                placeholder: col.placeholder,\n              }).appendTo($cell);\n          }\n        }\n\n        $cell.appendTo($tr);\n      }\n\n      if (allowReorder) {\n        $('<td/>', {\n          class: 'thin action',\n        })\n          .append(\n            $('<a/>', {\n              class: 'move icon',\n              title: Craft.t('app', 'Reorder'),\n              role: 'button',\n              type: 'button',\n            })\n          )\n          .appendTo($tr);\n      }\n\n      if (allowDelete) {\n        $('<td/>', {\n          class: 'thin action',\n        })\n          .append(\n            $('<button/>', {\n              class: 'delete icon',\n              title: Craft.t('app', 'Delete'),\n              type: 'button',\n            })\n          )\n          .appendTo($tr);\n      }\n\n      return $tr;\n    },\n  }\n);\n\n/**\n * Editable table row class\n */\nCraft.EditableTable.Row = Garnish.Base.extend(\n  {\n    table: null,\n    id: null,\n    niceTexts: null,\n\n    $tr: null,\n    $tds: null,\n    tds: null,\n    $textareas: null,\n    $deleteBtn: null,\n\n    init: function (table, tr) {\n      this.table = table;\n      this.$tr = $(tr);\n      this.$tds = this.$tr.children();\n      this.tds = [];\n      this.id = this.$tr.attr('data-id');\n\n      this.$tr.data('editable-table-row', this);\n\n      // Get the row ID, sans prefix\n      var id = parseInt(\n        this.id.substring(this.table.settings.rowIdPrefix.length)\n      );\n\n      if (id > this.table.biggestId) {\n        this.table.biggestId = id;\n      }\n\n      this.$textareas = $();\n      this.niceTexts = [];\n      var textareasByColId = {};\n\n      var i = 0;\n      var colId, col, td, $checkbox;\n\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        col = this.table.columns[colId];\n        td = this.tds[colId] = this.$tds[i];\n\n        if (Craft.inArray(col.type, Craft.EditableTable.textualColTypes)) {\n          $('.editable-table-preview', td).remove();\n          const $textarea = $('textarea', td);\n          this.$textareas = this.$textareas.add($textarea);\n\n          this.addListener($textarea, 'focus', 'onTextareaFocus');\n          this.addListener($textarea, 'mousedown', 'ignoreNextTextareaFocus');\n\n          this.niceTexts.push(\n            new Garnish.NiceText($textarea, {\n              onHeightChange: this.onTextareaHeightChange.bind(this),\n            })\n          );\n\n          this.addListener(\n            $textarea,\n            'keypress',\n            {tdIndex: i, type: col.type},\n            'handleKeypress'\n          );\n          this.addListener(\n            $textarea,\n            'input',\n            {type: col.type},\n            'validateValue'\n          );\n          $textarea.trigger('input');\n\n          if (col.type !== 'multiline') {\n            this.addListener(\n              $textarea,\n              'paste',\n              {tdIndex: i, type: col.type},\n              'handlePaste'\n            );\n          }\n\n          textareasByColId[colId] = $textarea;\n        } else if (col.type === 'checkbox') {\n          $checkbox = $('input[type=\"checkbox\"]', td);\n\n          if (col.radioMode) {\n            if (typeof this.table.radioCheckboxes[colId] === 'undefined') {\n              this.table.radioCheckboxes[colId] = [];\n            }\n            this.table.radioCheckboxes[colId].push($checkbox[0]);\n            this.addListener(\n              $checkbox,\n              'change',\n              {colId},\n              'onRadioCheckboxChange'\n            );\n          }\n\n          if (col.toggle) {\n            this.addListener($checkbox, 'change', {colId}, function (ev) {\n              this.applyToggleCheckbox(ev.data.colId);\n            });\n          }\n        }\n\n        if (!$(td).hasClass('disabled')) {\n          this.addListener(td, 'click', {td}, function (ev) {\n            if (ev.target === ev.data.td) {\n              $(ev.data.td).find('textarea,input,select,.lightswitch').focus();\n            }\n          });\n        }\n\n        i++;\n      }\n\n      // Now that all of the text cells have been nice-ified, let's normalize the heights\n      this.onTextareaHeightChange();\n\n      // See if we need to apply any checkbox toggles now that we've indexed all the TDs\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n        col = this.table.columns[colId];\n        if (col.type === 'checkbox' && col.toggle) {\n          this.applyToggleCheckbox(colId);\n        }\n      }\n\n      // Now look for any autopopulate columns\n      for (colId in this.table.columns) {\n        if (!this.table.columns.hasOwnProperty(colId)) {\n          continue;\n        }\n\n        col = this.table.columns[colId];\n\n        if (\n          col.autopopulate &&\n          typeof textareasByColId[col.autopopulate] !== 'undefined' &&\n          !textareasByColId[colId].val() &&\n          !textareasByColId[col.autopopulate].val()\n        ) {\n          new Craft.HandleGenerator(\n            textareasByColId[colId],\n            textareasByColId[col.autopopulate],\n            {\n              allowNonAlphaStart: true,\n            }\n          );\n        }\n      }\n\n      var $deleteBtn = this.$tr.children().last().find('.delete');\n      this.addListener($deleteBtn, 'click', 'deleteRow');\n\n      var $inputs = this.$tr.find('input,textarea,select,.lightswitch');\n      this.addListener($inputs, 'focus', function (ev) {\n        $(ev.currentTarget).closest('td:not(.disabled)').addClass('focus');\n      });\n      this.addListener($inputs, 'blur', function (ev) {\n        $(ev.currentTarget).closest('td').removeClass('focus');\n      });\n    },\n\n    onTextareaFocus: function (ev) {\n      this.onTextareaHeightChange();\n\n      var $textarea = $(ev.currentTarget);\n\n      if ($textarea.data('ignoreNextFocus')) {\n        $textarea.data('ignoreNextFocus', false);\n        return;\n      }\n\n      window.setTimeout(function () {\n        Craft.selectFullValue($textarea);\n      }, 0);\n    },\n\n    onRadioCheckboxChange: function (ev) {\n      if (ev.currentTarget.checked) {\n        for (\n          var i = 0;\n          i < this.table.radioCheckboxes[ev.data.colId].length;\n          i++\n        ) {\n          var checkbox = this.table.radioCheckboxes[ev.data.colId][i];\n          checkbox.checked = checkbox === ev.currentTarget;\n        }\n      }\n    },\n\n    applyToggleCheckbox: function (checkboxColId) {\n      var checkboxCol = this.table.columns[checkboxColId];\n      var checked = $('input[type=\"checkbox\"]', this.tds[checkboxColId]).prop(\n        'checked'\n      );\n      var colId, colIndex, neg;\n      for (var i = 0; i < checkboxCol.toggle.length; i++) {\n        colId = checkboxCol.toggle[i];\n        colIndex = this.table.colum;\n        neg = colId[0] === '!';\n        if (neg) {\n          colId = colId.substring(1);\n        }\n        if ((checked && !neg) || (!checked && neg)) {\n          $(this.tds[colId])\n            .removeClass('disabled')\n            .find('textarea, input')\n            .prop('disabled', false);\n        } else {\n          $(this.tds[colId])\n            .addClass('disabled')\n            .find('textarea, input')\n            .prop('disabled', true);\n        }\n      }\n    },\n\n    ignoreNextTextareaFocus: function (ev) {\n      $.data(ev.currentTarget, 'ignoreNextFocus', true);\n    },\n\n    handleKeypress: function (ev) {\n      var keyCode = ev.keyCode ? ev.keyCode : ev.charCode;\n      var ctrl = Garnish.isCtrlKeyPressed(ev);\n\n      // Going to the next/previous row?\n      if (\n        keyCode === Garnish.RETURN_KEY &&\n        (ev.data.type !== 'multiline' || ctrl)\n      ) {\n        ev.preventDefault();\n        if (ev.shiftKey) {\n          this.table.focusOnPrevRow(\n            this.$tr,\n            ev.data.tdIndex,\n            ev.currentTarget\n          );\n        } else {\n          this.table.focusOnNextRow(\n            this.$tr,\n            ev.data.tdIndex,\n            ev.currentTarget\n          );\n        }\n        return;\n      }\n    },\n\n    handlePaste: function (ev) {\n      let data = Craft.trim(\n        ev.originalEvent.clipboardData.getData('Text'),\n        ' \\n\\r'\n      );\n      if (!data.match(/[\\t\\r\\n]/)) {\n        return;\n      }\n      ev.preventDefault();\n      this.table.importData(data, this, ev.data.tdIndex);\n    },\n\n    validateValue: function (ev) {\n      if (ev.data.type === 'multiline') {\n        return;\n      }\n\n      if (ev.data.type === 'number') {\n        Craft.filterNumberInputVal(ev.currentTarget);\n        return;\n      }\n\n      // Strip any newlines\n      const safeValue = ev.currentTarget.value.replace(/[\\r\\n]/g, '');\n      if (safeValue !== ev.currentTarget.value) {\n        ev.currentTarget.value = safeValue;\n      }\n    },\n\n    onTextareaHeightChange: function () {\n      // Keep all the textareas' heights in sync\n      var tallestTextareaHeight = -1;\n\n      for (var i = 0; i < this.niceTexts.length; i++) {\n        if (this.niceTexts[i].height > tallestTextareaHeight) {\n          tallestTextareaHeight = this.niceTexts[i].height;\n        }\n      }\n\n      this.$textareas.css('min-height', tallestTextareaHeight);\n\n      // If the <td> is still taller, go with that instead\n      var tdHeight = this.$textareas\n        .filter(':visible')\n        .first()\n        .parent()\n        .height();\n\n      if (tdHeight > tallestTextareaHeight) {\n        this.$textareas.css('min-height', tdHeight);\n      }\n    },\n\n    deleteRow: function () {\n      this.table.deleteRow(this);\n    },\n  },\n  {\n    /** @deprecated */\n    numericKeyCodes: [\n      9 /* (tab) */, 8 /* (delete) */, 37, 38, 39, 40 /* (arrows) */, 45,\n      91 /* (minus) */, 46, 190 /* period */, 48, 49, 50, 51, 52, 53, 54, 55,\n      56, 57 /* (0-9) */,\n    ],\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Action Trigger\n */\nCraft.ElementActionTrigger = Garnish.Base.extend(\n  {\n    elementIndex: null,\n    maxLevels: null,\n    newChildUrl: null,\n    $trigger: null,\n    $selectedItems: null,\n    triggerEnabled: true,\n\n    init: function (settings) {\n      // Save a reference to the element index that this trigger will be used with\n      this.elementIndex = Craft.currentElementIndex;\n\n      // Register the trigger on the element index, so it can be destroyed when the view is updated\n      this.elementIndex.triggers.push(this);\n\n      if (!$.isPlainObject(settings)) {\n        settings = {};\n      }\n\n      // batch => bulk\n      if (typeof settings.batch !== 'undefined') {\n        settings.bulk = settings.batch;\n        delete settings.batch;\n      }\n      Object.defineProperty(settings, 'batch', {\n        get() {\n          return this.bulk;\n        },\n        set(v) {\n          this.bulk = v;\n        },\n      });\n\n      this.setSettings(settings, Craft.ElementActionTrigger.defaults);\n\n      this.$trigger = $(\n        `#${this.elementIndex.namespaceId(settings.type)}-actiontrigger`\n      ).data('trigger', this);\n\n      // Do we have a custom handler?\n      if (this.settings.activate) {\n        // Prevent the element index's click handler\n        this.$trigger.data('custom-handler', true);\n\n        let $button = this.$trigger.find('button,.btn');\n        if (!$button.length) {\n          $button = this.$trigger;\n        }\n        this.addListener($button, 'activate', 'handleTriggerActivation');\n      }\n\n      this.updateTrigger();\n      this.elementIndex.on('selectionChange', this.updateTrigger.bind(this));\n    },\n\n    updateTrigger: function () {\n      // Ignore if the last element was just unselected\n      if (this.elementIndex.getSelectedElements().length === 0) {\n        return;\n      }\n\n      if (this.validateSelection()) {\n        this.enableTrigger();\n      } else {\n        this.disableTrigger();\n      }\n    },\n\n    /**\n     * Determines if this action can be performed on the currently selected elements.\n     *\n     * @returns {boolean}\n     */\n    validateSelection: function () {\n      this.$selectedItems = this.elementIndex.getSelectedElements();\n\n      if (!this.settings.bulk && this.$selectedItems.length > 1) {\n        return false;\n      }\n\n      if (this.settings.requireId && this.$selectedItems.is('[data-id=\"\"]')) {\n        return false;\n      }\n\n      if (typeof this.settings.validateSelection === 'function') {\n        return this._call(() =>\n          this.settings.validateSelection(\n            this.$selectedItems,\n            this.elementIndex\n          )\n        );\n      }\n\n      return true;\n    },\n\n    enableTrigger: function () {\n      if (this.triggerEnabled) {\n        return;\n      }\n\n      this.$trigger.removeClass('disabled').removeAttr('aria-disabled');\n      this.triggerEnabled = true;\n    },\n\n    disableTrigger: function () {\n      if (!this.triggerEnabled) {\n        return;\n      }\n\n      this.$trigger.addClass('disabled').attr('aria-disabled', 'true');\n      this.triggerEnabled = false;\n    },\n\n    handleTriggerActivation: function () {\n      if (this.triggerEnabled) {\n        this._call(() =>\n          this.settings.activate(this.$selectedItems, this.elementIndex)\n        );\n      }\n    },\n\n    _call: function (fn) {\n      // temporarily set Craft.elementIndex to the trigger's index instance, for BC\n      const globalElementIndex = Craft.elementIndex;\n      Craft.elementIndex = this.elementIndex;\n      const response = fn();\n      Craft.elementIndex = globalElementIndex;\n      return response;\n    },\n  },\n  {\n    defaults: {\n      type: null,\n      bulk: true,\n      requireId: true,\n      validateSelection: null,\n      beforeActivate: async ($selectedElements, elementIndex) => {},\n      activate: null,\n      afterActivate: async ($selectedElements, elementIndex) => {},\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Element Editor\n */\nCraft.ElementEditor = Garnish.Base.extend(\n  {\n    isFullPage: null,\n    $container: null,\n    $activityContainer: null,\n    $tabContainer: null,\n    $contentContainer: null,\n    $sidebar: null,\n    $spinner: null,\n    $expandSiteStatusesBtn: null,\n    $statusIcon: null,\n    $previewBtn: null,\n\n    metaModal: null,\n    $nameTextInput: null,\n    $saveMetaBtn: null,\n\n    $siteStatusPane: null,\n    $globalLightswitch: null,\n    $siteLightswitches: null,\n    $additionalSiteField: null,\n\n    siteIds: null,\n    newSiteIds: null,\n\n    enableAutosave: null,\n    lastSerializedValue: null,\n    /**\n     * @type {?Craft.FormObserver}\n     */\n    formObserver: null,\n    cancelToken: null,\n    ignoreFailedRequest: false,\n    queue: null,\n    submittingForm: false,\n\n    draftElementIds: null,\n    failed: false,\n    httpStatus: null,\n    httpError: null,\n\n    openingPreview: false,\n    preview: null,\n    activatedPreviewToken: false,\n    previewTokenQueue: null,\n    previewLinks: null,\n    scrollY: null,\n\n    hiddenTipsStorageKey: 'Craft-' + Craft.systemUid + '.TipField.hiddenTips',\n\n    activityTooltips: null,\n\n    get tipDismissBtn() {\n      return this.$container.find('.tip-dismiss-btn');\n    },\n\n    get slideout() {\n      return this.$container.data('slideout');\n    },\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      if (this.$container.data('elementEditor')) {\n        console.warn('Double-instantiating an element editor on an element.');\n        this.$container.data('elementEditor').destroy();\n      }\n\n      this.$container.data('elementEditor', this);\n      this.$container.attr('data-element-editor', '');\n\n      this.setSettings(settings, Craft.ElementEditor.defaults);\n\n      this.isFullPage = [Craft.cp.$primaryForm[0], Craft.cp.$main[0]].includes(\n        this.$container[0]\n      );\n\n      if (this.isFullPage) {\n        this.$tabContainer = $('#tabs');\n        this.$contentContainer = $('#content');\n        this.$sidebar = $('#details .details');\n      } else {\n        this.$tabContainer = this.slideout.$tabContainer;\n        this.$contentContainer = this.slideout.$content;\n        this.$sidebar = this.slideout.$sidebar;\n      }\n\n      this.queue = this._createQueue();\n      this.previewTokenQueue = this._createQueue();\n\n      this.draftElementIds = {};\n      this.enableAutosave = Craft.autosaveDrafts;\n      this.previewLinks = [];\n\n      if (this.settings.previewTargets?.length) {\n        const $actionBtn = this.isFullPage\n          ? $('#action-btn')\n          : this.slideout.$actionBtn;\n        const idPrefix = this.namespaceId('action-view');\n        const $viewAction = $actionBtn\n          ?.data('disclosureMenu')\n          ?.$container.find(`a[id^=\"${idPrefix}-\"]`);\n        if ($viewAction?.length) {\n          const href = $viewAction.attr('href');\n          $viewAction\n            .data('targetUrl', href)\n            .attr('href', this.getTokenizedPreviewUrl(href, null, false));\n          this.previewLinks.push($viewAction);\n        }\n      }\n\n      this.siteIds = Object.keys(this.settings.siteStatuses).map((siteId) => {\n        return parseInt(siteId);\n      });\n\n      this.$previewBtn = this.$container.find('.preview-btn');\n\n      const $spinnerContainer = this.isFullPage\n        ? $('#page-title')\n        : this.slideout.$toolbar;\n      this.$spinner = $('<div/>', {\n        class: 'revision-spinner spinner hidden',\n        title: Craft.t('app', 'Saving'),\n      }).appendTo($spinnerContainer);\n      this.$statusIcon = $('<div/>', {\n        class: `revision-status ${this.isFullPage ? 'invisible' : 'hidden'}`,\n      }).appendTo($spinnerContainer);\n      this.$statusMessage = $('<div/>', {\n        class: 'revision-status-message visually-hidden',\n        'aria-live': 'polite',\n      }).appendTo($spinnerContainer);\n\n      this.$expandSiteStatusesBtn = $('.expand-status-btn');\n\n      if (this.settings.canEditMultipleSites) {\n        this.addListener(\n          this.$expandSiteStatusesBtn,\n          'click',\n          'expandSiteStatuses'\n        );\n      }\n\n      if (this.settings.previewTargets.length && this.isFullPage) {\n        if (this.settings.enablePreview) {\n          this.addListener(this.$previewBtn, 'click', 'openPreview');\n        }\n\n        const $previewBtnContainer = this.$container.find(\n          '.preview-btn-container'\n        );\n\n        if (this.settings.previewTargets.length === 1) {\n          const [target] = this.settings.previewTargets;\n          this.createPreviewLink(target)\n            .addClass('view-btn btn')\n            .attr('aria-label', Craft.t('app', 'View'))\n            .appendTo($previewBtnContainer);\n        } else {\n          this.createShareMenu($previewBtnContainer);\n        }\n      }\n\n      // If the user can't save the element, we're done here\n      if (!this.settings.canSave) {\n        return;\n      }\n\n      if (this.$container.prop('tagName') !== 'FORM') {\n        throw 'Element editors may only be used with forms.';\n      }\n\n      if (this.isFullPage && Craft.edition === Craft.Pro) {\n        this.$activityContainer = this.$container.find('.activity-container');\n        this._checkActivity();\n      }\n\n      // Override the serializer to use our own\n      this.$container.data('serializer', () => this.serializeForm(true));\n      this.$container.data('initialSerializedValue', this.serializeForm(true));\n\n      // Re-record the initial values once the fields have had a chance to initialize\n      Garnish.requestAnimationFrame(() => {\n        this.$container.data(\n          'initialSerializedValue',\n          this.serializeForm(true)\n        );\n      });\n\n      if (this.isFullPage) {\n        this.addListener(this.$container, 'submit', 'handleSubmit');\n      }\n\n      if (this.settings.isProvisionalDraft) {\n        this.initForProvisionalDraft();\n      } else if (this.settings.draftId && !this.settings.isUnpublishedDraft) {\n        this.initForDraft();\n      } else if (!this.settings.canSaveCanonical) {\n        // Override the save shortcut to create a draft too\n        this.addListener(this.$container, 'submit.saveShortcut', (ev) => {\n          if (ev.saveShortcut) {\n            ev.preventDefault();\n            this.saveDraft();\n            this.removeListener(this.$container, 'submit.saveShortcut');\n          }\n        });\n      }\n\n      this.listenForChanges();\n\n      this.addListener(this.$statusIcon, 'click', () => {\n        this.showStatusHud(this.$statusIcon);\n      });\n\n      // handle closing tips\n      this.handleDismissibleTips();\n\n      if (this.isFullPage && Craft.messageReceiver) {\n        // Listen on Craft.broadcaster to ignore any messages sent by this very page\n        Craft.broadcaster.addEventListener('message', (ev) => {\n          if (\n            (ev.data.event === 'saveDraft' &&\n              ev.data.canonicalId === this.settings.canonicalId &&\n              (ev.data.draftId === this.settings.draftId ||\n                (ev.data.isProvisionalDraft && !this.settings.draftId))) ||\n            (ev.data.event === 'saveElement' &&\n              ev.data.id === this.settings.canonicalId &&\n              !this.settings.draftId)\n          ) {\n            Craft.setLocalStorage('scrollY', window.scrollY);\n            window.location.reload();\n          } else if (\n            ev.data.event === 'deleteDraft' &&\n            ev.data.canonicalId === this.settings.canonicalId &&\n            ev.data.draftId === this.settings.draftId\n          ) {\n            const url = new URL(window.location.href);\n            url.searchParams.delete('draftId');\n            if (url.href !== document.location.href) {\n              window.location.href = url;\n            } else {\n              Craft.setLocalStorage('scrollY', window.scrollY);\n              window.location.reload();\n            }\n          }\n        });\n      }\n\n      this.activityTooltips = {};\n\n      if (this.isFullPage) {\n        Craft.ui.setFocusOnErrorSummary(this.$container);\n      }\n    },\n\n    _createQueue: function () {\n      const queue = new Craft.Queue();\n      queue.on('beforeRun', () => {\n        this.showSpinner();\n      });\n      queue.on('afterRun', () => {\n        this.hideSpinner();\n      });\n      return queue;\n    },\n\n    get namespace() {\n      if (this.isFullPage) {\n        return null;\n      }\n\n      return this.slideout.namespace;\n    },\n\n    namespaceInputName(name) {\n      return Craft.namespaceInputName(name, this.namespace);\n    },\n\n    namespaceId(id) {\n      return Craft.namespaceId(id, this.namespace);\n    },\n\n    get listeningForChanges() {\n      return !!this.formObserver;\n    },\n\n    /**\n     * @deprecated\n     */\n    get pauseLevel() {\n      return this.formObserver?._pauseLevel ?? 0;\n    },\n\n    listenForChanges: function () {\n      if (this.formObserver) {\n        return;\n      }\n\n      this.formObserver = new Craft.FormObserver(this.$container, () => {\n        this.checkForm();\n      });\n    },\n\n    stopListeningForChanges: function () {\n      if (this.formObserver) {\n        this.formObserver.destroy();\n        this.formObserver = null;\n        return;\n      }\n    },\n\n    pause: function () {\n      this.formObserver?.pause();\n    },\n\n    resume: function (checkBeforeListening = true) {\n      this.formObserver?.resume();\n    },\n\n    initForProvisionalDraft: function () {\n      let $discardButton = this.$container.find('.discard-changes-btn');\n\n      if (!$discardButton.length) {\n        let initialHeight, scrollTop;\n\n        let $noticeContainer;\n        if (this.isFullPage) {\n          initialHeight = $('#content').height();\n          scrollTop = Garnish.$win.scrollTop();\n          $noticeContainer = Craft.cp.$noticeContainer;\n        } else {\n          $noticeContainer = this.$container.find('.so-notice');\n        }\n\n        const $notice = $('<div/>', {\n          class: 'draft-notice',\n        })\n          .append(\n            $('<div/>', {\n              class: 'draft-icon',\n              'aria-hidden': 'true',\n              'data-icon': 'edit',\n            })\n          )\n          .append(\n            $('<p/>', {\n              text: Craft.t('app', 'Showing your unsaved changes.'),\n            })\n          )\n          .appendTo($noticeContainer);\n\n        $discardButton = $('<button/>', {\n          type: 'button',\n          class: 'discard-changes-btn btn',\n          text: Craft.t('app', 'Discard'),\n        }).appendTo($notice);\n\n        if (this.isFullPage) {\n          const heightDiff = $('#content').height() - initialHeight;\n          Garnish.$win.scrollTop(scrollTop + heightDiff);\n\n          // If there isn’t enough content to simulate the same scroll position, slide it down instead\n          if (Garnish.$win.scrollTop() === scrollTop) {\n            // Disable pointer events until half a second after the animation is complete\n            Craft.cp.$contentContainer.css('pointer-events', 'none');\n\n            $('#content-header').css('min-height', 'auto');\n            const height = $noticeContainer.height();\n            $noticeContainer\n              .css({height: height - heightDiff, overflow: 'hidden'})\n              .velocity({height: height}, 'fast', () => {\n                $('#content-header').css('min-height', '');\n                $noticeContainer.css({height: '', overflow: ''});\n\n                setTimeout(() => {\n                  Craft.cp.$contentContainer.css('pointer-events', '');\n                }, 300);\n              });\n          }\n        }\n      }\n\n      this.addListener(\n        $discardButton,\n        'keypress,keyup,change,focus,blur,click,mousedown,mouseup',\n        (ev) => {\n          ev.stopPropagation();\n        }\n      );\n\n      this.addListener($discardButton, 'click', () => {\n        if (\n          confirm(\n            Craft.t('app', 'Are you sure you want to discard your changes?')\n          )\n        ) {\n          this.queue.unshift(\n            () =>\n              new Promise((resolve, reject) => {\n                if (this.isFullPage) {\n                  Craft.submitForm(this.$container, {\n                    action: 'elements/delete-draft',\n                    redirect: this.settings.hashedCpEditUrl,\n                    params: {\n                      draftId: this.settings.draftId,\n                      provisional: 1,\n                    },\n                  });\n                } else {\n                  Craft.sendActionRequest('POST', 'elements/delete-draft', {\n                    data: {\n                      elementId: this.settings.canonicalId,\n                      draftId: this.settings.draftId,\n                      provisional: 1,\n                    },\n                  })\n                    .then((response) => {\n                      Craft.cp.displaySuccess(response.data.message);\n                      this.slideout.close();\n                    })\n                    .catch(reject);\n                }\n              })\n          );\n        }\n      });\n\n      if (!this.isFullPage) {\n        this.slideout.$cancelBtn.text(Craft.t('app', 'Close'));\n      }\n    },\n\n    initForDraft: function () {\n      // Create the edit draft button\n      this.createEditMetaAction();\n\n      if (this.settings.canSaveCanonical) {\n        Garnish.uiLayerManager.registerShortcut(\n          {\n            keyCode: Garnish.S_KEY,\n            ctrl: true,\n            alt: true,\n          },\n          () => {\n            Craft.submitForm(this.$container, {\n              action: 'elements/apply-draft',\n              redirect: this.settings.hashedCpEditUrl,\n            });\n          },\n          0\n        );\n      }\n    },\n\n    expandSiteStatuses: function () {\n      this.removeListener(this.$expandSiteStatusesBtn, 'click');\n      this.$expandSiteStatusesBtn.velocity({opacity: 0}, 'fast', () => {\n        this.$expandSiteStatusesBtn.remove();\n      });\n\n      const $enabledForSiteField = this.$container.find(\n        `.enabled-for-site-${this.settings.siteId}-field`\n      );\n      this.$siteStatusPane = $enabledForSiteField.parent();\n\n      // If this is a revision, just show the site statuses statically and be done\n      if (this.settings.revisionId) {\n        this._getOtherSupportedSites().forEach((s) =>\n          this._createSiteStatusField(s)\n        );\n        return;\n      }\n\n      $enabledForSiteField.addClass('nested');\n      const $globalField = Craft.ui\n        .createLightswitchField({\n          label: Craft.t('app', 'Enabled for all sites'),\n          name: this.namespaceInputName('enabled'),\n        })\n        .insertBefore($enabledForSiteField);\n      $globalField.find('label').css('font-weight', 'bold');\n      this.$globalLightswitch = $globalField.find('.lightswitch');\n\n      if (!this.settings.revisionId) {\n        this._showField($globalField);\n      }\n\n      // Figure out what the \"Enabled everywhere\" lightswitch would have been set to when the page first loaded\n      const siteStatusValues = Object.values(this.settings.siteStatuses);\n      const hasEnabled = siteStatusValues.includes(true);\n      const hasDisabled = siteStatusValues.includes(false);\n      const originalEnabledValue =\n        hasEnabled && hasDisabled ? '-' : hasEnabled ? '1' : '';\n      const originalSerializedStatus =\n        encodeURIComponent(\n          this.namespaceInputName(`enabledForSite[${this.settings.siteId}]`)\n        ) +\n        '=' +\n        (this.settings.enabledForSite ? '1' : '');\n\n      this.$siteLightswitches = $enabledForSiteField\n        .find('.lightswitch')\n        .on('change', this._updateGlobalStatus.bind(this));\n\n      this._getOtherSupportedSites().forEach((s) =>\n        this._createSiteStatusField(s)\n      );\n\n      let serializedStatuses =\n        encodeURIComponent(this.namespaceInputName('enabled')) +\n        `=${originalEnabledValue}`;\n      for (let i = 0; i < this.$siteLightswitches.length; i++) {\n        const $input = this.$siteLightswitches.eq(i).data('lightswitch').$input;\n        serializedStatuses +=\n          '&' + encodeURIComponent($input.attr('name')) + '=' + $input.val();\n      }\n\n      this.$container.data(\n        'initialSerializedValue',\n        this.$container\n          .data('initialSerializedValue')\n          .replace(originalSerializedStatus, serializedStatuses)\n      );\n\n      if (this.lastSerializedValue) {\n        this.lastSerializedValue = this.lastSerializedValue.replace(\n          originalSerializedStatus,\n          serializedStatuses\n        );\n      }\n\n      // Are there additional sites that can be added?\n      if (\n        this.settings.additionalSites &&\n        this.settings.additionalSites.length &&\n        this.isFullPage\n      ) {\n        this._createAddlSiteField();\n      }\n\n      // Focus on first lightswitch\n      this.$globalLightswitch.focus();\n\n      this.$globalLightswitch.on('change', this._updateSiteStatuses.bind(this));\n      this._updateGlobalStatus();\n    },\n\n    /**\n     * @returns {Array}\n     */\n    _getOtherSupportedSites: function () {\n      return Craft.sites.filter(\n        (s) => s.id != this.settings.siteId && this.siteIds.includes(s.id)\n      );\n    },\n\n    _showField: function ($field) {\n      const height = $field.height();\n      $field\n        .css({\n          overflow: 'hidden',\n          'min-height': 'auto',\n        })\n        .height(0)\n        .velocity({height}, 'fast', () => {\n          $field.css({\n            overflow: '',\n            height: '',\n            'min-height': '',\n          });\n        });\n    },\n\n    _removeField: function ($field) {\n      $field\n        .css({\n          overflow: 'hidden',\n          'min-height': 'auto',\n        })\n        .velocity({height: 0}, 'fast', () => {\n          $field.remove();\n        });\n    },\n\n    _updateGlobalStatus: function () {\n      let allEnabled = true,\n        allDisabled = true;\n      this.$siteLightswitches.each(function () {\n        const enabled = $(this).data('lightswitch').on;\n        if (enabled) {\n          allDisabled = false;\n        } else {\n          allEnabled = false;\n        }\n        if (!allEnabled && !allDisabled) {\n          return false;\n        }\n      });\n      if (allEnabled) {\n        this.$globalLightswitch.data('lightswitch').turnOn(true);\n      } else if (allDisabled) {\n        this.$globalLightswitch.data('lightswitch').turnOff(true);\n      } else {\n        this.$globalLightswitch.data('lightswitch').turnIndeterminate(true);\n      }\n    },\n\n    _updateSiteStatuses: function () {\n      const enabled = this.$globalLightswitch.data('lightswitch').on;\n      this.$siteLightswitches.each(function () {\n        if (enabled) {\n          $(this).data('lightswitch').turnOn(true);\n        } else {\n          $(this).data('lightswitch').turnOff(true);\n        }\n      });\n    },\n\n    _createSiteStatusField: function (site, status) {\n      const $field = Craft.ui.createLightswitchField({\n        fieldClass: `enabled-for-site-${site.id}-field`,\n        label: site.name,\n        name: this.namespaceInputName(`enabledForSite[${site.id}]`),\n        on:\n          typeof status != 'undefined'\n            ? status\n            : this.settings.siteStatuses.hasOwnProperty(site.id)\n              ? this.settings.siteStatuses[site.id]\n              : true,\n        disabled: !!this.settings.revisionId,\n      });\n\n      if (this.$additionalSiteField) {\n        $field.insertBefore(this.$additionalSiteField);\n      } else {\n        $field.appendTo(this.$siteStatusPane);\n      }\n\n      if (!this.settings.revisionId) {\n        $field.addClass('nested');\n        const $lightswitch = $field\n          .find('.lightswitch')\n          .on('change', this._updateGlobalStatus.bind(this));\n        this.$siteLightswitches = this.$siteLightswitches.add($lightswitch);\n      }\n\n      this._showField($field);\n\n      return $field;\n    },\n\n    _createAddlSiteField: function () {\n      const additionalSites = Craft.sites.filter((site) => {\n        return (\n          !this.siteIds.includes(site.id) &&\n          this.settings.additionalSites.some((s) => s.siteId == site.id)\n        );\n      });\n\n      if (!additionalSites.length) {\n        return;\n      }\n\n      const selectLabelId = 'add-site-label';\n\n      const $addlSiteSelectLabel = $('<span/>', {\n        text: Craft.t('app', 'Add a site...'),\n        class: 'visually-hidden',\n        id: selectLabelId,\n      });\n\n      const $addlSiteSelectContainer = Craft.ui\n        .createSelect({\n          options: [\n            {label: Craft.t('app', 'Add a site…')},\n            ...additionalSites.map((s) => {\n              return {label: s.name, value: s.id};\n            }),\n          ],\n          labelledBy: selectLabelId,\n        })\n        .addClass('fullwidth');\n\n      this.$additionalSiteField = Craft.ui\n        .createField($addlSiteSelectContainer, {})\n        .addClass('nested add')\n        .appendTo(this.$siteStatusPane);\n\n      $addlSiteSelectLabel.prependTo(this.$additionalSiteField);\n\n      const $addlSiteSelect = $addlSiteSelectContainer.find('select');\n\n      $addlSiteSelect.on('change', () => {\n        const siteId = parseInt($addlSiteSelect.val());\n        const site = Craft.sites.find((s) => s.id === siteId);\n\n        if (!site) {\n          return;\n        }\n\n        const addlSiteInfo = this.settings.additionalSites.find(\n          (s) => s.siteId == site.id\n        );\n        this._createSiteStatusField(site, addlSiteInfo.enabledByDefault);\n        this._updateGlobalStatus();\n\n        $addlSiteSelect.val('').find(`option[value=\"${siteId}\"]`).remove();\n\n        if (this.newSiteIds === null) {\n          this.newSiteIds = [];\n        }\n\n        this.siteIds.push(siteId);\n        this.newSiteIds.push(siteId);\n\n        // Was that the last site?\n        if ($addlSiteSelect.find('option').length === 1) {\n          this._removeField(this.$additionalSiteField);\n        }\n      });\n\n      this._showField(this.$additionalSiteField);\n    },\n\n    showStatusHud: function (target) {\n      let bodyHtml;\n\n      if (!this.failed) {\n        bodyHtml = `<p>${this._saveSuccessMessage()}</p>`;\n      } else {\n        bodyHtml = `<p class=\"error\"><strong>${this._saveFailMessage()}</strong></p>`;\n\n        if (this.httpError) {\n          bodyHtml += `<p class=\"http-error code\">${Craft.escapeHtml(\n            this.httpError\n          )}</p>`;\n        }\n\n        if (this.httpStatus === 400) {\n          bodyHtml += `<button class=\"btn refresh-btn\">${Craft.t(\n            'app',\n            'Refresh'\n          )}</button>`;\n        }\n      }\n\n      const hud = new Garnish.HUD(target, bodyHtml, {\n        hudClass: 'hud revision-status-hud',\n        onHide: function () {\n          hud.destroy();\n        },\n      });\n\n      hud.$mainContainer.find('.refresh-btn').on('click', () => {\n        window.location.reload();\n      });\n    },\n\n    /**\n     * @returns {string}\n     */\n    _saveSuccessMessage: function () {\n      return this.settings.isProvisionalDraft ||\n        this.settings.isUnpublishedDraft\n        ? Craft.t('app', 'Your changes have been stored.')\n        : Craft.t('app', 'The draft has been saved.');\n    },\n\n    /**\n     * @returns {string}\n     */\n    _saveFailMessage: function () {\n      return this.settings.isProvisionalDraft ||\n        this.settings.isUnpublishedDraft\n        ? Craft.t('app', 'Your changes could not be stored.')\n        : Craft.t('app', 'The draft could not be saved.');\n    },\n\n    spinners: function () {\n      return this.preview\n        ? this.$spinner.add(this.preview.$spinner)\n        : this.$spinner;\n    },\n\n    showSpinner: function () {\n      this.spinners().removeClass('hidden');\n    },\n\n    hideSpinner: function () {\n      this.spinners().addClass('hidden');\n    },\n\n    statusIcons: function () {\n      return this.preview\n        ? this.$statusIcon.add(this.preview.$statusIcon)\n        : this.$statusIcon;\n    },\n\n    statusMessage: function () {\n      return this.preview\n        ? this.$statusMessage.add(this.preview.$statusMessage)\n        : this.$statusMessage;\n    },\n\n    createEditMetaAction: function () {\n      if (!this.isFullPage) {\n        return;\n      }\n\n      const menu = $('#action-menu').disclosureMenu().data('disclosureMenu');\n      const destructiveGroup = menu.getFirstDestructiveGroup();\n      const group = menu.addGroup(null, true, destructiveGroup);\n      const button = menu.addItem(\n        {\n          type: 'button',\n          icon: 'edit',\n          label: Craft.t('app', 'Edit draft settings'),\n        },\n        group\n      );\n      this.addListener(button, 'click', 'showMetaModal');\n    },\n\n    createPreviewLink: function (target, label) {\n      const $a = $('<a/>', {\n        href: this.getTokenizedPreviewUrl(target.url, null, false),\n        text: label || Craft.t('app', 'View'),\n        target: '_blank',\n        data: {\n          targetUrl: target.url,\n          targetLabel: target.label,\n        },\n      });\n\n      this.addListener($a, 'click', () => {\n        setTimeout(() => {\n          this.activatePreviewToken();\n        }, 1);\n      });\n\n      this.previewLinks.push($a);\n      return $a;\n    },\n\n    updatePreviewLinks: function () {\n      this.previewLinks.forEach(($a) => {\n        this.updatePreviewLinkHref($a);\n        if (this.activatedPreviewToken) {\n          this.removeListener($a, 'click');\n        }\n      });\n    },\n\n    updatePreviewLinkHref: function ($a) {\n      $a.attr(\n        'href',\n        this.getTokenizedPreviewUrl($a.data('targetUrl'), null, false)\n      );\n    },\n\n    activatePreviewToken: function () {\n      if (this.settings.isLive) {\n        // don't do anything yet, but leave the event in case we need it later\n        return;\n      }\n\n      this.activatedPreviewToken = true;\n      this.updatePreviewLinks();\n    },\n\n    createShareMenu: function ($container) {\n      const $btn = $('<button/>', {\n        type: 'button',\n        class: 'view-btn btn menubtn',\n        text: Craft.t('app', 'View'),\n      }).appendTo($container);\n\n      const $menu = $('<div/>', {class: 'menu'}).appendTo($container);\n      const $ul = $('<ul/>').appendTo($menu);\n\n      this.settings.previewTargets.forEach((target) => {\n        $('<li/>')\n          .append(this.createPreviewLink(target, target.label))\n          .appendTo($ul);\n      });\n\n      new Garnish.MenuBtn($btn);\n    },\n\n    getPreviewTokenParams: function () {\n      const params = {\n        elementType: this.settings.elementType,\n        canonicalId: this.settings.canonicalId,\n        siteId: this.settings.siteId,\n        revisionId: this.settings.revisionId,\n        previewToken: this.settings.previewToken,\n      };\n\n      if (this.settings.draftId && !this.settings.isProvisionalDraft) {\n        params.draftId = this.settings.draftId;\n      }\n\n      return params;\n    },\n\n    getPreviewToken: function () {\n      return this.previewTokenQueue.push(() => {\n        return new Promise((resolve, reject) => {\n          if (this.activatedPreviewToken) {\n            resolve(this.settings.previewToken);\n            return;\n          }\n\n          Craft.sendActionRequest('POST', 'preview/create-token', {\n            data: this.getPreviewTokenParams(),\n          })\n            .then(() => {\n              this.activatePreviewToken();\n              resolve(this.settings.previewToken);\n            })\n            .catch(reject);\n        });\n      });\n    },\n\n    /**\n     * @param {string} url\n     * @param {?string} [randoParam]\n     * @param {boolean} [asPromise=false]\n     * @returns {(Promise|string)}\n     */\n    getTokenizedPreviewUrl: function (url, randoParam, asPromise) {\n      if (typeof asPromise === 'undefined') {\n        asPromise = true;\n      }\n\n      const params = {};\n\n      if (randoParam || !this.settings.isLive) {\n        // Randomize the URL so CDNs don't return cached pages\n        params[randoParam || 'x-craft-preview'] = Craft.randomString(10);\n      }\n\n      if (this.settings.siteToken) {\n        params[Craft.siteToken] = this.settings.siteToken;\n      }\n\n      // No need for a token if we're looking at a live element\n      if (this.settings.isLive) {\n        const previewUrl = Craft.getUrl(url, params);\n\n        if (asPromise) {\n          return new Promise((resolve) => {\n            resolve(previewUrl);\n          });\n        }\n\n        return previewUrl;\n      }\n\n      if (!this.settings.previewToken) {\n        throw 'Missing preview token';\n      }\n\n      params[Craft.tokenParam] = this.settings.previewToken;\n      const previewUrl = Craft.getUrl(url, params);\n\n      if (this.activatedPreviewToken) {\n        if (asPromise) {\n          return new Promise((resolve) => {\n            resolve(previewUrl);\n          });\n        }\n\n        return previewUrl;\n      }\n\n      if (asPromise) {\n        return new Promise((resolve, reject) => {\n          this.getPreviewToken()\n            .then(() => {\n              resolve(previewUrl);\n            })\n            .catch(reject);\n        });\n      }\n\n      const createTokenParams = this.getPreviewTokenParams();\n      createTokenParams.redirect = previewUrl;\n      return Craft.getActionUrl('preview/create-token', createTokenParams);\n    },\n\n    getPreview: function () {\n      if (!this.preview) {\n        this.preview = new Craft.Preview(this);\n        if (!this.enableAutosave) {\n          this.preview.on('open', () => {\n            this.enableAutosave = true;\n            this.checkForm();\n          });\n          this.preview.on('close', () => {\n            this.enableAutosave = false;\n\n            // Hide the status icon if the save was successful\n            const $statusIcons = this.statusIcons();\n            if ($statusIcons.hasClass('checkmark-icon')) {\n              $statusIcons.addClass('hidden');\n            }\n          });\n        }\n        this.preview.on('beforeOpen', () => {\n          this.formObserver?.pause();\n        });\n        this.preview.on('close', () => {\n          this.formObserver?.resume();\n          if (this.scrollY) {\n            window.scrollTo(0, this.scrollY);\n            this.scrollY = null;\n          }\n        });\n      }\n      return this.preview;\n    },\n\n    openPreview: async function () {\n      if (Garnish.hasAttr(this.$previewBtn, 'aria-disabled')) {\n        return;\n      }\n\n      this.$previewBtn.attr('aria-disabled', true);\n      this.$previewBtn.addClass('loading');\n\n      try {\n        await this.checkForm();\n        this.openingPreview = true;\n        await this.ensureIsDraftOrRevision(true);\n        this.scrollY = window.scrollY;\n        this.getPreview().open();\n      } finally {\n        this.$previewBtn.removeAttr('aria-disabled');\n        this.$previewBtn.removeClass('loading');\n        this.openingPreview = false;\n      }\n    },\n\n    ensureIsDraftOrRevision: function (onlyIfChanged) {\n      return new Promise((resolve, reject) => {\n        if (!this.settings.draftId && !this.settings.revisionId) {\n          if (\n            onlyIfChanged &&\n            this.serializeForm(true) ===\n              this.$container.data('initialSerializedValue')\n          ) {\n            resolve();\n            return;\n          }\n\n          this.saveDraft().then(resolve).catch(reject);\n        } else {\n          resolve();\n        }\n      });\n    },\n\n    async setFormValue(name, value) {\n      if (this.settings.revisionId) {\n        throw 'Unable to set form values on a revision.';\n      }\n\n      // See if the value is already set\n      const params = this.$container.serialize().split('&');\n      if (\n        params.includes(\n          `${encodeURIComponent(name)}=${encodeURIComponent(value)}`\n        )\n      ) {\n        return;\n      }\n\n      $('<input/>', {\n        type: 'hidden',\n        name,\n        value,\n      }).prependTo(this.$container);\n      if (this.settings.canCreateDrafts) {\n        await this.saveDraft();\n      }\n    },\n\n    async markDeltaNameAsModified(name) {\n      let names = this.$container.data('modified-delta-names') || [];\n      if (!names.includes(name)) {\n        names.push(name);\n        this.$container.data('modified-delta-names', names);\n        await this.saveDraft();\n      }\n    },\n\n    serializeForm: function (removeActionParams) {\n      let data = this.$container.serialize();\n\n      if (this.isPreviewActive()) {\n        // Replace the temp input with the preview form data\n        data = data.replace(\n          '__PREVIEW_FIELDS__=1',\n          this.preview.$editor.serialize()\n        );\n      }\n\n      if (removeActionParams && !this.settings.isUnpublishedDraft) {\n        // Remove action and redirect params\n        const actionName = encodeURIComponent(\n          this.namespaceInputName('action')\n        );\n        const redirectName = encodeURIComponent(\n          this.namespaceInputName('redirect')\n        );\n        data = data.replace(\n          new RegExp(`&${Craft.escapeRegex(actionName)}=[^&]*`),\n          ''\n        );\n        data = data.replace(\n          new RegExp(`&${Craft.escapeRegex(redirectName)}=[^&]*`),\n          ''\n        );\n      }\n\n      // remove embedded element index names\n      data = data.replace(/&elementindex-[^&]*/g, '');\n\n      return data;\n    },\n\n    /**\n     * @param {boolean} [force=false]\n     * @returns {Promise}\n     */\n    checkForm: function (force) {\n      return this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            // If this is a draft, there's nothing to check\n            if (this.settings.revisionId) {\n              resolve();\n              return;\n            }\n\n            // If we haven't had a chance to fetch the initial data yet, try again in a bit\n            if (\n              typeof this.$container.data('initialSerializedValue') ===\n              'undefined'\n            ) {\n              setTimeout(() => {\n                this.checkForm(force).then(resolve).catch(reject);\n              }, 500);\n              return;\n            }\n\n            // Has anything changed?\n            const data = this.serializeForm(true);\n            if (\n              !force &&\n              data ===\n                (this.lastSerializedValue ||\n                  this.$container.data('initialSerializedValue'))\n            ) {\n              resolve();\n              return;\n            }\n\n            if (this.enableAutosave && this.settings.canCreateDrafts) {\n              this._saveDraftInternal(data)\n                .then(resolve)\n                .catch((e) => {\n                  console.warn('Couldn’t save draft:', e);\n                  reject(e);\n                });\n            } else {\n              this.updateFieldLayout(data)\n                .then(resolve)\n                .catch((e) => {\n                  console.warn('Couldn’t update field layout:', e);\n                  reject(e);\n                });\n            }\n          })\n      );\n    },\n\n    isPreviewActive: function () {\n      return this.preview && this.preview.isActive;\n    },\n\n    /**\n     * @param {Object} [params]\n     * @returns {Promise}\n     */\n    saveDraft: function (params) {\n      return this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            this._saveDraftInternal(this.serializeForm(true), params)\n              .then(resolve)\n              .catch(reject);\n          })\n      );\n    },\n\n    /**\n     * @param {Object} data\n     * @param {Object} [params]\n     * @returns {Promise}\n     */\n    _saveDraftInternal: function (data, params) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're already submitting the main form\n        if (this.submittingForm) {\n          reject('Form already being submitted.');\n          return;\n        }\n\n        this.lastSerializedValue = data;\n        this.failed = false;\n        this.httpStatus = null;\n        this.httpError = null;\n        this.cancelToken = axios.CancelToken.source();\n\n        this.statusIcons()\n          .velocity('stop')\n          .css('opacity', '')\n          .removeClass('hidden invisible checkmark-icon alert-icon fade-out')\n          .addClass('hidden');\n\n        // Clear previous status message\n        this.statusMessage().empty();\n\n        if (this.$saveMetaBtn) {\n          this.$saveMetaBtn.addClass('active');\n        }\n\n        // Prep the data to be saved, keeping track of the first input name for each delta group\n        const [modifiedDeltaNames] = Craft.findModifiedDeltaNames(\n          this.$container.data('initialSerializedValue'),\n          data,\n          this.$container.data('delta-names'),\n          this.$container.data('initial-delta-values'),\n          this.$container.data('modified-delta-names'),\n          true\n        );\n\n        const params = this.prepareData(data, null, true);\n\n        let $modifiedFields = $();\n        for (const name of modifiedDeltaNames) {\n          const $field = ($modifiedFields = $modifiedFields.add(\n            this.$container.find(\n              `.field[data-base-input-name=\"${$.escapeSelector(name)}\"]`\n            )\n          ));\n          $modifiedFields = $modifiedFields\n            .add($field)\n            .add($field.parentsUntil(this.$container, '.field'));\n        }\n\n        params.push(\n          $.param({\n            [this.namespaceInputName('visibleLayoutElements')]:\n              this.settings.visibleLayoutElements,\n          })\n        );\n\n        // Are we saving a provisional draft?\n        if (this.settings.isProvisionalDraft || !this.settings.draftId) {\n          params.push(`${this.namespaceInputName('provisional')}=1`);\n        }\n\n        const selectedTabId = this.$contentContainer\n          .children('[data-layout-tab]:not(.hidden)')\n          .data('id');\n        if (selectedTabId) {\n          params.push(\n            `${this.namespaceInputName('selectedTab')}=${selectedTabId}`\n          );\n        }\n\n        Craft.sendActionRequest('POST', 'elements/save-draft', {\n          cancelToken: this.cancelToken.token,\n          headers: this._saveHeaders,\n          data: params.join('&'),\n        })\n          .then((response) => {\n            this._afterSaveDraft();\n            this._afterUpdateFieldLayout(data, selectedTabId, response);\n\n            const createdProvisionalDraft = !this.settings.draftId;\n\n            if (createdProvisionalDraft) {\n              this.settings.isProvisionalDraft = true;\n            }\n\n            if (this.isFullPage) {\n              if (response.data.title) {\n                this.$container.find('.screen-title').text(response.data.title);\n              }\n\n              if (response.data.docTitle) {\n                document.title = response.data.docTitle;\n              }\n            }\n\n            // Did we just add a site?\n            if (this.newSiteIds) {\n              this.newSiteIds.forEach((siteId) => {\n                const siteSettings = this.settings.additionalSites.find(\n                  (s) => s.siteId == siteId\n                );\n                const enabled =\n                  !siteSettings ||\n                  typeof siteSettings.enabledByDefault === 'undefined' ||\n                  siteSettings.enabledByDefault;\n                Craft.cp.showSiteCrumbMenuItem(siteId);\n                Craft.cp.setSiteCrumbMenuItemStatus(\n                  siteId,\n                  enabled ? 'enabled' : 'disabled'\n                );\n              });\n              this.newSiteIds = null;\n            }\n\n            if (this.settings.isProvisionalDraft) {\n              if (createdProvisionalDraft) {\n                // Replace the action\n                this.$container\n                  .find('input.action-input')\n                  .attr('value', 'elements/apply-draft');\n\n                // Update the editor settings\n                this.settings.elementId = response.data.elementId;\n                this.settings.draftId = response.data.draftId;\n                this.settings.isLive = false;\n                this.previewToken = null;\n\n                this.initForProvisionalDraft();\n              }\n            } else {\n              this.settings.draftName = response.data.draftName;\n              if (this.isFullPage) {\n                Craft.cp.updateContext(\n                  response.data.draftName,\n                  response.data.creator\n                    ? Craft.t('app', 'Saved {timestamp} by {creator}', {\n                        timestamp: response.data.timestamp,\n                        creator: response.data.creator,\n                      })\n                    : Craft.t('app', 'Saved {timestamp}', {\n                        timestamp: response.data.timestamp,\n                      })\n                );\n              }\n            }\n\n            // Did the controller send us updated preview targets?\n            if (\n              response.data.previewTargets &&\n              JSON.stringify(response.data.previewTargets) !==\n                JSON.stringify(this.settings.previewTargets)\n            ) {\n              this.updatePreviewTargets(response.data.previewTargets);\n            }\n\n            if (createdProvisionalDraft) {\n              this.updatePreviewLinks();\n              this.trigger('createProvisionalDraft');\n            }\n\n            if (this.$nameTextInput) {\n              this.checkMetaValues();\n            }\n\n            if ($.isPlainObject(response.data.draftElementIds)) {\n              this.draftElementIds = {\n                ...this.draftElementIds,\n                ...response.data.draftElementIds,\n              };\n            }\n\n            // Add missing field modified indicators\n            const selector = response.data.modifiedAttributes\n              .map((attr) => {\n                attr = this.namespaceInputName(attr);\n                return [`[name=\"${attr}\"]`, `[name^=\"${attr}[\"]`];\n              })\n              .flat()\n              .join(',');\n\n            $modifiedFields = $modifiedFields\n              .add(\n                this.$contentContainer\n                  .find(selector)\n                  .parentsUntil(this.$container, '.flex-fields > .field')\n              )\n              .add(this.$sidebar.find(selector).closest('.field'))\n              .not(':has(> .status-badge)');\n\n            for (let i = 0; i < $modifiedFields.length; i++) {\n              $modifiedFields.eq(i).prepend(\n                $('<div/>', {\n                  class: 'status-badge modified',\n                  title: Craft.t('app', 'This field has been modified.'),\n                }).append(\n                  $('<span/>', {\n                    class: 'visually-hidden',\n                    html: Craft.t('app', 'This field has been modified.'),\n                  })\n                )\n              );\n            }\n\n            // updated the updatedTimestamp values\n            this.settings.updatedTimestamp = response.data.updatedTimestamp;\n            this.settings.canonicalUpdatedTimestamp =\n              response.data.canonicalUpdatedTimestamp;\n\n            this.afterUpdate(data);\n\n            if (Craft.broadcaster) {\n              Craft.broadcaster.postMessage({\n                pageId: Craft.pageId,\n                event: 'saveDraft',\n                canonicalId: this.settings.canonicalId,\n                draftId: this.settings.draftId,\n                isProvisionalDraft: this.settings.isProvisionalDraft,\n              });\n            }\n\n            resolve();\n          })\n          .catch((e) => {\n            this._afterSaveDraft();\n\n            if (!this.ignoreFailedRequest) {\n              this.failed = true;\n              if (e && e.response) {\n                this.httpStatus = e.response.status;\n                this.httpError = e.response.data\n                  ? e.response.data.message\n                  : null;\n              }\n              this._showFailStatus();\n              reject(e);\n            }\n\n            this.ignoreFailedRequest = false;\n          });\n      });\n    },\n\n    _afterSaveDraft: function () {\n      if (this.$saveMetaBtn) {\n        this.$saveMetaBtn.removeClass('active');\n      }\n    },\n\n    _showFailStatus: function () {\n      this.statusIcons()\n        .velocity('stop')\n        .css('opacity', '')\n        .removeClass('hidden checkmark-icon')\n        .addClass('alert-icon');\n\n      this.setStatusMessage(this._saveFailMessage());\n    },\n\n    /**\n     * @param {Object} data\n     * @returns {Promise}\n     */\n    updateFieldLayout: function (data) {\n      return new Promise((resolve, reject) => {\n        // Ignore if we're already submitting the main form\n        if (this.submittingForm) {\n          reject('Form already being submitted.');\n          return;\n        }\n\n        this.lastSerializedValue = data;\n        this.cancelToken = axios.CancelToken.source();\n\n        // Prep the data to be saved, keeping track of the first input name for each delta group\n        let modifiedFieldNames = [];\n        let preparedData = this.prepareData(\n          data,\n          !this.settings.isUnpublishedDraft\n            ? (deltaName, params) => {\n                if (params.length) {\n                  modifiedFieldNames.push(\n                    decodeURIComponent(params[0].split('=')[0])\n                  );\n                }\n              }\n            : null\n        );\n\n        const extraData = {\n          [this.namespaceInputName('visibleLayoutElements')]:\n            this.settings.visibleLayoutElements,\n        };\n\n        // Are we editing a provisional draft?\n        if (this.settings.isProvisionalDraft) {\n          extraData[this.namespaceInputName('provisional')] = 1;\n        }\n\n        const selectedTabId = this.$contentContainer\n          .children('[data-layout-tab]:not(.hidden)')\n          .data('id');\n        if (selectedTabId) {\n          extraData[this.namespaceInputName('selectedTab')] = selectedTabId;\n        }\n\n        preparedData += `&${$.param(extraData)}`;\n\n        Craft.sendActionRequest('POST', 'elements/update-field-layout', {\n          cancelToken: this.cancelToken.token,\n          headers: this._saveHeaders,\n          data: preparedData,\n        })\n          .then((response) => {\n            this._afterUpdateFieldLayout(data, selectedTabId, response);\n            resolve();\n          })\n          .catch((e) => {\n            this._afterSaveDraft();\n\n            if (!this.ignoreFailedRequest) {\n              this.failed = true;\n              if (e && e.response) {\n                this.httpStatus = e.response.status;\n                this.httpError = e.response.data\n                  ? e.response.data.message\n                  : null;\n              }\n              this._showFailStatus();\n              reject(e);\n            }\n\n            this.ignoreFailedRequest = false;\n          });\n      });\n    },\n\n    /**\n     * @param {string} data\n     * @param {findDeltaDataCallback|null} [deltaCallback] Callback function that should be passed to `Craft.findDeltaData()`\n     * @param {boolean} [asArray]\n     * @returns {string|Array}\n     */\n    prepareData: function (data, deltaCallback = () => {}, asArray = false) {\n      // Filter out anything that hasn't changed since the last time the form was submitted\n      const params = Craft.findDeltaData(\n        this.$container.data('initialSerializedValue'),\n        data,\n        this.$container.data('delta-names'),\n        deltaCallback,\n        this.$container.data('initial-delta-values'),\n        this.$container.data('modified-delta-names'),\n        true\n      );\n\n      // Add the draft info\n      if (this.settings.draftId) {\n        params.push(\n          `${this.namespaceInputName('draftId')}=${this.settings.draftId}`\n        );\n\n        if (this.settings.isProvisionalDraft) {\n          params.push(`${this.namespaceInputName('provisional')}=1`);\n        }\n      }\n\n      if (this.settings.draftName !== null) {\n        params.push(\n          `${this.namespaceInputName('draftName')}=${this.settings.draftName}`\n        );\n      }\n\n      return asArray ? params : params.join('&');\n    },\n\n    get _saveHeaders() {\n      const headers = {\n        'content-type': 'application/x-www-form-urlencoded',\n      };\n\n      if (this.namespace) {\n        headers['X-Craft-Namespace'] = this.namespace;\n      }\n\n      return headers;\n    },\n\n    getDraftElementId(elementId) {\n      return this.draftElementIds[elementId] || elementId;\n    },\n\n    updatePreviewTargets: function (previewTargets) {\n      previewTargets.forEach((newTarget) => {\n        const currentTarget = this.settings.previewTargets.find(\n          (t) => t.label === newTarget.label\n        );\n        if (currentTarget) {\n          currentTarget.url = newTarget.url;\n        }\n\n        const $previewLink = this.previewLinks.find(\n          ($a) => $a.data('targetLabel') === newTarget.label\n        );\n        if ($previewLink) {\n          $previewLink.data('targetUrl', newTarget.url);\n          this.updatePreviewLinkHref($previewLink);\n        }\n      });\n    },\n\n    async _afterUpdateFieldLayout(data, selectedTabId, response) {\n      // Keep track of whether anything changed while we were waiting.\n      // If not, we can safely update lastSerializedValue after swapping out the fields\n      const noChanges = this.serializeForm(true) === data;\n\n      // capture the new selected tab ID, in case it just changed\n      const newSelectedTabId = this.$contentContainer\n        .children('[data-layout-tab]:not(.hidden)')\n        .data('id');\n\n      // Update the visible elements\n      let $allTabContainers = $();\n      const visibleLayoutElements = {};\n      let changedElements = false;\n\n      for (const tabInfo of response.data.missingElements) {\n        let $tabContainer = this.$contentContainer.children(\n          `[data-layout-tab=\"${tabInfo.uid}\"]`\n        );\n\n        if (!$tabContainer.length) {\n          $tabContainer = $('<div/>', {\n            id: this.namespaceId(tabInfo.id),\n            class: 'flex-fields',\n            'data-id': tabInfo.id,\n            'data-layout-tab': tabInfo.uid,\n          });\n          if (tabInfo.id !== selectedTabId) {\n            $tabContainer.addClass('hidden');\n          }\n          $tabContainer.appendTo(this.$contentContainer);\n        }\n\n        $allTabContainers = $allTabContainers.add($tabContainer);\n\n        for (const elementInfo of tabInfo.elements) {\n          if (elementInfo.html !== false) {\n            if (!visibleLayoutElements[tabInfo.uid]) {\n              visibleLayoutElements[tabInfo.uid] = [];\n            }\n            visibleLayoutElements[tabInfo.uid].push(elementInfo.uid);\n\n            if (typeof elementInfo.html === 'string') {\n              const $oldElement = $tabContainer.children(\n                `[data-layout-element=\"${elementInfo.uid}\"]`\n              );\n              const $newElement = $(elementInfo.html);\n              if ($oldElement.length) {\n                $oldElement.replaceWith($newElement);\n              } else {\n                $newElement.appendTo($tabContainer);\n              }\n              Craft.initUiElements($newElement);\n              changedElements = true;\n            }\n          } else {\n            const $oldElement = $tabContainer.children(\n              `[data-layout-element=\"${elementInfo.uid}\"]`\n            );\n            if (\n              !$oldElement.length ||\n              !Garnish.hasAttr($oldElement, 'data-layout-element-placeholder')\n            ) {\n              const $placeholder = $('<div/>', {\n                class: 'hidden',\n                'data-layout-element': elementInfo.uid,\n                'data-layout-element-placeholder': '',\n              });\n\n              if ($oldElement.length) {\n                $oldElement.replaceWith($placeholder);\n              } else {\n                $placeholder.appendTo($tabContainer);\n              }\n\n              changedElements = true;\n            }\n          }\n        }\n      }\n\n      // Remove any unused tab content containers\n      // (`[data-layout-tab=\"\"]` == unconditional containers, so ignore those)\n      const $unusedTabContainers = this.$contentContainer\n        .children('[data-layout-tab]')\n        .not($allTabContainers)\n        .not('[data-layout-tab=\"\"]');\n      if ($unusedTabContainers.length) {\n        $unusedTabContainers.remove();\n        changedElements = true;\n      }\n\n      // Make the first tab visible if no others are\n      if (!$allTabContainers.filter(':not(.hidden)').length) {\n        $allTabContainers.first().removeClass('hidden');\n      }\n\n      this.settings.visibleLayoutElements = visibleLayoutElements;\n\n      // Update the tabs\n      let tabManager;\n      if (this.isFullPage) {\n        Craft.cp.updateTabs(response.data.tabs);\n        tabManager = Craft.cp.tabManager;\n      } else {\n        this.slideout.updateTabs(response.data.tabs);\n        tabManager = this.slideout.tabManager;\n      }\n\n      // was a new tab selected after the request was kicked off?\n      if (\n        selectedTabId &&\n        newSelectedTabId &&\n        selectedTabId !== newSelectedTabId\n      ) {\n        const $newSelectedTab = tabManager.$tabs.filter(\n          `[data-id=\"${newSelectedTabId}\"]`\n        );\n        if ($newSelectedTab.length) {\n          // if the new tab is visible - switch to it\n          tabManager.selectTab($newSelectedTab);\n        } else {\n          // if the new tab is not visible (e.g. hidden by a condition)\n          // switch to the first tab\n          tabManager.selectTab(tabManager.$tabs.first());\n        }\n      }\n\n      await Craft.appendHeadHtml(response.data.headHtml);\n      await Craft.appendBodyHtml(response.data.bodyHtml);\n\n      // Did any layout elements get added or removed?\n      if (changedElements) {\n        if (response.data.initialDeltaValues) {\n          Object.assign(\n            this.$container.data('initial-delta-values'),\n            response.data.initialDeltaValues\n          );\n        }\n\n        if (noChanges) {\n          // Update our record of the last serialized value to avoid a pointless resave\n          this.lastSerializedValue = this.serializeForm(true);\n        }\n      }\n\n      // re-grab dismissible tips, re-attach listener, hide on re-load\n      this.handleDismissibleTips();\n    },\n\n    afterUpdate: function (data) {\n      this.$container.data('initialSerializedValue', data);\n      this.$container.data('initial-delta-values', {});\n\n      const $statusIcons = this.statusIcons()\n        .velocity('stop')\n        .css('opacity', '')\n        .removeClass('hidden')\n        .addClass('checkmark-icon');\n\n      this.setStatusMessage(this._saveSuccessMessage());\n\n      if (!Craft.autosaveDrafts) {\n        // Fade the icon out after a couple seconds, since it won't be accurate as content continues to change\n        $statusIcons.velocity('stop').velocity(\n          {\n            opacity: 0,\n          },\n          {\n            delay: 2000,\n            complete: () => {\n              $statusIcons.addClass('hidden');\n            },\n          }\n        );\n      }\n\n      this.trigger('update');\n    },\n\n    setStatusMessage: function (message) {\n      this.statusIcons().attr('title', message);\n      this.statusMessage()\n        .empty()\n        .append(\n          $('<span/>', {\n            class: 'visually-hidden',\n            text: message,\n          })\n        );\n    },\n\n    showMetaModal: function () {\n      if (!this.metaModal) {\n        this.createMetaModal();\n      } else {\n        this.metaModal.show();\n      }\n\n      if (!Garnish.isMobileBrowser(true)) {\n        setTimeout(() => {\n          this.$nameTextInput.trigger('focus');\n        }, 100);\n      }\n    },\n\n    createMetaModal: function () {\n      const $modal = $('<form/>', {\n        class: 'modal fitted',\n      });\n      const $hudBody = $('<div/>', {\n        class: 'body',\n      }).appendTo($modal);\n\n      // Add the Name field\n      const $nameField = $(\n        '<div class=\"field\"><div class=\"heading\"><label for=\"draft-name\">' +\n          Craft.t('app', 'Draft Name') +\n          '</label></div></div>'\n      ).appendTo($hudBody);\n      const $nameInputContainer = $('<div class=\"input\"/>').appendTo(\n        $nameField\n      );\n      this.$nameTextInput = $(\n        '<input type=\"text\" class=\"text fullwidth\" id=\"draft-name\"/>'\n      )\n        .appendTo($nameInputContainer)\n        .val(this.settings.draftName);\n\n      // HUD footer\n      const $footer = $('<div class=\"hud-footer flex flex-center\"/>').appendTo(\n        $modal\n      );\n\n      $('<div class=\"flex-grow\"></div>').appendTo($footer);\n      this.$saveMetaBtn = $('<button/>', {\n        type: 'submit',\n        class: 'btn submit disabled',\n        'aria-disabled': 'true',\n        text: Craft.t('app', 'Save'),\n      }).appendTo($footer);\n\n      this.metaModal = new Garnish.Modal($modal);\n\n      this.addListener(this.$nameTextInput, 'input', 'checkMetaValues');\n      this.addListener($modal, 'submit', (ev) => {\n        ev.preventDefault();\n        this.saveMeta();\n      });\n\n      this.metaModal.on('escape', () => {\n        this.$nameTextInput.val(this.settings.draftName);\n      });\n    },\n\n    checkMetaValues: function () {\n      if (\n        this.$nameTextInput.val() &&\n        this.$nameTextInput.val() !== this.settings.draftName\n      ) {\n        this.$saveMetaBtn.removeClass('disabled');\n        this.$saveMetaBtn.removeAttr('aria-disabled');\n        return true;\n      }\n\n      this.$saveMetaBtn.addClass('disabled');\n      this.$saveMetaBtn.attr('aria-disabled', 'true');\n      return false;\n    },\n\n    shakeMetaModal: function () {\n      Garnish.shake(this.metaModal.$container);\n    },\n\n    saveMeta: function () {\n      return new Promise((resolve, reject) => {\n        if (!this.checkMetaValues()) {\n          this.shakeMetaModal();\n          reject();\n          return;\n        }\n\n        this.settings.draftName = this.$nameTextInput.val();\n        this.metaModal.hide();\n        this.checkForm(true).then(resolve).catch(reject);\n      });\n    },\n\n    handleSubmit: function (ev) {\n      ev.preventDefault();\n      ev.stopPropagation();\n\n      // Prevent the beforeunload listener from getting run\n      ev.stopImmediatePropagation();\n\n      // Prevent double form submits\n      if (this.submittingForm) {\n        return;\n      }\n\n      // If this a draft and was this a normal save (either via submit button or save shortcut),\n      // then trigger an autosave\n      if (\n        this.settings.draftId &&\n        !this.settings.isUnpublishedDraft &&\n        !this.settings.isProvisionalDraft &&\n        (typeof ev.autosave === 'undefined' || ev.autosave) &&\n        (ev.saveShortcut ||\n          (ev.customTrigger &&\n            ev.customTrigger.data('action') === 'elements/save-draft')) &&\n        this.enableAutosave\n      ) {\n        this.checkForm(true);\n        return;\n      }\n\n      this.submittingForm = true;\n\n      // Prevent the normal unload confirmation dialog\n      Craft.cp.$confirmUnloadForms = Craft.cp.$confirmUnloadForms.not(\n        this.$container\n      );\n\n      // Abort the current save request if there is one\n      if (this.cancelToken) {\n        this.ignoreFailedRequest = true;\n        this.cancelToken.cancel();\n      }\n\n      this.trigger('beforeSubmit');\n\n      // Duplicate the form with normalized data\n      const data = this.prepareData(this.serializeForm(false));\n\n      if (this.isFullPage) {\n        this.stopListeningForChanges();\n        const $form = Craft.createForm(data);\n        $form.appendTo(Garnish.$bod);\n        $form.submit();\n      } else {\n        this.slideout.showSubmitSpinner();\n        Craft.sendActionRequest('POST', null, {\n          headers: this._saveHeaders,\n          data,\n        })\n          .then((response) => {\n            this.slideout.handleSubmitResponse(response);\n          })\n          .catch((error) => {\n            this.slideout.handleSubmitError(error);\n          })\n          .finally(() => {\n            this.submittingForm = false;\n            this.slideout.hideSubmitSpinner();\n          });\n      }\n    },\n\n    handleDismissibleTips: function () {\n      this.addListener(this.tipDismissBtn, 'click', (e) => {\n        this.hideTip(e);\n      });\n    },\n\n    getHiddenTipsUids: function () {\n      return Craft.getLocalStorage('dismissedTips', []);\n    },\n\n    setHiddenTipsUids: function (uids) {\n      Craft.setLocalStorage('dismissedTips', uids);\n    },\n\n    hideTip: function (ev) {\n      const targetElement = ev.target;\n      if (targetElement) {\n        const $targetParent = $(targetElement).closest('.readable');\n        if ($targetParent.length) {\n          const layoutElementUid = $targetParent.data('layout-element');\n          $targetParent.remove();\n          // add info to local storage\n          if (typeof Storage !== 'undefined') {\n            const hiddenTips = this.getHiddenTipsUids();\n            if (!hiddenTips.includes(layoutElementUid)) {\n              hiddenTips.push(layoutElementUid);\n              this.setHiddenTipsUids(hiddenTips);\n            }\n          }\n        }\n      }\n    },\n\n    _checkActivity: function () {\n      this.queue.push(\n        () =>\n          new Promise((resolve, reject) => {\n            Craft.sendActionRequest('POST', 'elements/recent-activity', {\n              params: {\n                dontExtendSession: 1,\n              },\n              data: {\n                elementType: this.settings.elementType,\n                elementId: this.settings.canonicalId,\n                draftId: this.settings.draftId,\n                siteId: this.settings.siteId,\n                provisional: this.settings.isProvisionalDraft,\n              },\n            })\n              .then(({data}) => {\n                let focusedTooltip = null;\n                if (this.activityTooltips) {\n                  const tooltips = Object.values(this.activityTooltips);\n                  focusedTooltip = tooltips.find(\n                    (t) => t.$trigger[0] === document.activeElement\n                  );\n                }\n\n                this.$activityContainer\n                  .html('')\n                  .attr('role', 'region')\n                  .attr('aria-label', Craft.t('app', 'Recent Activity'));\n\n                if (data.activity.length) {\n                  $('<h2/>', {\n                    class: 'visually-hidden',\n                    text: Craft.t('app', 'Recent Activity'),\n                  }).appendTo(this.$activityContainer);\n                  const $ul = $('<ul/>').appendTo(this.$activityContainer);\n                  for (let i = 0; i < data.activity.length; i++) {\n                    const activity = data.activity[i];\n                    const $li = $('<li/>').appendTo($ul);\n                    const $button = $('<button/>', {\n                      type: 'button',\n                      class: 'activity-btn',\n                      'aria-label': Craft.t('app', '{name} active, more info', {\n                        name: activity.userName,\n                      }),\n                      'aria-expanded': 'false',\n                    }).appendTo($li);\n                    const $thumb = $(activity.userThumb)\n                      .addClass('elementthumb')\n                      .css('z-index', data.activity.length - i)\n                      .appendTo($button);\n                    $thumb.find('img,svg').attr('role', 'presentation');\n                    Craft.cp.elementThumbLoader.load($li);\n                    $thumb.find('title').remove();\n\n                    if (\n                      typeof this.activityTooltips[activity.userId] ===\n                      'undefined'\n                    ) {\n                      this.activityTooltips[activity.userId] =\n                        new Craft.Tooltip($button, activity.message);\n                    } else {\n                      this.activityTooltips[activity.userId].$trigger = $button;\n                      this.activityTooltips[activity.userId].message =\n                        activity.message;\n\n                      // maintain trigger focus\n                      if (\n                        this.activityTooltips[activity.userId] ===\n                        focusedTooltip\n                      ) {\n                        this.activityTooltips[activity.userId].$trigger.focus();\n                      }\n                    }\n                  }\n                }\n\n                // hide any tooltips that are no longer relevant\n                for (let userId of Object.keys(this.activityTooltips)) {\n                  if (\n                    !data.activity.find((activity) => activity.userId == userId)\n                  ) {\n                    this.activityTooltips[userId].hide();\n                  }\n                }\n\n                // if the element has been updated upstream, show a notification about it\n                const elementUpdated =\n                  this.settings.updatedTimestamp &&\n                  this.settings.updatedTimestamp !== data.updatedTimestamp;\n                const canonicalUpdated =\n                  this.settings.canonicalUpdatedTimestamp &&\n                  this.settings.canonicalUpdatedTimestamp !==\n                    data.canonicalUpdatedTimestamp;\n\n                if (elementUpdated || canonicalUpdated) {\n                  const $reloadBtn = Craft.ui.createButton({\n                    label: Craft.t('app', 'Reload'),\n                    spinner: true,\n                  });\n\n                  Craft.cp.displayNotice(\n                    Craft.t('app', 'This {type} has been updated.', {\n                      type:\n                        elementUpdated &&\n                        this.settings.draftId &&\n                        !this.settings.isProvisionalDraft\n                          ? Craft.t('app', 'draft')\n                          : Craft.elementTypeNames[this.settings.elementType]\n                            ? Craft.elementTypeNames[\n                                this.settings.elementType\n                              ][2]\n                            : Craft.t('app', 'element'),\n                    }),\n                    {\n                      details: $reloadBtn,\n                    }\n                  );\n                  $reloadBtn.on('click', () => {\n                    window.location.reload();\n                  });\n                }\n                this.settings.updatedTimestamp = data.updatedTimestamp;\n                this.settings.canonicalUpdatedTimestamp =\n                  data.canonicalUpdatedTimestamp;\n                setTimeout(() => {\n                  this._checkActivity();\n                }, 15000);\n                resolve();\n              })\n              .catch(reject);\n          })\n      );\n    },\n  },\n  {\n    defaults: {\n      additionalSites: [],\n      canCreateDrafts: false,\n      canEditMultipleSites: false,\n      canSave: false,\n      canSaveCanonical: false,\n      elementId: null,\n      canonicalId: null,\n      draftId: null,\n      draftName: null,\n      elementType: null,\n      enablePreview: false,\n      enabled: false,\n      enabledForSite: false,\n      hashedCpEditUrl: null,\n      isLive: false,\n      isProvisionalDraft: false,\n      isUnpublishedDraft: false,\n      previewTargets: [],\n      previewToken: null,\n      revisionId: null,\n      siteId: null,\n      siteStatuses: null,\n      siteToken: null,\n      visibleLayoutElements: {},\n      updatedTimestamp: null,\n      canonicalUpdatedTimestamp: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Element Editor Slideout\n */\nCraft.ElementEditorSlideout = Craft.CpScreenSlideout.extend(\n  {\n    $element: null,\n\n    init: function (element, settings) {\n      this.$element = $(element);\n\n      settings = Object.assign(\n        {},\n        Craft.ElementEditorSlideout.defaults,\n        settings,\n        {\n          showHeader: true,\n        }\n      );\n      this.base('elements/edit', settings);\n\n      this.on('load', () => {\n        const editor = this.$container.data('elementEditor');\n        if (editor) {\n          editor.on('beforeSubmit', () => {\n            Object.keys(this.settings.saveParams).forEach((name) => {\n              $('<input/>', {\n                class: 'hidden',\n                name: editor.namespaceInputName(name),\n                value: this.settings.saveParams[name],\n              }).appendTo(this.$container);\n            });\n          });\n        }\n      });\n\n      this.on('submit', (ev) => {\n        if (Craft.broadcaster) {\n          Craft.broadcaster.postMessage({\n            event: 'saveElement',\n            id: ev.response.data.element.id,\n          });\n        }\n\n        // Pass the response data off to onSaveElement() for backwards compatibility\n        if (this.settings.onSaveElement) {\n          const data = Object.assign(\n            {},\n            ev.response.data,\n            ev.response.data.element\n          );\n          delete data.element;\n          delete data.modelName;\n          delete data.message;\n          this.settings.onSaveElement(data);\n        }\n\n        // Refresh Live Preview\n        Craft.Preview.refresh();\n      });\n    },\n\n    getParams: function () {\n      const params = {};\n\n      if (this.settings.elementType) {\n        params.elementType = this.settings.elementType;\n      }\n\n      if (this.settings.elementId) {\n        params.elementId = this.settings.elementId;\n      } else if (this.$element && this.$element.data('id')) {\n        params.elementId = this.$element.data('id');\n      }\n\n      if (this.settings.draftId) {\n        params.draftId = this.settings.draftId;\n      } else if (this.$element && this.$element.data('draft-id')) {\n        params.draftId = this.$element.data('draft-id');\n      } else if (this.settings.revisionId) {\n        params.revisionId = this.settings.revisionId;\n      } else if (this.$element && this.$element.data('revision-id')) {\n        params.revisionId = this.$element.data('revision-id');\n      }\n\n      if (this.settings.siteId) {\n        params.siteId = this.settings.siteId;\n      } else if (this.$element && this.$element.data('site-id')) {\n        params.siteId = this.$element.data('site-id');\n      }\n\n      if (this.settings.prevalidate) {\n        params.prevalidate = 1;\n      }\n\n      return params;\n    },\n\n    handleSubmit: function (ev) {\n      let elementEditor = this.$container.data('elementEditor');\n\n      if (ev.type === 'submit') {\n        elementEditor.handleSubmit(ev);\n      } else {\n        // first, we have to save the draft and then fully save;\n        // otherwise we'll have tab error indicator issues;\n        elementEditor\n          .saveDraft()\n          .then(() => {\n            elementEditor.handleSubmit(ev);\n          })\n          .catch();\n      }\n    },\n  },\n  {\n    defaults: {\n      elementId: null,\n      draftId: null,\n      revisionId: null,\n      elementType: null,\n      siteId: null,\n      prevalidate: false,\n      saveParams: {},\n      onSaveElement: null,\n      validators: [],\n      expandData: [],\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\nCraft.ElementFieldSettings = Garnish.Base.extend({\n  allowMultipleSources: null,\n  $maintainHierarchyField: null,\n  $maintainHierarchyButton: null,\n  $sourcesField: null,\n  $sourceSelect: null,\n  $branchLimitField: null,\n  $maxRelationsField: null,\n  $minRelationsField: null,\n  $viewModeField: null,\n\n  init: function (\n    allowMultipleSources,\n    maintainHierarchyFieldId,\n    sourcesFieldId,\n    branchLimitFieldId,\n    minRelationsFieldId,\n    maxRelationsFieldId,\n    viewModeFieldId\n  ) {\n    this.allowMultipleSources = allowMultipleSources;\n    this.$maintainHierarchyField = $(`#${maintainHierarchyFieldId}`);\n    this.$maintainHierarchyButton = this.$maintainHierarchyField.find('button');\n    this.$sourcesField = $(`#${sourcesFieldId}`);\n    if (!this.allowMultipleSources) {\n      this.$sourceSelect = this.$sourcesField.find('select');\n    }\n    this.$branchLimitField = $(`#${branchLimitFieldId}`);\n    this.$minRelationsField = $(`#${minRelationsFieldId}`);\n    this.$maxRelationsField = $(`#${maxRelationsFieldId}`);\n    this.$viewModeField = $(`#${viewModeFieldId}`);\n\n    this.updateLimitFields();\n    this.addListener(\n      this.$maintainHierarchyButton,\n      'change',\n      'updateLimitFields'\n    );\n\n    if (this.allowMultipleSources) {\n      this.$sourcesField.find('[type=checkbox]').each(\n        function (index, checkbox) {\n          this.addListener(\n            $(checkbox),\n            'change',\n            'updateMaintainHierarchyField'\n          );\n        }.bind(this)\n      );\n    } else {\n      this.addListener(\n        this.$sourceSelect,\n        'change',\n        'updateMaintainHierarchyField'\n      );\n    }\n    this.updateMaintainHierarchyField();\n  },\n\n  updateLimitFields: function () {\n    if (\n      !this.$maintainHierarchyField.hasClass('hidden') &&\n      this.$maintainHierarchyButton.hasClass('on')\n    ) {\n      this.$minRelationsField.addClass('hidden');\n      this.$maxRelationsField.addClass('hidden');\n      this.$branchLimitField.removeClass('hidden');\n      this.$viewModeField.addClass('hidden');\n    } else {\n      this.$branchLimitField.addClass('hidden');\n      this.$minRelationsField.removeClass('hidden');\n      this.$maxRelationsField.removeClass('hidden');\n      this.$viewModeField.removeClass('hidden');\n    }\n  },\n\n  updateMaintainHierarchyField: function () {\n    let showField;\n    if (this.allowMultipleSources) {\n      const $checkedInputs = this.$sourcesField.find(\n        '[type=\"checkbox\"]:checked'\n      );\n      showField =\n        $checkedInputs.length === 1 && $checkedInputs.data('structure-id');\n    } else {\n      showField = this.$sourceSelect\n        .children('option:selected')\n        .data('structure-id');\n    }\n\n    if (showField) {\n      this.$maintainHierarchyField.removeClass('hidden');\n    } else {\n      this.$maintainHierarchyField.addClass('hidden');\n    }\n\n    this.updateLimitFields();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.ElementTableSorter = Garnish.DragSort.extend(\n  {\n    tableView: null,\n\n    _helperMargin: null,\n\n    _$firstRowCells: null,\n    _$titleHelperCell: null,\n\n    _titleHelperCellOuterWidth: null,\n\n    _ancestors: null,\n    _updateAncestorsFrame: null,\n\n    _draggeeLevel: null,\n    _draggeeLevelDelta: null,\n    draggingLastElements: null,\n    _loadingDraggeeLevelDelta: false,\n\n    _targetLevel: null,\n    _targetLevelBounds: null,\n\n    _positionChanged: null,\n\n    /**\n     * Constructor\n     */\n    init: function (tableView, $elements, settings) {\n      this.tableView = tableView;\n\n      this._helperMargin = this.tableView.elementIndex.actions ? 40 : 0;\n\n      settings = $.extend({}, Craft.ElementTableSorter.defaults, settings, {\n        handle: '.move',\n        collapseDraggees: true,\n        singleHelper: true,\n        helperSpacingY: 2,\n        magnetStrength: 4,\n        helper: this.getHelper.bind(this),\n        helperLagBase: 1.5,\n        axis: Garnish.Y_AXIS,\n      });\n\n      this.base($elements, settings);\n    },\n\n    /**\n     * Returns the draggee rows (including any descendent rows).\n     */\n    findDraggee: function () {\n      this._draggeeLevel = this._targetLevel = this._level(this.$targetItem);\n      this._draggeeLevelDelta = 0;\n\n      var $draggee = $(this.$targetItem),\n        $nextRow = this.$targetItem.next();\n\n      while ($nextRow.length) {\n        // See if this row is a descendant of the draggee\n        const nextRowLevel = this._level($nextRow);\n\n        if (nextRowLevel <= this._draggeeLevel) {\n          break;\n        }\n\n        // Is this the deepest descendant we've seen so far?\n        var nextRowLevelDelta = nextRowLevel - this._draggeeLevel;\n\n        if (nextRowLevelDelta > this._draggeeLevelDelta) {\n          this._draggeeLevelDelta = nextRowLevelDelta;\n        }\n\n        // Add it and prep the next row\n        $draggee = $draggee.add($nextRow);\n        $nextRow = $nextRow.next();\n      }\n\n      // Are we dragging the last elements on the page?\n      this.draggingLastElements = !$nextRow.length;\n\n      // Do we have a maxLevels to enforce,\n      // and does it look like this draggee has descendants we don't know about yet?\n      if (\n        this.settings.maxLevels &&\n        this.draggingLastElements &&\n        this.tableView.getMorePending()\n      ) {\n        // Only way to know the true descendant level delta is to ask PHP\n        this._loadingDraggeeLevelDelta = true;\n\n        var data = this._getAjaxBaseData(this.$targetItem);\n\n        Craft.sendActionRequest('POST', 'structures/get-element-level-delta', {\n          data,\n        }).then((response) => {\n          this._loadingDraggeeLevelDelta = false;\n\n          if (this.dragging) {\n            this._draggeeLevelDelta = response.data.delta;\n            this.drag(false);\n          }\n        });\n      }\n\n      return $draggee;\n    },\n\n    /**\n     * Returns the drag helper.\n     */\n    getHelper: function ($helperRow) {\n      var $outerContainer = $(\n          '<div class=\"elements datatablesorthelper\"/>'\n        ).appendTo(Garnish.$bod),\n        $innerContainer = $('<div class=\"tableview\"/>').appendTo(\n          $outerContainer\n        ),\n        $table = $('<table class=\"data\"/>').appendTo($innerContainer),\n        $tbody = $('<tbody/>').appendTo($table);\n\n      $helperRow.appendTo($tbody);\n\n      // Copy the column widths\n      this._$firstRowCells = this.tableView.$elementContainer\n        .children('tr:first')\n        .children();\n      var $helperCells = $helperRow.children();\n\n      for (var i = 0; i < $helperCells.length; i++) {\n        var $helperCell = $($helperCells[i]);\n\n        // Skip the checkbox cell\n        if ($helperCell.hasClass('checkbox-cell')) {\n          $helperCell.remove();\n          continue;\n        }\n\n        // Hard-set the cell widths\n        var $firstRowCell = $(this._$firstRowCells[i]);\n        var width = $firstRowCell[0].getBoundingClientRect().width;\n\n        $firstRowCell.css('width', width + 'px');\n        $helperCell.css('width', width + 'px');\n\n        // Is this the title cell?\n        if (Garnish.hasAttr($firstRowCell, 'data-titlecell')) {\n          this._$titleHelperCell = $helperCell;\n          this._titleHelperCellOuterWidth = width;\n\n          $helperCell.children('div').css(`padding-${Craft.left}`, '24px');\n        }\n      }\n\n      return $outerContainer;\n    },\n\n    /**\n     * Returns whether the draggee can be inserted before a given item.\n     */\n    canInsertBefore: function ($item) {\n      if (this._loadingDraggeeLevelDelta) {\n        return false;\n      }\n\n      return this._getLevelBounds($item.prev(), $item) !== false;\n    },\n\n    /**\n     * Returns whether the draggee can be inserted after a given item.\n     */\n    canInsertAfter: function ($item) {\n      if (this._loadingDraggeeLevelDelta) {\n        return false;\n      }\n\n      return this._getLevelBounds($item, $item.next()) !== false;\n    },\n\n    // Events\n    // -------------------------------------------------------------------------\n\n    /**\n     * On Drag Start\n     */\n    onDragStart: function () {\n      // Get the initial set of ancestors, before the item gets moved\n      this._ancestors = this._getAncestors(\n        this.$targetItem,\n        this._level(this.$targetItem)\n      );\n\n      // Set the initial target level bounds\n      this._setTargetLevelBounds();\n\n      // Check to see if we should load more elements now\n      this.tableView.maybeLoadMore();\n\n      this.base();\n    },\n\n    /**\n     * On Drag\n     */\n    onDrag: function () {\n      this.base();\n      this._updateIndent();\n    },\n\n    /**\n     * On Insertion Point Change\n     */\n    onInsertionPointChange: function () {\n      this._setTargetLevelBounds();\n      this._updateAncestorsBeforeRepaint();\n      this.base();\n    },\n\n    /**\n     * On Drag Stop\n     */\n    onDragStop: function () {\n      this._positionChanged = false;\n      this.base();\n\n      // Update the draggee's padding if the position just changed\n      // ---------------------------------------------------------------------\n\n      if (this._targetLevel != this._draggeeLevel) {\n        var levelDiff = this._targetLevel - this._draggeeLevel;\n\n        for (var i = 0; i < this.$draggee.length; i++) {\n          var $draggee = $(this.$draggee[i]),\n            oldLevel = this._level($draggee),\n            newLevel = oldLevel + levelDiff,\n            padding = 24 + this._getLevelIndent(newLevel);\n          const $structureTextAlternative = $draggee.find(\n            '[data-text-alternative]'\n          );\n          const altText = Craft.t('app', 'Level {num}', {\n            num: newLevel,\n          });\n\n          $draggee.data('level', newLevel);\n          $draggee.find('.element').data('level', newLevel);\n          $draggee\n            .find('> [data-titlecell]:first > div')\n            .css(`padding-${Craft.left}`, padding);\n\n          // Update text alternative\n          $structureTextAlternative.text(altText);\n        }\n\n        this._positionChanged = true;\n      }\n\n      // Keep in mind this could have also been set by onSortChange()\n      if (this._positionChanged) {\n        if (this.settings.structureId) {\n          // Tell the server about the new position\n          // -----------------------------------------------------------------\n\n          const data = this._getAjaxBaseData(this.$draggee);\n\n          // Find the previous sibling/parent, if there is one\n          let $prevRow = this.$draggee.first().prev();\n          let $spinnerRow;\n\n          while ($prevRow.length) {\n            const prevRowLevel = this._level($prevRow);\n\n            if (prevRowLevel == this._targetLevel) {\n              data.prevId = $prevRow.data('id');\n              break;\n            }\n\n            if (prevRowLevel < this._targetLevel) {\n              data.parentId = $prevRow.data('id');\n\n              // Is this row collapsed?\n              const $toggle = $prevRow.find('> th .toggle');\n\n              if (!$toggle.hasClass('expanded')) {\n                // Make it look expanded\n                $toggle.addClass('expanded');\n\n                // Add a temporary row\n                $spinnerRow = this.tableView._createSpinnerRowAfter($prevRow);\n\n                // Remove the target item\n                if (this.tableView.elementSelect) {\n                  this.tableView.elementSelect.removeItems(this.$targetItem);\n                }\n\n                this.removeItems(this.$targetItem);\n                this.$targetItem.remove();\n                this.tableView._totalVisible--;\n              }\n\n              break;\n            }\n\n            $prevRow = $prevRow.prev();\n          }\n\n          Craft.sendActionRequest('POST', 'structures/move-element', {data})\n            .then((response) => {\n              Craft.cp.displaySuccess(Craft.t('app', 'New position saved.'));\n              this.onPositionChange();\n\n              // Were we waiting on this to complete so we can expand the new parent?\n              if ($spinnerRow && $spinnerRow.parent().length) {\n                $spinnerRow.remove();\n                this.tableView._expandElement($toggle, true);\n              }\n\n              // See if we should run any pending tasks\n              Craft.cp.runQueue();\n            })\n            .catch(({response}) => {\n              Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n              this.tableView.elementIndex.updateElements();\n            });\n        }\n      }\n    },\n\n    onSortChange: function () {\n      if (this.tableView.elementSelect) {\n        this.tableView.elementSelect.resetItemOrder();\n      }\n\n      this._positionChanged = true;\n      this.base();\n    },\n\n    onPositionChange: function () {\n      Garnish.requestAnimationFrame(() => {\n        this.trigger('positionChange');\n        this.settings.onPositionChange();\n      });\n    },\n\n    onReturnHelpersToDraggees: function () {\n      this._$firstRowCells.css('width', '');\n\n      // If we were dragging the last elements on the page and ended up loading any additional elements in,\n      // there could be a gap between the last draggee item and whatever now comes after it.\n      // So remove the post-draggee elements and possibly load up the next batch.\n      if (this.draggingLastElements && this.tableView.getMorePending()) {\n        // Update the element index's record of how many items are actually visible\n        this.tableView._totalVisible +=\n          this.newDraggeeIndexes[0] - this.oldDraggeeIndexes[0];\n\n        var $postDraggeeItems = this.$draggee.last().nextAll();\n\n        if ($postDraggeeItems.length) {\n          this.removeItems($postDraggeeItems);\n          $postDraggeeItems.remove();\n          this.tableView.maybeLoadMore();\n        }\n      }\n\n      this.base();\n    },\n\n    /**\n     * Returns the min and max levels that the draggee could occupy between\n     * two given rows, or false if it’s not going to work out.\n     */\n    _getLevelBounds: function ($prevRow, $nextRow) {\n      // Can't go any lower than the next row, if there is one\n      if ($nextRow && $nextRow.length) {\n        this._getLevelBounds._minLevel = this._level($nextRow);\n      } else {\n        this._getLevelBounds._minLevel = 1;\n      }\n\n      // Can't go any higher than the previous row + 1\n      if ($prevRow && $prevRow.length) {\n        this._getLevelBounds._maxLevel = this._level($prevRow) + 1;\n      } else {\n        this._getLevelBounds._maxLevel = 1;\n      }\n\n      // Does this structure have a max level?\n      if (this.settings.maxLevels) {\n        // Make sure it's going to fit at all here\n        if (\n          this._getLevelBounds._minLevel != 1 &&\n          this._getLevelBounds._minLevel + this._draggeeLevelDelta >\n            this.settings.maxLevels\n        ) {\n          return false;\n        }\n\n        // Limit the max level if we have to\n        if (\n          this._getLevelBounds._maxLevel + this._draggeeLevelDelta >\n          this.settings.maxLevels\n        ) {\n          this._getLevelBounds._maxLevel =\n            this.settings.maxLevels - this._draggeeLevelDelta;\n\n          if (this._getLevelBounds._maxLevel < this._getLevelBounds._minLevel) {\n            this._getLevelBounds._maxLevel = this._getLevelBounds._minLevel;\n          }\n        }\n      }\n\n      return {\n        min: this._getLevelBounds._minLevel,\n        max: this._getLevelBounds._maxLevel,\n      };\n    },\n\n    /**\n     * Determines the min and max possible levels at the current draggee's position.\n     */\n    _setTargetLevelBounds: function () {\n      this._targetLevelBounds = this._getLevelBounds(\n        this.$draggee.first().prev(),\n        this.$draggee.last().next()\n      );\n    },\n\n    /**\n     * Determines the target level based on the current mouse position.\n     */\n    _updateIndent: function (forcePositionChange) {\n      // Figure out the target level\n      // ---------------------------------------------------------------------\n\n      // How far has the cursor moved?\n      this._updateIndent._mouseDist = this.realMouseX - this.mousedownX;\n\n      // Flip that if this is RTL\n      if (Craft.orientation === 'rtl') {\n        this._updateIndent._mouseDist *= -1;\n      }\n\n      // What is that in indentation levels?\n      this._updateIndent._indentationDist = Math.round(\n        this._updateIndent._mouseDist / Craft.ElementTableSorter.LEVEL_INDENT\n      );\n\n      // Combine with the original level to get the new target level\n      this._updateIndent._targetLevel =\n        this._draggeeLevel + this._updateIndent._indentationDist;\n\n      // Contain it within our min/max levels\n      if (this._updateIndent._targetLevel < this._targetLevelBounds.min) {\n        this._updateIndent._indentationDist +=\n          this._targetLevelBounds.min - this._updateIndent._targetLevel;\n        this._updateIndent._targetLevel = this._targetLevelBounds.min;\n      } else if (\n        this._updateIndent._targetLevel > this._targetLevelBounds.max\n      ) {\n        this._updateIndent._indentationDist -=\n          this._updateIndent._targetLevel - this._targetLevelBounds.max;\n        this._updateIndent._targetLevel = this._targetLevelBounds.max;\n      }\n\n      // Has the target level changed?\n      if (\n        this._targetLevel !==\n        (this._targetLevel = this._updateIndent._targetLevel)\n      ) {\n        // Target level is changing, so update the ancestors\n        this._updateAncestorsBeforeRepaint();\n      }\n\n      // Update the UI\n      // ---------------------------------------------------------------------\n\n      // How far away is the cursor from the exact target level distance?\n      this._updateIndent._targetLevelMouseDiff =\n        this._updateIndent._mouseDist -\n        this._updateIndent._indentationDist *\n          Craft.ElementTableSorter.LEVEL_INDENT;\n\n      // What's the magnet impact of that?\n      this._updateIndent._magnetImpact = Math.round(\n        this._updateIndent._targetLevelMouseDiff / 15\n      );\n\n      // Put it on a leash\n      if (\n        Math.abs(this._updateIndent._magnetImpact) >\n        Craft.ElementTableSorter.MAX_GIVE\n      ) {\n        this._updateIndent._magnetImpact =\n          (this._updateIndent._magnetImpact > 0 ? 1 : -1) *\n          Craft.ElementTableSorter.MAX_GIVE;\n      }\n\n      // Apply the new margin/width\n      this._updateIndent._closestLevelMagnetIndent =\n        this._getLevelIndent(this._targetLevel) +\n        this._updateIndent._magnetImpact;\n      this.helpers[0].css(\n        `margin-${Craft.left}`,\n        this._updateIndent._closestLevelMagnetIndent + this._helperMargin\n      );\n      this._$titleHelperCell.css(\n        'width',\n        this._titleHelperCellOuterWidth -\n          this._updateIndent._closestLevelMagnetIndent\n      );\n    },\n\n    /**\n     * Returns the indent size for a given level\n     */\n    _getLevelIndent: function (level) {\n      return (level - 1) * Craft.ElementTableSorter.LEVEL_INDENT;\n    },\n\n    /**\n     * Returns the base data that should be sent with StructureController Ajax requests.\n     */\n    _getAjaxBaseData: function ($row) {\n      return {\n        structureId: this.settings.structureId,\n        elementId: $row.data('id'),\n        siteId: $row.find('.element:first').data('site-id'),\n      };\n    },\n\n    /**\n     * Returns a row's ancestor rows\n     */\n    _getAncestors: function ($row, targetLevel) {\n      this._getAncestors._ancestors = [];\n\n      if (targetLevel != 0) {\n        this._getAncestors._level = targetLevel;\n        this._getAncestors._$prevRow = $row.prev();\n\n        while (this._getAncestors._$prevRow.length) {\n          if (\n            this._level(this._getAncestors._$prevRow) <\n            this._getAncestors._level\n          ) {\n            this._getAncestors._ancestors.unshift(this._getAncestors._$prevRow);\n            this._getAncestors._level = this._level(\n              this._getAncestors._$prevRow\n            );\n\n            // Did we just reach the top?\n            if (this._getAncestors._level == 0) {\n              break;\n            }\n          }\n\n          this._getAncestors._$prevRow = this._getAncestors._$prevRow.prev();\n        }\n      }\n\n      return this._getAncestors._ancestors;\n    },\n\n    _level: function ($row) {\n      return $row.data('level') || 1;\n    },\n\n    /**\n     * Prepares to have the ancestors updated before the screen is repainted.\n     */\n    _updateAncestorsBeforeRepaint: function () {\n      if (this._updateAncestorsFrame) {\n        Garnish.cancelAnimationFrame(this._updateAncestorsFrame);\n      }\n\n      this._updateAncestorsFrame = Garnish.requestAnimationFrame(\n        this._updateAncestors.bind(this)\n      );\n    },\n\n    _updateAncestors: function () {\n      this._updateAncestorsFrame = null;\n\n      // Update the old ancestors\n      // -----------------------------------------------------------------\n\n      for (\n        this._updateAncestors._i = 0;\n        this._updateAncestors._i < this._ancestors.length;\n        this._updateAncestors._i++\n      ) {\n        this._updateAncestors._$ancestor =\n          this._ancestors[this._updateAncestors._i];\n\n        // One less descendant now\n        this._updateAncestors._$ancestor.data(\n          'descendants',\n          this._updateAncestors._$ancestor.data('descendants') - 1\n        );\n\n        // Is it now childless?\n        if (this._updateAncestors._$ancestor.data('descendants') == 0) {\n          // Remove its toggle\n          this._updateAncestors._$ancestor.find('> th .toggle:first').remove();\n        }\n      }\n\n      // Update the new ancestors\n      // -----------------------------------------------------------------\n\n      this._updateAncestors._newAncestors = this._getAncestors(\n        this.$targetItem,\n        this._targetLevel\n      );\n\n      for (\n        this._updateAncestors._i = 0;\n        this._updateAncestors._i < this._updateAncestors._newAncestors.length;\n        this._updateAncestors._i++\n      ) {\n        this._updateAncestors._$ancestor =\n          this._updateAncestors._newAncestors[this._updateAncestors._i];\n\n        // One more descendant now\n        this._updateAncestors._$ancestor.data(\n          'descendants',\n          this._updateAncestors._$ancestor.data('descendants') + 1\n        );\n\n        // Is this its first child?\n        if (this._updateAncestors._$ancestor.data('descendants') == 1) {\n          // Create its toggle\n          const ancestorTitle = this._updateAncestors._$ancestor.data('title');\n          $(\n            '<button class=\"toggle expanded\" type=\"button\" aria-expanded=\"true\" title=\"' +\n              Craft.t('app', 'Show/hide children') +\n              '\" aria-label=\"' +\n              Craft.t('app', 'Show {title} children', {title: ancestorTitle}) +\n              '\"></button>'\n          ).insertAfter(\n            this._updateAncestors._$ancestor.find('> th .move:first')\n          );\n        }\n      }\n\n      this._ancestors = this._updateAncestors._newAncestors;\n\n      delete this._updateAncestors._i;\n      delete this._updateAncestors._$ancestor;\n      delete this._updateAncestors._newAncestors;\n    },\n  },\n  {\n    HELPER_MARGIN: 0,\n    LEVEL_INDENT: 48,\n    MAX_GIVE: 22,\n\n    defaults: {\n      structureId: null,\n      maxLevels: 1,\n      onPositionChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Base Element Index View\n */\nCraft.ElementThumbLoader = Garnish.Base.extend(\n  {\n    queue: null,\n    workers: [],\n\n    init: function () {\n      this.queue = [];\n\n      for (let i = 0; i < 3; i++) {\n        this.workers.push(new Craft.ElementThumbLoader.Worker(this));\n      }\n    },\n\n    load: function ($elements) {\n      // Only immediately load the visible images\n      let $thumbs = $elements.find('.thumb[data-sizes]');\n      for (let i = 0; i < $thumbs.length; i++) {\n        let $thumb = $thumbs.eq(i);\n        if ($thumb.is(':visible')) {\n          this.addToQueue($thumb[0]);\n        } else {\n          let key = 'thumb' + Math.floor(Math.random() * 1000000);\n          Craft.ElementThumbLoader.invisibleThumbs[key] = [this, $thumb];\n          Garnish.$doc.on(\n            `scroll.${key}`,\n            {\n              $thumb: $thumb,\n              key: key,\n            },\n            (ev) => {\n              if ($thumb) {\n                delete Craft.ElementThumbLoader.invisibleThumbs[ev.data.key];\n                this.addToQueue(ev.data.$thumb[0]);\n              }\n            }\n          );\n        }\n      }\n    },\n\n    addToQueue: function (thumb) {\n      this.queue.push(thumb);\n\n      // See if there are any inactive workers\n      for (let i = 0; i < this.workers.length; i++) {\n        if (!this.workers[i].active) {\n          this.workers[i].loadNext();\n        }\n      }\n    },\n\n    destroy: function () {\n      for (let i = 0; i < this.workers.length; i++) {\n        this.workers[i].destroy();\n      }\n\n      this.base();\n    },\n  },\n  {\n    invisibleThumbs: {},\n    retryAll: function () {\n      for (let key in Craft.ElementThumbLoader.invisibleThumbs) {\n        let [queue, $thumb] = Craft.ElementThumbLoader.invisibleThumbs[key];\n        delete Craft.ElementThumbLoader.invisibleThumbs[key];\n        queue.load($thumb.parent());\n      }\n    },\n  }\n);\n\nCraft.ElementThumbLoader.Worker = Garnish.Base.extend({\n  loader: null,\n  active: false,\n  container: null,\n  _interval: null,\n  _timeout: null,\n\n  init: function (loader) {\n    this.loader = loader;\n  },\n\n  activate: function () {\n    if (this.active) {\n      return;\n    }\n    this.active = true;\n    // keep track of whether the current container is actually in the DOM\n    this.clearInterval();\n    this._interval = setInterval(() => {\n      this.loadNextIfRemoved();\n    }, 500);\n  },\n\n  deactivate: function () {\n    if (!this.active) {\n      return;\n    }\n    this.active = false;\n    this.clearInterval();\n    this.clearTimeout();\n  },\n\n  clearInterval: function () {\n    if (this._interval) {\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n  },\n\n  clearTimeout: function () {\n    if (this._timeout) {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    }\n  },\n\n  loadNext: function () {\n    this.clearTimeout();\n\n    this.container = this.loader.queue.shift();\n    if (typeof this.container === 'undefined') {\n      this.deactivate();\n      return;\n    }\n\n    if (this.loadNextIfRemoved()) {\n      return;\n    }\n\n    const $container = $(this.container);\n    if ($container.find('img').length) {\n      this.loadNext();\n      return;\n    }\n\n    this.activate();\n\n    // give up after 30 seconds\n    this._timeout = setTimeout(() => {\n      this.loadNext();\n    }, 30000);\n\n    const $img = $('<img/>', {\n      sizes: $container.attr('data-sizes'),\n      srcset: $container.attr('data-srcset'),\n      alt: $container.attr('data-alt') || '',\n    });\n    this.addListener($img, 'load,abort,error', 'loadNext');\n    $img.appendTo($container);\n    picturefill({\n      elements: [$img[0]],\n    });\n  },\n\n  loadNextIfRemoved() {\n    if (this.container && !document.body.contains(this.container)) {\n      this.loadNext();\n      return true;\n    }\n    return false;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Elevated Session Form\n */\nCraft.ElevatedSessionForm = Garnish.Base.extend({\n  $form: null,\n  inputs: null,\n\n  init: function (form, inputs) {\n    this.$form = $(form);\n\n    // Only check specific inputs?\n    if (typeof inputs !== 'undefined') {\n      this.inputs = [];\n      inputs = $.makeArray(inputs);\n\n      for (var i = 0; i < inputs.length; i++) {\n        var $inputs = $(inputs[i]);\n\n        for (var j = 0; j < $inputs.length; j++) {\n          var $input = $inputs.eq(j);\n\n          this.inputs.push({\n            input: $input,\n            val: Garnish.getInputPostVal($input),\n          });\n        }\n      }\n    }\n\n    this.addListener(this.$form, 'submit', 'handleFormSubmit');\n  },\n\n  handleFormSubmit: function (ev) {\n    // Ignore if we're in the middle of getting the elevated session timeout\n    if (Craft.elevatedSessionManager.fetchingTimeout) {\n      ev.preventDefault();\n      ev.stopImmediatePropagation();\n      return;\n    }\n\n    // Are we only interested in certain inputs?\n    if (this.inputs) {\n      var inputsChanged = false;\n      var $input;\n\n      for (var i = 0; i < this.inputs.length; i++) {\n        $input = this.inputs[i].input;\n        // Is this a password input?\n        if ($input.data('passwordInput')) {\n          $input = $input.data('passwordInput').$currentInput;\n        }\n\n        // Has this input's value changed?\n        if (Garnish.getInputPostVal($input) !== this.inputs[i].val) {\n          inputsChanged = true;\n          break;\n        }\n      }\n\n      if (!inputsChanged) {\n        // No need to interrupt the submit\n        return;\n      }\n    }\n\n    // Prevent the form from submitting until the user has an elevated session\n    ev.preventDefault();\n    ev.stopImmediatePropagation();\n    Craft.elevatedSessionManager.requireElevatedSession(\n      this.submitForm.bind(this)\n    );\n  },\n\n  submitForm: function () {\n    // Don't let handleFormSubmit() interrupt this time\n    this.disable();\n    this.$form.trigger('submit');\n    this.enable();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Entry index class\n */\nCraft.EntryIndex = Craft.BaseElementIndex.extend({\n  publishableSections: null,\n  $newEntryBtnGroup: null,\n  $newEntryBtn: null,\n\n  init: function (elementType, $container, settings) {\n    this.publishableSections = [];\n    this.on('selectSource', this.updateButton.bind(this));\n    this.on('selectSite', this.updateButton.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  afterInit: function () {\n    // Find which of the visible sections the user has permission to create new entries in\n    const includedSections = this.$sources\n      .toArray()\n      .map((source) => $(source).data('handle'))\n      .filter((handle) => !!handle);\n    this.publishableSections = Craft.publishableSections.filter((section) =>\n      includedSections.includes(section.handle)\n    );\n\n    this.base();\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific section in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultSectionHandle !== 'undefined'\n    ) {\n      if (defaultSectionHandle === 'singles') {\n        return 'singles';\n      }\n\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('handle') === defaultSectionHandle) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateButton: function () {\n    if (!this.$source) {\n      return;\n    }\n\n    let sectionHandle, entryTypeHandle;\n\n    // Get the handle of the selected source\n    if (this.$source.data('key') === 'singles') {\n      sectionHandle = 'singles';\n    } else {\n      sectionHandle = this.$source.data('handle');\n      entryTypeHandle = this.$source.data('entry-type');\n    }\n\n    // Update the New Entry button\n    // ---------------------------------------------------------------------\n\n    if (this.publishableSections.length) {\n      // Remove the old button, if there is one\n      if (this.$newEntryBtnGroup) {\n        this.$newEntryBtnGroup.remove();\n      }\n\n      // Determine if they are viewing a section that they have permission to create entries in\n      const selectedSection = this.publishableSections.find(\n        (s) => s.handle === sectionHandle\n      );\n\n      this.$newEntryBtnGroup = $('<div class=\"btngroup submit\" data-wrapper/>');\n      let $menuBtn;\n      const menuId = 'new-entry-menu-' + Craft.randomString(10);\n\n      // If they are, show a primary \"New entry\" button, and a dropdown of the other sections (if any).\n      // Otherwise only show a menu button\n      if (selectedSection) {\n        const visibleLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New {type}', {\n                type: Craft.t('app', 'entry'),\n              })\n            : Craft.t('app', 'New {section} entry', {\n                section: selectedSection.name,\n              });\n\n        const ariaLabel =\n          this.settings.context === 'index'\n            ? Craft.t('app', 'New entry in the {section} section', {\n                section: selectedSection.name,\n              })\n            : visibleLabel;\n\n        // In index contexts, the button functions as a link\n        // In non-index contexts, the button triggers a slideout editor\n        const role = this.settings.context === 'index' ? 'link' : null;\n\n        this.$newEntryBtn = Craft.ui\n          .createButton({\n            label: visibleLabel,\n            ariaLabel: ariaLabel,\n            spinner: true,\n            role: role,\n          })\n          .addClass('submit add icon')\n          .appendTo(this.$newEntryBtnGroup);\n\n        this.addListener(this.$newEntryBtn, 'click mousedown', (ev) => {\n          // If this is the element index, check for Ctrl+clicks and middle button clicks\n          if (\n            this.settings.context === 'index' &&\n            ((ev.type === 'click' && Garnish.isCtrlKeyPressed(ev)) ||\n              (ev.type === 'mousedown' && ev.originalEvent.button === 1))\n          ) {\n            const params = {};\n            if (entryTypeHandle) {\n              params.type = entryTypeHandle;\n            }\n            window.open(\n              Craft.getUrl(`entries/${selectedSection.handle}/new`, params)\n            );\n          } else if (ev.type === 'click') {\n            this._createEntry(selectedSection.id, entryTypeHandle);\n          }\n        });\n\n        if (this.publishableSections.length > 1) {\n          $menuBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn submit menubtn btngroup-btn-last',\n            'aria-controls': menuId,\n            'data-disclosure-trigger': '',\n            'aria-label': Craft.t('app', 'New entry, choose a section'),\n          }).appendTo(this.$newEntryBtnGroup);\n        }\n      } else {\n        this.$newEntryBtn = $menuBtn = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'New {type}', {\n              type: Craft.t('app', 'entry'),\n            }),\n            ariaLabel: Craft.t('app', 'New entry, choose a section'),\n            spinner: true,\n          })\n          .addClass('submit add icon menubtn btngroup-btn-last')\n          .attr('aria-controls', menuId)\n          .attr('data-disclosure-trigger', '')\n          .appendTo(this.$newEntryBtnGroup);\n      }\n\n      this.addButton(this.$newEntryBtnGroup);\n\n      if ($menuBtn) {\n        const $menuContainer = $('<div/>', {\n          id: menuId,\n          class: 'menu menu--disclosure',\n        }).appendTo(this.$newEntryBtnGroup);\n        const $ul = $('<ul/>').appendTo($menuContainer);\n\n        for (const section of this.publishableSections) {\n          const anchorRole =\n            this.settings.context === 'index' ? 'link' : 'button';\n          if (\n            (this.settings.context === 'index' &&\n              $.inArray(this.siteId, section.sites) !== -1) ||\n            (this.settings.context !== 'index' && section !== selectedSection)\n          ) {\n            const $li = $('<li/>').appendTo($ul);\n            const $a = $('<a/>', {\n              role: anchorRole === 'button' ? 'button' : null,\n              href: Craft.getUrl(`entries/${section.handle}/new`),\n              type: anchorRole === 'button' ? 'button' : null,\n              text: Craft.t('app', 'New {section} entry', {\n                section: section.name,\n              }),\n            }).appendTo($li);\n            this.addListener($a, 'activate', () => {\n              $menuBtn.data('trigger').hide();\n              this._createEntry(section.id);\n            });\n\n            if (anchorRole === 'button') {\n              this.addListener($a, 'keydown', (event) => {\n                if (event.keyCode === Garnish.SPACE_KEY) {\n                  event.preventDefault();\n                  $menuBtn.data('trigger').hide();\n                  this._createEntry(section.id);\n                }\n              });\n            }\n          }\n        }\n\n        new Garnish.DisclosureMenu($menuBtn);\n      }\n    }\n\n    // Update the URL if we're on the Entries index\n    // ---------------------------------------------------------------------\n\n    if (this.settings.context === 'index') {\n      let uri = 'entries';\n\n      if (sectionHandle) {\n        uri += '/' + sectionHandle;\n      }\n\n      Craft.setPath(uri);\n    }\n  },\n\n  _createEntry: function (sectionId, entryTypeHandle) {\n    if (this.$newEntryBtn.hasClass('loading')) {\n      console.warn('New entry creation already in progress.');\n      return;\n    }\n\n    // Find the section\n    const section = this.publishableSections.find((s) => s.id === sectionId);\n\n    if (!section) {\n      throw `Invalid section ID: ${sectionId}`;\n    }\n\n    this.$newEntryBtn.addClass('loading');\n\n    Craft.sendActionRequest('POST', 'entries/create', {\n      data: {\n        siteId: this.siteId,\n        section: section.handle,\n        type: entryTypeHandle,\n      },\n    })\n      .then(({data}) => {\n        if (this.settings.context === 'index') {\n          document.location.href = Craft.getUrl(data.cpEditUrl, {fresh: 1});\n        } else {\n          const slideout = Craft.createElementEditor(this.elementType, {\n            siteId: this.siteId,\n            elementId: data.entry.id,\n            draftId: data.entry.draftId,\n            params: {\n              fresh: 1,\n            },\n          });\n          slideout.on('submit', () => {\n            this.clearSearch();\n            this.setSelectedSortAttribute('dateCreated', 'desc');\n            this.selectElementAfterUpdate(data.entry.id);\n            this.updateElements();\n          });\n        }\n      })\n      .finally(() => {\n        this.$newEntryBtn.removeClass('loading');\n      });\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\Entry', Craft.EntryIndex);\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\nCraft.FieldLayoutDesigner = Garnish.Base.extend(\n  {\n    $container: null,\n    $innerContainer: null,\n    $configInput: null,\n    $tabContainer: null,\n    $newTabBtn: null,\n    $libraryContainer: null,\n    $selectedLibrary: null,\n    $fieldLibrary: null,\n    $uiLibrary: null,\n    $uiLibraryElements: null,\n    $fieldSearch: null,\n    $clearFieldSearchBtn: null,\n    $fieldGroups: null,\n    $fields: null,\n    $createFieldBtn: null,\n\n    tabGrid: null,\n    elementDrag: null,\n\n    _config: null,\n    _$selectedFields: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n      this.setSettings(settings, Craft.FieldLayoutDesigner.defaults);\n\n      this.$configInput = this.$container.children('input[data-config-input]');\n      this._config = JSON.parse(this.$configInput.val());\n      if (!this._config.tabs) {\n        this._config.tabs = [];\n      }\n\n      this._fieldHandles = {};\n\n      this.$innerContainer = this.$container.children('.fld-container');\n      const $workspace = this.$innerContainer.children('.fld-workspace');\n      this.$tabContainer = $workspace.children('.fld-tabs');\n      this.$newTabBtn = $workspace.children('.fld-new-tab-btn');\n      this.$libraryContainer = this.$innerContainer.children('.fld-library');\n\n      this.$fieldLibrary = this.$selectedLibrary =\n        this.$libraryContainer.children('.fld-field-library');\n      let $fieldSearchContainer = this.$fieldLibrary.children('.search');\n      this.$fieldSearch = $fieldSearchContainer.children('input');\n      this.$clearFieldSearchBtn = $fieldSearchContainer.children('.clear');\n      this.$fieldGroups = this.$libraryContainer.find('.fld-field-group');\n      this.$fields = this.$fieldGroups.children('.fld-element');\n      this.$uiLibrary = this.$libraryContainer.children('.fld-ui-library');\n      this.$uiLibraryElements = this.$uiLibrary.children();\n\n      // Set up the layout grids\n      this.tabGrid = new Craft.Grid(this.$tabContainer, {\n        itemSelector: '.fld-tab',\n        minColWidth: 24 * 11,\n        fillMode: 'grid',\n        snapToGrid: 24,\n      });\n\n      let $tabs = this.$tabContainer.children();\n      for (let i = 0; i < $tabs.length; i++) {\n        this.initTab($($tabs[i]));\n      }\n\n      this.elementDrag = new Craft.FieldLayoutDesigner.ElementDrag(this);\n      this.initLibraryElements(this.$libraryContainer.find('.fld-element'));\n\n      if (this.settings.customizableTabs) {\n        this.tabDrag = new Craft.FieldLayoutDesigner.TabDrag(this);\n\n        this.addListener(this.$newTabBtn, 'activate', 'addTab');\n      }\n\n      // Set up the library\n      if (this.settings.customizableUi) {\n        const $libraryPicker = this.$libraryContainer.children('.btngroup');\n        new Craft.Listbox($libraryPicker, {\n          onChange: ($selectedOption) => {\n            const library = $selectedOption.data('library');\n            switch (library) {\n              case 'field':\n                this.$fieldLibrary.removeClass('hidden');\n                this.$uiLibrary.addClass('hidden');\n                this.$createFieldBtn.removeClass('hidden');\n                break;\n              case 'ui':\n                this.$fieldLibrary.addClass('hidden');\n                this.$uiLibrary.removeClass('hidden');\n                this.$createFieldBtn.addClass('hidden');\n                break;\n            }\n          },\n        });\n      }\n\n      this.addListener(this.$fieldSearch, 'input', () => {\n        this.updateFieldSearchResults();\n      });\n\n      this.addListener(this.$fieldSearch, 'keydown', (ev) => {\n        switch (ev.keyCode) {\n          case Garnish.ESC_KEY:\n            this.$fieldSearch.val('').trigger('input');\n            break;\n          case Garnish.RETURN_KEY:\n            // they most likely don't want to submit the form from here\n            ev.preventDefault();\n            break;\n        }\n      });\n\n      // Clear the search when the X button is clicked\n      this.addListener(this.$clearFieldSearchBtn, 'click', () => {\n        this.$fieldSearch.val('').trigger('input');\n      });\n\n      this.refreshSelectedFields();\n\n      // Add the “New Field” button\n      this.$createFieldBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'New field'),\n          class: 'mt-m fullwidth add icon dashed',\n        })\n        .appendTo(this.$libraryContainer);\n\n      this.addListener(this.$createFieldBtn, 'activate', async () => {\n        this.createField();\n      });\n    },\n\n    updateFieldSearchResults() {\n      const val = this.$fieldSearch.val().toLowerCase().replace(/['\"]/g, '');\n      if (!val) {\n        this.$fieldLibrary.find('.filtered').removeClass('filtered');\n        this.$clearFieldSearchBtn.addClass('hidden');\n        return;\n      }\n\n      this.$clearFieldSearchBtn.removeClass('hidden');\n      const $matches = this.$fields\n        .filter(`[data-keywords*=\"${val}\"]`)\n        .add(\n          this.$fieldGroups\n            .filter(`[data-name*=\"${val}\"]`)\n            .children('.fld-element')\n        )\n        .removeClass('filtered');\n      this.$fields.not($matches).addClass('filtered');\n\n      // hide any groups that don't have any results\n      for (let i = 0; i < this.$fieldGroups.length; i++) {\n        const $group = this.$fieldGroups.eq(i);\n        if ($group.find('.fld-element:not(.hidden):not(.filtered)').length) {\n          $group.removeClass('filtered');\n        } else {\n          $group.addClass('filtered');\n        }\n      }\n    },\n\n    initTab: function ($tab) {\n      return new Craft.FieldLayoutDesigner.Tab(this, $tab);\n    },\n\n    removeFieldByHandle: function (attribute) {\n      this.$fields\n        .filter(`[data-attribute=\"${attribute}\"]:first`)\n        .removeClass('hidden')\n        .closest('.fld-field-group')\n        .removeClass('hidden');\n    },\n\n    addTab: function () {\n      if (!this.settings.customizableTabs) {\n        return;\n      }\n\n      let defaultValue = '';\n      if (this.tabGrid.$items.length === 0) {\n        defaultValue = Craft.t('app', 'Content');\n      }\n      const name = Craft.escapeHtml(\n        prompt(Craft.t('app', 'Give your tab a name.'), defaultValue)\n      );\n\n      if (!name) {\n        return;\n      }\n\n      const menuId = `menu-${Math.floor(Math.random() * 1000000)}`;\n      const $tab = $(`\n<div class=\"fld-tab\">\n  <div class=\"tabs\">\n    <div class=\"tab sel draggable\">\n      <span>${name}</span>\n    </div>\n  </div>\n  <div class=\"fld-tabcontent\">\n    <button class=\"btn add icon dashed fullwidth fld-add-btn\" type=\"button\" aria-controls=\"${menuId}\">\n      ${Craft.t('app', 'Add')}\n    </button>\n    <div id=\"${menuId}\" class=\"menu menu--disclosure fld-library-menu\"></div>\n  </div>\n</div>\n`);\n      // keep it before the resize object\n      const $lastTab = this.$tabContainer.children('.fld-tab:last');\n      if ($lastTab.length) {\n        $tab.insertAfter($lastTab);\n      } else {\n        $tab.prependTo(this.$tabContainer);\n      }\n\n      this.tabGrid.addItems($tab);\n      this.tabDrag.addItems($tab);\n\n      const tab = this.initTab($tab);\n      tab.updatePositionInConfig();\n    },\n\n    get config() {\n      return this._config;\n    },\n\n    set config(config) {\n      this._config = config;\n      this.$configInput.val(JSON.stringify(config));\n    },\n\n    updateConfig: function (callback) {\n      const config = callback(this.config);\n      if (config !== false) {\n        this.config = config;\n      }\n    },\n\n    refreshSelectedFields: function () {\n      this._$selectedFields = this.$tabContainer.find('.fld-field');\n    },\n\n    refreshLibraryFields() {\n      this.$fields = this.$fieldGroups.children('.fld-element');\n\n      for (let i = 0; i < this.$fieldGroups.length; i++) {\n        const $fieldGroup = this.$fieldGroups.eq(i);\n        const $fields = $fieldGroup.children('.fld-element');\n        $fields\n          .sort((a, b) => {\n            return $(a).data('ui-label') > $(b).data('ui-label') ? 1 : -1;\n          })\n          .appendTo($fieldGroup);\n      }\n\n      this.updateFieldSearchResults();\n    },\n\n    hasHandle: function (handle) {\n      for (let i = 0; i < this._$selectedFields.length; i++) {\n        const element = this._$selectedFields.eq(i).data('fld-element');\n        const elementHandle = element.config.handle || element.attribute;\n        if (handle === elementHandle) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    createField() {\n      const slideout = new Craft.CpScreenSlideout('fields/edit-field');\n\n      slideout.on('submit', async ({response}) => {\n        // add the library selector\n        const $selector = $(response.data.selectorHtml);\n        this.$fieldGroups.last().append($selector).removeClass('hidden');\n        this.refreshLibraryFields();\n        this.initLibraryElements($selector);\n\n        // refresh all instances of this field\n        const $fields = designer.$tabContainer.find(\n          `.fld-field[data-id=${this.fieldId}]`\n        );\n        for (let i = 0; i < $fields.length; i++) {\n          $fields.eq(i).data('fld-element')?.refresh();\n        }\n      });\n    },\n\n    initLibraryElements($elements) {\n      this.elementDrag.addItems($elements);\n\n      this.addListener($elements, 'activate', (ev) => {\n        // if the library is in a disclosure menu, go ahead and add it to the tab\n        const $parent = this.$libraryContainer.parent();\n        if ($parent.is('.fld-library-menu')) {\n          const disclosureMenu = $parent.data('disclosureMenu');\n          const $libraryElement = $(ev.currentTarget);\n          const $element =\n            this.cloneLibraryElementForSelection($libraryElement);\n          const tab = disclosureMenu.$trigger\n            .closest('.fld-tab')\n            .data('fld-tab');\n          $element.insertBefore(disclosureMenu.$trigger);\n          const element = tab.initElement($element);\n          element.updatePositionInConfig();\n          this.tabGrid.refreshCols(true);\n          disclosureMenu.hide();\n        }\n      });\n    },\n\n    cloneLibraryElementForSelection($libraryElement) {\n      // Create a new element based on that one\n      const $element = $libraryElement.clone().removeClass('unused');\n\n      if (!Garnish.hasAttr($libraryElement, 'data-is-multi-instance')) {\n        // Hide the library element\n        $libraryElement\n          .css({visibility: 'inherit', display: 'field'})\n          .addClass('hidden');\n\n        // Hide the group too?\n        if ($libraryElement.siblings('.fld-field:not(.hidden)').length === 0) {\n          $libraryElement.closest('.fld-field-group').addClass('hidden');\n        }\n      }\n\n      // Add it to the element dragger\n      this.elementDrag.addItems($element);\n\n      return $element;\n    },\n  },\n  {\n    defaults: {\n      elementType: null,\n      customizableTabs: true,\n      customizableUi: true,\n    },\n\n    async createSlideout(data, js) {\n      const $body = $('<div/>', {class: 'fld-element-settings-body'});\n      $('<div/>', {class: 'fields', html: data.settingsHtml}).appendTo($body);\n      const $footer = $('<div/>', {class: 'fld-element-settings-footer'});\n      $('<div/>', {class: 'flex-grow'}).appendTo($footer);\n      const $cancelBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Close'),\n          spinner: true,\n        })\n        .appendTo($footer);\n      Craft.ui\n        .createSubmitButton({\n          class: 'secondary',\n          label: Craft.t('app', 'Apply'),\n          spinner: true,\n        })\n        .appendTo($footer);\n      const $contents = $body.add($footer);\n\n      const slideout = new Craft.Slideout($contents, {\n        containerElement: 'form',\n        containerAttributes: {\n          action: '',\n          method: 'post',\n          novalidate: '',\n          class: 'fld-element-settings',\n        },\n      });\n      slideout.on('open', () => {\n        // Hold off a sec until it's positioned...\n        Garnish.requestAnimationFrame(() => {\n          // Focus on the first text input\n          slideout.$container.find('.text:first').trigger('focus');\n        });\n      });\n\n      $cancelBtn.on('click', () => {\n        slideout.close();\n      });\n\n      if (data.headHtml) {\n        await Craft.appendHeadHtml(data.headHtml);\n      }\n      if (data.bodyHtml) {\n        await Craft.appendBodyHtml(data.bodyHtml);\n      }\n      if (js) {\n        eval(js);\n      }\n\n      Craft.initUiElements(slideout.$container);\n\n      return slideout;\n    },\n  }\n);\n\nCraft.FieldLayoutDesigner.Tab = Garnish.Base.extend({\n  designer: null,\n  uid: null,\n  $container: null,\n  $addBtn: null,\n  slideout: null,\n  destroyed: false,\n\n  init: function (designer, $container) {\n    this.designer = designer;\n    this.$container = $container;\n    this.$container.data('fld-tab', this);\n    this.uid = this.$container.data('uid');\n\n    // New tab?\n    if (!this.uid) {\n      this.uid = Craft.uuid();\n      this.config = {\n        uid: this.uid,\n        name: this.$container.find('.tabs .tab span').text(),\n        elements: [],\n      };\n    }\n\n    if (this.designer.settings.customizableTabs) {\n      this.createMenu();\n    }\n\n    // initialize the elements\n    const $tabContent = this.$container.children('.fld-tabcontent');\n    this.$addBtn = $tabContent.children('.fld-add-btn');\n\n    const disclosureMenu = this.$addBtn\n      .disclosureMenu({\n        position: 'below',\n      })\n      .data('disclosureMenu');\n    disclosureMenu.on('beforeShow', () => {\n      this.designer.$libraryContainer.appendTo(disclosureMenu.$container);\n    });\n    disclosureMenu.on('hide', () => {\n      this.designer.$libraryContainer.appendTo(this.designer.$innerContainer);\n    });\n\n    const $elements = $tabContent.children().not(this.$addBtn);\n\n    for (let i = 0; i < $elements.length; i++) {\n      this.initElement($($elements[i]));\n    }\n  },\n\n  createMenu: function () {\n    const $tab = this.$container.find('.tabs .tab');\n    const menuId = `actionmenu${Math.floor(Math.random() * 1000000)}`;\n    const $btn = $('<button/>', {\n      type: 'button',\n      class: 'btn action-btn',\n      'data-disclosure-trigger': 'true',\n      'aria-controls': menuId,\n      'aria-haspopup': 'true',\n      'aria-label': Craft.t('app', 'Actions'),\n      title: Craft.t('app', 'Actions'),\n    }).appendTo($tab);\n    const $menu = $('<div/>', {\n      id: menuId,\n      class: 'menu menu--disclosure',\n      'data-disclosure-menu': 'true',\n    }).appendTo($tab);\n\n    const disclosureMenu = $btn.disclosureMenu().data('disclosureMenu');\n\n    disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Settings'),\n        icon: 'gear',\n        onActivate: () => {\n          this.createSettings();\n        },\n      },\n      disclosureMenu.addGroup()\n    );\n\n    const moveUl = disclosureMenu.addGroup();\n    const moveLeftBtn = disclosureMenu.addItem(\n      {\n        label:\n          Craft.orientation === 'ltr'\n            ? Craft.t('app', 'Move to the left')\n            : Craft.t('app', 'Move to the right'),\n        icon: Craft.orientation === 'ltr' ? 'arrow-left' : 'arrow-right',\n        onActivate: () => {\n          this.moveLeft();\n        },\n      },\n      moveUl\n    );\n\n    const moveRightBtn = disclosureMenu.addItem(\n      {\n        label:\n          Craft.orientation === 'ltr'\n            ? Craft.t('app', 'Move to the right')\n            : Craft.t('app', 'Move to the left'),\n        icon: Craft.orientation === 'ltr' ? 'arrow-right' : 'arrow-left',\n        onActivate: () => {\n          this.moveRight();\n        },\n      },\n      moveUl\n    );\n\n    disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Remove'),\n        icon: 'xmark',\n        destructive: true,\n        onActivate: () => {\n          this.destroy();\n        },\n      },\n      disclosureMenu.addGroup()\n    );\n\n    disclosureMenu.on('show', () => {\n      disclosureMenu.toggleItem(\n        moveLeftBtn,\n        this.$container.prev('.fld-tab').length\n      );\n      disclosureMenu.toggleItem(\n        moveRightBtn,\n        this.$container.next('.fld-tab').length\n      );\n    });\n  },\n\n  async createSettings() {\n    let data;\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/render-layout-component-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.designer.config,\n            elementType: this.designer.settings.elementType,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.settingsNamespace = data.namespace;\n    this.slideout = await Craft.FieldLayoutDesigner.createSlideout(data);\n\n    this.slideout.$container.on('submit', (ev) => {\n      ev.preventDefault();\n      this.applySettings();\n    });\n    this.slideout.on('close', () => {\n      this.slideout.destroy();\n      this.slideout = null;\n    });\n  },\n\n  applySettings: function () {\n    if (!this.slideout.$container.find('[name$=\"[name]\"]').val()) {\n      Craft.cp.displayError(Craft.t('app', 'You must specify a tab name.'));\n      return;\n    }\n\n    // update the UI\n    let $submitBtn = this.slideout.$container\n      .find('button[type=submit]')\n      .addClass('loading');\n\n    const config = $.extend({}, this.config);\n    delete config.elements;\n\n    Craft.sendActionRequest('POST', 'fields/apply-layout-tab-settings', {\n      data: {\n        uid: this.uid,\n        layoutConfig: this.designer.config,\n        elementType: this.designer.settings.elementType,\n        config,\n        settingsNamespace: this.settingsNamespace,\n        settings: this.slideout.$container.serialize(),\n      },\n    })\n      .then((response) => {\n        this.updateConfig((config) =>\n          $.extend(response.data.config, {elements: config.elements})\n        );\n        const $label = this.$container.find('.tabs .tab');\n        const $actionBtn = $label.children('button').detach();\n        $label.html(response.data.labelHtml).append($actionBtn);\n        this.slideout.close();\n      })\n      .catch((e) => {\n        Craft.cp.displayError();\n        console.error(e);\n      })\n      .finally(() => {\n        $submitBtn.removeClass('loading');\n        this.slideout.close();\n      });\n  },\n\n  moveLeft() {\n    let $prev = this.$container.prev('.fld-tab');\n    if ($prev.length) {\n      this.$container.insertBefore($prev);\n      this.updatePositionInConfig();\n    }\n  },\n\n  moveRight() {\n    let $next = this.$container.next('.fld-tab');\n    if ($next.length) {\n      this.$container.insertAfter($next);\n      this.updatePositionInConfig();\n    }\n  },\n\n  initElement: function ($element) {\n    return new Craft.FieldLayoutDesigner.Element(this, $element);\n  },\n\n  get index() {\n    return this.designer.config.tabs.findIndex((c) => c.uid === this.uid);\n  },\n\n  get config() {\n    if (!this.uid) {\n      throw 'Tab is missing its UID';\n    }\n    let config = this.designer.config.tabs.find((c) => c.uid === this.uid);\n    if (!config) {\n      config = {\n        uid: this.uid,\n        elements: [],\n      };\n      this.config = config;\n    }\n    return config;\n  },\n\n  set config(config) {\n    if (this.destroyed) {\n      return;\n    }\n\n    // Is the name changing?\n    if (config.name && config.name !== this.config.name) {\n      this.$container.find('.tabs .tab span').text(config.name);\n    }\n\n    const designerConfig = this.designer.config;\n    const index = this.index;\n    if (index !== -1) {\n      designerConfig.tabs[index] = config;\n    } else {\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-tab')\n      );\n      designerConfig.tabs.splice(newIndex, 0, config);\n    }\n    this.designer.config = designerConfig;\n  },\n\n  updateConfig: function (callback) {\n    if (this.destroyed) {\n      return;\n    }\n\n    const config = callback(this.config);\n    if (config !== false) {\n      this.config = config;\n    }\n  },\n\n  updatePositionInConfig: function () {\n    if (this.destroyed) {\n      return;\n    }\n\n    this.designer.updateConfig((config) => {\n      const tabConfig = this.config;\n      const oldIndex = this.index;\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-tab')\n      );\n      if (oldIndex !== -1) {\n        config.tabs.splice(oldIndex, 1);\n      }\n      config.tabs.splice(newIndex, 0, tabConfig);\n      return config;\n    });\n  },\n\n  destroy: function () {\n    if (this.destroyed) {\n      return;\n    }\n\n    this.destroyed = true;\n\n    this.designer.updateConfig((config) => {\n      const index = this.index;\n      if (index === -1) {\n        return false;\n      }\n      config.tabs.splice(index, 1);\n      return config;\n    });\n\n    // First destroy the tab's elements\n    let $elements = this.$container.find('.fld-element');\n    for (let i = 0; i < $elements.length; i++) {\n      $elements.eq(i).data('fld-element').destroy();\n    }\n\n    this.designer.tabGrid.removeItems(this.$container);\n    this.designer.tabDrag.removeItems(this.$container);\n    this.$container.remove();\n    this.designer.refreshSelectedFields();\n\n    this.base();\n  },\n});\n\nCraft.FieldLayoutDesigner.Element = Garnish.Base.extend({\n  tab: null,\n  $container: null,\n\n  uid: null,\n  isMandatory: false,\n  isMultiInstance: null,\n  isField: false,\n  attribute: null,\n  requirable: false,\n  thumbable: false,\n  previewable: false,\n  hasCustomWidth: false,\n  hasSettings: false,\n  settingsNamespace: null,\n  slideout: null,\n  defaultHandle: null,\n  fieldId: null,\n  fieldsWithErrors: null,\n\n  init: function (tab, $container) {\n    this.tab = tab;\n    this.$container = $container;\n    this.uid = $container.data('uid');\n    this.fieldId = $container.data('id');\n\n    this.fieldsWithErrors = [];\n\n    // New element?\n    const isNew = !this.uid;\n    if (isNew) {\n      this.uid = Craft.uuid();\n      this.config = $.extend($container.data('config'), {uid: this.uid});\n    }\n\n    this.initUi();\n\n    if (isNew && this.isField) {\n      // Find a unique handle\n      let handle = this.defaultHandle;\n      let i = 1;\n      while (this.tab.designer.hasHandle(handle)) {\n        i++;\n        handle = this.defaultHandle + i;\n      }\n      if (handle !== this.defaultHandle) {\n        this.config = $.extend({}, this.config, {handle: handle});\n        $container.find('.fld-attribute-label').text(handle);\n      }\n      this.tab.designer.refreshSelectedFields();\n    }\n\n    // cleanup\n    $container.attr('data-keywords', null);\n  },\n\n  initUi: function () {\n    this.$container.data('fld-element', this);\n\n    this.isMandatory = Garnish.hasAttr(this.$container, 'data-mandatory');\n    this.isField = this.$container.hasClass('fld-field');\n    this.isMultiInstance = Garnish.hasAttr(\n      this.$container,\n      'data-is-multi-instance'\n    );\n\n    if (this.isField) {\n      this.requirable = Garnish.hasAttr(this.$container, 'data-requirable');\n      this.thumbable = Garnish.hasAttr(this.$container, 'data-thumbable');\n      this.previewable = Garnish.hasAttr(this.$container, 'data-previewable');\n      this.attribute = this.$container.data('attribute');\n      this.defaultHandle = this.$container.data('default-handle');\n    }\n\n    this.hasCustomWidth =\n      this.tab.designer.settings.customizableUi &&\n      Garnish.hasAttr(this.$container, 'data-has-custom-width');\n\n    if (this.hasCustomWidth) {\n      let widthSlider = new Craft.SlidePicker(this.config.width || 100, {\n        min: 25,\n        max: 100,\n        step: 25,\n        valueLabel: (width) => {\n          return Craft.t('app', '{pct} width', {pct: `${width}%`});\n        },\n        onChange: (width) => {\n          this.updateConfig((config) => {\n            config.width = width;\n            return config;\n          });\n        },\n      });\n      widthSlider.$container.appendTo(this.$container);\n    }\n\n    // create the action menu\n    const menuId = `actionmenu${Math.floor(Math.random() * 1000000)}`;\n    const $actionBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn action-btn',\n      'data-disclosure-trigger': 'true',\n      'aria-controls': menuId,\n      'aria-haspopup': 'true',\n      'aria-label': Craft.t('app', 'Actions'),\n      title: Craft.t('app', 'Actions'),\n    }).appendTo(this.$container);\n    $('<div/>', {\n      id: menuId,\n      class: 'menu menu--disclosure',\n      'data-disclosure-menu': 'true',\n    }).appendTo(this.$container);\n    const disclosureMenu = $actionBtn.disclosureMenu().data('disclosureMenu');\n\n    let makeRequiredBtn,\n      dropRequiredBtn,\n      makeThumbnailBtn,\n      dropThumbnailBtn,\n      showInCardsBtn,\n      omitFromCardsBtn;\n\n    this.hasSettings = Garnish.hasAttr(this.$container, 'data-has-settings');\n\n    if (this.hasSettings) {\n      disclosureMenu.addItem({\n        label: Craft.t('app', 'Settings'),\n        icon: 'gear',\n        onActivate: () => {\n          this.createSettings();\n        },\n      });\n\n      this.addListener(this.$container, 'dblclick', () => {\n        this.createSettings();\n      });\n    }\n\n    if (this.fieldId) {\n      disclosureMenu.addItem({\n        label: Craft.t('app', 'Edit field'),\n        icon: 'pencil',\n        onActivate: () => {\n          this.showFieldEditor();\n        },\n      });\n    }\n\n    if (this.requirable || this.thumbable || this.previewable) {\n      const actionUl = disclosureMenu.addGroup();\n\n      if (this.requirable) {\n        makeRequiredBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Make required'),\n            icon: 'asterisk',\n            iconColor: 'rose',\n            onActivate: () => {\n              this.makeRequired();\n            },\n          },\n          actionUl\n        );\n\n        dropRequiredBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Make optional'),\n            icon: 'asterisk-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.dropRequired();\n            },\n          },\n          actionUl\n        );\n      }\n\n      if (this.thumbable) {\n        makeThumbnailBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Use for element thumbnails'),\n            icon: 'image',\n            iconColor: 'violet',\n            onActivate: () => {\n              this.makeThumbnail();\n            },\n          },\n          actionUl\n        );\n        dropThumbnailBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Don’t use for element thumbnails'),\n            icon: 'image-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.dropThumbnail();\n            },\n          },\n          actionUl\n        );\n      }\n\n      if (this.previewable) {\n        showInCardsBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Show in element cards'),\n            icon: 'eye',\n            iconColor: 'blue',\n            onActivate: () => {\n              this.showInCards();\n            },\n          },\n          actionUl\n        );\n        omitFromCardsBtn = disclosureMenu.addItem(\n          {\n            label: Craft.t('app', 'Don’t show in element cards'),\n            icon: 'eye-slash',\n            iconColor: 'gray',\n            onActivate: () => {\n              this.omitFromCards();\n            },\n          },\n          actionUl\n        );\n      }\n    }\n\n    const moveGroup = disclosureMenu.addGroup();\n    const moveUpBtn = disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Move up'),\n        icon: 'arrow-up',\n        onActivate: () => {\n          this.moveUp();\n        },\n      },\n      moveGroup\n    );\n    const moveDownBtn = disclosureMenu.addItem(\n      {\n        label: Craft.t('app', 'Move down'),\n        icon: 'arrow-down',\n        onActivate: () => {\n          this.moveDown();\n        },\n      },\n      moveGroup\n    );\n\n    if (!this.isMandatory) {\n      disclosureMenu.addItem(\n        {\n          label: Craft.t('app', 'Remove'),\n          icon: 'xmark',\n          destructive: true,\n          onActivate: () => {\n            this.destroy();\n          },\n        },\n        disclosureMenu.addGroup()\n      );\n    }\n\n    disclosureMenu.on('show', () => {\n      if (this.requirable) {\n        disclosureMenu.toggleItem(makeRequiredBtn, !this.config.required);\n        disclosureMenu.toggleItem(dropRequiredBtn, this.config.required);\n      }\n\n      if (this.thumbable) {\n        disclosureMenu.toggleItem(\n          makeThumbnailBtn,\n          !this.config.providesThumbs\n        );\n        disclosureMenu.toggleItem(dropThumbnailBtn, this.config.providesThumbs);\n      }\n\n      if (this.previewable) {\n        disclosureMenu.toggleItem(showInCardsBtn, !this.config.includeInCards);\n        disclosureMenu.toggleItem(omitFromCardsBtn, this.config.includeInCards);\n      }\n\n      disclosureMenu.toggleItem(\n        moveUpBtn,\n        this.$container.prev('.fld-element').length\n      );\n      disclosureMenu.toggleItem(\n        moveDownBtn,\n        this.$container.next('.fld-element').length\n      );\n    });\n  },\n\n  async createSettings() {\n    let data;\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/render-layout-component-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.tab.designer.config,\n            elementType: this.tab.designer.settings.elementType,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.settingsNamespace = data.namespace;\n    this.slideout = await Craft.FieldLayoutDesigner.createSlideout(data);\n\n    this.slideout.$container.on('submit', (ev) => {\n      ev.preventDefault();\n      this.applySettings();\n    });\n    this.slideout.on('close', () => {\n      this.slideout.destroy();\n      this.slideout = null;\n    });\n\n    const $fieldsContainer = this.slideout.$container.find('.fields:first');\n\n    if (this.isField) {\n      const $handleInput = $fieldsContainer.find('input[name$=\"[handle]\"]');\n      $handleInput.val(this.config.handle || '');\n    }\n\n    this.trigger('createSettings');\n  },\n\n  async applySettings() {\n    // update the UI\n    let $submitBtn = this.slideout.$container\n      .find('button[type=submit]')\n      .addClass('loading');\n\n    try {\n      await this.applyConfig(() => this.config, true);\n    } finally {\n      $submitBtn.removeClass('loading');\n    }\n  },\n\n  async showFieldEditor() {\n    const slideout = new Craft.CpScreenSlideout('fields/edit-field', {\n      params: {\n        fieldId: this.fieldId,\n        multiInstanceTypesOnly: this.isMultiInstance ? 1 : 0,\n      },\n    });\n\n    slideout.on('submit', async ({response}) => {\n      const designer = this.tab.designer;\n\n      // refresh the library selector\n      const $oldSelector = designer.$fieldLibrary.find(\n        `.fld-field[data-id=${this.fieldId}]`\n      );\n      const $newSelector = $(response.data.selectorHtml);\n      $oldSelector.replaceWith($newSelector);\n      designer.refreshLibraryFields();\n      designer.elementDrag.removeItems($oldSelector);\n      designer.elementDrag.addItems($newSelector);\n\n      // refresh all instances of this field\n      const $fields = designer.$tabContainer.find(\n        `.fld-field[data-id=${this.fieldId}]`\n      );\n      for (let i = 0; i < $fields.length; i++) {\n        $fields.eq(i).data('fld-element')?.refresh();\n      }\n    });\n  },\n\n  async makeRequired() {\n    await this.applyConfig((config) => {\n      config.required = true;\n      return config;\n    });\n  },\n\n  async dropRequired() {\n    await this.applyConfig((config) => {\n      config.required = false;\n      return config;\n    });\n  },\n\n  async makeThumbnail() {\n    await this.applyConfig((config) => {\n      config.providesThumbs = true;\n      return config;\n    });\n  },\n\n  async dropThumbnail() {\n    await this.applyConfig((config) => {\n      config.providesThumbs = false;\n      return config;\n    });\n  },\n\n  async showInCards() {\n    await this.applyConfig((config) => {\n      config.includeInCards = true;\n      return config;\n    });\n  },\n\n  async omitFromCards() {\n    await this.applyConfig((config) => {\n      config.includeInCards = false;\n      return config;\n    });\n  },\n\n  moveUp() {\n    const $prev = this.$container.prev('.fld-element');\n    if ($prev.length) {\n      this.$container.insertBefore($prev);\n      this.updatePositionInConfig();\n    }\n  },\n\n  moveDown() {\n    const $next = this.$container.next('.fld-element');\n    if ($next.length) {\n      this.$container.insertAfter($next);\n      this.updatePositionInConfig();\n    }\n  },\n\n  async applyConfig(callback, withSettings = false) {\n    const config = callback(this.config);\n    if (config === false) {\n      return;\n    }\n\n    this.fieldsWithErrors.forEach(($field) => {\n      Craft.ui.clearErrorsFromField($field);\n    });\n\n    let data;\n\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'fields/apply-layout-element-settings',\n        {\n          data: {\n            uid: this.uid,\n            layoutConfig: this.tab.designer.config,\n            elementType: this.tab.designer.settings.elementType,\n            config,\n            settingsNamespace: this.settingsNamespace,\n            settings: withSettings\n              ? this.slideout.$container.serialize()\n              : null,\n          },\n        }\n      );\n      data = response.data;\n    } catch (e) {\n      let errors = e?.response?.data?.errors;\n\n      if (errors) {\n        Object.entries(errors).forEach(([name, fieldErrors]) => {\n          const $field = this.slideout.$container.find(\n            `[data-error-key=\"${name}\"]`\n          );\n          if ($field) {\n            Craft.ui.addErrorsToField($field, fieldErrors);\n            this.fieldsWithErrors.push($field);\n          }\n        });\n      }\n\n      Craft.cp.displayError(e?.response?.data?.message);\n      throw e;\n    }\n\n    this.config = data.config;\n    const $oldContainer = this.$container;\n    const $newContainer = $(data.selectorHtml);\n    this.$container.replaceWith($newContainer);\n    this.$container = $newContainer;\n    this.initUi();\n\n    const designer = this.tab.designer;\n    designer.refreshSelectedFields();\n    designer.elementDrag.removeItems($oldContainer);\n    designer.elementDrag.addItems($newContainer);\n    designer.tabGrid.refreshCols(true);\n\n    if (this.slideout) {\n      this.slideout.close();\n      this.slideout.destroy();\n      this.slideout = null;\n    }\n\n    if (this.config.providesThumbs) {\n      // make sure this is the only one\n      const $fields = this.tab.designer.$tabContainer.find('.fld-field');\n      for (let i = 0; i < $fields.length; i++) {\n        const $field = $fields.eq(i);\n        const element = $field.data('fld-element');\n        if (element && element !== this && element.config.providesThumbs) {\n          element.applyConfig((config) => {\n            config.providesThumbs = false;\n            return config;\n          });\n        }\n      }\n    }\n  },\n\n  async refresh() {\n    await this.applyConfig((config) => config);\n  },\n\n  get index() {\n    const tabConfig = this.tab.config;\n    if (typeof tabConfig === 'undefined') {\n      return -1;\n    }\n    return tabConfig.elements.findIndex((c) => c.uid === this.uid);\n  },\n\n  get config() {\n    if (!this.uid) {\n      throw 'Tab is missing its UID';\n    }\n    let config = this.tab.config.elements.find((c) => c.uid === this.uid);\n    if (!config) {\n      config = {\n        uid: this.uid,\n      };\n      this.config = config;\n    }\n    return config;\n  },\n\n  set config(config) {\n    const tabConfig = this.tab.config;\n    const index = this.index;\n    if (index !== -1) {\n      tabConfig.elements[index] = config;\n    } else {\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-element')\n      );\n      tabConfig.elements.splice(newIndex, 0, config);\n    }\n    this.tab.config = tabConfig;\n  },\n\n  updateConfig: function (callback) {\n    const config = callback(this.config);\n    if (config !== false) {\n      this.config = config;\n    }\n  },\n\n  updatePositionInConfig: function () {\n    this.tab.updateConfig((config) => {\n      const elementConfig = this.config;\n      const oldIndex = this.index;\n      const newIndex = $.inArray(\n        this.$container[0],\n        this.$container.parent().children('.fld-element')\n      );\n      if (oldIndex !== -1) {\n        config.elements.splice(oldIndex, 1);\n      }\n      config.elements.splice(newIndex, 0, elementConfig);\n      return config;\n    });\n  },\n\n  destroy: function () {\n    this.tab.updateConfig((config) => {\n      const index = this.index;\n      if (index === -1) {\n        return false;\n      }\n      config.elements.splice(index, 1);\n      return config;\n    });\n\n    this.tab.designer.elementDrag.removeItems(this.$container);\n    this.$container.remove();\n\n    if (this.isField) {\n      this.tab.designer.refreshSelectedFields();\n\n      if (!this.isMultiInstance) {\n        this.tab.designer.removeFieldByHandle(this.defaultHandle);\n      }\n    }\n\n    this.base();\n  },\n});\n\nCraft.FieldLayoutDesigner.BaseDrag = Garnish.Drag.extend({\n  designer: null,\n  $insertion: null,\n  showingInsertion: false,\n  $caboose: null,\n\n  /**\n   * Constructor\n   */\n  init: function (designer, settings) {\n    this.designer = designer;\n    this.base(this.findItems(), settings);\n  },\n\n  /**\n   * On Drag Start\n   */\n  onDragStart: function () {\n    this.base();\n\n    // Create the insertion\n    this.$insertion = this.createInsertion();\n\n    // Add the caboose\n    this.$caboose = this.createCaboose();\n    this.$items = $().add(this.$items.add(this.$caboose));\n\n    Garnish.$bod.addClass('dragging');\n  },\n\n  removeCaboose: function () {\n    this.$items = this.$items.not(this.$caboose);\n    this.$caboose.remove();\n  },\n\n  swapDraggeeWithInsertion: function () {\n    this.$insertion.insertBefore(this.$draggee);\n    this.$draggee.detach();\n    this.$items = $().add(this.$items.not(this.$draggee).add(this.$insertion));\n    this.showingInsertion = true;\n  },\n\n  swapInsertionWithDraggee: function () {\n    this.$insertion.replaceWith(this.$draggee);\n    this.$items = $().add(this.$items.not(this.$insertion).add(this.$draggee));\n    this.showingInsertion = false;\n  },\n\n  /**\n   * Sets the item midpoints up front so we don't have to keep checking on every mouse move\n   */\n  setMidpoints: function () {\n    for (let i = 0; i < this.$items.length; i++) {\n      let $item = $(this.$items[i]);\n      let offset = $item.offset();\n\n      // Skip library elements\n      if ($item.hasClass('unused')) {\n        continue;\n      }\n\n      $item.data('midpoint', {\n        left: offset.left + $item.outerWidth() / 2,\n        top: offset.top + $item.outerHeight() / 2,\n      });\n    }\n  },\n\n  /**\n   * Returns the closest item to the cursor.\n   */\n  getClosestItem: function () {\n    this.getClosestItem._closestItem = null;\n    this.getClosestItem._closestItemMouseDiff = null;\n\n    for (\n      this.getClosestItem._i = 0;\n      this.getClosestItem._i < this.$items.length;\n      this.getClosestItem._i++\n    ) {\n      this.getClosestItem._$item = $(this.$items[this.getClosestItem._i]);\n\n      this.getClosestItem._midpoint =\n        this.getClosestItem._$item.data('midpoint');\n      if (!this.getClosestItem._midpoint) {\n        continue;\n      }\n\n      this.getClosestItem._mouseDiff = Garnish.getDist(\n        this.getClosestItem._midpoint.left,\n        this.getClosestItem._midpoint.top,\n        this.mouseX,\n        this.mouseY\n      );\n\n      if (\n        this.getClosestItem._closestItem === null ||\n        this.getClosestItem._mouseDiff <\n          this.getClosestItem._closestItemMouseDiff\n      ) {\n        this.getClosestItem._closestItem = this.getClosestItem._$item[0];\n        this.getClosestItem._closestItemMouseDiff =\n          this.getClosestItem._mouseDiff;\n      }\n    }\n\n    return this.getClosestItem._closestItem;\n  },\n\n  checkForNewClosestItem: function () {\n    // Is there a new closest item?\n    this.checkForNewClosestItem._closestItem = this.getClosestItem();\n\n    if (this.checkForNewClosestItem._closestItem === this.$insertion[0]) {\n      return;\n    }\n\n    if (\n      this.showingInsertion &&\n      $.inArray(this.$insertion[0], this.$items) <\n        $.inArray(this.checkForNewClosestItem._closestItem, this.$items) &&\n      $.inArray(this.checkForNewClosestItem._closestItem, this.$caboose) === -1\n    ) {\n      this.$insertion.insertAfter(this.checkForNewClosestItem._closestItem);\n    } else {\n      this.$insertion.insertBefore(this.checkForNewClosestItem._closestItem);\n    }\n\n    // we only want to do it all if there's at least one tab in the layout\n    if (this.designer.tabGrid.$items.length > 0) {\n      this.$items = $().add(this.$items.add(this.$insertion));\n      this.showingInsertion = true;\n      this.designer.tabGrid.refreshCols(true);\n      this.setMidpoints();\n    }\n  },\n\n  /**\n   * On Drag Stop\n   */\n  onDragStop: function () {\n    if (this.showingInsertion) {\n      this.swapInsertionWithDraggee();\n    }\n\n    this.removeCaboose();\n\n    this.designer.tabGrid.refreshCols(true);\n\n    // return the helpers to the draggees\n    let offset = this.$draggee.offset();\n    if (!offset || (offset.top === 0 && offset.left === 0)) {\n      this.$draggee\n        .css({\n          display: this.draggeeDisplay,\n          visibility: 'visible',\n          opacity: 0,\n        })\n        .velocity({opacity: 1}, Garnish.FX_DURATION);\n      this.helpers[0].velocity({opacity: 0}, Garnish.FX_DURATION, () => {\n        this._showDraggee();\n      });\n    } else {\n      this.returnHelpersToDraggees();\n    }\n\n    this.base();\n\n    Garnish.$bod.removeClass('dragging');\n  },\n});\n\nCraft.FieldLayoutDesigner.TabDrag = Craft.FieldLayoutDesigner.BaseDrag.extend({\n  /**\n   * Constructor\n   */\n  init: function (designer) {\n    let settings = {\n      handle: '.tab',\n    };\n\n    this.base(designer, settings);\n  },\n\n  findItems: function () {\n    return this.designer.$tabContainer.find('> div.fld-tab');\n  },\n\n  /**\n   * On Drag Start\n   */\n  onDragStart: function () {\n    this.base();\n    this.swapDraggeeWithInsertion();\n    this.setMidpoints();\n  },\n\n  swapDraggeeWithInsertion: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$draggee);\n    this.designer.tabGrid.addItems(this.$insertion);\n  },\n\n  swapInsertionWithDraggee: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$insertion);\n    this.designer.tabGrid.addItems(this.$draggee);\n  },\n\n  /**\n   * On Drag\n   */\n  onDrag: function () {\n    this.checkForNewClosestItem();\n    this.base();\n  },\n\n  /**\n   * On Drag Stop\n   */\n  onDragStop: function () {\n    this.base();\n\n    // \"show\" the tab, but make it invisible\n    this.$draggee.css({\n      display: this.draggeeDisplay,\n      visibility: 'hidden',\n    });\n\n    this.$draggee.data('fld-tab').updatePositionInConfig();\n  },\n\n  /**\n   * Creates the caboose\n   */\n  createCaboose: function () {\n    let $caboose = $('<div class=\"fld-tab fld-tab-caboose\"/>').appendTo(\n      this.designer.$tabContainer\n    );\n    this.designer.tabGrid.addItems($caboose);\n    return $caboose;\n  },\n\n  /**\n   * Removes the caboose\n   */\n  removeCaboose: function () {\n    this.base();\n    this.designer.tabGrid.removeItems(this.$caboose);\n  },\n\n  /**\n   * Creates the insertion\n   */\n  createInsertion: function () {\n    let $tab = this.$draggee.find('.tab');\n\n    return $(`\n<div class=\"fld-tab fld-insertion\" style=\"height: ${this.$draggee.height()}px;\">\n  <div class=\"tabs\"><div class=\"tab sel draggable\" style=\"width: ${$tab.outerWidth()}px; height: ${\n    $tab.outerHeight() + 2\n  }px;\"></div></div>\n  <div class=\"fld-tabcontent\" style=\"height: ${\n    this.$draggee.find('.fld-tabcontent').height() - 2\n  }px;\"></div>\n</div>\n`);\n  },\n});\n\nCraft.FieldLayoutDesigner.ElementDrag =\n  Craft.FieldLayoutDesigner.BaseDrag.extend({\n    draggingLibraryElement: false,\n    draggingField: false,\n    draggingMultiInstanceElement: false,\n    originalTab: null,\n\n    /**\n     * On Drag Start\n     */\n    onDragStart: function () {\n      this.base();\n\n      // Are we dragging an element from the library?\n      this.draggingLibraryElement = this.$draggee.hasClass('unused');\n\n      // Is it a field?\n      this.draggingField = this.$draggee.hasClass('fld-field');\n\n      // Can the element have multiple instances?\n      this.draggingMultiInstanceElement = Garnish.hasAttr(\n        this.$draggee,\n        'data-is-multi-instance'\n      );\n\n      // keep UI elements visible\n      if (this.draggingLibraryElement && this.draggingMultiInstanceElement) {\n        this.$draggee.css({\n          display: this.draggeeDisplay,\n          visibility: 'visible',\n        });\n      }\n\n      // Swap the draggee with the insertion if dragging a selected item\n      if (!this.draggingLibraryElement) {\n        this.originalTab = this.$draggee.closest('.fld-tab').data('fld-tab');\n        this.swapDraggeeWithInsertion();\n      } else {\n        this.originalTab = null;\n      }\n\n      this.setMidpoints();\n    },\n\n    /**\n     * On Drag\n     */\n    onDrag: function () {\n      if (this.isDraggeeMandatory() || this.isHoveringOverTab()) {\n        this.checkForNewClosestItem();\n      } else if (this.showingInsertion) {\n        this.$insertion.remove();\n        this.$items = $().add(this.$items.not(this.$insertion));\n        this.showingInsertion = false;\n        this.designer.tabGrid.refreshCols(true);\n        this.setMidpoints();\n      }\n\n      this.base();\n    },\n\n    isDraggeeMandatory: function () {\n      return Garnish.hasAttr(this.$draggee, 'data-mandatory');\n    },\n\n    isHoveringOverTab: function () {\n      for (let i = 0; i < this.designer.tabGrid.$items.length; i++) {\n        if (\n          Garnish.hitTest(\n            this.mouseX,\n            this.mouseY,\n            this.designer.tabGrid.$items.eq(i)\n          )\n        ) {\n          return true;\n        }\n      }\n\n      return false;\n    },\n\n    findItems: function () {\n      // Return all of the in-use layout elements. (We'll add the library elements via initLibraryElement().)\n      return this.designer.$tabContainer.find('.fld-element');\n    },\n\n    /**\n     * Creates the caboose\n     */\n    createCaboose: function () {\n      let $caboose = $();\n      let $fieldContainers = this.designer.$tabContainer.find(\n        '> .fld-tab > .fld-tabcontent'\n      );\n\n      for (let i = 0; i < $fieldContainers.length; i++) {\n        $caboose = $caboose.add(\n          $('<div/>').insertBefore(\n            $fieldContainers.eq(i).children('.fld-add-btn')\n          )\n        );\n      }\n\n      return $caboose;\n    },\n\n    /**\n     * Creates the insertion\n     */\n    createInsertion: function () {\n      return $(\n        `<div class=\"fld-element fld-insertion\" style=\"height: ${this.$draggee.outerHeight()}px;\"/>`\n      );\n    },\n\n    /**\n     * On Drag Stop\n     */\n    onDragStop: function () {\n      let showingInsertion = this.showingInsertion;\n      if (showingInsertion) {\n        if (this.draggingLibraryElement) {\n          // Clone the element nad set this.$draggee to the clone, as if we were dragging that all along\n          this.$draggee = this.designer.cloneLibraryElementForSelection(\n            this.$draggee\n          );\n        }\n      } else if (!this.draggingLibraryElement) {\n        let $libraryElement = this.draggingField\n          ? this.designer.$fields.filter(\n              `[data-attribute=\"${this.$draggee.data('attribute')}\"]:first`\n            )\n          : this.designer.$uiLibraryElements.filter(\n              `[data-type=\"${this.$draggee.data('type')}\"]:first`\n            );\n\n        if (this.draggingField) {\n          // show the field in the library\n          $libraryElement.removeClass('hidden');\n          $libraryElement.closest('.fld-field-group').removeClass('hidden');\n        }\n\n        // Destroy the original element\n        this.$draggee.data('fld-element').destroy();\n\n        // Set this.$draggee to the library element, as if we were dragging that all along\n        this.$draggee = $libraryElement;\n      }\n\n      this.base();\n\n      this.$draggee.css({\n        display: this.draggeeDisplay,\n        visibility:\n          this.draggingField || showingInsertion ? 'hidden' : 'visible',\n      });\n\n      if (showingInsertion) {\n        const tab = this.$draggee.closest('.fld-tab').data('fld-tab');\n        let element;\n\n        if (this.draggingLibraryElement) {\n          element = tab.initElement(this.$draggee);\n        } else {\n          element = this.$draggee.data('fld-element');\n\n          // New tab?\n          if (tab !== this.originalTab) {\n            const config = element.config;\n\n            this.originalTab.updateConfig((config) => {\n              const index = element.index;\n              if (index === -1) {\n                return false;\n              }\n              config.elements.splice(index, 1);\n              return config;\n            });\n\n            this.$draggee.data('fld-element').tab = tab;\n            element.config = config;\n          }\n        }\n\n        element.updatePositionInConfig();\n      }\n    },\n  });\n","/** global: Craft */\n/** global: Garnish */\n/**\n * FieldToggle\n */\nCraft.FieldToggle = Garnish.Base.extend({\n  $toggle: null,\n  targetPrefix: null,\n  targetSelector: null,\n  reverseTargetSelector: null,\n\n  _$target: null,\n  _$reverseTarget: null,\n  type: null,\n\n  init: function (toggle) {\n    this.$toggle = $(toggle);\n\n    // Is this already a field toggle?\n    if (this.$toggle.data('fieldtoggle')) {\n      console.warn('Double-instantiating a field toggle on an element');\n      this.$toggle.data('fieldtoggle').destroy();\n    }\n\n    this.$toggle.data('fieldtoggle', this);\n\n    this.type = this.getType();\n\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this.targetPrefix = this.$toggle.attr('data-target-prefix') || '';\n    } else {\n      this.targetSelector = this.normalizeTargetSelector(\n        this.$toggle.data('target')\n      );\n      this.reverseTargetSelector = this.normalizeTargetSelector(\n        this.$toggle.data('reverse-target')\n      );\n    }\n\n    this.findTargets();\n\n    switch (this.type) {\n      case 'link':\n        this.addListener(this.$toggle, 'click', 'onToggleChange');\n        break;\n      case 'fieldset':\n        this.addListener(\n          this.$toggle.find('input'),\n          'change',\n          'onToggleChange'\n        );\n        break;\n      default:\n        this.addListener(this.$toggle, 'change', 'onToggleChange');\n        this.onToggleChange();\n    }\n  },\n\n  normalizeTargetSelector: function (selector) {\n    if (selector && !selector.match(/^[#\\.]/)) {\n      selector = '#' + selector;\n    }\n\n    return selector;\n  },\n\n  getType: function () {\n    let nodeName = this.$toggle.prop('nodeName');\n    if (\n      (nodeName === 'INPUT' && this.$toggle.attr('type') === 'checkbox') ||\n      this.$toggle.attr('role') === 'checkbox' ||\n      this.$toggle.attr('role') === 'switch'\n    ) {\n      return 'checkbox';\n    }\n\n    switch (nodeName) {\n      case 'SELECT':\n        if (Garnish.hasAttr(this.$toggle, 'data-boolean-menu')) {\n          return 'booleanMenu';\n        }\n        return 'select';\n      case 'A':\n        return 'link';\n      default:\n        return 'fieldset';\n    }\n  },\n\n  findTargets: function () {\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this._$target = $(\n        this.normalizeTargetSelector(this.targetPrefix + this.getToggleVal())\n      );\n    } else {\n      if (this.targetSelector) {\n        this._$target = $(this.targetSelector);\n      }\n\n      if (this.reverseTargetSelector) {\n        this._$reverseTarget = $(this.reverseTargetSelector);\n      }\n    }\n  },\n\n  getToggleVal: function () {\n    switch (this.type) {\n      case 'checkbox':\n        if (typeof this.$toggle.prop('checked') !== 'undefined') {\n          return this.$toggle.prop('checked');\n        }\n        return this.$toggle.attr('aria-checked') === 'true';\n\n      case 'booleanMenu':\n        const boolean = this.$toggle.data('boolean');\n        if (typeof boolean !== 'undefined') {\n          return boolean;\n        }\n        const val = this.$toggle.val();\n        return val && val !== '0';\n\n      default:\n        let postVal;\n        if (this.type === 'fieldset') {\n          postVal = this.$toggle.find('input:checked:first').val();\n        } else {\n          postVal = Garnish.getInputPostVal(this.$toggle);\n        }\n\n        // Normalize the value\n        return typeof postVal === 'undefined' || postVal === null\n          ? null\n          : postVal.replace(/[^\\w]+/g, '-');\n    }\n  },\n\n  onToggleChange: function () {\n    if (this.type === 'select' || this.type === 'fieldset') {\n      this.hideTarget(this._$target);\n      this.findTargets();\n      this.showTarget(this._$target);\n    } else {\n      this.findTargets();\n\n      if (this.type === 'link') {\n        this.onToggleChange._show =\n          this.$toggle.hasClass('collapsed') ||\n          !this.$toggle.hasClass('expanded');\n      } else {\n        this.onToggleChange._show = !!this.getToggleVal();\n      }\n\n      if (this.onToggleChange._show) {\n        this.showTarget(this._$target);\n        this.hideTarget(this._$reverseTarget);\n      } else {\n        this.hideTarget(this._$target);\n        this.showTarget(this._$reverseTarget);\n      }\n\n      delete this.onToggleChange._show;\n    }\n  },\n\n  showTarget: function ($target) {\n    if ($target && $target.length) {\n      this.showTarget._currentHeight = $target.height();\n\n      $target.removeClass('hidden');\n\n      if (this.type !== 'select' && this.type !== 'fieldset') {\n        if (this.type === 'link') {\n          this.$toggle.removeClass('collapsed');\n          this.$toggle.addClass('expanded');\n        }\n\n        for (let i = 0; i < $target.length; i++) {\n          (($t) => {\n            if ($t.prop('nodeName') !== 'SPAN') {\n              $t.height('auto');\n              this.showTarget._targetHeight = $t.height();\n              $t.css({\n                height: this.showTarget._currentHeight,\n                overflow: 'hidden',\n              });\n\n              $t.velocity('stop');\n\n              $t.velocity(\n                {height: this.showTarget._targetHeight},\n                'fast',\n                function () {\n                  $t.css({\n                    height: '',\n                    overflow: '',\n                  });\n                }\n              );\n            }\n          })($target.eq(i));\n        }\n\n        delete this.showTarget._targetHeight;\n      }\n\n      delete this.showTarget._currentHeight;\n\n      // Trigger a resize event in case there are any grids in the target that need to initialize\n      Garnish.$win.trigger('resize');\n    }\n  },\n\n  hideTarget: function ($target) {\n    if ($target && $target.length) {\n      if (this.type === 'select' || this.type === 'fieldset') {\n        $target.addClass('hidden');\n      } else {\n        if (this.type === 'link') {\n          this.$toggle.removeClass('expanded');\n          this.$toggle.addClass('collapsed');\n        }\n\n        for (let i = 0; i < $target.length; i++) {\n          (($t) => {\n            if ($t.hasClass('hidden')) {\n              return;\n            }\n            if ($t.prop('nodeName') === 'SPAN') {\n              $t.addClass('hidden');\n            } else {\n              $t.css('overflow', 'hidden');\n              $t.velocity('stop');\n              $t.velocity({height: 0}, 'fast', function () {\n                $t.addClass('hidden');\n              });\n            }\n          })($target.eq(i));\n        }\n      }\n    }\n  },\n\n  destroy: function () {\n    this.$toggle.removeData('fieldtoggle');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * @callback constructorCallback\n */\n/**\n * Form observer\n */\nCraft.FormObserver = Garnish.Base.extend({\n  $container: null,\n  /**\n   * @type {constructorCallback}\n   * @param {string} formData\n   */\n  _callback: null,\n  _pauseLevel: 0,\n  _timeout: null,\n  _recentKeypress: false,\n  _formData: null,\n  /**\n   * @type {MutationObserver}\n   */\n  _mutationObserver: null,\n  _selectizeInputs: null,\n\n  get isActive() {\n    return this._pauseLevel === 0;\n  },\n\n  /**\n   * @param {(jQuery|HTMLElement|string)} container\n   * @param {constructorCallback} callback\n   */\n  init(container, callback) {\n    this.$container = $(container);\n    this._callback = callback;\n    this._serialize();\n\n    this.addListener(this.$container, 'change,input,keypress,keyup', (ev) => {\n      if (this.isActive) {\n        // slow down when actively typing\n        if (['keypress', 'keyup'].includes(ev.type)) {\n          this._recentKeypress = true;\n        }\n        this._checkFormAfterDelay();\n      }\n    });\n\n    this._mutationObserver = new MutationObserver((records) => {\n      for (const record of records) {\n        if (this.isActive && this._formChanged(record)) {\n          this._checkFormAfterDelay();\n        }\n\n        for (const node of record.addedNodes) {\n          if (node instanceof Element) {\n            this._initSelectizeInputs(node);\n          }\n        }\n\n        if (\n          record.attributeName === 'class' &&\n          record.target instanceof Element &&\n          record.target.classList.contains('selectized')\n        ) {\n          this._initSelectizeInput(record.target);\n        }\n      }\n    });\n\n    this._mutationObserver.observe(this.$container[0], {\n      childList: true,\n      subtree: true,\n      characterData: true,\n      attributeFilter: ['name', 'value', 'disabled', 'class'],\n    });\n\n    this._initSelectizeInputs(this.$container[0]);\n  },\n\n  /**\n   * @param {MutationRecord} record\n   * @returns {boolean}\n   */\n  _formChanged(record) {\n    switch (record.type) {\n      case 'childList':\n        return (\n          // was this for the text node of a <textarea>?\n          (record.target.nodeName === 'TEXTAREA' &&\n            record.target.hasAttribute('name')) ||\n          // maybe a `[name]` node was added/removed\n          this._hasNamedNodes(record.addedNodes) ||\n          this._hasNamedNodes(record.removedNodes)\n        );\n      case 'attributes':\n        switch (record.attributeName) {\n          case 'name':\n            // only matters if the element isn't disabled\n            return !record.target.disabled;\n          case 'value':\n            // only matters if the element has a name attribute and isn't disabled\n            return (\n              record.target.hasAttribute('name') && !record.target.disabled\n            );\n          case 'disabled':\n            // only matters if the element has a name attribute\n            return record.target.hasAttribute('name');\n        }\n      case 'characterData':\n        // maybe a <textarea> change\n        return (\n          record.target.parentNode instanceof Element &&\n          record.target.parentNode.hasAttribute('name')\n        );\n      default:\n        return false;\n    }\n  },\n\n  /**\n   * @param {Element} container\n   */\n  _initSelectizeInputs(container) {\n    // we're now using selectize select_on_focus plugin which clears the dropdown's value on dropdown open;\n    // that triggers a change event which triggers saving a draft and causes conditional fields/tabs to misbehave;\n    // because of that, we are now emitting selectize dropdown open and close events;\n    // we pause listening for changes on dropdown open (it happens before the focus event, so before the value is cleared)\n    // and we resume on dropdown close to register the change in value (if one actually occurred);\n    if (container.classList.contains('selectized')) {\n      this._initSelectizeInput(container);\n    } else {\n      const inputs = container.querySelectorAll('.selectized');\n      for (const input of inputs) {\n        this._initSelectizeInput(input);\n      }\n    }\n  },\n\n  _initSelectizeInput(input) {\n    // just in case the element was detached and re-inserted into the DOM\n    this.removeAllListeners(input);\n    this.addListener(input, 'selectizedropdownopen', () => {\n      this.pause();\n    });\n    this.addListener(input, 'selectizedropdownclose', () => {\n      setTimeout(() => {\n        this.resume();\n      }, 100);\n    });\n  },\n\n  /**\n   * @param {Node[]} nodes\n   * @returns {boolean}\n   */\n  _hasNamedNodes(nodes) {\n    for (const node of nodes) {\n      if (\n        node instanceof Element &&\n        (node.hasAttribute('name') || node.querySelectorAll('[name]').length)\n      ) {\n        return true;\n      }\n    }\n    return false;\n  },\n\n  _checkFormAfterDelay() {\n    clearTimeout(this._timeout);\n    this._timeout = setTimeout(\n      () => {\n        this.checkForm();\n      },\n      this._recentKeypress ? 1000 : 100\n    );\n  },\n\n  checkForm() {\n    clearTimeout(this._timeout);\n    this._recentKeypress = false;\n    if (this._formData !== this._serialize()) {\n      this._callback(this._formData);\n    }\n  },\n\n  _serialize() {\n    if (this.$container[0].nodeName === 'FORM') {\n      this._formData = this.$container.serialize();\n    } else {\n      this._formData = $('<form/>').append(this.$container.clone()).serialize();\n    }\n    return this._formData;\n  },\n\n  pause() {\n    this._pauseLevel++;\n  },\n\n  resume() {\n    if (this._pauseLevel === 0) {\n      throw 'Craft.FormObserver::resume() should only be called after pause().';\n    }\n\n    // Only actually resume operation if this has been called the same\n    // number of times that pause() was called\n    this._pauseLevel--;\n\n    if (this.isActive) {\n      this.checkForm();\n    }\n  },\n\n  destroy() {\n    this._mutationObserver.disconnect();\n    delete this._mutationObserver;\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.Grid = Garnish.Base.extend(\n  {\n    $container: null,\n\n    $items: null,\n    items: null,\n    totalCols: null,\n    colGutterDrop: null,\n    colPctWidth: null,\n\n    possibleItemColspans: null,\n    possibleItemPositionsByColspan: null,\n\n    itemPositions: null,\n    itemColspansByPosition: null,\n\n    layouts: null,\n    layout: null,\n    itemHeights: null,\n    leftPadding: null,\n\n    _refreshingCols: false,\n    _refreshColsAfterRefresh: false,\n    _forceRefreshColsAfterRefresh: false,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n\n      // Is this already a grid?\n      if (this.$container.data('grid')) {\n        console.warn('Double-instantiating a grid on an element');\n        this.$container.data('grid').destroy();\n      }\n\n      this.$container.data('grid', this);\n\n      this.setSettings(settings, Craft.Grid.defaults);\n\n      // Set the refreshCols() proxy that container resizes will trigger\n      this.handleContainerHeightProxy = () => {\n        this.refreshCols(false, true);\n      };\n\n      this.$items = this.$container.children(this.settings.itemSelector);\n      this.setItems();\n      this.refreshCols(true, false);\n\n      Garnish.$doc.ready(() => {\n        this.refreshCols(false, false);\n      });\n    },\n\n    addItems: function (items) {\n      this.$items = $().add(this.$items.add(items));\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    removeItems: function (items) {\n      this.$items = $().add(this.$items.not(items));\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    resetItemOrder: function () {\n      this.$items = $().add(this.$items);\n      this.setItems();\n      this.refreshCols(true, true);\n    },\n\n    setItems: function () {\n      this.setItems._ = {};\n\n      this.items = [];\n\n      for (\n        this.setItems._.i = 0;\n        this.setItems._.i < this.$items.length;\n        this.setItems._.i++\n      ) {\n        this.items.push($(this.$items[this.setItems._.i]));\n      }\n\n      delete this.setItems._;\n    },\n\n    refreshCols: function (force) {\n      if (this._refreshingCols) {\n        this._refreshColsAfterRefresh = true;\n        if (force) {\n          this._forceRefreshColsAfterRefresh = true;\n        }\n        return;\n      }\n\n      this._refreshingCols = true;\n\n      if (!this.items.length) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      this.refreshCols._ = {};\n\n      // Check to see if the grid is actually visible\n      this.refreshCols._.oldHeight = this.$container[0].style.height;\n      this.$container[0].style.height = 1;\n      this.refreshCols._.scrollHeight = this.$container[0].scrollHeight;\n      this.$container[0].style.height = this.refreshCols._.oldHeight;\n\n      if (this.refreshCols._.scrollHeight === 0) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      if (this.settings.cols) {\n        this.refreshCols._.totalCols = this.settings.cols;\n      } else {\n        this.refreshCols._.totalCols = Math.floor(\n          this.$container.width() / this.settings.minColWidth\n        );\n\n        // If we're adding a new column, require an extra 20 pixels in case a scrollbar shows up\n        if (\n          this.totalCols !== null &&\n          this.refreshCols._.totalCols > this.totalCols\n        ) {\n          this.refreshCols._.totalCols = Math.floor(\n            (this.$container.width() - 20) / this.settings.minColWidth\n          );\n        }\n\n        if (\n          this.settings.maxCols &&\n          this.refreshCols._.totalCols > this.settings.maxCols\n        ) {\n          this.refreshCols._.totalCols = this.settings.maxCols;\n        }\n      }\n\n      if (this.refreshCols._.totalCols === 0) {\n        this.refreshCols._.totalCols = 1;\n      }\n\n      // Same number of columns as before?\n      if (\n        force !== true &&\n        this.totalCols === this.refreshCols._.totalCols &&\n        !this.settings.snapToGrid\n      ) {\n        this.completeRefreshCols();\n        return;\n      }\n\n      this.totalCols = this.refreshCols._.totalCols;\n      this.colGutterDrop =\n        (this.settings.gutter * (this.totalCols - 1)) / this.totalCols;\n\n      // Temporarily stop listening to container resizes\n      this.removeListener(this.$container, 'resize');\n\n      if (this.settings.fillMode === 'grid') {\n        this.refreshCols._.itemIndex = 0;\n\n        while (this.refreshCols._.itemIndex < this.items.length) {\n          // Append the next X items and figure out which one is the tallest\n          this.refreshCols._.tallestItemHeight = -1;\n          this.refreshCols._.colIndex = 0;\n\n          for (\n            this.refreshCols._.i = this.refreshCols._.itemIndex;\n            this.refreshCols._.i <\n              this.refreshCols._.itemIndex + this.totalCols &&\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.itemHeight = this.items[this.refreshCols._.i]\n              .height('auto')\n              .height();\n\n            if (\n              this.refreshCols._.itemHeight >\n              this.refreshCols._.tallestItemHeight\n            ) {\n              this.refreshCols._.tallestItemHeight =\n                this.refreshCols._.itemHeight;\n            }\n\n            this.refreshCols._.colIndex++;\n          }\n\n          if (this.settings.snapToGrid) {\n            this.refreshCols._.remainder =\n              this.refreshCols._.tallestItemHeight % this.settings.snapToGrid;\n\n            if (this.refreshCols._.remainder) {\n              this.refreshCols._.tallestItemHeight +=\n                this.settings.snapToGrid - this.refreshCols._.remainder;\n            }\n          }\n\n          // Now set their heights to the tallest one\n          for (\n            this.refreshCols._.i = this.refreshCols._.itemIndex;\n            this.refreshCols._.i <\n              this.refreshCols._.itemIndex + this.totalCols &&\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.items[this.refreshCols._.i].height(\n              this.refreshCols._.tallestItemHeight\n            );\n          }\n\n          // set the this.refreshCols._.itemIndex pointer to the next one up\n          this.refreshCols._.itemIndex += this.totalCols;\n        }\n      } else {\n        this.removeListener(this.$items, 'resize');\n\n        // If there's only one column, sneak out early\n        if (this.totalCols === 1) {\n          this.$container.height('auto');\n          this.$items\n            .show()\n            .css({\n              position: 'relative',\n              width: 'auto',\n              top: 0,\n            })\n            .css(Craft.left, 0);\n        } else {\n          this.$items.css('position', 'absolute');\n          this.colPctWidth = 100 / this.totalCols;\n\n          // The setup\n\n          this.layouts = [];\n\n          this.itemPositions = [];\n          this.itemColspansByPosition = [];\n\n          // Figure out all of the possible colspans for each item,\n          // as well as all the possible positions for each item at each of its colspans\n\n          this.possibleItemColspans = [];\n          this.possibleItemPositionsByColspan = [];\n          this.itemHeightsByColspan = [];\n\n          for (\n            this.refreshCols._.item = 0;\n            this.refreshCols._.item < this.items.length;\n            this.refreshCols._.item++\n          ) {\n            this.possibleItemColspans[this.refreshCols._.item] = [];\n            this.possibleItemPositionsByColspan[this.refreshCols._.item] = {};\n            this.itemHeightsByColspan[this.refreshCols._.item] = {};\n\n            this.refreshCols._.$item =\n              this.items[this.refreshCols._.item].show();\n            this.refreshCols._.positionRight =\n              this.refreshCols._.$item.data('position') === 'right';\n            this.refreshCols._.positionLeft =\n              this.refreshCols._.$item.data('position') === 'left';\n            this.refreshCols._.minColspan = this.refreshCols._.$item.data(\n              'colspan'\n            )\n              ? this.refreshCols._.$item.data('colspan')\n              : this.refreshCols._.$item.data('min-colspan')\n                ? this.refreshCols._.$item.data('min-colspan')\n                : 1;\n            this.refreshCols._.maxColspan = this.refreshCols._.$item.data(\n              'colspan'\n            )\n              ? this.refreshCols._.$item.data('colspan')\n              : this.refreshCols._.$item.data('max-colspan')\n                ? this.refreshCols._.$item.data('max-colspan')\n                : this.totalCols;\n\n            if (this.refreshCols._.minColspan > this.totalCols) {\n              this.refreshCols._.minColspan = this.totalCols;\n            }\n            if (this.refreshCols._.maxColspan > this.totalCols) {\n              this.refreshCols._.maxColspan = this.totalCols;\n            }\n\n            for (\n              this.refreshCols._.colspan = this.refreshCols._.minColspan;\n              this.refreshCols._.colspan <= this.refreshCols._.maxColspan;\n              this.refreshCols._.colspan++\n            ) {\n              // Get the height for this colspan\n              this.refreshCols._.$item.css(\n                'width',\n                this.getItemWidthCss(this.refreshCols._.colspan)\n              );\n              this.itemHeightsByColspan[this.refreshCols._.item][\n                this.refreshCols._.colspan\n              ] = this.refreshCols._.$item.outerHeight();\n\n              this.possibleItemColspans[this.refreshCols._.item].push(\n                this.refreshCols._.colspan\n              );\n              this.possibleItemPositionsByColspan[this.refreshCols._.item][\n                this.refreshCols._.colspan\n              ] = [];\n\n              if (this.refreshCols._.positionLeft) {\n                this.refreshCols._.minPosition = 0;\n                this.refreshCols._.maxPosition = 0;\n              } else if (this.refreshCols._.positionRight) {\n                this.refreshCols._.minPosition =\n                  this.totalCols - this.refreshCols._.colspan;\n                this.refreshCols._.maxPosition = this.refreshCols._.minPosition;\n              } else {\n                this.refreshCols._.minPosition = 0;\n                this.refreshCols._.maxPosition =\n                  this.totalCols - this.refreshCols._.colspan;\n              }\n\n              for (\n                this.refreshCols._.position = this.refreshCols._.minPosition;\n                this.refreshCols._.position <= this.refreshCols._.maxPosition;\n                this.refreshCols._.position++\n              ) {\n                this.possibleItemPositionsByColspan[this.refreshCols._.item][\n                  this.refreshCols._.colspan\n                ].push(this.refreshCols._.position);\n              }\n            }\n          }\n\n          // Find all the possible layouts\n\n          this.refreshCols._.colHeights = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.totalCols;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.colHeights.push(0);\n          }\n\n          this.createLayouts(0, [], [], this.refreshCols._.colHeights, 0);\n\n          // Now find the layout that looks the best.\n\n          // First find the layouts with the highest number of used columns\n          this.refreshCols._.layoutTotalCols = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.layouts.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.layoutTotalCols[this.refreshCols._.i] = 0;\n\n            for (\n              this.refreshCols._.j = 0;\n              this.refreshCols._.j < this.totalCols;\n              this.refreshCols._.j++\n            ) {\n              if (\n                this.layouts[this.refreshCols._.i].colHeights[\n                  this.refreshCols._.j\n                ]\n              ) {\n                this.refreshCols._.layoutTotalCols[this.refreshCols._.i]++;\n              }\n            }\n          }\n\n          this.refreshCols._.highestTotalCols = Math.max.apply(\n            null,\n            this.refreshCols._.layoutTotalCols\n          );\n\n          // Filter out the ones that aren't using as many columns as they could be\n          for (\n            this.refreshCols._.i = this.layouts.length - 1;\n            this.refreshCols._.i >= 0;\n            this.refreshCols._.i--\n          ) {\n            if (\n              this.refreshCols._.layoutTotalCols[this.refreshCols._.i] !==\n              this.refreshCols._.highestTotalCols\n            ) {\n              this.layouts.splice(this.refreshCols._.i, 1);\n            }\n          }\n\n          // Find the layout(s) with the least overall height\n          this.refreshCols._.layoutHeights = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.layouts.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.layoutHeights.push(\n              Math.max.apply(\n                null,\n                this.layouts[this.refreshCols._.i].colHeights\n              )\n            );\n          }\n\n          this.refreshCols._.shortestHeight = Math.min.apply(\n            null,\n            this.refreshCols._.layoutHeights\n          );\n          this.refreshCols._.shortestLayouts = [];\n          this.refreshCols._.emptySpaces = [];\n\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.refreshCols._.layoutHeights.length;\n            this.refreshCols._.i++\n          ) {\n            if (\n              this.refreshCols._.layoutHeights[this.refreshCols._.i] ===\n              this.refreshCols._.shortestHeight\n            ) {\n              this.refreshCols._.shortestLayouts.push(\n                this.layouts[this.refreshCols._.i]\n              );\n\n              // Now get its total empty space, including any trailing empty space\n              this.refreshCols._.emptySpace =\n                this.layouts[this.refreshCols._.i].emptySpace;\n\n              for (\n                this.refreshCols._.j = 0;\n                this.refreshCols._.j < this.totalCols;\n                this.refreshCols._.j++\n              ) {\n                this.refreshCols._.emptySpace +=\n                  this.refreshCols._.shortestHeight -\n                  this.layouts[this.refreshCols._.i].colHeights[\n                    this.refreshCols._.j\n                  ];\n              }\n\n              this.refreshCols._.emptySpaces.push(\n                this.refreshCols._.emptySpace\n              );\n            }\n          }\n\n          // And the layout with the least empty space is...\n          this.layout =\n            this.refreshCols._.shortestLayouts[\n              $.inArray(\n                Math.min.apply(null, this.refreshCols._.emptySpaces),\n                this.refreshCols._.emptySpaces\n              )\n            ];\n\n          // Set the item widths and left positions\n          for (\n            this.refreshCols._.i = 0;\n            this.refreshCols._.i < this.items.length;\n            this.refreshCols._.i++\n          ) {\n            this.refreshCols._.css = {\n              width: this.getItemWidthCss(\n                this.layout.colspans[this.refreshCols._.i]\n              ),\n            };\n            this.refreshCols._.css[Craft.left] = this.getItemLeftPosCss(\n              this.layout.positions[this.refreshCols._.i]\n            );\n            this.items[this.refreshCols._.i].css(this.refreshCols._.css);\n          }\n\n          // If every item is at position 0, then let them lay out au naturel\n          if (this.isSimpleLayout()) {\n            this.$container.height('auto');\n            this.$items.css({\n              position: 'relative',\n              top: 0,\n              'margin-bottom': this.settings.gutter + 'px',\n            });\n          } else {\n            this.$items.css('position', 'absolute');\n\n            // Now position the items\n            this.positionItems();\n\n            // Update the positions as the items' heights change\n            this.addListener(this.$items, 'resize', 'onItemResize');\n          }\n        }\n      }\n\n      this.completeRefreshCols();\n\n      // Resume container resize listening\n      this.addListener(\n        this.$container,\n        'resize',\n        this.handleContainerHeightProxy\n      );\n\n      this.onRefreshCols();\n    },\n\n    completeRefreshCols: function () {\n      // Delete the internal variable object\n      if (typeof this.refreshCols._ !== 'undefined') {\n        delete this.refreshCols._;\n      }\n\n      this._refreshingCols = false;\n\n      if (this._refreshColsAfterRefresh) {\n        var force = this._forceRefreshColsAfterRefresh;\n        this._refreshColsAfterRefresh = false;\n        this._forceRefreshColsAfterRefresh = false;\n\n        Garnish.requestAnimationFrame(() => {\n          this.refreshCols(force);\n        });\n      }\n    },\n\n    getItemWidth: function (colspan) {\n      return this.colPctWidth * colspan;\n    },\n\n    getItemWidthCss: function (colspan) {\n      return (\n        'calc(' +\n        this.getItemWidth(colspan) +\n        '% - ' +\n        this.colGutterDrop +\n        'px)'\n      );\n    },\n\n    getItemWidthInPx: function (colspan) {\n      return (\n        (this.getItemWidth(colspan) / 100) * this.$container.width() -\n        this.colGutterDrop\n      );\n    },\n\n    getItemLeftPosCss: function (position) {\n      return (\n        'calc(' +\n        '(' +\n        this.getItemWidth(1) +\n        '% + ' +\n        (this.settings.gutter - this.colGutterDrop) +\n        'px) * ' +\n        position +\n        ')'\n      );\n    },\n\n    getItemLeftPosInPx: function (position) {\n      return (\n        ((this.getItemWidth(1) / 100) * this.$container.width() +\n          (this.settings.gutter - this.colGutterDrop)) *\n        position\n      );\n    },\n\n    createLayouts: function (\n      item,\n      prevPositions,\n      prevColspans,\n      prevColHeights,\n      prevEmptySpace\n    ) {\n      new Craft.Grid.LayoutGenerator(this).createLayouts(\n        item,\n        prevPositions,\n        prevColspans,\n        prevColHeights,\n        prevEmptySpace\n      );\n    },\n\n    isSimpleLayout: function () {\n      this.isSimpleLayout._ = {};\n\n      for (\n        this.isSimpleLayout._.i = 0;\n        this.isSimpleLayout._.i < this.layout.positions.length;\n        this.isSimpleLayout._.i++\n      ) {\n        if (this.layout.positions[this.isSimpleLayout._.i] !== 0) {\n          delete this.isSimpleLayout._;\n          return false;\n        }\n      }\n\n      delete this.isSimpleLayout._;\n      return true;\n    },\n\n    positionItems: function () {\n      this.positionItems._ = {};\n\n      this.positionItems._.colHeights = [];\n\n      for (\n        this.positionItems._.i = 0;\n        this.positionItems._.i < this.totalCols;\n        this.positionItems._.i++\n      ) {\n        this.positionItems._.colHeights.push(0);\n      }\n\n      for (\n        this.positionItems._.i = 0;\n        this.positionItems._.i < this.items.length;\n        this.positionItems._.i++\n      ) {\n        this.positionItems._.endingCol =\n          this.layout.positions[this.positionItems._.i] +\n          this.layout.colspans[this.positionItems._.i] -\n          1;\n        this.positionItems._.affectedColHeights = [];\n\n        for (\n          this.positionItems._.col =\n            this.layout.positions[this.positionItems._.i];\n          this.positionItems._.col <= this.positionItems._.endingCol;\n          this.positionItems._.col++\n        ) {\n          this.positionItems._.affectedColHeights.push(\n            this.positionItems._.colHeights[this.positionItems._.col]\n          );\n        }\n\n        this.positionItems._.top = Math.max.apply(\n          null,\n          this.positionItems._.affectedColHeights\n        );\n        if (this.positionItems._.top > 0) {\n          this.positionItems._.top += this.settings.gutter;\n        }\n\n        this.items[this.positionItems._.i].css('top', this.positionItems._.top);\n\n        // Now add the new heights to those columns\n        for (\n          this.positionItems._.col =\n            this.layout.positions[this.positionItems._.i];\n          this.positionItems._.col <= this.positionItems._.endingCol;\n          this.positionItems._.col++\n        ) {\n          this.positionItems._.colHeights[this.positionItems._.col] =\n            this.positionItems._.top +\n            this.itemHeightsByColspan[this.positionItems._.i][\n              this.layout.colspans[this.positionItems._.i]\n            ];\n        }\n      }\n\n      // Set the container height\n      this.$container.height(\n        Math.max.apply(null, this.positionItems._.colHeights)\n      );\n\n      delete this.positionItems._;\n    },\n\n    onItemResize: function (ev) {\n      this.onItemResize._ = {};\n\n      // Prevent this from bubbling up to the container, which has its own resize listener\n      ev.stopPropagation();\n\n      this.onItemResize._.item = $.inArray(ev.currentTarget, this.$items);\n\n      if (this.onItemResize._.item !== -1) {\n        // Update the height and reposition the items\n        this.onItemResize._.newHeight =\n          this.items[this.onItemResize._.item].outerHeight();\n\n        if (\n          this.onItemResize._.newHeight !==\n          this.itemHeightsByColspan[this.onItemResize._.item][\n            this.layout.colspans[this.onItemResize._.item]\n          ]\n        ) {\n          this.itemHeightsByColspan[this.onItemResize._.item][\n            this.layout.colspans[this.onItemResize._.item]\n          ] = this.onItemResize._.newHeight;\n          this.positionItems(false);\n        }\n      }\n\n      delete this.onItemResize._;\n    },\n\n    onRefreshCols: function () {\n      this.trigger('refreshCols');\n      this.settings.onRefreshCols();\n    },\n\n    destroy: function () {\n      this.$container.removeData('grid');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      itemSelector: '.item',\n      cols: null,\n      maxCols: null,\n      minColWidth: 320,\n      gutter: 14,\n      fillMode: 'top',\n      colClass: 'col',\n      snapToGrid: null,\n\n      onRefreshCols: $.noop,\n    },\n  }\n);\n\nCraft.Grid.LayoutGenerator = Garnish.Base.extend({\n  grid: null,\n  _: null,\n\n  init: function (grid) {\n    this.grid = grid;\n  },\n\n  createLayouts: function (\n    item,\n    prevPositions,\n    prevColspans,\n    prevColHeights,\n    prevEmptySpace\n  ) {\n    this._ = {};\n\n    // Loop through all possible colspans\n    for (\n      this._.c = 0;\n      this._.c < this.grid.possibleItemColspans[item].length;\n      this._.c++\n    ) {\n      this._.colspan = this.grid.possibleItemColspans[item][this._.c];\n\n      // Loop through all the possible positions for this colspan,\n      // and find the one that is closest to the top\n\n      this._.tallestColHeightsByPosition = [];\n\n      for (\n        this._.p = 0;\n        this._.p <\n        this.grid.possibleItemPositionsByColspan[item][this._.colspan].length;\n        this._.p++\n      ) {\n        this._.position =\n          this.grid.possibleItemPositionsByColspan[item][this._.colspan][\n            this._.p\n          ];\n\n        this._.colHeightsForPosition = [];\n        this._.endingCol = this._.position + this._.colspan - 1;\n\n        for (\n          this._.col = this._.position;\n          this._.col <= this._.endingCol;\n          this._.col++\n        ) {\n          this._.colHeightsForPosition.push(prevColHeights[this._.col]);\n        }\n\n        this._.tallestColHeightsByPosition[this._.p] = Math.max.apply(\n          null,\n          this._.colHeightsForPosition\n        );\n      }\n\n      // And the shortest position for this colspan is...\n      this._.p = $.inArray(\n        Math.min.apply(null, this._.tallestColHeightsByPosition),\n        this._.tallestColHeightsByPosition\n      );\n      this._.position =\n        this.grid.possibleItemPositionsByColspan[item][this._.colspan][\n          this._.p\n        ];\n\n      // Now log the colspan/position placement\n      this._.positions = prevPositions.slice(0);\n      this._.colspans = prevColspans.slice(0);\n      this._.colHeights = prevColHeights.slice(0);\n      this._.emptySpace = prevEmptySpace;\n\n      this._.positions.push(this._.position);\n      this._.colspans.push(this._.colspan);\n\n      // Add the new heights to those columns\n      this._.tallestColHeight = this._.tallestColHeightsByPosition[this._.p];\n      this._.endingCol = this._.position + this._.colspan - 1;\n\n      for (\n        this._.col = this._.position;\n        this._.col <= this._.endingCol;\n        this._.col++\n      ) {\n        this._.emptySpace +=\n          this._.tallestColHeight - this._.colHeights[this._.col];\n        this._.colHeights[this._.col] =\n          this._.tallestColHeight +\n          this.grid.itemHeightsByColspan[item][this._.colspan];\n      }\n\n      // If this is the last item, create the layout\n      if (item === this.grid.items.length - 1) {\n        this.grid.layouts.push({\n          positions: this._.positions,\n          colspans: this._.colspans,\n          colHeights: this._.colHeights,\n          emptySpace: this._.emptySpace,\n        });\n      } else {\n        // Dive deeper\n        this.grid.createLayouts(\n          item + 1,\n          this._.positions,\n          this._.colspans,\n          this._.colHeights,\n          this._.emptySpace\n        );\n      }\n    }\n\n    delete this._;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.HandleGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    var handle = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Remove inner-word punctuation\n    handle = handle.replace(/['\"‘’“”\\[\\]\\(\\)\\{\\}:]/g, '');\n\n    // Make it lowercase\n    handle = handle.toLowerCase();\n\n    // Convert extended ASCII characters to basic ASCII\n    handle = Craft.asciiString(handle);\n\n    if (!this.settings.allowNonAlphaStart) {\n      // Handle must start with a letter\n      handle = handle.replace(/^[^a-z]+/, '');\n    }\n\n    // Get the \"words\"\n    var words = Craft.filterArray(handle.split(/[^a-z0-9]+/));\n    handle = '';\n\n    if (Craft.handleCasing === 'snake') {\n      return words.join('_');\n    }\n\n    // Make it camelCase\n    for (let i = 0; i < words.length; i++) {\n      if (Craft.handleCasing !== 'pascal' && i === 0) {\n        handle += words[i];\n      } else {\n        handle += words[i].charAt(0).toUpperCase() + words[i].substring(1);\n      }\n    }\n\n    return handle;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Icon Picker\n */\nCraft.IconPicker = Craft.BaseInputGenerator.extend({\n  $container: null,\n  $preview: null,\n  $chooseBtn: null,\n  $removeBtn: null,\n  $input: null,\n\n  modal: null,\n  cancelToken: null,\n  $searchInput: null,\n  $iconListContainer: null,\n  $iconList: null,\n  defaultListHtml: null,\n\n  init(container) {\n    this.$container = $(container);\n    this.$preview = this.$container.children('.icon-picker--icon');\n    this.$chooseBtn = this.$container.children('.icon-picker--choose-btn');\n    this.$removeBtn = this.$container.children('.icon-picker--remove-btn');\n    this.$input = this.$container.children('input');\n\n    this.addListener(this.$chooseBtn, 'activate', () => {\n      this.showModal();\n    });\n\n    this.addListener(this.$removeBtn, 'activate', () => {\n      this.removeIcon();\n    });\n  },\n\n  showModal() {\n    if (!this.modal) {\n      this.createModal();\n    } else {\n      this.modal.show();\n    }\n  },\n\n  createModal() {\n    const $container = $('<div class=\"modal icon-picker-modal\"/>');\n    const $body = $('<div class=\"body\"/>').appendTo($container);\n\n    const $searchContainer = $('<div class=\"texticon\"/>').appendTo($body);\n    $('<span class=\"texticon-icon search icon\" aria-hidden=\"true\"/>').appendTo(\n      $searchContainer\n    );\n    this.$searchInput = Craft.ui\n      .createTextInput({\n        name: 'search',\n        class: 'clearable',\n        placeholder: Craft.t('app', 'Search'),\n      })\n      .attr('aria-label', Craft.t('app', 'Search'))\n      .appendTo($searchContainer);\n    const $clearBtn = $('<button/>', {\n      class: 'clear-btn hidden',\n      title: Craft.t('app', 'Clear search'),\n      'aria-label': Craft.t('app', 'Clear search'),\n    }).appendTo($searchContainer);\n\n    this.$iconListContainer = $(\n      '<div class=\"icon-picker-modal--list\"/>'\n    ).appendTo($body);\n    this.$iconList = $('<ul tabindex=\"-1\"/>').appendTo(this.$iconListContainer);\n    const $spinner = $('<div class=\"spinner spinner-absolute\"/>').appendTo(\n      this.$iconListContainer\n    );\n    $('<span class=\"visually-hidden\"/>')\n      .text(Craft.t('app', 'Loading'))\n      .appendTo($spinner);\n\n    const formObserver = new Craft.FormObserver($searchContainer, () => {\n      this.updateIcons();\n    });\n\n    this.addListener(this.$searchInput, 'input,change', () => {\n      if (this.$searchInput.val()) {\n        $clearBtn.removeClass('hidden');\n      } else {\n        $clearBtn.addClass('hidden');\n      }\n    });\n\n    this.addListener($clearBtn, 'activate', () => {\n      this.$searchInput.val('').trigger('change');\n      formObserver.checkForm();\n    });\n\n    this.addListener(this.$iconList, 'click', (ev) => {\n      let $button;\n      if (ev.target.nodeName === 'BUTTON') {\n        $button = $(ev.target);\n      } else {\n        $button = $(ev.target).closest('button');\n        if (!$button.length) {\n          return;\n        }\n      }\n\n      this.selectIcon($button);\n    });\n\n    this.modal = new Garnish.Modal($container);\n    this.updateIcons();\n  },\n\n  async updateIcons() {\n    const listHtml = await this.loadIcons();\n    this.$iconList.html(listHtml);\n  },\n\n  async loadIcons() {\n    if (this.cancelToken) {\n      this.cancelToken.cancel();\n    }\n\n    const search = this.$searchInput.val();\n    if (search === '' && this.defaultListHtml !== null) {\n      return this.defaultListHtml;\n    }\n\n    this.$iconListContainer.addClass('loading');\n    this.cancelToken = axios.CancelToken.source();\n\n    try {\n      const response = await Craft.sendActionRequest(\n        'POST',\n        'app/icon-picker-options',\n        {\n          data: {search},\n          cancelToken: this.cancelToken.token,\n        }\n      );\n      const listHtml = response.data.listHtml;\n      if (search === '') {\n        // save the results for later\n        this.defaultListHtml = listHtml;\n      }\n      return listHtml;\n    } finally {\n      this.$iconListContainer.removeClass('loading');\n      this.cancelToken = null;\n    }\n  },\n\n  selectIcon($button) {\n    this.modal.hide();\n    const name = $button.attr('title');\n    this.$preview\n      .html($button.html())\n      .attr('title', name)\n      .attr('aria-label', name);\n    this.$input.val(name);\n    this.$chooseBtn.children('.label').text(Craft.t('app', 'Change'));\n    this.$chooseBtn.trigger('focus');\n    this.$removeBtn.removeClass('hidden');\n  },\n\n  removeIcon() {\n    this.$preview.html('').removeAttr('title').removeAttr('aria-label');\n    this.$input.val('');\n    this.$chooseBtn.children('.label').text(Craft.t('app', 'Choose'));\n    this.$removeBtn.addClass('hidden');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Image upload class for user photos, site icon and logo.\n */\nCraft.ImageUpload = Garnish.Base.extend(\n  {\n    $container: null,\n    progressBar: null,\n    uploader: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.ImageUpload.defaults);\n      this.$container = $(this.settings.containerSelector);\n      this.initImageUpload();\n    },\n\n    initImageUpload: function () {\n      this.progressBar = new Craft.ProgressBar(\n        $('<div class=\"progress-shade\"></div>').appendTo(this.$container)\n      );\n\n      var options = {\n        url: Craft.getActionUrl(this.settings.uploadAction),\n        formData: this.settings.postParameters,\n        fileInput: this.$container.find(this.settings.fileInputSelector),\n        paramName: this.settings.uploadParamName,\n      };\n\n      // If CSRF protection isn't enabled, these won't be defined.\n      if (\n        typeof Craft.csrfTokenName !== 'undefined' &&\n        typeof Craft.csrfTokenValue !== 'undefined'\n      ) {\n        // Add the CSRF token\n        options.formData[Craft.csrfTokenName] = Craft.csrfTokenValue;\n      }\n\n      options.events = {};\n      options.events.fileuploadstart = this._onUploadStart.bind(this);\n      options.events.fileuploadprogressall = this._onUploadProgress.bind(this);\n      options.events.fileuploaddone = this._onUploadComplete.bind(this);\n      options.events.fileuploadfail = this._onUploadFailure.bind(this);\n\n      this.uploader = Craft.createUploader(null, this.$container, options);\n\n      this.initButtons();\n    },\n\n    initButtons: function () {\n      this.$container\n        .find(this.settings.uploadButtonSelector)\n        .on('click', (ev) => {\n          this.$container\n            .find(this.settings.fileInputSelector)\n            .trigger('click');\n        });\n\n      this.$container\n        .find(this.settings.deleteButtonSelector)\n        .on('click', (ev) => {\n          if (\n            confirm(\n              Craft.t('app', 'Are you sure you want to delete this image?')\n            )\n          ) {\n            $(ev.currentTarget)\n              .parent()\n              .append('<div class=\"blocking-modal\"></div>');\n\n            Craft.sendActionRequest('POST', this.settings.deleteAction, {\n              data: this.settings.postParameters,\n            }).then(({data}) => {\n              this.refreshImage(data);\n            });\n          }\n        });\n    },\n\n    refreshImage: function (response) {\n      this.$container.replaceWith((this.$container = $(response.html)));\n      this.settings.onAfterRefreshImage(response);\n      Craft.cp.elementThumbLoader.load(this.$container);\n      this.initImageUpload();\n    },\n\n    /**\n     * On upload start.\n     */\n    _onUploadStart: function (event) {\n      this.progressBar.$progressBar.css({\n        top: Math.round(this.$container.outerHeight() / 2) - 6,\n      });\n\n      this.$container.addClass('uploading');\n      this.progressBar.resetProgressBar();\n      this.progressBar.showProgressBar();\n    },\n\n    /**\n     * On upload progress.\n     */\n    _onUploadProgress: function (event, data = null) {\n      var progress = parseInt((data.loaded / data.total) * 100, 10);\n      this.progressBar.setProgressPercentage(progress);\n    },\n\n    /**\n     * On a file being uploaded.\n     */\n    _onUploadComplete: function (event, data = null) {\n      this.refreshImage(data.result);\n\n      // Last file\n      if (this.uploader.isLastUpload()) {\n        this.progressBar.hideProgressBar();\n        this.$container.removeClass('uploading');\n      }\n    },\n\n    /**\n     * On Upload Failure.\n     */\n    _onUploadFailure: function (event, data = null) {\n      const response = data.response();\n      let {\n        message,\n        filename,\n        errors = {},\n      } = response?.jqXHR?.responseJSON || {};\n      filename = filename || data?.files?.[0].name;\n      let errorMessages = errors ? Object.values(errors).flat() : [];\n\n      if (!message) {\n        if (errorMessages.length) {\n          message = errorMessages.join('\\n');\n        } else if (filename) {\n          message = Craft.t('app', 'Upload failed for “{filename}”.', {\n            filename,\n          });\n        } else {\n          message = Craft.t('app', 'Upload failed.');\n        }\n      }\n\n      Craft.cp.displayError(message);\n      this.progressBar.hideProgressBar();\n      this.$container.removeClass('uploading');\n    },\n  },\n  {\n    defaults: {\n      postParameters: {},\n      uploadAction: '',\n      deleteAction: '',\n      fileInputSelector: '',\n\n      onAfterRefreshImage: $.noop,\n      containerSelector: null,\n\n      uploadButtonSelector: null,\n      deleteButtonSelector: null,\n\n      uploadParamName: 'files',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Info icon class\n */\nCraft.InfoIcon = Garnish.Base.extend({\n  $container: null,\n  $icon: null,\n  $liveRegion: null,\n  content: null,\n  hud: null,\n\n  init: function (icon) {\n    this.$icon = $(icon);\n    this.$liveRegion = $('<span/>', {\n      role: 'status',\n      class: 'visually-hidden',\n    });\n\n    if (this.$icon.data('infoicon')) {\n      console.warn('Double-instantiating an info icon on an element');\n      this.content = this.$icon.data('infoicon').content;\n      this.$icon.data('infoicon').destroy();\n    } else {\n      this.content = this.$icon.html();\n      this.$icon\n        .html('')\n        .attr({\n          tabindex: 0,\n          role: 'button',\n          type: 'button',\n          'aria-label': Craft.t('app', 'More info'),\n        })\n        .wrap(\n          $('<span/>', {\n            class: 'infoicon-container',\n          })\n        );\n\n      this.$container = this.$icon.parent();\n      this.$container.append(this.$liveRegion);\n    }\n\n    this.$icon.data('infoicon', this);\n\n    if (\n      this.$icon[0].previousSibling &&\n      this.$icon[0].previousSibling.nodeType === Node.TEXT_NODE\n    ) {\n      // Make sure it's in a .nowrap container\n      const $parent = this.$icon.parent();\n      if (!$parent.hasClass('nowrap')) {\n        // Find the last word in the text\n        const m = this.$icon[0].previousSibling.nodeValue.match(/[^\\s\\-]+\\s*$/);\n        if (m) {\n          this.$icon[0].previousSibling.nodeValue =\n            this.$icon[0].previousSibling.nodeValue.substring(0, m.index);\n          $('<span/>', {\n            class: 'nowrap',\n            html: m[0].replace(/\\s+$/, '') + ' ',\n          })\n            .insertAfter(this.$icon[0].previousSibling)\n            .append(this.$icon);\n        }\n      }\n    }\n\n    this.addListener(this.$icon, 'click', (ev) => {\n      ev.preventDefault();\n      ev.stopPropagation();\n      this.showHud();\n    });\n\n    this.addListener(this.$icon, 'keydown', (ev) => {\n      if (\n        !(this.hud && this.hud.showing) &&\n        [Garnish.SPACE_KEY, Garnish.RETURN_KEY].includes(ev.keyCode)\n      ) {\n        ev.preventDefault();\n        ev.stopPropagation();\n        this.showHud();\n      }\n    });\n  },\n\n  showHud: function (ev) {\n    if (!this.hud) {\n      this.hud = new Garnish.HUD(this.$icon, this.content, {\n        hudClass: 'hud info-hud',\n        closeOtherHUDs: false,\n        onShow: () => {\n          Garnish.uiLayerManager.registerShortcut(Garnish.SPACE_KEY, () => {\n            this.hud.hide();\n          });\n\n          this.$liveRegion.html('');\n\n          setTimeout(() => {\n            this.$liveRegion.html(this.content);\n          }, 200);\n        },\n        onHide: () => {\n          this.$liveRegion.html('');\n        },\n      });\n      Craft.initUiElements(this.hud.$body);\n    } else {\n      this.hud.show();\n    }\n  },\n\n  destroy: function () {\n    this.$icon.removeData('infoicon');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Light Switch\n */\nCraft.LightSwitch = Garnish.Base.extend(\n  {\n    settings: null,\n    $outerContainer: null,\n    $innerContainer: null,\n    $input: null,\n    small: false,\n    on: false,\n    indeterminate: false,\n    dragger: null,\n\n    dragStartMargin: null,\n\n    init: function (outerContainer, settings) {\n      this.$outerContainer = $(outerContainer);\n\n      // Is this already a lightswitch?\n      if (this.$outerContainer.data('lightswitch')) {\n        console.warn('Double-instantiating a lightswitch on an element');\n        this.$outerContainer.data('lightswitch').destroy();\n      }\n\n      this.$outerContainer.data('lightswitch', this);\n\n      this.small = this.$outerContainer.hasClass('small');\n\n      this.setSettings(settings, Craft.LightSwitch.defaults);\n\n      this.$innerContainer = this.$outerContainer.find(\n        '.lightswitch-container:first'\n      );\n      this.$input = this.$outerContainer.find('input:first');\n\n      // If the input is disabled, go no further\n      if (this.$input.prop('disabled')) {\n        return;\n      }\n\n      this.on = this.$outerContainer.hasClass('on');\n      this.indeterminate = this.$outerContainer.hasClass('indeterminate');\n\n      this.addListener(this.$outerContainer, 'mousedown', '_onMouseDown');\n      this.addListener(this.$outerContainer, 'keydown', '_onKeyDown');\n\n      this.dragger = new Garnish.BaseDrag(this.$outerContainer, {\n        axis: Garnish.X_AXIS,\n        ignoreHandleSelector: null,\n        onDragStart: this._onDragStart.bind(this),\n        onDrag: this._onDrag.bind(this),\n        onDragStop: this._onDragStop.bind(this),\n      });\n\n      // Does the input have on/off labels?\n      let $wrapper = this.$outerContainer.parent(\n        '.lightswitch-inner-container'\n      );\n      if ($wrapper.length) {\n        this.addListener(\n          $wrapper.children('span[data-toggle=\"off\"]'),\n          'click',\n          this.turnOff\n        );\n        this.addListener(\n          $wrapper.children('span[data-toggle=\"on\"]'),\n          'click',\n          this.turnOn\n        );\n      }\n    },\n\n    turnOn: function (muteEvent) {\n      var changed = !this.on;\n\n      this.on = true;\n      this.indeterminate = false;\n\n      this.$outerContainer.addClass('dragging');\n\n      if (Garnish.prefersReducedMotion()) {\n        this.$innerContainer.css('margin-' + Craft.left, 0);\n      } else {\n        var animateCss = {};\n        animateCss['margin-' + Craft.left] = 0;\n        this.$innerContainer\n          .velocity('stop')\n          .velocity(\n            animateCss,\n            Craft.LightSwitch.animationDuration,\n            this._onSettle.bind(this)\n          );\n      }\n\n      this.$input.val(this.settings.value);\n      this.$outerContainer.addClass('on');\n      this.$outerContainer.removeClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'true');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    turnOff: function (muteEvent) {\n      var changed = this.on || this.indeterminate;\n\n      this.on = false;\n      this.indeterminate = false;\n\n      this.$outerContainer.addClass('dragging');\n\n      if (Garnish.prefersReducedMotion()) {\n        this.$innerContainer.css('margin-' + Craft.left, this._getOffMargin());\n      } else {\n        var animateCss = {};\n        animateCss['margin-' + Craft.left] = this._getOffMargin();\n        this.$innerContainer\n          .velocity('stop')\n          .velocity(\n            animateCss,\n            Craft.LightSwitch.animationDuration,\n            this._onSettle.bind(this)\n          );\n      }\n\n      this.$input.val('');\n      this.$outerContainer.removeClass('on');\n      this.$outerContainer.removeClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'false');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    turnIndeterminate: function (muteEvent) {\n      var changed = !this.indeterminate;\n\n      this.on = false;\n      this.indeterminate = true;\n\n      this.$outerContainer.addClass('dragging');\n      var animateCss = {};\n      animateCss['margin-' + Craft.left] = this._getOffMargin() / 2;\n      this.$innerContainer\n        .velocity('stop')\n        .velocity(\n          animateCss,\n          Craft.LightSwitch.animationDuration,\n          this._onSettle.bind(this)\n        );\n\n      this.$input.val(this.settings.indeterminateValue);\n      this.$outerContainer.removeClass('on');\n      this.$outerContainer.addClass('indeterminate');\n      this.$outerContainer.attr('aria-checked', 'mixed');\n\n      if (changed && muteEvent !== true) {\n        this.onChange();\n      }\n    },\n\n    toggle: function () {\n      if (this.indeterminate || !this.on) {\n        this.turnOn();\n      } else {\n        this.turnOff();\n      }\n    },\n\n    onChange: function () {\n      this.trigger('change');\n      this.settings.onChange(this.on);\n      this.$outerContainer.trigger('change');\n    },\n\n    _onMouseDown: function () {\n      this.addListener(Garnish.$doc, 'mouseup', '_onMouseUp');\n    },\n\n    _onMouseUp: function () {\n      this.removeListener(Garnish.$doc, 'mouseup');\n\n      // Was this a click?\n      if (!this.dragger.dragging) {\n        this.toggle();\n      }\n    },\n\n    _onKeyDown: function (event) {\n      switch (event.keyCode) {\n        case Garnish.SPACE_KEY: {\n          this.toggle();\n          event.preventDefault();\n          break;\n        }\n        case Garnish.RIGHT_KEY: {\n          if (Craft.orientation === 'ltr') {\n            this.turnOn();\n          } else {\n            this.turnOff();\n          }\n\n          event.preventDefault();\n          break;\n        }\n        case Garnish.LEFT_KEY: {\n          if (Craft.orientation === 'ltr') {\n            this.turnOff();\n          } else {\n            this.turnOn();\n          }\n\n          event.preventDefault();\n          break;\n        }\n      }\n    },\n\n    _getMargin: function () {\n      return parseInt(this.$innerContainer.css('margin-' + Craft.left));\n    },\n\n    _onDragStart: function () {\n      this.$outerContainer.addClass('dragging');\n      this.dragStartMargin = this._getMargin();\n    },\n\n    _onDrag: function () {\n      var margin;\n\n      if (Craft.orientation === 'ltr') {\n        margin = this.dragStartMargin + this.dragger.mouseDistX;\n      } else {\n        margin = this.dragStartMargin - this.dragger.mouseDistX;\n      }\n\n      if (margin < this._getOffMargin()) {\n        margin = this._getOffMargin();\n      } else if (margin > 0) {\n        margin = 0;\n      }\n\n      this.$innerContainer.css('margin-' + Craft.left, margin);\n    },\n\n    _onDragStop: function () {\n      var margin = this._getMargin();\n\n      if (margin > this._getOffMargin() / 2) {\n        this.turnOn();\n      } else {\n        this.turnOff();\n      }\n    },\n\n    _onSettle: function () {\n      this.$outerContainer.removeClass('dragging');\n    },\n\n    destroy: function () {\n      this.$outerContainer.removeData('lightswitch');\n      this.base();\n      this.dragger.destroy();\n    },\n\n    _getOffMargin: function () {\n      return this.small ? -10 : -12;\n    },\n  },\n  {\n    animationDuration: 100,\n    defaults: {\n      value: '1',\n      indeterminateValue: '-',\n      onChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Listbox\n */\nCraft.Listbox = Garnish.Base.extend(\n  {\n    $container: null,\n    $options: null,\n    $selectedOption: null,\n    selectedOptionIndex: null,\n\n    init: function (container, settings) {\n      this.$container = $(container);\n      this.setSettings(settings, Craft.Listbox.defaults);\n\n      // Is this already a listbox?\n      if (this.$container.data('listbox')) {\n        console.warn('Double-instantiating a listbox on an element');\n        this.$container.data('listbox').destroy();\n      }\n\n      this.$container.data('listbox', this);\n      // todo: drop [role=option] in Craft 5\n      this.$options = this.$container.find('button,[role=option]');\n\n      // is there already a selected option?\n      // todo: drop [aria-selected=true] & attr normalization in Craft 5\n      this.$selectedOption = this.$options\n        .filter('[aria-pressed=true],[aria-selected=true]')\n        .removeAttr('aria-selected')\n        .attr('aria-pressed', 'true');\n      if (this.$selectedOption.length) {\n        this.selectedOptionIndex = this.$options.index(this.$selectedOption);\n      } else {\n        this.$selectedOption = null;\n      }\n\n      this.addListener(this.$options, 'click', (ev) => {\n        this.select(this.$options.index($(ev.currentTarget)));\n        ev.preventDefault();\n      });\n    },\n\n    select: function (index) {\n      if (\n        index < 0 ||\n        index >= this.$options.length ||\n        index === this.selectedOptionIndex\n      ) {\n        return;\n      }\n\n      if (this.$selectedOption) {\n        this.$selectedOption\n          .removeClass(this.settings.selectedClass)\n          .attr('aria-pressed', 'false');\n      }\n\n      this.$selectedOption = this.$options\n        .eq(index)\n        .addClass(this.settings.selectedClass)\n        .attr('aria-pressed', 'true');\n\n      this.selectedOptionIndex = index;\n\n      this.settings.onChange(this.$selectedOption, index);\n      this.trigger('change', {\n        $selectedOption: this.$selectedOption,\n        selectedOptionIndex: index,\n      });\n    },\n\n    disable: function () {\n      this.base();\n      this.$container.attr('aria-disabled', 'true');\n    },\n\n    enable: function () {\n      this.base();\n      this.$container.removeAttr('aria-disabled');\n    },\n\n    destroy: function () {\n      this.$container.removeData('listbox');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      selectedClass: 'active',\n      focusClass: 'focus',\n      onChange: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Live Preview\n */\nCraft.LivePreview = Garnish.Base.extend(\n  {\n    $extraFields: null,\n    $trigger: null,\n    $shade: null,\n    $editorContainer: null,\n    $editor: null,\n    $dragHandle: null,\n    $previewContainer: null,\n    $iframeContainer: null,\n    $iframe: null,\n    $fieldPlaceholder: null,\n\n    previewUrl: null,\n    token: null,\n    basePostData: null,\n    inPreviewMode: false,\n    fields: null,\n    lastPostData: null,\n    updateIframeInterval: null,\n    loading: false,\n    checkAgain: false,\n\n    dragger: null,\n    dragStartEditorWidth: null,\n\n    _slideInOnIframeLoad: false,\n\n    _scrollX: null,\n    _scrollY: null,\n\n    _editorWidth: null,\n    _editorWidthInPx: null,\n\n    init: function (settings) {\n      this.setSettings(settings, Craft.LivePreview.defaults);\n\n      // Should preview requests use a specific URL?\n      // This won't affect how the request gets routed (the action param will override it),\n      // but it will allow the templates to change behavior based on the request URI.\n      if (this.settings.previewUrl) {\n        this.previewUrl = this.settings.previewUrl;\n      } else {\n        this.previewUrl = Craft.baseSiteUrl.replace(/\\/+$/, '') + '/';\n      }\n\n      // Load the preview over SSL if the current request is\n      if (document.location.protocol === 'https:') {\n        this.previewUrl = this.previewUrl.replace(/^http:/, 'https:');\n      }\n\n      // Set the base post data\n      this.basePostData = $.extend({}, this.settings.previewParams);\n\n      // Find the DOM elements\n      this.$extraFields = $(this.settings.extraFields);\n      this.$trigger = $(this.settings.trigger);\n      this.$fieldPlaceholder = $('<div/>');\n\n      // Set the initial editor width\n      this.editorWidth = Craft.getLocalStorage(\n        'LivePreview.editorWidth',\n        Craft.LivePreview.defaultEditorWidth\n      );\n\n      // Event Listeners\n      this.addListener(this.$trigger, 'activate', 'toggle');\n\n      Craft.cp.on('beforeSaveShortcut', () => {\n        if (this.inPreviewMode) {\n          this.moveFieldsBack();\n        }\n      });\n\n      Craft.Preview.instances.push(this);\n    },\n\n    get editorWidth() {\n      return this._editorWidth;\n    },\n\n    get editorWidthInPx() {\n      return this._editorWidthInPx;\n    },\n\n    set editorWidth(width) {\n      var inPx;\n\n      // Is this getting set in pixels?\n      if (width >= 1) {\n        inPx = width;\n        width /= Garnish.$win.width();\n      } else {\n        inPx = Math.round(width * Garnish.$win.width());\n      }\n\n      // Make sure it's no less than the minimum\n      if (inPx < Craft.LivePreview.minEditorWidthInPx) {\n        inPx = Craft.LivePreview.minEditorWidthInPx;\n        width = inPx / Garnish.$win.width();\n      }\n\n      this._editorWidth = width;\n      this._editorWidthInPx = inPx;\n    },\n\n    toggle: function () {\n      if (this.inPreviewMode) {\n        this.exit();\n      } else {\n        this.enter();\n      }\n    },\n\n    enter: function () {\n      if (this.inPreviewMode) {\n        return;\n      }\n\n      if (!this.token) {\n        this.createToken();\n        return;\n      }\n\n      this.trigger('beforeEnter');\n      this.trigger('beforeOpen');\n\n      $(document.activeElement).trigger('blur');\n\n      if (!this.$editor) {\n        this.$shade = $('<div/>', {class: 'modal-shade dark'}).appendTo(\n          Garnish.$bod\n        );\n        this.$previewContainer = $('<div/>', {\n          class: 'lp-preview-container',\n        }).appendTo(Garnish.$bod);\n        this.$iframeContainer = $('<div/>', {\n          class: 'lp-iframe-container',\n        }).appendTo(this.$previewContainer);\n        this.$editorContainer = $('<div/>', {\n          class: 'lp-editor-container',\n        }).appendTo(Garnish.$bod);\n\n        var $editorHeader = $('<header/>', {class: 'flex'}).appendTo(\n          this.$editorContainer\n        );\n        this.$editor = $('<form/>', {class: 'lp-editor'}).appendTo(\n          this.$editorContainer\n        );\n        this.$dragHandle = $('<div/>', {class: 'lp-draghandle'}).appendTo(\n          this.$editorContainer\n        );\n        var $closeBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Close Preview'),\n        }).appendTo($editorHeader);\n        $('<div/>', {class: 'flex-grow'}).appendTo($editorHeader);\n        let $saveBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn submit',\n          text: Craft.t('app', 'Save'),\n        }).appendTo($editorHeader);\n\n        this.dragger = new Garnish.BaseDrag(this.$dragHandle, {\n          axis: Garnish.X_AXIS,\n          onDragStart: this._onDragStart.bind(this),\n          onDrag: this._onDrag.bind(this),\n          onDragStop: this._onDragStop.bind(this),\n        });\n\n        this.addListener($closeBtn, 'click', 'exit');\n        this.addListener($saveBtn, 'click', 'save');\n      }\n\n      // Set the sizes\n      this.handleWindowResize();\n      this.addListener(Garnish.$win, 'resize', 'handleWindowResize');\n\n      this.$editorContainer.css(Craft.left, -this.editorWidthInPx + 'px');\n      this.$previewContainer.css(Craft.right, -this.getIframeWidth());\n\n      // Move all the fields into the editor rather than copying them\n      // so any JS that's referencing the elements won't break.\n      this.fields = [];\n      var $fields = $(this.settings.fields);\n\n      for (var i = 0; i < $fields.length; i++) {\n        var $field = $($fields[i]),\n          $clone = this._getClone($field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter($field);\n        $field.detach();\n        this.$fieldPlaceholder.replaceWith($clone);\n        $field.appendTo(this.$editor);\n\n        this.fields.push({\n          $field: $field,\n          $clone: $clone,\n        });\n      }\n\n      if (this.updateIframe()) {\n        this._slideInOnIframeLoad = true;\n      } else {\n        this.slideIn();\n      }\n\n      Craft.ElementThumbLoader.retryAll();\n\n      Garnish.uiLayerManager.addLayer(this.$sidebar);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.exit();\n      });\n\n      this.inPreviewMode = true;\n      this.trigger('enter');\n      this.trigger('open');\n    },\n\n    createToken: function () {\n      const data = {previewAction: this.settings.previewAction};\n      Craft.sendActionRequest('POST', 'live-preview/create-token', {data}).then(\n        (response) => {\n          this.token = response.data.token;\n          this.enter();\n        }\n      );\n    },\n\n    save: function () {\n      Craft.cp.submitPrimaryForm();\n    },\n\n    handleWindowResize: function () {\n      // Reset the width so the min width is enforced\n      this.editorWidth = this.editorWidth;\n\n      // Update the editor/iframe sizes\n      this.updateWidths();\n    },\n\n    slideIn: function () {\n      $('html').addClass('noscroll');\n      this.$shade.velocity('fadeIn');\n\n      this.$editorContainer\n        .show()\n        .velocity('stop')\n        .animateLeft(0, 'slow', () => {\n          this.trigger('slideIn');\n          Garnish.$win.trigger('resize');\n        });\n\n      this.$previewContainer\n        .show()\n        .velocity('stop')\n        .animateRight(0, 'slow', () => {\n          this.updateIframeInterval = setInterval(\n            this.updateIframe.bind(this),\n            1000\n          );\n        });\n    },\n\n    exit: function () {\n      if (!this.inPreviewMode) {\n        return;\n      }\n\n      this.trigger('beforeExit');\n      this.trigger('beforeClose');\n\n      $('html').removeClass('noscroll');\n\n      this.removeListener(Garnish.$win, 'resize');\n      Garnish.uiLayerManager.removeLayer();\n\n      if (this.updateIframeInterval) {\n        clearInterval(this.updateIframeInterval);\n      }\n\n      this.moveFieldsBack();\n\n      this.$shade.delay(200).velocity('fadeOut');\n\n      this.$editorContainer\n        .velocity('stop')\n        .animateLeft(-this.editorWidthInPx, 'slow', () => {\n          for (var i = 0; i < this.fields.length; i++) {\n            this.fields[i].$newClone.remove();\n          }\n          this.$editorContainer.hide();\n          this.trigger('slideOut');\n        });\n\n      this.$previewContainer\n        .velocity('stop')\n        .animateRight(-this.getIframeWidth(), 'slow', () => {\n          this.$previewContainer.hide();\n        });\n\n      Craft.ElementThumbLoader.retryAll();\n\n      this.inPreviewMode = false;\n      this.trigger('exit');\n      this.trigger('close');\n    },\n\n    moveFieldsBack: function () {\n      for (var i = 0; i < this.fields.length; i++) {\n        var field = this.fields[i];\n        field.$newClone = this._getClone(field.$field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter(field.$field);\n        field.$field.detach();\n        this.$fieldPlaceholder.replaceWith(field.$newClone);\n        field.$clone.replaceWith(field.$field);\n      }\n\n      Garnish.$win.trigger('resize');\n    },\n\n    getIframeWidth: function () {\n      return Garnish.$win.width() - this.editorWidthInPx;\n    },\n\n    updateWidths: function () {\n      this.$editorContainer.css('width', this.editorWidthInPx + 'px');\n      this.$previewContainer.width(this.getIframeWidth());\n    },\n\n    updateIframe: function (force) {\n      if (force) {\n        this.lastPostData = null;\n      }\n\n      if (!this.inPreviewMode) {\n        return false;\n      }\n\n      if (this.loading) {\n        this.checkAgain = true;\n        return false;\n      }\n\n      // Has the post data changed?\n      var postData = $.extend(\n        Garnish.getPostData(this.$editor),\n        Garnish.getPostData(this.$extraFields)\n      );\n\n      if (\n        !this.lastPostData ||\n        !Craft.compare(postData, this.lastPostData, false)\n      ) {\n        this.lastPostData = postData;\n        this.loading = true;\n\n        var $doc = this.$iframe\n          ? $(this.$iframe[0].contentWindow.document)\n          : null;\n\n        this._scrollX = $doc ? $doc.scrollLeft() : 0;\n        this._scrollY = $doc ? $doc.scrollTop() : 0;\n\n        $.ajax({\n          url:\n            this.previewUrl +\n            (this.previewUrl.indexOf('?') !== -1 ? '&' : '?') +\n            Craft.tokenParam +\n            '=' +\n            this.token,\n          method: 'POST',\n          data: $.extend({}, postData, this.basePostData),\n          headers: {\n            'X-Craft-Token': this.token,\n          },\n          xhrFields: {\n            withCredentials: true,\n          },\n          crossDomain: true,\n          success: this.handleSuccess.bind(this),\n          error: this.handleError.bind(this),\n        });\n\n        return true;\n      } else {\n        return false;\n      }\n    },\n\n    forceUpdateIframe: function () {\n      return this.updateIframe(true);\n    },\n\n    handleSuccess: function (data) {\n      var html =\n        data +\n        '<script type=\"text/javascript\">window.scrollTo(' +\n        this._scrollX +\n        ', ' +\n        this._scrollY +\n        ');</script>';\n\n      // Create a new iframe\n      var $iframe = $('<iframe class=\"lp-preview\" frameborder=\"0\"/>');\n      if (this.$iframe) {\n        $iframe.insertBefore(this.$iframe);\n      } else {\n        $iframe.appendTo(this.$iframeContainer);\n      }\n\n      this.addListener($iframe, 'load', function () {\n        if (this.$iframe) {\n          this.$iframe.remove();\n        }\n        this.$iframe = $iframe;\n\n        if (this._slideInOnIframeLoad) {\n          this.slideIn();\n          this._slideInOnIframeLoad = false;\n        }\n\n        this.removeListener($iframe, 'load');\n      });\n\n      Garnish.requestAnimationFrame(() => {\n        $iframe[0].contentWindow.document.open();\n        $iframe[0].contentWindow.document.write(html);\n        $iframe[0].contentWindow.document.close();\n        this.onResponse();\n      });\n    },\n\n    handleError: function () {\n      this.onResponse();\n    },\n\n    onResponse: function () {\n      this.loading = false;\n\n      if (this.checkAgain) {\n        this.checkAgain = false;\n        this.updateIframe();\n      }\n    },\n\n    _getClone: function ($field) {\n      var $clone = $field.clone();\n\n      // clone() won't account for input values that have changed since the original HTML set them\n      Garnish.copyInputValues($field, $clone);\n\n      // Remove any id= attributes\n      $clone.attr('id', '');\n      $clone.find('[id]').attr('id', '');\n\n      return $clone;\n    },\n\n    _onDragStart: function () {\n      this.dragStartEditorWidth = this.editorWidthInPx;\n      this.$previewContainer.addClass('dragging');\n    },\n\n    _onDrag: function () {\n      if (Craft.orientation === 'ltr') {\n        this.editorWidth = this.dragStartEditorWidth + this.dragger.mouseDistX;\n      } else {\n        this.editorWidth = this.dragStartEditorWidth - this.dragger.mouseDistX;\n      }\n\n      this.updateWidths();\n      this.trigger('drag');\n    },\n\n    _onDragStop: function () {\n      this.$previewContainer.removeClass('dragging');\n      Craft.setLocalStorage('LivePreview.editorWidth', this.editorWidth);\n    },\n\n    destroy: function () {\n      Craft.Preview.instances = Craft.Preview.instances.filter(\n        (o) => o !== this\n      );\n      this.base();\n    },\n  },\n  {\n    defaultEditorWidth: 0.33,\n    minEditorWidthInPx: 320,\n    instances: [],\n\n    defaults: {\n      trigger: '.livepreviewbtn',\n      fields: null,\n      extraFields: null,\n      previewUrl: null,\n      previewAction: null,\n      previewParams: {},\n    },\n\n    getActive: function () {\n      for (let preview of Craft.LivePreview.instances) {\n        if (preview.inPreviewMode) {\n          return preview;\n        }\n      }\n    },\n  }\n);\n\nCraft.LivePreview.init = function (settings) {\n  Craft.livePreview = new Craft.LivePreview(settings);\n};\n","/** global: Craft */\n\n/**\n * Nested element manager\n */\nCraft.NestedElementManager = Garnish.Base.extend(\n  {\n    $container: null,\n    elementType: null,\n    $createBtn: null,\n\n    // cards\n    $elements: null,\n    elementSort: null,\n\n    // index\n    elementIndex: null,\n\n    /**\n     * @type {Craft.ElementEditor|null}\n     */\n    elementEditor: null,\n\n    init: function (container, elementType, settings) {\n      this.$container = $(container);\n      this.elementType = elementType;\n      this.setSettings(settings, Craft.NestedElementManager.defaults);\n\n      // Is this already a nested element manager?\n      if (this.$container.data('nestedElementManager')) {\n        console.warn(\n          'Double-instantiating a nested element manager on an element'\n        );\n        this.$container.data('nestedElementManager').destroy();\n      }\n\n      this.$container.data('nestedElementManager', this);\n\n      if (this.settings.mode === 'cards') {\n        if (this.$container.is(':has(.elements)')) {\n          this.initCards();\n        }\n      } else {\n        this.initElementIndex();\n      }\n\n      if (this.settings.canCreate) {\n        this.$createBtn = Craft.ui\n          .createButton({\n            label: this.settings.createButtonLabel,\n            spinner: true,\n          })\n          .addClass('add icon disabled');\n\n        if (this.settings.mode === 'cards') {\n          const $btnContainer = $('<div/>').appendTo(this.$container);\n          this.$createBtn.addClass('dashed').appendTo($btnContainer);\n          this.updateCreateBtn();\n        } else {\n          this.$createBtn.appendTo(this.elementIndex.$toolbar);\n        }\n\n        if (Array.isArray(this.settings.createAttributes)) {\n          const createMenuId = `menu-${Math.floor(Math.random() * 1000000)}`;\n          const $menu = $('<div/>', {\n            id: createMenuId,\n            class: 'menu menu--disclosure',\n          }).insertAfter(this.$createBtn);\n          const $ul = $('<ul/>').appendTo($menu);\n          for (let type of this.settings.createAttributes) {\n            const $li = $('<li/>').appendTo($ul);\n            let buttonHtml = '';\n            if (type.icon) {\n              const $icon = $(`<span class=\"icon\">${type.icon}</span>`);\n              if (type.color) {\n                $icon.addClass(type.color);\n              }\n              buttonHtml += $icon.prop('outerHTML');\n            }\n            buttonHtml += `<span class=\"label\">${type.label}</span>`;\n            const $button = $('<button/>', {\n              type: 'button',\n              class: 'menu-item',\n              html: buttonHtml,\n            }).appendTo($li);\n            this.addListener($button, 'activate', (ev) => {\n              ev.preventDefault();\n              this.$createBtn.data('disclosureMenu').hide();\n              this.createElement(type.attributes);\n            });\n          }\n          this.$createBtn\n            .attr('aria-controls', createMenuId)\n            .attr('data-disclosure-trigger', 'true')\n            .addClass('menubtn')\n            .disclosureMenu();\n        } else {\n          this.addListener(this.$createBtn, 'activate', (ev) => {\n            ev.preventDefault();\n            this.createElement(this.settings.createAttributes);\n          });\n        }\n      }\n\n      setTimeout(() => {\n        this.elementEditor = this.$container\n          .closest('form')\n          .data('elementEditor');\n\n        if (this.elementEditor) {\n          this.elementEditor.on('update', () => {\n            this.settings.ownerId = this.elementEditor.getDraftElementId(\n              this.settings.ownerId\n            );\n\n            if (this.elementIndex) {\n              this.elementIndex.settings.criteria[this.settings.ownerIdParam] =\n                this.settings.ownerId;\n            }\n          });\n        }\n      }, 100);\n    },\n\n    initCards() {\n      this.$elements = this.$container.children('.elements');\n\n      // Was .elements just created?\n      if (!this.$elements.length) {\n        this.$elements = $('<ul/>', {\n          class: `elements ${this.settings.showInGrid ? 'card-grid' : 'cards'}`,\n        }).prependTo(this.$container);\n        this.$container.children('.zilch').addClass('hidden');\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort = new Garnish.DragSort({\n          container: this.$elements,\n          handle:\n            '> .element > .card-actions-container > .card-actions > .move',\n          ignoreHandleSelector: null,\n          collapseDraggees: true,\n          magnetStrength: 4,\n          helperLagBase: 1.5,\n          onSortChange: () => {\n            this.onSortChange(this.elementSort.$draggee);\n          },\n        });\n      }\n\n      for (let element of this.$elements.children().toArray()) {\n        this.initElement($(element).children('.element'));\n      }\n    },\n\n    deinitCards() {\n      if (!this.$elements) {\n        return;\n      }\n\n      this.$elements.remove();\n      this.$elements = null;\n      this.elementSort.destroy();\n      this.elementSort = null;\n      this.$container.children('.zilch').removeClass('hidden');\n    },\n\n    initElementIndex() {\n      this.elementIndex = Craft.createElementIndex(\n        this.elementType,\n        this.$container,\n        Object.assign(\n          {\n            context: 'embedded-index',\n            sortable: this.settings.sortable,\n          },\n          this.settings.indexSettings,\n          {\n            canDuplicateElements: ($selectedItems) => {\n              return this.canCreate($selectedItems.length);\n            },\n            canDeleteElements: ($selectedItems) => {\n              return this.canDelete($selectedItems.length);\n            },\n            onBeforeDuplicateElements: async () => {\n              await this.markAsDirty();\n            },\n            onDuplicateElements: async () => {\n              await this.markAsDirty();\n            },\n            onBeforeDeleteElements: async () => {\n              await this.markAsDirty();\n            },\n            onDeleteElements: async () => {\n              await this.markAsDirty();\n            },\n            onBeforeUpdateElements: () => {\n              if (this.$createBtn) {\n                this.$createBtn.addClass('disabled');\n              }\n            },\n            onCountResults: () => {\n              this.updateCreateBtn();\n            },\n            onSortChange: async ($draggee) => {\n              await this.onSortChange($draggee);\n            },\n          }\n        )\n      );\n    },\n\n    async markAsDirty() {\n      if (this.elementEditor && this.settings.baseInputName) {\n        await this.elementEditor.setFormValue(this.settings.baseInputName, '*');\n      }\n    },\n\n    async getBaseActionData() {\n      // this could end up updating this.settings.ownerId\n      await this.markAsDirty();\n\n      return {\n        ownerElementType: this.settings.ownerElementType,\n        ownerId: this.settings.ownerId,\n        ownerSiteId: this.settings.ownerSiteId,\n        attribute: this.settings.attribute,\n      };\n    },\n\n    async onSortChange($draggee) {\n      const id = parseInt($draggee.find('.element').data('id'));\n      const allIds = this.getElementIds();\n\n      const data = Object.assign(await this.getBaseActionData(), {\n        elementIds: [id],\n        offset: this.getBaseElementOffset() + allIds.indexOf(id),\n      });\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'nested-elements/reorder',\n          {data}\n        );\n        Craft.cp.displayNotice(response.data.message);\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n      }\n\n      await this.markAsDirty();\n    },\n\n    updateCreateBtn() {\n      if (!this.$createBtn) {\n        return;\n      }\n\n      if (this.canCreate()) {\n        this.$createBtn.removeClass('disabled');\n      } else {\n        this.$createBtn.addClass('disabled');\n      }\n    },\n\n    canCreate(num) {\n      if (!this.settings.canCreate) {\n        return false;\n      }\n\n      if (!this.settings.maxElements) {\n        return true;\n      }\n\n      const total = this.getTotalElements();\n\n      return total !== null && total + (num || 1) <= this.settings.maxElements;\n    },\n\n    canDelete(num) {\n      if (!this.settings.minElements) {\n        return true;\n      }\n\n      const total = this.getTotalElements();\n\n      return total !== null && total - (num || 1) >= this.settings.minElements;\n    },\n\n    getElementIds() {\n      let elements;\n\n      if (this.settings.mode === 'cards') {\n        elements = this.$elements.find('> li > .element').toArray();\n      } else {\n        elements = this.elementIndex.view\n          .getAllElements()\n          .toArray()\n          .map((container) => container.querySelector('.element'));\n      }\n\n      return elements\n        .map((element) => element.getAttribute('data-id'))\n        .filter((id) => id)\n        .map((id) => parseInt(id));\n    },\n\n    getTotalElements() {\n      if (this.settings.mode === 'cards') {\n        return this.$elements ? this.$elements.children().length : 0;\n      }\n\n      if (this.elementIndex.isIndexBusy) {\n        return null;\n      }\n      return this.elementIndex.totalUnfilteredResults;\n    },\n\n    getBaseElementOffset() {\n      if (this.settings.mode === 'cards') {\n        return 0;\n      }\n\n      return (\n        this.elementIndex.settings.batchSize * (this.elementIndex.page - 1)\n      );\n    },\n\n    createElement: async function (attributes) {\n      if (this.$createBtn) {\n        this.$createBtn.addClass('loading');\n      }\n\n      try {\n        await this.markAsDirty();\n\n        attributes = Object.assign(\n          {\n            elementType: this.elementType,\n            ownerId: this.settings.ownerId,\n            siteId: this.settings.ownerSiteId,\n          },\n          attributes\n        );\n\n        const {data} = await Craft.sendActionRequest(\n          'POST',\n          'elements/create',\n          {\n            data: attributes,\n          }\n        );\n\n        const slideout = Craft.createElementEditor(this.elementType, {\n          siteId: data.element.siteId,\n          elementId: data.element.id,\n          draftId: data.element.draftId,\n          params: {\n            fresh: 1,\n          },\n        });\n\n        slideout.on('submit', async () => {\n          if (this.settings.mode === 'cards') {\n            this.addElementCard(data.element);\n          } else {\n            this.elementIndex.clearSearch();\n            this.elementIndex.updateElements();\n          }\n\n          await this.markAsDirty();\n        });\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n      } finally {\n        if (this.$createBtn) {\n          this.$createBtn.removeClass('loading');\n        }\n      }\n    },\n\n    initElement($element) {\n      if (Garnish.hasAttr($element, 'data-editable')) {\n        this.addListener($element, 'dblclick,taphold', (ev) => {\n          if ($(ev.target).closest('a[href],button,[role=button]').length) {\n            // Let the link/button do its thing\n            return;\n          }\n          Craft.createElementEditor(this.elementType, $element);\n        });\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.addItems($element.parent());\n      }\n\n      const $actionMenuBtn = $element.find('.action-btn');\n      const disclosureMenu = $actionMenuBtn\n        .disclosureMenu()\n        .data('disclosureMenu');\n\n      if (Garnish.hasAttr($element, 'data-deletable')) {\n        const ul = disclosureMenu.addGroup();\n        disclosureMenu.addItem(\n          {\n            icon: 'trash',\n            label: this.settings.deleteLabel || Craft.t('app', 'Delete'),\n            destructive: true,\n            onActivate: () => {\n              if (confirm(this.settings.deleteConfirmationMessage)) {\n                this.deleteElement($element);\n              }\n            },\n          },\n          ul\n        );\n      }\n    },\n\n    async deleteElement($element) {\n      const data = Object.assign(await this.getBaseActionData(), {\n        elementId: $element.data('id'),\n      });\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'nested-elements/delete',\n          {data}\n        );\n        Craft.cp.displayNotice(response.data.message);\n      } catch (e) {\n        Craft.cp.displayError(e?.response?.data?.message);\n        throw e;\n      }\n\n      if (this.settings.sortable) {\n        this.elementSort.removeItems($element);\n      }\n\n      $element.parent().remove();\n\n      // :empty isn't reliable due to text nodes\n      if (this.$elements.children().length === 0) {\n        this.deinitCards();\n      }\n\n      if (this.$createBtn) {\n        this.updateCreateBtn();\n        if (this.canCreate()) {\n          this.$createBtn.focus();\n        }\n      }\n\n      await this.markAsDirty();\n    },\n\n    addElementCard(element) {\n      if (this.$createBtn) {\n        this.$createBtn.addClass('loading');\n      }\n\n      Craft.sendActionRequest('POST', 'app/render-elements', {\n        data: {\n          elements: [\n            {\n              type: this.elementType,\n              id: element.id,\n              siteId: element.siteId,\n              instances: [\n                {\n                  context: 'field',\n                  ui: 'card',\n                  sortable: this.settings.sortable,\n                  showActionMenu: true,\n                },\n              ],\n            },\n          ],\n        },\n      })\n        .then(async ({data}) => {\n          if (!this.$elements) {\n            this.initCards();\n          }\n\n          const $li = $('<li/>').appendTo(this.$elements);\n          const $element = $(data.elements[element.id][0]).appendTo($li);\n          this.initElement($element);\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n          Craft.cp.elementThumbLoader.load($element);\n          this.updateCreateBtn();\n        })\n        .catch((e) => {\n          Craft.cp.displayError(e?.response?.data?.message);\n          throw e?.response?.data?.message ?? e;\n        })\n        .finally(() => {\n          if (this.$createBtn) {\n            this.$createBtn.removeClass('loading').focus();\n          }\n        });\n    },\n\n    destroy: function () {\n      this.$container.removeData('nestedElementManager');\n      this.base();\n    },\n  },\n  {\n    ownerId: null,\n    defaults: {\n      mode: 'cards',\n      showInGrid: false,\n      ownerElementType: null,\n      ownerId: null,\n      ownerSiteId: null,\n      attribute: null,\n      sortable: false,\n      indexSettings: {},\n      canCreate: false,\n      minElements: null,\n      maxElements: null,\n      createButtonLabel: Craft.t('app', 'Create'),\n      ownerIdParam: null,\n      createAttributes: null,\n      fieldHandle: null,\n      baseInputName: null,\n      deleteLabel: null,\n      deleteConfirmationMessage: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Password Input\n */\nCraft.PasswordInput = Garnish.Base.extend(\n  {\n    $passwordWrapper: null,\n    $passwordInput: null,\n    $textInput: null,\n    $currentInput: null,\n\n    $showPasswordToggle: null,\n    showingPassword: null,\n\n    init: function (passwordInput, settings) {\n      this.$passwordInput = $(passwordInput);\n      this.$passwordWrapper = this.$passwordInput.parent('.passwordwrapper');\n      this.settings = $.extend({}, Craft.PasswordInput.defaults, settings);\n\n      // Is this already a password input?\n      if (this.$passwordInput.data('passwordInput')) {\n        console.warn('Double-instantiating a password input on an element');\n        this.$passwordInput.data('passwordInput').destroy();\n      }\n\n      this.$passwordInput.data('passwordInput', this);\n\n      this.$showPasswordToggle = $(\n        '<button type=\"button\" class=\"invisible\" />'\n      );\n      this.$showPasswordToggle.addClass('password-toggle');\n      this.$showPasswordToggle.insertAfter(this.$passwordInput);\n\n      this.initInputFocusEvents(this.$passwordInput);\n      this.addListener(this.$showPasswordToggle, 'click', 'onClick');\n      this.hidePassword();\n\n      this.addListener(\n        this.$passwordWrapper.closest('form'),\n        'submit',\n        'hidePassword'\n      );\n    },\n\n    setCurrentInput: function ($input) {\n      if (this.$currentInput) {\n        // Swap the inputs, while preventing the focus animation\n        $input.insertAfter(this.$currentInput);\n        this.$currentInput.detach();\n        $input.trigger('focus');\n\n        // Restore the input value\n        $input.val(this.$currentInput.val());\n      }\n\n      this.$currentInput = $input;\n\n      this.addListener(\n        this.$currentInput,\n        'keypress,keyup,change,blur',\n        'onInputChange'\n      );\n    },\n\n    updateToggleLabel: function (label) {\n      this.$showPasswordToggle.text(label);\n    },\n\n    initInputFocusEvents: function ($input) {\n      this.addListener($input, 'focus', function () {\n        this.$passwordWrapper.addClass('focus');\n      });\n      this.addListener($input, 'blur', function () {\n        this.$passwordWrapper.removeClass('focus');\n      });\n    },\n\n    showPassword: function () {\n      if (this.showingPassword) {\n        return;\n      }\n\n      if (!this.$textInput) {\n        this.$textInput = this.$passwordInput.clone(true);\n        this.$textInput.attr({\n          type: 'text',\n          autocapitalize: 'off',\n        });\n        this.initInputFocusEvents(this.$textInput);\n      }\n\n      this.setCurrentInput(this.$textInput);\n      this.updateToggleLabel(Craft.t('app', 'Hide'));\n      this.showingPassword = true;\n    },\n\n    hidePassword: function () {\n      // showingPassword could be null, which is acceptable\n      if (this.showingPassword === false) {\n        return;\n      }\n\n      this.setCurrentInput(this.$passwordInput);\n      this.updateToggleLabel(Craft.t('app', 'Show'));\n      this.showingPassword = false;\n    },\n\n    togglePassword: function () {\n      if (this.showingPassword) {\n        this.hidePassword();\n      } else {\n        this.showPassword();\n      }\n\n      this.settings.onToggleInput(this.$currentInput);\n    },\n\n    onInputChange: function () {\n      if (this.$currentInput.val()) {\n        this.$showPasswordToggle.removeClass('invisible');\n      } else {\n        this.$showPasswordToggle.addClass('invisible');\n      }\n    },\n\n    onClick: function (ev) {\n      if (this.$currentInput[0].setSelectionRange) {\n        var selectionStart = this.$currentInput[0].selectionStart,\n          selectionEnd = this.$currentInput[0].selectionEnd;\n\n        this.togglePassword();\n        this.$currentInput[0].setSelectionRange(selectionStart, selectionEnd);\n      } else {\n        this.togglePassword();\n      }\n    },\n\n    destroy: function () {\n      this.$passwordInput.removeData('passwordInput');\n      this.base();\n    },\n  },\n  {\n    defaults: {\n      onToggleInput: $.noop,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Preview\n */\nCraft.Preview = Garnish.Base.extend(\n  {\n    elementEditor: null,\n    formObserver: null,\n\n    $shade: null,\n    $editorContainer: null,\n    $editor: null,\n    $spinner: null,\n    $statusIcon: null,\n    $dragHandle: null,\n    $previewWrapper: null,\n    $previewContainer: null,\n    $previewSkipLink: null,\n    $bumperLink: null,\n    $notifier: null,\n    $iframeContainer: null,\n    $previewHeader: null,\n    $targetBtn: null,\n    $targetMenu: null,\n    $deviceTypeContainer: null,\n    $orientationBtn: null,\n    $refreshBtn: null,\n    $deviceMask: null,\n    $devicePreviewContainer: null,\n    $iframe: null,\n    iframeLoaded: false,\n    $tempInput: null,\n    $fieldPlaceholder: null,\n\n    isActive: false,\n    isVisible: false,\n    activeTarget: 0,\n\n    animationDuration: 'slow',\n\n    currentDeviceType: 'desktop',\n    deviceOrientation: null,\n    deviceWidth: '',\n    deviceHeight: '',\n    deviceMaskDimensions: {\n      phone: {\n        width: 375,\n        height: 753,\n      },\n      tablet: {\n        width: 768,\n        height: 1110,\n      },\n    },\n\n    draftId: null,\n    url: null,\n    fields: null,\n\n    iframeHeight: null,\n    scrollTop: null,\n    scrollLeft: null,\n\n    dragger: null,\n    dragStartEditorWidth: null,\n\n    _updateIframeProxy: null,\n\n    _editorWidth: null,\n    _editorWidthInPx: null,\n\n    init: function (elementEditor) {\n      this.elementEditor = elementEditor;\n\n      this._updateIframeProxy = this.updateIframe.bind(this);\n\n      this.$tempInput = $('<input/>', {\n        type: 'hidden',\n        name: '__PREVIEW_FIELDS__',\n        value: '1',\n      });\n      this.$fieldPlaceholder = $('<div/>');\n\n      // Set the initial editor width\n      this.editorWidth = Craft.getLocalStorage(\n        'LivePreview.editorWidth',\n        Craft.Preview.defaultEditorWidth\n      );\n\n      Craft.Preview.instances.push(this);\n    },\n\n    get editorWidth() {\n      return this._editorWidth;\n    },\n\n    get editorWidthInPx() {\n      return this._editorWidthInPx;\n    },\n\n    set editorWidth(width) {\n      var inPx;\n\n      // Is this getting set in pixels?\n      if (width >= 1) {\n        inPx = width;\n        width /= Garnish.$win.width();\n      } else {\n        inPx = Math.round(width * Garnish.$win.width());\n      }\n\n      // Make sure it's no less than the minimum\n      if (inPx < Craft.Preview.minEditorWidthInPx) {\n        inPx = Craft.Preview.minEditorWidthInPx;\n        width = inPx / Garnish.$win.width();\n      }\n\n      this._editorWidth = width;\n      this._editorWidthInPx = inPx;\n    },\n\n    open: function () {\n      if (this.isActive) {\n        return;\n      }\n\n      this.isActive = true;\n      this.trigger('beforeOpen');\n\n      $(document.activeElement).trigger('blur');\n\n      if (!this.$editor) {\n        const previewSkipLinkText = Craft.t('app', 'Skip to {title}', {\n          title: Craft.t('app', 'Top of preview'),\n        });\n\n        this.$shade = $('<div/>', {class: 'modal-shade dark'}).appendTo(\n          Garnish.$bod\n        );\n        this.$previewWrapper = $('<div/>', {\n          role: 'dialog',\n          'aria-modal': 'true',\n          'aria-labelledby': 'lp-preview-heading',\n        }).appendTo(Garnish.$bod);\n        this.$modalLabel = $('<h2/>', {\n          id: 'lp-preview-heading',\n          class: 'visually-hidden',\n          html: Craft.t('app', 'Preview'),\n        }).appendTo(this.$previewWrapper);\n        this.$editorContainer = $('<div/>', {\n          class: 'lp-editor-container',\n        }).appendTo(this.$previewWrapper);\n        this.$previewContainer = $('<div/>', {\n          class: 'lp-preview-container',\n          id: 'lp-preview-container',\n        }).appendTo(this.$previewWrapper);\n        this.$notifier = $('<span/>', {\n          class: 'visually-hidden',\n          role: 'status',\n        }).appendTo(this.$previewContainer);\n\n        var $editorHeader = $('<header/>', {class: 'flex'}).appendTo(\n          this.$editorContainer\n        );\n        this.$editor = $('<form/>', {class: 'lp-editor'}).appendTo(\n          this.$editorContainer\n        );\n        this.$dragHandle = $('<div/>', {class: 'lp-draghandle'}).appendTo(\n          this.$editorContainer\n        );\n        var $closeBtn = $('<button/>', {\n          type: 'button',\n          class: 'btn',\n          text: Craft.t('app', 'Close Preview'),\n        }).appendTo($editorHeader);\n        $('<div/>', {class: 'flex-grow'}).appendTo($editorHeader);\n        this.$spinner = $('<div/>', {\n          class: 'spinner hidden',\n          title: Craft.t('app', 'Saving'),\n        }).appendTo($editorHeader);\n        this.$statusIcon = $('<div/>', {class: 'invisible'}).appendTo(\n          $editorHeader\n        );\n        this.$statusMessage = $('<span/>', {\n          class: 'visually-hidden',\n          'aria-live': 'polite',\n        }).appendTo($editorHeader);\n        this.$previewSkipLink = $('<a/>', {\n          class: 'skip-link btn',\n          href: '#lp-preview-container',\n          html: previewSkipLinkText,\n        }).appendTo($editorHeader);\n\n        if (Craft.Pro) {\n          this.$previewHeader = $('<header/>', {\n            class: 'lp-preview-header',\n          }).appendTo(this.$previewContainer);\n\n          // Preview targets\n          if (this.elementEditor.settings.previewTargets.length > 1) {\n            this.$targetBtn = $('<button/>', {\n              type: 'button',\n              class: 'btn menubtn',\n              text: this.elementEditor.settings.previewTargets[0].label,\n            }).appendTo(this.$previewHeader);\n            this.$targetMenu = $('<div/>', {\n              class: 'menu lp-target-menu',\n            }).insertAfter(this.$targetBtn);\n            const $ul = $('<ul/>', {class: 'padded'}).appendTo(\n              this.$targetMenu\n            );\n            let $li, $a;\n            for (\n              let i = 0;\n              i < this.elementEditor.settings.previewTargets.length;\n              i++\n            ) {\n              $li = $('<li/>').appendTo($ul);\n              $a = $('<a/>', {\n                data: {target: i},\n                text: this.elementEditor.settings.previewTargets[i].label,\n                class: i === 0 ? 'sel' : null,\n              }).appendTo($li);\n            }\n            new Garnish.MenuBtn(this.$targetBtn, {\n              onOptionSelect: (option) => {\n                this.switchTarget($(option).data('target'));\n              },\n            });\n\n            $('<div class=\"flex-grow\"/>').appendTo(this.$previewHeader);\n          }\n\n          this._buildDeviceTypeFieldset();\n\n          $('<div class=\"flex-grow\"/>').appendTo(this.$previewHeader);\n          const $buttonContainer = $('<div class=\"buttons\"/>').appendTo(\n            this.$previewHeader\n          );\n\n          // Orientation toggle\n          this.$orientationBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn disabled',\n            'data-icon': 'rotate',\n            'aria-disabled': 'true',\n            text: Craft.t('app', 'Rotate'),\n            'aria-label': Craft.t('app', 'Rotate'),\n          }).appendTo($buttonContainer);\n          this.addListener(this.$orientationBtn, 'click', 'switchOrientation');\n\n          // Refresh button\n          this.$refreshBtn = $('<button/>', {\n            type: 'button',\n            class: 'btn',\n            text: Craft.t('app', 'Refresh'),\n            'data-icon': 'refresh',\n          }).appendTo($buttonContainer);\n          this.addListener(this.$refreshBtn, 'click', () => {\n            this.updateIframe(false, true);\n          });\n\n          // Get the last stored orientation\n          this.deviceOrientation = Craft.getLocalStorage(\n            'LivePreview.orientation'\n          );\n        }\n\n        this.$iframeContainer = $('<div/>', {\n          class: 'lp-iframe-container',\n        }).appendTo(this.$previewContainer);\n        this.$devicePreviewContainer = $('<div/>', {\n          class: 'lp-device-preview-container',\n        }).appendTo(this.$iframeContainer);\n        this.$deviceMask = $('<div/>', {\n          class: 'lp-device-mask',\n        }).appendTo(this.$iframeContainer);\n\n        /* Prevents focus trap bug caused by iframe as last element */\n        this.$bumperLink = $('<a/>', {\n          class: 'skip-link btn lp-preview-container__bumper-link',\n          html: previewSkipLinkText,\n          href: '#lp-preview-container',\n        });\n        this.$bumperLink.appendTo(this.$previewContainer);\n\n        this.dragger = new Garnish.BaseDrag(this.$dragHandle, {\n          axis: Garnish.X_AXIS,\n          onDragStart: this._onDragStart.bind(this),\n          onDrag: this._onDrag.bind(this),\n          onDragStop: this._onDragStop.bind(this),\n        });\n\n        this.addListener($closeBtn, 'click', 'close');\n        this.addListener(this.$statusIcon, 'click', () => {\n          this.elementEditor.showStatusHud(this.$statusIcon);\n        });\n      }\n\n      // Set the sizes\n      this.handleWindowResize();\n      this.addListener(Garnish.$win, 'resize', 'handleWindowResize');\n\n      this.$editorContainer.css(Craft.left, -this.editorWidthInPx + 'px');\n      this.$previewContainer.css(Craft.right, -this.getIframeWidth());\n\n      // Find the fields, excluding nested fields\n      this.fields = [];\n      var $fields = $('#content .field').not($('#content .field .field'));\n\n      if ($fields.length) {\n        // Insert our temporary input before the first field so we know where to swap in the serialized form values\n        this.$tempInput.insertBefore($fields.get(0));\n\n        // Move all the fields into the editor rather than copying them\n        // so any JS that's referencing the elements won't break.\n        for (let i = 0; i < $fields.length; i++) {\n          let $field = $($fields[i]),\n            $clone = this._getClone($field);\n\n          // It's important that the actual field is added to the DOM *after* the clone,\n          // so any radio buttons in the field get deselected from the clone rather than the actual field.\n          this.$fieldPlaceholder.insertAfter($field);\n          $field.detach();\n          this.$fieldPlaceholder.replaceWith($clone);\n          $field.appendTo(this.$editor);\n\n          this.fields.push({\n            $field: $field,\n            $clone: $clone,\n          });\n        }\n      }\n\n      this.updateIframe();\n\n      this.formObserver = new Craft.FormObserver(this.$editor, () => {\n        this.elementEditor.checkForm();\n      });\n      this.elementEditor.on('update', this._updateIframeProxy);\n\n      Craft.ElementThumbLoader.retryAll();\n\n      this.trigger('open');\n    },\n\n    _getDeviceTypeTranslation: function (type) {\n      let translation;\n      switch (type) {\n        case 'phone':\n          translation = Craft.t('app', 'Mobile');\n          break;\n        case 'tablet':\n          translation = Craft.t('app', 'Tablet');\n          break;\n        default:\n          translation = Craft.t('app', 'Desktop');\n          break;\n      }\n      return translation;\n    },\n\n    _getDeviceOrientationTranslation: function (orientation) {\n      return orientation === 'portrait'\n        ? Craft.t('app', 'Portrait')\n        : Craft.t('app', 'Landscape');\n    },\n\n    _buildDeviceTypeFieldset: function () {\n      // Device type buttons\n      this.$deviceTypeContainer = $('<section/>', {\n        class: 'btngroup lp-device-type',\n        'aria-label': Craft.t('app', 'Device type'),\n      }).appendTo(this.$previewHeader);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--desktop active',\n        title: Craft.t('app', 'Desktop'),\n        'aria-label': Craft.t('app', 'Desktop'),\n        'aria-pressed': 'true',\n        data: {\n          width: '',\n          height: '',\n          deviceType: 'desktop',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--tablet',\n        title: Craft.t('app', 'Tablet'),\n        'aria-label': Craft.t('app', 'Tablet'),\n        'aria-pressed': 'false',\n        data: {\n          width: 768,\n          height: 1024,\n          deviceType: 'tablet',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n      $('<button/>', {\n        type: 'button',\n        class: 'btn lp-device-type-btn--phone',\n        title: Craft.t('app', 'Mobile'),\n        'aria-label': Craft.t('app', 'Mobile'),\n        'aria-pressed': 'false',\n        data: {\n          width: 375,\n          height: 667,\n          deviceType: 'phone',\n        },\n      }).appendTo(this.$deviceTypeContainer);\n\n      // Add functionality\n      this.deviceBtnGroup = new Craft.Listbox(this.$deviceTypeContainer, {\n        onChange: ($selectedOption) => {\n          this.switchDeviceType($selectedOption);\n        },\n      });\n    },\n\n    _activeTarget: function () {\n      return this.elementEditor.settings.previewTargets[this.activeTarget];\n    },\n\n    /**\n     * @returns {boolean}\n     * @private\n     */\n    _autoRefresh: function () {\n      const target = this._activeTarget();\n      return typeof typeof target.refresh === 'undefined' || !!target.refresh;\n    },\n\n    switchTarget: function (i) {\n      this.activeTarget = i;\n      this.$targetBtn.text(this.elementEditor.settings.previewTargets[i].label);\n      this.$targetMenu.find('a.sel').removeClass('sel');\n      this.$targetMenu.find('a').eq(i).addClass('sel');\n      this.updateIframe(true);\n      this.trigger('switchTarget', {\n        previewTarget: this.elementEditor.settings.previewTargets[i],\n      });\n    },\n\n    handleWindowResize: function () {\n      // Reset the width so the min width is enforced\n      this.editorWidth = this.editorWidth;\n\n      // Update the editor/iframe sizes\n      this.updateWidths();\n    },\n\n    slideIn: function () {\n      if (!this.isActive || this.isVisible) {\n        return;\n      }\n\n      $('html').addClass('noscroll');\n      this.$shade.velocity('fadeIn');\n\n      this.$editorContainer\n        .show()\n        .velocity('stop')\n        .animateLeft(\n          0,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            this.trigger('slideIn');\n            Garnish.$win.trigger('resize');\n          }\n        );\n\n      this.$previewContainer\n        .show()\n        .velocity('stop')\n        .animateRight(\n          0,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration)\n        );\n\n      this.isVisible = true;\n\n      Garnish.uiLayerManager.addLayer(this.$previewWrapper);\n      Garnish.hideModalBackgroundLayers();\n      Craft.setFocusWithin(this.$previewWrapper);\n      Craft.trapFocusWithin(this.$previewWrapper);\n      Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n        this.close();\n      });\n    },\n\n    close: function () {\n      if (!this.isActive || !this.isVisible) {\n        return;\n      }\n\n      this.trigger('beforeClose');\n\n      $('html').removeClass('noscroll');\n\n      this.removeListener(Garnish.$win, 'resize');\n      Garnish.uiLayerManager.removeLayer();\n      Garnish.resetModalBackgroundLayerVisibility();\n\n      // Remove our temporary input and move the preview fields back into place\n      this.$tempInput.detach();\n      this.moveFieldsBack();\n\n      // Delay shade fade-out when animation is present\n      if (Garnish.prefersReducedMotion()) {\n        this.$shade.velocity('fadeOut');\n      } else {\n        this.$shade.delay(200).velocity('fadeOut');\n      }\n\n      this.$editorContainer\n        .velocity('stop')\n        .animateLeft(\n          -this.editorWidthInPx,\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            for (var i = 0; i < this.fields.length; i++) {\n              this.fields[i].$newClone.remove();\n            }\n            this.$editorContainer.hide();\n            this.trigger('slideOut');\n          }\n        );\n\n      this.$previewContainer\n        .velocity('stop')\n        .animateRight(\n          -this.getIframeWidth(),\n          Garnish.getUserPreferredAnimationDuration(this.animationDuration),\n          () => {\n            this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n            this.$previewContainer.hide();\n          }\n        );\n\n      this.formObserver.destroy();\n      this.formObserver = null;\n      this.elementEditor.off('update', this._updateIframeProxy);\n\n      Craft.ElementThumbLoader.retryAll();\n\n      if (this.elementEditor.$previewBtn) {\n        this.elementEditor.$previewBtn.focus();\n      }\n\n      this.isActive = false;\n      this.isVisible = false;\n      this.trigger('close');\n    },\n\n    moveFieldsBack: function () {\n      for (var i = 0; i < this.fields.length; i++) {\n        var field = this.fields[i];\n        field.$newClone = this._getClone(field.$field);\n\n        // It's important that the actual field is added to the DOM *after* the clone,\n        // so any radio buttons in the field get deselected from the clone rather than the actual field.\n        this.$fieldPlaceholder.insertAfter(field.$field);\n        field.$field.detach();\n        this.$fieldPlaceholder.replaceWith(field.$newClone);\n        field.$clone.replaceWith(field.$field);\n      }\n\n      Garnish.$win.trigger('resize');\n      Garnish.$doc.trigger('scroll');\n    },\n\n    getIframeWidth: function () {\n      return Garnish.$win.width() - this.editorWidthInPx;\n    },\n\n    updateWidths: function () {\n      this.$editorContainer.css('width', this.editorWidthInPx + 'px');\n      this.$previewContainer.width(this.getIframeWidth());\n      if (this._devicePreviewIsActive()) {\n        this.updateDevicePreview();\n      }\n    },\n\n    _useIframeResizer: function () {\n      return Craft.previewIframeResizerOptions !== false;\n    },\n\n    /**\n     * @param {boolean} [resetScroll=false]\n     * @param {boolean} [refresh]\n     */\n    updateIframe: function (resetScroll, refresh) {\n      if (!this.isActive) {\n        return false;\n      }\n\n      // Ignore non-boolean resetScroll values\n      resetScroll = resetScroll === true;\n\n      // If the draft ID has changed or there's no iframe, we definitely need to refresh\n      if (\n        this.draftId !== (this.draftId = this.elementEditor.settings.draftId) ||\n        !this.$iframe\n      ) {\n        refresh = true;\n      }\n\n      const target = this._activeTarget();\n      if (typeof refresh === 'undefined') {\n        refresh = resetScroll || this._autoRefresh();\n      }\n\n      this.trigger('beforeUpdateIframe', {\n        previewTarget: target,\n        resetScroll: resetScroll,\n        refresh: refresh,\n      });\n\n      // If this is an existing preview target, make sure it wants to be refreshed automatically\n      if (!refresh) {\n        this.slideIn();\n        return;\n      }\n\n      this.elementEditor\n        .getTokenizedPreviewUrl(target.url, 'x-craft-live-preview')\n        .then((url) => {\n          // Maintain the current scroll position?\n          let sameHost;\n          if (resetScroll) {\n            this.scrollTop = null;\n            this.scrollLeft = null;\n          } else if (this.iframeLoaded && this.$iframe) {\n            if (this._useIframeResizer()) {\n              this.iframeHeight = this.$iframe.height();\n              this.scrollTop = this.$iframeContainer.scrollTop();\n              this.scrollLeft = this.$iframeContainer.scrollLeft();\n            } else {\n              sameHost = Craft.isSameHost(url);\n              if (sameHost && this.$iframe[0].contentWindow) {\n                this.scrollTop = $(\n                  this.$iframe[0].contentWindow.document\n                ).scrollTop();\n\n                this.scrollLeft = $(\n                  this.$iframe[0].contentWindow.document\n                ).scrollLeft();\n              }\n            }\n          }\n\n          this.iframeLoaded = false;\n\n          var $iframe = $('<iframe/>', {\n            class: 'lp-preview',\n            frameborder: 0,\n            src: url,\n            title: Craft.t('app', 'Preview'),\n          });\n\n          if (this.$iframe) {\n            this.$iframe.replaceWith($iframe);\n          } else {\n            $iframe.appendTo(this.$devicePreviewContainer);\n          }\n\n          // Keep the iframe height consistent with its content\n          if (this._useIframeResizer()) {\n            if (!resetScroll && this.iframeHeight !== null) {\n              $iframe.height(this.iframeHeight);\n              this.$iframeContainer.scrollTop(this.scrollTop);\n              this.$iframeContainer.scrollLeft(this.scrollLeft);\n            }\n\n            iFrameResize(\n              $.extend(\n                {\n                  checkOrigin: false,\n                  // Allow iframe scrolling until we've successfully initialized the resizer\n                  scrolling: true,\n                  onInit: (iframe) => {\n                    this.iframeLoaded = true;\n                    this.iframeHeight = null;\n                    this.scrollTop = null;\n                    this.scrollLeft = null;\n                    iframe.scrolling = 'no';\n                  },\n                },\n                Craft.previewIframeResizerOptions || {}\n              ),\n              $iframe[0]\n            );\n          } else {\n            $iframe.on('load', () => {\n              this.iframeLoaded = true;\n              if (!resetScroll && sameHost) {\n                $iframe[0].contentWindow.scrollTo(\n                  this.scrollLeft || 0,\n                  this.scrollTop || 0\n                );\n              }\n            });\n          }\n\n          this.url = url;\n          this.$iframe = $iframe;\n\n          if (this._devicePreviewIsActive()) {\n            this.updateDevicePreview();\n          }\n\n          this.trigger('afterUpdateIframe', {\n            previewTarget:\n              this.elementEditor.settings.previewTargets[this.activeTarget],\n            $iframe: this.$iframe,\n          });\n\n          this.slideIn();\n        });\n    },\n\n    _devicePreviewIsActive: function () {\n      return this.currentDeviceType !== 'desktop';\n    },\n\n    _updateNotifier: function () {\n      this.$notifier.html = '';\n\n      const translation =\n        this.currentDeviceType === 'desktop'\n          ? 'Previewing {type} device'\n          : 'Previewing {type} device in {orientation}';\n      let params = {\n        type: this._getDeviceTypeTranslation(this.currentDeviceType),\n      };\n\n      if (this.currentDeviceType !== 'desktop') {\n        params = {\n          ...params,\n          ...{\n            orientation: this._getDeviceOrientationTranslation(\n              this.deviceOrientation\n            ),\n          },\n        };\n      }\n\n      const message = Craft.t('app', translation, params);\n\n      setTimeout(() => {\n        this.$notifier.text(message);\n      }, 200);\n    },\n\n    switchDeviceType: function ($option) {\n      this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n\n      const newDeviceType = $option.data('deviceType');\n      // Bail if we’re just smashing the same button\n      if (newDeviceType === this.currentDeviceType) {\n        return false;\n      }\n\n      // Store new device type data\n      this.currentDeviceType = newDeviceType;\n      this.deviceWidth = $option.data('width');\n      this.deviceHeight = $option.data('height');\n\n      if (this.currentDeviceType === 'desktop') {\n        // Disable the orientation button\n        this.$orientationBtn.addClass('disabled').attr('aria-disabled', 'true');\n\n        this.$iframeContainer.removeClass(\n          'lp-iframe-container--has-device-preview'\n        );\n      } else {\n        // Enable the orientation button\n        this.$orientationBtn\n          .removeClass('disabled')\n          .removeAttr('aria-disabled');\n\n        this.$iframeContainer.addClass(\n          'lp-iframe-container--has-device-preview'\n        );\n      }\n\n      // Add the tablet class if needed\n      if (this.currentDeviceType === 'tablet') {\n        this.$iframeContainer.addClass('lp-iframe-container--tablet');\n      } else {\n        this.$iframeContainer.removeClass('lp-iframe-container--tablet');\n      }\n\n      this._updateNotifier();\n\n      if (this.currentDeviceType !== 'desktop') {\n        this.updateDevicePreview();\n      }\n    },\n\n    switchOrientation: function () {\n      if (!this._devicePreviewIsActive()) {\n        return false;\n      }\n\n      // Switch to whichever orientation is currently not stored\n      if (!this.deviceOrientation || this.deviceOrientation === 'portrait') {\n        this.deviceOrientation = 'landscape';\n      } else {\n        this.deviceOrientation = 'portrait';\n      }\n\n      // Store the new one\n      Craft.setLocalStorage('LivePreview.orientation', this.deviceOrientation);\n\n      // Allow the animation to take place\n      this.$iframeContainer.addClass('lp-iframe-container--rotating');\n\n      // Update the device preview\n      this.updateDevicePreview();\n      this._updateNotifier();\n\n      setTimeout(() => {\n        this.$iframeContainer.removeClass('lp-iframe-container--rotating');\n      }, 300);\n    },\n\n    updateDevicePreview: function () {\n      // Figure out the best zoom\n      let hZoom = 1;\n      let wZoom = 1;\n      let zoom = 1;\n      let previewHeight = this.$previewContainer.height() - 50 - 48; // 50px for the header bar and 24px clearance\n      let previewWidth = this.$previewContainer.width() - 48;\n      let maskHeight = this.deviceMaskDimensions[this.currentDeviceType].height;\n      let maskWidth = this.deviceMaskDimensions[this.currentDeviceType].width;\n\n      if (this.deviceOrientation === 'landscape') {\n        if (previewWidth < maskHeight) {\n          hZoom = previewWidth / maskHeight;\n        }\n        if (previewHeight < maskWidth) {\n          wZoom = previewHeight / maskWidth;\n        }\n      } else {\n        if (previewHeight < maskHeight) {\n          hZoom = previewHeight / maskHeight;\n        }\n        if (previewWidth < maskWidth) {\n          wZoom = previewWidth / maskWidth;\n        }\n      }\n\n      zoom = hZoom;\n      if (wZoom < hZoom) {\n        zoom = wZoom;\n      }\n\n      // Figure out the css values\n      const translate = -(100 / zoom / 2);\n      const rotationDeg =\n        this.deviceOrientation === 'landscape' ? '-90deg' : '0deg';\n\n      // Apply first to the device mask\n      this.$deviceMask.css({\n        width: this.deviceMaskDimensions[this.currentDeviceType].width + 'px',\n        height: this.deviceMaskDimensions[this.currentDeviceType].height + 'px',\n        transform:\n          'scale(' +\n          zoom +\n          ') translate(' +\n          translate +\n          '%, ' +\n          translate +\n          '%) rotate(' +\n          rotationDeg +\n          ')',\n      });\n\n      if (this.deviceOrientation === 'landscape') {\n        this.$devicePreviewContainer.css({\n          width: this.deviceHeight + 'px',\n          height: this.deviceWidth + 'px',\n          transform:\n            'scale(' +\n            zoom +\n            ') translate(' +\n            translate +\n            '%, ' +\n            translate +\n            '%)',\n          marginTop: 0,\n          marginLeft: '-' + 12 * zoom + 'px',\n        });\n      } else {\n        this.$devicePreviewContainer.css({\n          width: this.deviceWidth + 'px',\n          height: this.deviceHeight + 'px',\n          transform:\n            'scale(' +\n            zoom +\n            ') translate(' +\n            translate +\n            '%, ' +\n            translate +\n            '%)',\n          marginTop: '-' + 12 * zoom + 'px',\n          marginLeft: 0,\n        });\n      }\n    },\n\n    _getClone: function ($field) {\n      var $clone = $field.clone();\n\n      // clone() won't account for input values that have changed since the original HTML set them\n      Garnish.copyInputValues($field, $clone);\n\n      // Remove any id= attributes\n      $clone.attr('id', '');\n      $clone.find('[id]').attr('id', '');\n\n      // Disable anything with a name attribute\n      $clone.find('[name]').prop('disabled', true);\n\n      return $clone;\n    },\n\n    _onDragStart: function () {\n      this.dragStartEditorWidth = this.editorWidthInPx;\n      this.$previewContainer.addClass('dragging');\n    },\n\n    _onDrag: function () {\n      if (Craft.orientation === 'ltr') {\n        this.editorWidth = this.dragStartEditorWidth + this.dragger.mouseDistX;\n      } else {\n        this.editorWidth = this.dragStartEditorWidth - this.dragger.mouseDistX;\n      }\n\n      this.updateWidths();\n      this.trigger('drag');\n    },\n\n    _onDragStop: function () {\n      this.$previewContainer.removeClass('dragging');\n      Craft.setLocalStorage('LivePreview.editorWidth', this.editorWidth);\n    },\n\n    destroy: function () {\n      Craft.Preview.instances = Craft.Preview.instances.filter(\n        (o) => o !== this\n      );\n      this.base();\n    },\n  },\n  {\n    defaultEditorWidth: 0.33,\n    minEditorWidthInPx: 320,\n    instances: [],\n\n    refresh: function () {\n      for (let preview of Craft.Preview.instances) {\n        preview.updateIframe();\n      }\n      for (let preview of Craft.LivePreview.instances) {\n        preview.forceUpdateIframe();\n      }\n    },\n\n    getActive: function () {\n      for (let preview of Craft.Preview.instances) {\n        if (preview.isActive) {\n          return preview;\n        }\n      }\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Preview File Modal\n */\nCraft.PreviewFileModal = Garnish.Modal.extend(\n  {\n    assetId: null,\n    $spinner: null,\n    $triggerElement: null,\n    $bumperButtonStart: null,\n    $bumperButtonEnd: null,\n    elementSelect: null,\n    type: null,\n    loaded: null,\n    requestId: 0,\n\n    /**\n     * Initialize the preview file modal.\n     * @returns {*|void}\n     */\n    init: function (assetId, elementSelect, settings) {\n      // (assetId, settings)\n      if (\n        typeof settings === 'undefined' &&\n        jQuery.isPlainObject(elementSelect)\n      ) {\n        settings = elementSelect;\n        elementSelect = null;\n      }\n\n      settings = $.extend(this.defaultSettings, settings);\n      this.$triggerElement = Garnish.getFocusedElement();\n\n      settings.onHide = this._onHide.bind(this);\n\n      if (Craft.PreviewFileModal.openInstance) {\n        var instance = Craft.PreviewFileModal.openInstance;\n\n        if (instance.assetId !== assetId) {\n          instance.loadAsset(\n            assetId,\n            settings.startingWidth,\n            settings.startingHeight\n          );\n          instance.elementSelect = elementSelect;\n        }\n\n        return this.destroy();\n      }\n\n      Craft.PreviewFileModal.openInstance = this;\n      this.elementSelect = elementSelect;\n\n      this.$container = $('<div class=\"modal previewmodal loading\"/>').appendTo(\n        Garnish.$bod\n      );\n\n      this.base(\n        this.$container,\n        $.extend(\n          {\n            resizable: true,\n          },\n          settings\n        )\n      );\n\n      // Cut the flicker, just show the nice person the preview.\n      if (this.$container) {\n        this.$container.velocity('stop');\n        this.$container.show().css('opacity', 1);\n\n        this.$shade.velocity('stop');\n        this.$shade.show().css('opacity', 1);\n\n        Garnish.setFocusWithin(this.$container);\n      }\n\n      // Add bumper elements to maintain focus trap\n      this.$bumperButtonStart = Craft.ui.createButton({\n        html: Craft.t('app', 'Close Preview'),\n        class: 'skip-link',\n      });\n\n      this.addListener(this.$bumperButtonStart, 'click', () => {\n        this.hide();\n      });\n      this.$bumperButtonEnd = this.$bumperButtonStart.clone(true);\n\n      this.loadAsset(assetId, settings.startingWidth, settings.startingHeight);\n    },\n\n    /**\n     * When hiding, remove all traces and focus last focused element.\n     * @private\n     */\n    _onHide: function () {\n      Craft.PreviewFileModal.openInstance = null;\n      if (this.elementSelect) {\n        this.elementSelect.focusItem(\n          this.elementSelect.$items.filter(`[data-id=${this.assetId}]`)\n        );\n      } else if (this.$triggerElement && this.$triggerElement.length) {\n        this.$triggerElement.trigger('focus');\n      }\n\n      this.$shade.remove();\n\n      return this.destroy();\n    },\n\n    _addBumperButtons: function () {\n      this.$container\n        .prepend(this.$bumperButtonStart)\n        .append(this.$bumperButtonEnd);\n    },\n\n    _addModalName: function () {\n      const headingId = 'preview-heading';\n\n      $('<h1/>', {\n        class: 'visually-hidden',\n        id: headingId,\n        text: Craft.t('app', 'Preview file'),\n      }).prependTo(this.$container);\n\n      this.$container.attr('aria-labelledby', headingId);\n    },\n\n    /**\n     * Disappear immediately forever.\n     * @returns {boolean}\n     */\n    selfDestruct: function () {\n      var instance = Craft.PreviewFileModal.openInstance;\n\n      instance.hide();\n      instance.$shade.remove();\n      instance.destroy();\n\n      Craft.PreviewFileModal.openInstance = null;\n      Craft.focalPoint.destruct();\n      Craft.focalPoint = null;\n\n      return true;\n    },\n\n    /**\n     * Load an asset, using starting width and height, if applicable\n     * @param {number} assetId\n     * @param {number} [startingWidth]\n     * @param {number} [startingHeight]\n     */\n    loadAsset: function (assetId, startingWidth, startingHeight) {\n      this.assetId = assetId;\n\n      this.$container.empty();\n      this.loaded = false;\n\n      this.desiredHeight = null;\n      this.desiredWidth = null;\n\n      var containerHeight = Garnish.$win.height() * 0.66;\n      var containerWidth = Math.min(\n        (containerHeight / 3) * 4,\n        Garnish.$win.width() - this.settings.minGutter * 2\n      );\n      containerHeight = (containerWidth / 4) * 3;\n\n      if (startingWidth && startingHeight) {\n        var ratio = startingWidth / startingHeight;\n        containerWidth = Math.min(\n          startingWidth,\n          Garnish.$win.width() - this.settings.minGutter * 2\n        );\n        containerHeight = Math.min(\n          containerWidth / ratio,\n          Garnish.$win.height() - this.settings.minGutter * 2\n        );\n        containerWidth = containerHeight * ratio;\n\n        // This might actually have put width over the viewport limits, so doublecheck\n        if (\n          containerWidth >\n          Math.min(\n            startingWidth,\n            Garnish.$win.width() - this.settings.minGutter * 2\n          )\n        ) {\n          containerWidth = Math.min(\n            startingWidth,\n            Garnish.$win.width() - this.settings.minGutter * 2\n          );\n          containerHeight = containerWidth / ratio;\n        }\n      }\n\n      this._resizeContainer(containerWidth, containerHeight);\n\n      this.$spinner = $('<div class=\"spinner centeralign\"></div>').appendTo(\n        this.$container\n      );\n      var top =\n          this.$container.height() / 2 - this.$spinner.height() / 2 + 'px',\n        left = this.$container.width() / 2 - this.$spinner.width() / 2 + 'px';\n\n      this.$spinner.css({left: left, top: top, position: 'absolute'});\n      this.requestId++;\n\n      let data = {assetId: assetId, requestId: this.requestId};\n      let onResponse = () => {\n        this.$container.removeClass('loading');\n        this.$spinner.remove();\n        this.loaded = true;\n      };\n      Craft.sendActionRequest('POST', 'assets/preview-file', {data})\n        .then(async (response) => {\n          onResponse();\n\n          if (response.data.requestId != this.requestId) {\n            return;\n          }\n\n          if (!response.data.previewHtml) {\n            this.$container.addClass('zilch');\n            this.$container.append(\n              $('<p/>', {text: Craft.t('app', 'No preview available.')})\n            );\n            this._addBumperButtons();\n            return;\n          }\n\n          this.$container.removeClass('zilch');\n          this.$container.attr('data-asset-id', this.assetId);\n          this.$container.append(response.data.previewHtml);\n          this._addBumperButtons();\n          this._addModalName();\n          await Craft.appendHeadHtml(response.data.headHtml);\n          await Craft.appendBodyHtml(response.data.bodyHtml);\n        })\n        .catch(({response}) => {\n          onResponse();\n          Craft.cp.displayError(response.data.message);\n          this.hide();\n        });\n    },\n\n    /**\n     * Resize the container to specified dimensions\n     * @param {number} containerWidth\n     * @param {number} containerHeight\n     * @private\n     */\n    _resizeContainer: function (containerWidth, containerHeight) {\n      this.$container.css({\n        width: containerWidth,\n        'min-width': containerWidth,\n        'max-width': containerWidth,\n        height: containerHeight,\n        'min-height': containerHeight,\n        'max-height': containerHeight,\n        top: (Garnish.$win.height() - containerHeight) / 2,\n        left: (Garnish.$win.width() - containerWidth) / 2,\n      });\n    },\n  },\n  {\n    openInstance: null,\n\n    defaultSettings: {\n      minGutter: 50,\n      startingWidth: null,\n      startingHeight: null,\n    },\n\n    resizePreviewImage() {\n      const instance = Craft.PreviewFileModal.openInstance;\n      if (!instance) {\n        return;\n      }\n\n      let containerHeight = Garnish.$win.height() * 0.66;\n      let containerWidth = Math.min(\n        (containerHeight / 3) * 4,\n        Garnish.$win.width() - instance.settings.minGutter * 2\n      );\n      containerHeight = (containerWidth / 4) * 3;\n\n      const $img = instance.$container.find('img');\n\n      $img.css({\n        width: containerWidth,\n        height: containerHeight,\n      });\n\n      let imageRatio;\n\n      if (instance.loaded && $img.length) {\n        // Make sure we maintain the ratio\n\n        const maxWidth = $img.data('maxwidth');\n        const maxHeight = $img.data('maxheight');\n        imageRatio = maxWidth / maxHeight;\n        const desiredWidth = instance.desiredWidth\n          ? instance.desiredWidth\n          : instance.getWidth();\n        const desiredHeight = instance.desiredHeight\n          ? instance.desiredHeight\n          : instance.getHeight();\n        let width = Math.min(desiredWidth, maxWidth);\n        let height = Math.round(Math.min(maxHeight, width / imageRatio));\n\n        if (height > desiredHeight) {\n          height = desiredHeight;\n        }\n\n        width = Math.round(height * imageRatio);\n\n        $img.css({width: width, height: height});\n        instance._resizeContainer(width, height);\n\n        instance.desiredWidth = width;\n        instance.desiredHeight = height;\n      }\n\n      instance.base();\n\n      if (instance.loaded && $img.length) {\n        // Correct anomalies\n        containerWidth = Math.round(\n          Math.min(\n            Math.max($img.height() * imageRatio),\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          )\n        );\n        containerHeight = Math.round(\n          Math.min(\n            Math.max(containerWidth / imageRatio),\n            Garnish.$win.height() - instance.settings.minGutter * 2\n          )\n        );\n        containerWidth = Math.round(containerHeight * imageRatio);\n\n        // This might actually have put width over the viewport limits, so double-check that\n        if (\n          containerWidth >\n          Math.min(\n            containerWidth,\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          )\n        ) {\n          containerWidth = Math.min(\n            containerWidth,\n            Garnish.$win.width() - instance.settings.minGutter * 2\n          );\n          containerHeight = containerWidth / imageRatio;\n        }\n\n        instance._resizeContainer(containerWidth, containerHeight);\n        $img.css({width: containerWidth, height: containerHeight});\n\n        if (window.imageFocalPoint) {\n          window.imageFocalPoint.renderFocal();\n        }\n      }\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * File Manager.\n */\nCraft.ProgressBar = Garnish.Base.extend({\n  $progressBar: null,\n  $innerProgressBar: null,\n  $progressBarStatus: null,\n\n  _itemCount: 0,\n  _processedItemCount: 0,\n  _displaySteps: false,\n\n  init: function ($element, displaySteps) {\n    if (displaySteps) {\n      this._displaySteps = true;\n    }\n\n    this.$progressBar = $('<div class=\"progressbar pending hidden\"/>').appendTo(\n      $element\n    );\n    this.$innerProgressBar = $('<div class=\"progressbar-inner\"/>').appendTo(\n      this.$progressBar\n    );\n    this.$progressBarStatus = $(\n      '<div class=\"progressbar-status hidden\" />'\n    ).insertAfter(this.$progressBar);\n\n    this.resetProgressBar();\n  },\n\n  /**\n   * Reset the progress bar\n   */\n  resetProgressBar: function () {\n    // Since setting the progress percentage implies that there is progress to be shown\n    // It removes the pending class - we must add it back.\n    this.setProgressPercentage(100);\n    this.$progressBar.addClass('pending');\n\n    // Reset all the counters\n    this.setItemCount(1);\n    this.setProcessedItemCount(0);\n    this.$progressBarStatus.html('');\n\n    if (this._displaySteps) {\n      this.$progressBar.addClass('has-status');\n    }\n  },\n\n  /**\n   * Fade to invisible, hide it using a class and reset opacity to visible\n   */\n  hideProgressBar: function () {\n    this.$progressBar.addClass('hidden');\n    this.$progressBarStatus.addClass('hidden');\n  },\n\n  showProgressBar: function () {\n    this.$progressBar.removeClass('hidden');\n    this.$progressBarStatus.removeClass('hidden');\n  },\n\n  setItemCount: function (count) {\n    this._itemCount = count;\n  },\n\n  incrementItemCount: function (count) {\n    this._itemCount += count;\n  },\n\n  setProcessedItemCount: function (count) {\n    this._processedItemCount = count;\n  },\n\n  incrementProcessedItemCount: function (count) {\n    this._processedItemCount += count;\n  },\n\n  updateProgressBar: function () {\n    // Only fools would allow accidental division by zero.\n    this._itemCount = Math.max(this._itemCount, 1);\n\n    var width = Math.min(\n      100,\n      Math.round((100 * this._processedItemCount) / this._itemCount)\n    );\n\n    this.setProgressPercentage(width);\n\n    if (this._displaySteps) {\n      this.$progressBarStatus.html(\n        this._processedItemCount + ' / ' + this._itemCount\n      );\n    }\n  },\n\n  setProgressPercentage: function (percentage, animate) {\n    if (percentage === 0) {\n      this.$progressBar.addClass('pending');\n    } else {\n      this.$progressBar.removeClass('pending');\n\n      if (animate) {\n        this.$innerProgressBar\n          .velocity('stop')\n          .velocity({width: percentage + '%'}, 'fast');\n      } else {\n        this.$innerProgressBar.velocity('stop').width(percentage + '%');\n      }\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * File Manager.\n */\nCraft.PromptHandler = Garnish.Base.extend({\n  modal: null,\n  $modalContainerDiv: null,\n  $prompt: null,\n  $promptApplyToRemainingContainer: null,\n  $promptApplyToRemainingCheckbox: null,\n  $promptApplyToRemainingLabel: null,\n  $pomptChoices: null,\n\n  _prompts: [],\n  _promptBatchCallback: $.noop,\n  _promptBatchReturnData: [],\n  _promptBatchNum: 0,\n\n  resetPrompts: function () {\n    this._prompts = [];\n    this._promptBatchCallback = $.noop;\n    this._promptBatchReturnData = [];\n    this._promptBatchNum = 0;\n  },\n\n  addPrompt: function (prompt) {\n    this._prompts.push(prompt);\n  },\n\n  getPromptCount: function () {\n    return this._prompts.length;\n  },\n\n  showBatchPrompts: function (callback) {\n    this._promptBatchCallback = callback;\n    this._promptBatchReturnData = [];\n    this._promptBatchNum = 0;\n\n    this._showNextPromptInBatch();\n  },\n\n  _showNextPromptInBatch: function () {\n    var prompt = this._prompts[this._promptBatchNum].prompt,\n      remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);\n\n    this._showPrompt(\n      prompt.message,\n      prompt.choices,\n      this._handleBatchPromptSelection.bind(this),\n      remainingInBatch,\n      prompt.modalSettings\n    );\n  },\n\n  /**\n   * Handles a prompt choice selection.\n   *\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   * @private\n   */\n  _handleBatchPromptSelection: function (choice, applyToRemaining) {\n    var prompt = this._prompts[this._promptBatchNum],\n      remainingInBatch = this._prompts.length - (this._promptBatchNum + 1);\n\n    // Record this choice\n    var choiceData = $.extend(prompt, {choice});\n    this._promptBatchReturnData.push(choiceData);\n\n    // Are there any remaining items in the batch?\n    if (remainingInBatch) {\n      // Get ready to deal with the next prompt\n      this._promptBatchNum++;\n\n      // Apply the same choice to the remaining items?\n      if (applyToRemaining) {\n        this._handleBatchPromptSelection(choice, true);\n      } else {\n        // Show the next prompt\n        this._showNextPromptInBatch();\n      }\n    } else {\n      // All done! Call the callback\n      if (typeof this._promptBatchCallback === 'function') {\n        this._promptBatchCallback(this._promptBatchReturnData);\n      }\n    }\n  },\n\n  /**\n   * @callback showPromptCallback\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   */\n  /**\n   * Show the user prompt with a given message and choices, plus an optional \"Apply to remaining\" checkbox.\n   *\n   * @param {string} message\n   * @param {Array} choices\n   * @param {showPromptCallback} callback\n   * @param {number} itemsToGo\n   * @param {Object} modalSettings\n   */\n  _showPrompt: function (message, choices, callback, itemsToGo, modalSettings) {\n    this._promptCallback = callback;\n\n    if (this.modal === null) {\n      this.modal = new Garnish.Modal(\n        Object.assign({closeOtherModals: false}, modalSettings)\n      );\n    }\n\n    if (this.$modalContainerDiv === null) {\n      this.$modalContainerDiv = $(\n        '<div class=\"modal fitted prompt-modal\"></div>'\n      )\n        .addClass()\n        .appendTo(Garnish.$bod);\n    }\n\n    this.$prompt = $('<div class=\"body\"></div>').appendTo(\n      this.$modalContainerDiv.empty()\n    );\n\n    this.$promptMessage = $('<p class=\"prompt-msg\"/>').appendTo(this.$prompt);\n\n    this.$promptChoices = $('<div class=\"options\"></div>').appendTo(\n      this.$prompt\n    );\n\n    this.$promptApplyToRemainingContainer = $(\n      '<label class=\"assets-applytoremaining\"/>'\n    )\n      .appendTo(this.$prompt)\n      .hide();\n    this.$promptApplyToRemainingCheckbox = $(\n      '<input type=\"checkbox\"/>'\n    ).appendTo(this.$promptApplyToRemainingContainer);\n    this.$promptApplyToRemainingLabel = $('<span/>').appendTo(\n      this.$promptApplyToRemainingContainer\n    );\n\n    this.$promptButtons = $('<div class=\"buttons right\"/>').appendTo(\n      this.$prompt\n    );\n\n    this.modal.setContainer(this.$modalContainerDiv);\n\n    this.$promptMessage.html(message);\n\n    let $cancelBtn = $('<button/>', {\n      type: 'button',\n      class: 'btn',\n      text: Craft.t('app', 'Cancel'),\n    }).appendTo(this.$promptButtons);\n    let $submitBtn = $('<button/>', {\n      type: 'submit',\n      class: 'btn submit disabled',\n      text: Craft.t('app', 'OK'),\n    }).appendTo(this.$promptButtons);\n\n    for (var i = 0; i < choices.length; i++) {\n      var $radioButtonHtml = $(\n          '<div><label><input type=\"radio\" name=\"promptAction\" value=\"' +\n            choices[i].value +\n            '\"/> ' +\n            choices[i].title +\n            '</label></div>'\n        ).appendTo(this.$promptChoices),\n        $radioButton = $radioButtonHtml.find('input');\n\n      this.addListener($radioButton, 'click', function () {\n        $submitBtn.removeClass('disabled');\n      });\n    }\n\n    this.addListener($submitBtn, 'activate', function (ev) {\n      var choice = $(ev.currentTarget)\n          .parents('.modal')\n          .find('input[name=promptAction]:checked')\n          .val(),\n        applyToRemaining = this.$promptApplyToRemainingCheckbox.prop('checked');\n\n      this._selectPromptChoice(choice, applyToRemaining);\n    });\n\n    this.addListener($cancelBtn, 'activate', function () {\n      var choice = 'cancel',\n        applyToRemaining = this.$promptApplyToRemainingCheckbox.prop('checked');\n\n      this._selectPromptChoice(choice, applyToRemaining);\n    });\n\n    if (itemsToGo) {\n      this.$promptApplyToRemainingContainer.show();\n      this.$promptApplyToRemainingLabel.html(\n        ' ' +\n          Craft.t('app', 'Apply this to the {number} remaining conflicts?', {\n            number: itemsToGo,\n          })\n      );\n    }\n\n    this.modal.show();\n    this.modal.removeListener(Garnish.Modal.$shade, 'click');\n    this.addListener(Garnish.Modal.$shade, 'click', '_cancelPrompt');\n  },\n\n  /**\n   * Handles when a user selects one of the prompt choices.\n   *\n   * @param {string} choice\n   * @param {boolean} applyToRemaining\n   * @private\n   */\n  _selectPromptChoice: function (choice, applyToRemaining) {\n    this.$prompt.fadeOut('fast', () => {\n      this.modal.hide();\n      this._promptCallback(choice, applyToRemaining);\n    });\n  },\n\n  /**\n   * Cancels the prompt.\n   */\n  _cancelPrompt: function () {\n    this._selectPromptChoice('cancel', true);\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * Queue\n */\nCraft.Queue = Garnish.Base.extend({\n  running: false,\n  paused: false,\n  pausedForVisibility: false,\n  jobs: null,\n\n  get length() {\n    return this.jobs.length;\n  },\n\n  get isPaused() {\n    return this.paused || this.pausedForVisibility;\n  },\n\n  init: function () {\n    this.jobs = [];\n\n    Garnish.$doc.on('visibilitychange', () => {\n      if (this.pausedForVisibility && Craft.isVisible()) {\n        this.pausedForVisibility = false;\n        this._resume();\n      }\n    });\n  },\n\n  /**\n   * Adds a job to the queue.\n   * @param {function} job\n   * @returns {Promise}\n   */\n  push: function (job) {\n    return this._add(job, 'push');\n  },\n\n  /**\n   * Adds a job to the beginning of the queue.\n   * @param {function} job\n   * @returns {Promise}\n   */\n  unshift: function (job) {\n    return this._add(job, 'unshift');\n  },\n\n  pause: function () {\n    if (!this.paused) {\n      this.paused = true;\n      if (!this.pausedForVisibility) {\n        this.trigger('pause');\n      }\n    }\n  },\n\n  resume: function () {\n    if (this.paused) {\n      this.paused = false;\n      this._resume();\n    }\n  },\n\n  /**\n   * Adds a job to the queue.\n   * @param {function} job\n   * @param {string} method\n   * @returns {Promise}\n   * @private\n   */\n  _add: function (job, method) {\n    return new Promise((resolve, reject) => {\n      this.jobs[method](() => {\n        return new Promise((qResolve, qReject) => {\n          job()\n            .then((value) => {\n              // ...arguments doesn't work here :(\n              resolve(value);\n              qResolve();\n            })\n            .catch((value) => {\n              // ...arguments doesn't work here :(\n              reject(value);\n              qReject();\n            });\n        });\n      });\n\n      if (!this.running) {\n        this.trigger('beforeRun');\n        this.running = true;\n        this._exec();\n      }\n    });\n  },\n\n  clear: function () {\n    this.jobs.length = 0;\n  },\n\n  /**\n   * Runs the next job in the queue.\n   * @private\n   */\n  _exec: function () {\n    if (!this.jobs.length) {\n      this.running = false;\n      this.trigger('afterRun');\n      return;\n    }\n\n    if (!this.pausedForVisibility && !Craft.isVisible()) {\n      this.pausedForVisibility = true;\n      if (!this.paused) {\n        this.trigger('pause');\n      }\n    }\n\n    if (this.paused || this.pausedForVisibility) {\n      return;\n    }\n\n    this.trigger('beforeExec');\n    const job = this.jobs.shift();\n    job().finally(() => {\n      this.trigger('afterExec');\n      this._exec();\n    });\n  },\n\n  _resume: function () {\n    if (!this.isPaused) {\n      this.trigger('resume');\n      this._exec();\n    }\n  },\n});\n\nCraft.queue = new Craft.Queue();\n","(function ($) {\n  /** global: Craft */\n  /** global: Garnish */\n  /**\n   * Slide Picker\n   */\n  Craft.SlidePicker = Garnish.Base.extend(\n    {\n      min: null,\n      max: null,\n      totalSteps: null,\n      value: null,\n      label: null,\n      describedBy: null,\n\n      $container: null,\n      $buttons: null,\n\n      init: function (value, settings) {\n        this.setSettings(settings, Craft.SlidePicker.defaults);\n\n        this.$container = $('<div/>', {\n          class: 'slide-picker',\n          role: 'slider',\n          tabindex: 0,\n        });\n\n        this.refresh();\n        this.setValue(value, false);\n\n        this.addListener(this.$container, 'keydown', (ev) => {\n          switch (ev.keyCode) {\n            case Garnish.UP_KEY:\n              this.setValue(this.value + this.settings.step);\n              ev.preventDefault();\n              break;\n            case Garnish.DOWN_KEY:\n              this.setValue(this.value - this.settings.step);\n              ev.preventDefault();\n              break;\n            case Garnish.RIGHT_KEY:\n              if (Craft.orientation === 'ltr') {\n                this.setValue(this.value + this.settings.step);\n              } else {\n                this.setValue(this.value - this.settings.step);\n              }\n              ev.preventDefault();\n              break;\n            case Garnish.LEFT_KEY:\n              if (Craft.orientation === 'ltr') {\n                this.setValue(this.value - this.settings.step);\n              } else {\n                this.setValue(this.value + this.settings.step);\n              }\n              ev.preventDefault();\n              break;\n            case Garnish.HOME_KEY:\n              this.setValue(this.min);\n              ev.preventDefault();\n              break;\n            case Garnish.END_KEY:\n              this.setValue(this.max);\n              ev.preventDefault();\n              break;\n          }\n        });\n      },\n\n      refresh: function () {\n        // Figure out what the min/max values are\n        this.min = this._min();\n        this.max = this._max();\n        this.totalSteps = (this.max - this.min) / this.settings.step;\n\n        // Set label\n        this.label = this.settings.label;\n        this.describedBy = this.settings.describedBy;\n\n        if (!Number.isInteger(this.totalSteps)) {\n          throw 'Invalid SlidePicker config';\n        }\n\n        if (this.$buttons) {\n          this.$buttons.remove();\n        }\n\n        this.$container.attr('aria-valuemin', this.min);\n        this.$container.attr('aria-valuemax', this.max);\n\n        if (this.label) {\n          this.$container.attr('aria-label', this.label);\n        }\n\n        if (this.describedBy) {\n          this.$container.attr('aria-describedby', this.describedBy);\n        }\n\n        this.$buttons = $();\n\n        // Create the buttons\n        for (\n          let value = this.min;\n          value <= this.max;\n          value += this.settings.step\n        ) {\n          this.$buttons = this.$buttons.add(\n            $('<a/>', {\n              title: this.settings.valueLabel(value),\n              data: {value},\n            })\n          );\n        }\n\n        this.$buttons.appendTo(this.$container);\n\n        if (this.value !== null) {\n          let value = this.value;\n          this.value = null;\n          this.setValue(value, false);\n        }\n\n        this.addListener(this.$buttons, 'mouseover', (ev) => {\n          this.$buttons.removeClass('active-hover last-active-hover');\n          $(ev.currentTarget)\n            .addClass('active-hover last-active-hover')\n            .prevAll()\n            .addClass('active-hover');\n        });\n\n        this.addListener(this.$buttons, 'mouseout', () => {\n          this.$buttons.removeClass('active-hover');\n        });\n\n        this.addListener(this.$buttons, 'click', (ev) => {\n          this.setValue($.data(ev.currentTarget, 'value'));\n          ev.stopPropagation();\n          this.$container.focus();\n        });\n      },\n\n      setValue: function (value, triggerEvent) {\n        value = Math.max(Math.min(value, this.max), this.min);\n\n        if (this.value === (this.value = value)) {\n          return;\n        }\n\n        this.$container.attr({\n          'aria-valuenow': this.value,\n          'aria-valuetext': this.settings.valueLabel(this.value),\n        });\n\n        this.$buttons.removeClass('last-active active');\n        let $activeButton = this.$buttons.eq(\n          (this.value - this.min) / this.settings.step\n        );\n        $activeButton.add($activeButton.prevAll()).addClass('active');\n        $activeButton.addClass('last-active');\n\n        if (triggerEvent !== false) {\n          this.settings.onChange(value);\n        }\n      },\n\n      _min: function () {\n        if (typeof this.settings.min === 'function') {\n          return this.settings.min();\n        }\n        return this.settings.min;\n      },\n\n      _max: function () {\n        if (typeof this.settings.max === 'function') {\n          return this.settings.max();\n        }\n        return this.settings.max;\n      },\n    },\n    {\n      defaults: {\n        min: 0,\n        max: 100,\n        step: 10,\n        valueLabel: null,\n        onChange: $.noop,\n      },\n    }\n  );\n})(jQuery);\n","/** global: Garnish */\n\nCraft.SlideRuleInput = Garnish.Base.extend({\n  $container: null,\n  $options: null,\n  $selectedOption: null,\n  $input: null,\n  value: null,\n\n  startPositionX: null,\n\n  init: function (id, settings) {\n    this.setSettings(settings, Craft.SlideRuleInput.defaultSettings);\n\n    this.value = 0;\n    this.graduationsMin = -70;\n    this.graduationsMax = 70;\n    this.slideMin = -45;\n    this.slideMax = 45;\n\n    this.$container = $('#' + id);\n    this.$overlay = $('<div class=\"overlay\"></div>').appendTo(this.$container);\n    this.$cursor = $('<div class=\"cursor\"></div>').appendTo(this.$container);\n    this.$graduations = $('<div class=\"graduations\"></div>').appendTo(\n      this.$container\n    );\n    this.$graduationsUl = $('<ul></ul>').appendTo(this.$graduations);\n\n    this.$container.attr({\n      role: 'slider',\n      tabindex: '0',\n      'aria-valuemin': this.slideMin,\n      'aria-valuemax': this.slideMax,\n      'aria-valuenow': '0',\n      'aria-valuetext': Craft.t(\n        'app',\n        '{num, number} {num, plural, =1{degree} other{degrees}}',\n        {\n          num: 0,\n        }\n      ),\n    });\n\n    for (var i = this.graduationsMin; i <= this.graduationsMax; i++) {\n      var $li = $(\n        '<li class=\"graduation\" data-graduation=\"' +\n          i +\n          '\"><div class=\"label\">' +\n          i +\n          '</div></li>'\n      ).appendTo(this.$graduationsUl);\n\n      if (i % 5 === 0) {\n        $li.addClass('main-graduation');\n      }\n\n      if (i === 0) {\n        $li.addClass('selected');\n      }\n    }\n\n    this.$options = this.$container.find('.graduation');\n\n    this.addListener(this.$container, 'resize', this._handleResize.bind(this));\n    this.addListener(\n      this.$container,\n      'tapstart',\n      this._handleTapStart.bind(this)\n    );\n    this.addListener(Garnish.$bod, 'tapmove', this._handleTapMove.bind(this));\n    this.addListener(Garnish.$bod, 'tapend', this._handleTapEnd.bind(this));\n    this.addListener(\n      this.$container,\n      'keydown',\n      this._handleKeypress.bind(this)\n    );\n\n    // Set to zero\n\n    // this.setValue(0);\n\n    setTimeout(() => {\n      // (n -1) options because the border is placed on the left of the 10px box\n      this.graduationsCalculatedWidth = (this.$options.length - 1) * 10;\n      this.$graduationsUl.css(\n        'left',\n        -this.graduationsCalculatedWidth / 2 + this.$container.width() / 2\n      );\n    }, 50);\n  },\n\n  _handleResize: function () {\n    var left = this.valueToPosition(this.value);\n    this.$graduationsUl.css('left', left);\n  },\n\n  _handleKeypress: function (event) {\n    const current = parseInt(this.$container.attr('aria-valuenow'), 10);\n\n    switch (event.keyCode) {\n      case Garnish.UP_KEY:\n      case Garnish.RIGHT_KEY:\n        this.setValue(current + 1);\n        break;\n      case Garnish.DOWN_KEY:\n      case Garnish.LEFT_KEY:\n        this.setValue(current - 1);\n        break;\n      case Garnish.PAGE_UP_KEY:\n        this.setValue(current + 10);\n        break;\n      case Garnish.PAGE_DOWN_KEY:\n        this.setValue(current - 10);\n        break;\n      case Garnish.HOME_KEY:\n        this.setValue(this.slideMin);\n        break;\n      case Garnish.END_KEY:\n        this.setValue(this.slideMax);\n        break;\n    }\n\n    this.onChange();\n  },\n\n  _handleTapStart: function (ev, touch) {\n    ev.preventDefault();\n\n    this.startPositionX = touch.position.x;\n    this.startLeft = this.$graduationsUl.position().left;\n\n    this.dragging = true;\n    this.onStart();\n  },\n\n  _handleTapMove: function (ev, touch) {\n    if (this.dragging) {\n      ev.preventDefault();\n\n      var curX = this.startPositionX - touch.position.x;\n      var left = this.startLeft - curX;\n      var value = this.positionToValue(left);\n\n      this.setValue(value);\n\n      this.onChange();\n    }\n  },\n\n  setValue: function (value) {\n    var left = this.valueToPosition(value);\n    if (value < this.slideMin) {\n      value = this.slideMin;\n      left = this.valueToPosition(value);\n    } else if (value > this.slideMax) {\n      value = this.slideMax;\n      left = this.valueToPosition(value);\n    }\n\n    this.$graduationsUl.css('left', left);\n\n    if (value >= this.slideMin && value <= this.slideMax) {\n      this.$options.removeClass('selected');\n\n      $.each(this.$options, function (key, option) {\n        if ($(option).data('graduation') > 0) {\n          if ($(option).data('graduation') <= value) {\n            $(option).addClass('selected');\n          }\n        }\n        if ($(option).data('graduation') < 0) {\n          if ($(option).data('graduation') >= value) {\n            $(option).addClass('selected');\n          }\n        }\n\n        if ($(option).data('graduation') == 0) {\n          $(option).addClass('selected');\n        }\n      });\n    }\n\n    this.$container.attr({\n      'aria-valuenow': value,\n      'aria-valuetext': Craft.t(\n        'app',\n        '{num, number} {num, plural, =1{degree} other{degrees}}',\n        {num: parseInt(value, 10)}\n      ),\n    });\n    this.value = value;\n  },\n\n  _handleTapEnd: function (ev) {\n    if (this.dragging) {\n      ev.preventDefault();\n      this.dragging = false;\n      this.onEnd();\n    }\n  },\n\n  positionToValue: function (position) {\n    var scaleMin = this.graduationsMin * -1;\n    var scaleMax = (this.graduationsMin - this.graduationsMax) * -1;\n\n    return (\n      ((this.$graduations.width() / 2 + position * -1) /\n        this.graduationsCalculatedWidth) *\n        scaleMax -\n      scaleMin\n    );\n  },\n\n  valueToPosition: function (value) {\n    var scaleMin = this.graduationsMin * -1;\n    var scaleMax = (this.graduationsMin - this.graduationsMax) * -1;\n\n    return -(\n      ((value + scaleMin) * this.graduationsCalculatedWidth) / scaleMax -\n      this.$graduations.width() / 2\n    );\n  },\n\n  onStart: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onStart(this);\n    }\n  },\n\n  onChange: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onChange(this);\n    }\n  },\n\n  onEnd: function () {\n    if (typeof this.settings.onChange === 'function') {\n      this.settings.onEnd(this);\n    }\n  },\n\n  defaultSettings: {\n    onStart: $.noop,\n    onChange: $.noop,\n    onEnd: $.noop,\n  },\n});\n","(function ($) {\n  /** global: Craft */\n  /** global: Garnish */\n  /**\n   * Slide Picker\n   */\n  Craft.Slideout = Garnish.Base.extend(\n    {\n      $outerContainer: null,\n      $container: null,\n      $shade: null,\n      isOpen: false,\n      useMobileStyles: null,\n\n      init: function (contents, settings) {\n        this.setSettings(settings, Craft.Slideout.defaults);\n\n        this.$outerContainer = $('<div/>', {\n          class: 'slideout-container hidden',\n        });\n        this.$container = $(\n          `<${this.settings.containerElement}/>`,\n          this.settings.containerAttributes\n        )\n          .attr('data-slideout', '')\n          .addClass('slideout')\n          .append(contents)\n          .data('slideout', this)\n          .appendTo(this.$outerContainer);\n\n        if (this.$container.attr('id')) {\n          Craft.Slideout.instances[this.$container.attr('id')] = this;\n        }\n\n        Garnish.addModalAttributes(this.$outerContainer);\n\n        Craft.trapFocusWithin(this.$container);\n\n        if (this.settings.autoOpen) {\n          this.open();\n        }\n      },\n\n      open: function () {\n        if (this.isOpen) {\n          return;\n        }\n\n        this.setTriggerElement(document.activeElement);\n\n        this._cancelTransitionListeners();\n\n        const activePreview =\n          Craft.Preview.getActive() || Craft.LivePreview.getActive();\n        this.useMobileStyles = activePreview || Craft.useMobileStyles();\n\n        this.$outerContainer.removeClass('so-mobile so-lp');\n        this.$container.removeClass('so-mobile so-lp');\n\n        if (activePreview) {\n          this.$outerContainer.addClass('so-lp');\n          this.$container.addClass('so-lp');\n        } else if (this.useMobileStyles) {\n          this.$container.addClass('so-mobile');\n        }\n\n        if (activePreview || !this.useMobileStyles) {\n          if (!this.$shade) {\n            this.$shade = $('<div class=\"slideout-shade\"/>');\n\n            if (this.settings.closeOnShadeClick) {\n              this.addListener(this.$shade, 'click', (ev) => {\n                ev.stopPropagation();\n                this.close();\n              });\n            }\n          }\n\n          // Keep the shade + container to the end of <body> so they get the highest sub-z-indexes\n          if (activePreview) {\n          }\n\n          this.$shade.appendTo(Garnish.$bod).show();\n        } else if (this.$shade) {\n          this.$shade.remove();\n          delete this.$shade;\n        }\n\n        this.$outerContainer.appendTo(Garnish.$bod).removeClass('hidden');\n\n        if (activePreview) {\n          // keep the width equal to the editp ane width\n          this.updateWidthsForPreviewPane(activePreview);\n          const dragHandler = () => {\n            if (this.isOpen) {\n              this.updateWidthsForPreviewPane(activePreview);\n            }\n          };\n          activePreview.on('drag', dragHandler);\n          activePreview.on('beforeClose', () => {\n            activePreview.off('drag', dragHandler);\n          });\n        }\n\n        if (this.useMobileStyles) {\n          this.$container\n            .css('top', '100vh')\n            .css(Garnish.ltr ? 'left' : 'right', '');\n        } else {\n          this.$container\n            .css('top', '')\n            .css(Garnish.ltr ? 'left' : 'right', '100vw');\n        }\n\n        this.$container.one('transitionend.slideout', () => {\n          Craft.setFocusWithin(this.$container);\n        });\n\n        if (this.$shade) {\n          this.$shade[0].offsetWidth;\n          this.$shade.addClass('so-visible');\n        }\n\n        this.$container[0].offsetWidth;\n        Craft.Slideout.addPanel(this);\n\n        this.enable();\n        Garnish.uiLayerManager.addLayer(this.$outerContainer);\n        Garnish.hideModalBackgroundLayers();\n\n        if (this.settings.closeOnEsc) {\n          Garnish.uiLayerManager.registerShortcut(Garnish.ESC_KEY, () => {\n            this.close();\n          });\n        }\n\n        this.isOpen = true;\n        this.trigger('open');\n      },\n\n      updateWidthsForPreviewPane: function (activePreview) {\n        const width = activePreview.$editorContainer.width() - 1;\n        if (this.$shade) {\n          this.$shade.width(width);\n        }\n        this.$outerContainer.css('width', `calc(${width}px - var(--m) * 2)`);\n      },\n\n      setTriggerElement: function (trigger) {\n        this.settings.triggerElement = trigger;\n      },\n\n      close: function () {\n        if (!this.isOpen) {\n          return;\n        }\n\n        this.trigger('beforeClose');\n        this.disable();\n        this.isOpen = false;\n\n        this._cancelTransitionListeners();\n\n        if (this.$shade) {\n          this.$shade\n            .removeClass('so-visible')\n            .one('transitionend.slideout', () => {\n              this.$shade.hide();\n            });\n        }\n\n        Craft.Slideout.removePanel(this);\n        Garnish.uiLayerManager.removeLayer();\n        Garnish.resetModalBackgroundLayerVisibility();\n        this.$container.one('transitionend.slideout', () => {\n          this.$outerContainer.addClass('hidden');\n          this.trigger('close');\n        });\n\n        if (this.settings.triggerElement) {\n          this.settings.triggerElement.focus();\n        }\n      },\n\n      _cancelTransitionListeners: function () {\n        if (this.$shade) {\n          this.$shade.off('transitionend.slideout');\n        }\n\n        this.$container.off('transitionend.slideout');\n      },\n\n      /**\n       * Destroy\n       */\n      destroy: function () {\n        if (this.$shade) {\n          this.$shade.remove();\n          this.$shade = null;\n        }\n\n        this.$outerContainer.remove();\n        this.$outerContainer = null;\n        this.$container = null;\n\n        Craft.Slideout.instances = Craft.filterObject(\n          Craft.Slideout.instances,\n          (instance) => instance !== this\n        );\n\n        this.base();\n      },\n    },\n    {\n      defaults: {\n        containerElement: 'div',\n        containerAttributes: {},\n        autoOpen: true,\n        closeOnEsc: true,\n        closeOnShadeClick: true,\n        triggerElement: null,\n      },\n      instances: {},\n      openPanels: [],\n      addPanel: function (panel) {\n        Craft.Slideout.openPanels.unshift(panel);\n        if (panel.useMobileStyles) {\n          panel.$container.css('top', 0);\n        } else {\n          Craft.Slideout.updateStyles();\n        }\n      },\n      removePanel: function (panel) {\n        Craft.Slideout.openPanels = Craft.Slideout.openPanels.filter(\n          (m) => m !== panel\n        );\n        if (panel.useMobileStyles) {\n          panel.$container.css('top', '100vh');\n        } else {\n          panel.$container.css(Garnish.ltr ? 'left' : 'right', '100vw');\n          Craft.Slideout.updateStyles();\n        }\n      },\n      updateStyles: function () {\n        const totalPanels = Craft.Slideout.openPanels.length;\n        Craft.Slideout.openPanels.forEach((panel, i) => {\n          panel.$container.css(\n            Garnish.ltr ? 'left' : 'right',\n            `${45 * ((totalPanels - i) / totalPanels)}vw`\n          );\n        });\n\n        if (totalPanels !== 0) {\n          Garnish.$bod.addClass('no-scroll');\n        } else {\n          Garnish.$bod.removeClass('no-scroll');\n        }\n      },\n    }\n  );\n})(jQuery);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Slug Generator\n */\nCraft.SlugGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    sourceVal = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Remove inner-word punctuation\n    sourceVal = sourceVal.replace(/['\"‘’“”\\[\\]\\(\\)\\{\\}:]/g, '');\n\n    if (Craft.limitAutoSlugsToAscii) {\n      // Convert extended ASCII characters to basic ASCII\n      sourceVal = Craft.asciiString(sourceVal, this.settings.charMap);\n    }\n\n    // Make it lowercase\n    if (!Craft.allowUppercaseInSlug) {\n      sourceVal = sourceVal.toLowerCase();\n    }\n\n    // Get the \"words\". Split on anything that is not alphanumeric.\n    // Reference: http://www.regular-expressions.info/unicode.html\n    var words = Craft.filterArray(\n      XRegExp.matchChain(sourceVal, [XRegExp('[\\\\p{L}\\\\p{N}\\\\p{M}]+')])\n    );\n\n    if (words.length) {\n      return words.join(Craft.slugWordSeparator);\n    } else {\n      return '';\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Structure class\n */\nCraft.Structure = Garnish.Base.extend(\n  {\n    id: null,\n\n    $container: null,\n    state: null,\n    structureDrag: null,\n\n    /**\n     * Init\n     */\n    init: function (id, container, settings) {\n      this.id = id;\n      this.$container = $(container);\n      this.setSettings(settings, Craft.Structure.defaults);\n\n      // Is this already a structure?\n      if (this.$container.data('structure')) {\n        console.warn('Double-instantiating a structure on an element');\n        this.$container.data('structure').destroy();\n      }\n\n      this.$container.data('structure', this);\n\n      this.state = {};\n\n      if (this.settings.storageKey) {\n        $.extend(\n          this.state,\n          Craft.getLocalStorage(this.settings.storageKey, {})\n        );\n      }\n\n      if (typeof this.state.collapsedElementIds === 'undefined') {\n        this.state.collapsedElementIds = [];\n      }\n\n      var $parents = this.$container.find('ul').prev('.row');\n\n      for (var i = 0; i < $parents.length; i++) {\n        var $row = $($parents[i]),\n          $li = $row.parent(),\n          $toggle = $(\n            '<div class=\"toggle\" title=\"' +\n              Craft.t('app', 'Show/hide children') +\n              '\"/>'\n          ).prependTo($row);\n\n        if (\n          $.inArray(\n            $row.children('.element').data('id'),\n            this.state.collapsedElementIds\n          ) !== -1\n        ) {\n          $li.addClass('collapsed');\n        }\n\n        this.initToggle($toggle);\n      }\n\n      if (this.settings.sortable) {\n        this.structureDrag = new Craft.StructureDrag(\n          this,\n          this.settings.maxLevels\n        );\n      }\n\n      if (this.settings.newChildUrl) {\n        this.initNewChildMenus(this.$container.find('.add'));\n      }\n    },\n\n    initToggle: function ($toggle) {\n      $toggle.on('click', (ev) => {\n        var $li = $(ev.currentTarget).closest('li'),\n          elementId = $li.children('.row').find('.element:first').data('id'),\n          viewStateKey = $.inArray(elementId, this.state.collapsedElementIds);\n\n        if ($li.hasClass('collapsed')) {\n          $li.removeClass('collapsed');\n\n          if (viewStateKey !== -1) {\n            this.state.collapsedElementIds.splice(viewStateKey, 1);\n          }\n        } else {\n          $li.addClass('collapsed');\n\n          if (viewStateKey === -1) {\n            this.state.collapsedElementIds.push(elementId);\n          }\n        }\n\n        if (this.settings.storageKey) {\n          Craft.setLocalStorage(this.settings.storageKey, this.state);\n        }\n      });\n    },\n\n    initNewChildMenus: function ($addBtns) {\n      this.addListener($addBtns, 'click', 'onNewChildMenuClick');\n    },\n\n    onNewChildMenuClick: function (ev) {\n      var $btn = $(ev.currentTarget);\n\n      if (!$btn.data('menubtn')) {\n        var elementId = $btn.parent().children('.element').data('id'),\n          newChildUrl = Craft.getUrl(\n            this.settings.newChildUrl,\n            'parentId=' + elementId\n          );\n\n        $(\n          '<div class=\"menu\"><ul><li><a href=\"' +\n            newChildUrl +\n            '\">' +\n            Craft.t('app', 'New child') +\n            '</a></li></ul></div>'\n        ).insertAfter($btn);\n\n        var menuBtn = new Garnish.MenuBtn($btn);\n        menuBtn.showMenu();\n      }\n    },\n\n    getIndent: function (level) {\n      return (\n        Craft.Structure.baseIndent + (level - 1) * Craft.Structure.nestedIndent\n      );\n    },\n\n    addElement: function ($element) {\n      var $li = $('<li data-level=\"1\"/>').appendTo(this.$container),\n        $row = $(\n          '<div class=\"row\" style=\"margin-' +\n            Craft.left +\n            ': -' +\n            Craft.Structure.baseIndent +\n            'px; padding-' +\n            Craft.left +\n            ': ' +\n            Craft.Structure.baseIndent +\n            'px;\">'\n        ).appendTo($li);\n\n      $row.append($element);\n\n      if (this.settings.sortable) {\n        $row.append(\n          '<a class=\"move icon\" title=\"' + Craft.t('app', 'Move') + '\"></a>'\n        );\n        this.structureDrag.addItems($li);\n      }\n\n      if (this.settings.newChildUrl) {\n        var $addBtn = $(\n          '<a class=\"add icon\" title=\"' + Craft.t('app', 'New child') + '\"></a>'\n        ).appendTo($row);\n        this.initNewChildMenus($addBtn);\n      }\n\n      $row.css('margin-bottom', -30);\n      $row.velocity({'margin-bottom': 0}, 'fast');\n    },\n\n    removeElement: function ($element) {\n      var $li = $element.parent().parent();\n\n      if (this.settings.sortable) {\n        this.structureDrag.removeItems($li);\n      }\n\n      var $parentUl;\n\n      if (!$li.siblings().length) {\n        $parentUl = $li.parent();\n      }\n\n      $li\n        .css('visibility', 'hidden')\n        .velocity({marginBottom: -$li.height()}, 'fast', () => {\n          $li.remove();\n\n          if (typeof $parentUl !== 'undefined') {\n            this._removeUl($parentUl);\n          }\n        });\n    },\n\n    _removeUl: function ($ul) {\n      $ul.siblings('.row').children('.toggle').remove();\n      $ul.remove();\n    },\n\n    destroy: function () {\n      this.$container.removeData('structure');\n      this.base();\n    },\n  },\n  {\n    baseIndent: 8,\n    nestedIndent: 35,\n\n    defaults: {\n      storageKey: null,\n      sortable: false,\n      newChildUrl: null,\n      maxLevels: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Structure drag class\n */\nCraft.StructureDrag = Garnish.Drag.extend({\n  structure: null,\n  maxLevels: null,\n  draggeeLevel: null,\n\n  $helperLi: null,\n  $targets: null,\n  draggeeHeight: null,\n\n  init: function (structure, maxLevels) {\n    this.structure = structure;\n    this.maxLevels = maxLevels;\n\n    this.$insertion = $('<li class=\"draginsertion\"/>');\n\n    var $items = this.structure.$container.find('li');\n\n    this.base($items, {\n      handle: '.element:first, .move:first',\n      helper: this.getHelper.bind(this),\n    });\n  },\n\n  getHelper: function ($helper) {\n    this.$helperLi = $helper;\n    var $ul = $('<ul class=\"structure draghelper\"/>').append($helper);\n    $helper.css(\n      'padding-' + Craft.left,\n      this.$draggee.css('padding-' + Craft.left)\n    );\n    $helper.find('.move').removeAttr('title');\n    return $ul;\n  },\n\n  onDragStart: function () {\n    this.$targets = $();\n\n    // Recursively find each of the targets, in the order they appear to be in\n    this.findTargets(this.structure.$container);\n\n    // How deep does the rabbit hole go?\n    this.draggeeLevel = 0;\n    var $level = this.$draggee;\n    do {\n      this.draggeeLevel++;\n      $level = $level.find('> ul > li');\n    } while ($level.length);\n\n    // Collapse the draggee\n    this.draggeeHeight = this.$draggee.height();\n    this.$draggee.velocity(\n      {\n        height: 0,\n      },\n      'fast',\n      () => {\n        this.$draggee.addClass('hidden');\n      }\n    );\n    this.base();\n\n    this.addListener(Garnish.$doc, 'keydown', function (ev) {\n      if (ev.keyCode === Garnish.ESC_KEY) {\n        this.cancelDrag();\n      }\n    });\n  },\n\n  findTargets: function ($ul) {\n    var $lis = $ul.children().not(this.$draggee);\n\n    for (var i = 0; i < $lis.length; i++) {\n      var $li = $($lis[i]);\n      this.$targets = this.$targets.add($li.children('.row'));\n\n      if (!$li.hasClass('collapsed')) {\n        this.findTargets($li.children('ul'));\n      }\n    }\n  },\n\n  onDrag: function () {\n    if (this._.$closestTarget) {\n      this._.$closestTarget.removeClass('draghover');\n      this.$insertion.remove();\n    }\n\n    // First let's find the closest target\n    this._.$closestTarget = null;\n    this._.closestTargetPos = null;\n    this._.closestTargetYDiff = null;\n    this._.closestTargetOffset = null;\n    this._.closestTargetHeight = null;\n\n    for (this._.i = 0; this._.i < this.$targets.length; this._.i++) {\n      this._.$target = $(this.$targets[this._.i]);\n      this._.targetOffset = this._.$target.offset();\n      this._.targetHeight = this._.$target.outerHeight();\n      this._.targetYMidpoint =\n        this._.targetOffset.top + this._.targetHeight / 2;\n      this._.targetYDiff = Math.abs(this.mouseY - this._.targetYMidpoint);\n\n      if (\n        this._.i === 0 ||\n        (this.mouseY >= this._.targetOffset.top + 5 &&\n          this._.targetYDiff < this._.closestTargetYDiff)\n      ) {\n        this._.$closestTarget = this._.$target;\n        this._.closestTargetPos = this._.i;\n        this._.closestTargetYDiff = this._.targetYDiff;\n        this._.closestTargetOffset = this._.targetOffset;\n        this._.closestTargetHeight = this._.targetHeight;\n      } else {\n        // Getting colder\n        break;\n      }\n    }\n\n    if (!this._.$closestTarget) {\n      return;\n    }\n\n    // Are we hovering above the first row?\n    if (\n      this._.closestTargetPos === 0 &&\n      this.mouseY < this._.closestTargetOffset.top + 5\n    ) {\n      this.$insertion.prependTo(this.structure.$container);\n    } else {\n      this._.$closestTargetLi = this._.$closestTarget.parent();\n      this._.closestTargetLevel = this._.$closestTargetLi.data('level');\n\n      // Is there a next row?\n      if (this._.closestTargetPos < this.$targets.length - 1) {\n        this._.$nextTargetLi = $(\n          this.$targets[this._.closestTargetPos + 1]\n        ).parent();\n        this._.nextTargetLevel = this._.$nextTargetLi.data('level');\n      } else {\n        this._.$nextTargetLi = null;\n        this._.nextTargetLevel = null;\n      }\n\n      // Are we hovering between this row and the next one?\n      this._.hoveringBetweenRows =\n        this.mouseY >=\n        this._.closestTargetOffset.top + this._.closestTargetHeight - 5;\n\n      /**\n       * Scenario 1: Both rows have the same level.\n       *\n       *     * Row 1\n       *     ----------------------\n       *     * Row 2\n       */\n\n      if (\n        this._.$nextTargetLi &&\n        this._.nextTargetLevel == this._.closestTargetLevel\n      ) {\n        if (this._.hoveringBetweenRows) {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel - 1\n          ) {\n            // Position the insertion after the closest target\n            this.$insertion.insertAfter(this._.$closestTargetLi);\n          }\n        } else {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel\n          ) {\n            this._.$closestTarget.addClass('draghover');\n          }\n        }\n      } else if (\n        /**\n         * Scenario 2: Next row is a child of this one.\n         *\n         *     * Row 1\n         *     ----------------------\n         *         * Row 2\n         */\n        this._.$nextTargetLi &&\n        this._.nextTargetLevel > this._.closestTargetLevel\n      ) {\n        if (\n          !this.maxLevels ||\n          this.maxLevels >= this._.nextTargetLevel + this.draggeeLevel - 1\n        ) {\n          if (this._.hoveringBetweenRows) {\n            // Position the insertion as the first child of the closest target\n            this.$insertion.insertBefore(this._.$nextTargetLi);\n          } else {\n            this._.$closestTarget.addClass('draghover');\n            this.$insertion.appendTo(this._.$closestTargetLi.children('ul'));\n          }\n        }\n      } else {\n        /**\n         * Scenario 3: Next row is a child of a parent node, or there is no next row.\n         *\n         *         * Row 1\n         *     ----------------------\n         *     * Row 2\n         */\n        if (this._.hoveringBetweenRows) {\n          // Determine which <li> to position the insertion after\n          this._.draggeeX = this.mouseX - this.targetItemMouseDiffX;\n\n          if (Craft.orientation === 'rtl') {\n            this._.draggeeX += this.$helperLi.width();\n          }\n\n          this._.$parentLis = this._.$closestTarget.parentsUntil(\n            this.structure.$container,\n            'li'\n          );\n          this._.$closestParentLi = null;\n          this._.closestParentLiXDiff = null;\n          this._.closestParentLevel = null;\n\n          for (this._.i = 0; this._.i < this._.$parentLis.length; this._.i++) {\n            this._.$parentLi = $(this._.$parentLis[this._.i]);\n            this._.parentLiX = this._.$parentLi.offset().left;\n\n            if (Craft.orientation === 'rtl') {\n              this._.parentLiX += this._.$parentLi.width();\n            }\n\n            this._.parentLiXDiff = Math.abs(this._.parentLiX - this._.draggeeX);\n            this._.parentLevel = this._.$parentLi.data('level');\n\n            if (\n              (!this.maxLevels ||\n                this.maxLevels >= this._.parentLevel + this.draggeeLevel - 1) &&\n              (!this._.$closestParentLi ||\n                (this._.parentLiXDiff < this._.closestParentLiXDiff &&\n                  (!this._.$nextTargetLi ||\n                    this._.parentLevel >= this._.nextTargetLevel)))\n            ) {\n              this._.$closestParentLi = this._.$parentLi;\n              this._.closestParentLiXDiff = this._.parentLiXDiff;\n              this._.closestParentLevel = this._.parentLevel;\n            }\n          }\n\n          if (this._.$closestParentLi) {\n            this.$insertion.insertAfter(this._.$closestParentLi);\n          }\n        } else {\n          if (\n            !this.maxLevels ||\n            this.maxLevels >= this._.closestTargetLevel + this.draggeeLevel\n          ) {\n            this._.$closestTarget.addClass('draghover');\n          }\n        }\n      }\n    }\n  },\n\n  cancelDrag: function () {\n    this.$insertion.remove();\n\n    if (this._.$closestTarget) {\n      this._.$closestTarget.removeClass('draghover');\n    }\n\n    this.onMouseUp();\n  },\n\n  onDragStop: function () {\n    // Are we repositioning the draggee?\n    if (\n      this._.$closestTarget &&\n      (this.$insertion.parent().length ||\n        this._.$closestTarget.hasClass('draghover'))\n    ) {\n      var $draggeeParent, moved;\n\n      // Are we about to leave the draggee's original parent childless?\n      if (!this.$draggee.siblings().length) {\n        $draggeeParent = this.$draggee.parent();\n      }\n\n      if (this.$insertion.parent().length) {\n        // Make sure the insertion isn't right next to the draggee\n        var $closestSiblings = this.$insertion\n          .next()\n          .add(this.$insertion.prev());\n\n        if ($.inArray(this.$draggee[0], $closestSiblings) === -1) {\n          this.$insertion.replaceWith(this.$draggee);\n          moved = true;\n        } else {\n          this.$insertion.remove();\n          moved = false;\n        }\n      } else {\n        var $ul = this._.$closestTargetLi.children('ul');\n\n        // Make sure this is a different parent than the draggee's\n        if (!$draggeeParent || !$ul.length || $ul[0] !== $draggeeParent[0]) {\n          if (!$ul.length) {\n            var $toggle = $(\n              '<div class=\"toggle\" title=\"' +\n                Craft.t('app', 'Show/hide children') +\n                '\"/>'\n            ).prependTo(this._.$closestTarget);\n            this.structure.initToggle($toggle);\n\n            $ul = $('<ul>').appendTo(this._.$closestTargetLi);\n          } else if (this._.$closestTargetLi.hasClass('collapsed')) {\n            this._.$closestTarget.children('.toggle').trigger('click');\n          }\n\n          this.$draggee.appendTo($ul);\n          moved = true;\n        } else {\n          moved = false;\n        }\n      }\n\n      // Remove the class either way\n      this._.$closestTarget.removeClass('draghover');\n\n      if (moved) {\n        // Now deal with the now-childless parent\n        if ($draggeeParent) {\n          this.structure._removeUl($draggeeParent);\n        }\n\n        // Has the level changed?\n        var newLevel =\n          this.$draggee.parentsUntil(this.structure.$container, 'li').length +\n          1;\n\n        var animateCss;\n\n        if (newLevel != this.$draggee.data('level')) {\n          // Correct the helper's padding if moving to/from level 1\n          if (this.$draggee.data('level') == 1) {\n            animateCss = {};\n            animateCss['padding-' + Craft.left] = 38;\n            this.$helperLi.velocity(animateCss, 'fast');\n          } else if (newLevel == 1) {\n            animateCss = {};\n            animateCss['padding-' + Craft.left] = Craft.Structure.baseIndent;\n            this.$helperLi.velocity(animateCss, 'fast');\n          }\n\n          this.setLevel(this.$draggee, newLevel);\n        }\n\n        // Make it real\n        var $element = this.$draggee.children('.row').children('.element');\n\n        var data = {\n          structureId: this.structure.id,\n          elementId: $element.data('id'),\n          siteId: $element.data('site-id'),\n          prevId: this.$draggee\n            .prev()\n            .children('.row')\n            .children('.element')\n            .data('id'),\n          parentId: this.$draggee\n            .parent('ul')\n            .parent('li')\n            .children('.row')\n            .children('.element')\n            .data('id'),\n        };\n\n        Craft.sendActionRequest('POST', 'structures/move-element', {data}).then(\n          (response) => {\n            Craft.cp.displaySuccess(Craft.t('app', 'New order saved.'));\n          }\n        );\n      }\n    }\n\n    // Animate things back into place\n    this.$draggee\n      .velocity('stop')\n      .removeClass('hidden')\n      .velocity(\n        {\n          height: this.draggeeHeight,\n        },\n        'fast',\n        () => {\n          this.$draggee.css('height', 'auto');\n        }\n      );\n\n    this.returnHelpersToDraggees();\n\n    this.base();\n  },\n\n  setLevel: function ($li, level) {\n    $li.data('level', level);\n\n    var indent = this.structure.getIndent(level);\n\n    var css = {};\n    css['margin-' + Craft.left] = '-' + indent + 'px';\n    css['padding-' + Craft.left] = indent + 'px';\n    this.$draggee.children('.row').css(css);\n\n    var $childLis = $li.children('ul').children();\n\n    for (var i = 0; i < $childLis.length; i++) {\n      this.setLevel($($childLis[i]), level + 1);\n    }\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Table Element Index View\n */\nCraft.TableElementIndexView = Craft.BaseElementIndexView.extend({\n  $table: null,\n  $tableCaption: null,\n  $selectedSortHeader: null,\n  $statusMessage: null,\n  $editBtn: null,\n  $saveBtn: null,\n  $cancelBtn: null,\n\n  tableSort: null,\n\n  _totalVisiblePostStructureTableDraggee: null,\n  _morePendingPostStructureTableDraggee: false,\n\n  _broadcastListener: null,\n\n  initialSerializedValue: null,\n\n  getElementContainer: function () {\n    // Save a reference to the table\n    this.$table = this.$container.find('table:first');\n    return this.$table.children('tbody:first');\n  },\n\n  afterInit: function () {\n    // Set table caption\n    this.$tableCaption = this.$table.find('caption');\n\n    // Set the sort header\n    this.initTableHeaders();\n\n    this.createScrollbar();\n\n    // Create the table sorter\n    if (\n      (this.settings.sortable ||\n        (this.elementIndex.isAdministrative &&\n          this.elementIndex.viewMode === 'structure' &&\n          Garnish.hasAttr(this.$table, 'data-structure-id'))) &&\n      !this.elementIndex.inlineEditing\n    ) {\n      this.tableSort = new Craft.ElementTableSorter(\n        this,\n        this.getAllElements(),\n        {\n          structureId: this.$table.data('structure-id'),\n          maxLevels: this.$table.attr('data-max-levels'),\n          onSortChange: () => {\n            this.settings.onSortChange(this.tableSort.$draggee);\n          },\n        }\n      );\n    }\n\n    // Handle expand/collapse toggles for Structures\n    if (\n      this.elementIndex.viewMode === 'structure' &&\n      !this.elementIndex.inlineEditing\n    ) {\n      this.addListener(this.$elementContainer, 'click', function (ev) {\n        var $target = $(ev.target);\n\n        if ($target.hasClass('toggle')) {\n          if (this._collapseElement($target) === false) {\n            this._expandElement($target);\n          }\n        }\n      });\n    }\n\n    if (\n      this.elementIndex.isAdministrative &&\n      this.elementIndex.settings.inlineEditable !== false &&\n      this.$elementContainer.has('> tr[data-id] > th .element[data-editable]')\n    ) {\n      this.initForInlineEditing();\n    }\n\n    // Set up the broadcast listener\n    if (Craft.messageReceiver) {\n      this._broadcastListener = (ev) => {\n        if (ev.data.event === 'saveElement') {\n          const $rows = this.$table.find(\n            `> tbody > tr[data-id=\"${ev.data.id}\"]`\n          );\n          if ($rows.length) {\n            const data = {\n              elementType: this.elementIndex.elementType,\n              source: this.elementIndex.sourceKey,\n              id: ev.data.id,\n              siteId: this.elementIndex.siteId,\n            };\n            Craft.sendActionRequest(\n              'POST',\n              'element-indexes/element-table-html',\n              {data}\n            ).then(({data}) => {\n              for (let i = 0; i < $rows.length; i++) {\n                const $row = $rows.eq(i);\n                $row\n                  .find('> th[data-titlecell] .element')\n                  .replaceWith(data.elementHtml);\n                for (let attribute in data.attributeHtml) {\n                  if (data.attributeHtml.hasOwnProperty(attribute)) {\n                    $row\n                      .find(`> td[data-attr=\"${attribute}\"]`)\n                      .html(data.attributeHtml[attribute]);\n                  }\n                }\n              }\n              Craft.cp.elementThumbLoader.load($rows);\n            });\n          }\n        }\n      };\n\n      Craft.messageReceiver.addEventListener(\n        'message',\n        this._broadcastListener\n      );\n    }\n  },\n\n  initForInlineEditing: function () {\n    if (this.elementIndex.inlineEditing) {\n      Craft.initUiElements(this.$elementContainer);\n      this.initialSerializedValue = this.serializeInputs();\n\n      this.$saveBtn = Craft.ui\n        .createSubmitButton({\n          label: Craft.t('app', 'Save'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n      this.$cancelBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Cancel'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n\n      this.addListener(this.$saveBtn, 'activate', () => {\n        this.$saveBtn.addClass('loading');\n        this.saveChanges()\n          .then((data) => {\n            if (data.errors) {\n              for (let elementId in data.errors) {\n                if (data.errors.hasOwnProperty(elementId)) {\n                  const $row = this.$elementContainer.children(\n                    `[data-id=\"${elementId}\"]`\n                  );\n                  for (let attribute in data.errors[elementId]) {\n                    $row\n                      .find(`[name*=\"${attribute}\"]`)\n                      .closest('td')\n                      .addClass('errors');\n                  }\n                }\n              }\n\n              this.elementIndex.setIndexAvailable();\n              Craft.cp.displayError(\n                Craft.t('app', 'Could not save due to validation errors.')\n              );\n              return;\n            }\n\n            Craft.cp.displaySuccess(Craft.t('app', 'Changes saved.'));\n            this.elementIndex.inlineEditing = false;\n            this.elementIndex.updateElements(true, false);\n          })\n          .catch(() => {\n            this.elementIndex.setIndexAvailable();\n            Craft.cp.displayError();\n          })\n          .finally(() => {\n            this.$saveBtn.removeClass('loading');\n          });\n      });\n\n      this.addListener(this.$cancelBtn, 'activate', () => {\n        this.$cancelBtn.addClass('loading');\n        this.elementIndex.inlineEditing = false;\n        this.elementIndex.updateElements(true, false);\n      });\n\n      this.addListener(this.$elementContainer, 'keydown', (event) => {\n        if (\n          event.keyCode === Garnish.RETURN_KEY &&\n          Garnish.isCtrlKeyPressed(event)\n        ) {\n          this.$saveBtn.trigger('click');\n        } else if (\n          event.keyCode === Garnish.S_KEY &&\n          Garnish.isCtrlKeyPressed(event)\n        ) {\n          event.stopPropagation();\n          event.preventDefault();\n          this.$saveBtn.trigger('click');\n        }\n      });\n    } else {\n      this.$editBtn = Craft.ui\n        .createButton({\n          label: Craft.t('app', 'Edit'),\n          spinner: true,\n        })\n        .insertBefore(this.elementIndex.$exportBtn);\n      this.addListener(this.$editBtn, 'activate', () => {\n        this.$editBtn.addClass('loading');\n        this.elementIndex.inlineEditing = true;\n        this.elementIndex.updateElements(true, false);\n      });\n    }\n  },\n\n  serializeInputs: function () {\n    const data = Garnish.getPostData(this.$elementContainer);\n    const serialized = [];\n    for (let i in data) {\n      serialized.push(encodeURIComponent(`${i}=${data[i]}`));\n    }\n    return serialized.join('&');\n  },\n\n  getDeltaInputChanges: function () {\n    const deltaNames = this.$elementContainer\n      .children()\n      .toArray()\n      .map(\n        (e) =>\n          `${this.elementIndex.nestedInputNamespace}[element-${$(e).data(\n            'id'\n          )}]`\n      );\n    return Craft.findDeltaData(\n      this.initialSerializedValue,\n      this.serializeInputs(),\n      deltaNames\n    );\n  },\n\n  haveInputsChanged: function () {\n    return this.serializeInputs() !== this.initialSerializedValue;\n  },\n\n  saveChanges: async function () {\n    let data = this.getDeltaInputChanges();\n    if (!data) {\n      return {};\n    }\n\n    data +=\n      '&' +\n      $.param({\n        elementType: this.elementIndex.elementType,\n        siteId: this.elementIndex.siteId,\n        namespace: this.elementIndex.nestedInputNamespace,\n      });\n\n    const response = await Craft.sendActionRequest(\n      'POST',\n      'element-indexes/save-elements',\n      {\n        data,\n      }\n    );\n\n    return response.data;\n  },\n\n  initTableHeaders: function () {\n    if (this.settings.sortable || this.elementIndex.inlineEditing) {\n      return;\n    }\n\n    let selectedSortAttr, selectedSortDir;\n    if (this.elementIndex.viewMode === 'structure') {\n      selectedSortAttr = 'structure';\n      selectedSortDir = 'asc';\n    } else {\n      [selectedSortAttr, selectedSortDir] =\n        this.elementIndex.getSortAttributeAndDirection();\n    }\n\n    const $tableHeaders = this.$table\n      .children('thead')\n      .children()\n      .children('[data-attribute]');\n\n    for (let i = 0; i < $tableHeaders.length; i++) {\n      const $header = $tableHeaders.eq(i);\n      const attr = $header.attr('data-attribute');\n      let sortValue = 'none';\n\n      // Is this the selected sort attribute?\n      if (attr === selectedSortAttr) {\n        this.$selectedSortHeader = $header;\n        sortValue = selectedSortDir === 'asc' ? 'ascending' : 'descending';\n        $header.addClass('ordered ' + selectedSortDir);\n        this.makeColumnSortable($header, true);\n      } else {\n        // Is this attribute sortable?\n        if (this.elementIndex.getSortOption(attr)) {\n          this.makeColumnSortable($header);\n        }\n      }\n\n      $header.attr('aria-sort', sortValue);\n    }\n  },\n\n  makeColumnSortable: function ($header, sorted = false) {\n    $header.addClass('orderable');\n\n    const headerHtml = $header.html();\n    const $instructions = this.$tableCaption.find('[data-sort-instructions]');\n    const $headerButton = $('<button/>', {\n      id: `${this.elementIndex.idPrefix}-${$header.attr('data-attribute')}`,\n      type: 'button',\n      'aria-pressed': 'false',\n    }).html(headerHtml);\n\n    if ($instructions.length) {\n      $headerButton.attr('aria-describedby', $instructions.attr('id'));\n    }\n\n    if (sorted) {\n      $headerButton.attr('aria-pressed', 'true');\n      $headerButton.on('click', this._handleSelectedSortHeaderClick.bind(this));\n    } else {\n      $headerButton.on(\n        'click',\n        this._handleUnselectedSortHeaderClick.bind(this)\n      );\n    }\n\n    $header.empty().append($headerButton);\n  },\n\n  isVerticalList: function () {\n    return true;\n  },\n\n  getTotalVisible: function () {\n    if (this._isStructureTableDraggingLastElements()) {\n      return this._totalVisiblePostStructureTableDraggee;\n    } else {\n      return this._totalVisible;\n    }\n  },\n\n  setTotalVisible: function (totalVisible) {\n    if (this._isStructureTableDraggingLastElements()) {\n      this._totalVisiblePostStructureTableDraggee = totalVisible;\n    } else {\n      this._totalVisible = totalVisible;\n    }\n  },\n\n  getMorePending: function () {\n    if (this._isStructureTableDraggingLastElements()) {\n      return this._morePendingPostStructureTableDraggee;\n    } else {\n      return this._morePending;\n    }\n  },\n\n  setMorePending: function (morePending) {\n    if (this._isStructureTableDraggingLastElements()) {\n      this._morePendingPostStructureTableDraggee = morePending;\n    } else {\n      this._morePending = this._morePendingPostStructureTableDraggee =\n        morePending;\n    }\n  },\n\n  getLoadMoreParams: function () {\n    var params = this.base();\n\n    // If we are dragging the last elements on the page,\n    // tell the controller to only load elements positioned after the draggee.\n    if (this._isStructureTableDraggingLastElements()) {\n      params.criteria.positionedAfter = this.tableSort.$targetItem.data('id');\n    }\n\n    return params;\n  },\n\n  appendElements: function ($newElements) {\n    this.base($newElements);\n\n    if (this.tableSort) {\n      this.tableSort.addItems($newElements);\n    }\n\n    Craft.cp.updateResponsiveTables();\n  },\n\n  _collapseElement: function ($toggle, force) {\n    if (!force && !$toggle.hasClass('expanded')) {\n      return false;\n    }\n\n    $toggle.removeClass('expanded');\n    $toggle.attr('aria-expanded', 'false');\n\n    // Find and remove the descendant rows\n    var $row = $toggle.closest('tr'),\n      id = $row.data('id'),\n      level = $row.data('level'),\n      $nextRow = $row.next();\n\n    while ($nextRow.length) {\n      if (!Garnish.hasAttr($nextRow, 'data-spinnerrow')) {\n        if ($nextRow.data('level') <= level) {\n          break;\n        }\n\n        if (this.elementSelect) {\n          this.elementSelect.removeItems($nextRow);\n        }\n\n        if (this.tableSort) {\n          this.tableSort.removeItems($nextRow);\n        }\n\n        this._totalVisible--;\n      }\n\n      var $nextNextRow = $nextRow.next();\n      $nextRow.remove();\n      $nextRow = $nextNextRow;\n    }\n\n    // Remember that this row should be collapsed\n    if (!this.elementIndex.instanceState.collapsedElementIds) {\n      this.elementIndex.instanceState.collapsedElementIds = [];\n    }\n\n    this.elementIndex.instanceState.collapsedElementIds.push(id);\n    this.elementIndex.setInstanceState(\n      'collapsedElementIds',\n      this.elementIndex.instanceState.collapsedElementIds\n    );\n\n    // Bottom of the index might be viewable now\n    this.maybeLoadMore();\n  },\n\n  _expandElement: function ($toggle, force) {\n    if (!force && $toggle.hasClass('expanded')) {\n      return false;\n    }\n\n    $toggle.addClass('expanded');\n    $toggle.attr('aria-expanded', 'true');\n\n    // Remove this element from our list of collapsed elements\n    if (this.elementIndex.instanceState.collapsedElementIds) {\n      var $row = $toggle.closest('tr'),\n        id = $row.data('id'),\n        index = $.inArray(\n          id,\n          this.elementIndex.instanceState.collapsedElementIds\n        );\n\n      if (index !== -1) {\n        this.elementIndex.instanceState.collapsedElementIds.splice(index, 1);\n        this.elementIndex.setInstanceState(\n          'collapsedElementIds',\n          this.elementIndex.instanceState.collapsedElementIds\n        );\n\n        // Add a temporary row\n        var $spinnerRow = this._createSpinnerRowAfter($row);\n\n        // Load the nested elements\n        let data = $.extend(true, {}, this.settings.params);\n        data.criteria.descendantOf = id;\n\n        Craft.sendActionRequest('POST', this.settings.loadMoreElementsAction, {\n          data,\n        })\n          .then(async (response) => {\n            // Do we even care about this anymore?\n            if (!$spinnerRow.parent().length) {\n              return;\n            }\n\n            let $newElements = $(response.data.html);\n\n            // Are there more descendants we didn't get in this batch?\n            let totalVisible = this._totalVisible + $newElements.length;\n            let morePending =\n              this.settings.batchSize &&\n              $newElements.length === this.settings.batchSize;\n\n            if (morePending) {\n              // Remove all the elements after it\n              let $nextRows = $spinnerRow.nextAll();\n\n              if (this.elementSelect) {\n                this.elementSelect.removeItems($nextRows);\n              }\n\n              if (this.tableSort) {\n                this.tableSort.removeItems($nextRows);\n              }\n\n              $nextRows.remove();\n              totalVisible -= $nextRows.length;\n            } else {\n              // Maintain the current 'more' status\n              morePending = this._morePending;\n            }\n\n            $spinnerRow.replaceWith($newElements);\n            this.thumbLoader.load($newElements);\n\n            if (this.elementIndex.actions || this.settings.selectable) {\n              this.elementSelect.addItems(\n                $newElements.filter(':not(.disabled)')\n              );\n              this.elementIndex.updateActionTriggers();\n            }\n\n            if (this.tableSort) {\n              this.tableSort.addItems($newElements);\n            }\n\n            await Craft.appendHeadHtml(response.data.headHtml);\n            await Craft.appendBodyHtml(response.data.bodyHtml);\n            Craft.cp.updateResponsiveTables();\n\n            this.setTotalVisible(totalVisible);\n            this.setMorePending(morePending);\n\n            // Is there room to load more right now?\n            this.maybeLoadMore();\n          })\n          .catch((e) => {\n            Craft.cp.displayError();\n            if (!$spinnerRow.parent().length) {\n              return;\n            }\n          });\n      }\n    }\n  },\n\n  _createSpinnerRowAfter: function ($row) {\n    return $(\n      '<tr data-spinnerrow>' +\n        '<td class=\"centeralign\" colspan=\"' +\n        $row.children().length +\n        '\">' +\n        '<div class=\"spinner\"/>' +\n        '</td>' +\n        '</tr>'\n    ).insertAfter($row);\n  },\n\n  _isStructureTableDraggingLastElements: function () {\n    return (\n      this.tableSort &&\n      this.tableSort.dragging &&\n      this.tableSort.draggingLastElements\n    );\n  },\n\n  _handleSelectedSortHeaderClick: function (ev) {\n    var $header = $(ev.currentTarget).closest('th');\n\n    if ($header.hasClass('loading')) {\n      return;\n    }\n\n    // Reverse the sort direction\n    var selectedSortDir = this.elementIndex.getSelectedSortDirection(),\n      newSortDir = selectedSortDir === 'asc' ? 'desc' : 'asc';\n\n    // In case it's actually the structure view\n    this.elementIndex.selectViewMode('table');\n\n    this.elementIndex.setSelectedSortDirection(newSortDir);\n    this._handleSortHeaderClick(ev, $header);\n  },\n\n  _handleUnselectedSortHeaderClick: function (ev) {\n    var $header = $(ev.currentTarget).closest('th');\n\n    if ($header.hasClass('loading')) {\n      return;\n    }\n\n    var attr = $header.attr('data-attribute');\n\n    // In case it's actually the structure view\n    this.elementIndex.selectViewMode('table');\n\n    this.elementIndex.setSelectedSortAttribute(attr);\n    this._handleSortHeaderClick(ev, $header);\n  },\n\n  _handleSortHeaderClick: function (ev, $header) {\n    if (this.$selectedSortHeader) {\n      this.$selectedSortHeader.removeClass('ordered asc desc');\n    }\n\n    $header.addClass('ordered loading');\n    this.elementIndex.updateElements();\n\n    // No need for two spinners\n    this.elementIndex.setIndexAvailable();\n  },\n\n  _updateTableAttributes: function ($element, tableAttributes) {\n    var $tr = $element.closest('tr');\n\n    for (var attr in tableAttributes) {\n      if (!tableAttributes.hasOwnProperty(attr)) {\n        continue;\n      }\n\n      $tr\n        .children('[data-attr=\"' + attr + '\"]:first')\n        .html(tableAttributes[attr]);\n    }\n  },\n\n  destroy: function () {\n    if (this.$editBtn) {\n      this.$editBtn.remove();\n    } else if (this.$cancelBtn) {\n      this.$saveBtn.remove();\n      this.$cancelBtn.remove();\n    }\n\n    if (this._broadcastListener) {\n      Craft.messageReceiver.removeEventListener(\n        'message',\n        this._broadcastListener\n      );\n      delete this._broadcastListener;\n    }\n\n    this.base();\n  },\n\n  createScrollbar() {\n    const footer = document.querySelector('#content > #footer');\n    const stickyScrollbar = document.createElement('craft-proxy-scrollbar');\n    stickyScrollbar.setAttribute('scroller', '.tablepane');\n    stickyScrollbar.setAttribute('content', '.tablepane > table');\n\n    stickyScrollbar.style.bottom = `${\n      footer.getBoundingClientRect().height + 2\n    }px`;\n\n    let $scrollbar = $(stickyScrollbar);\n    const observer = new IntersectionObserver(\n      ([ev]) => {\n        if (ev.intersectionRatio < 1) {\n          $scrollbar.insertAfter(this.$container);\n        } else {\n          $scrollbar.remove();\n        }\n      },\n      {\n        rootMargin: '0px 0px -1px 0px',\n        threshold: [1],\n      }\n    );\n    observer.observe(footer);\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Tab manager\n */\nCraft.Tabs = Garnish.Base.extend({\n  $container: null,\n  $tablist: null,\n  $menuBtn: null,\n  $tabs: null,\n  $firstTab: null,\n  $lastTab: null,\n  $selectedTab: null,\n  $focusableTab: null,\n  menu: null,\n\n  init: function (container) {\n    this.$container = $(container);\n    this.$tablist = this.$container.find('> [role=\"tablist\"]:first');\n    this.$tabs = this.$tablist.find('> [role=\"tab\"]');\n    this.$firstTab = this.$tabs.first();\n    this.$lastTab = this.$tabs.last();\n    this.$selectedTab = this.$tabs.filter('.sel:first');\n    this.$focusableTab = this.$tabs.filter('[tabindex=0]:first');\n    this.$menuBtn = this.$container.find('> .menubtn:first').disclosureMenu();\n    this.menu = this.$menuBtn.data('trigger').$container;\n\n    // Is there already a tab manager?\n    if (this.$container.data('tabs')) {\n      console.warn('Double-instantiating a tab manager on an element');\n      this.$container.data('tabs').destroy();\n    }\n\n    this.$container.data('tabs', this);\n\n    for (let i = 0; i < this.$tabs.length; i++) {\n      const $a = this.$tabs.eq(i);\n\n      // Does it link to an anchor?\n      const href = $a.attr('href');\n      if (href && href.charAt(0) === '#') {\n        this.addListener($a, 'keydown', (ev) => {\n          if ([Garnish.SPACE_KEY, Garnish.RETURN_KEY].includes(ev.keyCode)) {\n            ev.preventDefault();\n            this.selectTab(ev.currentTarget, true);\n          }\n        });\n        this.addListener($a, 'click', (ev) => {\n          ev.preventDefault();\n          this.selectTab(ev.currentTarget, true);\n        });\n      }\n\n      this.addListener($a, 'keydown', (ev) => {\n        let $tab;\n        if (\n          [Garnish.LEFT_KEY, Garnish.RIGHT_KEY].includes(ev.keyCode) &&\n          $.contains(this.$tablist[0], ev.currentTarget)\n        ) {\n          if (\n            ev.keyCode ===\n            (Craft.orientation === 'ltr' ? Garnish.LEFT_KEY : Garnish.RIGHT_KEY)\n          ) {\n            $tab = $(ev.currentTarget).prevAll(\n              '[role=\"tab\"]:not(.hidden):first'\n            );\n            $tab = $tab.length ? $tab : this.$lastTab;\n          } else {\n            $tab = $(ev.currentTarget).nextAll(\n              '[role=\"tab\"]:not(.hidden):first'\n            );\n            $tab = $tab.length ? $tab : this.$firstTab;\n          }\n        } else if (\n          ev.keyCode === Garnish.HOME_KEY ||\n          ev.keyCode === Garnish.END_KEY\n        ) {\n          $tab =\n            ev.keyCode === Garnish.HOME_KEY ? this.$firstTab : this.$lastTab;\n        }\n\n        if ($tab) {\n          ev.preventDefault();\n          this.makeTabFocusable($tab);\n          $tab.focus();\n          this.scrollToTab($tab);\n        }\n      });\n    }\n\n    this.updateMenuBtn();\n\n    Garnish.$win.on('resize', () => {\n      this.updateMenuBtn();\n    });\n\n    const $options = this.getMenuOptions();\n    this.addListener($options, 'activate', (ev) => {\n      const $option = $(ev.currentTarget);\n\n      // Prevent menu options from updating the URL\n      const href = $option.attr('href');\n      if (href && href.charAt(0) === '#') {\n        ev.preventDefault();\n      }\n\n      // Select tab\n      this.selectTab($option.data('id'));\n      this.$menuBtn.data('trigger').hide();\n    });\n  },\n\n  getMenuOptions: function () {\n    return this.menu.find('a');\n  },\n\n  selectTab: function (tab, focusTab = true) {\n    const $tab = this._getTab(tab);\n\n    if ($tab[0] === this.$selectedTab[0]) {\n      return;\n    }\n\n    this.deselectTab();\n    this.$selectedTab = $tab.addClass('sel').attr('aria-selected', 'true');\n    this.makeTabFocusable($tab);\n\n    if (focusTab) {\n      $tab.trigger('focus');\n    }\n\n    this.scrollToTab($tab);\n\n    this.getMenuOptions().removeClass('sel').removeAttr('aria-current');\n    this.getMenuOptions()\n      .filter(`[data-id=\"${$tab.data('id')}\"]`)\n      .addClass('sel')\n      .attr('aria-current', 'true');\n\n    this.trigger('selectTab', {\n      $tab: $tab,\n    });\n\n    $('#content').trigger('scroll');\n\n    const $slideoutContainer = $tab.closest('.slideout-container');\n    if ($slideoutContainer.length) {\n      $slideoutContainer.find('.so-content').trigger('scroll');\n    }\n  },\n\n  deselectTab: function () {\n    const $tab = this.$selectedTab\n      .removeClass('sel')\n      .attr('aria-selected', 'false');\n    this.$selectedTab = null;\n\n    this.trigger('deselectTab', {\n      $tab: $tab,\n    });\n  },\n\n  makeTabFocusable: function (tab) {\n    const $tab = this._getTab(tab);\n\n    if ($tab[0] === this.$focusableTab[0]) {\n      return;\n    }\n\n    this.$focusableTab.attr('tabindex', '-1');\n    this.$focusableTab = $tab.attr('tabindex', '0');\n  },\n\n  scrollToTab: function (tab) {\n    const $tab = this._getTab(tab);\n    const scrollLeft = this.$tablist.scrollLeft();\n    const tabOffset = $tab.offset().left;\n    const elemScrollOffset = tabOffset - this.$tablist.offset().left;\n    let targetScrollLeft = false;\n\n    // Is the tab hidden on the left?\n    if (elemScrollOffset < 0) {\n      targetScrollLeft = scrollLeft + elemScrollOffset - 24;\n    } else {\n      const tabWidth = $tab.outerWidth();\n      const ulWidth = this.$tablist.prop('clientWidth');\n\n      // Is it hidden to the right?\n      if (elemScrollOffset + tabWidth > ulWidth) {\n        targetScrollLeft =\n          scrollLeft + (elemScrollOffset - (ulWidth - tabWidth)) + 24;\n      }\n    }\n\n    if (targetScrollLeft !== false) {\n      this.$tablist.scrollLeft(targetScrollLeft);\n    }\n  },\n\n  updateMenuBtn: function () {\n    if (\n      Math.floor(this.$tablist.prop('scrollWidth') - 48) >\n      this.$container.prop('clientWidth')\n    ) {\n      this.$tablist.addClass('scrollable');\n      this.$menuBtn.removeClass('hidden');\n    } else {\n      this.$tablist.removeClass('scrollable');\n      this.$menuBtn.addClass('hidden');\n    }\n  },\n\n  _getTab: function (tab) {\n    if (tab instanceof jQuery) {\n      return tab;\n    }\n\n    if (tab instanceof HTMLElement) {\n      return $(tab);\n    }\n\n    if (typeof tab !== 'string') {\n      throw 'Invalid tab ID';\n    }\n\n    const $tab = this.$tabs.filter(`[data-id=\"${tab}\"]`);\n\n    if (!$tab.length) {\n      throw `Invalid tab ID: ${tab}`;\n    }\n\n    return $tab;\n  },\n\n  destroy: function () {\n    this.$container.removeData('tabs');\n    this.base();\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Tag select input\n */\nCraft.TagSelectInput = Craft.BaseElementSelectInput.extend(\n  {\n    searchTimeout: null,\n    searchMenu: null,\n\n    $container: null,\n    $elementsContainer: null,\n    $elements: null,\n    $addTagInput: null,\n    $spinner: null,\n\n    _ignoreBlur: false,\n\n    init: function (settings) {\n      // Normalize the settings\n      // ---------------------------------------------------------------------\n\n      // Are they still passing in a bunch of arguments?\n      if (!$.isPlainObject(settings)) {\n        // Loop through all of the old arguments and apply them to the settings\n        var normalizedSettings = {},\n          args = ['id', 'name', 'tagGroupId', 'sourceElementId'];\n\n        for (var i = 0; i < args.length; i++) {\n          if (typeof arguments[i] !== 'undefined') {\n            normalizedSettings[args[i]] = arguments[i];\n          } else {\n            break;\n          }\n        }\n\n        settings = normalizedSettings;\n      }\n\n      this.base($.extend({}, Craft.TagSelectInput.defaults, settings));\n\n      this.$addTagInput = this.$container.children('.add').children('.text');\n      this.$spinner = this.$addTagInput.next();\n\n      this.addListener(this.$addTagInput, 'input', () => {\n        if (this.searchTimeout) {\n          clearTimeout(this.searchTimeout);\n        }\n\n        this.searchTimeout = setTimeout(this.searchForTags.bind(this), 500);\n      });\n\n      this.addListener(this.$addTagInput, 'keydown', function (ev) {\n        if (ev.keyCode === Garnish.RETURN_KEY) {\n          ev.preventDefault();\n        }\n\n        let $option;\n\n        switch (ev.keyCode) {\n          case Garnish.RETURN_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              this.selectTag(this.searchMenu.$options.filter('.hover'));\n            }\n            return;\n          }\n\n          case Garnish.DOWN_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              let $hoverOption = this.searchMenu.$options.filter('.hover');\n              if ($hoverOption.length) {\n                let $nextOption = $hoverOption\n                  .parent()\n                  .nextAll()\n                  .find('button:not(.disabled)')\n                  .first();\n                if ($nextOption.length) {\n                  this.focusOption($nextOption);\n                }\n              } else {\n                this.focusOption(this.searchMenu.$options.eq(0));\n              }\n            }\n            return;\n          }\n\n          case Garnish.UP_KEY: {\n            ev.preventDefault();\n            if (this.searchMenu) {\n              let $hoverOption = this.searchMenu.$options.filter('.hover');\n              if ($hoverOption.length) {\n                let $prevOption = $hoverOption\n                  .parent()\n                  .prevAll()\n                  .find('button:not(.disabled)')\n                  .last();\n                if ($prevOption.length) {\n                  this.focusOption($prevOption);\n                }\n              } else {\n                this.focusOption(\n                  this.searchMenu.$options.eq(\n                    this.searchMenu.$options.length - 1\n                  )\n                );\n              }\n            }\n            return;\n          }\n        }\n      });\n\n      this.addListener(this.$addTagInput, 'focus', function () {\n        if (this.searchMenu) {\n          this.searchMenu.show();\n        }\n      });\n\n      this.addListener(this.$addTagInput, 'blur', function () {\n        if (this._ignoreBlur) {\n          this._ignoreBlur = false;\n          return;\n        }\n\n        setTimeout(() => {\n          if (this.searchMenu) {\n            this.searchMenu.hide();\n          }\n        }, 1);\n      });\n    },\n\n    focusOption: function ($option) {\n      this.searchMenu.$options.removeClass('hover');\n      $option.addClass('hover');\n      this.searchMenu.$menuList.attr(\n        'aria-activedescendant',\n        $option.attr('id')\n      );\n    },\n\n    // No \"add\" button\n    getAddElementsBtn: function () {\n      return [];\n    },\n\n    getElementSortAxis: function () {\n      return 'x';\n    },\n\n    searchForTags: function () {\n      if (this.searchMenu) {\n        this.killSearchMenu();\n      }\n\n      var val = this.$addTagInput.val();\n\n      if (val) {\n        this.$spinner.removeClass('hidden');\n\n        var excludeIds = [];\n\n        for (var i = 0; i < this.$elements.length; i++) {\n          var id = $(this.$elements[i]).data('id');\n\n          if (id) {\n            excludeIds.push(id);\n          }\n        }\n\n        // take allowSelfRelations into consideration too\n        if (\n          this.settings.sourceElementId &&\n          !this.settings.allowSelfRelations\n        ) {\n          excludeIds.push(this.settings.sourceElementId);\n        }\n\n        var data = {\n          search: this.$addTagInput.val(),\n          tagGroupId: this.settings.tagGroupId,\n          excludeIds: excludeIds,\n        };\n\n        Craft.sendActionRequest('POST', 'tags/search-for-tags', {data})\n          .then((response) => {\n            if (this.searchMenu) {\n              this.killSearchMenu();\n            }\n            this.$spinner.addClass('hidden');\n            var $menu = $('<div class=\"menu tagmenu\"/>').appendTo(Garnish.$bod),\n              $ul = $('<ul/>').appendTo($menu);\n\n            var $li;\n\n            for (var i = 0; i < response.data.tags.length; i++) {\n              $li = $('<li/>').appendTo($ul);\n\n              $('<button class=\"menu-item\" data-icon=\"tag\"/>')\n                .appendTo($li)\n                .text(response.data.tags[i].title)\n                .data('id', response.data.tags[i].id)\n                .addClass(response.data.tags[i].exclude ? 'disabled' : '');\n            }\n\n            if (!response.data.exactMatch) {\n              $li = $('<li/>').appendTo($ul);\n              $('<button class=\"menu-item\" data-icon=\"plus\"/>')\n                .appendTo($li)\n                .text(data.search);\n            }\n\n            $ul.find('button:not(.disabled):first').addClass('hover');\n\n            this.searchMenu = new Garnish.Menu($menu, {\n              attachToElement: this.$addTagInput,\n              onOptionSelect: this.selectTag.bind(this),\n            });\n\n            this.addListener($menu, 'mousedown', () => {\n              this._ignoreBlur = true;\n            });\n\n            this.searchMenu.show();\n          })\n          .catch(({response}) => {\n            // Just in case\n            if (this.searchMenu) {\n              this.killSearchMenu();\n            }\n\n            this.$spinner.addClass('hidden');\n          });\n      } else {\n        this.$spinner.addClass('hidden');\n      }\n    },\n\n    selectTag: function (option) {\n      var $option = $(option);\n\n      if ($option.hasClass('disabled')) {\n        return;\n      }\n\n      var id = $option.data('id');\n      var title = $option.text();\n\n      const $element = $('<div/>', {\n        class: 'chip element small removable',\n        'data-id': id,\n        'data-site-id': this.settings.targetSiteId,\n        'data-label': title,\n        'data-editable': '1',\n      });\n\n      const $li = $('<li/>').appendTo(this.$elementsContainer);\n      $element.appendTo($li);\n\n      var $chipContent = $('<div/>', {\n        class: 'chip-content',\n      }).appendTo($element);\n\n      var $titleContainer = $('<div/>', {\n        class: 'label',\n      }).appendTo($chipContent);\n\n      var $labelLinkContainer = $('<a/>', {\n        class: 'label-link',\n      }).appendTo($titleContainer);\n\n      $('<span/>', {\n        class: 'title',\n        text: title,\n      }).appendTo($labelLinkContainer);\n\n      var $chipActions = $('<div/>', {\n        class: 'chip-actions',\n      }).appendTo($chipContent);\n\n      var $input = $('<input/>', {\n        type: 'hidden',\n        name: this.settings.name + '[]',\n        value: id,\n      }).appendTo($chipContent);\n\n      this.$elements = this.$elements.add($element);\n\n      this.addElements($element);\n\n      this.killSearchMenu();\n      this.$addTagInput.val('');\n      this.$addTagInput.trigger('focus');\n\n      if (!id) {\n        // We need to create the tag first\n        $element.addClass('loading disabled');\n\n        var data = {\n          groupId: this.settings.tagGroupId,\n          title: title,\n        };\n\n        Craft.sendActionRequest('POST', 'tags/create-tag', {data})\n          .then((response) => {\n            $element.attr('data-id', response.data.id);\n            $input.val(response.data.id);\n\n            $element.removeClass('loading disabled');\n          })\n          .catch(({response}) => {\n            this.removeElement($element);\n            Craft.cp.displayError(Craft.t('app', 'A server error occurred.'));\n          });\n      }\n    },\n\n    killSearchMenu: function () {\n      this.searchMenu.hide();\n      this.searchMenu.destroy();\n      this.searchMenu = null;\n    },\n  },\n  {\n    defaults: {\n      tagGroupId: null,\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Thumb Element Index View\n */\nCraft.ThumbsElementIndexView = Craft.BaseElementIndexView.extend({\n  getElementContainer: function () {\n    return this.$container.children('ul');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n\n/**\n * Tooltip\n */\nCraft.Tooltip = Garnish.Base.extend({\n  _$trigger: null,\n  _message: null,\n  hud: null,\n  $p: null,\n  hoverTimeout: null,\n  triggerHit: false,\n  shownViaHover: false,\n\n  init: function (trigger, message) {\n    this.$trigger = $(trigger);\n    this.message = message;\n\n    if (\n      this.$trigger[0].tagName !== 'BUTTON' &&\n      this.$trigger.attr('role') !== 'button'\n    ) {\n      console.error('Toggletip buttons need to be <button> elements.');\n    }\n\n    // do our own mouseover/mouseout checks since the native ones are unreliable\n    this.addListener(Garnish.$bod, 'mousemove', (ev) => {\n      if (\n        this.triggerHit !==\n        (this.triggerHit = Garnish.hitTest(ev.pageX, ev.pageY, this._$trigger))\n      ) {\n        if (this.triggerHit) {\n          if (!this.showing) {\n            this.hoverTimeout = setTimeout(() => {\n              this.show();\n              this.shownViaHover = true;\n            }, 500);\n          }\n        } else {\n          clearTimeout(this.hoverTimeout);\n          if (this.shownViaHover) {\n            this.hide();\n          }\n        }\n      }\n    });\n  },\n\n  get showing() {\n    return this.hud && this.hud.showing;\n  },\n\n  get $trigger() {\n    return this._$trigger;\n  },\n\n  set $trigger($trigger) {\n    if (this._$trigger) {\n      this.removeAllListeners(this._$trigger);\n    }\n\n    this._$trigger = $trigger;\n\n    this._$trigger.on('blur', () => {\n      this.hide();\n    });\n    this._$trigger.on('activate', () => {\n      // If it's currently shown via hover, keep showing it and remove shownViaHover\n      if (this.showing && this.shownViaHover) {\n        this.shownViaHover = false;\n      } else {\n        this.toggle();\n      }\n\n      this._$trigger.focus();\n    });\n\n    if (this.hud) {\n      this.hud.$trigger = $trigger;\n      if (this.hud.showing) {\n        this.hud.updateSizeAndPosition(true);\n      }\n    }\n  },\n\n  get message() {\n    return this._message;\n  },\n\n  set message(message) {\n    this._message = message;\n\n    if (this.$p) {\n      this.$p.text(message);\n    }\n  },\n\n  show: function (userId) {\n    this.shownViaHover = false;\n\n    if (this.showing) {\n      return;\n    }\n\n    this.$trigger.attr('aria-expanded', 'true');\n\n    if (!this.hud) {\n      this.$p = $('<p/>', {text: this._message});\n      this.hud = new Craft.Tooltip.HUD(this._$trigger, this.$p, {\n        hudClass: 'hud tooltip-hud',\n        withShade: false,\n        onShow: () => {\n          this.onShow();\n        },\n        onHide: () => {\n          this.onHide();\n        },\n      });\n    } else {\n      this.hud.show();\n    }\n  },\n\n  hide: function () {\n    if (!this.showing) {\n      return;\n    }\n\n    this.$trigger.attr('aria-expanded', 'false');\n\n    if (this.hud) {\n      this.hud.hide();\n    }\n  },\n\n  toggle: function () {\n    if (this.showing) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  },\n\n  onShow: function () {\n    clearTimeout(this.hoverTimeout);\n    this.$p.text(this.message);\n  },\n\n  onHide: function () {\n    clearTimeout(this.hoverTimeout);\n    this.$p.text('');\n  },\n});\n\nCraft.Tooltip.HUD = Garnish.HUD.extend({\n  init: function (trigger, bodyContents, settings) {\n    this.base(trigger, bodyContents, settings);\n    this.$hud.attr('role', 'status');\n  },\n\n  showContainer: function () {\n    this.$hud.removeClass('visually-hidden');\n  },\n\n  hideContainer: function () {\n    this.$hud.addClass('visually-hidden');\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\nCraft.ui = {\n  createButton: function (config) {\n    const $btn = $('<button/>', {\n      type: config.type || 'button',\n      class: 'btn',\n    });\n    if (config.id) {\n      $btn.attr('id', config.id);\n    }\n    if (config.class) {\n      $btn.addClass(config.class);\n    }\n    if (config.ariaLabel) {\n      $btn.attr('aria-label', config.ariaLabel);\n    }\n    if (config.role) {\n      $btn.attr('role', config.role);\n    }\n    if (config.html) {\n      $btn.html(config.html);\n    } else if (config.label) {\n      $btn.append($('<div class=\"label\"/>').text(config.label));\n    } else {\n      $btn.addClass('btn-empty');\n    }\n    if (config.toggle) {\n      $btn.attr('aria-expanded', 'false');\n    }\n    if (config.controls) {\n      $btn.attr('aria-controls', config.controls);\n    }\n    if (config.spinner) {\n      $btn.append($('<div class=\"spinner spinner-absolute\"/>'));\n    }\n    return $btn;\n  },\n\n  createSubmitButton: function (config) {\n    const $btn = this.createButton(\n      Object.assign({}, config, {\n        type: 'submit',\n        label: config.label || Craft.t('app', 'Submit'),\n      })\n    );\n    $btn.addClass('submit');\n    return $btn;\n  },\n\n  createTextInput: function (config) {\n    config = $.extend(\n      {\n        autocomplete: false,\n      },\n      config\n    );\n    var $input = $('<input/>', {\n      attr: {\n        class: 'text',\n        type: config.type || 'text',\n        inputmode: config.inputmode,\n        id: config.id,\n        size: config.size,\n        name: config.name,\n        value: config.value,\n        maxlength: config.maxlength,\n        autofocus: this.getAutofocusValue(config.autofocus),\n        autocomplete:\n          typeof config.autocomplete === 'boolean'\n            ? config.autocomplete\n              ? 'on'\n              : 'off'\n            : config.autocomplete,\n        disabled: this.getDisabledValue(config.disabled),\n        readonly: config.readonly,\n        title: config.title,\n        placeholder: config.placeholder,\n        step: config.step,\n        min: config.min,\n        max: config.max,\n      },\n    });\n\n    if (config.class) {\n      $input.addClass(config.class);\n    }\n    if (config.placeholder) {\n      $input.addClass('nicetext');\n    }\n    if (config.type === 'password') {\n      $input.addClass('password');\n    }\n    if (config.disabled) {\n      $input.addClass('disabled');\n    }\n    if (!config.size) {\n      $input.addClass('fullwidth');\n    }\n\n    if (config.showCharsLeft && config.maxlength) {\n      $input\n        .attr('data-show-chars-left')\n        .css(\n          'padding-' + (Craft.orientation === 'ltr' ? 'right' : 'left'),\n          7.2 * config.maxlength.toString().length + 14 + 'px'\n        );\n    }\n\n    if (config.placeholder || config.showCharsLeft) {\n      new Garnish.NiceText($input);\n    }\n\n    if (config.type === 'password') {\n      return $('<div class=\"passwordwrapper\"/>').append($input);\n    } else {\n      return $input;\n    }\n  },\n\n  createTextField: function (config) {\n    if (!config.id) {\n      config.id = 'text' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTextInput(config), config);\n  },\n\n  createPasswordInput(config) {\n    return this.createTextInput(\n      Object.assign({}, config, {\n        type: 'password',\n      })\n    );\n  },\n\n  createPasswordField(config) {\n    return this.createTextField(\n      Object.assign({}, config, {\n        type: 'password',\n      })\n    );\n  },\n\n  createCopyTextInput: function (config) {\n    let id = config.id || 'copytext' + Math.floor(Math.random() * 1000000000);\n    let buttonId = config.buttonId || `${id}-btn`;\n\n    let $container = $('<div/>', {\n      class: 'copytext',\n    });\n\n    let $input = this.createTextInput(\n      $.extend({}, config, {\n        readonly: true,\n      })\n    ).appendTo($container);\n\n    let $btn = $('<button/>', {\n      type: 'button',\n      id: buttonId,\n      class: 'btn',\n      'data-icon': 'clipboard',\n      title: Craft.t('app', 'Copy to clipboard'),\n      'aria-label': Craft.t('app', 'Copy to clipboard'),\n    }).appendTo($container);\n\n    $btn.on('click', () => {\n      $input[0].select();\n      document.execCommand('copy');\n      Craft.cp.displayNotice(Craft.t('app', 'Copied to clipboard.'));\n      $container.trigger('copy');\n      $input[0].setSelectionRange(0, 0);\n    });\n\n    return $container;\n  },\n\n  createCopyTextBtn: function (config) {\n    let id = config.id || 'copytext' + Math.floor(Math.random() * 1000000000);\n    let value = config.value;\n\n    const $wrapper = $('<div/>', {\n      class: 'copytextbtn-wrapper',\n    });\n\n    let $btn = $('<div/>', {\n      id,\n      class: 'copytextbtn',\n      role: 'button',\n      title: Craft.t('app', 'Copy to clipboard'),\n      tabindex: '0',\n    }).appendTo($wrapper);\n\n    if (config.class) {\n      $btn.addClass(config.class);\n    }\n\n    let $input = $('<input/>', {\n      value,\n      readonly: true,\n      size: value.length,\n      tabindex: '-1',\n      'aria-hidden': 'true',\n      class: 'visually-hidden',\n    }).insertBefore($btn);\n\n    const $value = $('<span/>', {\n      text: value,\n      class: 'copytextbtn__value',\n    }).appendTo($btn);\n\n    $('<span/>', {\n      class: 'visually-hidden',\n      text: Craft.t('app', 'Copy to clipboard'),\n    }).appendTo($btn);\n\n    let $icon = $('<span/>', {\n      class: 'copytextbtn__icon',\n      'data-icon': 'clipboard',\n      'aria-hidden': 'true',\n    }).appendTo($btn);\n\n    const copyValue = function () {\n      $input[0].select();\n      document.execCommand('copy');\n      Craft.cp.displayNotice(Craft.t('app', 'Copied to clipboard.'));\n      $btn.trigger('copy');\n      $input[0].setSelectionRange(0, 0);\n      $btn.focus();\n    };\n\n    $btn.on('activate', () => {\n      copyValue();\n    });\n\n    $btn.on('keydown', (ev) => {\n      if (ev.keyCode === Garnish.SPACE_KEY) {\n        copyValue();\n        ev.preventDefault();\n      }\n    });\n\n    return $wrapper;\n  },\n\n  createCopyTextField: function (config) {\n    if (!config.id) {\n      config.id = 'copytext' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createCopyTextInput(config), config);\n  },\n\n  createCopyTextPrompt: function (config) {\n    let $container = $('<div/>', {\n      class: 'modal fitted',\n    });\n    let $body = $('<div/>', {\n      class: 'body',\n    }).appendTo($container);\n    this.createCopyTextField(\n      $.extend(\n        {\n          size: Math.max(Math.min(config.value.length, 50), 25),\n        },\n        config\n      )\n    ).appendTo($body);\n\n    const $label = $body.find('label');\n\n    // Provide accessible name for modal dialog\n    if ($label.length > 0 && $label.attr('id')) {\n      $container.attr('aria-labelledby', $label.attr('id'));\n    }\n\n    let modal = new Garnish.Modal($container, {\n      closeOtherModals: false,\n    });\n    $container.on('copy', () => {\n      modal.hide();\n    });\n    return $container;\n  },\n\n  createTextarea: function (config) {\n    var $textarea = $('<textarea/>', {\n      class: 'text',\n      rows: config.rows || 2,\n      cols: config.cols || 50,\n      id: config.id,\n      name: config.name,\n      maxlength: config.maxlength,\n      autofocus: config.autofocus && !Garnish.isMobileBrowser(true),\n      disabled: !!config.disabled,\n      placeholder: config.placeholder,\n      html: config.value,\n    });\n\n    if (config.showCharsLeft) {\n      $textarea.attr('data-show-chars-left', '');\n    }\n\n    if (config.class) {\n      $textarea.addClass(config.class);\n    }\n\n    if (!config.size) {\n      $textarea.addClass('fullwidth');\n    }\n\n    return $textarea;\n  },\n\n  createTextareaField: function (config) {\n    if (!config.id) {\n      config.id = 'textarea' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTextarea(config), config);\n  },\n\n  createSelect: function (config) {\n    var $container = $('<div/>', {\n      class: 'select',\n    });\n\n    if (config.class) {\n      $container.addClass(config.class);\n    }\n\n    var $select = $('<select/>', {\n      id: config.id,\n      name: config.name,\n      autofocus: config.autofocus && Garnish.isMobileBrowser(true),\n      disabled: config.disabled,\n      'data-target-prefix': config.targetPrefix,\n      'aria-labelledby': config.labelledBy,\n    }).appendTo($container);\n\n    // Normalize the options into an array\n    if ($.isPlainObject(config.options)) {\n      let options = [];\n      for (var key in config.options) {\n        if (!config.options.hasOwnProperty(key)) {\n          continue;\n        }\n        let option = config.options[key];\n        if ($.isPlainObject(option)) {\n          if (typeof option.optgroup !== 'undefined') {\n            options.push(option);\n          } else {\n            options.push({\n              label: option.label,\n              value: typeof option.value !== 'undefined' ? option.value : key,\n              disabled:\n                typeof option.disabled !== 'undefined'\n                  ? option.disabled\n                  : false,\n            });\n          }\n        } else {\n          options.push({\n            label: option,\n            value: key,\n          });\n        }\n      }\n      config.options = options;\n    }\n\n    var $optgroup = null;\n\n    for (let i = 0; i < config.options.length; i++) {\n      let option = config.options[i];\n\n      // Starting a new <optgroup>?\n      if (typeof option.optgroup !== 'undefined') {\n        $optgroup = $('<optgroup/>', {\n          label: option.optgroup,\n        }).appendTo($select);\n      } else {\n        $('<option/>', {\n          value: option.value,\n          selected: option.value == config.value,\n          disabled:\n            typeof option.disabled !== 'undefined' ? option.disabled : false,\n          html: option.label,\n        }).appendTo($optgroup || $select);\n      }\n    }\n\n    if (config.toggle) {\n      $select.addClass('fieldtoggle');\n      new Craft.FieldToggle($select);\n    }\n\n    return $container;\n  },\n\n  createSelectField: function (config) {\n    if (!config.id) {\n      config.id = 'select' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createSelect(config), config);\n  },\n\n  createCheckbox: function (config) {\n    var id = config.id || 'checkbox' + Math.floor(Math.random() * 1000000000);\n\n    var $input = $('<input/>', {\n      type: 'checkbox',\n      value: typeof config.value !== 'undefined' ? config.value : '1',\n      id: id,\n      class: 'checkbox',\n      name: config.name,\n      checked: config.checked ? 'checked' : null,\n      autofocus: this.getAutofocusValue(config.autofocus),\n      disabled: this.getDisabledValue(config.disabled),\n      'data-target': config.toggle,\n      'data-reverse-target': config.reverseToggle,\n    });\n\n    if (config.class) {\n      $input.addClass(config.class);\n    }\n\n    if (config.toggle || config.reverseToggle) {\n      $input.addClass('fieldtoggle');\n      new Craft.FieldToggle($input);\n    }\n\n    var $label = $('<label/>', {\n      for: id,\n      html: config.label,\n    });\n\n    // Should we include a hidden input first?\n    if (\n      config.name &&\n      (config.name.length < 3 || config.name.slice(-2) !== '[]')\n    ) {\n      return $([\n        $('<input/>', {\n          type: 'hidden',\n          name: config.name,\n          value: '',\n        })[0],\n        $input[0],\n        $label[0],\n      ]);\n    } else {\n      return $([$input[0], $label[0]]);\n    }\n  },\n\n  createCheckboxField: function (config) {\n    if (!config.id) {\n      config.id = 'checkbox' + Math.floor(Math.random() * 1000000000);\n    }\n\n    var $field = $('<div class=\"field checkboxfield\"/>', {\n      id: `${config.id}-field`,\n    });\n\n    if (config.first) {\n      $field.addClass('first');\n    }\n    if (config.instructions) {\n      $field.addClass('has-instructions');\n    }\n\n    this.createCheckbox(config).appendTo($field);\n\n    if (config.instructions) {\n      $('<div class=\"instructions\"/>')\n        .text(config.instructions)\n        .appendTo($field);\n    }\n\n    return $field;\n  },\n\n  createCheckboxSelect: function (config) {\n    const $container = $('<fieldset class=\"checkbox-select\"/>');\n\n    if (config.class) {\n      $container.addClass(config.class);\n    }\n\n    let values = config.values || [];\n    let allChecked = false;\n\n    if (config.showAllOption) {\n      const allValue = config.allValue || '*';\n\n      if (values === allValue) {\n        values = config.options.map((o) => o.value);\n        allChecked = true;\n      }\n\n      // Create the \"All\" checkbox\n      $('<div/>')\n        .appendTo($container)\n        .append(\n          this.createCheckbox({\n            id: config.id,\n            class: 'all',\n            label: '<b>' + (config.allLabel || Craft.t('app', 'All')) + '</b>',\n            name: config.name,\n            value: allValue,\n            checked: allChecked,\n            autofocus: config.autofocus,\n          })\n        );\n\n      // omit the “all” value from the options\n      config.options = config.options.filter((o) => o.value !== allValue);\n    } else {\n      allChecked = false;\n    }\n\n    if (!Array.isArray(values)) {\n      values = [];\n    }\n\n    if (config.sortable) {\n      // Make sure the selected options are listed first\n      config.options.sort((a, b) => {\n        let aPos = values.indexOf(a.value);\n        let bPos = values.indexOf(b.value);\n        if (aPos === -1) {\n          aPos = values.length;\n        }\n        if (bPos === -1) {\n          bPos = values.length;\n        }\n        return aPos - bPos;\n      });\n    }\n\n    // Create the actual options\n    for (let i = 0; i < config.options.length; i++) {\n      const option = config.options[i];\n\n      const $option = $('<div/>', {\n        class: 'checkbox-select-item',\n      }).appendTo($container);\n\n      if (config.sortable) {\n        $('<div/>', {class: 'icon move'}).appendTo($option);\n      }\n\n      this.createCheckbox({\n        label: Craft.escapeHtml(option.label),\n        name: config.name ? Craft.ensureEndsWith(config.name, '[]') : null,\n        value: option.value,\n        checked: allChecked || values.includes(option.value),\n        disabled: allChecked,\n      }).appendTo($option);\n    }\n\n    new Garnish.CheckboxSelect($container);\n\n    if (config.sortable) {\n      const dragSort = new Garnish.DragSort($container.children(':not(.all)'), {\n        handle: '.move',\n        axis: 'y',\n      });\n      $container.data('dragSort', dragSort);\n    }\n\n    return $container;\n  },\n\n  createCheckboxSelectField: function (config) {\n    config.fieldset = true;\n    if (!config.id) {\n      config.id = 'checkboxselect' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createCheckboxSelect(config), config);\n  },\n\n  createLightswitch: function (config) {\n    var value = config.value || '1';\n    var indeterminateValue = config.indeterminateValue || '-';\n\n    var $container = $('<button/>', {\n      type: 'button',\n      class: 'lightswitch',\n      'data-value': value,\n      'data-indeterminate-value': indeterminateValue,\n      id: config.id,\n      role: 'switch',\n      'aria-checked': config.on\n        ? 'true'\n        : config.indeterminate\n          ? 'mixed'\n          : 'false',\n      'aria-labelledby': config.labelId,\n      'data-target': config.toggle,\n      'data-reverse-target': config.reverseToggle,\n    });\n\n    if (config.on) {\n      $container.addClass('on');\n    } else if (config.indeterminate) {\n      $container.addClass('indeterminate');\n    }\n\n    if (config.small) {\n      $container.addClass('small');\n    }\n\n    if (config.disabled) {\n      $container.addClass('disabled');\n    }\n\n    $(\n      '<div class=\"lightswitch-container\">' +\n        '<div class=\"handle\"></div>' +\n        '</div>'\n    ).appendTo($container);\n\n    if (config.name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: config.name,\n        value: config.on\n          ? value\n          : config.indeterminate\n            ? indeterminateValue\n            : '',\n        disabled: config.disabled,\n      }).appendTo($container);\n    }\n\n    if (config.toggle || config.reverseToggle) {\n      $container.addClass('fieldtoggle');\n      new Craft.FieldToggle($container);\n    }\n\n    new Craft.LightSwitch($container, {\n      onChange: config.onChange || $.noop,\n    });\n\n    return $container;\n  },\n\n  createLightswitchField: function (config) {\n    if (!config.id) {\n      config.id = 'lightswitch' + Math.floor(Math.random() * 1000000000);\n    }\n    if (!config.labelId) {\n      config.labelId = `${config.id}-label`;\n    }\n    return this.createField(this.createLightswitch(config), config).addClass(\n      'lightswitch-field'\n    );\n  },\n\n  createColorInput: function (config) {\n    const id = config.id || 'color' + Math.floor(Math.random() * 1000000000);\n    const containerId = config.containerId || id + '-container';\n    const name = config.name || null;\n    const value = config.value || null;\n    const small = config.small || false;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      id: containerId,\n      class: 'flex color-container',\n    });\n\n    const $colorPreviewContainer = $('<div/>', {\n      class: 'color static' + (small ? ' small' : ''),\n    }).appendTo($container);\n\n    const $colorPreview = $('<div/>', {\n      class: 'color-preview',\n      style: config.value ? {backgroundColor: config.value} : null,\n    }).appendTo($colorPreviewContainer);\n\n    const $inputContainer = $('<div/>', {\n      class: 'color-input-container',\n    })\n      .append(\n        $('<div/>', {\n          class: 'color-hex-indicator light code',\n          'aria-hidden': 'true',\n          text: '#',\n        })\n      )\n      .appendTo($container);\n\n    const $input = this.createTextInput({\n      id: id,\n      name: name,\n      value: Craft.ltrim(value, '#'),\n      size: 10,\n      class: 'color-input',\n      autofocus: autofocus,\n      disabled: disabled,\n      'aria-label': Craft.t('app', 'Color hex value'),\n    }).appendTo($inputContainer);\n\n    new Craft.ColorInput($container);\n    return $container;\n  },\n\n  createColorField: function (config) {\n    config.fieldset = true;\n    o;\n    if (!config.id) {\n      config.id = 'color' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createColorInput(config), config);\n  },\n\n  createDateInput: function (config) {\n    const isMobile = Garnish.isMobileBrowser();\n    const id =\n      (config.id || 'date' + Math.floor(Math.random() * 1000000000)) + '-date';\n    const name = config.name || null;\n    const inputName = name ? name + '[date]' : null;\n    const value =\n      config.value && typeof config.value.getMonth === 'function'\n        ? config.value\n        : null;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      class: 'datewrapper',\n    });\n\n    const $input = this.createTextInput({\n      id: id,\n      type: isMobile ? 'date' : 'text',\n      class: isMobile && !value ? 'empty-value' : false,\n      name: inputName,\n      value: value\n        ? isMobile\n          ? value.toISOString().split('T')[0]\n          : Craft.formatDate(value)\n        : '',\n      placeholder: ' ',\n      autocomplete: false,\n      autofocus: autofocus,\n      disabled: disabled,\n    }).appendTo($container);\n\n    $('<div data-icon=\"date\"></div>').appendTo($container);\n\n    if (name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: name + '[timezone]',\n        val: Craft.timezone,\n      }).appendTo($container);\n    }\n\n    if (isMobile) {\n      $input.datetimeinput();\n    } else {\n      $input.datepicker(\n        $.extend(\n          {\n            defaultDate: value || new Date(),\n          },\n          Craft.datepickerOptions\n        )\n      );\n    }\n\n    if (config.hasOuterContainer) {\n      return $container;\n    }\n\n    return $('<div class=\"datetimewrapper\"/>').append($container).datetime();\n  },\n\n  createDateField: function (config) {\n    if (!config.id) {\n      config.id = 'date' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createDateInput(config), config);\n  },\n\n  createDateRangePicker: function (config) {\n    var now = new Date();\n    var today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n    config = $.extend(\n      {\n        class: '',\n        options: [\n          'today',\n          'thisWeek',\n          'thisMonth',\n          'thisYear',\n          'past7Days',\n          'past30Days',\n          'past90Days',\n          'pastYear',\n        ],\n        onChange: $.noop,\n        selected: null,\n        startDate: null,\n        endDate: null,\n      },\n      config\n    );\n\n    var $menu = $('<div/>', {class: 'menu'});\n    var $ul = $('<ul/>', {class: 'padded'}).appendTo($menu);\n    var $allOption = $('<a/>')\n      .addClass('sel')\n      .text(Craft.t('app', 'All'))\n      .data('handle', 'all');\n\n    $('<li/>').append($allOption).appendTo($ul);\n\n    var option;\n    var selectedOption;\n    for (var i = 0; i < config.options.length; i++) {\n      var handle = config.options[i];\n      switch (handle) {\n        case 'today':\n          option = {\n            label: Craft.t('app', 'Today'),\n            startDate: today,\n            endDate: today,\n          };\n          break;\n        case 'thisWeek':\n          var firstDayOffset = now.getDay() - Craft.datepickerOptions.firstDay;\n          if (firstDayOffset < 0) {\n            firstDayOffset += 7;\n          }\n          option = {\n            label: Craft.t('app', 'This week'),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - firstDayOffset\n            ),\n            endDate: today,\n          };\n          break;\n        case 'thisMonth':\n          option = {\n            label: Craft.t('app', 'This month'),\n            startDate: new Date(now.getFullYear(), now.getMonth()),\n            endDate: today,\n          };\n          break;\n        case 'thisYear':\n          option = {\n            label: Craft.t('app', 'This year'),\n            startDate: new Date(now.getFullYear(), 0),\n            endDate: today,\n          };\n          break;\n        case 'past7Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 7}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 7\n            ),\n            endDate: today,\n          };\n          break;\n        case 'past30Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 30}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 30\n            ),\n            endDate: today,\n          };\n          break;\n        case 'past90Days':\n          option = {\n            label: Craft.t('app', 'Past {num} days', {num: 90}),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 90\n            ),\n            endDate: today,\n          };\n          break;\n        case 'pastYear':\n          option = {\n            label: Craft.t('app', 'Past year'),\n            startDate: new Date(\n              now.getFullYear(),\n              now.getMonth(),\n              now.getDate() - 365\n            ),\n            endDate: today,\n          };\n          break;\n      }\n\n      var $li = $('<li/>');\n      var $a = $('<a/>', {text: option.label})\n        .data('handle', handle)\n        .data('startDate', option.startDate)\n        .data('endDate', option.endDate)\n        .data('startTime', option.startDate ? option.startDate.getTime() : null)\n        .data('endTime', option.endDate ? option.endDate.getTime() : null);\n\n      if (config.selected && handle == config.selected) {\n        selectedOption = $a[0];\n      }\n\n      $li.append($a);\n      $li.appendTo($ul);\n    }\n\n    $('<hr/>').appendTo($menu);\n\n    var $flex = $('<div/>', {class: 'flex flex-nowrap padded'}).appendTo($menu);\n    var $startDate = this.createDateField({label: Craft.t('app', 'From')})\n      .appendTo($flex)\n      .find('input');\n    var $endDate = this.createDateField({label: Craft.t('app', 'To')})\n      .appendTo($flex)\n      .find('input');\n\n    // prevent ESC keypresses in the date inputs from closing the menu\n    var $dateInputs = $startDate.add($endDate);\n    $dateInputs.on('keyup', function (ev) {\n      if (\n        ev.keyCode === Garnish.ESC_KEY &&\n        $(this).data('datepicker') &&\n        $(this).data('datepicker').dpDiv.is(':visible')\n      ) {\n        ev.stopPropagation();\n      }\n    });\n\n    // prevent clicks in the datepicker divs from closing the menu\n    if ($startDate.data('datepicker')) {\n      $startDate.data('datepicker').dpDiv.on('mousedown', function (ev) {\n        ev.stopPropagation();\n      });\n    }\n    if ($endDate.data('datepicker')) {\n      $endDate.data('datepicker').dpDiv.on('mousedown', function (ev) {\n        ev.stopPropagation();\n      });\n    }\n\n    var menu = new Garnish.Menu($menu, {\n      onOptionSelect: function (option) {\n        var $option = $(option);\n        $btn.text($option.text());\n        menu.setPositionRelativeToAnchor();\n        $menu.find('.sel').removeClass('sel');\n        $option.addClass('sel');\n\n        // Update the start/end dates\n        if (!$startDate.hasClass('hasDatepicker')) {\n          $startDate.val($option.data('startDate'));\n          $endDate.val($option.data('endDate'));\n        } else {\n          $startDate.datepicker('setDate', $option.data('startDate'));\n          $endDate.datepicker('setDate', $option.data('endDate'));\n        }\n\n        config.onChange(\n          $option.data('startDate') || null,\n          $option.data('endDate') || null,\n          $option.data('handle')\n        );\n      },\n    });\n\n    $dateInputs.on('change', function () {\n      let startDate = null;\n      let endDate = null;\n      // Do the start & end dates match one of our options?\n      if (!$startDate.hasClass('hasDatepicker')) {\n        let startDateVal = $startDate.val();\n        if (startDateVal !== '') {\n          startDate = new Date(Date.parse(startDateVal));\n        }\n\n        let endDateVal = $endDate.val();\n        if (endDateVal !== '') {\n          endDate = new Date(Date.parse(endDateVal));\n        }\n      } else {\n        startDate = $startDate.datepicker('getDate');\n        endDate = $endDate.datepicker('getDate');\n      }\n\n      let startTime = startDate ? startDate.getTime() : null;\n      let endTime = endDate ? endDate.getTime() : null;\n\n      let $options = $ul.find('a');\n      let $option;\n      let foundOption = false;\n\n      for (let i = 0; i < $options.length; i++) {\n        $option = $options.eq(i);\n        if (\n          startTime === ($option.data('startTime') || null) &&\n          endTime === ($option.data('endTime') || null)\n        ) {\n          menu.selectOption($option[0]);\n          foundOption = true;\n          config.onChange(null, null, $option.data('handle'));\n          break;\n        }\n      }\n\n      if (!foundOption) {\n        $menu.find('.sel').removeClass('sel');\n        $flex.addClass('sel');\n\n        if (!startTime && !endTime) {\n          $btn.text(Craft.t('app', 'All'));\n        } else if (startTime && endTime) {\n          $btn.text($startDate.val() + ' - ' + $endDate.val());\n        } else if (startTime) {\n          $btn.text(Craft.t('app', 'From {date}', {date: $startDate.val()}));\n        } else {\n          $btn.text(Craft.t('app', 'To {date}', {date: $endDate.val()}));\n        }\n        menu.setPositionRelativeToAnchor();\n\n        config.onChange(startDate, endDate, 'custom');\n      }\n    });\n\n    menu.on('hide', function () {\n      $startDate.datepicker('hide');\n      $endDate.datepicker('hide');\n    });\n\n    let btnClasses = 'btn menubtn';\n    if (config.class) {\n      btnClasses = btnClasses + ' ' + config.class;\n    }\n\n    let $btn = $('<button/>', {\n      type: 'button',\n      class: btnClasses,\n      'data-icon': 'date',\n      text: Craft.t('app', 'All'),\n    });\n\n    new Garnish.MenuBtn($btn, menu);\n\n    if (selectedOption) {\n      menu.selectOption(selectedOption);\n    }\n\n    if (config.startDate) {\n      if (!$startDate.hasClass('hasDatepicker')) {\n        // we need the date to be in yyyy-mm-dd format\n        let offset = config.startDate.getTimezoneOffset();\n        let startDate = new Date(\n          config.startDate.getTime() - offset * 60 * 1000\n        );\n        $startDate.val(startDate.toISOString().split('T')[0]);\n      } else {\n        $startDate.datepicker('setDate', config.startDate);\n      }\n    }\n\n    if (config.endDate) {\n      if (!$endDate.hasClass('hasDatepicker')) {\n        // we need the date to be in yyyy-mm-dd format\n        let offset = config.endDate.getTimezoneOffset();\n        let endDate = new Date(config.endDate.getTime() - offset * 60 * 1000);\n        $endDate.val(endDate.toISOString().split('T')[0]);\n      } else {\n        $endDate.datepicker('setDate', config.endDate);\n      }\n    }\n\n    if (config.startDate || config.endDate) {\n      $dateInputs.trigger('change');\n    }\n\n    return $btn;\n  },\n\n  createTimeInput: function (config) {\n    const isMobile = Garnish.isMobileBrowser();\n    const id =\n      (config.id || 'time' + Math.floor(Math.random() * 1000000000)) + '-time';\n    const name = config.name || null;\n    const inputName = name ? name + '[time]' : null;\n    const value =\n      config.value && typeof config.value.getMonth === 'function'\n        ? config.value\n        : null;\n    const autofocus = config.autofocus && Garnish.isMobileBrowser(true);\n    const disabled = config.disabled || false;\n\n    const $container = $('<div/>', {\n      class: 'timewrapper',\n    });\n\n    const $input = this.createTextInput({\n      id: id,\n      type: isMobile ? 'time' : 'text',\n      class: isMobile && !value ? 'empty-value' : false,\n      name: inputName,\n      placeholder: ' ',\n      autocomplete: false,\n      autofocus: autofocus,\n      disabled: disabled,\n    }).appendTo($container);\n\n    $('<div data-icon=\"time\"></div>').appendTo($container);\n\n    if (name) {\n      $('<input/>', {\n        type: 'hidden',\n        name: name + '[timezone]',\n        val: Craft.timezone,\n      }).appendTo($container);\n    }\n\n    if (isMobile) {\n      if (value) {\n        $input.val(value.toISOString().split('T')[1]);\n      }\n      $input.datetimeinput();\n    } else {\n      $input.timepicker(Craft.timepickerOptions);\n      if (value) {\n        $input.timepicker(\n          'setTime',\n          value.getHours() * 3600 + value.getMinutes() * 60 + value.getSeconds()\n        );\n      }\n    }\n\n    if (config.hasOuterContainer) {\n      return $container;\n    }\n\n    return $('<div class=\"datetimewrapper\"/>').append($container).datetime();\n  },\n\n  createTimeField: function (config) {\n    if (!config.id) {\n      config.id = 'time' + Math.floor(Math.random() * 1000000000);\n    }\n    return this.createField(this.createTimeInput(config), config);\n  },\n\n  createField: function (input, config) {\n    const label =\n      config.label && config.label !== '__blank__' ? config.label : null;\n\n    const $field = $(config.fieldset ? '<fieldset/>' : '<div/>', {\n      class: 'field',\n      id: config.fieldId || (config.id ? config.id + '-field' : null),\n    });\n\n    if (config.first) {\n      $field.addClass('first');\n    }\n\n    if (config.fieldClass) {\n      $field.addClass(config.fieldClass);\n    }\n\n    if (label && config.fieldset) {\n      $('<legend/>', {\n        text: label,\n        class: 'visually-hidden',\n        'data-label': label,\n      }).appendTo($field);\n    }\n\n    if (label) {\n      const $heading = $('<div class=\"heading\"/>').appendTo($field);\n\n      $(config.fieldset ? '<legend/>' : '<label/>', {\n        id:\n          config.labelId ||\n          (config.id\n            ? `${config.id}-${config.fieldset ? 'legend' : 'label'}`\n            : null),\n        class: config.required ? 'required' : null,\n        for: (!config.fieldset && config.id) || null,\n        text: label,\n      }).appendTo($heading);\n    }\n\n    if (config.instructions) {\n      $('<div class=\"instructions\"/>')\n        .text(config.instructions)\n        .appendTo($field);\n    }\n\n    $('<div class=\"input\"/>').append(input).appendTo($field);\n\n    if (config.tip) {\n      const $tip = $('<p class=\"notice has-icon\"/>');\n      $('<span class=\"icon\" aria-hidden=\"true\"/>').appendTo($tip);\n      $('<span class=\"visually-hidden\"/>')\n        .text(Craft.t('app', 'Tip') + ': ')\n        .appendTo($tip);\n      $('<span/>').text(config.tip).appendTo($tip);\n      $tip.appendTo($field);\n    }\n\n    if (config.warning) {\n      const $warning = $('<p class=\"warning has-icon\"/>');\n      $('<span class=\"icon\" aria-hidden=\"true\"/>').appendTo($warning);\n      $('<span class=\"visually-hidden\"/>')\n        .text(Craft.t('app', 'Warning') + ': ')\n        .appendTo($warning);\n      $('<span/>').text(config.warning).appendTo($warning);\n      $warning.appendTo($field);\n    }\n\n    if (config.errors) {\n      this.addErrorsToField($field, config.errors);\n    }\n\n    return $field;\n  },\n\n  createErrorList: function (errors, fieldErrorsId) {\n    const $list = $('<ul class=\"errors\" tabindex=\"-1\"/>');\n    if (fieldErrorsId) {\n      $list.attr('id', fieldErrorsId);\n    }\n\n    if (errors) {\n      this.addErrorsToList($list, errors);\n    }\n\n    return $list;\n  },\n\n  addErrorsToList: function ($list, errors) {\n    for (var i = 0; i < errors.length; i++) {\n      $('<li/>').text(errors[i].replaceAll('*', '')).appendTo($list);\n    }\n  },\n\n  addErrorsToField: function ($field, errors) {\n    if (!errors) {\n      return;\n    }\n\n    $field.addClass('has-errors');\n    $field.children('.input').addClass('errors');\n\n    const fieldId = $field.attr('id');\n    let fieldErrorsId = '';\n    if (fieldId) {\n      fieldErrorsId = fieldId.replace(new RegExp(`(-field)$`), '-errors');\n    }\n\n    let $errors = $field.children('ul.errors');\n\n    if (!$errors.length) {\n      $errors = this.createErrorList(null, fieldErrorsId).appendTo($field);\n    }\n\n    this.addErrorsToList($errors, errors);\n  },\n\n  clearErrorsFromField: function ($field) {\n    $field.removeClass('has-errors');\n    $field.children('.input').removeClass('errors');\n    $field.children('ul.errors').remove();\n  },\n\n  clearErrorSummary: function ($body) {\n    $body.find('.error-summary').remove();\n  },\n\n  setFocusOnErrorSummary: function ($body) {\n    const errorSummaryContainer = $body.find('.error-summary');\n    if (errorSummaryContainer.length > 0) {\n      errorSummaryContainer.trigger('focus');\n\n      // start listening for clicks on summary errors\n      errorSummaryContainer.find('a').on('click', (ev) => {\n        if ($(ev.currentTarget).hasClass('cross-site-validate') == false) {\n          ev.preventDefault();\n          this.anchorSummaryErrorToField(ev.currentTarget, $body);\n        }\n      });\n    }\n  },\n\n  findErrorsContainerByErrorKey: function ($body, fieldErrorKey) {\n    let errorsElement = $body\n      .find(`[data-error-key=\"${fieldErrorKey}\"]`)\n      .find('ul.errors');\n\n    return $(errorsElement);\n  },\n\n  anchorSummaryErrorToField: function (error, $body) {\n    const fieldErrorKey = $(error).attr('data-field-error-key');\n\n    if (!fieldErrorKey) {\n      return;\n    }\n\n    const $fieldErrorsContainer = this.findErrorsContainerByErrorKey(\n      $body,\n      fieldErrorKey\n    );\n\n    if ($fieldErrorsContainer) {\n      // check if we need to switch tabs first\n      const fieldTabAnchors = this.findTabAnchorForField(\n        $fieldErrorsContainer,\n        $body\n      );\n\n      if (fieldTabAnchors.length > 0) {\n        for (let i = 0; i < fieldTabAnchors.length; i++) {\n          let $tabAnchor = $(fieldTabAnchors[i]);\n          if ($tabAnchor.attr('aria-selected') == 'false') {\n            $tabAnchor.click();\n          }\n        }\n      }\n\n      // check if the parents are collapsed - if yes, expand\n      let $collapsedParents = $fieldErrorsContainer.parents(\n        '.collapsed, .is-collapsed'\n      );\n      if ($collapsedParents.length > 0) {\n        // expand in the reverse order - from outside in!\n        for (let i = $collapsedParents.length; i > 0; i--) {\n          let $item = $($collapsedParents[i - 1]);\n          if ($item.data('block') != undefined) {\n            $item.data('block').expand();\n          } else {\n            $item.find('.titlebar').trigger('doubletap');\n          }\n        }\n      }\n\n      // focus on the field container that contains the error\n      let $field = $fieldErrorsContainer.parents('.field:first');\n      if ($field.is(':visible')) {\n        $field.attr('tabindex', '-1').trigger('focus');\n      } else {\n        // wait in case the field isn't yet visible; (MatrixInput.expand() has a timeout of 200)\n        setTimeout(() => {\n          $field.attr('tabindex', '-1').trigger('focus');\n        }, 201);\n      }\n    }\n  },\n\n  findTabAnchorForField: function ($container, $body) {\n    const fieldTabDivs = $container.parents(\n      `div[data-id^=tab][role=\"tabpanel\"]`\n    );\n\n    let fieldTabAnchors = [];\n    fieldTabDivs.each((i, tabDiv) => {\n      let tabAnchor = $body\n        .find('[role=\"tablist\"]')\n        .find('a[href=\"#' + $(tabDiv).attr('id') + '\"]');\n      fieldTabAnchors.push(tabAnchor);\n    });\n\n    return fieldTabAnchors;\n  },\n\n  getAutofocusValue: function (autofocus) {\n    return autofocus && !Garnish.isMobileBrowser(true) ? 'autofocus' : null;\n  },\n\n  getDisabledValue: function (disabled) {\n    return disabled ? 'disabled' : null;\n  },\n};\n","/** global: Craft */\n/** global: Garnish */\n\n/**\n * File Manager.\n */\nCraft.Uploader = Craft.BaseUploader.extend(\n  {\n    uploader: null,\n    _totalFileCounter: 0,\n    _validFileCounter: 0,\n    _onFileAdd: null,\n\n    init: function ($element, settings) {\n      settings = $.extend({}, Craft.Uploader.defaults, settings);\n      this.base($element, settings);\n      delete this.settings.events;\n\n      this.uploader = this.$element.fileupload(this.settings);\n\n      Object.entries(this.events).forEach(([name, handler]) => {\n        this.$element.on(name, handler);\n      });\n\n      this._onFileAdd = this.onFileAdd.bind(this);\n      this.$element.on('fileuploadadd', this._onFileAdd);\n    },\n\n    /**\n     * Set uploader parameters.\n     */\n    setParams: function (paramObject) {\n      this.base(paramObject);\n\n      // Only set params if the uploader has been initialized\n      // It won't be if the input is disabled\n      if (this.uploader.data('blueimpFileupload')) {\n        this.uploader.fileupload('option', {formData: this.formData});\n      }\n    },\n\n    /**\n     * Get the number of uploads in progress.\n     */\n    getInProgress: function () {\n      return this.uploader.fileupload('active');\n    },\n\n    /**\n     * Called on file add.\n     */\n    onFileAdd: function (e, data) {\n      e.stopPropagation();\n\n      var validateExtension = false;\n\n      if (this.allowedKinds) {\n        if (!this._extensionList) {\n          this._createExtensionList();\n        }\n\n        validateExtension = true;\n      }\n\n      // Make sure that file API is there before relying on it\n      data.process().done(() => {\n        var file = data.files[0];\n        var pass = true;\n        if (validateExtension) {\n          var matches = file.name.match(/\\.([a-z0-4_]+)$/i);\n          var fileExtension = matches[1];\n          if (\n            $.inArray(fileExtension.toLowerCase(), this._extensionList) === -1\n          ) {\n            pass = false;\n            this._rejectedFiles.type.push('“' + file.name + '”');\n          }\n        }\n\n        if (file.size > this.settings.maxFileSize) {\n          this._rejectedFiles.size.push('“' + file.name + '”');\n          pass = false;\n        }\n\n        // If the validation has passed for this file up to now, check if we're not hitting any limits\n        if (\n          pass &&\n          typeof this.settings.canAddMoreFiles === 'function' &&\n          !this.settings.canAddMoreFiles(this._validFileCounter)\n        ) {\n          this._rejectedFiles.limit.push('“' + file.name + '”');\n          pass = false;\n        }\n\n        if (pass) {\n          this._validFileCounter++;\n          data.submit();\n        }\n\n        if (++this._totalFileCounter === data.originalFiles.length) {\n          this._totalFileCounter = 0;\n          this._validFileCounter = 0;\n          this.processErrorMessages();\n        }\n      });\n\n      return true;\n    },\n\n    destroy: function () {\n      if (this.uploader.fileupload('instance')) {\n        this.uploader.fileupload('destroy');\n      }\n\n      this.$element.off('fileuploadadd', this._onFileAdd);\n\n      Object.entries(this.events).forEach(([name, handler]) => {\n        this.$element.off(name, handler);\n      });\n    },\n  },\n  {\n    defaults: {\n      autoUpload: false,\n      sequentialUploads: true,\n      maxFileSize: Craft.maxUploadSize,\n      replaceFileInput: false,\n      createAction: 'assets/upload',\n      replaceAction: 'assets/replace-file',\n      deleteAction: 'assets/delete-asset',\n    },\n  }\n);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Handle Generator\n */\nCraft.UriFormatGenerator = Craft.BaseInputGenerator.extend({\n  generateTargetValue: function (sourceVal) {\n    // Remove HTML tags\n    sourceVal = sourceVal.replace(/<(.*?)>/g, '');\n\n    // Make it lowercase\n    sourceVal = sourceVal.toLowerCase();\n\n    // Convert extended ASCII characters to basic ASCII\n    sourceVal = Craft.asciiString(sourceVal);\n\n    // Handle must start with a letter and end with a letter/number\n    sourceVal = sourceVal.replace(/^[^a-z]+/, '');\n    sourceVal = sourceVal.replace(/[^a-z0-9]+$/, '');\n\n    // Get the \"words\"\n    var words = Craft.filterArray(sourceVal.split(/[^a-z0-9]+/));\n\n    var uriFormat = words.join(Craft.slugWordSeparator);\n\n    if (uriFormat && this.settings.suffix) {\n      uriFormat += this.settings.suffix;\n    }\n\n    return uriFormat;\n  },\n});\n","/** global: Craft */\n/** global: Garnish */\n/**\n * User index class\n */\nCraft.UserIndex = Craft.BaseElementIndex.extend({\n  init: function (elementType, $container, settings) {\n    this.on('selectSource', this.updateUrl.bind(this));\n    this.base(elementType, $container, settings);\n  },\n\n  getDefaultSourceKey: function () {\n    // Did they request a specific group in the URL?\n    if (\n      this.settings.context === 'index' &&\n      typeof defaultSourceSlug !== 'undefined'\n    ) {\n      for (let i = 0; i < this.$sources.length; i++) {\n        const $source = $(this.$sources[i]);\n        if ($source.data('slug') === defaultSourceSlug) {\n          return $source.data('key');\n        }\n      }\n    }\n\n    return this.base();\n  },\n\n  updateUrl: function () {\n    if (this.settings.context === 'index') {\n      let uri = 'users';\n      const slug = this.$source.data('slug');\n      if (slug) {\n        uri += `/${slug}`;\n      }\n      Craft.setPath(uri);\n    }\n  },\n});\n\n// Register it!\nCraft.registerElementIndexClass('craft\\\\elements\\\\User', Craft.UserIndex);\n","/** global: Craft */\n/** global: Garnish */\n/**\n * Volume folder selector modal class\n */\nCraft.VolumeFolderSelectorModal = Craft.BaseElementSelectorModal.extend(\n  {\n    init: function (settings) {\n      settings = Object.assign(\n        {},\n        Craft.VolumeFolderSelectorModal.defaults,\n        settings,\n        {\n          showSiteMenu: false,\n        }\n      );\n      settings.indexSettings.disabledFolderIds = settings.disabledFolderIds;\n      this.base('craft\\\\elements\\\\Asset', settings);\n    },\n\n    getElementIndexParams: function () {\n      return Object.assign({}, this.base(), {\n        foldersOnly: true,\n      });\n    },\n\n    hasSelection: function () {\n      return (\n        this.base() ||\n        (this.elementIndex &&\n          this.elementIndex.sourcePath.length &&\n          typeof this.elementIndex.sourcePath[\n            this.elementIndex.sourcePath.length - 1\n          ].folderId !== 'undefined' &&\n          !this.settings.disabledFolderIds.includes(\n            this.elementIndex.sourcePath[\n              this.elementIndex.sourcePath.length - 1\n            ].folderId\n          ))\n      );\n    },\n\n    getElementInfo: function ($selectedElements) {\n      return [\n        {\n          folderId: $selectedElements.length\n            ? parseInt(\n                $selectedElements.find('.element:first').data('folder-id')\n              )\n            : this.elementIndex.sourcePath[\n                this.elementIndex.sourcePath.length - 1\n              ].folderId,\n        },\n      ];\n    },\n\n    getIndexSettings: function () {\n      return Object.assign(this.base(), {\n        foldersOnly: true,\n        canSelectElement: ($element) => {\n          const folderId = $element.find('.element:first').data('folder-id');\n          return (\n            folderId && !this.settings.disabledFolderIds.includes(folderId)\n          );\n        },\n      });\n    },\n  },\n  {\n    defaults: {\n      disabledFolderIds: [],\n      indexSettings: {},\n    },\n  }\n);\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!../../../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[4]!./charts.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3790022a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ruleSet[1].rules[3].use[1]!../../../../../../node_modules/css-loader/dist/cjs.js!../../../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[3].use[3]!../../../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[3].use[4]!./craft.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80058a3c\", content, true, {});","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n  var styles = []\n  var newStyles = {}\n  for (var i = 0; i < list.length; i++) {\n    var item = list[i]\n    var id = item[0]\n    var css = item[1]\n    var media = item[2]\n    var sourceMap = item[3]\n    var part = {\n      id: parentId + ':' + i,\n      css: css,\n      media: media,\n      sourceMap: sourceMap\n    }\n    if (!newStyles[id]) {\n      styles.push(newStyles[id] = { id: id, parts: [part] })\n    } else {\n      newStyles[id].parts.push(part)\n    }\n  }\n  return styles\n}\n","/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n  Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n  if (!hasDocument) {\n    throw new Error(\n    'vue-style-loader cannot be used in a non-browser environment. ' +\n    \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n  ) }\n}\n\n/*\ntype StyleObject = {\n  id: number;\n  parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n  css: string;\n  media: string;\n  sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n  [id: number]: {\n    id: number,\n    refs: number,\n    parts: Array<(obj?: StyleObjectPart) => void>\n  }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n  isProduction = _isProduction\n\n  options = _options || {}\n\n  var styles = listToStyles(parentId, list)\n  addStylesToDom(styles)\n\n  return function update (newList) {\n    var mayRemove = []\n    for (var i = 0; i < styles.length; i++) {\n      var item = styles[i]\n      var domStyle = stylesInDom[item.id]\n      domStyle.refs--\n      mayRemove.push(domStyle)\n    }\n    if (newList) {\n      styles = listToStyles(parentId, newList)\n      addStylesToDom(styles)\n    } else {\n      styles = []\n    }\n    for (var i = 0; i < mayRemove.length; i++) {\n      var domStyle = mayRemove[i]\n      if (domStyle.refs === 0) {\n        for (var j = 0; j < domStyle.parts.length; j++) {\n          domStyle.parts[j]()\n        }\n        delete stylesInDom[domStyle.id]\n      }\n    }\n  }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n  for (var i = 0; i < styles.length; i++) {\n    var item = styles[i]\n    var domStyle = stylesInDom[item.id]\n    if (domStyle) {\n      domStyle.refs++\n      for (var j = 0; j < domStyle.parts.length; j++) {\n        domStyle.parts[j](item.parts[j])\n      }\n      for (; j < item.parts.length; j++) {\n        domStyle.parts.push(addStyle(item.parts[j]))\n      }\n      if (domStyle.parts.length > item.parts.length) {\n        domStyle.parts.length = item.parts.length\n      }\n    } else {\n      var parts = []\n      for (var j = 0; j < item.parts.length; j++) {\n        parts.push(addStyle(item.parts[j]))\n      }\n      stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n    }\n  }\n}\n\nfunction createStyleElement () {\n  var styleElement = document.createElement('style')\n  styleElement.type = 'text/css'\n  head.appendChild(styleElement)\n  return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n  var update, remove\n  var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n  if (styleElement) {\n    if (isProduction) {\n      // has SSR styles and in production mode.\n      // simply do nothing.\n      return noop\n    } else {\n      // has SSR styles but in dev mode.\n      // for some reason Chrome can't handle source map in server-rendered\n      // style tags - source maps in <style> only works if the style tag is\n      // created and inserted dynamically. So we remove the server rendered\n      // styles and inject new ones.\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  if (isOldIE) {\n    // use singleton mode for IE9.\n    var styleIndex = singletonCounter++\n    styleElement = singletonElement || (singletonElement = createStyleElement())\n    update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n    remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n  } else {\n    // use multi-style-tag mode in all other cases\n    styleElement = createStyleElement()\n    update = applyToTag.bind(null, styleElement)\n    remove = function () {\n      styleElement.parentNode.removeChild(styleElement)\n    }\n  }\n\n  update(obj)\n\n  return function updateStyle (newObj /* StyleObjectPart */) {\n    if (newObj) {\n      if (newObj.css === obj.css &&\n          newObj.media === obj.media &&\n          newObj.sourceMap === obj.sourceMap) {\n        return\n      }\n      update(obj = newObj)\n    } else {\n      remove()\n    }\n  }\n}\n\nvar replaceText = (function () {\n  var textStore = []\n\n  return function (index, replacement) {\n    textStore[index] = replacement\n    return textStore.filter(Boolean).join('\\n')\n  }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n  var css = remove ? '' : obj.css\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = replaceText(index, css)\n  } else {\n    var cssNode = document.createTextNode(css)\n    var childNodes = styleElement.childNodes\n    if (childNodes[index]) styleElement.removeChild(childNodes[index])\n    if (childNodes.length) {\n      styleElement.insertBefore(cssNode, childNodes[index])\n    } else {\n      styleElement.appendChild(cssNode)\n    }\n  }\n}\n\nfunction applyToTag (styleElement, obj) {\n  var css = obj.css\n  var media = obj.media\n  var sourceMap = obj.sourceMap\n\n  if (media) {\n    styleElement.setAttribute('media', media)\n  }\n  if (options.ssrId) {\n    styleElement.setAttribute(ssrIdKey, obj.id)\n  }\n\n  if (sourceMap) {\n    // https://developer.chrome.com/devtools/docs/javascript-debugging\n    // this makes source maps inside style tags work properly in Chrome\n    css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n    // http://stackoverflow.com/a/26603875\n    css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n  }\n\n  if (styleElement.styleSheet) {\n    styleElement.styleSheet.cssText = css\n  } else {\n    while (styleElement.firstChild) {\n      styleElement.removeChild(styleElement.firstChild)\n    }\n    styleElement.appendChild(document.createTextNode(css))\n  }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (max < value || (max === undefined && value >= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d => +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power < 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc < start) ++i1;\n    if (i2 / inc > stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc < start) ++i1;\n    if (i2 * inc > stop) --i2;\n  }\n  if (i2 < i1 && 0.5 <= count && count < 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count > 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop < start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 >= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc < 0) for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i < n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop < start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc < 0 ? 1 / -inc : inc);\n}\n","export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b < a ? -1\n    : b > a ? 1\n    : b >= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) => ascending(f(d), x);\n    delta = (d, x) => f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo < hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) >>> 1;\n        if (compare2(a[mid], x) <= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo < hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- > 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step > 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step < 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) => {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) => {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) => {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) => {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) => {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = (test) => {\n    return timeInterval((date) => {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) => {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) => {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) => {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? (d) => field(d) % step === 0\n              : (d) => interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() => {\n  // noop\n}, (date, step) => {\n  date.setTime(+date + step);\n}, (start, end) => {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) => {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return timeInterval((date) => {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) => {\n    date.setTime(+date + step * k);\n  }, (start, end) => {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) => {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) => {\n  return (end - start) / durationSecond;\n}, (date) => {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) => {\n  date.setUTCSeconds(0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) => {\n  return (end - start) / durationMinute;\n}, (date) => {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) => {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) => {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) => {\n  date.setTime(+date + step * durationHour);\n}, (start, end) => {\n  return (end - start) / durationHour;\n}, (date) => {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date => date.setHours(0, 0, 0, 0),\n  (date, step) => date.setDate(date.getDate() + step),\n  (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date => date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) => {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) => {\n  return (end - start) / durationDay;\n}, (date) => {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) => {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) => {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) => {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) => {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) => {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) => {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) => {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) => {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) => {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) => {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) => {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) => {\n  return end.getFullYear() - start.getFullYear();\n}, (date) => {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) => {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) => {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) => {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) => {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) => {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : timeInterval((date) => {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) => {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop < start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) => step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i < n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d > 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i < n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () => new Path(digits);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","import * as d3 from 'd3';\n\n/** global: Craft */\n/** global: Garnish */\n/** global: $ */\n/** global: jQuery */\n/** global: d3FormatLocaleDefinition */\n\n// Use old jQuery prefilter behavior\n// see https://jquery.com/upgrade-guide/3.5/\nvar rxhtmlTag =\n  /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi;\njQuery.htmlPrefilter = function (html) {\n  return html.replace(rxhtmlTag, '<$1></$2>');\n};\n\n// Set all the standard Craft.* stuff\n$.extend(Craft, {\n  navHeight: 48,\n\n  isIterable(obj) {\n    return obj && typeof obj[Symbol.iterator] === 'function';\n  },\n\n  /**\n   * @callback indexKeyCallback\n   * @param {Object} currentValue\n   * @param {number} [index]\n   * @returns {string}\n   */\n  /**\n   * Indexes an array of objects by a specified key\n   *\n   * @param {Object[]} arr\n   * @param {(string|indexKeyCallback)} key\n   */\n  index: function (arr, key) {\n    if (arr instanceof NodeList || this.isIterable(arr)) {\n      arr = Array.from(arr);\n    } else if (!Array.isArray(arr)) {\n      throw 'The first argument passed to Craft.index() must be an array, NodeList, or iterable object.';\n    }\n\n    if (typeof key === 'string') {\n      const k = key;\n      key = (item) => item[k];\n    }\n\n    return Object.fromEntries(arr.map((item) => [key(item), item]));\n  },\n\n  /**\n   * Groups an array of objects by a specified key\n   *\n   * @param {Object[]} arr\n   * @param {(string|indexKeyCallback)} key\n   */\n  group: function (arr, key) {\n    if (!Array.isArray(arr)) {\n      throw 'The first argument passed to Craft.group() must be an array.';\n    }\n\n    let index = {};\n\n    return arr.reduce((grouped, obj, i) => {\n      const thisKey = typeof key === 'string' ? obj[key] : key(obj, i);\n      if (!index.hasOwnProperty(thisKey)) {\n        index[thisKey] = [[], thisKey];\n        grouped.push(index[thisKey]);\n      }\n      index[thisKey][0].push(obj);\n      return grouped;\n    }, []);\n  },\n\n  /**\n   * Get a translated message.\n   *\n   * @param {string} category\n   * @param {string} message\n   * @param {Object} params\n   * @returns {string}\n   */\n  t: function (category, message, params) {\n    if (\n      typeof Craft.translations[category] !== 'undefined' &&\n      typeof Craft.translations[category][message] !== 'undefined'\n    ) {\n      message = Craft.translations[category][message];\n    }\n\n    if (params) {\n      return this.formatMessage(message, params);\n    }\n\n    return message;\n  },\n\n  formatMessage: function (pattern, args) {\n    let tokens;\n    if ((tokens = this._tokenizePattern(pattern)) === false) {\n      throw 'Message pattern is invalid.';\n    }\n    for (let i = 0; i < tokens.length; i++) {\n      let token = tokens[i];\n      if (typeof token === 'object') {\n        if ((tokens[i] = this._parseToken(token, args)) === false) {\n          throw 'Message pattern is invalid.';\n        }\n      }\n    }\n    return tokens.join('');\n  },\n\n  _tokenizePattern: function (pattern) {\n    let depth = 1,\n      start,\n      pos;\n    // Get an array of the string characters (factoring in 3+ byte chars)\n    const chars = [...pattern];\n    if ((start = pos = chars.indexOf('{')) === -1) {\n      return [pattern];\n    }\n    let tokens = [chars.slice(0, pos).join('')];\n    while (true) {\n      let open = chars.indexOf('{', pos + 1);\n      let close = chars.indexOf('}', pos + 1);\n      if (open === -1) {\n        open = false;\n      }\n      if (close === -1) {\n        close = false;\n      }\n      if (open === false && close === false) {\n        break;\n      }\n      if (open === false) {\n        open = chars.length;\n      }\n      if (close > open) {\n        depth++;\n        pos = open;\n      } else {\n        depth--;\n        pos = close;\n      }\n      if (depth === 0) {\n        tokens.push(\n          chars\n            .slice(start + 1, pos)\n            .join('')\n            .split(',', 3)\n        );\n        start = pos + 1;\n        tokens.push(chars.slice(start, open).join(''));\n        start = open;\n      }\n\n      if (depth !== 0 && (open === false || close === false)) {\n        break;\n      }\n    }\n    if (depth !== 0) {\n      return false;\n    }\n\n    return tokens;\n  },\n\n  _parseToken: function (token, args) {\n    // parsing pattern based on ICU grammar:\n    // http://icu-project.org/apiref/icu4c/classMessageFormat.html#details\n    const param = token[0].trim();\n    if (typeof args[param] === 'undefined') {\n      return `{${token.join(',')}}`;\n    }\n    const arg = args[param];\n    const type = typeof token[1] !== 'undefined' ? token[1].trim() : 'none';\n    switch (type) {\n      case 'number':\n        return (() => {\n          let format = typeof token[2] !== 'undefined' ? token[2].trim() : null;\n          if (format !== null && format !== 'integer') {\n            throw `Message format 'number' is only supported for integer values.`;\n          }\n          let number = Craft.formatNumber(arg);\n          let pos;\n          if (format === null && (pos = `${arg}`.indexOf('.')) !== -1) {\n            number += `.${arg.substring(pos + 1)}`;\n          }\n          return number;\n        })();\n      case 'none':\n        return arg;\n      case 'select':\n        return (() => {\n          /* http://icu-project.org/apiref/icu4c/classicu_1_1SelectFormat.html\n                        selectStyle = (selector '{' message '}')+\n                        */\n          if (typeof token[2] === 'undefined') {\n            return false;\n          }\n          let select = this._tokenizePattern(token[2]);\n          let c = select.length;\n          let message = false;\n          for (let i = 0; i + 1 < c; i++) {\n            if (Array.isArray(select[i]) || !Array.isArray(select[i + 1])) {\n              return false;\n            }\n            let selector = select[i++].trim();\n            if (\n              (message === false && selector === 'other') ||\n              selector == arg\n            ) {\n              message = select[i].join(',');\n            }\n          }\n          if (message === false) {\n            return false;\n          }\n          return this.formatMessage(message, args);\n        })();\n      case 'plural':\n        return (() => {\n          /* http://icu-project.org/apiref/icu4c/classicu_1_1PluralFormat.html\n                        pluralStyle = [offsetValue] (selector '{' message '}')+\n                        offsetValue = \"offset:\" number\n                        selector = explicitValue | keyword\n                        explicitValue = '=' number  // adjacent, no white space in between\n                        keyword = [^[[:Pattern_Syntax:][:Pattern_White_Space:]]]+\n                        message: see MessageFormat\n                        */\n          if (typeof token[2] === 'undefined') {\n            return false;\n          }\n          let plural = this._tokenizePattern(token[2]);\n          const c = plural.length;\n          let message = false;\n          let offset = 0;\n          for (let i = 0; i + 1 < c; i++) {\n            if (\n              typeof plural[i] === 'object' ||\n              typeof plural[i + 1] !== 'object'\n            ) {\n              return false;\n            }\n            let selector = plural[i++].trim();\n            let selectorChars = [...selector];\n\n            if (i === 1 && selector.substring(0, 7) === 'offset:') {\n              let pos = [...selector.replace(/[\\n\\r\\t]/g, ' ')].indexOf(' ', 7);\n              if (pos === -1) {\n                throw 'Message pattern is invalid.';\n              }\n              offset = parseInt(selectorChars.slice(7, pos).join('').trim());\n              selector = selectorChars\n                .slice(pos + 1, pos + 1 + selectorChars.length)\n                .join('')\n                .trim();\n            }\n            if (\n              (message === false && selector === 'other') ||\n              (selector[0] === '=' &&\n                parseInt(\n                  selectorChars.slice(1, 1 + selectorChars.length).join('')\n                ) === arg) ||\n              (selector === 'one' && arg - offset === 1)\n            ) {\n              message = (\n                typeof plural[i] === 'string' ? [plural[i]] : plural[i]\n              )\n                .map((p) => {\n                  return p.replace('#', arg - offset);\n                })\n                .join(',');\n            }\n          }\n          if (message === false) {\n            return false;\n          }\n          return this.formatMessage(message, args);\n        })();\n      default:\n        throw `Message format '${type}' is not supported.`;\n    }\n  },\n\n  formatDate: function (date) {\n    if (typeof date !== 'object') {\n      date = new Date(date);\n    }\n\n    return $.datepicker.formatDate(Craft.datepickerOptions.dateFormat, date);\n  },\n\n  /**\n   * Formats a number.\n   *\n   * @param {string} number\n   * @param {string} [format] D3 format\n   * @returns {string}\n   */\n  formatNumber: function (number, format) {\n    if (typeof format == 'undefined') {\n      format = ',.0f';\n    }\n\n    var formatter = d3.formatLocale(d3FormatLocaleDefinition).format(format);\n\n    return formatter(number);\n  },\n\n  /**\n   * @param {string} key\n   * @param {boolean} shift\n   * @param {boolean} alt\n   */\n  shortcutText: function (key, shift, alt) {\n    if (Craft.clientOs === 'Mac') {\n      return (alt ? '⌥' : '') + (shift ? '⇧' : '') + '⌘' + key;\n    }\n    return 'Ctrl+' + (alt ? 'Alt+' : '') + (shift ? 'Shift+' : '') + key;\n  },\n\n  /**\n   * Escapes some HTML.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  escapeHtml: function (str) {\n    return $('<div/>').text(str).html();\n  },\n\n  /**\n   * Escapes special regular expression characters.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  escapeRegex: function (str) {\n    // h/t https://stackoverflow.com/a/9310752\n    return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n  },\n\n  /**\n   * Returns the text in a string that might contain HTML tags.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  getText: function (str) {\n    return $('<div/>').html(str).text();\n  },\n\n  /**\n   * Encodes a URI copmonent. Mirrors PHP's rawurlencode().\n   *\n   * @param {string} str\n   * @returns {string}\n   * @see http://stackoverflow.com/questions/1734250/what-is-the-equivalent-of-javascripts-encodeuricomponent-in-php\n   */\n  encodeUriComponent: function (str) {\n    str = encodeURIComponent(str);\n\n    var differences = {\n      '!': '%21',\n      '*': '%2A',\n      \"'\": '%27',\n      '(': '%28',\n      ')': '%29',\n    };\n\n    for (var chr in differences) {\n      var re = new RegExp('\\\\' + chr, 'g');\n      str = str.replace(re, differences[chr]);\n    }\n\n    return str;\n  },\n\n  /**\n   * Selects the full value of a given text input.\n   *\n   * @param {(jQuery|HTMLElement|string)} input\n   */\n  selectFullValue: function (input) {\n    var $input = $(input);\n    var val = $input.val();\n\n    // Does the browser support setSelectionRange()?\n    if (typeof $input[0].setSelectionRange !== 'undefined') {\n      // Select the whole value\n      var length = val.length * 2;\n      $input[0].setSelectionRange(0, length);\n    } else {\n      // Refresh the value to get the cursor positioned at the end\n      $input.val(val);\n    }\n  },\n\n  /**\n   * Formats an ID out of an input name.\n   *\n   * @param {string} inputName\n   * @returns {string}\n   */\n  formatInputId: function (inputName) {\n    // IDs must begin with a letter\n    let id = inputName.replace(/^[^A-Za-z]+/, '');\n    id = this.rtrim(id.replace(/[^A-Za-z0-9_.]+/g, '-'), '-');\n    return id || this.randomString(10);\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @param {string} [baseUrl]\n   * @returns {string}\n   */\n  getUrl: function (path, params, baseUrl) {\n    if (typeof path !== 'string') {\n      path = '';\n    }\n\n    // Normalize the params\n    let anchor = null;\n    if ($.isPlainObject(params)) {\n      if (typeof params['#'] !== 'undefined') {\n        anchor = params['#'];\n        delete params['#'];\n      }\n    } else if (typeof params === 'string') {\n      let anchorPos = params.indexOf('#');\n      if (anchorPos !== -1) {\n        anchor = params.substring(anchorPos + 1);\n        params = params.substring(0, anchorPos);\n      }\n      params = Object.fromEntries(new URLSearchParams(params).entries());\n    } else {\n      params = {};\n    }\n\n    // Was there already an anchor on the path?\n    let anchorPos = path.indexOf('#');\n    if (anchorPos !== -1) {\n      // Only keep it if the params didn't specify a new anchor\n      if (!anchor) {\n        anchor = path.substring(anchorPos + 1);\n      }\n      path = path.substring(0, anchorPos);\n    }\n\n    // Were there already any query string params in the path?\n    let qsPos = path.indexOf('?');\n    if (qsPos !== -1) {\n      params = $.extend(\n        Object.fromEntries(\n          new URLSearchParams(path.substring(qsPos + 1)).entries()\n        ),\n        params\n      );\n      path = path.substring(0, qsPos);\n    }\n\n    // Return path if it appears to be an absolute URL.\n    if (path.search('://') !== -1 || path[0] === '/') {\n      return (\n        path +\n        (!$.isEmptyObject(params) ? `?${$.param(params)}` : '') +\n        (anchor ? `#${anchor}` : '')\n      );\n    }\n\n    path = Craft.trim(path, '/');\n\n    // Put it all together\n    let url;\n\n    if (baseUrl) {\n      url = baseUrl;\n\n      if (path && Craft.pathParam) {\n        // Does baseUrl already contain a path?\n        var pathMatch = url.match(\n          new RegExp('[&?]' + Craft.escapeRegex(Craft.pathParam) + '=[^&]+')\n        );\n        if (pathMatch) {\n          url = url.replace(\n            pathMatch[0],\n            Craft.rtrim(pathMatch[0], '/') + '/' + path\n          );\n          path = '';\n        }\n      }\n    } else {\n      url = Craft.baseUrl;\n    }\n\n    // Does the base URL already have a query string?\n    qsPos = url.indexOf('?');\n    if (qsPos !== -1) {\n      params = $.extend(\n        Object.fromEntries(\n          new URLSearchParams(url.substring(qsPos + 1)).entries()\n        ),\n        params\n      );\n      url = url.substring(0, qsPos);\n    }\n\n    if (!Craft.omitScriptNameInUrls && path) {\n      if (Craft.usePathInfo || !Craft.pathParam) {\n        // Make sure that the script name is in the URL\n        if (url.search(Craft.scriptName) === -1) {\n          url = Craft.rtrim(url, '/') + '/' + Craft.scriptName;\n        }\n      } else {\n        // Move the path into the query string params\n\n        // Is the path param already set?\n        if (typeof params[Craft.pathParam] !== 'undefined') {\n          let basePath = params[Craft.pathParam].trimEnd();\n          path = basePath + (path ? '/' + path : '');\n        }\n\n        params[Craft.pathParam] = path;\n        path = null;\n      }\n    }\n\n    if (path) {\n      url = Craft.rtrim(url, '/') + '/' + path;\n    }\n\n    if (!$.isEmptyObject(params)) {\n      url += `?${$.param(params)}`;\n    }\n\n    if (anchor) {\n      url += `#${anchor}`;\n    }\n\n    return url;\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getCpUrl: function (path, params) {\n    return this.getUrl(path, params, Craft.baseCpUrl);\n  },\n\n  /**\n   * @param {string} [path]\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getSiteUrl: function (path, params) {\n    return this.getUrl(path, params, Craft.baseSiteUrl);\n  },\n\n  /**\n   * Returns an action URL.\n   *\n   * @param {string} action\n   * @param {(Object|string)} [params]\n   * @returns {string}\n   */\n  getActionUrl: function (action, params) {\n    return Craft.getUrl(action, params, Craft.actionUrl);\n  },\n\n  /**\n   * Redirects the window to a given URL.\n   *\n   * @param {string} url\n   */\n  redirectTo: function (url) {\n    document.location.href = this.getUrl(url);\n  },\n\n  /**\n   * Replaces the page’s current URL.\n   *\n   * The location hash will be left intact, unless the given URL specifies one.\n   *\n   * @param {string} url\n   */\n  setUrl: function (url) {\n    if (typeof history === 'undefined') {\n      return;\n    }\n\n    if (!url.match(/#/)) {\n      url += document.location.hash;\n    }\n\n    history.replaceState({}, '', url);\n\n    // If there's a site crumb menu, update each of its URLs\n    const siteLinks = document.querySelectorAll('#site-crumb-menu a[href]');\n    for (const link of siteLinks) {\n      const site = this.getQueryParam('site', link.href);\n      link.href = this.getUrl(url, {site});\n    }\n  },\n\n  /**\n   * Replaces the page’s current URL based on the given path, leaving the current query string and hash intact.\n   *\n   * @param {string} path\n   */\n  setPath: function (path) {\n    this.path = path;\n    this.setUrl(Craft.getUrl(path, document.location.search));\n  },\n\n  /**\n   * Replaces the page’s current URL based on the given query param name and value, leaving the current URI, other query params, and hash intact.\n   *\n   * @param {string} name\n   * @param {*} value\n   */\n  setQueryParam(name, value) {\n    const baseUrl = document.location.origin + document.location.pathname;\n    const params = this.getQueryParams();\n\n    if (typeof value !== 'undefined' && value !== null && value !== false) {\n      params[name] = value;\n    } else {\n      delete params[name];\n    }\n\n    this.setUrl(Craft.getUrl(baseUrl, params));\n  },\n\n  /**\n   * Returns the current URL with a certain page added to it.\n   *\n   * @param {int} page\n   * @returns {string}\n   */\n  getPageUrl: function (page) {\n    let url = document.location.origin + document.location.pathname;\n    url = Craft.rtrim(url, '/');\n\n    let qs = document.location.search\n      ? document.location.search.substring(1)\n      : '';\n\n    // query string-based pagination?\n    if (Craft.pageTrigger[0] === '?') {\n      const pageParam = Craft.pageTrigger.substring(1);\n      // remove the existing page param\n      if (document.location.search) {\n        const params = Object.fromEntries(new URLSearchParams(qs).entries());\n        delete params[pageParam];\n        qs = $.param(params);\n      }\n      if (page !== 1) {\n        qs += (qs !== '' ? '&' : '') + `${pageParam}=${page}`;\n      }\n    } else {\n      // Remove the existing page segment(s)\n      url = url.replace(\n        new RegExp('/' + Craft.escapeRegex(Craft.pageTrigger) + '\\\\d+$'),\n        ''\n      );\n\n      if (page !== 1) {\n        url += `/${Craft.pageTrigger}${page}`;\n      }\n    }\n\n    return url + (qs ? `?${qs}` : '') + document.location.hash;\n  },\n\n  /**\n   * Returns a hidden CSRF token input, if CSRF protection is enabled.\n   *\n   * @returns {string}\n   */\n  getCsrfInput: function () {\n    if (Craft.csrfTokenName) {\n      return (\n        '<input type=\"hidden\" name=\"' +\n        Craft.csrfTokenName +\n        '\" value=\"' +\n        Craft.csrfTokenValue +\n        '\"/>'\n      );\n    } else {\n      return '';\n    }\n  },\n\n  /**\n   * @callback postActionRequestCallback\n   * @param {?Object} response\n   * @param {string} textStatus\n   * @param {Object} jqXHR\n   */\n  /**\n   * Posts an action request to the server.\n   *\n   * @param {string} action\n   * @param {Object} [data]\n   * @param {postActionRequestCallback} [callback]\n   * @param {Object} [options]\n   * @returns {Object}\n   * @deprecated in 3.4.6. sendActionRequest() should be used instead\n   */\n  postActionRequest: function (action, data, callback, options) {\n    // Make 'data' optional\n    if (typeof data === 'function') {\n      options = callback;\n      callback = data;\n      data = {};\n    }\n\n    options = options || {};\n\n    if (options.contentType && options.contentType.match(/\\bjson\\b/)) {\n      if (typeof data === 'object') {\n        data = JSON.stringify(data);\n      }\n      options.contentType = 'application/json; charset=utf-8';\n    }\n\n    var jqXHR = $.ajax(\n      $.extend(\n        {\n          url: Craft.getActionUrl(action),\n          type: 'POST',\n          dataType: 'json',\n          headers: this._actionHeaders(),\n          data: data,\n          success: callback,\n          error: function (jqXHR, textStatus, errorThrown) {\n            // Ignore incomplete requests, likely due to navigating away from the page\n            // h/t https://stackoverflow.com/a/22107079/1688568\n            if (jqXHR.readyState !== 4) {\n              return;\n            }\n\n            if (jqXHR.status !== 400) {\n              if (typeof Craft.cp !== 'undefined') {\n                Craft.cp.displayError();\n              } else {\n                alert(Craft.t('app', 'A server error occurred.'));\n              }\n            }\n\n            if (callback) {\n              callback(\n                jqXHR.status === 400 ? jqXHR.responseJSON : null,\n                textStatus,\n                jqXHR\n              );\n            }\n          },\n        },\n        options\n      )\n    );\n\n    // Call the 'send' callback\n    if (typeof options.send === 'function') {\n      options.send(jqXHR);\n    }\n\n    return jqXHR;\n  },\n\n  _actionHeaders: function () {\n    let headers = {\n      'X-Registered-Asset-Bundles': [\n        ...new Set(Craft.registeredAssetBundles),\n      ].join(','),\n      'X-Registered-Js-Files': [...new Set(Craft.registeredJsFiles)].join(','),\n    };\n\n    if (Craft.csrfTokenValue) {\n      headers['X-CSRF-Token'] = Craft.csrfTokenValue;\n    }\n\n    return headers;\n  },\n\n  /**\n   * Sends a request to a Craft/plugin action\n   * @param {string} method The request action to use ('GET' or 'POST')\n   * @param {?string} [action] The action to request\n   * @param {Object} [options] Axios request options\n   * @returns {Promise}\n   * @since 3.4.6\n   */\n  sendActionRequest: function (method, action, options = {}) {\n    if ($.isPlainObject(action)) {\n      options = action;\n      action = null;\n    }\n\n    if (method.toUpperCase() === 'POST' && action && options.data) {\n      // Avoid conflicting `action` params\n      if (typeof options.data === 'string') {\n        const namespace =\n          options && options.headers && options.headers['X-Craft-Namespace'];\n        const actionName = this.namespaceInputName('action', namespace);\n        options.data += `&${actionName}=${action}`;\n      } else {\n        delete options.data.action;\n      }\n    }\n\n    return new Promise((resolve, reject) => {\n      options = options ? $.extend({}, options) : {};\n      options.method = method;\n      options.url = action ? Craft.getActionUrl(action) : Craft.getCpUrl();\n      options.headers = $.extend(\n        {\n          'X-Requested-With': 'XMLHttpRequest',\n        },\n        options.headers || {},\n        this._actionHeaders()\n      );\n      options.params = $.extend({}, options.params || {}, {\n        // Force Safari to not load from cache\n        v: new Date().getTime(),\n      });\n      axios.request(options).then(resolve).catch(reject);\n    });\n  },\n\n  /**\n   * Sends a request to the Craftnet API.\n   * @param {string} method The request action to use ('GET' or 'POST')\n   * @param {string} uri The API endpoint URI\n   * @param {Object} options Axios request options\n   * @returns {Promise}\n   * @since 3.3.16\n   */\n  sendApiRequest: function (method, uri, options = {}) {\n    return new Promise((resolve, reject) => {\n      options = options ? $.extend({}, options) : {};\n      let cancelToken = options.cancelToken || null;\n\n      // Get the latest headers\n      this._getApiHeaders(cancelToken)\n        .then((apiHeaders) => {\n          // Send the API request\n          options.method = method;\n          options.baseURL = Craft.baseApiUrl;\n          options.url = uri;\n          options.headers = $.extend(apiHeaders, options.headers || {});\n          options.params = $.extend(\n            Craft.apiParams || {},\n            options.params || {},\n            {\n              // Force Safari to not load from cache\n              v: new Date().getTime(),\n            }\n          );\n\n          // Force the API to process the Craft headers if this is the first API request\n          if (!this._apiHeaders) {\n            options.params.processCraftHeaders = 1;\n          }\n\n          if (Craft.httpProxy) {\n            options.proxy = Craft.httpProxy;\n          }\n\n          axios\n            .request(options)\n            .then((apiResponse) => {\n              // Process the response headers\n              this._processApiHeaders(apiResponse.headers, cancelToken)\n                .then(() => {\n                  // Finally return the API response data\n                  resolve(apiResponse.data);\n                })\n                .catch(reject);\n            })\n            .catch(reject);\n        })\n        .catch(reject);\n    });\n  },\n\n  _loadingApiHeaders: false,\n  _apiHeaders: null,\n  _apiHeaderWaitlist: [],\n\n  /**\n   * Returns the headers that should be sent with API requests.\n   *\n   * @param {Object} [cancelToken]\n   * @returns {Promise}\n   */\n  _getApiHeaders: function (cancelToken) {\n    return new Promise((resolve, reject) => {\n      // Are we already loading them?\n      if (this._loadingApiHeaders) {\n        this._apiHeaderWaitlist.push([resolve, reject]);\n        return;\n      }\n\n      // Are the headers already cached?\n      if (this._apiHeaders) {\n        resolve(this._apiHeaders);\n        return;\n      }\n\n      this._loadingApiHeaders = true;\n      this.sendActionRequest('POST', 'app/api-headers', {\n        cancelToken: cancelToken,\n      })\n        .then((response) => {\n          // Make sure we even are waiting for these anymore\n          if (!this._loadingApiHeaders) {\n            reject(e);\n            return;\n          }\n\n          resolve(response.data);\n        })\n        .catch((e) => {\n          this._rejectApiRequests(reject, e);\n        });\n    });\n  },\n\n  _processApiHeaders: function (headers, cancelToken) {\n    return new Promise((resolve, reject) => {\n      // Have we already processed them?\n      if (this._apiHeaders) {\n        resolve();\n        return;\n      }\n\n      this.sendActionRequest('POST', 'app/process-api-response-headers', {\n        data: {\n          headers: headers,\n        },\n        cancelToken: cancelToken,\n      })\n        .then((response) => {\n          // Make sure we even are waiting for these anymore\n          if (!this._loadingApiHeaders) {\n            reject(e);\n            return;\n          }\n\n          this._apiHeaders = response.data;\n          this._loadingApiHeaders = false;\n\n          resolve();\n\n          // Was anything else waiting for them?\n          while (this._apiHeaderWaitlist.length) {\n            this._apiHeaderWaitlist.shift()[0](this._apiHeaders);\n          }\n        })\n        .catch((e) => {\n          this._rejectApiRequests(reject, e);\n        });\n    });\n  },\n\n  _rejectApiRequests: function (reject, e) {\n    this._loadingApiHeaders = false;\n    reject(e);\n    while (this._apiHeaderWaitlist.length) {\n      this._apiHeaderWaitlist.shift()[1](e);\n    }\n  },\n\n  /**\n   * Clears the cached API headers.\n   */\n  clearCachedApiHeaders: function () {\n    this._apiHeaders = null;\n    this._loadingApiHeaders = false;\n\n    // Reject anything in the header waitlist\n    while (this._apiHeaderWaitlist.length) {\n      this._apiHeaderWaitlist.shift()[1]();\n    }\n  },\n\n  /**\n   * Requests a URL and downloads the response.\n   *\n   * @param {string} method the request method to use\n   * @param {string} url the URL\n   * @param {(string|Object)} [body] the request body, if method = POST\n   * @returns {Promise}\n   */\n  downloadFromUrl: function (method, url, body) {\n    return new Promise((resolve, reject) => {\n      // h/t https://nehalist.io/downloading-files-from-post-requests/\n      let request = new XMLHttpRequest();\n      request.open(method, url, true);\n      if (typeof body === 'object') {\n        request.setRequestHeader(\n          'Content-Type',\n          'application/json; charset=UTF-8'\n        );\n        body = JSON.stringify(body);\n      } else {\n        request.setRequestHeader(\n          'Content-Type',\n          'application/x-www-form-urlencoded; charset=UTF-8'\n        );\n      }\n      request.responseType = 'blob';\n\n      request.onload = () => {\n        // Only handle status code 200\n        if (request.status === 200) {\n          // Try to find out the filename from the content disposition `filename` value\n          let disposition = request.getResponseHeader('content-disposition');\n          let matches = /\"([^\"]*)\"/.exec(disposition);\n          let filename =\n            matches != null && matches[1] ? matches[1] : 'Download';\n\n          // Encode the download into an anchor href\n          let contentType = request.getResponseHeader('content-type');\n          let blob = new Blob([request.response], {type: contentType});\n          let link = document.createElement('a');\n          link.href = window.URL.createObjectURL(blob);\n          link.download = filename;\n          document.body.appendChild(link);\n          link.click();\n          document.body.removeChild(link);\n\n          resolve();\n        } else {\n          reject();\n        }\n      };\n\n      request.send(body);\n    });\n  },\n\n  /**\n   * Converts a comma-delimited string into an array.\n   *\n   * @param {string} str\n   * @returns array\n   */\n  stringToArray: function (str) {\n    if (typeof str !== 'string') {\n      return str;\n    }\n\n    var arr = str.split(',');\n    for (var i = 0; i < arr.length; i++) {\n      arr[i] = $.trim(arr[i]);\n    }\n    return arr;\n  },\n\n  /**\n   * @callback findDeltaDataCallback\n   * @param {string} deltaName\n   * @param {Array} params\n   */\n  /**\n   * Compares old and new post data, and removes any values that haven't\n   * changed within the given list of delta namespaces.\n   *\n   * @param {string} oldData\n   * @param {string} newData\n   * @param {Object} deltaNames\n   * @param {findDeltaDataCallback|null} [callback] Callback function that should be called whenever a new group of modified params has been found\n   * @param {Object} [initialDeltaValues] Initial delta values. If undefined, `Craft.initialDeltaValues` will be used.\n   * @param {Object} [forceModifiedDeltaNames] List of delta names that should be considered modified regardless of their param values\n   * @param {boolean} [asArray] Whether the params should be returned as an array\n   * @returns {string}\n   */\n  findDeltaData: function (\n    oldData,\n    newData,\n    deltaNames,\n    callback = null,\n    initialDeltaValues = {},\n    forceModifiedDeltaNames = [],\n    asArray = false\n  ) {\n    const [modifiedDeltaNames, groupedNewParams] = this.findModifiedDeltaNames(\n      oldData,\n      newData,\n      deltaNames,\n      initialDeltaValues,\n      forceModifiedDeltaNames\n    );\n\n    // Figure out which of the new params should actually be posted\n    let params = groupedNewParams.__root__;\n    for (let name of modifiedDeltaNames) {\n      params = params.concat(groupedNewParams[name]);\n      params.push(`modifiedDeltaNames[]=${name}`);\n      if (callback) {\n        callback(name, groupedNewParams[name]);\n      }\n    }\n\n    return asArray ? params : params.join('&');\n  },\n\n  /**\n   * Returns the delta names that have been modified, given old and new form data.\n   *\n   * @param {string} oldData\n   * @param {string} newData\n   * @param {Object} deltaNames\n   * @param {Object} [initialDeltaValues] Initial delta values. If undefined, `Craft.initialDeltaValues` will be used.\n   * @param {Object} [modifiedDeltaNames] List of delta names that should be considered modified regardless of their param values\n   * @param {boolean} [mostSpecific] Whether the most specific modified delta names should be returned\n   * @returns {Array}\n   */\n  findModifiedDeltaNames: function (\n    oldData,\n    newData,\n    deltaNames,\n    initialDeltaValues = {},\n    modifiedDeltaNames = [],\n    mostSpecific = false\n  ) {\n    // Make sure oldData and newData are always strings. This is important because further below String.split is called.\n    oldData = typeof oldData === 'string' ? oldData : '';\n    newData = typeof newData === 'string' ? newData : '';\n    if (!Array.isArray(deltaNames)) {\n      deltaNames = [];\n    }\n    if (!$.isPlainObject(initialDeltaValues)) {\n      initialDeltaValues = {};\n    }\n    if (!Array.isArray(modifiedDeltaNames)) {\n      modifiedDeltaNames = [];\n    }\n\n    // Sort the delta namespaces from least -> most specific\n    deltaNames.sort((a, b) => {\n      if (a.length === b.length) {\n        return 0;\n      }\n      if (mostSpecific) {\n        return a.length < b.length ? 1 : -1;\n      }\n      return a.length > b.length ? 1 : -1;\n    });\n\n    // Group all the old & new params by namespace\n    const groupedOldParams = this._groupParamsByDeltaNames(\n      oldData.split('&'),\n      deltaNames,\n      false,\n      initialDeltaValues\n    );\n    const groupedNewParams = this._groupParamsByDeltaNames(\n      newData.split('&'),\n      deltaNames,\n      true,\n      false\n    );\n\n    for (let name of deltaNames) {\n      if (\n        !modifiedDeltaNames.includes(name) &&\n        typeof groupedNewParams[name] === 'object' &&\n        (typeof groupedOldParams[name] !== 'object' ||\n          JSON.stringify(groupedOldParams[name]) !==\n            JSON.stringify(groupedNewParams[name]))\n      ) {\n        modifiedDeltaNames.push(name);\n      }\n    }\n\n    return [modifiedDeltaNames, groupedNewParams];\n  },\n\n  /**\n   * @param {Object} params\n   * @param {Object} deltaNames\n   * @param {boolean} withRoot\n   * @param {(boolean|Object)} initialValues\n   * @returns {Object}\n   * @private\n   */\n  _groupParamsByDeltaNames: function (\n    params,\n    deltaNames,\n    withRoot,\n    initialValues\n  ) {\n    const grouped = {};\n\n    if (withRoot) {\n      grouped.__root__ = [];\n    }\n\n    // sort delta names from most to least specific\n    deltaNames = deltaNames.sort((a, b) => b.length - a.length);\n\n    for (let name of deltaNames) {\n      grouped[name] = [];\n    }\n\n    const encodeURIComponentExceptEqualChar = (o) =>\n      encodeURIComponent(o).replace('%3D', '=');\n\n    params = params.map((p) => decodeURIComponent(p));\n\n    paramLoop: for (let param of params) {\n      for (let name of deltaNames) {\n        const paramName = param.substring(0, name.length + 1);\n        if ([`${name}=`, `${name}[`].includes(paramName)) {\n          if (typeof grouped[name] === 'undefined') {\n            grouped[name] = [];\n          }\n          grouped[name].push(encodeURIComponentExceptEqualChar(param));\n          continue paramLoop;\n        }\n      }\n\n      if (withRoot) {\n        grouped.__root__.push(encodeURIComponentExceptEqualChar(param));\n      }\n    }\n\n    if (initialValues) {\n      const serializeParam = (name, value) => {\n        if (Array.isArray(value) || $.isPlainObject(value)) {\n          value = $.param(value);\n        } else if (typeof value === 'string') {\n          value = encodeURIComponent(value);\n        } else if (value === null) {\n          value = '';\n        }\n        return `${encodeURIComponent(name)}=${value}`;\n      };\n\n      for (let name in initialValues) {\n        if (initialValues.hasOwnProperty(name)) {\n          if ($.isPlainObject(initialValues[name])) {\n            grouped[name] = [];\n            for (let subName in initialValues[name]) {\n              if (initialValues[name].hasOwnProperty(subName)) {\n                grouped[name].push(\n                  serializeParam(\n                    `${name}[${subName}]`,\n                    initialValues[name][subName]\n                  )\n                );\n              }\n            }\n          } else {\n            grouped[name] = [serializeParam(name, initialValues[name])];\n          }\n        }\n      }\n    }\n\n    return grouped;\n  },\n\n  /**\n   * Expands an object of POST array-style strings into an actual array.\n   *\n   * @param {Object} arr\n   * @returns {Array}\n   */\n  expandPostArray: function (arr) {\n    var expanded = {};\n    var i;\n\n    for (var key in arr) {\n      if (!arr.hasOwnProperty(key)) {\n        continue;\n      }\n\n      var value = arr[key],\n        m = key.match(/^(\\w+)(\\[.*)?/),\n        keys;\n\n      if (m[2]) {\n        // Get all of the nested keys\n        keys = m[2].match(/\\[[^\\[\\]]*\\]/g);\n\n        // Chop off the brackets\n        for (i = 0; i < keys.length; i++) {\n          keys[i] = keys[i].substring(1, keys[i].length - 1);\n        }\n      } else {\n        keys = [];\n      }\n\n      keys.unshift(m[1]);\n\n      var parentElem = expanded;\n\n      for (i = 0; i < keys.length; i++) {\n        if (i < keys.length - 1) {\n          if (typeof parentElem[keys[i]] !== 'object') {\n            // Figure out what this will be by looking at the next key\n            if (!keys[i + 1] || parseInt(keys[i + 1]) == keys[i + 1]) {\n              parentElem[keys[i]] = [];\n            } else {\n              parentElem[keys[i]] = {};\n            }\n          }\n\n          parentElem = parentElem[keys[i]];\n        } else {\n          // Last one. Set the value\n          if (!keys[i]) {\n            keys[i] = parentElem.length;\n          }\n\n          parentElem[keys[i]] = value;\n        }\n      }\n    }\n\n    return expanded;\n  },\n\n  /**\n   * Creates a form element populated with hidden inputs based on a string of serialized form data.\n   *\n   * @param {string} [data]\n   * @returns {(jQuery|HTMLElement)}\n   */\n  createForm: function (data) {\n    var $form = $('<form/>', {\n      attr: {\n        method: 'post',\n        action: '',\n        'accept-charset': 'UTF-8',\n      },\n    });\n\n    if (typeof data === 'string') {\n      var values = data.split('&');\n      var chunks;\n      for (var i = 0; i < values.length; i++) {\n        chunks = values[i].split('=', 2);\n        $('<input/>', {\n          type: 'hidden',\n          name: decodeURIComponent(chunks[0]),\n          value: decodeURIComponent(chunks[1] || ''),\n        }).appendTo($form);\n      }\n    }\n\n    return $form;\n  },\n\n  /**\n   * Compares two variables and returns whether they are equal in value.\n   * Recursively compares array and object values.\n   *\n   * @param {*} obj1\n   * @param {*} obj2\n   * @param {boolean} [sortObjectKeys] Whether object keys should be sorted before being compared. Default is true.\n   * @returns boolean\n   */\n  compare: function (obj1, obj2, sortObjectKeys) {\n    // Compare the types\n    if (typeof obj1 !== typeof obj2) {\n      return false;\n    }\n\n    if (typeof obj1 === 'object' && obj1 !== null && obj2 !== null) {\n      // Compare the lengths\n      if (obj1.length !== obj2.length) {\n        return false;\n      }\n\n      // Is one of them an array but the other is not?\n      if (Array.isArray(obj1) !== Array.isArray(obj2)) {\n        return false;\n      }\n\n      // If they're actual objects (not arrays), compare the keys\n      if (!Array.isArray(obj1)) {\n        if (typeof sortObjectKeys === 'undefined' || sortObjectKeys === true) {\n          if (\n            !Craft.compare(\n              Craft.getObjectKeys(obj1).sort(),\n              Craft.getObjectKeys(obj2).sort()\n            )\n          ) {\n            return false;\n          }\n        } else {\n          if (\n            !Craft.compare(Craft.getObjectKeys(obj1), Craft.getObjectKeys(obj2))\n          ) {\n            return false;\n          }\n        }\n      }\n\n      // Compare each value\n      for (var i in obj1) {\n        if (!obj1.hasOwnProperty(i)) {\n          continue;\n        }\n\n        if (!Craft.compare(obj1[i], obj2[i])) {\n          return false;\n        }\n      }\n\n      // All clear\n      return true;\n    } else {\n      return obj1 === obj2;\n    }\n  },\n\n  /**\n   * Returns an array of an object's keys.\n   *\n   * @param {Object} obj\n   * @returns {string[]}\n   */\n  getObjectKeys: function (obj) {\n    var keys = [];\n\n    for (var key in obj) {\n      if (!obj.hasOwnProperty(key)) {\n        continue;\n      }\n\n      keys.push(key);\n    }\n\n    return keys;\n  },\n\n  /**\n   * Takes an array or string of chars, and places a backslash before each one, returning the combined string.\n   *\n   * Userd by ltrim() and rtrim()\n   *\n   * @param {(string|Object)} chars\n   * @returns {string}\n   */\n  escapeChars: function (chars) {\n    if (!Array.isArray(chars)) {\n      chars = chars.split();\n    }\n\n    var escaped = '';\n\n    for (var i = 0; i < chars.length; i++) {\n      escaped += '\\\\' + chars[i];\n    }\n\n    return escaped;\n  },\n\n  /**\n   * Trim characters off of the beginning of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  ltrim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trimStart();\n    }\n    const re = new RegExp('^[' + Craft.escapeChars(chars) + ']+');\n    return str.replace(re, '');\n  },\n\n  /**\n   * Trim characters off of the end of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  rtrim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trimEnd();\n    }\n    const re = new RegExp('[' + Craft.escapeChars(chars) + ']+$');\n    return str.replace(re, '');\n  },\n\n  /**\n   * Trim characters off of the beginning and end of a string.\n   *\n   * @param {string} str\n   * @param {(string|Object)} [chars] The characters to trim off. Defaults to a space if left blank.\n   * @returns {string}\n   */\n  trim: function (str, chars) {\n    if (!str) {\n      return str;\n    }\n    if (typeof chars === 'undefined') {\n      return str.trim();\n    }\n    str = Craft.ltrim(str, chars);\n    str = Craft.rtrim(str, chars);\n    return str;\n  },\n\n  /**\n   * Returns whether a string starts with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @returns {boolean}\n   * @deprecated String.prototype.endsWith() should be used instead\n   */\n  startsWith: function (str, substr) {\n    return str.startsWith(substr);\n  },\n\n  /**\n   * Ensures a string starts with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @return {string}\n   */\n  ensureStartsWith: function (str, substr) {\n    if (!str.startsWith(substr)) {\n      str = substr + str;\n    }\n    return str;\n  },\n\n  /**\n   * Ensures a string ends with another string.\n   *\n   * @param {string} str\n   * @param {string} substr\n   * @return {string}\n   */\n  ensureEndsWith: function (str, substr) {\n    if (!str.endsWith(substr)) {\n      str += substr;\n    }\n    return str;\n  },\n\n  /**\n   * @callback filterArrayCallback\n   * @param {*} value\n   * @param {number} index\n   * @return {boolean}\n   */\n  /**\n   * Filters an array.\n   *\n   * @param {Object} arr\n   * @param {filterArrayCallback} [callback] A user-defined callback function. If null, we'll just remove any elements that equate to false.\n   * @returns {Array}\n   */\n  filterArray: function (arr, callback) {\n    var filtered = [];\n\n    for (var i = 0; i < arr.length; i++) {\n      var include;\n\n      if (typeof callback === 'function') {\n        include = callback(arr[i], i);\n      } else {\n        include = arr[i];\n      }\n\n      if (include) {\n        filtered.push(arr[i]);\n      }\n    }\n\n    return filtered;\n  },\n\n  /**\n   * @callback filterObjectCallback\n   * @param {*} value\n   * @param {string} key\n   * @return {boolean}\n   */\n  /**\n   * Filters an object by a callback method.\n   *\n   * @param {Object} obj\n   * @param {filterObjectCallback} [callback] A user-defined callback function. If null, values that equate to false will be removed.\n   * @returns {Object}\n   */\n  filterObject(obj, callback) {\n    if (typeof callback === 'undefined') {\n      callback = (v) => !!v;\n    }\n    return Object.fromEntries(Object.entries(obj).filter(callback));\n  },\n\n  /**\n   * Returns whether an element is in an array (unlike jQuery.inArray(), which returns the element’s index, or -1).\n   *\n   * @param {*} elem\n   * @param {(Object|Array)} arr\n   * @returns {boolean}\n   */\n  inArray: function (elem, arr) {\n    if ($.isPlainObject(arr)) {\n      arr = Object.values(arr);\n    }\n    return arr.includes(elem);\n  },\n\n  /**\n   * Removes an element from an array.\n   *\n   * @param {*} elem\n   * @param {Array} arr\n   * @returns {boolean} Whether the element could be found or not.\n   */\n  removeFromArray: function (elem, arr) {\n    var index = $.inArray(elem, arr);\n    if (index !== -1) {\n      arr.splice(index, 1);\n      return true;\n    } else {\n      return false;\n    }\n  },\n\n  /**\n   * Returns the last element in an array.\n   *\n   * @param {Array} arr\n   * @returns {*}\n   */\n  getLast: function (arr) {\n    if (!arr.length) {\n      return null;\n    } else {\n      return arr[arr.length - 1];\n    }\n  },\n\n  /**\n   * Makes the first character of a string uppercase.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  uppercaseFirst: function (str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  },\n\n  /**\n   * Makes the first character of a string lowercase.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  lowercaseFirst: function (str) {\n    return str.charAt(0).toLowerCase() + str.slice(1);\n  },\n\n  parseUrl: function (url) {\n    var m = url.match(\n      /^(?:(https?):\\/\\/|\\/\\/)([^\\/\\:]*)(?:\\:(\\d+))?(\\/[^\\?]*)?(?:\\?([^#]*))?(#.*)?/\n    );\n    if (!m) {\n      return {};\n    }\n    return {\n      scheme: m[1],\n      host: m[2] + (m[3] ? ':' + m[3] : ''),\n      hostname: m[2],\n      port: m[3] || null,\n      path: m[4] || '/',\n      query: m[5] || null,\n      hash: m[6] || null,\n    };\n  },\n\n  /**\n   * Returns a URL’s query params as an object.\n   * @param {string} [url] The URL. The window’s URL will be used by default.\n   * @returns Object\n   */\n  getQueryParams: function (url) {\n    let qs;\n    if (url) {\n      const m = url.match(/\\?.+/);\n      if (!m) {\n        return {};\n      }\n      qs = m[0];\n    } else {\n      qs = window.location.search;\n    }\n    return Object.fromEntries(new URLSearchParams(qs).entries());\n  },\n\n  /**\n   * Returns a query param.\n   * @param {string} name The param name\n   * @param {string} [url] The URL. The window’s URL will be used by default.\n   * @returns Object\n   */\n  getQueryParam: function (name, url) {\n    return this.getQueryParams(url)[name];\n  },\n\n  isSameHost: function (url) {\n    var requestUrlInfo = this.parseUrl(document.location.href);\n    if (!requestUrlInfo) {\n      return false;\n    }\n    var urlInfo = this.parseUrl(url);\n    if (!urlInfo) {\n      return false;\n    }\n    return requestUrlInfo.host === urlInfo.host;\n  },\n\n  /**\n   * Converts a number of seconds into a human-facing time duration.\n   */\n  secondsToHumanTimeDuration: function (seconds, showSeconds) {\n    if (typeof showSeconds === 'undefined') {\n      showSeconds = true;\n    }\n\n    var secondsInWeek = 604800,\n      secondsInDay = 86400,\n      secondsInHour = 3600,\n      secondsInMinute = 60;\n\n    var weeks = Math.floor(seconds / secondsInWeek);\n    seconds = seconds % secondsInWeek;\n\n    var days = Math.floor(seconds / secondsInDay);\n    seconds = seconds % secondsInDay;\n\n    var hours = Math.floor(seconds / secondsInHour);\n    seconds = seconds % secondsInHour;\n\n    var minutes;\n\n    if (showSeconds) {\n      minutes = Math.floor(seconds / secondsInMinute);\n      seconds = seconds % secondsInMinute;\n    } else {\n      minutes = Math.round(seconds / secondsInMinute);\n      seconds = 0;\n    }\n\n    var timeComponents = [];\n\n    if (weeks) {\n      timeComponents.push(\n        weeks +\n          ' ' +\n          (weeks === 1 ? Craft.t('app', 'week') : Craft.t('app', 'weeks'))\n      );\n    }\n\n    if (days) {\n      timeComponents.push(\n        days +\n          ' ' +\n          (days === 1 ? Craft.t('app', 'day') : Craft.t('app', 'days'))\n      );\n    }\n\n    if (hours) {\n      timeComponents.push(\n        hours +\n          ' ' +\n          (hours === 1 ? Craft.t('app', 'hour') : Craft.t('app', 'hours'))\n      );\n    }\n\n    if (minutes || (!showSeconds && !weeks && !days && !hours)) {\n      timeComponents.push(\n        minutes +\n          ' ' +\n          (minutes === 1 ? Craft.t('app', 'minute') : Craft.t('app', 'minutes'))\n      );\n    }\n\n    if (seconds || (showSeconds && !weeks && !days && !hours && !minutes)) {\n      timeComponents.push(\n        seconds +\n          ' ' +\n          (seconds === 1 ? Craft.t('app', 'second') : Craft.t('app', 'seconds'))\n      );\n    }\n\n    return timeComponents.join(', ');\n  },\n\n  /**\n   * Converts extended ASCII characters to ASCII.\n   *\n   * @param {string} str\n   * @param {Object} [charMap]\n   * @returns {string}\n   */\n  asciiString: function (str, charMap) {\n    // Normalize NFD chars to NFC\n    str = str.normalize('NFC');\n\n    var asciiStr = '';\n    var char;\n\n    for (var i = 0; i < str.length; i++) {\n      char = str.charAt(i);\n      asciiStr +=\n        typeof (charMap || Craft.asciiCharMap)[char] === 'string'\n          ? (charMap || Craft.asciiCharMap)[char]\n          : char;\n    }\n\n    return asciiStr;\n  },\n\n  uuid: function () {\n    if (typeof crypto.randomUUID === 'function') {\n      return crypto.randomUUID();\n    }\n\n    // h/t https://stackoverflow.com/a/2117523/1688568\n    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>\n      (\n        c ^\n        (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))\n      ).toString(16)\n    );\n  },\n\n  /**\n   * @param {string} name\n   * @param {string} [namespace]\n   * @returns {string}\n   */\n  namespaceInputName: function (name, namespace) {\n    if (!namespace) {\n      return name;\n    }\n\n    return name.replace(/([^'\"\\[\\]]+)([^'\"]*)/, `${namespace}[$1]$2`);\n  },\n\n  /**\n   * @param {string} id\n   * @param {string} [namespace]\n   * @returns {string}\n   */\n  namespaceId: function (id, namespace) {\n    return (\n      (namespace ? `${Craft.formatInputId(namespace)}-` : '') +\n      Craft.formatInputId(id)\n    );\n  },\n\n  randomString: function (length) {\n    // h/t https://stackoverflow.com/a/1349426/1688568\n    var result = '';\n    var characters =\n      'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n    for (var i = 0; i < length; i++) {\n      result += characters.charAt(Math.floor(Math.random() * 62));\n    }\n    return result;\n  },\n\n  /**\n   * Creates a validation error list.\n   *\n   * @param {Object} errors\n   * @returns {jQuery}\n   */\n  createErrorList: function (errors) {\n    var $ul = $(document.createElement('ul')).addClass('errors');\n\n    for (var i = 0; i < errors.length; i++) {\n      var $li = $(document.createElement('li'));\n      $li.appendTo($ul);\n      $li.html(errors[i]);\n    }\n\n    return $ul;\n  },\n\n  _existingCss: null,\n  _existingJs: null,\n\n  _appendHtml: async function (html, $parent) {\n    if (!html) {\n      return;\n    }\n\n    const nodes = $.parseHTML(html.trim(), true).filter((node) => {\n      if (node.nodeName === 'LINK' && node.href) {\n        if (!this._existingCss) {\n          this._existingCss = $('link[href]')\n            .toArray()\n            .map((n) => n.href.replace(/&/g, '&amp;'));\n        }\n\n        if (this._existingCss.includes(node.href)) {\n          return false;\n        }\n\n        this._existingCss.push(node.href);\n        return true;\n      }\n\n      if (node.nodeName === 'SCRIPT' && node.src) {\n        if (!this._existingJs) {\n          this._existingJs = $('script[src]')\n            .toArray()\n            .map((n) => n.src.replace(/&/g, '&amp;'));\n        }\n\n        // if this is a cross-domain JS resource, use our app/resource-js proxy to load it\n        if (\n          node.src.startsWith(this.resourceBaseUrl) &&\n          !this.isSameHost(node.src)\n        ) {\n          node.src = this.getActionUrl('app/resource-js', {\n            url: node.src,\n          });\n        }\n\n        if (this._existingJs.includes(node.src)) {\n          return false;\n        }\n\n        this._existingJs.push(node.src);\n      }\n\n      return true;\n    });\n\n    $parent.append(nodes);\n  },\n\n  /**\n   * Appends HTML to the page `<head>`.\n   *\n   * @param {string} html\n   * @returns {Promise}\n   */\n  appendHeadHtml: async function (html) {\n    await this._appendHtml(html, $('head'));\n  },\n\n  /**\n   * Appends HTML to the page `<body>`.\n   *\n   * @param {string} html\n   * @returns {Promise}\n   */\n  appendBodyHtml: async function (html) {\n    await this._appendHtml(html, Garnish.$bod);\n  },\n\n  /**\n   * Appends HTML to the page `<body>`.\n   *\n   * @deprecated in 4.0.0. `appendBodyHtml()` should be used instead\n   */\n  appendFootHtml: function (html) {\n    console.warn(\n      'Craft.appendFootHtml() is deprecated. Craft.appendBodyHtml() should be used instead.'\n    );\n    this.appendBodyHtml(html);\n  },\n\n  /**\n   * Initializes any common UI elements in a given container.\n   *\n   * @param {Object} $container\n   */\n  initUiElements: function ($container) {\n    $('.grid', $container).grid();\n    $('.info', $container).infoicon();\n    $('.checkbox-select', $container).checkboxselect();\n    $('.fieldtoggle', $container).fieldtoggle();\n    $('.lightswitch', $container).lightswitch();\n    $('.nicetext', $container).nicetext();\n    $('.datetimewrapper', $container).datetime();\n    $(\n      '.datewrapper > input[type=\"date\"], .timewrapper > input[type=\"time\"]',\n      $container\n    ).datetimeinput();\n    $('.formsubmit', $container).formsubmit();\n    // menus last, since they can mess with the DOM\n    $('.menubtn:not([data-disclosure-trigger])', $container).menubtn();\n    $('[data-disclosure-trigger]', $container).disclosureMenu();\n\n    // Open outbound links in new windows\n    // hat tip: https://stackoverflow.com/a/2911045/1688568\n    $('a', $container).each(function () {\n      if (\n        this.hostname.length &&\n        this.hostname !== location.hostname &&\n        typeof $(this).attr('target') === 'undefined'\n      ) {\n        $(this).attr('rel', 'noopener').attr('target', '_blank');\n      }\n    });\n  },\n\n  _elementIndexClasses: {},\n  _elementSelectorModalClasses: {},\n  _elementEditorClasses: {},\n  _uploaderClasses: {},\n  _authFormHandlers: {},\n\n  /**\n   * Registers an element index class for a given element type.\n   *\n   * @param {string} elementType\n   * @param {function} func\n   */\n  registerElementIndexClass: function (elementType, func) {\n    if (typeof this._elementIndexClasses[elementType] !== 'undefined') {\n      throw (\n        'An element index class has already been registered for the element type “' +\n        elementType +\n        '”.'\n      );\n    }\n\n    this._elementIndexClasses[elementType] = func;\n  },\n\n  /**\n   * Registers a file uploader class for a given filesystem type.\n   *\n   * @param {string} fsType\n   * @param {function} func\n   */\n  registerUploaderClass: function (fsType, func) {\n    if (typeof this._uploaderClasses[fsType] !== 'undefined') {\n      throw (\n        'An asset uploader class has already been registered for the filesystem type “' +\n        fsType +\n        '”.'\n      );\n    }\n\n    this._uploaderClasses[fsType] = func;\n  },\n\n  /**\n   * Registers an element selector modal class for a given element type.\n   *\n   * @param {string} elementType\n   * @param {function} func\n   */\n  registerElementSelectorModalClass: function (elementType, func) {\n    if (typeof this._elementSelectorModalClasses[elementType] !== 'undefined') {\n      throw (\n        'An element selector modal class has already been registered for the element type “' +\n        elementType +\n        '”.'\n      );\n    }\n\n    this._elementSelectorModalClasses[elementType] = func;\n  },\n\n  registerAuthFormHandler(method, func) {\n    if (typeof this._authFormHandlers[method] !== 'undefined') {\n      throw `An authentication form handler has already been registered for the method “${method}”.`;\n    }\n\n    this._authFormHandlers[method] = func;\n  },\n\n  /**\n   * Creates a new element index for a given element type.\n   *\n   * @param {string} elementType\n   * @param {jQuery} $container\n   * @param {Object} settings\n   * @returns {BaseElementIndex}\n   */\n  createElementIndex: function (elementType, $container, settings) {\n    var func;\n\n    if (typeof this._elementIndexClasses[elementType] !== 'undefined') {\n      func = this._elementIndexClasses[elementType];\n    } else {\n      func = Craft.BaseElementIndex;\n    }\n\n    return new func(elementType, $container, settings);\n  },\n\n  /**\n   * Creates a file uploader for a given filesystem type.\n   *\n   * @param {string} fsType\n   * @param {jQuery} $container\n   * @param {Object} settings\n   * @returns {Uploader}\n   */\n  createUploader: function (fsType, $container, settings) {\n    const func =\n      typeof this._uploaderClasses[fsType] !== 'undefined'\n        ? this._uploaderClasses[fsType]\n        : Craft.Uploader;\n\n    const uploader = new func($container, settings);\n    uploader.fsType = fsType;\n\n    return uploader;\n  },\n\n  /**\n   * Creates a new element selector modal for a given element type.\n   *\n   * @param {string} elementType\n   * @param {Object} settings\n   */\n  createElementSelectorModal: function (elementType, settings) {\n    var func;\n\n    if (typeof this._elementSelectorModalClasses[elementType] !== 'undefined') {\n      func = this._elementSelectorModalClasses[elementType];\n    } else {\n      func = Craft.BaseElementSelectorModal;\n    }\n\n    return new func(elementType, settings);\n  },\n\n  createAuthFormHandler(method, container, onSuccess, showError) {\n    if (typeof this._authFormHandlers[method] === 'undefined') {\n      throw `No authentication form has been registered for the method \"${method}\".`;\n    }\n\n    if (container instanceof jQuery) {\n      if (!container.length) {\n        throw 'No form element specified.';\n      }\n      container = container[0];\n    }\n\n    if (!showError) {\n      showError = (error) => {\n        Craft.cp.displayError(error);\n      };\n    }\n\n    return new this._authFormHandlers[method](container, onSuccess, showError);\n  },\n\n  /**\n   * Creates a new element editor slideout for a given element type.\n   *\n   * @param {string} elementType\n   * @param {(jQuery|HTMLElement|string)} element\n   * @param {Object} settings\n   */\n  createElementEditor: function (elementType, element, settings) {\n    // Param mapping\n    if (typeof settings === 'undefined' && $.isPlainObject(element)) {\n      // (settings)\n      settings = element;\n      element = null;\n    } else if (typeof settings !== 'object') {\n      settings = {};\n    }\n\n    if (!settings.elementType) {\n      settings.elementType = elementType;\n    }\n\n    return new Craft.ElementEditorSlideout(element, settings);\n  },\n\n  /**\n   * Retrieves a value from localStorage if it exists.\n   *\n   * @param {string} key\n   * @param {*} defaultValue\n   */\n  getLocalStorage: function (key, defaultValue) {\n    key = 'Craft-' + Craft.systemUid + '.' + key;\n\n    if (\n      typeof localStorage !== 'undefined' &&\n      typeof localStorage[key] !== 'undefined'\n    ) {\n      return JSON.parse(localStorage[key]);\n    } else {\n      return defaultValue;\n    }\n  },\n\n  /**\n   * Saves a value to localStorage.\n   *\n   * @param {string} key\n   * @param {*} value\n   */\n  setLocalStorage: function (key, value) {\n    if (typeof localStorage !== 'undefined') {\n      key = 'Craft-' + Craft.systemUid + '.' + key;\n\n      // localStorage might be filled all the way up.\n      // Especially likely if this is a private window in Safari 8+, where localStorage technically exists,\n      // but has a max size of 0 bytes.\n      try {\n        localStorage[key] = JSON.stringify(value);\n      } catch (e) {}\n    }\n  },\n\n  /**\n   * Removes a value from localStorage.\n   * @param {string} key\n   */\n  removeLocalStorage: function (key) {\n    if (typeof localStorage !== 'undefined') {\n      localStorage.removeItem(`Craft-${Craft.systemUid}.${key}`);\n    }\n  },\n\n  /**\n   * Returns a cookie value, if it exists, otherwise returns `false`\n   * @returns {(string|boolean)}\n   */\n  getCookie: function (name) {\n    // Adapted from https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie\n    return document.cookie.replace(\n      new RegExp(\n        `(?:(?:^|.*;\\\\s*)Craft-${Craft.systemUid}:${name}\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$`\n      ),\n      '$1'\n    );\n  },\n\n  /**\n   * Sets a cookie value.\n   * @param {string} name\n   * @param {string} value\n   * @param {Object} [options]\n   * @param {string} [options.path] The cookie path.\n   * @param {string} [options.domain] The cookie domain. Defaults to the `defaultCookieDomain` config setting.\n   * @param {number} [options.maxAge] The max age of the cookie (in seconds)\n   * @param {Date} [options.expires] The expiry date of the cookie. Defaults to none (session-based cookie).\n   * @param {boolean} [options.secure] Whether this is a secure cookie. Defaults to the `useSecureCookies`\n   * config setting.\n   * @param {string} [options.sameSite] The SameSite value (`lax` or `strict`). Defaults to the\n   * `sameSiteCookieValue` config setting.\n   */\n  setCookie: function (name, value, options) {\n    options = $.extend({}, this.defaultCookieOptions, options);\n    let cookie = `Craft-${Craft.systemUid}:${name}=${encodeURIComponent(\n      value\n    )}`;\n    if (options.path) {\n      cookie += `;path=${options.path}`;\n    }\n    if (options.domain) {\n      cookie += `;domain=${options.domain}`;\n    }\n    if (options.maxAge) {\n      cookie += `;max-age-in-seconds=${options.maxAge}`;\n    } else if (options.expires) {\n      cookie += `;expires=${options.expires.toUTCString()}`;\n    }\n    if (options.secure) {\n      cookie += ';secure';\n    }\n    document.cookie = cookie;\n  },\n\n  /**\n   * Removes a cookie\n   * @param {string} name\n   */\n  removeCookie: function (name) {\n    this.setCookie(name, '', new Date('1970-01-01T00:00:00'));\n  },\n\n  /**\n   * Returns element information from its DOM element.\n   *\n   * @param {(jQuery|HTMLElement|string)} element\n   * @returns {Object}\n   */\n  getElementInfo: function (element) {\n    let $element = $(element);\n\n    if (!$element.hasClass('element')) {\n      $element = $element.find('.element:first');\n    }\n\n    return {\n      id: $element.data('id'),\n      siteId: $element.data('site-id'),\n      label: $element.data('label'),\n      status: $element.data('status'),\n      url: $element.data('url'),\n      hasThumb: $element.hasClass('has-thumb'),\n      $element: $element,\n    };\n  },\n\n  /**\n   * Changes an element to the requested size.\n   *\n   * @param {(jQuery|HTMLElement|string))} element\n   * @param {string} size\n   */\n  setElementSize: function (element, size) {\n    const $element = $(element);\n\n    if (size !== 'small' && size !== 'large') {\n      size = 'small';\n    }\n\n    if ($element.hasClass(size)) {\n      return;\n    }\n\n    const otherSize = size === 'small' ? 'large' : 'small';\n\n    $element.addClass(size).removeClass(otherSize);\n\n    if ($element.hasClass('has-thumb')) {\n      const $oldImg = $element.find('> .thumb > img'),\n        imgSize = size === 'small' ? '30' : '100',\n        $newImg = $('<img/>', {\n          sizes: imgSize + 'px',\n          srcset: $oldImg.attr('srcset') || $oldImg.attr('data-pfsrcset'),\n        });\n\n      $oldImg.replaceWith($newImg);\n\n      picturefill({\n        elements: [$newImg[0]],\n      });\n    }\n  },\n\n  refreshElementInstances(elementId) {\n    const $elements = $(`div.element[data-id=\"${elementId}\"][data-settings]`);\n    if (!$elements.length) {\n      return;\n    }\n    const elementsBySite = {};\n    for (let i = 0; i < $elements.length; i++) {\n      const $element = $elements.eq(i);\n      const siteId = $element.data('site-id');\n      if (typeof elementsBySite[siteId] === 'undefined') {\n        elementsBySite[siteId] = {\n          key: i,\n          type: $element.data('type'),\n          id: elementId,\n          siteId,\n          instances: [],\n        };\n      }\n      elementsBySite[siteId].instances.push($element.data('settings'));\n    }\n    const data = {\n      elements: Object.values(elementsBySite),\n    };\n    Craft.sendActionRequest('POST', 'app/render-elements', {data}).then(\n      ({data}) => {\n        const instances = data.elements[elementId] || {};\n        for (let key of Object.keys(instances)) {\n          const $element = $elements.eq(key);\n          const $replacement = $(instances[key]);\n          for (let attribute of $replacement[0].attributes) {\n            if (attribute.name === 'class') {\n              $element.addClass(attribute.value);\n            } else {\n              $element.attr(attribute.name, attribute.value);\n            }\n          }\n          const $actions = $element\n            .find(\n              '> .chip-content .chip-actions,> .card-actions-container .card-actions'\n            )\n            .detach();\n          const $inputs = $element.find('input,button').detach();\n          $element.html($replacement.html());\n\n          if ($actions.length) {\n            const $oldStatus = $actions.find('span.status');\n            const $newStatus = $replacement.find('span.status');\n\n            if (\n              $oldStatus.length &&\n              $newStatus.length &&\n              $oldStatus[0].classList !== $newStatus[0].classList\n            ) {\n              $actions.find('span.status').replaceWith($newStatus);\n            }\n\n            $element\n              .find(\n                '> .chip-content .chip-actions,> .card-actions-container .card-actions'\n              )\n              .replaceWith($actions);\n          }\n          if ($inputs.length) {\n            $inputs.appendTo($element);\n          }\n        }\n        Craft.cp.elementThumbLoader.load($elements);\n      }\n    );\n  },\n\n  refreshComponentInstances(type, id) {\n    const $chips = $(\n      `div.chip[data-type=\"${$.escapeSelector(\n        type\n      )}\"][data-id=\"${id}\"][data-settings]`\n    );\n    if (!$chips.length) {\n      return;\n    }\n    const instances = [];\n    for (let i = 0; i < $chips.length; i++) {\n      instances.push($chips.eq(i).data('settings'));\n    }\n    const data = {\n      components: [{type, id, instances}],\n    };\n    Craft.sendActionRequest('POST', 'app/render-components', {data}).then(\n      ({data}) => {\n        for (let i = 0; i < data.components[type][id].length; i++) {\n          const $chip = $chips.eq(i);\n          const $replacement = $(data.components[type][id][i]);\n          for (let attribute of $replacement[0].attributes) {\n            if (attribute.name === 'class') {\n              $chip.addClass(attribute.value);\n            } else {\n              $chip.attr(attribute.name, attribute.value);\n            }\n          }\n          const $actions = $chip.find('.chip-actions').detach();\n          const $inputs = $chip.find('input,button').detach();\n          $chip.html($replacement.html());\n          if ($actions.length) {\n            $chip.find('.chip-actions').replaceWith($actions);\n          }\n          if ($inputs.length) {\n            $inputs.appendTo($chip);\n          }\n        }\n      }\n    );\n  },\n\n  /**\n   * Adds actions to a chip or card.\n   *\n   * @param {jQuery|HTMLElement} chip\n   * @param {Array} actions\n   */\n  addActionsToChip(chip, actions) {\n    if (!actions?.length) {\n      return;\n    }\n\n    const $actions = $(chip).find(\n      '> .chip-content > .chip-actions, > .card-actions-container > .card-actions'\n    );\n    let $actionMenuBtn = $actions.find('.action-btn');\n\n    if (!$actionMenuBtn.length) {\n      // the chip/card doesn't have an action menu yet, so add one\n      const menuId = `actions-${Math.floor(Math.random() * 1000000)}`;\n      const labelId = `${menuId}-label`;\n      const $label = $('<label/>', {\n        id: labelId,\n        class: 'visually-hidden',\n        text: Craft.t('app', 'Actions'),\n      }).appendTo($actions);\n      $actionMenuBtn = $('<button/>', {\n        class: 'btn action-btn',\n        type: 'button',\n        title: Craft.t('app', 'Actions'),\n        'aria-controls': menuId,\n        'aria-describedby': labelId,\n        'data-disclosure-trigger': 'true',\n      }).insertAfter($label);\n      $('<div/>', {\n        id: menuId,\n        class: 'menu menu--disclosure',\n      }).insertAfter($actionMenuBtn);\n    }\n\n    const disclosureMenu = $actionMenuBtn\n      .disclosureMenu()\n      .data('disclosureMenu');\n\n    const safeActions = actions.filter((a) => !a.destructive);\n    const destructiveActions = actions.filter((a) => a.destructive);\n\n    if (safeActions.length) {\n      disclosureMenu.addItems(safeActions, disclosureMenu.addGroup());\n    }\n\n    if (destructiveActions.length) {\n      disclosureMenu.addItems(destructiveActions, disclosureMenu.addGroup());\n    }\n\n    Craft.initUiElements(disclosureMenu.$container);\n  },\n\n  /**\n   * Submits a form.\n   * @param {Object} $form\n   * @param {Object} [options]\n   * @param {string} [options.action] The `action` param value override\n   * @param {string} [options.redirect] The `redirect` param value override\n   * @param {string} [options.confirm] A confirmation message that should be shown to the user before submit\n   * @param {Object} [options.params] Additional params that should be added to the form, defined as name/value pairs\n   * @param {Object} [options.data] Additional data to be passed to the submit event\n   * @param {boolean} [options.retainScroll] Whether the scroll position should be stored and reapplied on the next page load\n   * @param {boolean} [options.requireElevatedSession] Whether an elevated session is required\n   */\n  submitForm: function ($form, options) {\n    if (typeof options === 'undefined') {\n      options = {};\n    }\n\n    if (options.confirm && !confirm(options.confirm)) {\n      return;\n    }\n\n    if (options.requireElevatedSession) {\n      Craft.elevatedSessionManager.requireElevatedSession(() => {\n        this._submitFormInternal($form, options);\n      });\n    } else {\n      this._submitFormInternal($form, options);\n    }\n  },\n\n  _submitFormInternal($form, options) {\n    const namespace = options.namespace ?? null;\n\n    if (options.action) {\n      $('<input/>', {\n        type: 'hidden',\n        name: this.namespaceInputName('action', namespace),\n        val: options.action,\n      }).appendTo($form);\n    }\n\n    if (options.redirect) {\n      $('<input/>', {\n        type: 'hidden',\n        name: this.namespaceInputName('redirect', namespace),\n        val: options.redirect,\n      }).appendTo($form);\n    }\n\n    if (options.params) {\n      for (let name in options.params) {\n        let value = options.params[name];\n        $('<input/>', {\n          type: 'hidden',\n          name: this.namespaceInputName(name, namespace),\n          val: value,\n        }).appendTo($form);\n      }\n    }\n\n    if (options.retainScroll) {\n      this.setLocalStorage('scrollY', window.scrollY);\n    }\n\n    $form.trigger($.extend({type: 'submit'}, options.data));\n  },\n\n  /**\n   * Traps focus within a container, so when focus is tabbed out of it, it’s cycled back into it.\n   * @param {Object} container\n   */\n  trapFocusWithin: function (container) {\n    Garnish.trapFocusWithin(container);\n  },\n\n  /**\n   * Sets focus to the first focusable element within a container.\n   * @param {Object} container\n   */\n  setFocusWithin: function (container) {\n    Garnish.setFocusWithin(container);\n  },\n\n  /**\n   * Reduces an input’s value to characters that match the given regex pattern.\n   * @param {jQuery|HTMLElement} input\n   * @param {RegExp} regex\n   */\n  filterInputVal: function (input, regex) {\n    const $input = $(input);\n    const val = $input.val();\n    let selectionStart = $input[0].selectionStart;\n    let newVal = '';\n    for (let i = 0; i < val.length; i++) {\n      if (val[i].match(regex)) {\n        newVal += val[i];\n      } else if (i < selectionStart) {\n        selectionStart--;\n      }\n    }\n    if (newVal !== val) {\n      $input.val(newVal);\n      $input[0].setSelectionRange(selectionStart, selectionStart);\n    }\n  },\n\n  /**\n   * Reduces an input’s value to numeric characters.\n   * @param {jQuery|HTMLElement} input\n   * @param {RegExp} regex\n   */\n  filterNumberInputVal: function (input) {\n    this.filterInputVal(input, /[0-9.,\\-]/);\n  },\n\n  /**\n   * Sets/removes attributes on an element.\n   *\n   * Attributes set to `null` or `false` will be removed.\n   *\n   * @param {(jQuery|HTMLElement|string)} element\n   * @param {Object} attributes\n   */\n  setElementAttributes: function (element, attributes) {\n    const $element = $(element);\n\n    for (let name in attributes) {\n      if (!attributes.hasOwnProperty(name)) {\n        continue;\n      }\n\n      let value = attributes[name];\n\n      if (value === null || value === false) {\n        $element.removeAttr(name);\n      } else if (value === true) {\n        $element.attr(name, '');\n      } else if (Array.isArray(value) || $.isPlainObject(value)) {\n        if (Craft.dataAttributes.includes(name)) {\n          // Make sure it's an object\n          value = Object.assign({}, value);\n          for (let n in value) {\n            if (!value.hasOwnProperty(n)) {\n              continue;\n            }\n            let subValue = value[n];\n            if (subValue === null || subValue === false) {\n              continue;\n            }\n            if ($.isPlainObject(subValue) || Array.isArray(subValue)) {\n              subValue = JSON.stringify(subValue);\n            } else if (subValue === true) {\n              subValue = '';\n            } else {\n              subValue = this.escapeHtml(subValue);\n            }\n            $element.attr(`${name}-${n}`, subValue);\n          }\n        } else if (name === 'class') {\n          // Make sure it's an array\n          if ($.isPlainObject(value)) {\n            value = Object.values(value);\n          }\n          for (let c of value) {\n            $element.addClass(c);\n          }\n        } else if (name === 'style') {\n          $element.css(value);\n        } else {\n          $element.attr(name, JSON.stringify(value));\n        }\n      } else {\n        $element.attr(name, this.escapeHtml(value));\n      }\n    }\n  },\n\n  isVisible: function () {\n    return (\n      typeof document.visibilityState === 'undefined' ||\n      document.visibilityState === 'visible'\n    );\n  },\n\n  useMobileStyles: function () {\n    return Garnish.isMobileBrowser() || document.body.clientWidth < 600;\n  },\n});\n\n// -------------------------------------------\n//  Broadcast channel\n// -------------------------------------------\n\nCraft.pageId = Craft.uuid();\n\nif (typeof BroadcastChannel !== 'undefined') {\n  const channelName = `CraftCMS:${Craft.appId}`;\n  Craft.broadcaster = new BroadcastChannel(channelName);\n  Craft.messageReceiver = new BroadcastChannel(channelName);\n\n  Craft.broadcaster.addEventListener('message', (ev) => {\n    switch (ev.data.event) {\n      case 'beforeTrackJobProgress':\n        Craft.cp.cancelJobTracking();\n        break;\n\n      case 'trackJobProgress':\n        Craft.cp.setJobData(ev.data.jobData);\n\n        if (Craft.cp.jobInfo.length) {\n          // Check again after a longer delay than usual,\n          // as it looks like another browser tab is driving for now\n          const delay = Craft.cp.getNextJobDelay() + 1000;\n          Craft.cp.trackJobProgress(delay);\n        }\n\n        break;\n    }\n  });\n\n  Craft.messageReceiver.addEventListener('message', (ev) => {\n    if (ev.data.event === 'saveElement') {\n      Craft.refreshElementInstances(ev.data.id);\n    }\n  });\n}\n\n// -------------------------------------------\n//  Custom jQuery plugins\n// -------------------------------------------\n\n$.extend($.fn, {\n  animateLeft: function (pos, duration, easing, complete) {\n    if (Craft.orientation === 'ltr') {\n      return this.velocity({left: pos}, duration, easing, complete);\n    } else {\n      return this.velocity({right: pos}, duration, easing, complete);\n    }\n  },\n\n  animateRight: function (pos, duration, easing, complete) {\n    if (Craft.orientation === 'ltr') {\n      return this.velocity({right: pos}, duration, easing, complete);\n    } else {\n      return this.velocity({left: pos}, duration, easing, complete);\n    }\n  },\n\n  /**\n   * Disables elements by adding a .disabled class and preventing them from receiving focus.\n   */\n  disable: function () {\n    return this.each(function () {\n      var $elem = $(this);\n      $elem.addClass('disabled');\n\n      if ($elem.data('activatable')) {\n        $elem.removeAttr('tabindex');\n      }\n    });\n  },\n\n  /**\n   * Enables elements by removing their .disabled class and allowing them to receive focus.\n   */\n  enable: function () {\n    return this.each(function () {\n      var $elem = $(this);\n      $elem.removeClass('disabled');\n\n      if ($elem.data('activatable')) {\n        $elem.attr('tabindex', '0');\n      }\n    });\n  },\n\n  /**\n   * Sets the element as the container of a grid.\n   */\n  grid: function () {\n    return this.each(function () {\n      var $container = $(this),\n        settings = {};\n\n      if ($container.data('item-selector')) {\n        settings.itemSelector = $container.data('item-selector');\n      }\n      if ($container.data('cols')) {\n        settings.cols = parseInt($container.data('cols'));\n      }\n      if ($container.data('max-cols')) {\n        settings.maxCols = parseInt($container.data('max-cols'));\n      }\n      if ($container.data('min-col-width')) {\n        settings.minColWidth = parseInt($container.data('min-col-width'));\n      }\n      if ($container.data('mode')) {\n        settings.mode = $container.data('mode');\n      }\n      if ($container.data('fill-mode')) {\n        settings.fillMode = $container.data('fill-mode');\n      }\n      if ($container.data('col-class')) {\n        settings.colClass = $container.data('col-class');\n      }\n      if ($container.data('snap-to-grid')) {\n        settings.snapToGrid = !!$container.data('snap-to-grid');\n      }\n\n      new Craft.Grid(this, settings);\n    });\n  },\n\n  infoicon: function () {\n    return this.each(function () {\n      new Craft.InfoIcon(this);\n    });\n  },\n\n  /**\n   * Sets the element as a container for a checkbox select.\n   */\n  checkboxselect: function () {\n    return this.each(function () {\n      if (!$.data(this, 'checkboxSelect')) {\n        new Garnish.CheckboxSelect(this);\n      }\n    });\n  },\n\n  /**\n   * Sets the element as a field toggle trigger.\n   */\n  fieldtoggle: function () {\n    return this.each(function () {\n      if (!$.data(this, 'fieldtoggle')) {\n        new Craft.FieldToggle(this);\n      }\n    });\n  },\n\n  lightswitch: function (settings, settingName, settingValue) {\n    // param mapping\n    if (settings === 'settings') {\n      if (typeof settingName === 'string') {\n        settings = {};\n        settings[settingName] = settingValue;\n      } else {\n        settings = settingName;\n      }\n\n      return this.each(function () {\n        var obj = $.data(this, 'lightswitch');\n        if (obj) {\n          obj.setSettings(settings);\n        }\n      });\n    } else {\n      if (!$.isPlainObject(settings)) {\n        settings = {};\n      }\n\n      return this.each(function () {\n        var thisSettings = $.extend({}, settings);\n\n        if (Garnish.hasAttr(this, 'data-value')) {\n          thisSettings.value = $(this).attr('data-value');\n        }\n\n        if (Garnish.hasAttr(this, 'data-indeterminate-value')) {\n          thisSettings.indeterminateValue = $(this).attr(\n            'data-indeterminate-value'\n          );\n        }\n\n        if (!$.data(this, 'lightswitch')) {\n          new Craft.LightSwitch(this, thisSettings);\n        }\n      });\n    }\n  },\n\n  nicetext: function () {\n    return this.each(function () {\n      if (!$.data(this, 'nicetext')) {\n        new Garnish.NiceText(this);\n      }\n    });\n  },\n\n  formsubmit: function () {\n    // Secondary form submit buttons\n    return this.on('activate', function (ev) {\n      const $btn = $(ev.currentTarget);\n      const params = $btn.data('params') || {};\n      if ($btn.data('param')) {\n        params[$btn.data('param')] = $btn.data('value');\n      }\n\n      let $form;\n      let namespace = null;\n\n      if ($btn.attr('data-form') === 'false') {\n        $form = Craft.createForm()\n          .addClass('hidden')\n          .append(Craft.getCsrfInput())\n          .appendTo(Garnish.$bod);\n      } else {\n        let $anchor = $btn.closest('.menu--disclosure').length\n          ? $btn.closest('.menu--disclosure').data('trigger').$trigger\n          : $btn.data('menu')\n            ? $btn.data('menu').$anchor\n            : $btn;\n\n        let isFullPage = $anchor.parents('.slideout').length == 0;\n\n        if (isFullPage) {\n          $form = $anchor.attr('data-form')\n            ? $('#' + $anchor.attr('data-form'))\n            : $btn.attr('data-form')\n              ? $('#' + $btn.attr('data-form'))\n              : $anchor.closest('form');\n        } else {\n          $form = $anchor.closest('form');\n          namespace = $anchor.parents('.slideout').data('cpScreen').namespace;\n        }\n\n        if ($anchor.data('disclosureMenu')) {\n          $anchor.data('disclosureMenu').hide();\n        }\n      }\n\n      Craft.submitForm($form, {\n        confirm: $btn.data('confirm'),\n        action: $btn.data('action'),\n        redirect: $btn.data('redirect'),\n        requireElevatedSession: Garnish.hasAttr(\n          $btn,\n          'data-require-elevated-session'\n        ),\n        namespace: namespace,\n        params: params,\n        data: $.extend(\n          {\n            customTrigger: $btn,\n          },\n          $btn.data('event-data')\n        ),\n      });\n    });\n  },\n\n  menubtn: function () {\n    return this.each(function () {\n      var $btn = $(this);\n\n      if (!$btn.data('menubtn') && $btn.next().hasClass('menu')) {\n        var settings = {};\n\n        if ($btn.data('menu-anchor')) {\n          settings.menuAnchor = $btn.data('menu-anchor');\n        }\n\n        new Garnish.MenuBtn($btn, settings);\n      }\n    });\n  },\n\n  disclosureMenu: function (settings) {\n    return this.each(function () {\n      const $trigger = $(this);\n      // Only instantiate if it's not already a disclosure trigger, and it references a disclosure content\n      if (!$trigger.data('trigger') && $trigger.attr('aria-controls')) {\n        new Garnish.DisclosureMenu($trigger, settings);\n      }\n    });\n  },\n\n  datetime: function () {\n    return this.each(function () {\n      let $wrapper = $(this);\n      let $inputs = $wrapper.find('input:not([name$=\"[timezone]\"])');\n      let checkValue = () => {\n        let hasValue = false;\n        for (let i = 0; i < $inputs.length; i++) {\n          if ($inputs.eq(i).val() && !$inputs.eq(i).is(':disabled')) {\n            hasValue = true;\n            break;\n          }\n        }\n        if (hasValue) {\n          if (!$wrapper.children('.clear-btn').length) {\n            let $btn = $('<button/>', {\n              type: 'button',\n              class: 'clear-btn',\n              title: Craft.t('app', 'Clear'),\n              'aria-label': Craft.t('app', 'Clear'),\n            })\n              .appendTo($wrapper)\n              .on('click', () => {\n                for (let i = 0; i < $inputs.length; i++) {\n                  $inputs.eq(i).val('').trigger('input').trigger('change');\n                }\n                $btn.remove();\n                $inputs.first().filter('[type=\"text\"]').focus();\n              });\n          }\n        } else {\n          $wrapper.children('.clear-btn').remove();\n        }\n      };\n      $inputs.on('change', checkValue);\n      checkValue();\n    });\n  },\n\n  datetimeinput: function () {\n    return this.each(function () {\n      const $input = $(this);\n      const checkValue = () => {\n        if ($input.val() === '') {\n          $input.addClass('empty-value');\n        } else {\n          $input.removeClass('empty-value');\n        }\n      };\n      $input.on('input', checkValue);\n      checkValue();\n    });\n  },\n});\n\n// Override Garnish.NiceText.charsLeftHtml() to be more accessible\nGarnish.NiceText.charsLeftHtml = (charsLeft) => {\n  return Craft.t(\n    'app',\n    '<span class=\"visually-hidden\">Characters left:</span> {chars, number}',\n    {\n      chars: charsLeft,\n    }\n  );\n};\n\nGarnish.$doc.ready(function () {\n  Craft.initUiElements();\n});\n","/* [@simplewebauthn/browser@7.4.0] */\nfunction utf8StringToBuffer(value) {\n    return new TextEncoder().encode(value);\n}\n\nfunction bufferToBase64URLString(buffer) {\n    const bytes = new Uint8Array(buffer);\n    let str = '';\n    for (const charCode of bytes) {\n        str += String.fromCharCode(charCode);\n    }\n    const base64String = btoa(str);\n    return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n\nfunction base64URLStringToBuffer(base64URLString) {\n    const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n    const padLength = (4 - (base64.length % 4)) % 4;\n    const padded = base64.padEnd(base64.length + padLength, '=');\n    const binary = atob(padded);\n    const buffer = new ArrayBuffer(binary.length);\n    const bytes = new Uint8Array(buffer);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return buffer;\n}\n\nfunction browserSupportsWebAuthn() {\n    return (window?.PublicKeyCredential !== undefined && typeof window.PublicKeyCredential === 'function');\n}\n\nfunction toPublicKeyCredentialDescriptor(descriptor) {\n    const { id } = descriptor;\n    return {\n        ...descriptor,\n        id: base64URLStringToBuffer(id),\n        transports: descriptor.transports,\n    };\n}\n\nfunction isValidDomain(hostname) {\n    return (hostname === 'localhost' || /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n\nclass WebAuthnError extends Error {\n    code;\n    constructor({ message, code, cause, name, }) {\n        super(message, { cause });\n        this.name = name ?? cause.name;\n        this.code = code;\n    }\n}\n\nfunction identifyRegistrationError({ error, options, }) {\n    const { publicKey } = options;\n    if (!publicKey) {\n        throw Error('options was missing required publicKey property');\n    }\n    if (error.name === 'AbortError') {\n        if (options.signal instanceof AbortSignal) {\n            return new WebAuthnError({\n                message: 'Registration ceremony was sent an abort signal',\n                code: 'ERROR_CEREMONY_ABORTED',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'ConstraintError') {\n        if (publicKey.authenticatorSelection?.requireResidentKey === true) {\n            return new WebAuthnError({\n                message: 'Discoverable credentials were required but no available authenticator supported it',\n                code: 'ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT',\n                cause: error,\n            });\n        }\n        else if (publicKey.authenticatorSelection?.userVerification === 'required') {\n            return new WebAuthnError({\n                message: 'User verification was required but no available authenticator supported it',\n                code: 'ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'InvalidStateError') {\n        return new WebAuthnError({\n            message: 'The authenticator was previously registered',\n            code: 'ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED',\n            cause: error\n        });\n    }\n    else if (error.name === 'NotAllowedError') {\n        return new WebAuthnError({\n            message: error.message,\n            code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n            cause: error,\n        });\n    }\n    else if (error.name === 'NotSupportedError') {\n        const validPubKeyCredParams = publicKey.pubKeyCredParams.filter(param => param.type === 'public-key');\n        if (validPubKeyCredParams.length === 0) {\n            return new WebAuthnError({\n                message: 'No entry in pubKeyCredParams was of type \"public-key\"',\n                code: 'ERROR_MALFORMED_PUBKEYCREDPARAMS',\n                cause: error,\n            });\n        }\n        return new WebAuthnError({\n            message: 'No available authenticator supported any of the specified pubKeyCredParams algorithms',\n            code: 'ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG',\n            cause: error,\n        });\n    }\n    else if (error.name === 'SecurityError') {\n        const effectiveDomain = window.location.hostname;\n        if (!isValidDomain(effectiveDomain)) {\n            return new WebAuthnError({\n                message: `${window.location.hostname} is an invalid domain`,\n                code: 'ERROR_INVALID_DOMAIN',\n                cause: error\n            });\n        }\n        else if (publicKey.rp.id !== effectiveDomain) {\n            return new WebAuthnError({\n                message: `The RP ID \"${publicKey.rp.id}\" is invalid for this domain`,\n                code: 'ERROR_INVALID_RP_ID',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'TypeError') {\n        if (publicKey.user.id.byteLength < 1 || publicKey.user.id.byteLength > 64) {\n            return new WebAuthnError({\n                message: 'User ID was not between 1 and 64 characters',\n                code: 'ERROR_INVALID_USER_ID_LENGTH',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'UnknownError') {\n        return new WebAuthnError({\n            message: 'The authenticator was unable to process the specified options, or could not create a new credential',\n            code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n            cause: error,\n        });\n    }\n    return error;\n}\n\nclass WebAuthnAbortService {\n    controller;\n    createNewAbortSignal() {\n        if (this.controller) {\n            const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n            abortError.name = 'AbortError';\n            this.controller.abort(abortError);\n        }\n        const newController = new AbortController();\n        this.controller = newController;\n        return newController.signal;\n    }\n}\nconst webauthnAbortService = new WebAuthnAbortService();\n\nconst attachments = ['cross-platform', 'platform'];\nfunction toAuthenticatorAttachment(attachment) {\n    if (!attachment) {\n        return;\n    }\n    if (attachments.indexOf(attachment) < 0) {\n        return;\n    }\n    return attachment;\n}\n\nasync function startRegistration(creationOptionsJSON) {\n    if (!browserSupportsWebAuthn()) {\n        throw new Error('WebAuthn is not supported in this browser');\n    }\n    const publicKey = {\n        ...creationOptionsJSON,\n        challenge: base64URLStringToBuffer(creationOptionsJSON.challenge),\n        user: {\n            ...creationOptionsJSON.user,\n            id: utf8StringToBuffer(creationOptionsJSON.user.id),\n        },\n        excludeCredentials: creationOptionsJSON.excludeCredentials?.map(toPublicKeyCredentialDescriptor),\n    };\n    const options = { publicKey };\n    options.signal = webauthnAbortService.createNewAbortSignal();\n    let credential;\n    try {\n        credential = (await navigator.credentials.create(options));\n    }\n    catch (err) {\n        throw identifyRegistrationError({ error: err, options });\n    }\n    if (!credential) {\n        throw new Error('Registration was not completed');\n    }\n    const { id, rawId, response, type } = credential;\n    let transports = undefined;\n    if (typeof response.getTransports === 'function') {\n        transports = response.getTransports();\n    }\n    let responsePublicKeyAlgorithm = undefined;\n    if (typeof response.getPublicKeyAlgorithm === 'function') {\n        responsePublicKeyAlgorithm = response.getPublicKeyAlgorithm();\n    }\n    let responsePublicKey = undefined;\n    if (typeof response.getPublicKey === 'function') {\n        const _publicKey = response.getPublicKey();\n        if (_publicKey !== null) {\n            responsePublicKey = bufferToBase64URLString(_publicKey);\n        }\n    }\n    let responseAuthenticatorData;\n    if (typeof response.getAuthenticatorData === 'function') {\n        responseAuthenticatorData = bufferToBase64URLString(response.getAuthenticatorData());\n    }\n    return {\n        id,\n        rawId: bufferToBase64URLString(rawId),\n        response: {\n            attestationObject: bufferToBase64URLString(response.attestationObject),\n            clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n            transports,\n            publicKeyAlgorithm: responsePublicKeyAlgorithm,\n            publicKey: responsePublicKey,\n            authenticatorData: responseAuthenticatorData,\n        },\n        type,\n        clientExtensionResults: credential.getClientExtensionResults(),\n        authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n    };\n}\n\nfunction bufferToUTF8String(value) {\n    return new TextDecoder('utf-8').decode(value);\n}\n\nasync function browserSupportsWebAuthnAutofill() {\n    const globalPublicKeyCredential = window.PublicKeyCredential;\n    return (globalPublicKeyCredential.isConditionalMediationAvailable !== undefined &&\n        globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n\nfunction identifyAuthenticationError({ error, options, }) {\n    const { publicKey } = options;\n    if (!publicKey) {\n        throw Error('options was missing required publicKey property');\n    }\n    if (error.name === 'AbortError') {\n        if (options.signal instanceof AbortSignal) {\n            return new WebAuthnError({\n                message: 'Authentication ceremony was sent an abort signal',\n                code: 'ERROR_CEREMONY_ABORTED',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'NotAllowedError') {\n        return new WebAuthnError({\n            message: error.message,\n            code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n            cause: error,\n        });\n    }\n    else if (error.name === 'SecurityError') {\n        const effectiveDomain = window.location.hostname;\n        if (!isValidDomain(effectiveDomain)) {\n            return new WebAuthnError({\n                message: `${window.location.hostname} is an invalid domain`,\n                code: 'ERROR_INVALID_DOMAIN',\n                cause: error,\n            });\n        }\n        else if (publicKey.rpId !== effectiveDomain) {\n            return new WebAuthnError({\n                message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n                code: 'ERROR_INVALID_RP_ID',\n                cause: error,\n            });\n        }\n    }\n    else if (error.name === 'UnknownError') {\n        return new WebAuthnError({\n            message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n            code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n            cause: error,\n        });\n    }\n    return error;\n}\n\nasync function startAuthentication(requestOptionsJSON, useBrowserAutofill = false) {\n    if (!browserSupportsWebAuthn()) {\n        throw new Error('WebAuthn is not supported in this browser');\n    }\n    let allowCredentials;\n    if (requestOptionsJSON.allowCredentials?.length !== 0) {\n        allowCredentials = requestOptionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n    }\n    const publicKey = {\n        ...requestOptionsJSON,\n        challenge: base64URLStringToBuffer(requestOptionsJSON.challenge),\n        allowCredentials,\n    };\n    const options = {};\n    if (useBrowserAutofill) {\n        if (!(await browserSupportsWebAuthnAutofill())) {\n            throw Error('Browser does not support WebAuthn autofill');\n        }\n        const eligibleInputs = document.querySelectorAll(\"input[autocomplete*='webauthn']\");\n        if (eligibleInputs.length < 1) {\n            throw Error('No <input> with `\"webauthn\"` in its `autocomplete` attribute was detected');\n        }\n        options.mediation = 'conditional';\n        publicKey.allowCredentials = [];\n    }\n    options.publicKey = publicKey;\n    options.signal = webauthnAbortService.createNewAbortSignal();\n    let credential;\n    try {\n        credential = (await navigator.credentials.get(options));\n    }\n    catch (err) {\n        throw identifyAuthenticationError({ error: err, options });\n    }\n    if (!credential) {\n        throw new Error('Authentication was not completed');\n    }\n    const { id, rawId, response, type } = credential;\n    let userHandle = undefined;\n    if (response.userHandle) {\n        userHandle = bufferToUTF8String(response.userHandle);\n    }\n    return {\n        id,\n        rawId: bufferToBase64URLString(rawId),\n        response: {\n            authenticatorData: bufferToBase64URLString(response.authenticatorData),\n            clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n            signature: bufferToBase64URLString(response.signature),\n            userHandle,\n        },\n        type,\n        clientExtensionResults: credential.getClientExtensionResults(),\n        authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n    };\n}\n\nasync function platformAuthenticatorIsAvailable() {\n    if (!browserSupportsWebAuthn()) {\n        return false;\n    }\n    return PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n}\n\nexport { browserSupportsWebAuthn, browserSupportsWebAuthnAutofill, platformAuthenticatorIsAvailable, startAuthentication, startRegistration };\n","/** global: Craft */\n/** global: Garnish */\nimport * as d3 from 'd3';\n\n/**\n * Craft Charts\n */\nCraft.charts = {};\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.DataTable\n */\nCraft.charts.DataTable = Garnish.Base.extend({\n  columns: null,\n  rows: null,\n\n  init: function (data) {\n    let columns = data.columns;\n    let rows = data.rows;\n\n    rows.forEach((d) => {\n      $.each(d, function (cellIndex) {\n        var column = columns[cellIndex];\n\n        var parseTime;\n\n        switch (column.type) {\n          case 'date':\n            parseTime = d3.timeParse('%Y-%m-%d');\n            d[cellIndex] = parseTime(d[cellIndex]);\n            break;\n\n          case 'datetime':\n            parseTime = d3.timeParse('%Y-%m-%d %H:00:00');\n            d[cellIndex] = parseTime(d[cellIndex]);\n            break;\n\n          case 'percent':\n            d[cellIndex] = d[cellIndex] / 100;\n            break;\n\n          case 'number':\n            d[cellIndex] = +d[cellIndex];\n            break;\n\n          default:\n          // do nothing\n        }\n      });\n    });\n\n    this.columns = columns;\n    this.rows = rows;\n  },\n});\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Tip\n */\n\nCraft.charts.Tip = Garnish.Base.extend({\n  $container: null,\n  $tip: null,\n\n  init: function ($container) {\n    this.$container = $container;\n\n    this.$tip = $('<div class=\"tooltip\"></div>').appendTo(this.$container);\n\n    this.hide();\n  },\n\n  setContent: function (html) {\n    this.$tip.html(html);\n  },\n\n  setPosition: function (position) {\n    this.$tip.css('left', `${position.left}px`);\n    this.$tip.css('top', `${position.top}px`);\n  },\n\n  show: function () {\n    this.$tip.css('display', 'block');\n  },\n\n  hide: function () {\n    this.$tip.css('display', 'none');\n  },\n});\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.BaseChart\n */\nCraft.charts.BaseChart = Garnish.Base.extend(\n  {\n    $container: null,\n    $chart: null,\n\n    chartBaseClass: 'cp-chart',\n    dataTable: null,\n\n    formatLocale: null,\n    timeFormatLocale: null,\n    orientation: null,\n\n    svg: null,\n    width: null,\n    height: null,\n\n    init: function (container, settings) {\n      this.$container = container;\n\n      this.setSettings(Craft.charts.BaseChart.defaults);\n      this.setSettings(settings);\n\n      var globalSettings = {\n        formats: window.d3Formats,\n        formatLocaleDefinition: window.d3FormatLocaleDefinition,\n        timeFormatLocaleDefinition: window.d3TimeFormatLocaleDefinition,\n      };\n\n      this.setSettings(globalSettings);\n\n      d3.select(window).on('resize', () => {\n        this.resize();\n      });\n    },\n\n    setSettings: function (settings, defaults) {\n      var baseSettings =\n        typeof this.settings === 'undefined' ? {} : this.settings;\n      this.settings = $.extend(true, {}, baseSettings, defaults, settings);\n    },\n\n    draw: function (dataTable, settings) {\n      // Settings and chart attributes\n\n      this.setSettings(settings);\n\n      this.dataTable = dataTable;\n      this.formatLocale = d3.formatLocale(this.settings.formatLocaleDefinition);\n      this.timeFormatLocale = d3.timeFormatLocale(\n        this.settings.timeFormatLocaleDefinition\n      );\n      this.orientation = this.settings.orientation;\n\n      // Set (or reset) the chart element\n\n      if (this.$chart) {\n        this.$chart.remove();\n      }\n\n      var className = this.chartBaseClass;\n\n      if (this.settings.chartClass) {\n        className += ' ' + this.settings.chartClass;\n      }\n\n      this.$chart = $(`<div class=\"${className}\" />`).appendTo(this.$container);\n    },\n\n    resize: function () {\n      this.draw(this.dataTable, this.settings);\n    },\n\n    onAfterDrawTicks: function () {\n      // White border for ticks' text\n      $('.tick', this.$chart).each(function (tickKey, tick) {\n        var $tickText = $('text', tick);\n\n        var $clone = $tickText.clone();\n        $clone.appendTo(tick);\n\n        $tickText.attr('stroke', '#ffffff');\n        $tickText.attr('stroke-width', 3);\n      });\n    },\n  },\n  {\n    defaults: {\n      formatLocaleDefinition: null,\n      timeFormatLocaleDefinition: null,\n      formats: {\n        numberFormat: ',.2f',\n        percentFormat: ',.2%',\n        currencyFormat: '$,.2f',\n        shortDateFormats: {\n          day: '%-m/%-d',\n          month: '%-m/%y',\n          year: '%Y',\n        },\n      },\n      margin: {top: 0, right: 0, bottom: 0, left: 0},\n      chartClass: null,\n      colors: ['#0594D1', '#DE3800', '#FF9A00', '#009802', '#9B009B'],\n    },\n  }\n);\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Area\n */\nCraft.charts.Area = Craft.charts.BaseChart.extend(\n  {\n    tip: null,\n    drawingArea: null,\n\n    init: function (container, settings) {\n      this.base(container, Craft.charts.Area.defaults);\n\n      this.setSettings(settings);\n    },\n\n    draw: function (dataTable, settings) {\n      this.base(dataTable, settings);\n\n      if (this.tip) {\n        this.tip = null;\n      }\n\n      var margin = this.getChartMargin();\n\n      this.width = this.$chart.width() - margin.left - margin.right;\n      this.height = this.$chart.height() - margin.top - margin.bottom;\n\n      // Append SVG to chart element\n\n      var svg = {\n        width: this.width + (margin.left + margin.right),\n        height: this.height + (margin.top + margin.bottom),\n        translateX: this.orientation !== 'rtl' ? margin.left : margin.right,\n        translateY: margin.top,\n      };\n\n      this.svg = d3\n        .select(this.$chart.get(0))\n        .append('svg')\n        .attr('width', svg.width)\n        .attr('height', svg.height);\n\n      this.drawingArea = this.svg\n        .append('g')\n        .attr('transform', `translate(${svg.translateX},${svg.translateY})`);\n\n      // Draw elements\n\n      this.drawTicks();\n      this.drawAxes();\n      this.drawChart();\n      this.drawTipTriggers();\n    },\n\n    drawTicks: function () {\n      // Draw X ticks\n\n      var x = this.getX(true);\n      var xTicks = 3;\n      var xAxis = d3\n        .axisBottom(x)\n        .tickFormat(this.getXFormatter())\n        .ticks(xTicks);\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'x ticks-axis')\n        .attr('transform', `translate(0, ${this.height})`)\n        .call(xAxis);\n\n      // Draw Y ticks\n\n      var y = this.getY();\n      var yTicks = 2;\n      var yAxis;\n\n      if (this.orientation !== 'rtl') {\n        yAxis = d3\n          .axisLeft(y)\n          .tickFormat(this.getYFormatter())\n          .tickValues(this.getYTickValues())\n          .ticks(yTicks);\n\n        this.drawingArea.append('g').attr('class', 'y ticks-axis').call(yAxis);\n      } else {\n        yAxis = d3\n          .axisRight(y)\n          .tickFormat(this.getYFormatter())\n          .tickValues(this.getYTickValues())\n          .ticks(yTicks);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'y ticks-axis')\n          .attr('transform', `translate(${this.width},0)`)\n          .call(yAxis);\n      }\n\n      // On after draw ticks\n\n      this.onAfterDrawTicks();\n    },\n\n    drawAxes: function () {\n      if (this.settings.xAxis.showAxis) {\n        var x = this.getX();\n        var xAxis = d3.axisBottom(x).ticks(0).tickSizeOuter(0);\n        this.drawingArea\n          .append('g')\n          .attr('class', 'x axis')\n          .attr('transform', `translate(0, ${this.height})`)\n          .call(xAxis);\n      }\n\n      if (this.settings.yAxis.showAxis) {\n        var y = this.getY();\n        var chartPadding = 0;\n        var yAxis;\n\n        if (this.orientation === 'rtl') {\n          yAxis = d3.axisLeft(y).ticks(0);\n          this.drawingArea\n            .append('g')\n            .attr('class', 'y axis')\n            .attr('transform', `translate(${this.width - chartPadding}, 0)`)\n            .call(yAxis);\n        } else {\n          yAxis = d3.axisRight(y).ticks(0);\n          this.drawingArea\n            .append('g')\n            .attr('class', 'y axis')\n            .attr('transform', `translate(${chartPadding}, 0)`)\n            .call(yAxis);\n        }\n      }\n    },\n\n    drawChart: function () {\n      var x = this.getX(true);\n      var y = this.getY();\n\n      // X & Y grid lines\n\n      if (this.settings.xAxis.gridlines) {\n        var xLineAxis = d3.axisBottom(x);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'x grid-line')\n          .attr('transform', `translate(0,${this.height})`)\n          .call(xLineAxis.tickSize(-this.height, 0, 0).tickFormat(''));\n      }\n\n      var yTicks = 2;\n\n      if (this.settings.yAxis.gridlines) {\n        var yLineAxis = d3.axisLeft(y);\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'y grid-line')\n          .attr('transform', 'translate(0 , 0)')\n          .call(\n            yLineAxis\n              .tickSize(-this.width, 0)\n              .tickFormat('')\n              .tickValues(this.getYTickValues())\n              .ticks(yTicks)\n          );\n      }\n\n      // Line\n\n      var line = d3\n        .line()\n        .x(function (d) {\n          return x(d[0]);\n        })\n        .y(function (d) {\n          return y(d[1]);\n        });\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'chart-line')\n        .append('path')\n        .datum(this.dataTable.rows)\n        .style('fill', 'none')\n        .style('stroke', this.settings.colors[0])\n        .style('stroke-width', '3px')\n        .attr('d', line);\n\n      // Area\n\n      var area = d3\n        .area()\n        .x(function (d) {\n          return x(d[0]);\n        })\n        .y0(this.height)\n        .y1(function (d) {\n          return y(d[1]);\n        });\n\n      this.drawingArea\n        .append('g')\n        .attr('class', 'chart-area')\n        .append('path')\n        .datum(this.dataTable.rows)\n        .style('fill', this.settings.colors[0])\n        .style('fill-opacity', '0.3')\n        .attr('d', area);\n\n      // Plots\n\n      if (this.settings.plots) {\n        this.drawingArea\n          .append('g')\n          .attr('class', 'plots')\n          .selectAll('circle')\n          .data(this.dataTable.rows)\n          .enter()\n          .append('circle')\n          .style('fill', this.settings.colors[0])\n          .attr('class', (d, index) => `plot plot-${index}`)\n          .attr('r', 4)\n          .attr('cx', (d) => x(d[0]))\n          .attr('cy', (d) => y(d[1]));\n      }\n    },\n\n    drawTipTriggers: function () {\n      if (this.settings.tips) {\n        if (!this.tip) {\n          this.tip = new Craft.charts.Tip(this.$chart);\n        }\n\n        // Define xAxisTickInterval\n\n        var chartMargin = this.getChartMargin();\n        var tickSizeOuter = 6;\n        var length =\n          this.drawingArea.select('.x path.domain').node().getTotalLength() -\n          chartMargin.left -\n          chartMargin.right -\n          tickSizeOuter * 2;\n        var xAxisTickInterval = length / (this.dataTable.rows.length - 1);\n\n        // Tip trigger width\n\n        var tipTriggerWidth = Math.max(0, xAxisTickInterval);\n\n        // Draw triggers\n\n        var x = this.getX(true);\n        var y = this.getY();\n\n        this.drawingArea\n          .append('g')\n          .attr('class', 'tip-triggers')\n          .selectAll('rect')\n          .data(this.dataTable.rows)\n          .enter()\n          .append('rect')\n          .attr('class', (d, index) => `tip-trigger tip-trigger-${index}`)\n          .attr('data-index', (d, index) => index)\n          .style('fill', 'transparent')\n          .style('fill-opacity', '1')\n          .attr('width', tipTriggerWidth)\n          .attr('height', this.height)\n          .attr('x', (d) => x(d[0]) - tipTriggerWidth / 2)\n          .on('mouseover', (event, dataValue) => {\n            const index = d3.select(event.target).attr('data-index');\n\n            // Expand plot\n            this.drawingArea.select('.plot-' + index).attr('r', 5);\n\n            // Set tip content\n\n            var $content = $('<div />');\n            var $xValue = $('<div class=\"x-value\" />').appendTo($content);\n            var $yValue = $('<div class=\"y-value\" />').appendTo($content);\n\n            $xValue.html(this.getXFormatter()(dataValue[0]));\n            $yValue.html(this.getYFormatter()(dataValue[1]));\n\n            var content = $content.get(0);\n\n            this.tip.setContent(content);\n\n            // Set tip position\n\n            var margin = this.getChartMargin();\n\n            var offset = 24;\n            var top = y(dataValue[1]) + offset;\n            var left;\n\n            if (this.orientation !== 'rtl') {\n              left = x(dataValue[0]) + margin.left + offset;\n\n              var calcLeft =\n                this.$chart.offset().left + left + this.tip.$tip.width();\n              var maxLeft =\n                this.$chart.offset().left + this.$chart.width() - offset;\n\n              if (calcLeft > maxLeft) {\n                left = x(dataValue[0]) - (this.tip.$tip.width() + offset);\n              }\n            } else {\n              left =\n                x(dataValue[0]) -\n                (this.tip.$tip.width() + margin.left + offset);\n            }\n\n            if (left < 0) {\n              left = x(dataValue[0]) + margin.left + offset;\n            }\n\n            var position = {\n              top: top,\n              left: left,\n            };\n\n            this.tip.setPosition(position);\n\n            // Show tip\n\n            this.tip.show();\n          })\n          .on('mouseout', (event, dataValue) => {\n            const index = d3.select(event.target).attr('data-index');\n\n            // Unexpand Plot\n            this.drawingArea.select('.plot-' + index).attr('r', 4);\n\n            // Hide tip\n            this.tip.hide();\n          });\n      }\n    },\n\n    getChartMargin: function () {\n      var margin = this.settings.margin;\n\n      // Estimate the max width of y ticks and set it as the left margin\n\n      var values = this.getYTickValues();\n      var yTicksMaxWidth = 0;\n\n      $.each(values, (key, value) => {\n        var characterWidth = 8;\n\n        var formatter = this.getYFormatter();\n\n        var formattedValue = formatter(value);\n        var computedTickWidth = formattedValue.length * characterWidth;\n\n        if (computedTickWidth > yTicksMaxWidth) {\n          yTicksMaxWidth = computedTickWidth;\n        }\n      });\n\n      yTicksMaxWidth += 10;\n\n      margin.left = yTicksMaxWidth;\n\n      return margin;\n    },\n\n    getX: function (padded) {\n      var xDomainMin = d3.min(this.dataTable.rows, function (d) {\n        return d[0];\n      });\n\n      var xDomainMax = d3.max(this.dataTable.rows, function (d) {\n        return d[0];\n      });\n\n      var xDomain = [xDomainMin, xDomainMax];\n\n      if (this.orientation === 'rtl') {\n        xDomain = [xDomainMax, xDomainMin];\n      }\n\n      var left = 0;\n      var right = 0;\n\n      if (padded) {\n        left = 0;\n        right = 0;\n      }\n\n      var x = d3.scaleTime().range([left, this.width - right]);\n\n      x.domain(xDomain);\n\n      return x;\n    },\n\n    getY: function () {\n      var yDomain = [0, this.getYMaxValue()];\n\n      var y = d3.scaleLinear().range([this.height, 0]);\n\n      y.domain(yDomain);\n\n      return y;\n    },\n\n    getXFormatter: function () {\n      var formatter;\n\n      if (this.settings.xAxis.formatter !== $.noop) {\n        formatter = this.settings.xAxis.formatter(this);\n      } else {\n        formatter = Craft.charts.utils.getTimeFormatter(\n          this.timeFormatLocale,\n          this.settings\n        );\n      }\n\n      return formatter;\n    },\n\n    getYFormatter: function () {\n      var formatter;\n\n      if (this.settings.yAxis.formatter !== $.noop) {\n        formatter = this.settings.yAxis.formatter(this);\n      } else {\n        formatter = Craft.charts.utils.getNumberFormatter(\n          this.formatLocale,\n          this.dataTable.columns[1].type,\n          this.settings\n        );\n      }\n\n      return formatter;\n    },\n\n    getYMaxValue: function () {\n      let max = d3.max(this.dataTable.rows, (d) => d[1]);\n\n      if (max === 0) {\n        max = 1;\n      }\n\n      return max;\n    },\n\n    getYTickValues: function () {\n      var maxValue = this.getYMaxValue();\n\n      if (maxValue > 1) {\n        return [maxValue / 2, maxValue];\n      } else {\n        return [0, maxValue];\n      }\n    },\n  },\n  {\n    defaults: {\n      chartClass: 'area',\n      margin: {top: 25, right: 5, bottom: 25, left: 0},\n      plots: true,\n      tips: true,\n      xAxis: {\n        gridlines: false,\n        showAxis: true,\n        formatter: $.noop,\n      },\n      yAxis: {\n        gridlines: true,\n        showAxis: false,\n        formatter: $.noop,\n      },\n    },\n  }\n);\n\n// ---------------------------------------------------------------------\n\n/**\n * Class Craft.charts.Utils\n */\nCraft.charts.utils = {\n  getDuration: function (seconds) {\n    var secondsNum = parseInt(seconds, 10);\n\n    var duration = {\n      hours: Math.floor(secondsNum / 3600),\n      minutes: Math.floor((secondsNum - duration.hours * 3600) / 60),\n      seconds: secondsNum - duration.hours * 3600 - duration.minutes * 60,\n    };\n\n    if (duration.hours < 10) {\n      duration.hours = `0${duration.hours}`;\n    }\n\n    if (duration.minutes < 10) {\n      duration.minutes = `0${duration.minutes}`;\n    }\n\n    if (duration.seconds < 10) {\n      duration.seconds = `0${duration.seconds}`;\n    }\n\n    return `${duration.hours}:${duration.minutes}:${duration.seconds}`;\n  },\n\n  getTimeFormatter: function (timeFormatLocale, chartSettings) {\n    switch (chartSettings.dataScale) {\n      case 'year':\n        return timeFormatLocale.format('%Y');\n\n      case 'month':\n        return timeFormatLocale.format(\n          chartSettings.formats.shortDateFormats.month\n        );\n\n      case 'hour':\n        return timeFormatLocale.format(\n          `${chartSettings.formats.shortDateFormats.day} %H:00:00`\n        );\n\n      default:\n        return timeFormatLocale.format(\n          chartSettings.formats.shortDateFormats.day\n        );\n    }\n  },\n\n  getNumberFormatter: function (formatLocale, type, chartSettings) {\n    switch (type) {\n      case 'currency':\n        return formatLocale.format(chartSettings.formats.currencyFormat);\n\n      case 'percent':\n        return formatLocale.format(chartSettings.formats.percentFormat);\n\n      case 'time':\n        return Craft.charts.utils.getDuration;\n\n      case 'number':\n        return formatLocale.format(chartSettings.formats.numberFormat);\n    }\n  },\n};\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          && (min > value || (min === undefined && value >= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","/** global: Craft */\n/** global: Garnish */\nimport {\n  browserSupportsWebAuthn,\n  platformAuthenticatorIsAvailable,\n} from '@simplewebauthn/browser';\n\n/**\n * Elevated Session Manager\n */\nCraft.ElevatedSessionManager = Garnish.Base.extend(\n  {\n    fetchingTimeout: false,\n\n    loginModal: null,\n    showingLoginModal: false,\n\n    onSuccess: null,\n    onCancel: null,\n    success: false,\n\n    /**\n     * @callback requireElevatedSessionCallback\n     */\n    /**\n     * Requires that the user has an elevated session.\n     *\n     * @param {requireElevatedSessionCallback} onSuccess The callback function that should be called once the user has an elevated session\n     * @param {requireElevatedSessionCallback} [onCancel] The callback function that should be called if establishing an elevated session is cancelled\n     * @param {number} [minSafeElevatedSessionTimeout] The minimum amount of time that must be remaining on an existing elevated session\n     * (in seconds), for it to be considered safe. (Defaults to 5.)\n     */\n    async requireElevatedSession(\n      onSuccess,\n      onCancel,\n      minSafeElevatedSessionTimeout\n    ) {\n      this.onSuccess = onSuccess;\n      this.onCancel = onCancel;\n\n      // Check the time remaining on the user’s elevated session (if any)\n      this.fetchingTimeout = true;\n\n      let data;\n\n      try {\n        const response = await Craft.sendActionRequest(\n          'POST',\n          'users/get-elevated-session-timeout'\n        );\n        data = response.data;\n      } finally {\n        this.fetchingTimeout = false;\n      }\n\n      if (\n        data.timeout === false ||\n        data.timeout >=\n          (minSafeElevatedSessionTimeout ||\n            Craft.ElevatedSessionManager.minSafeElevatedSessionTimeout)\n      ) {\n        this.onSuccess();\n      } else {\n        // Show the login modal\n        this.showLoginModal();\n      }\n    },\n\n    /**\n     * Shows the login modal.\n     */\n    async showLoginModal() {\n      if (this.showingLoginModal) {\n        return;\n      }\n\n      this.showingLoginModal = true;\n\n      if (this.loginModal) {\n        this.loginModal.destroy();\n      }\n\n      const {data} = await Craft.sendActionRequest(\n        'POST',\n        'users/login-modal',\n        {\n          data: {\n            email: Craft.userEmail,\n            forElevatedSession: true,\n          },\n        }\n      );\n      const $container = $(data.html);\n\n      this.loginModal = new Garnish.Modal($container, {\n        closeOtherModals: false,\n        hideOnEsc: false,\n        hideOnShadeClick: false,\n        shadeClass: 'modal-shade dark login-modal-shade',\n        onFadeIn: async () => {\n          Craft.initUiElements($container);\n          new Craft.LoginForm($container.find('.login-container'), {\n            showPasskeyBtn: Craft.userHasPasskeys,\n            onLogin: () => {\n              this.success = true;\n              this.loginModal.hide();\n            },\n          });\n          await Craft.appendHeadHtml(data.headHtml);\n          await Craft.appendBodyHtml(data.bodyHtml);\n        },\n        onFadeOut: () => {\n          this.loginModal.destroy();\n          this.loginModal = null;\n        },\n        onHide: () => {\n          this.showingLoginModal = false;\n          if (this.success) {\n            this.onSuccess();\n          } else if (this.onCancel) {\n            this.onCancel();\n          }\n        },\n      });\n    },\n  },\n  {\n    minSafeElevatedSessionTimeout: 5,\n  }\n);\n\n// Instantiate it\nCraft.elevatedSessionManager = new Craft.ElevatedSessionManager();\n","/** global: Craft */\nimport {\n  browserSupportsWebAuthn,\n  platformAuthenticatorIsAvailable,\n  startAuthentication,\n} from '@simplewebauthn/browser';\n\n/** global: Garnish */\nCraft.LoginForm = Garnish.Base.extend(\n  {\n    $container: null,\n    $form: null,\n    $usernameInput: null,\n    $passwordInput: null,\n    $rememberMeCheckbox: null,\n    $forgotPasswordLink: null,\n    $submitBtn: null,\n    submitBtn: null,\n    $errors: null,\n    $altMethodContainer: null,\n    $passkeyBtn: null,\n\n    modal: null,\n    resetPasswordForm: null,\n    validateOnInput: false,\n\n    async init(container, settings) {\n      this.$container = $(container);\n      this.$form = this.$container.find('.login-form');\n      this.$usernameInput = this.$form.find('.login-username');\n      this.$passwordInput = this.$form.find('.login-password');\n      this.$rememberMeCheckbox = this.$form.find('.login-remember-me');\n      this.$forgotPasswordLink = this.$form.find('.login-forgot-password');\n      this.$submitBtn = this.$form.find('button.submit');\n      this.$errors = this.$container.find('.login-errors');\n      this.$altMethodContainer = this.$container.find(\n        '.alternative-login-methods'\n      );\n      this.$passkeyBtn = this.$altMethodContainer.find('.login-passkey-btn');\n\n      this.setSettings(settings, Craft.LoginForm.defaults);\n\n      this.modal = this.$container.closest('.modal').data('modal');\n\n      this.submitBtn = new Garnish.MultiFunctionBtn(this.$submitBtn, {\n        changeButtonText: true,\n      });\n\n      new Craft.PasswordInput(this.$passwordInput, {\n        onToggleInput: ($newPasswordInput) => {\n          this.removeListener(this.$passwordInput, 'input');\n          this.$passwordInput = $newPasswordInput;\n          this.addListener(this.$passwordInput, 'input', 'onInput');\n        },\n      });\n\n      this.addListener(this.$usernameInput, 'input', 'onInput');\n      this.addListener(this.$passwordInput, 'input', 'onInput');\n      this.addListener(\n        this.$forgotPasswordLink,\n        'activate',\n        'showResetPasswordForm'\n      );\n      this.addListener(this.$form, 'submit', 'onSubmit');\n\n      // Focus first empty field in form\n      if (!Garnish.isMobileBrowser()) {\n        if (this.$usernameInput.val()) {\n          this.$passwordInput.trigger('focus');\n        } else {\n          this.$usernameInput.trigger('focus');\n        }\n      }\n\n      if (\n        this.settings.showPasskeyBtn &&\n        browserSupportsWebAuthn() &&\n        (await platformAuthenticatorIsAvailable())\n      ) {\n        this.$passkeyBtn.removeClass('hidden');\n        this.onResize();\n        this.addListener(this.$passkeyBtn, 'activate', () => {\n          this.loginWithPasskey();\n        });\n      }\n\n      if (\n        this.$altMethodContainer.children().filter('.btn:not(.hidden)').length\n      ) {\n        this.$altMethodContainer.removeClass('hidden');\n      }\n    },\n\n    validate() {\n      const usernameValidates = Craft.LoginForm.validateUsernameOrEmail(\n        this.$usernameInput.val()\n      );\n      if (usernameValidates !== true) {\n        return usernameValidates;\n      }\n\n      const passwordLength = this.$passwordInput.val().length;\n      if (passwordLength < Craft.minPasswordLength) {\n        return Craft.t(\n          'yii',\n          '{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.',\n          {\n            attribute: Craft.t('app', 'Password'),\n            min: Craft.minPasswordLength,\n          }\n        );\n      }\n      if (passwordLength > Craft.maxPasswordLength) {\n        return Craft.t(\n          'yii',\n          '{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.',\n          {\n            attribute: Craft.t('app', 'Password'),\n            max: Craft.maxPasswordLength,\n          }\n        );\n      }\n\n      return true;\n    },\n\n    onInput() {\n      if (this.validateOnInput && this.validate() === true) {\n        this.clearErrors();\n      }\n    },\n\n    onSubmit(event) {\n      // Prevent full HTTP submits\n      event.preventDefault();\n\n      const error = this.validate();\n      if (error !== true) {\n        this.showError(error);\n        this.validateOnInput = true;\n        return;\n      }\n\n      this.clearErrors();\n      this.submitBtn.busyEvent();\n\n      const data = {\n        loginName: this.$usernameInput.val(),\n        password: this.$passwordInput.val(),\n        rememberMe: this.$rememberMeCheckbox.prop('checked') ? 'y' : '',\n      };\n\n      Craft.sendActionRequest('POST', 'users/login', {data})\n        .then(({data}) => {\n          if (data.authMethod) {\n            this.show2faForm(data);\n          } else {\n            this.submitBtn.successEvent();\n            this.settings.onLogin(data.returnUrl);\n          }\n        })\n        .catch((e) => {\n          this.submitBtn.failureEvent();\n\n          Garnish.shake(this.$form, 'left');\n\n          // Add the error message\n          this.showError(\n            e?.response?.data?.message ||\n              Craft.t('app', 'A server error occurred.')\n          );\n\n          this.submitBtn.failureEvent();\n        });\n    },\n\n    showResetPasswordForm() {\n      this.clearErrors();\n      this.$form.addClass('hidden');\n\n      if (!this.resetPasswordForm) {\n        this.resetPasswordForm = new Craft.LoginForm.ResetPasswordForm(\n          this,\n          this.$container\n        );\n      }\n\n      this.resetPasswordForm.$form.removeClass('hidden');\n      this.resetPasswordForm.$usernameInput.val(this.$usernameInput.val());\n\n      if (!Garnish.isMobileBrowser()) {\n        this.resetPasswordForm.$usernameInput.trigger('focus');\n      }\n\n      this.onResize();\n    },\n\n    async show2faForm(data) {\n      this.clearErrors();\n      this.$form.addClass('hidden');\n\n      const $authForm = $(data.authForm).insertAfter(this.$form);\n      await Craft.appendHeadHtml(data.headHtml);\n      await Craft.appendBodyHtml(data.bodyHtml);\n      Craft.initUiElements($authForm);\n\n      Craft.createAuthFormHandler(\n        data.authMethod,\n        $authForm,\n        () => {\n          this.settings.onLogin(data.returnUrl);\n        },\n        (error) => {\n          this.showError(error);\n        }\n      );\n\n      if (!Garnish.isMobileBrowser()) {\n        setTimeout(() => {\n          $authForm.find(':focusable:first').trigger('focus');\n        }, 100);\n      }\n\n      if (data.otherMethods.length) {\n        const $hr = $('<hr/>').insertAfter($authForm);\n        const $altContainer = $(\n          '<div class=\"login-alt-container\"/>'\n        ).insertAfter($hr);\n        const $button = Craft.ui\n          .createButton({\n            label: Craft.t('app', 'Try another way'),\n            spinner: true,\n          })\n          .addClass('menubtn')\n          .appendTo($altContainer);\n        const $menu = $('<div class=\"menu login-alt-menu\"/>').appendTo(\n          $altContainer\n        );\n        const $ul = $('<ul/>').appendTo($menu);\n        for (let method of data.otherMethods) {\n          $('<li/>')\n            .append(\n              $('<a/>', {\n                text: method.name,\n                'data-method': method.class,\n              })\n            )\n            .appendTo($ul);\n        }\n        new Garnish.MenuBtn($button, {\n          onOptionSelect: (option) => {\n            $button.addClass('loading');\n\n            Craft.sendActionRequest('post', 'users/auth-form', {\n              data: {\n                method: $(option).data('method'),\n              },\n            })\n              .then(({data}) => {\n                $authForm.remove();\n                $hr.remove();\n                $altContainer.remove();\n                console.log(data);\n                this.show2faForm(data);\n              })\n              .finally(() => {\n                $button.removeClass('loading');\n              });\n          },\n        });\n      }\n\n      this.onResize();\n    },\n\n    showError(error) {\n      this.clearErrors();\n\n      $('<p style=\"display: none;\">' + error + '</p>')\n        .appendTo(this.$errors)\n        .velocity('fadeIn');\n\n      this.$errors.removeClass('hidden');\n      this.onResize();\n    },\n\n    clearErrors() {\n      this.$errors.empty().addClass('hidden');\n      this.onResize();\n    },\n\n    onResize() {\n      if (this.modal) {\n        Garnish.requestAnimationFrame(() => {\n          this.modal.updateSizeAndPosition();\n        });\n      }\n    },\n\n    async loginWithPasskey() {\n      if (this.$passkeyBtn.hasClass('loading')) {\n        return;\n      }\n\n      this.$passkeyBtn.addClass('loading');\n\n      try {\n        const optionsResponse = await Craft.sendActionRequest(\n          'POST',\n          'auth/passkey-request-options'\n        );\n        const authResponse = await startAuthentication(\n          optionsResponse.data.options\n        );\n        const loginResponse = await Craft.sendActionRequest(\n          'POST',\n          'users/login-with-passkey',\n          {\n            data: {\n              requestOptions: JSON.stringify(optionsResponse.data.options),\n              response: JSON.stringify(authResponse),\n            },\n          }\n        );\n\n        this.settings.onLogin(loginResponse.data.returnUrl);\n      } catch (e) {\n        const message = e?.response?.data?.message;\n        if (message) {\n          this.showError(message);\n        }\n      } finally {\n        this.$passkeyBtn.removeClass('loading');\n      }\n    },\n  },\n  {\n    validateUsernameOrEmail(val) {\n      if (val.length === 0) {\n        if (Craft.useEmailAsUsername) {\n          return Craft.t('app', 'Invalid email.');\n        }\n        return Craft.t('app', 'Invalid username or email.');\n      }\n\n      if (Craft.useEmailAsUsername && !val.match('.+@.+..+')) {\n        return Craft.t('app', 'Invalid email.');\n      }\n\n      return true;\n    },\n\n    defaults: {\n      showPasskeyBtn: true,\n      onLogin: (returnUrl) => {\n        window.location.href = returnUrl;\n      },\n    },\n  }\n);\n\nCraft.LoginForm.ResetPasswordForm = Garnish.Base.extend({\n  loginForm: null,\n  $container: null,\n  $form: null,\n  $usernameInput: null,\n  $submitBtn: null,\n  $backBtn: null,\n  validateOnInput: false,\n\n  init(loginForm, container) {\n    this.loginForm = loginForm;\n    this.$container = $(container);\n    this.$form = this.$container\n      .find('.login-reset-password')\n      .removeClass('hidden');\n    this.$usernameInput = this.$form.find('.login-username');\n    this.$submitBtn = this.$form.find('button.submit');\n    this.$backBtn = this.$form.find('.login-reset-back-btn');\n\n    this.addListener(this.$usernameInput, 'input', 'onInput');\n    this.addListener(this.$form, 'submit', 'onSubmit');\n    this.addListener(this.$backBtn, 'activate', 'showLoginForm');\n  },\n\n  validate() {\n    return Craft.LoginForm.validateUsernameOrEmail(this.$usernameInput.val());\n  },\n\n  onInput() {\n    if (this.validateOnInput && this.validate() === true) {\n      this.loginForm.clearErrors();\n    }\n  },\n\n  onSubmit(event) {\n    // Prevent full HTTP submits\n    event.preventDefault();\n\n    const error = this.validate();\n    if (error !== true) {\n      this.loginForm.showError(error);\n      this.validateOnInput = true;\n      return;\n    }\n\n    this.loginForm.clearErrors();\n    this.$submitBtn.addClass('loading');\n\n    const data = {\n      loginName: this.$usernameInput.val(),\n    };\n\n    Craft.sendActionRequest('POST', 'users/send-password-reset-email', {data})\n      .then((response) => {\n        new Craft.LoginForm.ResetPasswordForm.MessageSentModal();\n      })\n      .catch((error) => {\n        this.showError(\n          (error &&\n            error.response &&\n            error.response.data &&\n            error.response.data.message) ||\n            Craft.t('app', 'A server error occurred.')\n        );\n      })\n      .finally(() => {\n        this.$submitBtn.removeClass('loading');\n      });\n  },\n\n  showLoginForm() {\n    this.loginForm.clearErrors();\n    this.$form.addClass('hidden');\n    this.loginForm.$form.removeClass('hidden');\n    this.loginForm.$usernameInput.val(this.$usernameInput.val());\n\n    if (!Garnish.isMobileBrowser()) {\n      this.loginForm.$usernameInput.trigger('focus');\n    }\n\n    this.loginForm.onResize();\n  },\n});\n\nCraft.LoginForm.ResetPasswordForm.MessageSentModal = Garnish.Modal.extend({\n  init() {\n    const $container = $(\n      '<div class=\"modal fitted email-sent\"><div class=\"body\">' +\n        Craft.t(\n          'app',\n          'Check your email for instructions to reset your password.'\n        ) +\n        '</div></div>'\n    ).appendTo(Garnish.$bod);\n\n    this.base($container);\n  },\n\n  hide() {},\n});\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  return {\n    ...rect,\n    top: rect.y,\n    left: rect.x,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    ...rects.floating,\n    x,\n    y\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== 'none') {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$map$so;\n                const placement = (_overflowsData$map$so = overflowsData.map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: 0,\n    crossAxis: 0,\n    alignmentAxis: null,\n    ...rawValue\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const overflowAvailableHeight = height - overflow[heightSide];\n      const overflowAvailableWidth = width - overflow[widthSide];\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if (isYAxis) {\n        const maximumClippingWidth = width - overflow.left - overflow.right;\n        availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;\n      } else {\n        const maximumClippingHeight = height - overflow.top - overflow.bottom;\n        availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const webkit = isWebKit();\n  const css = getComputedStyle(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isWebKit };\n","import { rectToClientRect, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { detectOverflow, offset } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getDocumentElement, getNodeName, isOverflowElement, getNodeScroll, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = currentWin.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = currentWin.frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(floating) {\n  return topLayerSelectors.some(selector => {\n    try {\n      return floating.matches(selector);\n    } catch (e) {\n      return false;\n    }\n  });\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  const x = rect.left + scroll.scrollLeft - offsets.x;\n  const y = rect.top + scroll.scrollTop - offsets.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element) || isTopLayer(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      ...(await getDimensionsFn(data.floating))\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, flip, hide, inline, limitShift, platform, shift, size };\n","import {arrow, computePosition, flip, offset, shift} from '@floating-ui/dom';\n\n/**\n * Tooltip\n *\n * Renders a tooltip on hover or focus of the parent element.\n *\n * Tooltips are used to provide additional or context for an element. By default\n * the tooltip will be positioned below an element and will avoid the edges\n * of the browser window.\n *\n * @property {'top'|'top-start'|'top-end'|'right'|'right-start'|'right-end'|'bottom'|'bottom-start'|'bottom-end'|'left'|'left-start'|'left-end'} placement - The placement of the tooltip relative to the parent element.\n * @property {boolean} arrow - Whether the tooltip should have an arrow.\n * @property {number} offset - The offset of the tooltip from the parent element.\n * @property {number} delay - The delay before the tooltip is shown on mouseentery.\n * @method show - Show the tooltip.\n * @method hide - Hide the tooltip.\n * @method update - Update the position of the tooltip.\n * @example <craft-tooltip arrow=\"false\" placement=\"top\" offset=\"10\">Tooltip content</craft-tooltip>\n */\nclass CraftTooltip extends HTMLElement {\n  connectedCallback() {\n    this.arrowElement = this.querySelector('.arrow');\n\n    this.arrow = this.getAttribute('arrow') !== 'false';\n    this.offset = this.hasAttribute('offset')\n      ? parseInt(this.getAttribute('offset'), 10)\n      : 8;\n\n    this.placement = this.getAttribute('placement') || 'bottom';\n    this.direction = getComputedStyle(this).direction;\n    this.delay = this.getAttribute('delay') || 500;\n    this.delayTimeout = null;\n\n    if (this.arrow && !this.arrowElement) {\n      this.renderInner();\n      this.renderArrow();\n    }\n\n    this.listeners = [\n      ['mouseenter', this.show, this.delay],\n      ['focus', this.show, 0],\n      ['mouseleave', this.hide, 0],\n      ['blur', this.hide, 0],\n    ];\n\n    this.listeners.forEach(([event, handler, delay]) => {\n      this.parentElement?.addEventListener(event, handler.bind(this, delay));\n    });\n\n    // Close on ESC\n    document.addEventListener('keyup', this.handleKeyUp.bind(this));\n\n    // Update & hide to make sure everything is where it needs to be\n    this.update();\n    this.hide();\n  }\n\n  disconnectedCallback() {\n    this.hide();\n\n    if (this.listeners.length) {\n      this.listeners.forEach(([event, handler]) => {\n        this.parentElement?.removeEventListener(event, handler.bind(this));\n      });\n    }\n\n    document.removeEventListener('keyup', this.handleKeyUp.bind(this));\n  }\n\n  handleKeyUp(e) {\n    if (e.key === 'Escape') {\n      this.hide();\n    }\n  }\n\n  /**\n   * Renders an inner container so we can use padding for the offset and\n   * maintain a better hover experience for users using zoom.\n   */\n  renderInner() {\n    this.inner = document.createElement('span');\n    this.inner.classList.add('inner');\n    this.inner.innerText = this.innerText;\n\n    // Replace the content with the inner container\n    this.innerHTML = '';\n    this.appendChild(this.inner);\n  }\n\n  renderArrow() {\n    this.arrowElement = document.createElement('span');\n    this.arrowElement.classList.add('arrow');\n    this.inner.appendChild(this.arrowElement);\n  }\n\n  show(delay) {\n    this.update();\n\n    this.delayTimeout = setTimeout(() => {\n      Object.assign(this.style, {\n        opacity: 1,\n        transform: ['left', 'right'].includes(this.getStaticSide())\n          ? `translateX(0)`\n          : `translateY(0)`,\n        // Make sure if a user hovers over the label itself, it stays open\n        pointerEvents: 'auto',\n      });\n    }, delay);\n  }\n\n  hide() {\n    if (this.delayTimeout) {\n      clearTimeout(this.delayTimeout);\n    }\n\n    Object.assign(this.style, {\n      opacity: 0,\n      transform: this.getInitialTransform(),\n      pointerEvents: 'none',\n    });\n  }\n\n  getInitialTransform() {\n    // Make sure the bubble moves in a natural direction\n    return {\n      top: `translateY(-${this.offset}px)`,\n      right: `translateX(${this.offset}px)`,\n      bottom: `translateY(${this.offset}px)`,\n      left: `translateX(-${this.offset}px)`,\n    }[this.getStaticSide()];\n  }\n\n  getStaticSide() {\n    return {\n      top: 'bottom',\n      right: 'left',\n      bottom: 'top',\n      left: 'right',\n    }[this.placement.split('-')[0]];\n  }\n\n  update() {\n    computePosition(this.parentElement, this, {\n      strategy: 'fixed',\n      placement: this.placement,\n      middleware: [\n        flip(),\n        shift({padding: 10}),\n        offset(0),\n        ...(this.arrow ? [arrow({element: this.arrowElement})] : []),\n      ],\n    }).then(({x, y, middlewareData, placement}) => {\n      // Placement may have changed\n      this.placement = placement;\n\n      Object.assign(this.style, {\n        left: `${x}px`,\n        top: `${y}px`,\n        // Add padding to the static side for accessible hovers\n        [`padding${Craft.uppercaseFirst(this.getStaticSide())}`]:\n          `${this.offset}px`,\n      });\n\n      if (!this.arrowElement) {\n        return;\n      }\n\n      const {x: arrowX, y: arrowY} = middlewareData.arrow;\n      this.arrowElement.dataset.placement = placement;\n      Object.assign(this.arrowElement.style, {\n        left: arrowX != null ? `${arrowX}px` : '',\n        top: arrowY != null ? `${arrowY}px` : '',\n        right: '',\n        bottom: '',\n        [this.getStaticSide()]: '-4px',\n      });\n    });\n  }\n}\n\ncustomElements.define('craft-tooltip', CraftTooltip);\n"],"names":["Craft","Accordion","Garnish","Base","extend","$trigger","targetSelector","_$target","init","trigger","_this","this","$","data","console","warn","destroy","attr","concat","addListener","event","key","keyCode","SPACE_KEY","RETURN_KEY","preventDefault","onTriggerClick","hideTarget","showTarget","$target","_this2","length","_currentHeight","height","removeClass","addClass","i","$t","prop","_targetHeight","css","overflow","velocity","getUserPreferredAnimationDuration","eq","$win","hasClass","removeData","base","AdminTable","settings","totalItems","sorter","$noItems","$table","$tbody","$deleteBtns","setSettings","defaults","allowDeleteAll","minItems","noItemsSelector","tableSelector","children","sortable","DataTableSorter","onSortChange","reorderItems","bind","find","handleDeleteBtnClick","updateUI","addRow","row","maxItems","$row","appendTo","$deleteBtn","addItems","add","ids","$items","id","idAttribute","push","JSON","stringify","sendActionRequest","reorderAction","then","response","onReorderItems","cp","displaySuccess","t","reorderSuccessMessage","catch","_ref","displayError","reorderFailMessage","target","closest","confirmDeleteItem","deleteItem","confirmDeleteMessage","name","getItemName","confirm","_this3","getItemId","deleteAction","handleDeleteItemSuccess","_ref2","handleDeleteItemFailure","deleteFailMessage","removeItems","remove","onDeleteItem","deleteSuccessMessage","escapeHtml","nameAttribute","hide","show","$moveButtons","newItemBtnSelector","noop","AssetImageEditor","Modal","$body","$footer","$imageTools","$buttons","$cancelBtn","$replaceBtn","$saveBtn","$focalPointBtn","$editorContainer","$straighten","$croppingCanvas","$spinner","$constraintContainer","$constraintRadioInputs","$customConstraints","canvas","image","viewport","focalPoint","grid","croppingCanvas","clipper","croppingRectangle","cropperHandles","cropperGrid","croppingShade","imageStraightenAngle","viewportRotation","originalWidth","originalHeight","imageVerticeCoords","zoomRatio","animationInProgress","currentView","assetId","cacheBust","draggingCropper","scalingCropper","draggingFocal","previousMouseX","previousMouseY","shiftKeyHeld","editorHeight","editorWidth","cropperState","scaleFactor","flipData","focalPointState","maxImageSize","lastLoadedDimensions","imageIsLoading","mouseMoveEvent","croppingConstraint","constraintOrientation","showingCustomConstraint","saving","renderImage","renderCropper","_queue","Queue","Date","now","allowDegreeFractions","isImagick","prefersReducedMotion","animationDuration","x","y","$container","$bod","type","class","text","allowSavingAsNew","ui","createButton","label","spinner","saveImage","createSubmitButton","removeListener","$shade","getMaxImageSize","loadEditor","browserViewportWidth","$doc","get","documentElement","clientWidth","browserViewportHeight","clientHeight","Math","max","window","devicePixelRatio","html","$tabs","$viewsContainer","$views","innerHeight","innerWidth","_showSpinner","updateSizeAndPosition","$customConstraintWrapper","filter","parent","append","size","value","val","test","fabric","StaticCanvas","width","enableRetinaScaling","requestAnimationFrame","renderAll","imageUrl","getActionUrl","Image","fromURL","imageObject","set","originX","originY","left","top","getHeight","getWidth","getScaledImageDimensions","_setFittedImageVerticeCoordinates","_repositionEditorElements","focalState","imageDimensions","offsetX","offsetY","focal","focalData","adjustedX","adjustedY","storeFocalPointState","_createFocalPoint","_createViewport","storeCropperState","_addControlListeners","_handleMouseMove","_handleMouseDown","_handleMouseUp","_handleMouseOut","_hideSpinner","first","_reloadImage","setSrc","outerHeight","previousEditorDimensions","setDimensions","currentScaledDimensions","getZoomToFitRatio","previouslyOccupiedArea","_getBoundingRectangle","_repositionCropper","getZoomToCoverRatio","_repositionImage","_repositionViewport","_repositionFocalPoint","_zoomImage","Rect","fill","globalCompositeOperation","sizeFactor","focalX","focalY","deltaX","deltaY","Group","Circle","radius","strokeWidth","stroke","toggleFocalPoint","dimensions","state","currentWidth","ratio","hasOrientationChanged","_","imageRatio","editorRatio","min","round","_getPrevTab","newTabIndex","activeTabIndex","_getActiveTabIndex","_getNextTab","_getActiveTab","$activeTab","index","_this4","_handleTabClick","LEFT_KEY","UP_KEY","$prevTab","activateTab","RIGHT_KEY","DOWN_KEY","$nextTab","rotateImage","flipImage","straighteningInput","SlideRuleInput","onStart","_showGrid","onChange","slider","straighten","onEnd","_hideGrid","_cleanupFocalPointAfterStraighten","ev","SHIFT_KEY","_handleConstraintChange","_handleOrientationClick","_applyCustomConstraint","_handleConstraintClick","constraint","currentTarget","siblings","_showCustomConstraint","_hideCustomConstraint","setCroppingConstraint","enforceCroppingConstraint","$constraints","$constraint","labelSelector","$label","split","reverse","join","replace","_getCustomConstraint","w","h","parseFloat","isNaN","_setCustomConstraint","$tab","tab","view","tabindex","showView","_this5","enableSlider","disableSlider","Promise","resolve","reject","disableCropMode","enableCropMode","zoomFactor","degrees","_this6","parseInt","imageZoomRatio","newAngle","angle","scaledImageDimensions","viewportProperties","imageProperties","angleInRadians","PI","newDeltaX","cos","sin","newDeltaY","modifiedDeltaX","modifiedDeltaY","temp","animate","duration","onComplete","cleanAngle","_adjustFocalPointByAngle","_resetFocalPointPosition","axis","_this7","editorCenter","setValue","properties","scaleY","scaleX","previousAngle","_adjustEditorElementsOnStraighten","newCenterX","newCenterY","angleDelta","currentZoomRatio","adjustmentRatio","cropperCenterX","cropperCenterY","imageVertices","getImageVerticeCoords","rectangle","_getZoomRatioToFitRectangle","_isCenterInside","opacity","object","containingObject","newFocalX","newFocalY","adjustedFocalX","adjustedFocalY","containingVertices","vertex","rectangleVertices","_getRectangleVertices","verticeIndex","arePointsInsideRectangle","edge","_getEdgeCrossed","rectangleCenter","distanceFromVertexToEdge","abs","sqrt","pow","distanceFromCenterToEdge","_this8","$button","postData","imageRotation","cropData","zoom","onSave","broadcaster","postMessage","runQueue","Preview","refresh","message","finally","scaledWidth","scaledHeight","boundingBox","_getImageBoundingBox","scale","vertScale","horiScale","getCombinedZoomRatio","strokeOptions","gridWidth","gridHeight","xStep","yStep","Line","onFadeOut","removeAllListeners","_this9","_editorModeTransition","cropperData","_showCropper","_this10","_hideCropper","targetZoom","inverseZoomFactor","imageOffsetX","imageOffsetY","callback","_this11","pause","resume","clipperData","_setupCropperLayer","_redrawCropperElements","_this12","backgroundColor","hoverCursor","selection","position","rectangleRatio","rectWidth","rectHeight","lineOptions","gridOptions","pathGroup","Path","cropTextTop","cropTextBackgroundColor","previousImageArea","currentOffset","areaFactor","coordinateSet","a","b","c","d","_isMouseOver","move","handle","_cropperHandleHitTest","pageX","pageY","_handleMouseMoveInternal","_handleFocalDrag","_handleCropperDrag","_handleCropperResize","_setMouseCursor","vertices","dxi","dyi","furthest","furthestDeltas","newX","newY","_this13","previousHeight","previousWidth","startingRectangle","_calculateNewCropperSizeByDeltas","cropperDirection","topDelta","leftDelta","change","match","isMobileBrowser","cursor","parentOffset","offset","mouseX","mouseY","lb","rb","tb","bb","topLeft","topRight","bottomRight","bottomLeft","zoomMode","topVerticalSegment","bottomVerticalSegment","rightHorizontalSegment","leftHorizontalSegment","verticalOffset","horizontalOffset","_debug","fabricObj","debugger","points","ab","_getVector","bc","scalarAbAb","_getScalarProduct","scalarBcBc","point","ap","bp","scalarAbAp","scalarBcBp","projectsOnAB","projectsOnBC","_getVectorMagnitude","vector","_getAngleBetweenVectors","acos","edgePoints","centerPoint","smallestDiff","edgeCrossed","edgeIndex","toCenter","edgeVector","toVertex","diff","box","proportion","_regeneratorRuntime","e","r","Object","prototype","n","hasOwnProperty","o","defineProperty","Symbol","iterator","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","l","f","s","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","keys","pop","prev","charAt","slice","stop","rval","complete","finish","delegateYield","asyncGeneratorStep","gen","_next","_throw","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_defineProperty","obj","toPrimitive","String","_toPrimitive","_deleteFolder","_deleteCurrentFolder","AssetIndex","BaseElementIndex","$includeSubfoldersContainer","$includeSubfoldersCheckbox","showingIncludeSubfoldersCheckbox","$uploadButton","$uploadInput","$progressBar","uploader","promptHandler","progressBar","currentFolderId","$listedFolders","itemDrag","_uploadTotalFiles","_uploadFileProgress","_currentUploaderSettings","_includeSubfolders","elementType","assign","context","queryParams","getQueryParams","includeSubfolders","DragDrop","activeDropTargetClass","minMouseDist","hideDraggee","moveHelperToCursor","item","$targetItem","elementSelect","selectItem","_findDraggableItems","getSelectedElements","$item","$dropTargets","$visibleSources","toArray","source","hasAttr","sourcePath","not","$source","step","folderId","$btn","$draggee","targetFolderId","_targetFolderId","$activeDropTarget","returnHelpersToDraggees","fadeOutHelpers","$folders","$assets","folderIds","map","assetIds","mover","AssetMover","moveFolders","totalFoldersMoved","moveAssets","totalAssetsMoved","totalItemsMoved","displayNotice","elementIndex","updateElements","$main","modal","on","_positionProgressBar","$dropTarget","is","afterInit","foldersOnly","initForFiles","PromptHandler","ProgressBar","createUploadInputs","_this$$uploadButton","_this$$uploadInput","style","addButton","insertBefore","isIndexBusy","onSelectSource","fsType","_this$uploader","_this$settings","options","fileInput","dropZone","events","fileuploadstart","_onUploadStart","fileuploadprogressall","_onUploadProgress","fileuploaddone","_onUploadSuccess","fileuploadalways","_onUploadAlways","fileuploadfail","_onUploadFailure","criteria","kind","allowedKinds","createUploader","setParams","onSourcePathChange","currentFolder","_this$uploader2","canMoveSubItems","selectable","multiSelect","startSearching","hideSidebar","hasChildren","floor","random","insertAfter","$search","$subContainer","setSelecetedSourceState","checked","getSelectedSourceState","marginBottom","stopSearching","getViewSettings","canSelectElement","getViewParams","showFolders","trashed","setIndexBusy","resetProgressBar","showProgressBar","resetPrompts","CustomEvent","detail","progress","loaded","total","setProgressPercentage","result","selectElementAfterUpdate","conflict","prompt","file","filename","choices","title","modalSettings","hideOnEsc","hideOnShadeClick","addPrompt","isLastUpload","hideProgressBar","setIndexAvailable","getPromptCount","showBatchPrompts","_uploadFollowup","_updateAfterUpload","_data$jqXHR","_data$files","jqXHR","responseJSON","errors","files","errorMessages","flat","clearSearch","setSelectedSortAttribute","returnData","setItemCount","doFollowup","parameterArray","parameterIndex","action","_this4$uploader$setti","replaceAction","followupAlways","incrementProcessedItemCount","updateProgressBar","followupSuccess","choice","sourceAssetId","conflictingAssetId","targetFilename","followupFailure","onUpdateElements","_onUpdateElements","getAllElements","newElements","$newElements","$elements","_onKeyDown","_onElementFocus","_loop","$folder","$link","folderName","disabledFolderIds","includes","has","href","getCpUrl","uri","role","firstFocusableEl","focus","removeAllItems","shiftKey","PreviewFileModal","openInstance","selfDestruct","$element","$focusedItem","_loadPreview","stopPropagation","startingWidth","startingHeight","getSourcePathLabel","getSourcePathActionLabel","getSourcePathActions","actions","canCreate","onSelect","_createSubfolder","canRename","_renameFolder","canMove","getMoveTargetSourceKeys","_moveFolder","canDelete","destructive","deleteCurrentFolder","subfolderName","parentId","_ref3","_callee","_context","deleteFolder","_callee2","folder","_e$response","_context2","t0","_x","newName","_ref4","peerFiles","$sources","volumeHandle","parentFolder","VolumeFolderSelectorModal","sources","showTitle","modalTitle","selectBtnLabel","indexSettings","defaultSource","sourceKey","defaultSourcePath","_ref5","targetFolder","$sourcePathActionsBtn","scrollTop","windowHeight","registerElementIndexClass","requests","for","params","_batchMoveRequests","conflictChoices","handleConflictChoice","request","force","suggestedFilename","transferList","folderIdsToDelete","onSuccess","merge","totalMoved","_processTransferList","_deleteFolders","_batchRequests","responses","_step","_iterator","_createForOfIteratorHelper","success","prompts","_step2","nextRequests","_iterator2","nextRequest","nextTotalMoved","_step3","activeRequests","_iterator3","failure","AssetSelectInput","BaseElementSelectInput","$uploadBtn","openPreviewTimeout","canUpload","_attachUploader","updateAddElementsBtn","$elementsContainer","elementSelectSettings","makeFocusable","openPreview","clearOpenPreviewTimeout","clearTimeout","minGutter","$addElementBtn","limit","describedBy","$fileInput","multiple","canAddMoreFiles","_onUploadComplete","fieldId","sourceElementId","elementId","siteId","enableAddElementsBtn","disableAddElementsBtn","selectUploadedFile","element","canAddMoreElements","$newElement","margin","outerWidth","animateCss","addElements","elements","instances","viewMode","elementInfo","getElementInfo","selectElements","appendHeadHtml","headHtml","appendBodyHtml","bodyHtml","slotsTaken","AssetSelectorModal","BaseElementSelectorModal","$selectTransformBtn","_selectedTransform","transforms","createSelectTransformButton","$btnGroup","$primaryButtons","$selectBtn","$menu","$menuList","MenuButton","MenuBtn","onOptionSelect","onSelectTransform","disable","onSelectionChange","allowTransforms","enable","option","transform","selectImagesWithTransform","transformUrls","$selectedElements","imageIdsWithMissingUrls","showFooterSpinner","fetchMissingTransformUrls","hideFooterSpinner","url","canSelectImageTransforms","registerElementSelectorModalClass","AssetsFieldSettings","$useSingleFolderInput","$sourceInputs","$defaultUploadLocationSelect","$defaultUploadLocationOptions","useSingleFolderToggleId","sourcesFieldId","defaultUploadLocationId","updateDefaultUploadLocationSelect","firstEnabledValue","defaultUploadLocationVal","$input","getOption","$selectedOption","AuthManager","remainingSessionTime","checkRemainingSessionTimer","showLoginModalTimer","decrementLogoutWarningInterval","showingLogoutWarningModal","showingLoginModal","logoutWarningModal","loginModal","$logoutWarningPara","$passwordInput","$loginBtn","loginBtn","username","updateRemainingSessionTime","setCheckRemainingSessionTimer","seconds","setTimeout","checkRemainingSessionTime","extendSession","_yield$Craft$sendActi","csrfTokenValue","timeout","isGuest","minSafeSessionTime","showLogoutWarningModal","checkInterval","hideLogoutWarningModal","showLoginModal","hideLoginModal","quickShow","$form","$logoutBtn","$renewSessionBtn","prependTo","autoShow","closeOtherModals","shadeClass","onFadeIn","updateLogoutWarningMessage","setInterval","decrementLogoutWarning","time","secondsToHumanTimeDuration","clearInterval","quick","quickHide","_callee3","_yield$Craft$sendActi2","_context3","email","userEmail","_onFadeIn","initUiElements","LoginForm","showPasskeyBtn","userHasPasskeys","onLogin","_this2$loginModal","onHide","logout","dataType","redirectTo","renewSession","closeModal","successEvent","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","allowArrayLike","it","F","_e","normalCompletion","didErr","_e2","minLen","_arrayLikeToArray","toString","from","len","arr2","_onDeleteElements","_onBeforeDeleteElements","_onDuplicateElements","_onBeforeDuplicateElements","_createTriggers2","_submitActionInternal2","_submitAction","initialized","idPrefix","instanceState","_sourceStates","sourceStatesStorageKey","searchTimeout","sourceSelect","sourceNav","$sidebar","showingSidebar","hasImplicitSource","rootSourceKey","sourceViewModes","$rootSource","sourcesByKey","$sourceActionsContainer","$sourceActionsBtn","$toolbar","toolbarOffset","$srStatusContainer","$searchContainer","$filterBtn","searching","searchText","sortByScore","drafts","$clearSearchBtn","$statusMenuBtn","$statusMenuContainer","statusMenu","status","$siteMenuBtn","siteMenu","sourcePaths","$sourcePathOuterContainer","$sourcePathInnerContainer","$sourcePathOverflowBtnContainer","$updateSpinner","$viewModeBtnContainer","viewModeBtns","_viewParams","_previousViewParams","_viewMode","_autoSelectElements","$countSpinner","$countContainer","$actionsContainer","$actionMenuBtn","page","resultSet","totalResults","totalUnfilteredResults","$exportBtn","actionsHeadHtml","actionsBodyHtml","$selectAllContainer","$selectAllCheckbox","showingActionTriggers","exporters","exportersByType","triggers","_$triggers","_cancelToken","viewMenus","activeViewMenu","filterHuds","_activeElement","inlineEditing","nestedInputNamespace","canSort","validateViewMode","paginated","isAdministrative","hasActiveFilter","isActive","baseCriteria","currentStep","sourceStates","__IMP__","setInstanceState","setLocalStorage","randomString","toolbarSelector","namespaceId","findSources","getDefaultInstanceState","storageKey","getLocalStorage","initSources","menubtn","menu","_handleStatusChange","$option","$options","_setSite","_handleSiteChange","defaultSiteId","getSiteId","$storedSiteOption","updateElementsIfSearchTextChanged","disableAutofocus","stepKey","selector","selectOption","setQueryParam","sourcePathStep","selectDefaultSource","getDefaultSourcePath","afterSetInitialSource","loadSourcePathByKey","lastSourceKey","sourceRootIndex","findIndex","onAfterInit","namespaceInputName","namespace","handleResize","search","filters","createFilterHud","showOnInit","serialized","sort","lastDashPos","lastIndexOf","substring","dir","setPage","pageNum","showSourcePath","_updateSourcePathVisibility","_createCancelToken","axios","CancelToken","token","_cancelRequests","cancel","getSourceContainer","getSourceLabel","getItemLabel","elementTypeNames","elementTypeName","toLowerCase","getItemsLabel","elementTypePluralName","getFirstItemNumber","batchSize","getLastItemNumber","getSite","sites","SourceNav","_handleSourceSelectionChange","initSource","_getSourcesInList","getQueryParam","getDefaultSourceKey","getSourceByKey","selectSource","refreshSources","refreshSourcesAction","replaceWith","isCancel","initSourceToggle","expandedSources","indexOf","_expandSource","deinitSourceToggle","$toggle","_getSourceToggle","deinitSource","selectedSource","_sourceKey","preferStoredSource","$lastSource","segment","testSourceKey","_collapseSource","canView","getDefaultExpandedSources","$overflowBtn","overflowMenuId","$overflowUl","$nav","$ol","$overflowMenu","disclosureMenu","$overflowLi","icon","selectSourcePathStep","isFirst","isLast","$li","$btnBody","actionBtnLabel","menuId","groupedActions","administrative","group","_buildSourcePathActionList","history","replaceState","firstStep","lastStep","removeAttr","overage","_checkSourcePathOverage","getBoundingClientRect","$ul","$a","num","storeInstanceState","getSourceState","defaultValue","lastSlashPos","sourceState","viewState","k","storeSortAttributeAndDirection","getPageUrl","_resetCount","updateSourceMenu","empty","getSourceActions","_buildActionList","userIsAdmin","allowAdminChanges","createCustomizeSourcesModal","updateViewMenu","hideTrigger","getViewModesForSource","mode","ViewMenu","showTrigger","canHaveDrafts","draftOf","savedDraftsOnly","condition","referenceElementId","referenceElementSiteId","disabledElementIds","showHeaderColumn","order","collapsedElementIds","_this$getSortAttribut2","getSortAttributeAndDirection","sortAttribute","sortDirection","conditionConfig","filterConfig","tableColumns","getDefaultTableColumns","preservePagination","pageChanged","onBeforeUpdateElements","updateElementsAction","cancelToken","fixedHeader","headerContainerHeight","$headerContainer","maxScrollTop","$scrollContainer","_updateView","criteriaHasChanged","sourceHasChanged","itemLabel","itemsLabel","_countResults","successMessage","last","items","updateLiveRegion","getSortMessage","compare","sortHasChanged","attribute","getSelectedSortAttribute","direction","getSelectedSortDirection","sortLabel","getSortLabel","currentMessage","showActionTriggers","_createTriggers","submitAction","actionParams","beforeCallback","selectedElementIds","viewParams","getSelectedElementIds","_findAction","expandPostArray","elementAction","elementIds","download","csrfTokenName","downloadFromUrl","submitActionsAction","badgeCounts","_updateBadgeCounts","afterAction","_x2","_x3","actionClass","onAfterAction","hideActionTriggers","detach","updateSelectAllCheckbox","totalSelected","getEnabledElements","updateActionTriggers","setStatus","getSortOption","getDefaultSort","setSortAttribute","sortOption","defaultDir","attributes","lastAttr","oldHistory","orderHistory","setSortDirection","setSelectedSortDirection","getSelectedViewMode","getSourceLevel","parentsUntil","getParentSource","$parent","getRootSource","updateContentHeading","$firstOption","sourceViewMode","$viewModeBtn","className","selectViewMode","doesSourceHaveViewMode","filterHudExists","updateFilterBtn","urlParams","setUrl","getUrl","path","selectSourceByKey","getSourceData","$parentSource","getSortOptions","sortOptions","defaultSort","getTableColumnOptions","getTableColumnOption","getSelectedTableColumns","setSelectedTableColumns","updateTableColumnField","viewModes","orientation","allowedViewModes","createView","getViewClass","TableElementIndexView","CardsElementIndexView","ThumbsElementIndexView","rememberDisabledElementId","inArray","forgetDisabledElementId","splice","enableElements","parents","onEnableElements","disableElements","onDisableElements","getElementById","enableElementsById","makeArray","disableElementsById","getButtonContainer","isShowingSidebar","buttonContainer","document","activeElement","contains","blur","elementsHeight","scrollParent","positionTop","setProperty","body","CustomizeSourcesModal","onSelectSite","onCountResults","totalUnfiltered","$selectedItem","_handleActionTriggerSubmit","_submitActionInternal","getPostData","_handleMenuActionTriggerSubmit","_this14","beforeActivate","afterActivate","_x4","_x5","_x6","selectedOption","queryParam","firstSite","updateSourceVisibility","$heading","$headings","setSiteId","_this15","some","site","uid","_handleSelectionChange","_handleSourceDblClick","_toggleSource","_handleSourceToggleClick","$list","topLevel","_getChildSources","$childSources","_this16","_callee4","_step4","_iterator4","_step5","_context4","countLabel","$paginationContainer","totalPages","ceil","$paginationNav","$prevBtn","disabled","$nextBtn","selectAllElements","deselectAllElements","checkboxMode","waitForDoubleClicks","selectElementById","$badge","_this17","countElementsAction","unfilteredTotal","_callee5","safeMenuActions","destructiveMenuActions","formId","$menuTrigger","$safeList","$destructiveList","_context5","_createMenuTriggerList","currentElementIndex","_showExportHud","_this18","typeOptions","$typeField","createSelectField","$formatField","$typeSelect","formattable","$limitField","createTextField","placeholder","$submitBtn","$exportSubmit","MultiFunctionBtn","HUD","submitting","busyEvent","format","_step6","_iterator5","showFilterHud","FilterHud","showing","canDuplicateElements","selectedItems","onBeforeDuplicateElements","_callee6","_context6","_x7","onDuplicateElements","_callee7","_context7","_x8","canDeleteElements","onBeforeDeleteElements","_callee8","_context8","_x9","onDeleteElements","_callee9","_context9","_x10","inlineEditable","container","handleClick","handleKeypress","_deinitItem","getClosestItem","deselectAll","selectedClass","itemsChanged","selectionChanged","callbackFrame","cancelAnimationFrame","$sortField","$sortAttributeSelect","$sortDirectionPicker","sortDirectionListbox","$tableColumnsField","$tableColumnsContainer","$revertContainer","$revertBtn","$closeBtn","_this19","_buildMenu","DisclosureMenu","updateSortField","updateTableFieldVisibility","tidyTableColumnField","FX_DURATION","_this$elementIndex$ge2","$scoreOption","prepend","select","_this20","$lastContainer","lastIndex","$checkbox","$checkboxes","_getTableColumnCheckboxes","defaultOrder","column","reduce","_objectSpread","checkboxA","checkboxB","revert","_this21","$metaContainer","_createSortField","_createTableColumnsField","$footerContainer","_createRevertBtn","_this22","groups","startsWith","unshift","optgroup","$sortAttributeSelectContainer","createSelect","Listbox","$field","createField","fieldset","_this23","columns","createCheckboxSelect","_onTableColumnChange","$selectedCheckboxes","_this24","loading","$clearBtn","cleared","_this25","$loadingContent","hudClass","$hud","$tip","_callee10","$btnContainer","_context10","hudHtml","clear","setBusy","setReady","setFocus","serialize","_x11","elem","func","setFocusWithin","updateSizeAndPositionInternal","hudHeight","searchOffset","availableSpace","bottom","overflowY","onShow","hasRules","BaseElementIndexView","$loadingMoreSpinner","$elementContainer","$scroller","loadingMore","_totalVisible","_morePending","_handleEnableElements","_handleDisableElements","thumbLoader","elementThumbLoader","getElementContainer","setTotalVisible","setMorePending","load","Select","filterSelectableElements","multi","vertical","isVerticalList","_handleElementEditing","createElementEditor","maybeLoadMore","$selectedItems","selectElement","selectAll","getElementCheckbox","getTotalVisible","totalVisible","getMorePending","morePending","canLoadMore","loadMore","loadMoreElementsAction","getLoadMoreParams","appendElements","onAppendElements","off","_selectStructuredElements","_selectElements","_onModalSelect","elementSort","elementEditor","modalFirstOpen","_initialized","isPlainObject","normalizedSettings","modalStorageKey","maintainHierarchy","getContainer","getElementsContainer","getAddElementsBtn","getSpinner","initElementSelect","initElementSort","resetElements","getElements","DragSort","getSelectedItems","ignoreHandleSelector","getElementSortAxis","collapseDraggees","magnetStrength","helperLagBase","updateButtonContainer","showSpinner","hideSpinner","focusNextLogicalElement","focusLastRemoveBtn","$removeBtns","removeElements","defineElementActions","addActionsToChip","moveForwardBtn","moveBackwardBtn","$prev","$next","toggleItem","editable","_handleShowElementEditor","nodeName","isTouchCapable","BACKSPACE_KEY","DELETE_KEY","removeElement","onAddElements","moveElementForward","moveElementBackward","elementSelectInput","prevalidate","replaceElement","replacementId","$existing","showActionMenu","_e$response2","_this$elementSelect","resetItemOrder","_$nextElement","$nextElement","lastElementIndex","onRemoveElements","$allElements","_animateStructureElementAway","animateElementAway","right","REMOVE_FX_DURATION","showModal","createModal","createElementSelectorModal","getModalSettings","hideOnSelect","showSiteMenu","getDisabledElementIds","onModalSelect","onModalHide","triggerElement","allowSelfRelations","inputUiType","inputUiSize","slotsLeft","disableCancelBtn","disableSelectBtn","$modalElement","selectStructuredElements","updateDisabledElementsInModal","enableCancelBtn","enableSelectBtn","createNewElement","appendElement","animateElementIntoPlace","onSelectElements","$newInput","$newElementsContainer","filteredElements","_i2","containerId","branchLimit","selectionLabel","clone","setElementSize","single","$inputElement","origOffset","destOffset","$helper","zIndex","ADD_FX_DURATION","editorSettings","supportSidebarToggleView","$content","$sourceToggles","$sidebarToggleBtn","$sidebarCloseBtn","$mainHeading","$secondaryButtons","headingId","$headingContainer","fullscreen","updateModalBottomPadding","footerHeight","updateSidebarView","sidebarShouldBeHidden","buildSidebarToggleView","resetView","$mainHeader","$sidebarHeader","getActiveSourceName","toggle","controls","closeSidebar","toggleSidebar","sidebarIsOpen","openSidebar","uiLayerManager","addLayer","registerShortcut","ESC_KEY","$focusedEl","getFocusedElement","removeLayer","_createElementIndex","updateSelectBtnState","updateHeading","hasSelection","clearMouseUpTimeout","disableElementsOnSelect","getElementIndexParams","bodyAction","createElementIndex","getIndexSettings","touchData","firstTap","secondTap","resizable","onCancel","BaseInputGenerator","listening","startListening","setNewSource","stopListening","onSourceTextChange","updateTarget","onTargetTextChange","onFormSubmit","updateWhenHidden","sourceVal","targetVal","generateTargetValue","dispatchEvent","InputEvent","inputType","Event","selectFullValue","BaseUploader","formData","_rejectedFiles","_extensionList","_inProgressCounter","createAction","paramObject","getInProgress","processErrorMessages","str","kinds","humanFileSize","maxFileSize","bytes","threshold","toFixed","_createExtensionList","allowedKind","fileKinds","j","extensions","ext","pasteZone","maxUploadSize","headers","Accept","paramName","CP","authManager","$navToggle","$globalSidebar","$globalContainer","$mainContainer","$pageContainer","$alerts","$crumbs","$crumbList","$crumbItems","$crumbMenuTriggerItem","$crumbMenu","$crumbMenuList","$crumbMenuItems","$notificationContainer","$primaryForm","$header","$mainContent","$details","$sidebarContainer","$sidebarToggle","$contentContainer","$edition","$confirmUnloadForms","$deltaForms","$collapsibleTables","isMobile","tabManager","enableQueue","totalJobs","jobInfo","displayedJobInfo","displayedJobInfoUnchanged","trackJobProgressTimeout","trackingJobProgress","jobProgressCancelToken","jobProgressIcon","checkingForUpdates","forcingRefreshOnUpdatesCheck","includingDetailsOnUpdatesCheck","checkForUpdatesCallbacks","checkForUpdatesFailureCallbacks","resizeTimeout","ElementThumbLoader","$allInstructions","$instructions","updateFixedHeader","ready","handleWindowResize","setSidebarNavAttributes","initSpecialForms","initAlerts","shortcuts","S_KEY","ctrl","redirect","retainScroll","shortcut","shift","submitPrimaryForm","initTabs","LOCATION_HASH","selectTab","scrollY","removeLocalStorage","scrollTo","_handleInputFocus","_handleInputBlur","announcements","$unreadMessage","hud","hasUnreads","unread","contents","heading","each","hostname","location","footer","IntersectionObserver","classList","intersectionRatio","rootMargin","observe","$contentHeader","$noticeContainer","$forms","_loop2","serializer","findDeltaData","createForm","submit","confirmUnload","livePreview","inPreviewMode","originalEvent","returnValue","saveShortcut","submitForm","updateSidebarMenuLabel","toggleNav","isExpanded","navIsExpanded","disableGlobalSidebar","enableGlobalSidebar","isAlwaysVisible","getComputedStyle","getPropertyValue","trim","newState","toggleClass","Tabs","querySelectorAll","link","updateTabs","tabs","$tabContainer","$tabsContainer","$tabsList","$tablist","$selectedTab","selectedTabIndex","$focusableTab","deselectTab","handleBreadcrumbVisibility","maxWidth","itemWidths","$crumb","sum","$labelContainer","visibleTotalWidth","updateResponsiveTables","_i","_$table","_containerWidth","_check","_isCollapsed","headerHeight","headerWidth","_setFixedTopPos","displayNotification","notification","Notification","notificationType","iconLabel","fetchAlerts","queue","alerts","displayAlerts","alert","content","showIcon","$shunnableAlerts","$resolvableButtonsContainer","$refreshBtn","sendApiRequest","updateContext","description","contextBtnLabel","querySelector","textContent","menuItem","descriptionEl","createElement","showSiteCrumbMenuItem","li","setSiteCrumbMenuItemStatus","statusEl","checkForUpdates","forceRefresh","includeDetails","onFailure","realOnSuccess","realOnFailure","_checkForUpdates","updateUtilitiesBadge","callbacks","updateInfo","_getUpdates","_checkForCachedUpdates","cached","onlyIfCached","_ref6","updates","_cacheUpdates","_ref7","$utilitiesLink","_ref8","badgeCount","$badgeLabel","$screenReaderText","runQueueAutomatically","trackJobProgress","delay","cancelJobTracking","getNextJobDelay","_trackJobProgressInternal","setJobData","jobData","setJobInfo","jobs","oldInfo","getDisplayedJobInfo","progressLabel","updateJobIcon","statuses","JOB_STATUS_RESERVED","JOB_STATUS_FAILED","JOB_STATUS_WAITING","JobProgressIcon","hideFailMode","setDescription","setProgress","showFailMode","actionUrl","baseCpUrl","baseUrl","cpTrigger","notificationDuration","JOB_STATUS_DONE","closing","closeTimeout","_preventDelayedClose","originalActiveElement","$icon","$closeBtnContainer","details","close","_negMargin","_initDelayedClose","isVisible","delayedClose","preventDelayedClose","one","$progressLabel","failMode","_$bgCanvas","_$staticCanvas","_$hoverCanvas","_$failCanvas","_staticCtx","_hoverCtx","_canvasSize","_arcPos","_arcRadius","_lineWidth","_arcStartPos","_arcEndPos","_arcStartStepSize","_arcEndStepSize","_arcStep","_arcStepTimeout","_arcAnimateCallback","_progressBar","canAccessQueueManager","$prefixContainer","$canvasContainer","m","_createCanvas","getContext","_drawArc","_animateArc","_setArc","color","$canvas","ctx","strokeStyle","lineWidth","lineCap","startPos","endPos","clearRect","beginPath","arc","closePath","targetStartPos","targetEndPos","_takeNextArcStep","cardSort","helper","onInsertionPointChange","helpers","CategoryIndex","editableGroups","$newCategoryBtnGroup","$newCategoryBtn","updateButton","editableCategoryGroups","defaultGroupHandle","selectedSourceHandle","$menuBtn","selectedGroup","visibleLabel","ariaLabel","isCtrlKeyPressed","button","open","_createCategory","$menuContainer","anchorRole","setPath","groupId","cpEditUrl","fresh","draftId","groupSourceKey","CategorySelectInput","selectedCategoryIds","categoryIds","onResponse","$allCategories","_animateCategoryAway","ColorInput","$colorContainer","$colorPreview","$colorInput","createColorInput","handleTextChange","_this$settings$preset","input","setAttribute","presets","listId","updateColor","repeat","_browserSupportsColorInputs","doesBrowserSupportColorInputs","ComponentSelectInput","componentSelect","componentSort","$components","$addBtn","$createBtn","initComponentSelect","initComponentSort","resetComponents","getOptions","addComponent","slideout","CpScreenSlideout","modelClass","modelId","getComponents","showOption","hideOption","getComponentSortAxis","canAddMoreComponents","updateButtons","removeComponents","addComponents","$component","defineComponentActions","click","$selected","removeComponent","moveComponentForward","moveComponentBackward","_this$componentSelect","$nextComponent","lastComponentIndex","animateComponentAway","getSelectedComponentIds","_arguments","addToMenu","canAdd","$menuItem","components","inputName","withMenuItems","menuItems","addItem","hideItem","CpModal","showingLoadSpinner","$loadSpinner","ignoreFailedRequest","fieldsWithErrors","showSubmitButton","containerElement","containerAttributes","$contents","handleSubmit","closeMeMaybe","$sidebarBtn","refreshInitialData","showLoadSpinner","getParams","requestOptions","update","deltaNames","initialDeltaValues","hideLoadSpinner","bodyClass","submitButtonLabel","formAttributes","setElementAttributes","showSubmitSpinner","hideSubmitSpinner","handleSubmitResponse","handleSubmitError","clearErrors","notificationSettings","refreshComponentInstances","modelName","closeOnSubmit","isAxiosError","showErrors","entries","fieldErrors","addErrorsToField","clearErrorsFromField","isDirty","initialValue","visible","novalidate","Slideout","hasTabs","hasCpLink","hasSidebar","$actionBtn","$editLink","ltr","showSidebar","closeOnEsc","closeOnShadeClick","hideSidebarIfOverlapping","updateHeaderVisibility","forceShow","showHeader","editUrl","actionMenu","labelId","sidebar","notice","_closedSidebarStyles","offsetWidth","_openedSidebarStyles","trapFocusWithin","bubble","bubbleShortcut","errorSummary","showErrorSummary","errorCount","clearErrorSummary","$tabsWithErrors","tabDataId","tabUid","$tabErrorSummary","tabErrorCount","headingText","errorTabUid","setFocusOnErrorSummary","_this$tabManager","tabMenu","tabErrorIndicator","fieldTabAnchors","findTabAnchorForField","$fieldTabAnchor","$tabMenuItem","isOpen","CraftDisclosure","_HTMLElement","_classCallCheck","_callSuper","_inherits","getAttribute","addEventListener","expanded","removeEventListener","dataset","_wrapNativeSuper","HTMLElement","customElements","CraftElementLabel","labelLink","tooltip","desiredWidth","calculateWidth","innerText","hasOverflow","scrollWidth","createTooltip","contextLabel","appendChild","_this$tooltip","_this$$tabs$data","tag","visibility","whiteSpace","fontFamily","innerHTML","removeChild","CraftGlobalSidebar","expand","collapse","_item$querySelector","setCookie","destroyTooltips","createTooltips","CraftProxyScrollbar","_this$content","_this$scroller","scroller","ignoreScrollEvent","animation","proxy","syncScroll","display","overflowX","oldValue","newValue","removeAttribute","scrollLeft","_buildModal","_createSettings","_createSettings2","_createSettings3","_createSettings4","$elementIndexSourcesContainer","$sourcesContainer","$sourcesHeader","$sourcesHeading","$sourceSettingsContainer","$sourceSettingsHeader","$addSourceMenu","addSourceMenu","$footerBtnContainer","$loadingSpinner","sourceSort","baseSortOptions","availableTableAttributes","customFieldAttributes","conditionBuilderHtml","conditionBuilderJs","userGroups","setContainer","buildModal","$menuBtnContainer","addSource","$newHeadingBtn","$newCustomSourceBtn","defaultSortOptions","sourceData","scrollContainerToElement","focusLabelInput","uuid","tableAttributes","useMobileStyles","$labelInput","getSourceName","focusIsInside","currentLayer","isNew","$itemLabel","$itemInput","Heading","updateItemLabel","Source","CustomSource","save","disabledSourceKeys","reload","appendIndexSourceItem","$sourceItem","$lastSourceItem","isHeading","$lastTopLevelSource","BaseSource","$settingsContainer","isNative","isSelected","deselect","createSettings","getIndexSourceItem","$sortDirectionInput","createLightswitchField","createSortField","createTableAttributesField","$inputContainer","handleSortAttributeChange","useDefaultDir","createCheckboxSelectField","instructions","_toConsumableArray","$labelField","defaultId","swapPlaceholders","formatInputId","showAllOption","handleLabelInputChange","table","$rows","getHelper","caboose","Y_AXIS","$helperRow","helperClass","$cells","$helperCells","DeleteUserModal","userId","$deleteActionRadios","$deleteSubmitBtn","userSelect","_deleting","idParam","getCsrfInput","$contentSummary","contentSummary","_submitBtnLabel","validateDeleteInputs","withContent","validates","onSubmit","DynamicGenerator","EditableTable","baseName","biggestId","$addRowBtn","$tableParent","$statusMessage","rowCount","hasMaxRows","hasMinRows","radioCheckboxes","copyDraggeeInputValuesToHelper","updateAllRows","rowIdPrefix","initialize","initializeIfVisible","minRows","updateAddRowButton","lazyInitRows","$tr","$textarea","createRowObj","canAddRow","staticRows","updateRow","canDeleteRow","updateDeleteRowButton","rowId","updateStatusMessage","allowDelete","deleteRow","onDeleteRow","allowAdd","maxRows","createRow","defaultValues","onAddRow","allowReorder","getRowObj","Row","focusOnPrevRow","tdIndex","blurTd","prevRow","$prevTr","$tds","focusOnNextRow","nextRow","$nextTr","importData","lines","textualColTypes","colId","$cell","col","scope","code","createCheckbox","small","createDateInput","createLightswitch","default","createTimeInput","createTextInput","rows","niceTexts","tds","$textareas","tr","td","textareasByColId","NiceText","onHeightChange","onTextareaHeightChange","radioMode","applyToggleCheckbox","autopopulate","HandleGenerator","allowNonAlphaStart","$inputs","onTextareaFocus","onRadioCheckboxChange","checkbox","checkboxColId","neg","checkboxCol","colum","ignoreNextTextareaFocus","charCode","handlePaste","clipboardData","getData","validateValue","safeValue","filterNumberInputVal","tallestTextareaHeight","tdHeight","numericKeyCodes","_afterActivate","_beforeActivate","ElementActionTrigger","maxLevels","newChildUrl","triggerEnabled","batch","bulk","activate","updateTrigger","validateSelection","enableTrigger","disableTrigger","requireId","_call","handleTriggerActivation","globalElementIndex","_openPreview","ElementEditor","isFullPage","$activityContainer","$expandSiteStatusesBtn","$statusIcon","$previewBtn","metaModal","$nameTextInput","$saveMetaBtn","$siteStatusPane","$globalLightswitch","$siteLightswitches","$additionalSiteField","siteIds","newSiteIds","enableAutosave","lastSerializedValue","formObserver","submittingForm","draftElementIds","failed","httpStatus","httpError","openingPreview","preview","activatedPreviewToken","previewTokenQueue","previewLinks","hiddenTipsStorageKey","systemUid","activityTooltips","tipDismissBtn","_this$settings$previe","_createQueue","autosaveDrafts","previewTargets","_$actionBtn$data","$viewAction","getTokenizedPreviewUrl","siteStatuses","$spinnerContainer","canEditMultipleSites","enablePreview","$previewBtnContainer","createPreviewLink","createShareMenu","canSave","edition","Pro","_checkActivity","serializeForm","isProvisionalDraft","initForProvisionalDraft","isUnpublishedDraft","initForDraft","canSaveCanonical","saveDraft","listenForChanges","showStatusHud","handleDismissibleTips","messageReceiver","canonicalId","URL","searchParams","delete","listeningForChanges","pauseLevel","_this$formObserver$_p","_this$formObserver","_pauseLevel","FormObserver","checkForm","stopListeningForChanges","_this$formObserver2","_this$formObserver3","$discardButton","initialHeight","$notice","heightDiff","hashedCpEditUrl","provisional","createEditMetaAction","alt","expandSiteStatuses","$enabledForSiteField","revisionId","_getOtherSupportedSites","_createSiteStatusField","$globalField","_showField","siteStatusValues","hasEnabled","hasDisabled","originalEnabledValue","originalSerializedStatus","encodeURIComponent","enabledForSite","_updateGlobalStatus","serializedStatuses","additionalSites","_createAddlSiteField","_updateSiteStatuses","_removeField","allEnabled","allDisabled","turnOn","turnOff","turnIndeterminate","enabled","fieldClass","$lightswitch","selectLabelId","$addlSiteSelectLabel","$addlSiteSelectContainer","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","labelledBy","$addlSiteSelect","addlSiteInfo","enabledByDefault","_saveFailMessage","_saveSuccessMessage","spinners","statusIcons","statusMessage","destructiveGroup","getFirstDestructiveGroup","addGroup","targetUrl","targetLabel","activatePreviewToken","updatePreviewLinks","updatePreviewLinkHref","isLive","getPreviewTokenParams","previewToken","getPreviewToken","randoParam","asPromise","siteToken","previewUrl","tokenParam","createTokenParams","getPreview","$statusIcons","_this14$formObserver","_this14$formObserver2","ensureIsDraftOrRevision","onlyIfChanged","setFormValue","canCreateDrafts","markDeltaNameAsModified","names","removeActionParams","isPreviewActive","$editor","actionName","redirectName","RegExp","escapeRegex","_saveDraftInternal","updateFieldLayout","modifiedDeltaNames","findModifiedDeltaNames","prepareData","$modifiedFields","escapeSelector","param","visibleLayoutElements","selectedTabId","_saveHeaders","_afterSaveDraft","_afterUpdateFieldLayout","createdProvisionalDraft","docTitle","siteSettings","draftName","creator","timestamp","updatePreviewTargets","checkMetaValues","modifiedAttributes","updatedTimestamp","canonicalUpdatedTimestamp","afterUpdate","pageId","_showFailStatus","setStatusMessage","modifiedFieldNames","preparedData","deltaName","decodeURIComponent","extraData","deltaCallback","asArray","getDraftElementId","newTarget","$previewLink","noChanges","newSelectedTabId","$allTabContainers","changedElements","tabInfo","$oldElement","_$oldElement","$placeholder","$unusedTabContainers","$newSelectedTab","missingElements","showMetaModal","createMetaModal","$modal","$hudBody","$nameField","$nameInputContainer","saveMeta","shakeMetaModal","shake","_this26","_this27","stopImmediatePropagation","autosave","customTrigger","_this28","hideTip","getHiddenTipsUids","setHiddenTipsUids","uids","targetElement","$targetParent","layoutElementUid","Storage","hiddenTips","_this29","dontExtendSession","focusedTooltip","activity","userName","$thumb","userThumb","Tooltip","_Object$keys","elementUpdated","canonicalUpdated","$reloadBtn","ElementEditorSlideout","editor","saveParams","onSaveElement","validators","expandData","ElementFieldSettings","allowMultipleSources","$maintainHierarchyField","$maintainHierarchyButton","$sourcesField","$sourceSelect","$branchLimitField","$maxRelationsField","$minRelationsField","$viewModeField","maintainHierarchyFieldId","branchLimitFieldId","minRelationsFieldId","maxRelationsFieldId","viewModeFieldId","updateLimitFields","updateMaintainHierarchyField","showField","$checkedInputs","ElementTableSorter","tableView","_helperMargin","_$firstRowCells","_$titleHelperCell","_titleHelperCellOuterWidth","_ancestors","_updateAncestorsFrame","_draggeeLevel","_draggeeLevelDelta","draggingLastElements","_loadingDraggeeLevelDelta","_targetLevel","_targetLevelBounds","_positionChanged","singleHelper","helperSpacingY","findDraggee","_level","$nextRow","nextRowLevel","nextRowLevelDelta","_getAjaxBaseData","dragging","delta","drag","$outerContainer","$innerContainer","$helperCell","$firstRowCell","canInsertBefore","_getLevelBounds","canInsertAfter","onDragStart","_getAncestors","_setTargetLevelBounds","onDrag","_updateIndent","_updateAncestorsBeforeRepaint","onDragStop","levelDiff","newLevel","padding","_getLevelIndent","$structureTextAlternative","altText","structureId","$spinnerRow","$prevRow","prevRowLevel","prevId","_createSpinnerRowAfter","onPositionChange","_expandElement","onReturnHelpersToDraggees","newDraggeeIndexes","oldDraggeeIndexes","$postDraggeeItems","nextAll","_minLevel","_maxLevel","forcePositionChange","_mouseDist","realMouseX","mousedownX","_indentationDist","LEVEL_INDENT","_targetLevelMouseDiff","_magnetImpact","MAX_GIVE","_closestLevelMagnetIndent","level","targetLevel","_$prevRow","_updateAncestors","_$ancestor","_newAncestors","ancestorTitle","HELPER_MARGIN","workers","Worker","$thumbs","addToQueue","invisibleThumbs","thumb","active","loadNext","retryAll","_Craft$ElementThumbLo","loader","_interval","_timeout","loadNextIfRemoved","deactivate","_clearInterval","_clearTimeout","$img","sizes","srcset","picturefill","ElevatedSessionForm","inputs","form","getInputPostVal","handleFormSubmit","elevatedSessionManager","fetchingTimeout","inputsChanged","$currentInput","requireElevatedSession","EntryIndex","publishableSections","$newEntryBtnGroup","$newEntryBtn","includedSections","section","defaultSectionHandle","sectionHandle","entryTypeHandle","selectedSection","_createEntry","sectionId","entry","FieldLayoutDesigner","$configInput","$newTabBtn","$libraryContainer","$selectedLibrary","$fieldLibrary","$uiLibrary","$uiLibraryElements","$fieldSearch","$clearFieldSearchBtn","$fieldGroups","$fields","$createFieldBtn","tabGrid","elementDrag","_config","_$selectedFields","parse","_fieldHandles","$workspace","$fieldSearchContainer","Grid","itemSelector","minColWidth","fillMode","snapToGrid","initTab","ElementDrag","initLibraryElements","customizableTabs","tabDrag","TabDrag","customizableUi","$libraryPicker","updateFieldSearchResults","refreshSelectedFields","$matches","$group","Tab","removeFieldByHandle","addTab","$lastTab","updatePositionInConfig","config","updateConfig","refreshLibraryFields","$fieldGroup","hasHandle","$selector","_$fields$eq$data","selectorHtml","designer","$libraryElement","cloneLibraryElementForSelection","initElement","refreshCols","createSlideout","js","_callee3$","settingsHtml","eval","destroyed","createMenu","$tabContent","onActivate","moveUl","moveLeftBtn","moveLeft","moveRightBtn","moveRight","layoutConfig","settingsNamespace","applySettings","labelHtml","Element","designerConfig","newIndex","tabConfig","oldIndex","isMandatory","isMultiInstance","isField","requirable","thumbable","previewable","hasCustomWidth","hasSettings","defaultHandle","initUi","SlidePicker","valueLabel","pct","makeRequiredBtn","dropRequiredBtn","makeThumbnailBtn","dropThumbnailBtn","showInCardsBtn","omitFromCardsBtn","showFieldEditor","actionUl","iconColor","makeRequired","dropRequired","makeThumbnail","dropThumbnail","showInCards","omitFromCards","moveGroup","moveUpBtn","moveUp","moveDownBtn","moveDown","required","providesThumbs","includeInCards","$fieldsContainer","applyConfig","multiInstanceTypesOnly","$oldSelector","$newSelector","_$fields$eq$data2","_callee11","_context11","_callee12","_context12","_callee13","_context13","_callee14","_context14","_callee15","withSettings","_e$response3","_e$response4","$oldContainer","$newContainer","_context15","_callee16","_context16","elementConfig","BaseDrag","Drag","$insertion","showingInsertion","$caboose","findItems","createInsertion","createCaboose","removeCaboose","swapDraggeeWithInsertion","swapInsertionWithDraggee","setMidpoints","_closestItem","_closestItemMouseDiff","_$item","_midpoint","_mouseDiff","getDist","checkForNewClosestItem","draggeeDisplay","_showDraggee","draggingLibraryElement","draggingField","draggingMultiInstanceElement","originalTab","isDraggeeMandatory","isHoveringOverTab","hitTest","$fieldContainers","FieldToggle","targetPrefix","reverseTargetSelector","_$reverseTarget","getType","normalizeTargetSelector","findTargets","onToggleChange","getToggleVal","boolean","postVal","_show","_callback","_recentKeypress","_formData","_mutationObserver","_selectizeInputs","_serialize","_checkFormAfterDelay","MutationObserver","records","record","_formChanged","addedNodes","node","_initSelectizeInputs","attributeName","_initSelectizeInput","childList","subtree","characterData","attributeFilter","hasAttribute","_hasNamedNodes","removedNodes","parentNode","nodes","disconnect","totalCols","colGutterDrop","colPctWidth","possibleItemColspans","possibleItemPositionsByColspan","itemPositions","itemColspansByPosition","layouts","layout","itemHeights","leftPadding","_refreshingCols","_refreshColsAfterRefresh","_forceRefreshColsAfterRefresh","handleContainerHeightProxy","setItems","oldHeight","scrollHeight","cols","maxCols","gutter","itemIndex","tallestItemHeight","colIndex","itemHeight","remainder","itemHeightsByColspan","positionRight","positionLeft","minColspan","maxColspan","colspan","getItemWidthCss","minPosition","maxPosition","colHeights","createLayouts","layoutTotalCols","highestTotalCols","layoutHeights","shortestHeight","shortestLayouts","emptySpaces","emptySpace","colspans","getItemLeftPosCss","positions","isSimpleLayout","positionItems","completeRefreshCols","onRefreshCols","getItemWidth","getItemWidthInPx","getItemLeftPosInPx","prevPositions","prevColspans","prevColHeights","prevEmptySpace","LayoutGenerator","endingCol","affectedColHeights","onItemResize","newHeight","colClass","tallestColHeightsByPosition","colHeightsForPosition","tallestColHeight","asciiString","words","filterArray","handleCasing","toUpperCase","IconPicker","$preview","$chooseBtn","$removeBtn","$searchInput","$iconListContainer","$iconList","defaultListHtml","removeIcon","updateIcons","selectIcon","listHtml","loadIcons","ImageUpload","containerSelector","initImageUpload","uploadAction","postParameters","fileInputSelector","uploadParamName","initButtons","uploadButtonSelector","deleteButtonSelector","refreshImage","onAfterRefreshImage","_response$jqXHR","_ref2$errors","InfoIcon","$liveRegion","previousSibling","nodeType","Node","TEXT_NODE","nodeValue","showHud","closeOtherHUDs","LightSwitch","indeterminate","dragger","dragStartMargin","outerContainer","X_AXIS","_onDragStart","_onDrag","_onDragStop","$wrapper","muteEvent","changed","_onSettle","_getOffMargin","indeterminateValue","_onMouseDown","_onMouseUp","_getMargin","mouseDistX","selectedOptionIndex","focusClass","LivePreview","$extraFields","$dragHandle","$previewContainer","$iframeContainer","$iframe","$fieldPlaceholder","basePostData","fields","lastPostData","updateIframeInterval","checkAgain","dragStartEditorWidth","_slideInOnIframeLoad","_scrollX","_scrollY","_editorWidth","_editorWidthInPx","baseSiteUrl","protocol","previewParams","extraFields","defaultEditorWidth","moveFieldsBack","editorWidthInPx","inPx","minEditorWidthInPx","exit","enter","$editorHeader","getIframeWidth","$clone","_getClone","updateIframe","slideIn","createToken","previewAction","updateWidths","animateLeft","animateRight","$newClone","field","contentWindow","ajax","xhrFields","withCredentials","crossDomain","handleSuccess","handleError","forceUpdateIframe","write","copyInputValues","getActive","_createElement","NestedElementManager","initCards","initElementIndex","createButtonLabel","updateCreateBtn","createAttributes","createMenuId","buttonHtml","ownerId","ownerIdParam","showInGrid","deinitCards","_onSortChange","markAsDirty","baseInputName","getBaseActionData","ownerElementType","ownerSiteId","allIds","getElementIds","t1","t2","getBaseElementOffset","t3","maxElements","getTotalElements","minElements","addElementCard","ul","deleteLabel","deleteConfirmationMessage","deleteElement","_e$response$data$mess","_e$response5","fieldHandle","PasswordInput","$passwordWrapper","$textInput","$showPasswordToggle","showingPassword","passwordInput","initInputFocusEvents","hidePassword","setCurrentInput","updateToggleLabel","showPassword","autocapitalize","togglePassword","onToggleInput","onInputChange","onClick","setSelectionRange","selectionStart","selectionEnd","$previewWrapper","$previewSkipLink","$bumperLink","$notifier","$previewHeader","$targetBtn","$targetMenu","$deviceTypeContainer","$orientationBtn","$deviceMask","$devicePreviewContainer","iframeLoaded","$tempInput","activeTarget","currentDeviceType","deviceOrientation","deviceWidth","deviceHeight","deviceMaskDimensions","phone","tablet","iframeHeight","_updateIframeProxy","previewSkipLinkText","$modalLabel","switchTarget","_buildDeviceTypeFieldset","$buttonContainer","_getDeviceTypeTranslation","translation","_getDeviceOrientationTranslation","deviceType","deviceBtnGroup","switchDeviceType","_activeTarget","_autoRefresh","previewTarget","hideModalBackgroundLayers","resetModalBackgroundLayerVisibility","_devicePreviewIsActive","updateDevicePreview","_useIframeResizer","previewIframeResizerOptions","resetScroll","sameHost","isSameHost","frameborder","src","iFrameResize","checkOrigin","scrolling","onInit","iframe","_updateNotifier","newDeviceType","switchOrientation","hZoom","wZoom","previewHeight","previewWidth","maskHeight","maskWidth","translate","rotationDeg","marginTop","marginLeft","$triggerElement","$bumperButtonStart","$bumperButtonEnd","requestId","jQuery","defaultSettings","_onHide","instance","loadAsset","focusItem","_addBumperButtons","_addModalName","destruct","desiredHeight","containerHeight","containerWidth","_resizeContainer","previewHtml","resizePreviewImage","maxHeight","imageFocalPoint","renderFocal","$innerProgressBar","$progressBarStatus","_itemCount","_processedItemCount","_displaySteps","displaySteps","setProcessedItemCount","count","incrementItemCount","percentage","$modalContainerDiv","$prompt","$promptApplyToRemainingContainer","$promptApplyToRemainingCheckbox","$promptApplyToRemainingLabel","$pomptChoices","_prompts","_promptBatchCallback","_promptBatchReturnData","_promptBatchNum","_showNextPromptInBatch","remainingInBatch","_showPrompt","_handleBatchPromptSelection","applyToRemaining","choiceData","itemsToGo","_promptCallback","$promptMessage","$promptChoices","$promptButtons","$radioButton","_selectPromptChoice","number","fadeOut","_cancelPrompt","running","paused","pausedForVisibility","isPaused","_resume","job","_add","qResolve","qReject","_exec","totalSteps","HOME_KEY","END_KEY","_min","_max","Number","isInteger","prevAll","triggerEvent","$activeButton","startPositionX","graduationsMin","graduationsMax","slideMin","slideMax","$overlay","$cursor","$graduations","$graduationsUl","_handleResize","_handleTapStart","_handleTapMove","_handleTapEnd","_handleKeypress","graduationsCalculatedWidth","valueToPosition","current","PAGE_UP_KEY","PAGE_DOWN_KEY","touch","startLeft","curX","positionToValue","scaleMin","scaleMax","addModalAttributes","autoOpen","setTriggerElement","_cancelTransitionListeners","activePreview","updateWidthsForPreviewPane","dragHandler","addPanel","removePanel","filterObject","openPanels","panel","updateStyles","totalPanels","SlugGenerator","limitAutoSlugsToAscii","charMap","allowUppercaseInSlug","XRegExp","matchChain","slugWordSeparator","Structure","structureDrag","$parents","initToggle","StructureDrag","initNewChildMenus","viewStateKey","$addBtns","onNewChildMenuClick","showMenu","getIndent","baseIndent","nestedIndent","addElement","$parentUl","_removeUl","structure","draggeeLevel","$helperLi","$targets","draggeeHeight","$level","cancelDrag","$lis","$closestTarget","closestTargetPos","closestTargetYDiff","closestTargetOffset","closestTargetHeight","targetOffset","targetHeight","targetYMidpoint","targetYDiff","$closestTargetLi","closestTargetLevel","$nextTargetLi","nextTargetLevel","hoveringBetweenRows","draggeeX","targetItemMouseDiffX","$parentLis","$closestParentLi","closestParentLiXDiff","closestParentLevel","$parentLi","parentLiX","parentLiXDiff","parentLevel","onMouseUp","$draggeeParent","moved","$closestSiblings","setLevel","indent","$childLis","_saveChanges","$tableCaption","$selectedSortHeader","$editBtn","tableSort","_totalVisiblePostStructureTableDraggee","_morePendingPostStructureTableDraggee","_broadcastListener","initialSerializedValue","initTableHeaders","createScrollbar","_collapseElement","initForInlineEditing","elementHtml","attributeHtml","serializeInputs","saveChanges","getDeltaInputChanges","haveInputsChanged","selectedSortAttr","selectedSortDir","$tableHeaders","sortValue","makeColumnSortable","sorted","headerHtml","$headerButton","_handleSelectedSortHeaderClick","_handleUnselectedSortHeaderClick","_isStructureTableDraggingLastElements","positionedAfter","$nextNextRow","descendantOf","$nextRows","newSortDir","_handleSortHeaderClick","_updateTableAttributes","stickyScrollbar","$scrollbar","$firstTab","makeTabFocusable","scrollToTab","updateMenuBtn","getMenuOptions","focusTab","_getTab","$slideoutContainer","elemScrollOffset","targetScrollLeft","tabWidth","ulWidth","TagSelectInput","searchMenu","$addTagInput","_ignoreBlur","searchForTags","selectTag","$hoverOption","$nextOption","focusOption","$prevOption","killSearchMenu","excludeIds","tagGroupId","tags","exclude","exactMatch","Menu","attachToElement","targetSiteId","$chipContent","$titleContainer","$labelLinkContainer","_$trigger","_message","$p","hoverTimeout","triggerHit","shownViaHover","tagName","withShade","bodyContents","showContainer","hideContainer","autocomplete","inputmode","maxlength","autofocus","getAutofocusValue","getDisabledValue","readonly","showCharsLeft","createPasswordInput","createPasswordField","createCopyTextInput","buttonId","execCommand","createCopyTextBtn","copyValue","createCopyTextField","createCopyTextPrompt","createTextarea","createTextareaField","$select","$optgroup","selected","reverseToggle","createCheckboxField","allChecked","allValue","allLabel","aPos","bPos","ensureEndsWith","CheckboxSelect","dragSort","$colorPreviewContainer","ltrim","createColorField","getMonth","toISOString","formatDate","timezone","datetimeinput","datepicker","defaultDate","datepickerOptions","hasOuterContainer","datetime","createDateField","createDateRangePicker","today","getFullYear","getDate","startDate","endDate","$allOption","firstDayOffset","getDay","firstDay","getTime","$flex","$startDate","$endDate","$dateInputs","dpDiv","setPositionRelativeToAnchor","startDateVal","endDateVal","startTime","endTime","foundOption","date","btnClasses","getTimezoneOffset","timepicker","timepickerOptions","getHours","getMinutes","getSeconds","createTimeField","tip","warning","$warning","createErrorList","fieldErrorsId","addErrorsToList","replaceAll","$errors","errorSummaryContainer","anchorSummaryErrorToField","findErrorsContainerByErrorKey","fieldErrorKey","errorsElement","$fieldErrorsContainer","$tabAnchor","$collapsedParents","fieldTabDivs","tabDiv","tabAnchor","Uploader","_totalFileCounter","_validFileCounter","_onFileAdd","fileupload","handler","onFileAdd","validateExtension","process","pass","fileExtension","originalFiles","autoUpload","sequentialUploads","replaceFileInput","UriFormatGenerator","uriFormat","suffix","UserIndex","updateUrl","defaultSourceSlug","slug","__esModule","module","locals","exports","listToStyles","list","styles","newStyles","part","media","sourceMap","parts","hasDocument","DEBUG","stylesInDom","head","getElementsByTagName","singletonElement","singletonCounter","isProduction","ssrIdKey","isOldIE","navigator","userAgent","addStylesClient","_isProduction","_options","addStylesToDom","newList","mayRemove","domStyle","refs","addStyle","createStyleElement","styleElement","styleIndex","applyToSingletonTag","applyToTag","newObj","textStore","replaceText","replacement","Boolean","styleSheet","cssText","cssNode","createTextNode","childNodes","ssrId","btoa","unescape","firstChild","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","valueof","epsilon","translateX","translateY","center","bandwidth","entering","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","ticks","domain","spacing","range","range0","range1","copy","tick","tickExit","tickEnter","line","insert","transition","isFinite","tickSize","axisRight","axisBottom","axisLeft","none","matches","childMatcher","childFirst","firstElementChild","EnterNode","datum","ownerDocument","namespaceURI","_parent","__data__","bindIndex","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","Map","keyValues","arraylike","ascending","NaN","child","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","attrRemoveNS","fullname","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","defaultView","styleRemove","removeProperty","styleConstant","priority","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","string","ClassList","_node","_names","classedAdd","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textConstant","textFunction","htmlRemove","htmlConstant","htmlFunction","raise","nextSibling","lower","creatorInherit","createElementNS","creatorFixed","constantNull","selection_cloneShallow","cloneNode","selection_cloneDeep","onRemove","typename","__on","listener","onAdd","contextListener","createEvent","initEvent","bubbles","cancelable","dispatchConstant","dispatchFunction","root","Selection","_groups","_parents","subgroups","subnode","subgroup","arrayAll","selectorAll","selectChild","childFind","selectChildren","childrenFilter","matcher","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","getAttributeNS","property","classed","before","deep","typenames","parseTypenames","dispatch","Dispatch","types","T","that","taskHead","taskTail","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","setFrame","clearNow","Timer","_time","timer","restart","wake","timerFlush","Infinity","sleep","nap","poke","elapsed","emptyOn","emptyTween","CREATED","STARTED","timing","schedules","__transition","tween","start","ease","schedule","svgNode","rotate","skewX","atan2","atan","interpolateTransform","pxComma","pxParen","degParen","q","xa","ya","xb","yb","interpolateTransformCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","factory","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","exec","rgbn","Rgb","rgba","hsla","rgbConvert","rgb_formatHex","hex","rgb_formatRgb","clampa","clampi","Hsl","hslConvert","clamph","clampt","hsl2rgb","m2","basis","v0","v1","v2","v3","channels","displayable","formatHex8","formatHsl","clamp","nogamma","linear","rgbGamma","exponential","gamma","end","rgbSpline","spline","colors","reA","reB","am","bm","bs","bi","zero","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","Transition","_name","newId","selection_prototype","inherit","id0","id1","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","easeVarying","interrupt","defaultTiming","formatDecimalParts","toExponential","coefficient","prefixExponent","re","formatSpecifier","specifier","FormatSpecifier","align","sign","symbol","comma","precision","exponent","toLocaleString","toPrecision","formatRounded","formatPrefix","prefixes","locale","grouping","thousands","currencyPrefix","currency","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","newFormat","formatTypes","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","charCodeAt","e10","e5","e2","tickSpec","power","log10","factor","i2","inc","tickIncrement","tickStep","descending","bisector","compare1","compare2","lo","hi","mid","ascendingBisect","bisectRight","genericArray","nb","na","setTime","ArrayBuffer","isView","DataView","valueOf","unit","normalize","bimap","d0","d1","r0","r1","polymap","bisect","unknown","continuous","untransform","piecewise","output","rescale","invert","rangeRound","transformer","initRange","linearish","precisionPrefix","precisionRound","precisionFixed","nice","prestep","maxIter","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationYear","timeInterval","floori","offseti","millisecond","second","getMilliseconds","getUTCSeconds","timeMinute","utcMinute","setUTCSeconds","getUTCMinutes","timeHour","utcHour","setUTCMinutes","getUTCHours","timeDay","setHours","setDate","utcDay","setUTCHours","setUTCDate","getUTCDate","unixDay","timeWeekday","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","timeMonth","setMonth","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","timeYear","setFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","pad","pads","newParse","Z","Q","V","W","U","X","utcFormat","utcParse","timeFormat","timeParse","numberRe","percentRe","requoteRe","requote","dISO","z","getUTCMilliseconds","dow","UTCdISO","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","x0","x1","Linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","lineTo","moveTo","pi","tau","tauEpsilon","strings","digits","_x0","_y0","_x1","_y1","_append","appendRound","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","a0","a1","ccw","dx","dy","cw","da","rect","withPath","shape","RangeError","defined","curve","buffer","defined0","applyX","applyY","invertX","invertY","rescaleX","rescaleY","_appendBodyHtml","_appendHeadHtml","_appendHtml2","rxhtmlTag","htmlPrefilter","navHeight","isIterable","NodeList","fromEntries","grouped","thisKey","category","translations","formatMessage","pattern","tokens","_tokenizePattern","_parseToken","pos","depth","chars","formatNumber","plural","selectorChars","dateFormat","d3","d3FormatLocaleDefinition","formatter","shortcutText","clientOs","getText","encodeUriComponent","differences","chr","rtrim","anchor","anchorPos","URLSearchParams","qsPos","isEmptyObject","pathParam","pathMatch","omitScriptNameInUrls","usePathInfo","scriptName","trimEnd","getSiteUrl","hash","origin","pathname","qs","pageTrigger","pageParam","postActionRequest","contentType","_actionHeaders","textStatus","errorThrown","readyState","send","Set","registeredAssetBundles","registeredJsFiles","_getApiHeaders","apiHeaders","baseURL","baseApiUrl","apiParams","_apiHeaders","processCraftHeaders","httpProxy","apiResponse","_processApiHeaders","_loadingApiHeaders","_apiHeaderWaitlist","_rejectApiRequests","clearCachedApiHeaders","XMLHttpRequest","setRequestHeader","responseType","onload","disposition","getResponseHeader","blob","Blob","createObjectURL","stringToArray","oldData","newData","forceModifiedDeltaNames","_this$findModifiedDel2","groupedNewParams","__root__","mostSpecific","groupedOldParams","_groupParamsByDeltaNames","withRoot","initialValues","encodeURIComponentExceptEqualChar","paramLoop","_iterator6","serializeParam","subName","parentElem","chunks","obj1","obj2","sortObjectKeys","getObjectKeys","escapeChars","escaped","trimStart","substr","ensureStartsWith","endsWith","filtered","removeFromArray","getLast","uppercaseFirst","lowercaseFirst","parseUrl","scheme","host","port","query","requestUrlInfo","urlInfo","showSeconds","secondsInWeek","weeks","minutes","hours","timeComponents","char","asciiStr","asciiCharMap","crypto","randomUUID","getRandomValues","Uint8Array","_existingCss","_existingJs","_appendHtml","parseHTML","resourceBaseUrl","appendFootHtml","infoicon","checkboxselect","fieldtoggle","lightswitch","nicetext","formsubmit","_elementIndexClasses","_elementSelectorModalClasses","_elementEditorClasses","_uploaderClasses","_authFormHandlers","registerUploaderClass","registerAuthFormHandler","createAuthFormHandler","showError","localStorage","removeItem","getCookie","cookie","defaultCookieOptions","maxAge","expires","toUTCString","secure","removeCookie","hasThumb","otherSize","$oldImg","$newImg","refreshElementInstances","elementsBySite","_step7","$replacement","_iterator7","$actions","$oldStatus","$newStatus","$chips","_step8","$chip","_iterator8","chip","safeActions","destructiveActions","_submitFormInternal","_options$namespace","filterInputVal","regex","newVal","dataAttributes","subValue","_step9","_iterator9","visibilityState","BroadcastChannel","channelName","appId","bufferToBase64URLString","fromCharCode","base64URLStringToBuffer","base64URLString","base64","padLength","padded","padEnd","binary","atob","browserSupportsWebAuthn","PublicKeyCredential","toPublicKeyCredentialDescriptor","descriptor","transports","easing","$elem","settingName","settingValue","thisSettings","$anchor","menuAnchor","checkValue","hasValue","charsLeftHtml","charsLeft","charts","DataTable","cellIndex","parseTime","Tip","setContent","setPosition","BaseChart","$chart","chartBaseClass","dataTable","timeFormatLocale","globalSettings","d3Formats","formatLocaleDefinition","timeFormatLocaleDefinition","d3TimeFormatLocaleDefinition","resize","baseSettings","draw","chartClass","onAfterDrawTicks","tickKey","$tickText","numberFormat","percentFormat","currencyFormat","shortDateFormats","Area","drawingArea","getChartMargin","drawTicks","drawAxes","drawChart","drawTipTriggers","xAxis","getX","getXFormatter","yAxis","getY","getYFormatter","getYTickValues","showAxis","gridlines","xLineAxis","yLineAxis","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","plots","tips","chartMargin","xAxisTickInterval","getTotalLength","tipTriggerWidth","dataValue","$xValue","$yValue","yTicksMaxWidth","computedTickWidth","xDomainMin","xDomainMax","xDomain","yDomain","getYMaxValue","utils","getTimeFormatter","getNumberFormatter","maxValue","getDuration","secondsNum","chartSettings","dataScale","WebAuthnError","cause","super","webauthnAbortService","controller","createNewAbortSignal","abortError","abort","newController","AbortController","signal","attachments","toAuthenticatorAttachment","attachment","startAuthentication","requestOptionsJSON","useBrowserAutofill","allowCredentials","publicKey","challenge","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","mediation","credential","credentials","AbortSignal","effectiveDomain","rpId","identifyAuthenticationError","rawId","userHandle","TextDecoder","decode","bufferToUTF8String","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","platformAuthenticatorIsAvailable","isUserVerifyingPlatformAuthenticatorAvailable","ElevatedSessionManager","minSafeElevatedSessionTimeout","forElevatedSession","$usernameInput","$rememberMeCheckbox","$forgotPasswordLink","submitBtn","$altMethodContainer","$passkeyBtn","resetPasswordForm","validateOnInput","changeButtonText","$newPasswordInput","onResize","loginWithPasskey","validate","usernameValidates","validateUsernameOrEmail","passwordLength","minPasswordLength","maxPasswordLength","onInput","loginName","password","rememberMe","authMethod","show2faForm","returnUrl","failureEvent","showResetPasswordForm","ResetPasswordForm","$authForm","$hr","$altContainer","authForm","otherMethods","log","optionsResponse","authResponse","loginResponse","useEmailAsUsername","loginForm","$backBtn","MessageSentModal","showLoginForm","createCoords","oppositeSideMap","oppositeAlignmentMap","placement","getAxisLength","getAlignmentAxis","alignment","getOppositePlacement","side","expandPaddingObject","computeCoordsFromPlacement","rtl","reference","floating","sideAxis","alignmentAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","detectOverflow","_await$platform$isEle","platform","rects","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","isElement","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","_middlewareData$offse","_middlewareData$arrow","middlewareData","diffCoords","isRTL","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","convertValueToCoords","arrow","alignmentOffset","getNodeName","isNode","getWindow","_node$ownerDocument","isHTMLElement","isShadowRoot","ShadowRoot","isOverflowElement","isTableElement","isContainingBlock","webkit","isWebKit","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","getNodeScroll","pageXOffset","pageYOffset","getParentNode","assignedSlot","getNearestOverflowAncestor","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","visualViewport","frameElement","getCssDimensions","hasOffset","offsetHeight","shouldFallback","unwrapElement","domElement","noOffsets","getVisualOffsets","offsetLeft","offsetTop","includeScale","isFixedStrategy","clientRect","visualOffsets","isFixed","floatingOffsetParent","shouldAddVisualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","topLayerSelectors","isTopLayer","getWindowScrollBarX","getClientRectFromClippingAncestor","clippingAncestor","visualViewportBased","getViewportRect","scroll","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","getTrueOffsetParent","polyfill","currentNode","getContainingBlock","topLayer","clippingAncestors","cache","cachedResult","el","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","_c","firstClippingAncestor","clippingRect","accRect","getElementRects","getOffsetParentFn","getDimensionsFn","getDimensions","getClientRects","checkMainAxis","checkCrossAxis","limiter","detectOverflowOptions","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","centerOffset","CraftTooltip","arrowElement","delayTimeout","renderInner","renderArrow","listeners","_this$parentElement","parentElement","handleKeyUp","_this2$parentElement","inner","getStaticSide","pointerEvents","getInitialTransform","mergedOptions","platformWithCache","middleware","validMiddleware","statefulPlacement","resetCount","nextX","nextY","initialPlacement","computePosition","_middlewareData$flip","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","isBasePlacement","oppositePlacement","getExpandedPlacements","isStart","lr","rl","bt","getSideList","getOppositeAxisPlacements","placements","overflows","overflowsData","flip","sides","mainAlignmentSide","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$map$so","acc","arrowX","arrowY"],"sourceRoot":""}
\ No newline at end of file
diff --git a/src/web/assets/cp/dist/css/cp.css b/src/web/assets/cp/dist/css/cp.css
index 41e1ccaea2d..74d31cfdb1d 100644
--- a/src/web/assets/cp/dist/css/cp.css
+++ b/src/web/assets/cp/dist/css/cp.css
@@ -1,2 +1,2 @@
-:root{--white:#fff;--black:#000;--gray-050-hsl:212,60%,97%;--gray-100-hsl:212,50%,93%;--gray-150-hsl:212,40%,89%;--gray-200-hsl:212,30%,85%;--gray-300-hsl:211,13%,65%;--gray-350-hsl:211,11%,59%;--gray-400-hsl:210,10%,53%;--gray-500-hsl:211,12%,43%;--gray-550-hsl:210,13%,40%;--gray-600-hsl:209,14%,37%;--gray-700-hsl:209,18%,30%;--gray-800-hsl:209,20%,25%;--gray-900-hsl:210,24%,16%;--gray-1000-hsl:210,24%,10%;--gray-050:hsl(var(--gray-050-hsl));--gray-100:hsl(var(--gray-100-hsl));--gray-150:hsl(var(--gray-150-hsl));--gray-200:hsl(var(--gray-200-hsl));--gray-300:hsl(var(--gray-300-hsl));--gray-350:hsl(var(--gray-350-hsl));--gray-400:hsl(var(--gray-400-hsl));--gray-500:hsl(var(--gray-500-hsl));--gray-550:hsl(var(--gray-550-hsl));--gray-600:hsl(var(--gray-600-hsl));--gray-700:hsl(var(--gray-700-hsl));--gray-800:hsl(var(--gray-800-hsl));--gray-900:hsl(var(--gray-900-hsl));--gray-1000:hsl(var(--gray-1000-hsl));--red-050:#fef2f2;--red-100:#fee2e2;--red-200:#fecaca;--red-300:#fca5a5;--red-400:#f87171;--red-500:#ef4444;--red-600:#dc2626;--red-700:#b91c1c;--red-800:#991b1b;--red-900:#7f1d1d;--red-950:#450a0a;--orange-050:#fff7ed;--orange-100:#ffedd5;--orange-200:#fed7aa;--orange-300:#fdba74;--orange-400:#fb923c;--orange-500:#f97316;--orange-600:#ea580c;--orange-700:#c2410c;--orange-800:#9a3412;--orange-900:#7c2d12;--orange-950:#431407;--amber-050:#fffbeb;--amber-100:#fef3c7;--amber-200:#fde68a;--amber-300:#fcd34d;--amber-400:#fbbf24;--amber-500:#f59e0b;--amber-600:#d97706;--amber-700:#b45309;--amber-800:#92400e;--amber-900:#78350f;--amber-950:#451a03;--yellow-050:#fefce8;--yellow-100:#fef9c3;--yellow-200:#fef08a;--yellow-300:#fde047;--yellow-400:#facc15;--yellow-500:#eab308;--yellow-600:#ca8a04;--yellow-700:#a16207;--yellow-750:#93580b;--yellow-800:#854d0e;--yellow-900:#713f12;--yellow-950:#422006;--lime-050:#f7fee7;--lime-100:#ecfccb;--lime-200:#d9f99d;--lime-300:#bef264;--lime-400:#a3e635;--lime-500:#84cc16;--lime-600:#65a30d;--lime-700:#4d7c0f;--lime-800:#3f6212;--lime-900:#365314;--lime-950:#1a2e05;--green-050:#f0fdf4;--green-100:#dcfce7;--green-200:#bbf7d0;--green-300:#86efac;--green-400:#4ade80;--green-500:#22c55e;--green-600:#16a34a;--green-700:#15803d;--green-800:#166534;--green-900:#14532d;--green-950:#052e16;--emerald-050:#ecfdf5;--emerald-100:#d1fae5;--emerald-200:#a7f3d0;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--emerald-700:#047857;--emerald-800:#065f46;--emerald-900:#064e3b;--emerald-950:#022c22;--teal-050:#f0fdfa;--teal-100:#ccfbf1;--teal-200:#99f6e4;--teal-300:#5eead4;--teal-400:#2dd4bf;--teal-500:#14b8a6;--teal-550:#11a697;--teal-600:#0d9488;--teal-700:#0f766e;--teal-800:#115e59;--teal-900:#134e4a;--teal-950:#042f2e;--cyan-050:#ecfeff;--cyan-100:#cffafe;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--cyan-800:#155e75;--cyan-900:#164e63;--cyan-950:#083344;--sky-050:#f0f9ff;--sky-100:#e0f2fe;--sky-200:#bae6fd;--sky-300:#7dd3fc;--sky-400:#38bdf8;--sky-500:#0ea5e9;--sky-600:#0284c7;--sky-700:#0369a1;--sky-800:#075985;--sky-900:#0c4a6e;--sky-950:#082f49;--blue-050:#eff6ff;--blue-100:#dbeafe;--blue-200:#bfdbfe;--blue-300:#93c5fd;--blue-400:#60a5fa;--blue-500:#3b82f6;--blue-600:#2563eb;--blue-700:#1d4ed8;--blue-800:#1e40af;--blue-900:#1e3a8a;--blue-950:#172554;--indigo-050:#eef2ff;--indigo-100:#e0e7ff;--indigo-200:#c7d2fe;--indigo-300:#a5b4fc;--indigo-400:#818cf8;--indigo-500:#6366f1;--indigo-600:#4f46e5;--indigo-700:#4338ca;--indigo-800:#3730a3;--indigo-900:#312e81;--indigo-950:#1e1b4b;--violet-050:#f5f3ff;--violet-100:#ede9fe;--violet-200:#ddd6fe;--violet-300:#c4b5fd;--violet-400:#a78bfa;--violet-500:#8b5cf6;--violet-600:#7c3aed;--violet-700:#6d28d9;--violet-800:#5b21b6;--violet-900:#4c1d95;--violet-950:#2e1065;--purple-050:#faf5ff;--purple-100:#f3e8ff;--purple-200:#e9d5ff;--purple-300:#d8b4fe;--purple-400:#c084fc;--purple-500:#a855f7;--purple-600:#9333ea;--purple-700:#7e22ce;--purple-800:#6b21a8;--purple-900:#581c87;--purple-950:#3b0764;--fuchsia-050:#fdf4ff;--fuchsia-100:#fae8ff;--fuchsia-200:#f5d0fe;--fuchsia-300:#f0abfc;--fuchsia-400:#e879f9;--fuchsia-500:#d946ef;--fuchsia-600:#c026d3;--fuchsia-700:#a21caf;--fuchsia-800:#86198f;--fuchsia-900:#701a75;--fuchsia-950:#4a044e;--pink-050:#fdf2f8;--pink-100:#fce7f3;--pink-200:#fbcfe8;--pink-300:#f9a8d4;--pink-400:#f472b6;--pink-500:#ec4899;--pink-600:#db2777;--pink-700:#be185d;--pink-800:#9d174d;--pink-900:#831843;--pink-950:#500724;--rose-050:#fff1f2;--rose-100:#ffe4e6;--rose-200:#fecdd3;--rose-300:#fda4af;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--rose-800:#9f1239;--rose-900:#881337;--rose-950:#4c0519;--bg-color:$grey100;--bg-color-hsl:212deg,50%,93%;--primary-color:var(--red-600);--secondary-color:var(--gray-500);--input-color:#607d9f;--text-color:var(--gray-700);--medium-dark-text-color:var(--gray-550);--medium-text-color:var(--gray-550);--light-text-color:var(--gray-500);--link-color:#1f5fea;--font-weight-bold:700;--hairline-color:rgba(51,64,77,.1);--medium-hairline-color:#cfd8e3;--dark-hairline-color:rgba(123,135,147,.5);--light-focus-color:var(--blue-300);--medium-focus-color:var(--blue-500);--dark-focus-color:#0f74b1;--light-focus-ring:0 0 0 1px #5ed0fa,0 0 0 3px rgba(94,208,250,.7);--medium-focus-ring:0 0 0 1px #2bb0ed,0 0 0 3px rgba(43,176,237,.7);--dark-focus-ring:0 0 0 1px #0f74b1,0 0 0 3px rgba(15,116,177,.7);--light-sel-color:var(--gray-200);--dark-sel-color:var(--gray-500);--error-color-rgb:216,31,35;--error-color:rgba(var(--error-color-rgb),1);--warning-color:var(--amber-700);--success-color:var(--teal-700);--notice-color:var(--sky-700);--enabled-color:var(--teal-550);--pending-color:var(--orange-400);--disabled-color:var(--red-600);--indicator-border-color:var(--amber-600);--indicator-icon-color:var(--amber-700);--small-border-radius:3px;--medium-border-radius:4px;--large-border-radius:5px;--menu-border-radius:var(--medium-border-radius);--checkbox-size:1rem;--radio-size:1rem;--ui-control-color:var(--gray-550);--ui-control-hover-color:var(--gray-600);--ui-control-active-color:var(--gray-700);--ui-control-static-bg-color:rgba(96,125,159,.25);--ui-control-bg-color:var(--ui-control-static-bg-color);--ui-control-hover-bg-color:rgba(96,125,159,.3);--ui-control-active-bg-color:rgba(96,125,159,.5);--ui-control-border-radius:var(--large-border-radius);--ui-control-height:2.125rem;--ui-control-height--small:1.875rem;--light-focus-hsl:211.6981132075deg,96.3636363636%,78.431372549%;--medium-focus-hsl:217.2192513369deg,91.2195121951%,59.8039215686%;--dark-focus-hsl:202.5925925926deg,84.375%,37.6470588235%;--focus-ring:0 0 0 1px hsl(var(--dark-focus-hsl)),0 0 0 3px hsla(var(--dark-focus-hsl),0.8);--inner-focus-ring:inset 0 0 0 1px hsl(var(--dark-focus-hsl)),inset 0 0 0 3px hsla(var(--dark-focus-hsl),0.7);--touch-target-size:1.5rem;--thumb-size:1.25rem;--icon-size:1rem;--elements-busy-top-position:calc(50% - var(--size, 20px)/2);--lh:1.42em}@font-face{font-display:block;font-family:Craft;font-style:normal;font-weight:400;src:url(../fonts/Craft.woff2) format("woff2"),url(../fonts/Craft.woff) format("woff"),url(../fonts/Craft.ttf) format("truetype"),url(../fonts/Craft.svg#Craft) format("svg")}body,html{background-color:var(--gray-100);box-shadow:var(--light-focus-ring)}body{color:var(--text-color);font-size:.875rem;line-height:var(--lh);overflow-x:hidden;width:100vw;-webkit-font-smoothing:subpixel-antialiased}body.rtl{direction:rtl}body,input,select,textarea{font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.buttons:first-child,.condition-container:first-child,.field:first-child,.first,.grid:first-child,.pane:first-child,.toolbar:first-child,blockquote:first-child,fieldset:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,hr:first-child,p:first-child{margin-top:0!important}.buttons:last-child,.condition-container:last-child,.field:last-child,.grid:last-child,.last,.meta:last-child,.pane:last-child,.toolbar:last-child,blockquote:last-child,fieldset:last-child,h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0!important}.mt-0{margin-top:0!important}.mt-xs{margin-top:var(--xs)!important}.mt-s{margin-top:var(--s)!important}.mt-m{margin-top:var(--m)!important}.mt-l{margin-top:var(--l)!important}.mt-xl{margin-top:var(--xl)!important}.mb-0{margin-bottom:0!important}.mb-xs{margin-bottom:var(--xs)!important}.mb-s{margin-bottom:var(--s)!important}.mb-m{margin-bottom:var(--m)!important}.mb-l{margin-bottom:var(--l)!important}.mb-xl{margin-bottom:var(--xl)!important}.ml-0{margin-left:0!important}.ml-xs{margin-left:var(--xs)!important}.ml-s{margin-left:var(--s)!important}.ml-m{margin-left:var(--m)!important}.ml-l{margin-left:var(--l)!important}.ml-xl{margin-left:var(--xl)!important}.mr-0{margin-right:0!important}.mr-xs{margin-right:var(--xs)!important}.mr-s{margin-right:var(--s)!important}.mr-m{margin-right:var(--m)!important}.mr-l{margin-right:var(--l)!important}.mr-xl{margin-right:var(--xl)!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-xs{margin-left:var(--xs)!important;margin-right:var(--xs)!important}.mx-s{margin-left:var(--s)!important;margin-right:var(--s)!important}.mx-m{margin-left:var(--m)!important;margin-right:var(--m)!important}.mx-l{margin-left:var(--l)!important;margin-right:var(--l)!important}.mx-xl{margin-left:var(--xl)!important;margin-right:var(--xl)!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-xs{margin-bottom:var(--xs)!important;margin-top:var(--xs)!important}.my-s{margin-bottom:var(--s)!important;margin-top:var(--s)!important}.my-m{margin-bottom:var(--m)!important;margin-top:var(--m)!important}.my-l{margin-bottom:var(--l)!important;margin-top:var(--l)!important}.my-xl{margin-bottom:var(--xl)!important;margin-top:var(--xl)!important}.pointer{cursor:pointer!important}.no-scroll{overflow:hidden!important}.draghelper{box-sizing:border-box;list-style-type:none}.offset-drag-helper{transition:margin .2s linear,padding .2s linear}body.dragging.ltr .offset-drag-helper{margin:-50px 0 0 -50px;padding:60px 0 0 60px}body.dragging.rtl .offset-drag-helper{margin:-50px -50px 0 0;padding:60px 60px 0 0}img{max-width:100%}body.rtl .ltr .text,body.rtl .ltr table.editable textarea{direction:ltr!important;text-align:left!important}body.ltr .rtl .text,body.ltr .rtl table.editable textarea{direction:rtl!important;text-align:right!important}#help:before,.action-btn:before,.go:after,.icon:before,.insecure:before,.menu .flex.padded.sel:before,.menu ul.padded li .menu-item.sel:before,.menu ul.padded li .menu-option.sel:before,.menu ul.padded li a.sel:before,.preview-btn:before,.required:after,.secure:before,.texticon:before,.view-btn:before,[data-icon-after]:after,[data-icon]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.badge-icon{align-items:center;border:1px solid var(--indicator-border-color);border-radius:var(--small-border-radius);box-sizing:border-box;color:var(--indicator-icon-color);display:inline-flex;font-size:9px;height:1rem;justify-content:center;position:relative;top:-1px;width:1rem}.insecure:before,.secure:before{font-size:14px;margin-top:-3px}[data-icon]:before{content:attr(data-icon)}[data-icon-after]:after{content:attr(data-icon-after)}[data-icon-size=large][data-icon-after]:after,[data-icon-size=large][data-icon]:before{font-size:20px}[data-icon-size=small][data-icon-after]:after,[data-icon-size=small][data-icon]:before{font-size:14px}[data-icon-size=puny][data-icon-after]:after,[data-icon-size=puny][data-icon]:before{font-size:12px}body.rtl [data-icon-after=list]:after,body.rtl [data-icon=list]:before{content:"listrtl"}body.rtl [data-icon-after=structure]:after,body.rtl [data-icon=structure]:before{content:"structurertl"}.icon.secure:before{content:"secure"}.icon.insecure:before{content:"insecure"}.icon.add:before{content:"plus"}.icon.edit:before{content:"edit"}.icon.settings:before{content:"settings"}.icon.search:before{content:"search"}.icon.expand:before{content:"expand"}.icon.collapse:before{content:"collapse"}.help:before{color:var(--pink-400);content:"help"}body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-right:var(--xs)}body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-left:var(--xs)}.preview-btn:before{content:"view";margin-top:-2px}body.ltr .view-btn:before{content:"share"}body.rtl .view-btn:before{content:"shareleft"}.action-btn:before{content:"ellipsis"}.h1,h1{font-size:18px;font-weight:700;line-height:1.2;margin-bottom:24px}.h2,h2{font-size:16px}.h2,.h3,.h4,h2,h3,h4{font-weight:700;line-height:1.2;margin:14px 0}.h4,h4{color:var(--medium-text-color)}.h5,h5{color:var(--medium-text-color)}.h5,.h6,h5,h6{line-height:1.2;margin:14px 0 3px}.h6,h6{color:#606d7b;font-size:11px;text-transform:uppercase}body.ltr h1[data-icon]:before{margin:-8px 10px 0 0}body.rtl h1[data-icon]:before{margin:-8px 0 0 10px}h2[data-icon]:before{font-size:19px}body.ltr h2[data-icon]:before{margin:-4px 6px 0 0}body.rtl h2[data-icon]:before{margin:-4px 0 0 6px}hr{border:none;border-top:1px solid var(--hairline-color);color:transparent;height:0;margin:24px 0}.pane hr{margin:24px -24px}p{margin:1em 0}h5+p{margin-top:0}sup{vertical-align:super}sub,sup{font-size:smaller}sub{vertical-align:sub}body.ltr .indent{margin-left:14px}body.rtl .indent{margin-right:14px}.bullets{list-style-type:square}body.ltr .bullets{padding-left:40px}body.rtl .bullets{padding-right:40px}ol{list-style-type:decimal}body.ltr ol{padding-left:40px}body.rtl ol{padding-right:40px}.code,code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important}.code.smalltext,code.smalltext{font-size:.8em!important}.code input,.code textarea{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important;font-size:1em!important}pre code{display:block;overflow-x:auto}a{color:var(--link-color);cursor:pointer}a[aria-current]{cursor:default}a:hover,body.underline-links a{text-decoration:underline}a .cp-icon svg circle,a .cp-icon svg ellipse,a .cp-icon svg line,a .cp-icon svg path,a .cp-icon svg polygon,a .cp-icon svg polyline,a .cp-icon svg rect,a .cp-icon svg text{fill:var(--icon-color,var(--link-color));stroke-width:0}a:not([href]){color:inherit;cursor:inherit}a.sel,a:not([href]):hover,body.underline-links a:not([href]),li.sel>a{text-decoration:none}a.sel,li.sel>a{cursor:default!important}.go:after{color:var(--link-color);font-size:11px;margin-top:-1px;opacity:.9}body.ltr .go:after{padding-left:4px}body.rtl .go:after{padding-right:4px}body.ltr .go:after{content:"circlerarr"}body.rtl .go:after{content:"circlelarr"}button{cursor:pointer}.alert-icon,.checkmark-icon{border-radius:20px;cursor:pointer;line-height:10px;margin-bottom:0!important;padding:5px}.alert-icon:before,.checkmark-icon:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkmark-icon{background-color:var(--gray-200)}p .checkmark-icon{display:inline-block}.checkmark-icon:before{color:var(--success-color);content:"check"}.alert-icon{background-color:var(--gray-200)}.alert-icon:before{color:var(--error-color);content:"alert"}.revision-status-hud{max-width:400px}.revision-status-hud .http-error{background-color:var(--gray-050);border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);color:var(--light-text-color);padding:7px 14px}.draft-notice{align-content:stretch;align-items:center;color:var(--blue-800);display:flex;gap:var(--s);justify-content:center}#content-notice .draft-notice{display:inline-flex;justify-content:flex-start}body.ltr .so-notice>.draft-notice{margin:-5px 0 -5px calc(var(--xl)*-1)}body.rtl .so-notice>.draft-notice{margin:-5px calc(var(--xl)*-1) -5px 0}body.ltr .so-notice>.draft-notice{padding:5px 0 5px var(--xl)}body.rtl .so-notice>.draft-notice{padding:5px var(--xl) 5px 0}body.ltr .so-notice>.draft-notice{border-bottom-left-radius:var(--large-border-radius)}body.rtl .so-notice>.draft-notice{border-bottom-right-radius:var(--large-border-radius)}body.ltr .so-notice>.draft-notice{background-image:linear-gradient(to bottom right,rgba(37,99,235,.2),rgba(37,99,235,0) 50%)}body.rtl .so-notice>.draft-notice{background-image:linear-gradient(270deg,rgba(37,99,235,.2),rgba(37,99,235,0))}.draft-notice p{flex:1;margin:0}.draft-notice .draft-icon{align-items:center;border:2px solid rgba(30,64,175,.2);border-radius:100%;box-shadow:0 1px 1px 1px var(--white);box-sizing:border-box;display:flex;flex-shrink:0;height:34px;justify-content:center;position:relative;width:34px}.draft-notice .draft-icon:before{color:var(--blue-800)!important;font-size:18px;left:1px;position:relative}.draft-notice .draft-icon:after{border-radius:100%;bottom:-2px;box-shadow:inset 0 2px 0 rgba(30,58,138,.2);content:"";font-size:0;left:-2px;position:absolute;right:-2px;top:-2px}.draft-notice .discard-changes-btn{background-color:transparent!important;border:2px solid var(--blue-600);color:var(--blue-800)!important}body.ltr .draft-notice .discard-changes-btn{margin-left:var(--xs)}body.rtl .draft-notice .discard-changes-btn{margin-right:var(--xs)}.draft-notice .discard-changes-btn:focus,.draft-notice .discard-changes-btn:hover{border-color:#1555e2}.draft-notice .discard-changes-btn:active{border-color:#134cca}.revision-notice{align-content:stretch;align-items:center;color:var(--gray-600);display:flex;gap:var(--s);justify-content:center}#content-notice .revision-notice{display:inline-flex;justify-content:flex-start}.revision-notice p{flex:1;margin:0}.revision-notice .revision-icon{align-items:center;border:2px solid rgba(51,64,77,.2);border-radius:100%;box-shadow:0 1px 1px 1px var(--white);box-sizing:border-box;display:flex;flex-shrink:0;height:34px;justify-content:center;position:relative;width:34px}.revision-notice .revision-icon:before{color:var(--grey-800)!important;font-size:18px;left:1px;position:relative}.revision-notice .revision-icon:after{border-radius:100%;bottom:-2px;box-shadow:inset 0 2px 0 rgba(30,58,138,.2);content:"";font-size:0;left:-2px;position:absolute;right:-2px;top:-2px}button.toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;padding:0}.toggle:before,a.fieldtoggle:before{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transition:transform .1s linear;width:.4375rem}body.ltr .toggle:before,body.ltr a.fieldtoggle:before{transform:rotate(-45deg)}body.rtl .toggle:before,body.rtl a.fieldtoggle:before{transform:rotate(135deg)}.sidebar nav li.expanded>.toggle:before,.structure li:not(.collapsed)>.row>.toggle:before,.toggle.expanded:before,a.fieldtoggle.expanded:before{transform:rotate(45deg)!important}a.fieldtoggle{color:var(--text-color);display:block;margin:14px 0;position:relative;text-decoration:none}body.ltr a.fieldtoggle{padding-left:12px}body.rtl a.fieldtoggle{padding-right:12px}a.fieldtoggle:before{display:block;position:absolute;top:7px}body.ltr a.fieldtoggle:before{left:-1px}body.rtl a.fieldtoggle:before{right:-1px}em,i{font-style:italic}ul.errors em{font-style:normal}b,i em,strong{font-weight:700}.readable{font-size:16px;line-height:22px}.readable .h1,.readable .h2,.readable .h3,.readable .h4,.readable .h5,.readable .h6,.readable h1,.readable h2,.readable h3,.readable h4,.readable h5,.readable h6{font-weight:600;margin:24px 0 16px}.readable .h1,.readable h1{color:#000;font-size:32px;line-height:40px}.readable .h2,.readable h2{font-size:24px;line-height:30px}.readable .h3,.readable h3{font-size:20px;line-height:24px}.readable .h4,.readable h4{font-size:16px;line-height:20px}.readable .h5,.readable h5{font-size:14px;line-height:18px}.readable .h6,.readable h6{color:#596673;font-size:13.6px;line-height:17px}.readable ol,.readable ul{margin:1em 0}body.ltr .readable ol,body.ltr .readable ul{padding-left:2em}body.rtl .readable ol,body.rtl .readable ul{padding-right:2em}.readable ul li{list-style-type:disc}.readable li+li{margin-top:.25em}.readable .tip-dismiss-btn{position:absolute;top:12px}body.ltr .readable .tip-dismiss-btn{right:12px}body.rtl .readable .tip-dismiss-btn{left:12px}.readable .tip-dismiss-btn+p{margin-top:0}.readable blockquote{margin:16px 0}.readable blockquote:not(.note){color:#596673;padding:0 16px}body.ltr .readable blockquote:not(.note){border-left:4px solid rgba(51,64,77,.1)}body.rtl .readable blockquote:not(.note){border-right:4px solid rgba(51,64,77,.1)}.readable blockquote.note{border:1px solid;border-radius:4px;padding:1em;position:relative}body.ltr .readable blockquote.note{padding-left:50px}body.rtl .readable blockquote.note{padding-right:50px}body.ltr .readable blockquote.note.dismissible{padding-right:36px}body.rtl .readable blockquote.note.dismissible{padding-left:36px}.readable blockquote.note:not(.tip):not(.warning){border-color:#dc2626;color:#bf503f}.readable blockquote.note:not(.tip):not(.warning):before{color:#dc2626;content:"alert"}.readable blockquote.note.tip{border-color:#1f5fea;color:#1f5fea}.readable blockquote.note.tip:before{color:#1f5fea;content:"lightbulb"}.readable blockquote.note.warning{border-color:#854d0e;color:#cf783a}.readable blockquote.note.warning:before{color:#854d0e;content:"alert"}.readable blockquote.note:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;font-size:24px;opacity:1;position:absolute;top:15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:24px}body.ltr .readable blockquote.note:before{left:16px}body.rtl .readable blockquote.note:before{right:16px}.readable blockquote.note a[href]{color:currentColor;text-decoration:underline}.readable .go:after{font-size:14px}body.ltr .leftalign{text-align:left}body.rtl .leftalign{text-align:right}.topalign{vertical-align:top}body.ltr .rightalign{text-align:right}body.rtl .rightalign{text-align:left}.centeralign{text-align:center!important}.nowrap{white-space:nowrap}.break-word{word-wrap:break-word}.light{color:var(--medium-text-color)!important;font-weight:400}.extralight{color:var(--light-text-color)!important}.smalltext{font-size:12px;line-height:1.2}.largetext{font-size:16px;line-height:1.2}.zilch{color:var(--light-text-color);font-size:20px;line-height:24px;padding:100px 0;text-align:center}.zilch.small{font-size:16px;padding:24px 0}input.checkbox+label.smalltext{padding-top:2px}.required:after{color:var(--rose-500);content:"asterisk";font-size:12px}body.ltr .required:after{margin:-2px 0 0 5px}body.rtl .required:after{margin:-2px 5px 0 0}.scrollpane{overflow:auto}body.ltr .left{float:left}body.ltr .right,body.rtl .left{float:right}body.rtl .right{float:left}td,th{vertical-align:middle}body.ltr td,body.ltr th{text-align:left}body.ltr table[dir=rtl] td,body.ltr table[dir=rtl] th,body.rtl td,body.rtl th{text-align:right}body.rtl table[dir=ltr] td,body.rtl table[dir=ltr] th{text-align:left}td.right,th.right{float:none}body.ltr td.right,body.ltr th.right{text-align:right}body.rtl td.right,body.rtl th.right{text-align:left}.clear{clear:both;display:block;height:0}.fullwidth{width:100%}.token{background-color:#e4edf6;border-radius:3px;color:#3f4d5a;display:inline-block;font-size:12px;line-height:14px;padding:3px 7px}.token[data-name="*"]{position:relative;width:10px}.token[data-name="*"] span{opacity:0}.token[data-name="*"]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"asterisk";display:block;font-size:9px;left:0;line-height:17px;position:absolute;text-indent:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.token:focus{background-color:#cdd8e4}.highlight .token{background:transparent;border:none;border-radius:0;box-shadow:none;display:inline;font-size:inherit;line-height:inherit;padding:0;text-shadow:none}.pane.highlight pre[class*=language-]{overflow:visible}.pane.highlight pre[class*=language-]>code.diff-highlight .token:not(.prefix){margin:0 -24px;padding:0 24px}.success{color:var(--success-color)!important}.notice .icon:before,.notice.with-icon:before,.warning .icon:before,.warning.with-icon:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em}body.ltr .notice .icon:before,body.ltr .notice.with-icon:before,body.ltr .warning .icon:before,body.ltr .warning.with-icon:before{margin:-2px 2px 0 0}body.rtl .notice .icon:before,body.rtl .notice.with-icon:before,body.rtl .warning .icon:before,body.rtl .warning.with-icon:before{margin:-2px 0 0 2px}.notice.has-icon,.warning.has-icon{align-items:flex-start;display:flex;flex-wrap:nowrap}.notice.has-icon .icon,.warning.has-icon .icon{flex-shrink:1}.notice{color:var(--notice-color)!important}.notice a{text-decoration:underline}.notice .icon:before,.notice.with-icon:before{content:"lightbulb"}.warning{color:var(--warning-color)!important}.warning .icon:before,.warning.with-icon:before{content:"alert"}.error{color:var(--error-color)!important}.icon.move:not(.disabled){cursor:move}.icon.move:before{color:var(--custom-text-color,var(--ui-control-color));content:"move"}.icon.move:not(.disabled):hover:before{color:var(--link-color)}.icon.delete{display:inline-block;line-height:inherit}.icon.delete:before{color:var(--ui-control-color);content:"remove"}.icon.delete:not(.disabled){cursor:pointer}.icon.delete:not(.disabled):hover:before{color:var(--disabled-color)}.icon.delete:not(.disabled):active:before{color:var(--red-800)}.hidden{display:none!important}.visually-hidden{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.invisible{visibility:hidden}.clearafter:after{clear:both;content:"";display:block;height:0;visibility:hidden}.info{cursor:pointer;height:1.375em;overflow:hidden;vertical-align:bottom;width:1em}.info,.info:before{display:inline-block;text-align:center}.info:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;vertical-align:middle;word-wrap:normal!important;color:var(--ui-control-color);line-height:1.375;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:baseline;width:100%}.info:not(.warning):before{content:"info"}.info:not(.warning):hover:before{color:var(--link-color)}.info.warning:before{content:"alert"}.info.warning:hover:before{color:var(--warning-color)}.info-hud table{max-width:280px;table-layout:auto}.info-hud td{word-wrap:break-word;width:100%}@media(max-width:450px){.info-hud table{table-layout:fixed;width:100%}}.content{position:relative}.content:after{clear:both;content:"";display:block;height:0;visibility:hidden}.customize-sources-modal{overflow:visible!important}body.ltr .customize-sources-modal{padding-left:200px}body.rtl .customize-sources-modal{padding-right:200px}.customize-sources-modal>.cs-sidebar{background-color:var(--gray-050);border:none;box-shadow:inset -1px 0 0 var(--hairline-color);box-sizing:border-box;height:calc(100% - 44px);margin:0;overflow:auto;padding:10px 0;position:absolute;top:0;width:200px}body.ltr .customize-sources-modal>.cs-sidebar{left:0}body.rtl .customize-sources-modal>.cs-sidebar{right:0}body.ltr .customize-sources-modal>.cs-sidebar{border-top-left-radius:var(--large-border-radius)}body.rtl .customize-sources-modal>.cs-sidebar{border-top-right-radius:var(--large-border-radius)}.customize-sources-modal>.cs-sidebar>.btn{display:block;width:calc(100% - 28px)}body.ltr .customize-sources-modal>.cs-sidebar>.btn{margin:10px 0 0 14px}body.rtl .customize-sources-modal>.cs-sidebar>.btn{margin:10px 14px 0 0}body.ltr .customize-sources-modal.sidebar-hidden{padding-left:0}body.rtl .customize-sources-modal.sidebar-hidden{padding-right:0}.customize-sources-modal.sidebar-hidden>.cs-sidebar{display:none}.customize-sources-modal>.source-settings{box-sizing:border-box;height:calc(100% - 44px);overflow:auto;padding:24px;position:relative}.customize-sources-modal>.footer{bottom:0;left:0;position:absolute;width:100%}.customize-sources-item{--selected-item-color:var(--white);align-items:center;background-color:var(--gray-100);border:solid var(--hairline-color);border-width:1px 0;box-sizing:border-box;cursor:default;display:flex;margin-top:-1px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 1px)}.customize-sources-item+.customize-sources-item.heading{margin-top:10px}.customize-sources-item+.customize-sources-item:not(.heading){border-top:1px solid var(--hairline-color)}.customize-sources-item.sel{--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7);--ui-control-color:var(--selected-item-color);background-color:var(--dark-sel-color);color:var(--selected-item-color);z-index:1}.customize-sources-item .label{flex:1}.customize-sources-item.heading .label{color:var(--light-text-color);font-size:12px;font-weight:700;text-transform:uppercase}.customize-sources-item.heading.sel .label{color:var(--selected-item-color)}.customize-sources-item__move{align-items:center;justify-content:center;position:absolute;top:50%;transform:translate(-50%,-50%)}body.ltr .customize-sources-item__move{right:0}body.rtl .customize-sources-item__move{left:0}.customize-sources-item__move.icon{display:flex;text-decoration:none}.customize-sources-item__btn{margin:3px;padding:8px 14px}body.ltr .customize-sources-item__btn{padding-right:30px}body.rtl .customize-sources-item__btn{padding-left:30px}.checkbox-select-item{align-content:stretch;align-items:flex-start;display:flex;margin-bottom:4px}.checkbox-select-item .move{margin-top:-3px;position:relative;z-index:1}body.ltr .checkbox-select-item .move{margin-right:10px}body.rtl .checkbox-select-item .move{margin-left:10px}ul.path{align-items:stretch;display:flex;flex-direction:row;flex-wrap:wrap}ul.path li{align-items:center;display:inline-flex}ul.path li:not(:last-child):after{border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr ul.path li:not(:last-child):after{margin:0 5px 0 2px}body.rtl ul.path li:not(:last-child):after{margin:0 2px 0 5px}body.ltr ul.path li:not(:last-child):after{transform:rotate(-45deg)}body.rtl ul.path li:not(:last-child):after{transform:rotate(135deg)}ul.icons{display:flex;flex-wrap:wrap;margin-top:20px}ul.icons li{margin:0 4px 10px 0}ul.icons li a{border:1px solid var(--white);border-radius:4px;color:var(--text-color);display:block;padding:60px 5px 10px;position:relative;text-align:center;width:110px}ul.icons li a:before{display:block;font-size:40px;left:0;line-height:60px;position:absolute;top:0;width:100%}ul.icons li a .icon img,ul.icons li a .icon svg{height:40px;left:calc(50% - 20px);position:absolute;top:12px;width:40px}ul.icons li a .icon.icon-mask svg circle,ul.icons li a .icon.icon-mask svg ellipse,ul.icons li a .icon.icon-mask svg line,ul.icons li a .icon.icon-mask svg path,ul.icons li a .icon.icon-mask svg polygon,ul.icons li a .icon.icon-mask svg polyline,ul.icons li a .icon.icon-mask svg rect,ul.icons li a .icon.icon-mask svg text{fill:var(--text-color);stroke-width:0}ul.icons li a:hover{background-color:var(--gray-050);border-color:var(--gray-100);text-decoration:none}ul.icons li a:hover .icon.icon-mask svg circle,ul.icons li a:hover .icon.icon-mask svg ellipse,ul.icons li a:hover .icon.icon-mask svg line,ul.icons li a:hover .icon.icon-mask svg path,ul.icons li a:hover .icon.icon-mask svg polygon,ul.icons li a:hover .icon.icon-mask svg polyline,ul.icons li a:hover .icon.icon-mask svg rect,ul.icons li a:hover .icon.icon-mask svg text{fill:var(--link-color);stroke-width:0}@media only screen and (max-width:380px){ul.icons li a{width:96px}}@media only screen and (max-width:320px){ul.icons li a{width:75px}}.toolbar{margin-bottom:var(--s);min-height:34px;position:relative}.toolbar .flex,.toolbar.flex{align-items:flex-start}.toolbar .text{border-radius:var(--large-border-radius)!important}.flex{align-content:stretch;align-items:center;display:flex;gap:var(--s)}.flex.flex-gap-xs{gap:var(--xs)}.flex.flex-gap-m{gap:var(--m)}.flex.flex-gap-l{gap:var(--l)}.flex.flex-gap-xl{gap:var(--xl)}.flex:not(.flex-nowrap){flex-wrap:wrap}.flex>.label{white-space:nowrap}.centeralign .flex{justify-content:center}.inline-flex{align-content:stretch;align-items:center;display:inline-flex!important;gap:var(--s)}.gap-xs{gap:var(--xs)}.gap-s{gap:var(--s)}.gap-m{gap:var(--m)}.gap-l{gap:var(--l)}.gap-xl{gap:var(--xl)}.flex-grow{flex:1;max-width:100%}.flex-justify{justify-content:space-between}.flex-justify-start{justify-content:flex-start}.flex-justify-end{justify-content:flex-end}.flex-justify-center{justify-content:center}.flex-start{align-items:flex-start}.flex-end{align-items:flex-end}.flex-center{align-items:center}.flex-stretch{align-items:stretch}.spacer{width:14px}.buttons{align-items:center;display:flex;gap:7px;margin:24px 0;position:relative}.footer>.buttons,.hud-footer>.buttons{margin:0}.btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--ui-control-bg-color);border:none;border-radius:var(--ui-control-border-radius);box-sizing:border-box;color:currentColor;display:inline-flex;font-size:inherit;justify-content:center;padding:7px 10px;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.btn:not([aria-current]){cursor:pointer}.btn.chromeless{height:auto;padding:0}.btn.chromeless,.btn.chromeless:active,.btn.chromeless:focus,.btn.chromeless:hover{background-color:transparent}.btn.chromeless:active,.btn.chromeless:hover{text-decoration:underline}.btn.hairline,.btn.link-btn{background-color:transparent;border:1px solid var(--medium-hairline-color)}.btn.hairline:active,.btn.hairline[aria-expanded=true],.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{background-color:var(--ui-control-static-bg-color)}.btn.hairline:active,.btn.hairline:hover,.btn.hairline[aria-expanded=true]{border-color:var(--dark-hairline-color)}.btn.link-btn{color:var(--link-color)}.btn.link-btn:active,.btn.link-btn:hover,.btn.link-btn[aria-expanded=true]{border-color:var(--link-color)}.btn.wrap{height:auto;min-height:34px;text-align:left;white-space:normal}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):hover{--ui-control-bg-color:var(--ui-control-hover-bg-color)}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current])[aria-expanded=true]{--ui-control-bg-color:var(--ui-control-active-bg-color)}.btn[type=color]{padding:6px!important;width:36px}.btn.loading{cursor:default}.btn:hover{text-decoration:none}.btn.btn-empty,.btn:empty{padding-left:12px;padding-right:12px}body.ltr .btn.icon:not(:empty):not(.btn-empty):before,body.ltr .btn.menubtn:not(.action-btn).icon.btn-empty:before,body.ltr .btn.menubtn:not(.action-btn).icon:empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.ltr .btn[data-icon]:not(:empty):not(.btn-empty):before{margin-right:5px}body.rtl .btn.icon:not(:empty):not(.btn-empty):before,body.rtl .btn.menubtn:not(.action-btn).icon.btn-empty:before,body.rtl .btn.menubtn:not(.action-btn).icon:empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.rtl .btn[data-icon]:not(:empty):not(.btn-empty):before{margin-left:5px}.btn:not(.loading) .spinner{display:none}.btn.loading .label,.btn.loading:after,.btn.loading:before{visibility:hidden}.btn div.checkbox{margin-top:2px}.btn [data-icon]{margin-top:-3px}body.ltr .btn [data-icon]{margin-right:5px}body.rtl .btn [data-icon]{margin-left:5px}.btn [data-icon].light:before{color:var(--gray-300)}.disabled{opacity:.25;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.noteditable,.noteditable .element,.noteditable .lightswitch-container,.noteditable+.colorhex{cursor:not-allowed}.btn,.spinner{height:var(--ui-control-height)}body.ltr .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.ltr .menu-toggle:not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn).icon:after,body.ltr .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-left:6px}body.rtl .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.rtl .menu-toggle:not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn).icon:after,body.rtl .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-right:6px}.btn.icon:before,.btn[data-icon-after]:after,.btn[data-icon]:before{position:relative}.btn.icon.small:before,.btn.small[data-icon-after]:after,.btn.small[data-icon]:before{font-size:10px}.btngroup{align-items:center;border-radius:var(--large-border-radius);display:flex;position:relative;white-space:nowrap;z-index:1}.btngroup.fullwidth .btn{flex:1}.btngroup.disabled .btn{cursor:default}.btngroup .btn:focus{z-index:1}body.ltr .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-right:1px}body.rtl .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-left:1px}body.ltr .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-bottom-left-radius:0;border-top-left-radius:0}body.ltr .btngroup .btn:not(:last-child):not(.btngroup-btn-last),body.rtl .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-bottom-right-radius:0;border-top-right-radius:0}body.rtl .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-bottom-left-radius:0;border-top-left-radius:0}.btngroup--exclusive .btn[aria-pressed=true]:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]){background-color:var(--gray-500);color:var(--white)}.copytext{align-items:center;display:flex;position:relative;white-space:nowrap;z-index:1}body.ltr .copytext .text{border-bottom-right-radius:0;border-top-right-radius:0;min-width:0}body.ltr .copytext .btn,body.rtl .copytext .text{border-bottom-left-radius:0;border-top-left-radius:0}body.rtl .copytext .btn{border-bottom-right-radius:0;border-top-right-radius:0}.copytextbtn{align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);color:var(--medium-text-color);cursor:pointer;display:inline-flex;flex-wrap:nowrap;padding:0 9px}.copytextbtn .copytextbtn__icon{background:none;color:var(--light-text-color);margin-top:-3px;padding:0;width:13px}body.ltr .copytextbtn .copytextbtn__icon{margin-left:5px}body.rtl .copytextbtn .copytextbtn__icon{margin-right:5px}.copytextbtn:focus,.copytextbtn:hover{border-color:var(--medium-hairline-color);color:var(--text-color)}.copytextbtn:focus .copytextbtn__value,.copytextbtn:hover .copytextbtn__value{color:var(--text-color)}.copytextbtn.small{padding:0 5px}.copytextbtn.small .copytextbtn__value{font-size:.6875rem}.menu-toggle,.menubtn:not(.action-btn){align-items:center;display:inline-flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.menu-toggle:after,.menubtn:not(.action-btn):after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transform:rotate(45deg);width:.4375rem}.menu-toggle.btn:after,.menubtn:not(.action-btn).btn:after{top:-1px}.menu-toggle.btn:not(.disabled):not(.inactive).active:after,.menu-toggle.btn:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive):active:after{border-color:var(--ui-control-active-color)}.menu-toggle.btn.submit:after,.menubtn:not(.action-btn).btn.submit:after{border-color:var(--white)!important;opacity:.8}.menu-toggle.btn.submit:not(.disabled):not(.inactive).active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):hover:after{opacity:1}.menu-toggle:not(.btn):not(.icon),.menubtn:not(.action-btn):not(.btn):not(.icon){height:17px}.menu-toggle:not(.btn):not(.icon):after,.menubtn:not(.action-btn):not(.btn):not(.icon):after{border-color:var(--link-color);top:-2px}body.ltr .menu-toggle.btn-empty,body.ltr .menu-toggle:empty,body.ltr .menubtn:not(.action-btn).btn-empty,body.ltr .menubtn:not(.action-btn):empty{padding-left:8px}body.ltr .menu-toggle.btn-empty,body.ltr .menu-toggle:empty,body.ltr .menubtn:not(.action-btn).btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.rtl .menu-toggle.btn-empty,body.rtl .menu-toggle:empty,body.rtl .menubtn:not(.action-btn).btn-empty,body.rtl .menubtn:not(.action-btn):empty{padding-right:8px}body.rtl .menu-toggle.btn-empty,body.rtl .menu-toggle:empty,body.rtl .menubtn:not(.action-btn).btn-empty,body.rtl .menubtn:not(.action-btn):empty{padding-left:8px}@keyframes rotator{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.spinner{align-items:center;display:inline-flex;height:var(--size,34px);justify-content:center;width:var(--size,24px)}.spinner:before{animation:rotator .7s linear infinite;border-color:transparent currentcolor currentcolor transparent;border-radius:50%;border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:block;font-size:0;height:var(--size,20px);-o-object-fit:scale-down;object-fit:scale-down;opacity:.8;width:var(--size,20px)}.spinner.small{--size:12px}.spinner.big{--size:48px}.spinner.spinner-absolute{height:var(--size,20px);left:calc(50% - var(--size, 20px)/2);position:absolute;top:var(--elements-busy-top-position);width:var(--size,20px)}body.ltr .btn+.spinner{margin-left:7px}body.rtl .btn+.spinner{margin-right:7px}body.ltr .buttons .btn+.spinner,body.ltr .buttons .btngroup+.spinner{margin-left:0}body.rtl .buttons .btn+.spinner,body.rtl .buttons .btngroup+.spinner{margin-right:0}body.ltr .buttons.right .btn+.spinner{margin-right:var(--neg-padding)}body.rtl .buttons.right .btn+.spinner{margin-left:var(--neg-padding)}.btn.small,.btngroup.small .btn{font-size:12px;line-height:22px;padding:0 var(--s)!important}.btn.small,.btn.small+.spinner,.btngroup.small,.btngroup.small input.btn{height:22px}.btn.big,.btngroup.big .btn{font-size:14px;line-height:36px;padding:0 14px}body.ltr .btn.big[data-icon]:before,body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-left:-2px}body.rtl .btn.big[data-icon]:before,body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-right:-2px}.btn.big,.btn.big+.spinner,.btngroup.big,.btngroup.big input.btn{height:36px}.btn.huge{height:48px;line-height:48px;padding:var(--l)}.btn.secondary,.btn.submit{color:var(--white)!important;--ui-control-active-color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.btn.submit{background-color:var(--primary-color)!important}.btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.btn.submit:not(.disabled):not(.inactive):not(.loading):hover{background-color:#c82020!important}.btn.submit:not(.disabled):not(.inactive):not(.loading).active,.btn.submit:not(.disabled):not(.inactive):not(.loading):active,.btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#b21d1d!important}.btn.caution{background-color:var(--red-050)!important;color:var(--error-color)}.btn.caution.hover,.btn.caution:focus,.btn.caution:hover{background-color:#fcdada!important}.btn.caution.active,.btn.caution:active,.btn.caution[aria-expanded=true]{background-color:var(--red-100)!important}.btn.secondary,.secondary-buttons .btn.submit{background-color:var(--secondary-color)!important}.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus,.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):hover{background-color:#55616d!important}.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,.btn.secondary:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true],.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#4a545e!important}div.btn.submit{overflow:hidden;position:relative}div.btn.submit input{left:100%;position:absolute}.btn.dashed{background-color:transparent;border:1px dashed var(--medium-hairline-color)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-right:1px solid transparent}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-left:1px solid transparent}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-right:-1px}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-left:-1px}.btn.dashed:focus{background-color:rgba(205,216,228,.1);border-color:transparent}.reduce-focus-visibility .btn.dashed:focus:not(:focus-visible){border:1px dashed var(--medium-hairline-color)}.btn.dashed:not(.disabled).active,.btn.dashed:not(.disabled):active,.btn.dashed:not(.disabled)[aria-expanded=true]{background-color:rgba(205,216,228,.25)}.chevron-btns{display:flex;justify-content:flex-start}.chevron-btns .btn{background-color:transparent;border-radius:0;padding:0;position:relative}.chevron-btns .btn.active-drop-target,.chevron-btns .btn.current-step{color:var(--white);--text-color:var(--white);--ui-control-color:var(--white);--ui-control-bg-color:var(--gray-500);--ui-control-hover-bg-color:#55616d;--ui-control-active-bg-color:#4a545e}.chevron-btns .btn.current-step{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7)}.chevron-btns .btn:focus{box-shadow:none;z-index:1}.chevron-btns .btn:focus .label{box-shadow:var(--focus-ring);z-index:1}.reduce-focus-visibility .chevron-btns .btn:focus:not(:focus-visible) .label{box-shadow:none}.reduce-focus-visibility .chevron-btns .btn:focus-visible .label{box-shadow:var(--focus-ring)}body.ltr .chevron-btns .btn:not(.has-action-menu){padding-right:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns .btn:not(.has-action-menu){padding-left:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns .btn:not(.has-action-menu){margin-right:2.8px}body.rtl .chevron-btns .btn:not(.has-action-menu){margin-left:2.8px}body.ltr .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-right:5px}body.rtl .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-left:5px}body.ltr .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-left:8px}body.rtl .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-right:8px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label{padding:3px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transform:rotate(45deg);width:.4375rem}.chevron-btns .btn .btn-body{align-items:center;background-color:var(--ui-control-bg-color);display:inline-flex;height:var(--ui-control-height);justify-content:center}.chevron-btns .btn .btn-body [data-icon]{--ui-control-height:0.8125rem;text-align:center}body.ltr .chevron-btns .btn .btn-body [data-icon]{margin-right:0}body.rtl .chevron-btns .btn .btn-body [data-icon]{margin-left:0}.chevron-btns .btn .label{align-items:center;display:inline-flex;overflow:hidden;text-overflow:ellipsis}body.ltr .chevron-btns .btn.has-action-menu .btn-body{padding-right:1px}body.rtl .chevron-btns .btn.has-action-menu .btn-body{padding-left:1px}body.ltr .chevron-btns .btn.has-action-menu .btn-body{margin-right:0}body.rtl .chevron-btns .btn.has-action-menu .btn-body{margin-left:0}.chevron-btns .btn .chevron-left,.chevron-btns .btn .chevron-right{height:100%;position:absolute;top:0;width:calc(var(--ui-control-height)/2)}.chevron-btns .btn .chevron-left{border-top:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left{left:0}body.rtl .chevron-btns .btn .chevron-left{right:0}body.ltr .chevron-btns .btn .chevron-left{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .chevron-btns .btn .chevron-left{border-right:calc(var(--ui-control-height)/2) solid transparent}.chevron-btns .btn .chevron-left:after{border-bottom:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color);bottom:0;content:"";display:block;font-size:0;position:absolute}body.ltr .chevron-btns .btn .chevron-left:after{right:0}body.rtl .chevron-btns .btn .chevron-left:after{left:0}body.ltr .chevron-btns .btn .chevron-left:after{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .chevron-btns .btn .chevron-left:after{border-right:calc(var(--ui-control-height)/2) solid transparent}.chevron-btns .btn .chevron-right{border-bottom:calc(var(--ui-control-height)/2) solid transparent;border-top:calc(var(--ui-control-height)/2) solid transparent}body.ltr .chevron-btns .btn .chevron-right{right:0}body.rtl .chevron-btns .btn .chevron-right{left:0}body.ltr .chevron-btns .btn .chevron-right{border-left:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.rtl .chevron-btns .btn .chevron-right{border-right:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}.chevron-btns ol{display:flex;list-style-type:none;position:relative}body.ltr .chevron-btns ol{padding-left:0}body.rtl .chevron-btns ol{padding-right:0}body.ltr .chevron-btns ol li.first-step .btn .btn-body{padding-left:14px}body.rtl .chevron-btns ol li.first-step .btn .btn-body{padding-right:14px}body.ltr .chevron-btns ol li.first-step .btn .btn-body{border-radius:var(--ui-control-border-radius) 0 0 var(--ui-control-border-radius)}body.rtl .chevron-btns ol li.first-step .btn .btn-body{border-radius:0 var(--ui-control-border-radius) var(--ui-control-border-radius) 0}.chevron-btns ol li.first-step .btn .chevron-left{display:none}body.ltr .chevron-btns ol li:not(.first-step) .btn{margin-left:calc(var(--ui-control-height)*-1/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{margin-right:calc(var(--ui-control-height)*-1/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn{padding-left:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{padding-right:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-left:7px}body.rtl .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-right:7px}.color-input-container{position:relative}.color-input-container .color-hex-indicator{line-height:34px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em}body.ltr .color-input-container .color-hex-indicator{left:7px}body.rtl .color-input-container .color-hex-indicator{right:7px}.color-input{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important}body.ltr .color-input{padding-left:calc(7px + 1em)}body.rtl .color-input{padding-right:calc(7px + 1em)}.color{border-radius:17px;display:inline-block;height:34px;padding:0;position:relative;vertical-align:middle;width:34px}.color:not(.static):not(.noteditable){cursor:pointer}.color:not(.small){background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px;background-size:17px 17px}.color.small,.color:not(.small){background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0)}.color.small{background-position:0 0,4px 0,4px -4px,0 4px;background-size:8px 8px;height:16px;width:16px}.color .color-preview{border-radius:17px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:100%;position:absolute;top:0;width:100%}body.ltr .color .color-preview{left:0}body.rtl .color .color-preview{right:0}.color .color-preview:focus-within{box-shadow:var(--focus-ring)}.color .color-preview>.color-preview-input{border:none;height:100%;margin:0;opacity:0;padding:0;position:absolute;width:100%}body.ltr .color .color-preview>.color-preview-input{left:0}body.rtl .color .color-preview>.color-preview-input{right:0}.colorhex{color:var(--medium-text-color);display:inline-block;margin-left:5px;vertical-align:middle}.lightswitch-outer-container{display:flex}.lightswitch-outer-container .lightswitch-inner-container{align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);display:flex;max-width:100%;padding-left:7px;padding-right:7px}.lightswitch-outer-container .lightswitch-inner-container span{color:var(--medium-text-color);cursor:default;flex-grow:1;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:auto;overflow-wrap:break-word;padding:7px 0}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-right:7px}.lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:right}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-right:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-left:7px;text-align:left}.lightswitch{background-image:linear-gradient(to right,var(--gray-400),var(--gray-400));border:none!important;cursor:pointer;display:block;overflow:hidden;position:relative;transition:background-image .1s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lightswitch.on{background-image:linear-gradient(to right,var(--enabled-color),var(--enabled-color))}.lightswitch.indeterminate{background-image:linear-gradient(to right,var(--enabled-color),var(--gray-300))}.lightswitch .lightswitch-container{height:100%;position:relative}.lightswitch .lightswitch-container .handle{background-color:var(--white);position:absolute;top:1px}.lightswitch:not(.small){border-radius:11px;height:22px;min-width:34px;width:34px}.lightswitch:not(.small) .lightswitch-container{width:46px}body.ltr .lightswitch:not(.small) .lightswitch-container{margin-left:-12px}body.rtl .lightswitch:not(.small) .lightswitch-container{margin-right:-12px}.lightswitch:not(.small) .lightswitch-container .handle{border-radius:10px;height:20px;left:calc(50% - 10px);width:20px}.lightswitch.small{border-radius:9px;height:18px;width:28px}.lightswitch.small .lightswitch-container{width:38px}body.ltr .lightswitch.small .lightswitch-container{margin-left:-10px}body.rtl .lightswitch.small .lightswitch-container{margin-right:-10px}.lightswitch.small .lightswitch-container .handle{border-radius:8px;height:16px;left:calc(50% - 8px);width:16px}table .lightswitch{display:inline-block;margin-bottom:-5px}body.ltr .lightswitch.on .lightswitch-container{margin-left:0}body.rtl .lightswitch.on .lightswitch-container{margin-right:0}body.ltr .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-left:-6px}body.rtl .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-right:-6px}body.ltr .lightswitch.indeterminate.small .lightswitch-container{margin-left:-5px}body.rtl .lightswitch.indeterminate.small .lightswitch-container{margin-right:-5px}table.data+.pagination{margin-top:24px}.pagination .page-link{align-items:center;border-radius:var(--medium-border-radius);display:flex;height:1.875rem;justify-content:center;width:1.875rem}.pagination .page-link:after{position:relative;transition:border-color .1s linear}.pagination .page-link.prev-page:after{border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .pagination .page-link.prev-page:after{transform:rotate(135deg)}body.rtl .pagination .page-link.prev-page:after{transform:rotate(-45deg)}body.ltr .pagination .page-link.prev-page:after{right:-1px}body.rtl .pagination .page-link.prev-page:after{left:-1px}.pagination .page-link.next-page:after{border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .pagination .page-link.next-page:after{transform:rotate(-45deg)}body.rtl .pagination .page-link.next-page:after{transform:rotate(135deg)}body.ltr .pagination .page-link.next-page:after{left:-1px}body.rtl .pagination .page-link.next-page:after{right:-1px}.pagination .page-link:not(.disabled){box-shadow:inset 0 0 0 1px var(--hairline-color);cursor:pointer;transition:box-shadow .1s linear}.pagination .page-link:not(.disabled):hover{box-shadow:inset 0 0 0 1px var(--link-color);text-decoration:none}.pagination .page-link:not(.disabled):hover:after{border-color:var(--link-color)}body.reduce-focus-visibility .pagination .page-link:not(.disabled):focus-visible,body:not(.reduce-focus-visibility) .pagination .page-link:not(.disabled):focus{box-shadow:inset 0 0 0 1px var(--hairline-color),var(--focus-ring)}.pagination .page-link.disabled{opacity:1}.pagination .page-link.disabled:after{border-color:var(--hairline-color)}body.ltr .actions{float:right}body.ltr .actions>li,body.rtl .actions{float:left}body.rtl .actions>li{float:right}body.ltr .actions>li+li{margin-left:10px}body.rtl .actions>li+li{margin-right:10px}h1+.actions{margin-top:-100px}h2+.actions{margin-top:-54px}.tablepane{--pane-y-padding-default:calc(var(--xl) - 2px);--pane-x-padding-default:calc(var(--padding) - 2px);margin:calc(var(--pane-padding, var(--pane-y-padding-default))*-1) calc(var(--pane-padding, var(--pane-x-padding-default))*-1) calc(var(--pane-padding, var(--padding))*-1 + var(--pane-padding, var(--m)));padding:0!important;-ms-scroll-chaining:none;overflow-x:auto;overscroll-behavior:contain}body.ltr .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.ltr .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-left:var(--pane-padding,var(--pane-x-padding-default))}body.ltr .tablepane table.data td:last-child,body.ltr .tablepane table.data th:last-child,body.rtl .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.rtl .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-right:var(--pane-padding,var(--pane-x-padding-default))}body.rtl .tablepane table.data td:last-child,body.rtl .tablepane table.data th:last-child{padding-left:var(--pane-padding,var(--pane-x-padding-default))}table.fixed-layout{table-layout:fixed}table td.thin,table th.thin{white-space:nowrap;width:.01%!important}table thead th{font-weight:700;vertical-align:top}body.ltr table thead th{text-align:left}body.rtl table thead th{text-align:right}table:not(.data) td,table:not(.data) th{padding-bottom:7px;padding-top:7px}table:not(.data) td:not(:first-child),table:not(.data) th:not(:first-child){padding-left:12px}table:not(.data) td:not(:last-child),table:not(.data) th:not(:last-child){padding-right:12px}table.data td,table.data th{box-sizing:border-box;padding-left:12px;padding-right:12px;position:relative}table.data td.checkbox-cell,table.data td.vuetable-th-slot-checkbox,table.data th.checkbox-cell,table.data th.vuetable-th-slot-checkbox{box-sizing:content-box;min-width:var(--checkbox-size);position:relative;width:var(--checkbox-size)!important}table.data td.checkbox-cell div.checkbox,table.data td.checkbox-cell input.checkbox+label,table.data td.vuetable-th-slot-checkbox div.checkbox,table.data td.vuetable-th-slot-checkbox input.checkbox+label,table.data th.checkbox-cell div.checkbox,table.data th.checkbox-cell input.checkbox+label,table.data th.vuetable-th-slot-checkbox div.checkbox,table.data th.vuetable-th-slot-checkbox input.checkbox+label{position:absolute;top:calc(50% - .5rem)}table.data th{font-weight:700}body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data thead:first-child tr:first-child th:first-child{border-top-left-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data thead:first-child tr:first-child th:first-child{border-top-right-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data thead:first-child tr:first-child th:first-child{border-bottom-left-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data thead:first-child tr:first-child th:first-child{border-bottom-right-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data thead:first-child tr:first-child th:last-child{border-top-right-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data thead:first-child tr:first-child th:last-child{border-top-left-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data thead:first-child tr:first-child th:last-child{border-bottom-right-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data thead:first-child tr:first-child th:last-child{border-bottom-left-radius:var(--border-radius,var(--small-border-radius))}table.data thead td,table.data thead th{background-color:var(--gray-050);cursor:default;width:auto}table.data thead td,table.data thead th:not(.orderable){padding-bottom:var(--s);padding-top:var(--s)}table.data thead th{vertical-align:middle;white-space:nowrap}table.data thead th.orderable{padding:0!important;position:relative}body:not(.dragging) table.data thead th.orderable:not(.ordered):hover{background-color:var(--gray-100)}table.data thead th.orderable.ordered{background-color:var(--light-sel-color)}table.data thead th.orderable.ordered:not(.loading) button:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;position:absolute;top:2px;top:calc(50% - 3px);transform:rotate(225deg);width:.4375rem}body.ltr table.data thead th.orderable.ordered:not(.loading) button:after{right:var(--m)}body.rtl table.data thead th.orderable.ordered:not(.loading) button:after{left:var(--m)}table.data thead th.orderable.ordered:not(.loading).desc button:after{transform:rotate(45deg)}table.data thead th.orderable button{font:inherit;padding:var(--pane-padding,var(--m)) var(--m);position:relative;width:100%}body.ltr table.data thead th.orderable button{padding-right:35px}body.rtl table.data thead th.orderable button{padding-left:35px}body.ltr table.data thead th.orderable button{text-align:left}body.rtl table.data thead th.orderable button{text-align:right}table.data thead th.orderable button:focus{z-index:1}table.data thead th:not(.loading) .spinner{display:none}table.data thead th .spinner{position:absolute;top:calc(50% - 6px);--size:12px}body.ltr table.data thead th .spinner{right:8px}body.rtl table.data thead th .spinner{left:8px}table.data tbody tr{--hover-bg-color:var(--gray-050);--selected-bg-color:var(--dark-sel-color)}table.data tbody tr:not(.disabled):hover td,table.data tbody tr:not(.disabled):hover th{background-color:var(--hover-bg-color)}table.data tbody tr:not(.disabled):focus{position:relative;z-index:1}table.data tbody tr:not(.disabled).active-drop-target,table.data tbody tr:not(.disabled).sel{--text-color:var(--white);--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl))}table.data tbody tr:not(.disabled).active-drop-target td,table.data tbody tr:not(.disabled).active-drop-target th,table.data tbody tr:not(.disabled).sel td,table.data tbody tr:not(.disabled).sel th{background-color:var(--selected-bg-color);color:var(--white)}table.data tbody td,table.data tbody th{background-clip:padding-box;max-width:33vw;padding-bottom:7px;padding-top:7px}table.data tbody td.timestamp{color:var(--light-text-color);vertical-align:bottom;white-space:nowrap}body.ltr table.data tbody td.timestamp{text-align:right}body.rtl table.data tbody td.timestamp{text-align:left}table.data thead+tbody tr td,table.data thead+tbody tr th,table.data tr+tr td,table.data tr+tr th{border-top:1px solid transparent}table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) td,table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) th{border-top-color:var(--gray-300)}table.collapsed{width:auto}table.collapsed,table.collapsed tbody,table.collapsed tbody td,table.collapsed tbody th,table.collapsed tbody tr{border:none;display:block;padding:0;white-space:normal;width:auto!important}body.ltr table.collapsed,body.ltr table.collapsed tbody,body.ltr table.collapsed tbody td,body.ltr table.collapsed tbody th,body.ltr table.collapsed tbody tr{text-align:left}body.rtl table.collapsed,body.rtl table.collapsed tbody,body.rtl table.collapsed tbody td,body.rtl table.collapsed tbody th,body.rtl table.collapsed tbody tr{text-align:right}table.collapsed thead{display:none}table.collapsed tbody tr{border-bottom:1px dotted var(--hairline-color);padding:6px 0}table.collapsed tbody tr:after{clear:both;content:"";display:block;height:0;visibility:hidden}table.collapsed tbody td,table.collapsed tbody th{padding:2px 0!important}table.collapsed tbody td:empty{display:none}body.ltr table.collapsed tbody [data-title]{margin-right:0}body.rtl table.collapsed tbody [data-title]{margin-left:0}table.collapsed tbody [data-title]:before{content:attr(data-title) ":";font-weight:700;margin-right:5px}table.collapsed tbody [data-title] form{display:inline-block}.datatablesorthelper,.editabletablesorthelper{background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.datatablesorthelper,.datatablesorthelper .chip,.datatablesorthelper a{cursor:move!important}.datatablesorthelper tr:first-child td,.datatablesorthelper tr:first-child th{border-top:none!important}.datatablesorthelper tr:last-child td,.datatablesorthelper tr:last-child th{border-bottom:none!important}.datatablesorthelper th .toggle{display:none!important}.card,.chip{background-color:var(--custom-bg-color,var(--gray-050));color:var(--custom-text-color,var(--text-color))}.chip{align-items:center;border-radius:var(--large-border-radius);cursor:default;display:inline-flex;font-weight:400;gap:var(--xs);max-width:100%;padding:0 var(--s);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chip.small{flex-direction:row;min-height:calc(1.625rem + 8px);--thumb-size:1.875rem}body.ltr .chip.small>.thumb{margin:0 2px 0 -2px}body.rtl .chip.small>.thumb{margin:0 -2px 0 2px}.chip.small>.thumb.cp-icon{--thumb-size:1rem}.chip.large{flex-direction:column;--thumb-size:120px;min-width:calc(var(--s)*2 + var(--thumb-size));padding-bottom:var(--xs);padding-top:var(--xs);width:100%}.chip.large .chip-content{width:100%}.chip .chip-content{align-items:center;display:flex;flex-direction:row;gap:var(--s);max-width:100%}body.ltr .chip .chip-content .icon,body.ltr .chip .chip-content .status{margin-right:0}body.rtl .chip .chip-content .icon,body.rtl .chip .chip-content .status{margin-left:0}.chip .chip-content .icon{margin:-4px -1px 0}.chip .chip-content .chip-actions{margin-left:auto}.chip.sel,li.active-drop-target .chip,li.sel .chip{--text-color:var(--white);--custom-text-color:var(--white)!important;--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl));background-color:var(--custom-sel-bg-color,var(--dark-sel-color))!important;color:var(--white)}.chip.sel .cp-icon,li.active-drop-target .chip .cp-icon,li.sel .chip .cp-icon{--icon-color:var(--white)!important}.chip.sel,.sel .chip{cursor:default}.chip.sel .thumb,.sel .chip .thumb{filter:brightness(.85)}.chip.sel .thumb img,.sel .chip .thumb img{box-shadow:0 0 0 1px rgba(96,109,123,.1),0 6px 4px -4px rgba(96,109,123,.2)}.offset-drag-helper .chip{background-color:var(--gray-050);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.chip>.thumb{align-items:center;display:flex;flex:0 0 auto;height:var(--thumb-size);justify-content:center;position:relative;width:var(--thumb-size)}.chip>.thumb.rounded img,.chip>.thumb.rounded svg{border:var(--xs) solid transparent;border-radius:50%}.chip>.thumb.checkered img{background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0);background-position:0 0,4px 0,4px -4px,0 4px;background-size:8px 8px}.chip>.thumb img,.chip>.thumb svg{border-radius:var(--small-border-radius);display:block;flex-shrink:0;max-height:100%;max-width:100%}.chip>.thumb svg{width:100%}.cp-icon{align-items:center;display:flex;justify-content:center;max-width:var(--icon-size)}.cp-icon,.cp-icon svg{height:var(--icon-size);width:var(--icon-size)}.cp-icon svg{max-height:var(--icon-size)!important;max-width:var(--icon-size)!important}.cp-icon svg circle,.cp-icon svg ellipse,.cp-icon svg line,.cp-icon svg path,.cp-icon svg polygon,.cp-icon svg polyline,.cp-icon svg rect,.cp-icon svg text{fill:var(--icon-color,var(--ui-control-color));stroke-width:0}.cp-icon.large{--icon-size:1.25rem}.cp-icon.small{--icon-size:0.875rem}.cp-icon.puny{--icon-size:0.75rem}.cards,.chips{display:flex;--custom-bg-color:initial;--custom-text-color:initial;--custom-sel-bg-color:initial}.cards:not(.inline-chips),.chips:not(.inline-chips){flex-direction:column}.cards li,.chips li{max-width:100%}.cards{gap:var(--s)}.chips{align-items:flex-start;gap:var(--xs)}.inline-chips{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.inline-chips .chip{margin:0!important}.elements.inline-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.card{align-items:stretch;cursor:default;display:flex;flex-direction:row;gap:var(--m);padding:var(--m);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.card,.card:after{border-radius:var(--large-border-radius)}.card.sel,li.sel .card{--text-color:var(--white);--custom-text-color:var(--white)!important;--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl));background-color:var(--custom-sel-bg-color,var(--dark-sel-color))!important;color:var(--white)}.card.sel>.thumb,li.sel .card>.thumb{background-color:var(--dark-sel-color)!important;filter:brightness(.85)}.card>.thumb{align-items:stretch;background-color:var(--gray-100);display:flex;margin:calc(var(--m)*-1);min-height:calc(var(--m)*2 + var(--lh)*3 + var(--xs));min-width:128px;overflow:hidden;position:relative;width:128px}body.ltr .card>.thumb{margin-right:0}body.rtl .card>.thumb{margin-left:0}.card>.thumb:after{bottom:0;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);content:"";display:block;font-size:0;position:absolute;top:0;width:10px}body.ltr .card>.thumb:after{right:-10px}body.rtl .card>.thumb:after{left:-10px}body.ltr .card>.thumb,body.ltr .card>.thumb:after{border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .card>.thumb,body.rtl .card>.thumb:after{border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.card>.thumb img,.card>.thumb svg{max-height:128px;-o-object-fit:cover;object-fit:cover;width:100%}body.ltr .card>.cp-icon{margin:0 -4px 0 -2px}body.rtl .card>.cp-icon{margin:0 -2px 0 -4px}.card .card-content,.card .card-content .card-body{display:flex;flex:1;flex-direction:column;gap:var(--xs)}.card .card-content{flex:1 0 0!important;margin:calc((1rem - var(--lh))/2) 0;overflow:hidden;position:relative;--focus-ring:var(--inner-focus-ring)}.card .card-content .card-heading{align-items:center;display:flex;flex-direction:row;gap:5px}.card .card-content .card-heading .status{flex:0 0 10px;margin:0}.card .card-content .card-heading .label{font-weight:600}.card .card-content .card-body:empty{display:none}.card .card-content .card-body>*{--max-lines:2;margin:0;max-height:calc(var(--lh)*var(--max-lines));overflow:hidden;text-wrap:pretty}.card .card-content .card-body .checkbox-preview-label{display:inline;font-style:italic;margin-inline-start:5px}.card>.card-actions-container{align-items:flex-start!important;display:flex;position:relative}.card-grid{display:grid!important;gap:var(--s)!important;grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}.card-grid>li{border-radius:var(--large-border-radius)}.card-grid>li>.card{height:100%;margin:0!important}.lp-editor-container .card-grid{grid-template-columns:minmax(0,1fr)}.context-label,.context-menu-container{align-items:center;border:1px solid var(--medium-hairline-color);border-radius:calc(var(--touch-target-size)/2);color:var(--light-text-color);display:inline-flex;font-size:11px;font-weight:400;height:var(--touch-target-size);padding:0 var(--s);text-decoration:none!important}body.ltr .context-label,body.ltr .context-menu-container{margin-left:var(--xs)}body.rtl .context-label,body.rtl .context-menu-container{margin-right:var(--xs)}body.ltr .context-menu-container{padding-right:0}body.rtl .context-menu-container{padding-left:0}body.ltr .context-menu-container .menubtn:not(.action-btn){margin:0 -1px 0 0}body.rtl .context-menu-container .menubtn:not(.action-btn){margin:0 0 0 -1px}body.ltr .context-menu-container .menubtn:not(.action-btn){padding-right:2px!important}body.rtl .context-menu-container .menubtn:not(.action-btn){padding-left:2px!important}body.ltr .context-menu-container .menubtn:not(.action-btn){border-left:1px solid var(--medium-hairline-color)}body.rtl .context-menu-container .menubtn:not(.action-btn){border-right:1px solid var(--medium-hairline-color)}body.ltr .context-menu-container .menubtn:not(.action-btn){border-radius:0 calc(var(--touch-target-size)/2) calc(var(--touch-target-size)/2) 0}body.rtl .context-menu-container .menubtn:not(.action-btn){border-radius:calc(var(--touch-target-size)/2) 0 0 calc(var(--touch-target-size)/2)}.context-menu-container .menubtn:not(.action-btn):hover{border-color:var(--dark-hairline-color)!important}.context-menu-container>*{display:inline-block}body.ltr .context-menu-container>*{padding-right:var(--s)}body.rtl .context-menu-container>*{padding-left:var(--s)}.context-menu-container .menubtn:not(.action-btn):only-child,.context-menu-container .visually-hidden:first-child+.menubtn:not(.action-btn):last-child{border-left:none!important;border-radius:calc(var(--touch-target-size)/2)!important;margin:0 calc(var(--s)*-1)}.card .checkbox:before,.chip .checkbox:before{box-shadow:none!important}.card .label,.chip .label{align-items:center;display:flex;gap:var(--xs);overflow:hidden}.card .label .label-link,.chip .label .label-link{flex:1 1 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .label .label-link:focus,.chip .label .label-link:focus{box-shadow:var(--inner-focus-ring)}.card .label .segment:after,.chip .label .segment:after{border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;content:"";display:inline-flex!important;display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;top:-2px;width:.4375rem}body.ltr .card .label .segment:after,body.ltr .chip .label .segment:after{margin:0 5px 0 2px}body.rtl .card .label .segment:after,body.rtl .chip .label .segment:after{margin:0 2px 0 5px}body.ltr .card .label .segment:after,body.ltr .chip .label .segment:after{transform:rotate(-45deg)}body.rtl .card .label .segment:after,body.rtl .chip .label .segment:after{transform:rotate(135deg)}.sel .card .label .segment:after,.sel .chip .label .segment:after{border:solid var(--white);border-width:0 .0625rem .0625rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .sel .card .label .segment:after,body.ltr .sel .chip .label .segment:after{transform:rotate(-45deg)}body.rtl .sel .card .label .segment:after,body.rtl .sel .chip .label .segment:after{transform:rotate(135deg)}.card>.card-actions-container>.card-actions,.card>.chip-content>.chip-actions,.chip>.card-actions-container>.card-actions,.chip>.chip-content>.chip-actions{align-items:center;display:flex;flex-direction:row;gap:var(--s);min-height:1rem}.card>.card-actions-container>.card-actions:empty,.card>.chip-content>.chip-actions:empty,.chip>.card-actions-container>.card-actions:empty,.chip>.chip-content>.chip-actions:empty{display:none}.card>.card-actions-container>.card-actions>.status,.card>.chip-content>.chip-actions>.status,.chip>.card-actions-container>.card-actions>.status,.chip>.chip-content>.chip-actions>.status{margin:0}.card>.card-actions-container>.card-actions>.action-btn,.card>.card-actions-container>.card-actions>.move,.card>.chip-content>.chip-actions>.action-btn,.card>.chip-content>.chip-actions>.move,.chip>.card-actions-container>.card-actions>.action-btn,.chip>.card-actions-container>.card-actions>.move,.chip>.chip-content>.chip-actions>.action-btn,.chip>.chip-content>.chip-actions>.move{height:var(--touch-target-size);margin:0 -4px;width:var(--touch-target-size)}.card>.card-actions-container>.card-actions>.action-btn:before,.card>.card-actions-container>.card-actions>.move:before,.card>.chip-content>.chip-actions>.action-btn:before,.card>.chip-content>.chip-actions>.move:before,.chip>.card-actions-container>.card-actions>.action-btn:before,.chip>.card-actions-container>.card-actions>.move:before,.chip>.chip-content>.chip-actions>.action-btn:before,.chip>.chip-content>.chip-actions>.move:before{color:var(--custom-text-color,var(--ui-control-color))}.card>.card-actions-container>.card-actions .action-btn,.card>.chip-content>.chip-actions .action-btn,.chip>.card-actions-container>.card-actions .action-btn,.chip>.chip-content>.chip-actions .action-btn{background-color:transparent}body.ltr .card>.card-actions-container>.card-actions .action-btn:before,body.ltr .card>.chip-content>.chip-actions .action-btn:before,body.ltr .chip>.card-actions-container>.card-actions .action-btn:before,body.ltr .chip>.chip-content>.chip-actions .action-btn:before{margin-right:0!important}body.rtl .card>.card-actions-container>.card-actions .action-btn:before,body.rtl .card>.chip-content>.chip-actions .action-btn:before,body.rtl .chip>.card-actions-container>.card-actions .action-btn:before,body.rtl .chip>.chip-content>.chip-actions .action-btn:before{margin-left:0!important}.card>.card-actions-container>.card-actions .action-btn:active,.card>.card-actions-container>.card-actions .action-btn:hover,.card>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.card>.chip-content>.chip-actions .action-btn:active,.card>.chip-content>.chip-actions .action-btn:hover,.card>.chip-content>.chip-actions .action-btn[aria-expanded=true],.chip>.card-actions-container>.card-actions .action-btn:active,.chip>.card-actions-container>.card-actions .action-btn:hover,.chip>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.chip>.chip-content>.chip-actions .action-btn:active,.chip>.chip-content>.chip-actions .action-btn:hover,.chip>.chip-content>.chip-actions .action-btn[aria-expanded=true]{-webkit-backdrop-filter:brightness(90%);backdrop-filter:brightness(90%)}.card>.card-actions-container>.card-actions .move,.card>.chip-content>.chip-actions .move,.chip>.card-actions-container>.card-actions .move,.chip>.chip-content>.chip-actions .move{margin-top:-3px!important}.card.error .label .label-link,.chip.error .label .label-link{color:var(--error-color)}.element-index .source-path{background-color:var(--gray-050);border-radius:3px;--ui-control-bg-color:var(--light-sel-color);--ui-control-hover-bg-color:#bdcbdb;--ui-control-active-bg-color:#acbed2}.element-index .source-path .chevron-btns{background:#fff;display:inline-flex;position:relative;--ui-control-height:1.875rem}.element-index .source-path .chevron-btns:before{border-top:calc(var(--ui-control-height)/2) solid #f3f7fc;content:"";display:block;font-size:0;height:0;position:absolute;top:0;width:0}body.ltr .element-index .source-path .chevron-btns:before{right:0}body.rtl .element-index .source-path .chevron-btns:before{left:0}body.ltr .element-index .source-path .chevron-btns:before{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .element-index .source-path .chevron-btns:before{border-right:calc(var(--ui-control-height)/2) solid transparent}.element-index .source-path .chevron-btns:after{border-bottom:calc(var(--ui-control-height)/2) solid #f3f7fc;content:"";display:block;font-size:0;position:absolute;top:calc(var(--ui-control-height)/2)}body.ltr .element-index .source-path .chevron-btns:after{right:0}body.rtl .element-index .source-path .chevron-btns:after{left:0}body.ltr .element-index .source-path .chevron-btns:after{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .element-index .source-path .chevron-btns:after{border-right:calc(var(--ui-control-height)/2) solid transparent}.element-index .source-path .chevron-btns .btn{--ui-control-border-radius:3px}.element-index .source-path .btn.settings{box-shadow:0 0 0 2px var(--white)}.element-index.main .source-path{margin:-22px calc(var(--padding)*-1 + 2px) 24px}.elementselectormodal .element-index .source-path{margin-bottom:2px}.element-index.pane .toolbar{background-color:var(--gray-050);border-radius:calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) 0 0;box-shadow:0 1px 0 var(--hairline-color);margin:calc(var(--pane-padding)*-1) calc(var(--pane-padding)*-1) var(--pane-padding)!important;padding:var(--pane-padding);position:relative;z-index:2}.element-index.pane .header{background-color:transparent;border-bottom:1px solid var(--hairline-color);padding-bottom:var(--pane-padding);padding-top:var(--pane-padding)}.element-index.pane .elements{--border-radius:0}.element-index.pane .elements .tableview table.data thead td,.element-index.pane .elements .tableview table.data thead th{border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements .tableview table.data thead td:not(.ordered),.element-index.pane .elements .tableview table.data thead th:not(.ordered){background-color:transparent}.element-index.pane .footer{background:transparent;border-radius:0 0 calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px)!important;border-top:1px solid var(--hairline-color);box-shadow:none}.elements{position:relative}.elements:not(.busy) .update-spinner{display:none}.elements.busy{min-height:72px}.elements.busy:after{background:hsla(0,0%,100%,.75);border-radius:var(--large-border-radius);content:"";display:block;font-size:0;height:100%;left:calc(var(--pane-padding, 24px)*-1);position:absolute;top:0;width:calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));z-index:100}.elements .header{background-color:var(--gray-050);border-radius:var(--border-radius,var(--small-border-radius));box-shadow:none;margin:calc(var(--xl)*-1 + 2px) calc(var(--padding)*-1 + 2px) var(--xl);padding:var(--s)}.elements .header:after{content:""}.elements .header .selectallcontainer{align-items:center;cursor:default;display:flex;gap:5px}.elements .tableview tr.draggee td,.elements .tableview tr.draggee th,.elements .thumbsview li.draggee{opacity:.25}.elements .tableview th .move,.elements .tableview th .toggle{align-items:center;display:flex;height:var(--touch-target-size);justify-content:center;position:absolute;top:50%;transform:translateY(-50%);width:var(--touch-target-size)}body.ltr .elements .tableview th .move,body.ltr .elements .tableview th .toggle{margin-left:calc(var(--touch-target-size)*-1)}body.rtl .elements .tableview th .move,body.rtl .elements .tableview th .toggle{margin-right:calc(var(--touch-target-size)*-1)}.elements .tableview th .move{font-size:11px;text-decoration:none}.elements .tableview th .toggle{border-radius:50%;padding:4px;text-align:center}body.ltr .elements .tableview th .move+.toggle{margin-left:calc(var(--touch-target-size)*-2)}body.rtl .elements .tableview th .move+.toggle{margin-right:calc(var(--touch-target-size)*-2)}.elements .tableview th .enabled-label{margin-left:var(--xs)}.elements .tableview .chip{background-color:transparent}.elements .thumbsview{display:grid;gap:var(--xs);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.elements .thumbsview li{border-radius:var(--large-border-radius);max-width:226px;position:relative}body.ltr .elements .thumbsview li{margin:0 1px 1px 0}body.rtl .elements .thumbsview li{margin:0 0 1px 1px}.elements .thumbsview li:hover .chip{background-color:var(--gray-050)}.elements .thumbsview li.sel a{cursor:pointer!important}.elements .thumbsview li.sel a:hover{text-decoration:underline}.elements .thumbsview .chip.large{width:100%}.export-form{position:relative}.export-form .spinner{bottom:0;position:absolute}body.ltr .export-form .spinner{right:-24px}body.rtl .export-form .spinner{left:-24px}.structure{position:relative;z-index:1}body.ltr .structure li{padding-left:8px}body.rtl .structure li{padding-right:8px}.structure li.collapsed>ul{display:none}.structure li .add.active,.structure li .row:hover>.icon,.structure li.draghelper>.row .move{opacity:1}.structure li.draghelper>.row .add{opacity:0}.structure li.draghelper>.row .move:before{color:var(--link-color)}.structure li.draginsertion{background-color:var(--link-color)!important;border-radius:1px;height:2px;position:relative}body.ltr .structure li.draginsertion{margin:-1px 0 -1px 8px}body.rtl .structure li.draginsertion{margin:-1px 8px -1px 0}body.ltr .structure li.draginsertion{padding-left:0}body.rtl .structure li.draginsertion{padding-right:0}body.ltr .structure li.draginsertion{border-left:none}body.rtl .structure li.draginsertion{border-right:none}.structure li .toggle{padding:4px;position:relative;z-index:1}body.ltr .structure li .toggle{float:left}body.rtl .structure li .toggle{float:right}body.ltr .structure li .toggle{margin:10px -8px 0 -12px}body.rtl .structure li .toggle{margin:10px -12px 0 -8px}.structure li .row:after{clear:both;content:"";display:block;height:0;visibility:hidden}.structure li .add,.structure li .move{opacity:0;transition:opacity .1s linear}body.ltr .structure li .add,body.ltr .structure li .move{margin:5px 5px 0 0}body.rtl .structure li .add,body.rtl .structure li .move{margin:5px 0 0 5px}.structure li .add{padding:0 5px}.structure li .add:before{color:var(--dark-hairline-color);content:"downangle"}.structure li .add.active:before,.structure li .add:not(.disabled):hover:before{color:var(--link-color)}body.ltr .structure li .checkbox{float:left}body.rtl .structure li .checkbox{float:right}body.ltr .structure li .checkbox{margin:7px 0 0 7px}body.rtl .structure li .checkbox{margin:7px 7px 0 0}body.ltr .structure ul{margin-left:-3px}body.rtl .structure ul{margin-right:-3px}.structure ul li{background-repeat:no-repeat;--background-position-x:0;--background-position-y:-6px;background-position:var(--background-position-x) var(--background-position-y)}body.ltr .structure ul li{padding-left:38px}body.rtl .structure ul li{padding-right:38px}body.ltr .structure ul li{background-image:url(../images/branch.png)}body.rtl .structure ul li{--background-position-x:100%;background-image:url(../images/branch_rtl.png)}body.ltr .structure ul li:not(:last-child):not(.last){padding-left:37px}body.rtl .structure ul li:not(:last-child):not(.last){padding-right:37px}body.ltr .structure ul li:not(:last-child):not(.last){border-left:1px solid var(--gray-200)}body.rtl .structure ul li:not(:last-child):not(.last){border-right:1px solid var(--gray-200)}body.ltr .structure ul li:not(:last-child):not(.last){--background-position-x:-1px}body.rtl .structure ul li:not(:last-child):not(.last){--background-position-x:calc(100% + 1px)}body.ltr .structure ul li.draginsertion{margin-left:38px}body.rtl .structure ul li.draginsertion{margin-right:38px}.structure .row.draghover .chip{border-radius:15px;box-shadow:inset 0 0 0 2px var(--link-color);z-index:2}.structure .row.droptarget{border-radius:5px;box-shadow:inset 0 0 0 2px var(--link-color)}.componentselect .components:not(:empty)+.flex,.elementselect .elements:not(:empty)+.flex{margin-top:var(--s)}.elementselect{min-height:34px;position:relative}.elementselect .btn,.elementselect .flex{clear:both}.elementselect .structure .chip{margin-top:var(--xs)}body.ltr .elementselect .structure>li{padding-left:0}body.rtl .elementselect .structure>li{padding-right:0}body.ltr .elementselect .structure ul{margin-left:14px}body.rtl .elementselect .structure ul{margin-right:14px}.elementselect .structure ul li{--background-position-y:0}.nested-element-cards{display:flex;flex-direction:column;gap:var(--s)}.nested-element-cards>.pane{margin:0}table.editable{border:1px solid var(--gray-200);border-radius:var(--large-border-radius)}table.editable td.action,table.editable td.heading,table.editable th{background-color:var(--gray-050);color:var(--medium-text-color);font-weight:400}table.editable tbody tr th,table.editable thead tr th{padding:6px 10px}table.editable thead tr th{border-bottom:1px solid var(--hairline-color)}body.ltr table.editable thead tr th.has-info{padding-right:calc(15px + 1em)}body.rtl table.editable thead tr th.has-info{padding-left:calc(15px + 1em)}table.editable thead tr th span.info{margin-left:5px;position:absolute}table.editable tbody tr:not(:first-child) td,table.editable tbody tr:not(:first-child) th{border-top:1px solid var(--hairline-color)}body.ltr table.editable tbody tr:last-child td:first-child{border-bottom-left-radius:var(--large-border-radius)}body.rtl table.editable tbody tr:last-child td:first-child{border-bottom-right-radius:var(--large-border-radius)}body.ltr table.editable tbody tr:last-child td:first-child input.text,body.ltr table.editable tbody tr:last-child td:first-child textarea{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}body.rtl table.editable tbody tr:last-child td:first-child input.text,body.rtl table.editable tbody tr:last-child td:first-child textarea{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}body.ltr table.editable tbody tr td:not(:first-child),body.ltr table.editable tbody tr th~td:not(.hidden)~td{border-left:1px solid var(--hairline-color)}body.rtl table.editable tbody tr td:not(:first-child),body.rtl table.editable tbody tr th~td:not(.hidden)~td{border-right:1px solid var(--hairline-color)}body.ltr table.editable tbody tr th~td:not(:first-child){border-left:1px solid #dbdddf}body.rtl table.editable tbody tr th~td:not(:first-child){border-right:1px solid #dbdddf}table.editable tbody tr td{background-color:var(--white);padding:4px 10px;text-align:center;vertical-align:top}table.editable tbody tr td.focus{box-shadow:inset 0 0 0 1px var(--hairline-color);position:relative}table.editable tbody tr td.textual{padding:0}table.editable tbody tr td.textual .editable-table-preview{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual .editable-table-preview{text-align:left}body.rtl table.editable tbody tr td.textual .editable-table-preview{text-align:right}table.editable tbody tr td.textual .editable-table-preview+textarea{height:0;min-height:0;opacity:0;padding-bottom:0;padding-top:0}table.editable tbody tr td.textual textarea{resize:none}table.editable tbody tr td.textual pre{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual pre{text-align:left}body.rtl table.editable tbody tr td.textual pre{text-align:right}table.editable tbody tr td.lightswitch-cell{padding-bottom:9px;padding-top:9px}table.editable tbody tr td.lightswitch-cell .lightswitch{display:block;margin:0 auto}table.editable tbody tr td.checkbox-cell{padding-bottom:10px;padding-top:10px}table.editable tbody tr td.checkbox-cell .checkbox-wrapper{display:block;height:16px;margin:-2px auto 0;width:16px}table.editable tbody tr td.error{box-shadow:inset 0 0 0 1px var(--error-color)}table.editable tbody tr td.disabled{opacity:1;position:relative}table.editable tbody tr td.disabled:after{background-color:rgba(243,247,252,.75);content:"";font-size:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}table.editable tbody tr td.action{padding:4px 7px}body.ltr table.editable tbody tr td.action+td.action{border-left:none}body.rtl table.editable tbody tr td.action+td.action{border-right:none}body.ltr table.editable tbody tr td.action+td.action{padding-left:0}body.rtl table.editable tbody tr td.action+td.action{padding-right:0}table.editable tbody tr td .flex>*{margin-bottom:0}table.editable tbody .editable-table-preview,table.editable tbody input.text,table.editable tbody pre,table.editable tbody textarea,table.editable tbody textarea.text{background-color:transparent;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;display:block;line-height:20px;overflow:hidden;padding:7px 10px;transition:none;width:100%}table.editable tbody .color-container{display:block;position:relative}table.editable tbody .color-container .color-input,table.editable tbody .color-container>.color{margin-bottom:0}table.editable tbody .color-container>.color{position:absolute;top:10px;z-index:1}body.ltr table.editable tbody .color-container>.color{left:10px}body.rtl table.editable tbody .color-container>.color{right:10px}body.ltr table.editable tbody .color-container .color-hex-indicator{left:32px}body.rtl table.editable tbody .color-container .color-hex-indicator{right:32px}body.ltr table.editable tbody .color-container .color-input{padding-left:calc(32px + 1em)}body.rtl table.editable tbody .color-container .color-input{padding-right:calc(32px + 1em)}table.editable tbody .datewrapper,table.editable tbody .timewrapper{display:block;width:calc(100% - 29px)}table.editable tbody .datewrapper .text+div[data-icon],table.editable tbody .timewrapper .text+div[data-icon]{top:6px}body.ltr table.editable tbody .datewrapper .text+div[data-icon],body.ltr table.editable tbody .timewrapper .text+div[data-icon]{left:10px}body.rtl table.editable tbody .datewrapper .text+div[data-icon],body.rtl table.editable tbody .timewrapper .text+div[data-icon]{right:10px}table.editable:not(.static) td.textual{cursor:text}table.editable+.btn.add{display:block;width:100%}table.editable:not(.hidden)+.btn.add{border-radius:0 0 var(--medium-border-radius) var(--medium-border-radius);border-top-width:0}.border-box+.buttons,.shadow-box+.buttons{margin-top:7px}body.ltr .tree ul,body.ltr ul.tree{margin-left:20px}body.rtl .tree ul,body.rtl ul.tree{margin-right:20px}body.ltr .tree li .toggle{margin:7px 0 0 -15px}body.rtl .tree li .toggle{margin:7px -15px 0 0}.status{background-clip:border-box;border:1px solid transparent;border-radius:100%;box-sizing:border-box;display:inline-block;flex:0 0 auto;height:.75rem;position:relative;width:.75rem}body.ltr .status{margin-right:10px}body.rtl .status{margin-left:10px}body.use-shapes .status.all{background-image:linear-gradient(30deg,#184cef,#e5422b);rotate:45deg}body.use-shapes .status.pending{background-color:transparent;border-color:transparent transparent var(--pending-color) transparent;border-radius:1px;border-style:solid;border-width:0 5px 10px}body.use-shapes .status.all,body.use-shapes .status.expired,body.use-shapes .status.off,body.use-shapes .status.suspended{border-radius:2px;transform:scale(90%)}.status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:var(--ui-control-color)}.status.all{background-image:linear-gradient(60deg,#184cef,#e5422b);background-origin:border-box}.status.active,.status.enabled,.status.live,.status.on{background-color:var(--enabled-color)}.bg-red,.status.expired,.status.off,.status.red,.status.suspended{background-color:var(--disabled-color)}.status.warning{background-color:var(--warning-color)}.bg-orange,.status.orange,.status.pending{background-color:var(--pending-color)}.bg-amber,.status.amber{background-color:var(--amber-500)}.bg-yellow,.status.yellow{background-color:var(--yellow-500)}.bg-lime,.status.lime{background-color:var(--lime-500)}.bg-green,.status.green{background-color:var(--green-600)}.bg-emerald,.status.emerald{background-color:var(--emerald-500)}.bg-teal,.bg-turquoise,.status.teal,.status.turquoise{background-color:var(--teal-500)}.bg-cyan,.status.cyan{background-color:var(--cyan-500)}.bg-sky,.status.sky{background-color:var(--sky-500)}.bg-blue,.status.blue{background-color:var(--blue-600)}.bg-indigo,.status.indigo{background-color:var(--indigo-500)}.bg-violet,.status.violet{background-color:var(--violet-500)}.bg-purple,.status.purple{background-color:var(--purple-500)}.bg-fuchsia,.status.fuchsia{background-color:var(--fuchsia-500)}.bg-pink,.status.pink{background-color:var(--pink-500)}.bg-rose,.status.rose{background-color:var(--rose-500)}.status.light{background-color:var(--gray-100)}.bg-white,.status.white{background-color:var(--white)}.bg-black,.status.black{background-color:var(--gray-800)}.bg-gray,.bg-grey,.status.gray,.status.grey{background-color:var(--gray-300)}.status.disabled,.status.white{opacity:1}.cp-icon.warning,.icon.warning,[data-icon-after].warning,[data-icon].warning{--icon-color:var(--warning-color)}.cp-icon.red,.icon.red,[data-icon-after].red,[data-icon].red{--icon-color:var(--disabled-color)}.cp-icon.orange,.icon.orange,[data-icon-after].orange,[data-icon].orange{--icon-color:var(--pending-color)}.cp-icon.amber,.icon.amber,[data-icon-after].amber,[data-icon].amber{--icon-color:var(--amber-500)}.cp-icon.yellow,.icon.yellow,[data-icon-after].yellow,[data-icon].yellow{--icon-color:var(--yellow-500)}.cp-icon.lime,.icon.lime,[data-icon-after].lime,[data-icon].lime{--icon-color:var(--lime-500)}.cp-icon.green,.icon.green,[data-icon-after].green,[data-icon].green{--icon-color:var(--green-500)}.cp-icon.emerald,.icon.emerald,[data-icon-after].emerald,[data-icon].emerald{--icon-color:var(--emerald-500)}.cp-icon.teal,.icon.teal,[data-icon-after].teal,[data-icon].teal{--icon-color:var(--teal-500)}.cp-icon.cyan,.icon.cyan,[data-icon-after].cyan,[data-icon].cyan{--icon-color:var(--cyan-500)}.cp-icon.sky,.icon.sky,[data-icon-after].sky,[data-icon].sky{--icon-color:var(--sky-500)}.cp-icon.blue,.icon.blue,[data-icon-after].blue,[data-icon].blue{--icon-color:var(--blue-600)}.cp-icon.indigo,.icon.indigo,[data-icon-after].indigo,[data-icon].indigo{--icon-color:var(--indigo-500)}.cp-icon.violet,.icon.violet,[data-icon-after].violet,[data-icon].violet{--icon-color:var(--violet-500)}.cp-icon.purple,.icon.purple,[data-icon-after].purple,[data-icon].purple{--icon-color:var(--purple-500)}.cp-icon.fuchsia,.icon.fuchsia,[data-icon-after].fuchsia,[data-icon].fuchsia{--icon-color:var(--fuchsia-500)}.cp-icon.pink,.icon.pink,[data-icon-after].pink,[data-icon].pink{--icon-color:var(--pink-500)}.cp-icon.rose,.icon.rose,[data-icon-after].rose,[data-icon].rose{--icon-color:var(--rose-500)}.cp-icon.white,.icon.white,[data-icon-after].white,[data-icon].white{--icon-color:var(--white)}.cp-icon.black,.icon.black,[data-icon-after].black,[data-icon].black{--icon-color:var(--gray-800)}.cp-icon.gray,.icon.gray,[data-icon-after].gray,[data-icon].gray{--icon-color:var(--gray-300)}.amber[data-icon-after]:after,.amber[data-icon]:before,.black[data-icon-after]:after,.black[data-icon]:before,.blue[data-icon-after]:after,.blue[data-icon]:before,.cyan[data-icon-after]:after,.cyan[data-icon]:before,.emerald[data-icon-after]:after,.emerald[data-icon]:before,.fuchsia[data-icon-after]:after,.fuchsia[data-icon]:before,.gray[data-icon-after]:after,.gray[data-icon]:before,.green[data-icon-after]:after,.green[data-icon]:before,.indigo[data-icon-after]:after,.indigo[data-icon]:before,.lime[data-icon-after]:after,.lime[data-icon]:before,.orange[data-icon-after]:after,.orange[data-icon]:before,.pink[data-icon-after]:after,.pink[data-icon]:before,.purple[data-icon-after]:after,.purple[data-icon]:before,.red[data-icon-after]:after,.red[data-icon]:before,.rose[data-icon-after]:after,.rose[data-icon]:before,.sky[data-icon-after]:after,.sky[data-icon]:before,.teal[data-icon-after]:after,.teal[data-icon]:before,.violet[data-icon-after]:after,.violet[data-icon]:before,.warning[data-icon-after]:after,.warning[data-icon]:before,.white[data-icon-after]:after,.white[data-icon]:before,.yellow[data-icon-after]:after,.yellow[data-icon]:before{color:var(--icon-color)!important}.condition-container{margin:24px 0}.condition-footer,.condition-rule{padding:7px}.condition-footer{border:1px dashed var(--medium-hairline-color);border-radius:var(--large-border-radius)}.condition:not(:empty)+.condition-footer{border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.condition-footer .spinner:not(.loading){display:none}.condition-rule{background-color:var(--gray-050);border:1px solid var(--hairline-color);margin:0}.condition-rule:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.condition-rule+.condition-rule{border-top-width:0}.condition-rule>.rule-actions,.condition-rule>.rule-move{margin-top:5px}.condition-rule>.rule-body .lightswitch{display:block;margin-top:6px}.condition-rule>.rule-body .selectize{min-width:100px}.condition-rule>.rule-body .text.fullwidth{max-width:100%;min-width:100px}.progressbar{border:2px solid var(--gray-700);border-radius:6px;left:20%;padding:2px;position:absolute;width:60%;z-index:1000}.progressbar-inner{background-color:var(--gray-700);border-radius:2px;height:4px}.progressbar:not(.pending) .progressbar-inner{transition:width .1s linear;width:0}.progressbar.pending .progressbar-inner{animation-duration:.25s;animation-iteration-count:infinite;animation-timing-function:linear}body.ltr .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(135deg,var(--white),var(--white) 8.8388347649px,var(--gray-700) 8.8388347649px,var(--gray-700) 17.6776695297px)}body.rtl .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(45deg,var(--white),var(--white) 8.8388347649px,var(--gray-700) 8.8388347649px,var(--gray-700) 17.6776695297px)}body.ltr .progressbar.pending .progressbar-inner{animation-name:pendingprogress-ltr}body.rtl .progressbar.pending .progressbar-inner{animation-name:pendingprogress-rtl}@keyframes pendingprogress-ltr{0%{background-position:0}to{background-position:25px}}@keyframes pendingprogress-rtl{0%{background-position:0}to{background-position:-25px}}.elementselect .progress-shade{background-color:hsla(0,0%,100%,.8);display:none;height:100%;position:absolute;top:0;width:100%}body.ltr .elementselect .progress-shade{left:0}body.rtl .elementselect .progress-shade{right:0}.elementselect.uploading{position:relative}.elementselect.uploading .progress-shade{display:block;z-index:2}.missing-component{background-color:var(--gray-050)!important;max-width:400px;padding:7px 10px!important}.missing-component .error{margin:0}.missing-component .install-plugin{border-top:1px solid var(--hairline-color);margin:7px 0 -7px;position:relative}body.ltr .missing-component .install-plugin{padding:10px 0 10px 40px}body.rtl .missing-component .install-plugin{padding:10px 40px 10px 0}.missing-component .install-plugin .icon{height:32px;position:absolute;top:calc(50% - 16px);width:32px}body.ltr .missing-component .install-plugin .icon{left:0}body.rtl .missing-component .install-plugin .icon{right:0}.missing-component .install-plugin .icon img,.missing-component .install-plugin .icon svg{height:100%;width:100%}.missing-component .install-plugin h3{flex:1;margin:8px 0!important}.missing-component .install-plugin .btn{margin:0}.pane{--pane-padding:var(--xl);--border:1px solid var(--hairline-color);background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin:14px 0;padding:var(--pane-padding);position:relative;word-wrap:break-word;box-sizing:border-box}.pane:focus{box-shadow:var(--focus-ring)}#content .pane,.pane .pane{background-color:var(--gray-050);border:1px solid var(--hairline-color);box-shadow:none}.pane.dashed{border:1px dashed var(--medium-hairline-color)!important}.pane.dashed,.pane.hairline{background-color:transparent!important;box-shadow:none}.pane.hairline{border:1px solid rgba(96,125,159,.25)!important}.pane.no-border{border:none!important}.pane.padding-xs{--pane-padding:var(--xs)}.pane.padding-s{--pane-padding:var(--s)}.pane.padding-m{--pane-padding:var(--m)}.pane.padding-l{--pane-padding:var(--l)}.pane.loading{min-height:200px}.pane.loading:after{content:"";display:block;font-size:0;height:100%;left:-24px;position:absolute;top:0;width:calc(100% + 48px)}.pane-header{background-color:var(--gray-050);border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;box-shadow:inset 0 -1px 0 0 rgba(154,165,177,.25);box-sizing:border-box;margin:calc(var(--xl)*-1) var(--neg-padding) var(--xl);min-height:45px;padding:5px var(--xl) 6px}.pane-header .header-btn{height:1.875rem;margin:2px 0;padding-left:0;padding-right:0;width:1.875rem}.pane-header .header-btn:not(:hover):not(:active):not(.active){background-color:transparent}.pane-header .header-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}.pane-header .spinner{margin:0!important}.pane-tabs{align-items:center;display:flex;flex-direction:row;margin:-5px calc(var(--padding)*-1) -6px}.pane-tabs:first-child{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;overflow:hidden}.pane-tabs [role=tablist]{display:flex;flex:1;flex-direction:row;overflow-x:auto;scrollbar-width:none}.pane-tabs [role=tablist]::-webkit-scrollbar{display:none}body.ltr .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(270deg,transparent,#000 24px);mask-image:linear-gradient(270deg,transparent,#000 24px)}body.rtl .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px);mask-image:linear-gradient(90deg,transparent,#000 24px)}.pane-tabs [role=tablist] [role=tab]{--tab-label-color:var(--light-text-color)}.pane-tabs [role=tablist] [role=tab].error{--highlight-color:var(--error-color)!important;--tab-label-color:var(--error-color)!important}.pane-tabs [role=tablist] [role=tab],.pane-tabs [role=tablist] [role=tab] .tab-label{border-radius:2px 2px 0 0}.pane-tabs [role=tablist] [role=tab] .tab-label{align-items:center;display:flex;flex-direction:row;height:45px;padding:0 var(--padding);position:relative;white-space:nowrap}.pane-tabs [role=tablist] [role=tab]:hover{text-decoration:none}body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible,body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus{box-shadow:none}body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible .tab-label,body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus .tab-label{box-shadow:var(--inner-focus-ring)}.pane-tabs [role=tablist] [role=tab]:not(.sel){color:var(--custom-text-color,var(--tab-label-color))}.pane-tabs [role=tablist] [role=tab]:not(.sel):hover{-webkit-backdrop-filter:brightness(95%);backdrop-filter:brightness(95%)}.pane-tabs [role=tablist] [role=tab].sel{--highlight-color:var(--gray-500);--tab-label-color:var(--text-color);background-color:var(--white)!important;box-shadow:inset 0 2px 0 var(--custom-text-color,var(--highlight-color)),0 0 0 1px rgba(51,64,77,.1),0 2px 12px var(--custom-sel-tab-shadow-color,var(--gray-200));color:var(--tab-label-color);cursor:default;position:relative;z-index:1}body.ltr .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-left:4px}body.rtl .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-right:4px}body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-left-radius:var(--large-border-radius)}body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-right-radius:var(--large-border-radius)}.pane-tabs .menubtn{margin:0 var(--xl)}.pane-tabs .menubtn.error span[data-icon]{margin-right:2px}.details{--spacing:var(--l);padding:0 var(--padding) var(--spacing)}.details .field,.details .meta,.details hr{margin-left:var(--neg-padding);margin-right:var(--neg-padding)}.details .meta{margin-bottom:var(--spacing)}.details .meta:not(.read-only){background-color:var(--gray-050)!important}.details .meta.read-only{color:var(--medium-text-color)}.details .meta.read-only>.data{min-height:auto}.details .meta.read-only>.data>.heading,.details .meta.read-only>.data>.value{padding:6px 0}.details .meta.read-only>.data:first-child>.heading,.details .meta.read-only>.data:first-child>.value{padding-top:0}.details .meta.read-only>.data:last-child>.heading,.details .meta.read-only>.data:last-child>.value{padding-bottom:0}.details .meta.warning{background-color:var(--yellow-050)!important;box-shadow:0 0 0 1px var(--yellow-300),0 2px 12px rgba(205,216,228,.5);color:var(--text-color)!important;padding-bottom:var(--m);padding-top:var(--m)}.details .meta.warning p{margin-bottom:5px}.details .meta.warning .btn{background-color:var(--yellow-300)}.details .meta.warning .btn:focus,.details .meta.warning .btn:hover{background-color:#fcd815}.details .meta.warning .btn:active,.details .meta.warning .btn[aria-expanded=true]{background-color:#f5ce03}.details .meta>.data,.details .meta>.field{margin:0 var(--neg-padding)!important}.details .meta>.data>.heading,.details .meta>.data>.heading>label,.details .meta>.field>.heading,.details .meta>.field>.heading>label{color:var(--gray-600)}body.ltr .details .meta>.field>.status-badge{left:0}body.rtl .details .meta>.field>.status-badge{right:0}.details .meta .text::-moz-placeholder{color:var(--gray-500)}.details .meta .text:-ms-input-placeholder{color:var(--gray-500)}.details .meta .datewrapper .text+div[data-icon],.details .meta .text::placeholder,.details .meta .timewrapper .text+div[data-icon]{color:var(--gray-500)}body.ltr .details .meta .ui-datepicker{margin:0 0 0 -8px}body.rtl .details .meta .ui-datepicker{margin:0 -8px 0 0}.details hr{border-top-color:var(--hairline-color);margin:var(--spacing) 0}.details input::-moz-placeholder,.details textarea::-moz-placeholder{color:var(--gray-500)}.details input:-ms-input-placeholder,.details textarea:-ms-input-placeholder{color:var(--gray-500)}.details input::placeholder,.details textarea::placeholder{color:var(--gray-500)}.details .text{background-color:transparent!important;resize:none}.details>.field>.heading>label,.details>fieldset>legend{color:var(--gray-600);font-weight:400;margin-top:0}.details>fieldset{margin:0 0 var(--spacing)}.details>fieldset>legend{margin-bottom:5px}.details>.field{margin:0 0 var(--spacing)}.details>.field>.heading{margin-top:0}.details>.field>.input>.text.fullwidth{background-color:var(--gray-050)!important;border:none;margin:0 var(--neg-padding);padding-left:var(--padding);padding-right:var(--padding);width:calc(100% + var(--padding) + var(--padding))}.details>.text{border-radius:var(--large-border-radius);margin-bottom:var(--spacing)}.details>.text:not(:focus){border-color:rgba(96,125,159,.4)}.meta{overflow:visible;padding:0 var(--padding)}.meta>.data,.meta>.field,.meta>.flex-fields>.data,.meta>.flex-fields>.field{align-items:center;box-sizing:border-box;display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 var(--neg-padding)!important;min-height:44px;padding:0 var(--padding);transition:padding-left .1s linear,padding-right .1s linear}body.ltr .meta>.data.nested,body.ltr .meta>.field.nested,body.ltr .meta>.flex-fields>.data.nested,body.ltr .meta>.flex-fields>.field.nested{padding-left:38px}body.rtl .meta>.data.nested,body.rtl .meta>.field.nested,body.rtl .meta>.flex-fields>.data.nested,body.rtl .meta>.flex-fields>.field.nested{padding-right:38px}.meta>.data.add,.meta>.field.add,.meta>.flex-fields>.data.add,.meta>.flex-fields>.field.add{background-color:#ebf2fa}.meta>.data.add:before,.meta>.field.add:before,.meta>.flex-fields>.data.add:before,.meta>.flex-fields>.field.add:before{font-family:Craft;position:absolute;width:31px;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"plus";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .meta>.data.add:before,body.ltr .meta>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before{left:0}body.rtl .meta>.data.add:before,body.rtl .meta>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before{right:0}body.ltr .meta>.data.add:before,body.ltr .meta>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before{text-align:right}body.rtl .meta>.data.add:before,body.rtl .meta>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before{text-align:left}.meta>.data.add .input,.meta>.field.add .input,.meta>.flex-fields>.data.add .input,.meta>.flex-fields>.field.add .input{width:100%}.meta>.data>.heading,.meta>.field>.heading,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading{margin:0}@media screen and (min-width:400px){.meta>.data>.heading,.meta>.field>.heading,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading{flex:0 0 104px;line-height:18px}body.ltr .meta>.data>.heading,body.ltr .meta>.field>.heading,body.ltr .meta>.flex-fields>.data>.heading,body.ltr .meta>.flex-fields>.field>.heading{margin-right:var(--s)}body.rtl .meta>.data>.heading,body.rtl .meta>.field>.heading,body.rtl .meta>.flex-fields>.data>.heading,body.rtl .meta>.flex-fields>.field>.heading{margin-left:var(--s)}}.meta>.data.lightswitch-field>.heading,.meta>.field.lightswitch-field>.heading,.meta>.flex-fields>.data.lightswitch-field>.heading,.meta>.flex-fields>.field.lightswitch-field>.heading{flex:1}.meta>.data>.input .flex,.meta>.field>.input .flex,.meta>.flex-fields>.data>.input .flex,.meta>.flex-fields>.field>.input .flex{flex-wrap:nowrap}.meta>.data>.input .flex>*,.meta>.field>.input .flex>*,.meta>.flex-fields>.data>.input .flex>*,.meta>.flex-fields>.field>.input .flex>*{margin-bottom:0}.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding-top:var(--s)}@media screen and (min-width:400px){.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding:12px 0}}.meta>.field>.heading>.copytextbtn,.meta>.flex-fields>.field>.heading>.copytextbtn{display:none}.meta>.data>.heading,.meta>.flex-fields>.data>.heading{padding:var(--s) 0}.meta>.data>.heading,.meta>.field>.heading>label,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading>label{color:var(--medium-text-color)}.meta>.data>.value,.meta>.field>.input,.meta>.flex-fields>.data>.value,.meta>.flex-fields>.field>.input{padding:5px 0;width:100%}@media screen and (min-width:400px){.meta>.data>.value,.meta>.field>.input,.meta>.flex-fields>.data>.value,.meta>.flex-fields>.field>.input{width:calc(100% - 112px)}}.meta>.data>.value,.meta>.flex-fields>.data>.value{align-items:center;display:flex}.meta>.data>.value>[data-icon=draft],.meta>.flex-fields>.data>.value>[data-icon=draft]{margin-top:-2px}body.ltr .meta>.data>.value>[data-icon=draft],body.ltr .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-right:8px}body.rtl .meta>.data>.value>[data-icon=draft],body.rtl .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-left:8px}.meta>.field.lightswitch-field>.input,.meta>.flex-fields>.field.lightswitch-field>.input{flex:0;width:auto}.meta>.field.has-errors,.meta>.flex-fields>.field.has-errors{border:1px solid var(--error-color)!important}.meta>.field.has-errors:first-child,.meta>.flex-fields>.field.has-errors:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.meta>.field.has-errors:last-child,.meta>.flex-fields>.field.has-errors:last-child{border-bottom-left-radius:var(--large-border-radius);border-bottom-right-radius:var(--large-border-radius)}.meta>.field.has-errors+.field,.meta>.flex-fields>.field.has-errors+.field{border-top:none!important}.meta>.field>.heading>label,.meta>.field>.heading>legend,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.field>.heading>legend{font-weight:400}.meta>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.field>.input>.datewrapper>.text,.meta>.field>.input>.flex>.text,.meta>.field>.input>.flex>.textwrapper>.text,.meta>.field>.input>.text,.meta>.field>.input>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datewrapper>.text,.meta>.flex-fields>.field>.input>.flex>.text,.meta>.flex-fields>.field>.input>.flex>.textwrapper>.text,.meta>.flex-fields>.field>.input>.text,.meta>.flex-fields>.field>.input>.timewrapper>.text{background-color:transparent;border:none!important;border-radius:0;display:block;margin:-5px 0;padding:12px 0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{background-color:transparent}body.ltr .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon]{left:0}body.rtl .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon]{right:0}.meta>.field>.input>.datetimewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper{gap:0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper{width:55%}.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{width:45%}body.ltr .meta>.field>.input>.datetimewrapper>.clear-btn,body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-right:-24px}body.rtl .meta>.field>.input>.datetimewrapper>.clear-btn,body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-left:-24px}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{display:block;width:100%}.meta>.field>ul.errors,.meta>.flex-fields>.field>ul.errors{list-style-type:none;margin:0;padding:0 0 6px;width:100%}body.ltr .meta>.field>.clear-btn,body.ltr .meta>.flex-fields>.field>.clear-btn{margin-right:var(--neg-padding)}body.rtl .meta>.field>.clear-btn,body.rtl .meta>.flex-fields>.field>.clear-btn{margin-left:var(--neg-padding)}.meta>.field:not(:first-child):not(.first-child),.meta>.flex-fields+.field:not(.first-child){border-top:1px solid var(--hairline-color)}.meta>.flex-fields blockquote.note,.meta>.flex-fields h2{background-color:#ebf2fa;margin:0 -24px!important;padding:14px 24px}.meta>.flex-fields blockquote.note{border:none;border-radius:0}.meta>.flex-fields hr{margin:0 -24px}.meta>.field>.input>.select{background-color:transparent;border-radius:0;box-shadow:none;display:block;margin:calc(var(--s)*-1) 0;width:100%}body.ltr .meta>.field>.input>.select:after{right:0}body.rtl .meta>.field>.input>.select:after{left:0}.meta>.field>.input>.select+.spinner{position:absolute;top:calc(50% - 17px)}body.ltr .meta>.field>.input>.select+.spinner{right:-24px}body.rtl .meta>.field>.input>.select+.spinner{left:-24px}.meta>.field>.input>.select select{background-color:transparent;width:100%}body.ltr .meta>.field>.input>.select select{padding:var(--s) 12px var(--s) 0}body.rtl .meta>.field>.input>.select select{padding:var(--s) 0 var(--s) 12px}.meta>.field>.input>.custom-select{background-color:transparent;border-radius:0;box-shadow:none;display:block;margin:calc(var(--s)*-1) 0;width:100%}.meta>.field>.input>.custom-select .menubtn:not(.action-btn){background-color:transparent;justify-content:start;width:100%}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-left:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-right:0}.meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{position:absolute;top:calc(50% - 5px)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{right:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{left:0}.meta>.field>.input>.custom-select .label{max-width:100%;overflow:hidden;text-overflow:ellipsis}.body{position:relative}.hud,.modal,.slideout,.slideout-container{box-sizing:border-box;z-index:100}.hud,.modal{background-color:#fff;border-radius:5px;box-shadow:0 25px 100px rgba(31,41,51,.5)!important}.slideout-shade{opacity:0;transition:opacity .25s linear}.slideout-shade.so-visible{opacity:1}.slideout-container{height:100vh;height:-webkit-fill-available;left:0;pointer-events:none;position:fixed;top:0;width:100vw}.slideout-container.so-lp{height:calc(100vh - var(--m)*2);left:var(--m);position:absolute;top:var(--m);width:calc(100% - var(--m)*2)}body.has-debug-toolbar .slideout-container{height:calc(100vh - 42px)}.slideout{background-color:var(--white);box-shadow:0 0 0 1px rgba(123,135,147,.25),0 25px 100px rgba(31,41,51,.5)!important;container-type:inline-size;display:flex;flex-direction:column;overflow:hidden;padding:24px var(--padding);pointer-events:all;position:absolute}.slideout.so-lp,.slideout.so-mobile{height:100%!important;left:0;transition:top .25s linear;width:100%!important;will-change:top}.slideout.so-mobile{--padding:14px;--neg-padding:-14px}body.ltr .slideout:not(.so-mobile){border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .slideout:not(.so-mobile){border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.slideout:not(.so-mobile):not(.so-lp){height:100%;top:0;width:55%}@media screen and (prefers-reduced-motion:no-preference){body.ltr .slideout:not(.so-mobile):not(.so-lp){transition:left .25s linear;will-change:left}body.rtl .slideout:not(.so-mobile):not(.so-lp){transition:right .25s linear;will-change:right}}.slideout>.pane-header{padding-left:var(--padding);padding-right:var(--padding);z-index:2}.slideout>.pane-header>.so-toolbar{align-items:center;display:flex;flex-direction:row;gap:var(--xs);min-height:28px}.slideout>.pane-header>.so-toolbar>.pane-tabs{flex:1;width:1px}body.ltr .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-right:0}body.rtl .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-left:0}.slideout>.so-body{flex:1;margin:-24px var(--neg-padding);overflow:hidden auto;position:relative}.slideout>.so-body:not(:last-child){margin-bottom:0}.slideout>.so-body>h1:not(:last-child){border-bottom:1px solid var(--hairline-color);padding-bottom:var(--s)}.slideout>.so-body.so-full-details,.slideout>.so-body>.so-sidebar{background-color:var(--gray-100)!important}.slideout>.so-body:not(.so-full-details){padding:24px var(--padding)}.slideout>.so-body.so-full-details>.so-content>.details,.slideout>.so-body>.so-sidebar{box-sizing:border-box;padding:0 var(--padding) var(--spacing)}.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container,.slideout>.so-body>.so-sidebar>.preview-thumb-container{height:auto;margin:0 var(--neg-padding);min-height:54px}.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container+.pane-header,.slideout>.so-body>.so-sidebar>.preview-thumb-container+.pane-header{border-radius:0}.slideout>.so-body.so-full-details>.so-content>.details .image-actions.is-mobile,.slideout>.so-body>.so-sidebar .image-actions.is-mobile{margin:calc(var(--spacing)/2) 0 var(--spacing)}.slideout>.so-body.so-full-details>.so-content>.details>.meta.read-only:first-child,.slideout>.so-body>.so-sidebar>.meta.read-only:first-child{margin-top:var(--padding)}.slideout>.so-body.so-full-details>.so-content>.details>.meta.warning,.slideout>.so-body>.so-sidebar>.meta.warning{border-bottom:1px solid var(--yellow-300);box-shadow:none}.slideout>.so-body.so-full-details>.so-content>.details>.field>.input>.text.fullwidth,.slideout>.so-body>.so-sidebar>.field>.input>.text.fullwidth{border-radius:0}.slideout>.so-body.so-full-details>.so-content>.details .notes,.slideout>.so-body>.so-sidebar .notes{padding-bottom:var(--m);padding-top:var(--m)}.slideout>.so-body>.so-sidebar{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);height:100%;max-width:100%;overflow:hidden auto;position:absolute;top:0;width:350px;z-index:1}.slideout>.so-body>.so-sidebar:focus{box-shadow:var(--focus-ring)}body.ltr .slideout>.so-body>.so-sidebar{transition:right .25s linear}body.rtl .slideout>.so-body>.so-sidebar{transition:left .25s linear}.slideout>.so-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-wrap:wrap;gap:var(--s);justify-content:space-between;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);position:relative;z-index:3}.slideout>.so-footer:focus{box-shadow:var(--focus-ring)}.slideout>.so-footer>.so-extra{border-bottom:1px solid var(--hairline-color);flex:0 0 100%;margin:0 var(--neg-padding);padding:0 var(--padding) 8px}@container (width > 700px){.slideout.showing-sidebar .so-body{display:flex;flex-direction:row;overflow:hidden;padding:0}.slideout.showing-sidebar .so-body>.so-content{box-sizing:border-box;height:100%;overflow:hidden auto;padding:24px;position:relative;width:calc(100% - 350px);z-index:2}body.ltr .slideout.showing-sidebar .so-body>.so-content{border-right:1px solid var(--gray-200)}body.rtl .slideout.showing-sidebar .so-body>.so-content{border-left:1px solid var(--gray-200)}.slideout.showing-sidebar .so-body>.so-sidebar{box-shadow:none;display:block!important;height:100%;left:auto!important;position:relative;right:auto!important;top:auto}.slideout>.so-footer>.so-extra{border:none;flex:auto 0 1;margin:0;padding:0}}.footer,.header,.hud-footer,.hud-header{background-color:var(--gray-100);box-sizing:border-box;position:relative;z-index:1}.header,.hud-header{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;box-shadow:inset 0 -1px 0 var(--hairline-color);padding:24px}.header h1,.hud-header h1{margin:0}.footer,.hud-footer{border-radius:0 0 var(--large-border-radius) var(--large-border-radius);box-shadow:inset 0 1px 0 var(--hairline-color);padding:5px var(--pane-padding,var(--xl))}.footer.flex>*,.hud-footer.flex>*{margin-bottom:0}.hud .main,.modal .body{box-sizing:border-box;overflow:hidden;padding:24px}.modal .body .header,.pane .header{margin:calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1) var(--pane-padding,24px)}.modal .body .footer,.pane .footer{margin:var(--pane-padding,24px) calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1)}.hud-shade,.modal-shade,.slideout-shade{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:100}.modal-shade:not(.dark),.slideout-shade:not(.dark){background-color:rgba(123,135,147,.35)!important}.modal-shade.dark,.slideout-shade.dark{background-color:rgba(31,41,51,.5)!important}.modal-shade.blurred,.slideout-shade.blurred{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.modal{overflow:hidden;position:fixed}.modal:not(.fitted):not(.fullscreen){height:66%;min-height:400px;min-width:600px;width:66%}.modal.fitted{height:auto;min-height:0;min-width:0;width:auto}.modal.fullscreen{border-radius:0;height:100%;width:100%}body.ltr .modal.alert .body{padding-left:76px}body.rtl .modal.alert .body{padding-right:76px}.modal.alert .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"alert";font-size:40px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.alert .body:before{margin:-6px 0 0 -58px}body.rtl .modal.alert .body:before{margin:-6px -58px 0 0}body.ltr .modal.alert .body:before{float:left}body.rtl .modal.alert .body:before{float:right}body.ltr .modal.secure .body{padding-left:76px}body.rtl .modal.secure .body{padding-right:76px}.modal.secure .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"secure";font-size:58px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.secure .body:before{margin:-14px 0 0 -56px}body.rtl .modal.secure .body:before{margin:-14px -56px 0 0}body.ltr .modal.secure .body:before{float:left}body.rtl .modal.secure .body:before{float:right}.modal .resizehandle{bottom:0;cursor:nwse-resize;height:24px;padding:var(--xs);position:absolute;width:24px;z-index:1}body.ltr .modal .resizehandle{right:0}body.rtl .modal .resizehandle{left:0}.modal .resizehandle path{fill:var(--ui-control-color)}.hud,body.ltr .modal .resizehandle .rtl,body.rtl .modal .resizehandle .ltr{display:none}.hud{position:absolute;top:0}.hud.tooltip-hud{display:block}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray.png)}.hud .tip{background:no-repeat 0 0;position:absolute;z-index:101}.hud .tip-left{background-image:url(../images/hudtip_left.png);height:30px;left:-15px;width:15px}.hud .tip-top{background-image:url(../images/hudtip_top.png);height:15px;top:-15px;width:30px}.hud .tip-right{background-image:url(../images/hudtip_right.png);height:30px;right:-15px;width:15px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom.png);bottom:-15px;height:15px;width:30px}.hud .hud-footer,.hud .hud-header{padding:var(--s) var(--xl)}.hud .body{overflow:hidden}.hud .body ::-webkit-scrollbar{-webkit-appearance:none;appearance:none}.hud .body ::-webkit-scrollbar:vertical{width:11px}.hud .body ::-webkit-scrollbar:horizontal{height:11px}.hud .body ::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5);border:2px solid transparent;border-radius:8px}.hud .body ::-webkit-scrollbar-track{background-color:var(--gray-050)}.preview-thumb-container{align-items:center;background-color:var(--gray-900);display:flex;flex-direction:row;height:190px;margin:0 var(--neg-padding) var(--spacing);position:relative}.preview-thumb-container.checkered img{background-color:var(--white);background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0);background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px;background-size:17px 17px}.preview-thumb-container.editable{cursor:pointer}.preview-thumb-container.loading:after{background-color:rgba(31,41,51,.8);content:"";display:block;font-size:0;height:100%;left:0;position:absolute;top:0;width:100%}.preview-thumb-container.loading .spinner{color:var(--white);z-index:1}#details .preview-thumb-container{border-radius:var(--large-border-radius);overflow:hidden}.preview-thumb-container .preview-thumb{align-items:center;display:flex;flex-direction:column;height:100%;width:100%}.preview-thumb-container .preview-thumb img{display:block;max-height:190px;max-width:100%}.image-actions.is-mobile{display:grid;grid-template-columns:1fr 1fr;margin:calc(var(--spacing)/2*-1) var(--neg-padding) var(--spacing)}.button-fade .buttons{margin:0;opacity:0;position:absolute;top:10px;transition:opacity .1s linear}body.ltr .button-fade .buttons{right:10px}body.rtl .button-fade .buttons{left:10px}.button-fade .buttons .btn{--ui-control-color:var(--white);--ui-control-hover-color:var(--white);--ui-control-active-color:var(--white);--interaction-background-color:var(--gray-700);background-color:var(--gray-600);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--light-color:var(--white);--dark-color:var(--gray-800);--focus-ring:0 0 0 3px var(--light-color),0 0 0 6px var(--dark-color)}.button-fade .buttons .btn:hover{background-color:var(--interaction-background-color)!important}.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed).focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):hover{background-color:var(--interaction-background-color)}.button-fade:focus-within .buttons,.button-fade:hover .buttons{opacity:1}.elementselectormodal{--content-padding:24px;padding-bottom:44px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.elementselectormodal>.header{padding-bottom:14px;padding-top:14px;text-align:center}.elementselectormodal>.header+.body{height:calc(100% - 48px)!important}.elementselectormodal .body{height:100%;position:relative}.elementselectormodal .body .spinner.big{left:50%;margin:-24px 0 0 -24px;position:absolute;top:50%}.elementselectormodal .body .content{height:calc(100% + 48px)}.elementselectormodal .body .content .sidebar{height:100%;overflow:auto;padding:var(--content-padding) 0;position:absolute;top:0}body.ltr .elementselectormodal .body .content .sidebar{margin-left:-249px}body.rtl .elementselectormodal .body .content .sidebar{margin-right:-249px}.elementselectormodal .body .content .main{box-sizing:border-box;height:100%;margin:-24px;overflow:auto;padding:var(--content-padding);position:relative}.elementselectormodal .body .content .main .elements.busy{min-height:calc(100% - 48px)}.elementselectormodal .body .content .main .elements.busy .update-spinner{z-index:101}.elementselectormodal .body .content .main .elements .header{margin:0 0 var(--m)}.elementselectormodal .body .content .main .elements .tableview table tr td,.elementselectormodal .body .content .main .elements .tableview table tr th{cursor:default}.elementselectormodal .body .content .main .elements .tableview table tr .checkbox:before{box-shadow:none!important}.elementselectormodal .body .content .main .elements .structure .row{margin-top:1px}.elementselectormodal .footer{bottom:0;box-sizing:border-box;left:0;margin:0;position:absolute;width:100%}body.ltr .elementselectormodal .footer .spinner{float:right}body.rtl .elementselectormodal .footer .spinner{float:left}body.ltr .elementselectormodal .footer .spinner{margin-right:-24px}body.rtl .elementselectormodal .footer .spinner{margin-left:-24px}.customize-sources-modal .main-header,.elementselectormodal .main-header{align-items:center;display:flex;margin-bottom:var(--s)}.customize-sources-modal .main-heading,.elementselectormodal .main-heading{margin-bottom:0}.customize-sources-modal .nav-toggle,.elementselectormodal .nav-toggle{color:var(--ui-control-color);height:var(--touch-target-size);width:var(--touch-target-size)}body.ltr .customize-sources-modal .nav-toggle,body.ltr .elementselectormodal .nav-toggle{margin-left:4px}body.rtl .customize-sources-modal .nav-toggle,body.rtl .elementselectormodal .nav-toggle{margin-right:4px}.customize-sources-modal .nav-toggle:hover,.elementselectormodal .nav-toggle:hover{color:var(--gray-500)}.customize-sources-modal .sidebar-header,.elementselectormodal .sidebar-header{display:flex;justify-content:flex-end;margin-bottom:var(--s);padding:0 var(--s)}.customize-sources-modal .nav-close,.elementselectormodal .nav-close{height:var(--touch-target-size);width:var(--touch-target-size)}.element-hud-form .buttons{position:relative}.element-hud-form .buttons .spinner{position:absolute;top:0}body.ltr .element-hud-form .buttons .spinner{right:-24px}body.rtl .element-hud-form .buttons .spinner{left:-24px}.activity-container{margin-inline:var(--s)}.activity-container ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.activity-container ul li .activity-btn{border-radius:50%;display:block;height:30px;width:30px}.activity-container ul li .activity-btn .elementthumb{background:var(--gray-050);border:2px solid var(--white);border-radius:50px;box-shadow:0 1px 2px 1px rgba(31,41,51,.1);height:100%;overflow:hidden;position:relative;width:100%}.activity-container ul li .activity-btn .elementthumb img,.activity-container ul li .activity-btn .elementthumb svg{display:block;height:100%;width:100%}body.ltr .activity-container ul li:not(:last-child){margin-right:-10px}body.rtl .activity-container ul li:not(:last-child){margin-left:-10px}.element-index-view-menu{max-width:calc(100% - 20px);padding:0!important;width:400px}.element-index-view-menu .meta{padding-bottom:var(--s);padding-top:var(--s)}.element-index-view-menu .table-columns-field{align-items:flex-start}.element-index-view-menu .table-columns-field .input{padding:13px 0}.element-index-view-menu .menu-footer{background-color:var(--gray-050);margin:0!important;padding:var(--s) var(--xl)!important}.element-index-view-menu-table-column{align-content:stretch;align-items:flex-start;display:flex;margin-bottom:4px}.element-index-view-menu-table-column .icon.move{position:relative;z-index:1}body.ltr .element-index-view-menu-table-column .icon.move{margin-right:10px}body.rtl .element-index-view-menu-table-column .icon.move{margin-left:10px}.sort-field .input .flex .btngroup .btn{width:42px}.sort-field .input .flex .flex-grow{max-width:calc(100% - 85px - var(--s))}@media screen and (max-width:350px){.sort-field .input .flex{flex-direction:column}.sort-field .input .flex>*{width:100%}.sort-field .input .flex .flex-grow{max-width:none}}.element-filter-hud.loading .body{align-items:center;display:flex;justify-content:center;padding:44px}.element-filter-hud .body,.element-filter-hud .main{overflow:visible}.address-cards{display:grid;gap:var(--m) var(--m);grid-auto-rows:minmax(0,1fr);grid-template-columns:repeat(1,minmax(0,1fr))}.so-content .address-cards{grid-template-columns:repeat(1,minmax(0,1fr))!important}.address-cards__add-btn{height:auto;min-height:8rem;padding:1rem;width:100%}.address-card.error{border:1px solid #cf1124}.address-card.error:hover{border-color:#cf1124}@media(min-width:1024px){.address-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1280px){.address-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.so-content .address-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(min-width:1536px){.address-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}.address-card{border:1px solid #eee;border-radius:.375rem;min-height:4rem;padding:1rem}.address-card:hover{background-color:#fafafa;border-color:#ddd;cursor:pointer}.address-card .address-card-header{display:flex;flex-wrap:nowrap;justify-content:space-between}.address-card .address-card-header-actions{display:flex;justify-content:flex-end}.address-card .address-card-label{background:#e6f1fe;border-radius:.25rem;color:#2563eb;font-size:.75rem;font-weight:500;margin-bottom:.75rem;padding:.125rem .5rem;text-transform:uppercase}.ltr .address-card .address-card-label{margin-right:.5rem}.rtl .address-card .address-card-label{margin-left:.5rem}#elevatedsessionmodal,#logoutwarningmodal,.login-modal,.login-modal-shade,.logoutwarningmodalshade,.prompt{z-index:1001}#elevatedsessionmodal,#logoutwarningmodal,.prompt{width:500px}.prompt{height:auto;min-height:auto}.cpmodal>.cpmodal-body{padding:var(--padding)}.cpmodal>.cpmodal-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:var(--s) var(--padding);position:relative}.cpmodal>.cpmodal-footer:focus{box-shadow:var(--focus-ring)}.deleteusermodal .content-summary{background-color:var(--gray-050);margin:-24px -24px 24px;padding:24px}.deleteusermodal .options label{display:inline-block;line-height:30px}.deleteusermodal .elementselect{display:inline-block;vertical-align:middle}body.ltr .deleteusermodal .elementselect{margin-left:10px}body.rtl .deleteusermodal .elementselect{margin-right:10px}body.ltr .deleteusermodal .buttons .spinner{margin-right:-20px}body.rtl .deleteusermodal .buttons .spinner{margin-left:-20px}.deleteusermodal div.elements{list-style:none}.dropdownsettingsmodal{height:auto;max-width:400px;min-height:0;min-width:0;width:auto}.dropdownsettingsmodal .body{max-height:100%;overflow-y:auto}.previewmodal.zilch{align-items:center;display:flex;justify-content:center;padding:100px 0}.video-transcript{background-color:var(--gray-050);font-size:1rem;overflow-y:scroll;position:relative}body.reduce-focus-visibility .video-transcript:focus-visible,body:not(.reduce-focus-visibility) .video-transcript:focus{background-color:var(--gray-800);box-shadow:none;color:var(--white)}.video-transcript__inner{margin-left:auto;margin-right:auto;max-width:550px;padding:var(--xl)}.menu,.ui-datepicker,.ui-timepicker-list{background:#fff;border-radius:4px;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);overflow:auto;padding:0 14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:100}.ui-datepicker,.ui-timepicker-list{padding:0}.menu{display:none;position:absolute}.menu.padded{padding:var(--s) calc(var(--m) + var(--s))}.menu.padded hr{margin:var(--s) calc((var(--m) + var(--s))*-1)}.menu.padded ul li{margin:0 calc(var(--m)*-1);padding:0 var(--m)}.menu.padded ul li a{border-radius:var(--large-border-radius)}.menu.padded .extralight{margin-top:2px}.menu .h6:first-child,.menu h6:first-child{margin-top:14px!important}.menu ul.padded li .menu-item,.menu ul.padded li .menu-option,.menu ul.padded li a{padding-inline-start:calc(var(--m) + 1.125rem)}.menu ul.padded li .menu-item.sel:not([data-icon]):before,.menu ul.padded li .menu-option.sel:not([data-icon]):before,.menu ul.padded li a.sel:not([data-icon]):before{color:currentColor;content:"check";font-size:14px;margin-top:3px!important;width:14px}body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.ltr .menu ul.padded li a.sel:not([data-icon]):before{float:left}body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.rtl .menu ul.padded li a.sel:not([data-icon]):before{float:right}body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.ltr .menu ul.padded li a.sel:not([data-icon]):before{margin:4px 0 0 calc(-1.125rem - 4px)}body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.rtl .menu ul.padded li a.sel:not([data-icon]):before{margin:4px calc(-1.125rem - 4px) 0 0}.menu ul li .menu-item,.menu ul li .menu-option,.menu ul li a{-webkit-appearance:none;font-size:14px;margin:0 -14px;padding:10px 14px;white-space:nowrap}body.ltr .menu ul li .menu-item:not(:last-child),body.ltr .menu ul li .menu-option:not(:last-child),body.ltr .menu ul li a:not(:last-child){margin-right:0}body.rtl .menu ul li .menu-item:not(:last-child),body.rtl .menu ul li .menu-option:not(:last-child),body.rtl .menu ul li a:not(:last-child){margin-left:0}.menu ul li .menu-item:not(.flex):not(.hidden),.menu ul li .menu-option:not(.flex):not(.hidden),.menu ul li a:not(.flex):not(.hidden){display:block;width:calc(100% + 28px)}body.ltr .menu ul li .menu-item:not(.flex):not(.hidden),body.ltr .menu ul li .menu-option:not(.flex):not(.hidden),body.ltr .menu ul li a:not(.flex):not(.hidden){text-align:left}body.rtl .menu ul li .menu-item:not(.flex):not(.hidden),body.rtl .menu ul li .menu-option:not(.flex):not(.hidden),body.rtl .menu ul li a:not(.flex):not(.hidden){text-align:right}.menu ul li .menu-item.flex [data-icon],.menu ul li .menu-option.flex [data-icon],.menu ul li a.flex [data-icon]{margin-top:-2px}.menu ul li .menu-item.sel,.menu ul li .menu-option.sel,.menu ul li a.sel{cursor:default}.menu ul li .menu-item .shortcut,.menu ul li .menu-option .shortcut,.menu ul li a .shortcut{border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px rgba(81,95,108,.25),0 1px 3px -1px rgba(81,95,108,.5);padding:0 4px}body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut,body.ltr .menu ul li a .shortcut{float:right}body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut,body.rtl .menu ul li a .shortcut{float:left}body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut,body.ltr .menu ul li a .shortcut{margin-left:14px}body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut,body.rtl .menu ul li a .shortcut{margin-right:14px}.menu>.flex{margin-bottom:10px;margin-top:10px;position:relative}body.ltr .menu>.flex.padded{margin-left:-14px}body.rtl .menu>.flex.padded{margin-right:-14px}body.ltr .menu>.flex.padded{padding-left:24px}body.rtl .menu>.flex.padded{padding-right:24px}.menu>.flex.padded.sel:before{color:var(--light-text-color);content:"check";font-size:14px;position:absolute;top:36px}body.ltr .menu>.flex.padded.sel:before{left:7px}body.rtl .menu>.flex.padded.sel:before{right:7px}.menu hr{margin:5px -14px}.menu .go:after{color:inherit}.menu ul li .menu-item,.menu ul li .menu-option,.menu:not(.menu--disclosure) ul li a{color:#3f4d5a;cursor:default;text-decoration:none}.menu li>a [data-icon]:before,.menu li>a span.icon:not([data-icon]),.menu li>a[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button span.icon:not([data-icon]),.menu li>button[data-icon]:before{display:inline-block;height:.875rem;width:.875rem}body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before{margin-left:-1px}body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before{margin-right:-1px}body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before{margin-right:9px}body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before{margin-left:9px}.menu li>a [data-icon]:before,.menu li>a[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button[data-icon]:before{color:currentColor;font-size:14px;position:relative;text-align:center;top:-2px}.menu li>a span.icon:not([data-icon]) svg,.menu li>button span.icon:not([data-icon]) svg{display:block;height:100%;position:relative;top:1px;width:100%}.menu li>a span.icon:not([data-icon]) svg circle,.menu li>a span.icon:not([data-icon]) svg ellipse,.menu li>a span.icon:not([data-icon]) svg line,.menu li>a span.icon:not([data-icon]) svg path,.menu li>a span.icon:not([data-icon]) svg polygon,.menu li>a span.icon:not([data-icon]) svg polyline,.menu li>a span.icon:not([data-icon]) svg rect,.menu li>a span.icon:not([data-icon]) svg text,.menu li>button span.icon:not([data-icon]) svg circle,.menu li>button span.icon:not([data-icon]) svg ellipse,.menu li>button span.icon:not([data-icon]) svg line,.menu li>button span.icon:not([data-icon]) svg path,.menu li>button span.icon:not([data-icon]) svg polygon,.menu li>button span.icon:not([data-icon]) svg polyline,.menu li>button span.icon:not([data-icon]) svg rect,.menu li>button span.icon:not([data-icon]) svg text{fill:var(--icon-color,var(--ui-control-color));stroke-width:0}.menu li>a.error [data-icon]:before,.menu li>a.error[data-icon]:before,.menu li>button.error [data-icon]:before,.menu li>button.error[data-icon]:before{color:var(--error-color)}.menu li>a.error span.icon:not([data-icon]) svg circle,.menu li>a.error span.icon:not([data-icon]) svg ellipse,.menu li>a.error span.icon:not([data-icon]) svg line,.menu li>a.error span.icon:not([data-icon]) svg path,.menu li>a.error span.icon:not([data-icon]) svg polygon,.menu li>a.error span.icon:not([data-icon]) svg polyline,.menu li>a.error span.icon:not([data-icon]) svg rect,.menu li>a.error span.icon:not([data-icon]) svg text,.menu li>button.error span.icon:not([data-icon]) svg circle,.menu li>button.error span.icon:not([data-icon]) svg ellipse,.menu li>button.error span.icon:not([data-icon]) svg line,.menu li>button.error span.icon:not([data-icon]) svg path,.menu li>button.error span.icon:not([data-icon]) svg polygon,.menu li>button.error span.icon:not([data-icon]) svg polyline,.menu li>button.error span.icon:not([data-icon]) svg rect,.menu li>button.error span.icon:not([data-icon]) svg text{fill:var(--error-color);stroke-width:0}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover{background-color:var(--dark-sel-color);color:var(--white)!important}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg text{fill:var(--white);stroke-width:0}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li a:not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:currentColor}body.ltr .menu .h6.padded,body.ltr .menu h6.padded,body.ltr .menu hr.padded{margin-left:20px}body.rtl .menu .h6.padded,body.rtl .menu h6.padded,body.rtl .menu hr.padded{margin-right:20px}.menu--disclosure ul li>.menu-item:hover,.menu--disclosure ul li>.menu-option:hover,.menu--disclosure ul li>a:not(.crumb-link):hover{background-color:#f3f7fc;color:#3f4d5a}body.reduce-focus-visibility .menu--disclosure ul li>.menu-item:focus-visible,body.reduce-focus-visibility .menu--disclosure ul li>.menu-option:focus-visible,body.reduce-focus-visibility .menu--disclosure ul li>a:not(.crumb-link):focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-item:focus,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-option:focus,body:not(.reduce-focus-visibility) .menu--disclosure ul li>a:not(.crumb-link):focus{box-shadow:inset 0 0 0 3px hsla(var(--dark-focus-hsl),.7)}.tagselect .elements li{display:inline}.tagselect .chip.small{clear:none}body.ltr .tagselect .chip.small{margin-right:7px}body.rtl .tagselect .chip.small{margin-left:7px}.tagselect .add{display:inline-block;position:relative;width:12em;z-index:1}body.ltr .tagselect .add{margin:7px 7px 0 0}body.rtl .tagselect .add{margin:7px 0 0 7px}body.ltr .tagselect .add .text{padding-right:30px}body.rtl .tagselect .add .text{padding-left:30px}.tagselect .add .spinner{position:absolute;top:0}body.ltr .tagselect .add .spinner{right:5px}body.rtl .tagselect .add .spinner{left:5px}body.ltr .tagmenu ul li a{padding-left:26px}body.rtl .tagmenu ul li a{padding-right:26px}body.ltr .tagmenu ul li a:before{float:left}body.rtl .tagmenu ul li a:before{float:right}body.ltr .tagmenu ul li a:before{margin:3px 0 0 -18px}body.rtl .tagmenu ul li a:before{margin:3px -18px 0 0}.selectize-control.single .selectize-input:not(.no-arrow):after{display:none}.shadow-box{border:1px solid var(--gray-200);border-radius:var(--large-border-radius);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}table.editable,table.shadow-box{border-collapse:separate;border-spacing:0}table.editable caption+tbody tr:first-child td:first-child,table.editable caption+tbody tr:first-child td:first-child.disabled:after,table.editable caption+tbody tr:first-child th:first-child,table.editable caption+tbody tr:first-child th:first-child.disabled:after,table.editable tbody:first-child tr:first-child td:first-child,table.editable tbody:first-child tr:first-child td:first-child.disabled:after,table.editable tbody:first-child tr:first-child th:first-child,table.editable tbody:first-child tr:first-child th:first-child.disabled:after,table.editable thead tr:first-child td:first-child,table.editable thead tr:first-child td:first-child.disabled:after,table.editable thead tr:first-child th:first-child,table.editable thead tr:first-child th:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:first-child,table.shadow-box caption+tbody tr:first-child td:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:first-child,table.shadow-box caption+tbody tr:first-child th:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:first-child,table.shadow-box tbody:first-child tr:first-child td:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:first-child,table.shadow-box tbody:first-child tr:first-child th:first-child.disabled:after,table.shadow-box thead tr:first-child td:first-child,table.shadow-box thead tr:first-child td:first-child.disabled:after,table.shadow-box thead tr:first-child th:first-child,table.shadow-box thead tr:first-child th:first-child.disabled:after{border-top-left-radius:var(--medium-border-radius)}table.editable caption+tbody tr:first-child td:last-child,table.editable caption+tbody tr:first-child td:last-child.disabled:after,table.editable caption+tbody tr:first-child th:last-child,table.editable caption+tbody tr:first-child th:last-child.disabled:after,table.editable tbody:first-child tr:first-child td:last-child,table.editable tbody:first-child tr:first-child td:last-child.disabled:after,table.editable tbody:first-child tr:first-child th:last-child,table.editable tbody:first-child tr:first-child th:last-child.disabled:after,table.editable thead tr:first-child td:last-child,table.editable thead tr:first-child td:last-child.disabled:after,table.editable thead tr:first-child th:last-child,table.editable thead tr:first-child th:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:last-child,table.shadow-box caption+tbody tr:first-child td:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:last-child,table.shadow-box caption+tbody tr:first-child th:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:last-child,table.shadow-box tbody:first-child tr:first-child td:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:last-child,table.shadow-box tbody:first-child tr:first-child th:last-child.disabled:after,table.shadow-box thead tr:first-child td:last-child,table.shadow-box thead tr:first-child td:last-child.disabled:after,table.shadow-box thead tr:first-child th:last-child,table.shadow-box thead tr:first-child th:last-child.disabled:after{border-top-right-radius:var(--medium-border-radius)}table.editable tbody:last-child tr:last-child td:first-child,table.editable tbody:last-child tr:last-child td:first-child.disabled:after,table.editable tbody:last-child tr:last-child th:first-child,table.editable tbody:last-child tr:last-child th:first-child.disabled:after,table.editable thead:last-child tr:last-child td:first-child,table.editable thead:last-child tr:last-child td:first-child.disabled:after,table.editable thead:last-child tr:last-child th:first-child,table.editable thead:last-child tr:last-child th:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:first-child,table.shadow-box tbody:last-child tr:last-child td:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:first-child,table.shadow-box tbody:last-child tr:last-child th:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:first-child,table.shadow-box thead:last-child tr:last-child td:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child th:first-child,table.shadow-box thead:last-child tr:last-child th:first-child.disabled:after{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}table.editable tbody:last-child tr:last-child td:last-child,table.editable tbody:last-child tr:last-child td:last-child.disabled:after,table.editable tbody:last-child tr:last-child th:last-child,table.editable tbody:last-child tr:last-child th:last-child.disabled:after,table.editable thead:last-child tr:last-child td:last-child,table.editable thead:last-child tr:last-child td:last-child.disabled:after,table.editable thead:last-child tr:last-child th:last-child,table.editable thead:last-child tr:last-child th:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:last-child,table.shadow-box tbody:last-child tr:last-child td:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:last-child,table.shadow-box tbody:last-child tr:last-child th:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:last-child,table.shadow-box thead:last-child tr:last-child td:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child th:last-child,table.shadow-box thead:last-child tr:last-child th:last-child.disabled:after{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}.border-box,.multiselect>select,.passwordwrapper,.selectize.multiselect .selectize-input,.text{background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.25);border-radius:3px}.border-box.focus,.passwordwrapper.focus,.selectize.multiselect .selectize-input.focus,.text.focus{box-shadow:var(--focus-ring)}body.reduce-focus-visibility .border-box:focus-visible,body.reduce-focus-visibility .passwordwrapper:focus-visible,body.reduce-focus-visibility .selectize.multiselect .selectize-input:focus-visible,body.reduce-focus-visibility .text:focus-visible,body:not(.reduce-focus-visibility) .border-box:focus,body:not(.reduce-focus-visibility) .passwordwrapper:focus,body:not(.reduce-focus-visibility) .selectize.multiselect .selectize-input:focus,body:not(.reduce-focus-visibility) .text:focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input,.text>input,.text>textarea,input.text,table.editable textarea,textarea.text{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;color:var(--text-color);font-size:14px;line-height:20px;min-height:3px}.selectize.multiselect .selectize-input{line-height:18px}textarea.text.fullwidth{display:block}.multitext .multitextrow:after{clear:both;content:"";display:block;height:0;visibility:hidden}body.ltr .multitext .multitextrow:first-child .text:first-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:first-child .text:last-child,body.rtl .multitext .multitextrow:first-child .text:first-child{border-top-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:last-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:first-child{border-bottom-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:last-child,body.rtl .multitext .multitextrow:last-child .text:first-child{border-bottom-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:last-child{border-bottom-left-radius:var(--medium-border-radius)}.multitext .multitextrow:not(:first-child) .text{margin-top:-1px}.multitext .multitextrow .text{border-radius:0;box-sizing:border-box;float:left}body.ltr .multitext .multitextrow .text:not(:first-child){margin-left:-1px}body.rtl .multitext .multitextrow .text:not(:first-child){margin-right:-1px}.multitext .multitextrow .text:first-child:last-child{width:100%}.multitext .multitextrow .text:first-child:nth-last-child(2){width:50%}.multitext .multitextrow .text:first-child:nth-last-child(2)~.text{width:calc(50% + 1px)}.multitext .multitextrow .text.error{position:relative;z-index:1}.multitext .multitextrow .selectize.multiselect .selectize-input.focus,.multitext .multitextrow .text:focus{position:relative;z-index:2}.chars-left{color:var(--light-text-color);position:relative}body.ltr .chars-left{float:right}body.rtl .chars-left{float:left}body.ltr .chars-left{margin:-1.6875rem 7px 0 0}body.rtl .chars-left{margin:-1.6875rem 0 0 7px}.input.ltr>.chars-left{float:right!important;margin-right:7px!important}.input.rtl>.chars-left{float:left!important;margin-left:7px!important}.chars-left.negative-chars-left{color:var(--error-color)}.field,fieldset{margin:24px 0;position:relative}.flex>.field,.flex>fieldset{margin-bottom:0;margin-top:0}.field{min-inline-size:0}.field>.status-badge{border-radius:1px;content:"";cursor:help;height:100%;position:absolute;top:0;width:2px}body.ltr .field>.status-badge{left:0}body.rtl .field>.status-badge{right:0}.field>.status-badge.modified{background-color:var(--blue-600);box-shadow:0 0 5px rgba(36,99,235,.15)}.field>.status-badge.outdated{background-color:var(--pending-color);box-shadow:0 0 5px rgba(251,146,60,.15)}.field>.heading{align-items:center;display:flex;flex-wrap:wrap;margin-bottom:5px;margin-top:-5px;position:relative}.field>.heading>label,.field>.heading>legend{font-weight:700}.field>.heading>label code,.field>.heading>legend code{font-size:1em!important}body.ltr .field>.heading>label .info,body.ltr .field>.heading>legend .info{margin-left:5px}body.rtl .field>.heading>label .info,body.rtl .field>.heading>legend .info{margin-right:5px}.field>.heading .t9n-indicator{color:var(--light-text-color);position:relative;top:-.0625rem}body.ltr .field>.heading .t9n-indicator{margin-left:7px}body.rtl .field>.heading .t9n-indicator{margin-right:7px}.field>.heading+.instructions{margin-top:-3px}.field>.heading>.instructions{width:100%}.field>.instructions{margin-bottom:5px}.field>.input{position:relative}.field>.input+.instructions{margin:5px 0 0}.field>.input input:disabled,.field>.input textarea:disabled{cursor:not-allowed}.field>.notice,.field>.warning{margin:5px 0 0}.checkboxfield .instructions,.field>.heading>.instructions,.field>.instructions{color:var(--custom-text-color,var(--medium-text-color))}.checkboxfield .instructions embed,.checkboxfield .instructions iframe,.checkboxfield .instructions img,.checkboxfield .instructions video,.field>.heading>.instructions embed,.field>.heading>.instructions iframe,.field>.heading>.instructions img,.field>.heading>.instructions video,.field>.instructions embed,.field>.instructions iframe,.field>.instructions img,.field>.instructions video{max-width:100%!important}.checkboxfield .instructions ol,.checkboxfield .instructions ul,.field>.heading>.instructions ol,.field>.heading>.instructions ul,.field>.instructions ol,.field>.instructions ul{margin:1em 0}body.ltr .checkboxfield .instructions ol,body.ltr .checkboxfield .instructions ul,body.ltr .field>.heading>.instructions ol,body.ltr .field>.heading>.instructions ul,body.ltr .field>.instructions ol,body.ltr .field>.instructions ul{padding-left:2em}body.rtl .checkboxfield .instructions ol,body.rtl .checkboxfield .instructions ul,body.rtl .field>.heading>.instructions ol,body.rtl .field>.heading>.instructions ul,body.rtl .field>.instructions ol,body.rtl .field>.instructions ul{padding-right:2em}.checkboxfield .instructions ul li,.field>.heading>.instructions ul li,.field>.instructions ul li{list-style-type:disc}.checkboxfield .instructions li+li,.field>.heading>.instructions li+li,.field>.instructions li+li{margin-top:.25em}.expand-status-btn{border-radius:var(--small-border-radius);color:var(--text-color);height:17px;line-height:16px;padding:0;width:30px}body.ltr .expand-status-btn{margin-left:5px}body.rtl .expand-status-btn{margin-right:5px}.expand-status-btn:before{margin:0}.nested-fields{margin:-24px;padding:24px 24px 0}.nested-fields.hidden{display:block;height:0}.nested-fields>.field:last-child{padding-bottom:24px}input.checkbox{height:var(--checkbox-size);opacity:0;position:absolute;width:var(--checkbox-size)}div.checkbox,input.checkbox+label{clear:none;cursor:pointer;display:inline-block;line-height:1rem;min-height:1rem;position:relative}body.ltr div.checkbox,body.ltr input.checkbox+label{padding-left:calc(1rem + 5px)}body.rtl div.checkbox,body.rtl input.checkbox+label{padding-right:calc(1rem + 5px)}div.checkbox,div.checkbox:before,input.checkbox+label,input.checkbox+label:before{border-radius:var(--small-border-radius)}div.checkbox:before,input.checkbox+label:before{background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);box-sizing:border-box;content:"";display:block;font-size:0;height:var(--checkbox-size);position:absolute;top:0;width:var(--checkbox-size)!important}body.ltr div.checkbox:before,body.ltr input.checkbox+label:before{left:0}body.rtl div.checkbox:before,body.rtl input.checkbox+label:before{right:0}body.ltr div.checkbox:empty,body.ltr input.checkbox+label:empty{padding-left:var(--checkbox-size)}body.rtl div.checkbox:empty,body.rtl input.checkbox+label:empty{padding-right:var(--checkbox-size)}div.checkbox:empty:after,input.checkbox+label:empty:after{content:"";font-size:0}div.checkbox .info,input.checkbox+label .info{height:16px}.disabled div.checkbox,input.checkbox:disabled+label{cursor:not-allowed}.elementselectormodal .body .content .main .elements .disabled .checkbox:before,.sel div.checkbox:before,div.checkbox.checked:before,div.checkbox.indeterminate:before,input.checkbox:checked+label:before,input.checkbox:indeterminate+label:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--gray-900);line-height:var(--checkbox-size);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.elementselectormodal .body .content .main .elements .disabled .checkbox:before,.sel.matrixblock>.actions div.checkbox:not(.indeterminate):before,.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,div.checkbox.checked:not(.indeterminate):before,input.checkbox:checked:not(:indeterminate)+label:before{content:"check";font-size:14px}div.checkbox.indeterminate:before,input.checkbox:indeterminate+label:before{content:"minus";font-size:7px;text-align:center}body:not(.reduce-focus-visibility) :focus div.checkbox:before,body:not(.reduce-focus-visibility) input.checkbox:focus+label:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility :focus-visible div.checkbox:before,body.reduce-focus-visibility input.checkbox:focus-visible+label:before{box-shadow:var(--focus-ring)}.checkbox-icon{background-color:var(--enabled-color);border-radius:var(--small-border-radius);color:var(--white);display:inline-flex;padding:3px}.checkbox-icon:before{--checkbox-size:14px;font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"check";font-size:var(--checkbox-size);line-height:var(--checkbox-size);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox-preview-label{display:none}body.reduce-focus-visibility .monaco-mouse-cursor-text:focus-visible,body:not(.reduce-focus-visibility) .monaco-mouse-cursor-text:focus{box-shadow:none!important}fieldset .checkboxfield{margin:5px 0}.checkboxfield .instructions,.checkboxfield .notice,.checkboxfield .warning{margin-top:2px}body.ltr .checkboxfield .instructions,body.ltr .checkboxfield .notice,body.ltr .checkboxfield .warning{padding-left:calc(1rem + 5px)}body.rtl .checkboxfield .instructions,body.rtl .checkboxfield .notice,body.rtl .checkboxfield .warning{padding-right:calc(1rem + 5px)}input.radio{height:var(--radio-size);opacity:0;position:absolute;width:var(--radio-size)}div.radio,input.radio+label{clear:none;cursor:pointer;display:inline-block;line-height:1.7142857143;position:relative}body.ltr div.radio,body.ltr input.radio+label{padding-left:calc(1rem + 5px)}body.rtl div.radio,body.rtl input.radio+label{padding-right:calc(1rem + 5px)}.disabled div.radio,input.radio:disabled+label{cursor:not-allowed}body.ltr div.radio:empty,body.ltr input.radio+label:empty{padding-left:var(--radio-size)}body.rtl div.radio:empty,body.rtl input.radio+label:empty{padding-right:var(--radio-size)}div.radio:after,div.radio:before,input.radio+label:after,input.radio+label:before{background-clip:padding-box;border-radius:100%;box-sizing:border-box;content:"";display:block;position:absolute}div.radio:before,input.radio+label:before{background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);height:var(--radio-size);left:0;top:50%;transform:translateY(-50%);width:var(--radio-size)}div.radio:after,input.radio+label:after{height:calc(var(--radio-size) - 8px);left:4px;top:50%;transform:translateY(-50%);width:calc(var(--radio-size) - 8px)}.sel div.radio:after,div.radio.checked:after,input.radio:checked+label:after{background:var(--gray-900)}body:not(.reduce-focus-visibility) :focus div.radio:before,body:not(.reduce-focus-visibility) input.radio:focus+label:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility :focus-visible div.radio:before,body.reduce-focus-visibility input.radio:focus-visible+label:before{box-shadow:var(--focus-ring)}.multiselect>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--text-color);font-size:14px}body.reduce-focus-visibility .multiselect>select:focus-visible,body:not(.reduce-focus-visibility) .multiselect>select:focus{box-shadow:var(--focus-ring)}.multiselect>select option{padding:1px 8px}.selectize.multiselect .selectize-input,.text{padding:6px 9px}.text{background-color:var(--white)}.text:not(.small){box-sizing:border-box;min-height:2.125rem}.text.small{padding:3px}.text.readable{font-size:16px;line-height:22px;padding:16px 18px}.text.readable+.chars-left{margin-top:-23px}body.ltr .text.clearable{padding-right:var(--touch-target-size)}body.rtl .text.clearable{padding-left:var(--touch-target-size)}.text input{background-color:transparent;border:none;margin:0;padding:0}.input.errors>.autosuggest-container .text,.input.errors>.border-box,.input.errors>.passwordwrapper,.input.errors>.text,.text.error,td.errors .text{border:1px solid var(--error-color)!important}.texticon{cursor:text;min-width:130px;position:relative}.texticon.icon:before{color:var(--ui-control-color);position:absolute;top:calc(50% - .4375rem)}body.ltr .texticon.icon:before{left:9px}body.rtl .texticon.icon:before{right:9px}.texticon .texticon-icon{align-items:center;display:flex;justify-content:center;position:absolute;top:1.0625rem;transform:translateY(-50%)}body.ltr .texticon .texticon-icon{left:9px}body.rtl .texticon .texticon-icon{right:9px}body.ltr .texticon .text{padding-left:1.625rem}body.rtl .texticon .text{padding-right:1.625rem}.texticon .clear-btn{height:var(--touch-target-size);position:absolute;top:calc((var(--touch-target-size) - 34px)/-2);width:var(--touch-target-size)}body.ltr .texticon .clear-btn{right:0}body.rtl .texticon .clear-btn{left:0}body.ltr .texticon.has-filter-btn .text{padding-right:26px}body.rtl .texticon.has-filter-btn .text{padding-left:26px}.texticon.has-filter-btn .filter-btn{border-radius:13px;cursor:pointer;font-size:14px;line-height:22px;padding:0 7px 4px;position:absolute;top:1.0625rem;transform:translateY(-50%)}body.ltr .texticon.has-filter-btn .filter-btn{right:4px}body.rtl .texticon.has-filter-btn .filter-btn{left:4px}.texticon.has-filter-btn .filter-btn:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--medium-text-color);content:"filter";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.texticon.has-filter-btn .filter-btn:hover{background-color:var(--gray-100)}.texticon.has-filter-btn .filter-btn.active,.texticon.has-filter-btn .filter-btn:active,.texticon.has-filter-btn .filter-btn[aria-expanded=true]{background-color:var(--gray-350)}.texticon.has-filter-btn .filter-btn.active:before,.texticon.has-filter-btn .filter-btn:active:before,.texticon.has-filter-btn .filter-btn[aria-expanded=true]:before{color:var(--white)}body.ltr .texticon.has-filter-btn .text.clearable{padding-right:calc(30px + var(--touch-target-size))}body.rtl .texticon.has-filter-btn .text.clearable{padding-left:calc(30px + var(--touch-target-size))}body.ltr .texticon.has-filter-btn .clear-btn{right:30px}body.rtl .texticon.has-filter-btn .clear-btn{left:30px}.texthint-container{height:0;position:relative}.texthint{color:var(--light-text-color);cursor:text;position:absolute;top:-1px;width:100%}.passwordwrapper{position:relative}.passwordwrapper .password{background:transparent;border:none;box-shadow:none;padding-right:4rem}.passwordwrapper .password-toggle{bottom:0;color:var(--link-color);cursor:pointer;position:absolute;top:0}body.ltr .passwordwrapper .password-toggle{right:9px}body.rtl .passwordwrapper .password-toggle{left:9px}.passwordwrapper .password-toggle:hover{text-decoration:underline}.datetimewrapper{flex-direction:row;flex-wrap:nowrap;gap:5px}.clear-btn,.datetimewrapper{align-items:center;display:flex}.clear-btn{background:transparent;border:none;color:var(--ui-control-color);cursor:pointer;justify-content:center;padding:0;width:24px}.clear-btn:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"remove";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clear-btn:hover{color:var(--ui-control-hover-color)}.clear-btn:active{color:var(--ui-control-active-color)}.close-btn{position:relative}.close-btn:after,.close-btn:before{background-color:var(--ui-control-color);content:"";height:15px;left:50%;position:absolute;top:50%;width:2px}.close-btn:before{transform:translate(-50%,-50%) rotate(-45deg)}.close-btn:after{transform:translate(-50%,-50%) rotate(45deg)}.close-btn:hover:after,.close-btn:hover:before{background-color:var(--ui-control-hover-color)}.close-btn:active:after,.close-btn:active:before{background-color:var(--ui-control-active-color)}.datewrapper,.timewrapper{display:inline-block;position:relative}.datewrapper .text,.timewrapper .text{position:relative;width:100%;z-index:1}.datewrapper .text+div[data-icon],.timewrapper .text+div[data-icon]{display:none}.datewrapper .text:-moz-placeholder-shown+div[data-icon],.timewrapper .text:-moz-placeholder-shown+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}.datewrapper .text:-ms-input-placeholder+div[data-icon],.timewrapper .text:-ms-input-placeholder+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}.datewrapper .text.empty-value+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text.empty-value+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}body.ltr .datewrapper .text:-moz-placeholder-shown+div[data-icon],body.ltr .timewrapper .text:-moz-placeholder-shown+div[data-icon]{left:14px}body.ltr .datewrapper .text:-ms-input-placeholder+div[data-icon],body.ltr .timewrapper .text:-ms-input-placeholder+div[data-icon]{left:14px}body.ltr .datewrapper .text.empty-value+div[data-icon],body.ltr .datewrapper .text:placeholder-shown+div[data-icon],body.ltr .timewrapper .text.empty-value+div[data-icon],body.ltr .timewrapper .text:placeholder-shown+div[data-icon]{left:14px}body.rtl .datewrapper .text:-moz-placeholder-shown+div[data-icon],body.rtl .timewrapper .text:-moz-placeholder-shown+div[data-icon]{right:14px}body.rtl .datewrapper .text:-ms-input-placeholder+div[data-icon],body.rtl .timewrapper .text:-ms-input-placeholder+div[data-icon]{right:14px}body.rtl .datewrapper .text.empty-value+div[data-icon],body.rtl .datewrapper .text:placeholder-shown+div[data-icon],body.rtl .timewrapper .text.empty-value+div[data-icon],body.rtl .timewrapper .text:placeholder-shown+div[data-icon]{right:14px}.datewrapper .text:-moz-placeholder-shown+div[data-icon],.datewrapper .text:-moz-placeholder-shown+div[data-icon]:before,.timewrapper .text:-moz-placeholder-shown+div[data-icon],.timewrapper .text:-moz-placeholder-shown+div[data-icon]:before{pointer-events:none;-moz-user-select:none;user-select:none;z-index:1}.datewrapper .text:-ms-input-placeholder+div[data-icon],.datewrapper .text:-ms-input-placeholder+div[data-icon]:before,.timewrapper .text:-ms-input-placeholder+div[data-icon],.timewrapper .text:-ms-input-placeholder+div[data-icon]:before{pointer-events:none;-ms-user-select:none;user-select:none;z-index:1}.datewrapper .text.empty-value+div[data-icon],.datewrapper .text.empty-value+div[data-icon]:before,.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon]:before,.timewrapper .text.empty-value+div[data-icon],.timewrapper .text.empty-value+div[data-icon]:before,.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]:before{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.datewrapper{width:8em}.timewrapper{width:7em}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--gray-400)}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--gray-400)}input::placeholder,textarea::placeholder{color:var(--gray-400)}::-ms-clear,::-ms-reveal{display:none}tr.indexingSession td{height:34px;padding:1px 10px}tr.indexingSession td.progress div.progressContainer{align-items:center;display:flex;justify-content:space-between;width:100%}tr.indexingSession td.progress div.progressContainer .progressbar{height:12px;left:0;position:relative;width:70%;z-index:1}tr.indexingSession td.progress div.progressContainer div.progressInfo{width:20%}.select:not(.selectize),.select:not(.selectize) select{border-radius:5px;position:relative;white-space:nowrap}.select:not(.selectize){max-width:100%;position:relative}:not(.flex)>.select:not(.selectize){display:inline-block}.select:not(.selectize):after{border:solid;border-width:0 .125rem .125rem 0;color:var(--ui-control-color);content:"";display:block;font-size:0;height:.4375rem;opacity:.8;pointer-events:none;position:relative;position:absolute;top:calc(50% - 5px);transform:rotate(45deg);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:.4375rem;z-index:1}body.ltr .select:not(.selectize):after{right:9px}body.rtl .select:not(.selectize):after{left:9px}.select:not(.selectize) select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#dfe5ec;border:none;color:#3f4d5a;display:block;font-size:14px;line-height:20px;max-width:100%;position:relative;white-space:pre}body.ltr .select:not(.selectize) select{padding:7px 22px 7px 10px}body.rtl .select:not(.selectize) select{padding:7px 10px 7px 22px}.select:not(.selectize) select::-ms-expand{display:none}.select:not(.selectize).fullwidth select{min-width:100%}.select:not(.selectize) select:hover{background-color:#cfd8e2;box-shadow:var(--focus-ring);outline-color:transparent}body.reduce-focus-visibility .select:not(.selectize) select:focus-visible,body:not(.reduce-focus-visibility) .select:not(.selectize) select:focus{background-color:#cfd8e2;box-shadow:var(--focus-ring);outline-color:transparent}.select:not(.selectize).small:after{top:9px}.select:not(.selectize).small select{font-size:11px;padding-bottom:4px!important;padding-top:4px!important}.custom-select.disabled,.selectize-control .selectize-input.disabled{cursor:not-allowed!important;opacity:1;pointer-events:auto!important}.custom-select.disabled *,.selectize-control .selectize-input.disabled *{cursor:not-allowed!important;pointer-events:auto!important}.selectize .selectize-input{background-color:transparent;border-color:inherit;box-shadow:none;display:block}.selectize .selectize-input .item{max-width:100%}.selectize .selectize-input .item span{overflow:hidden;text-overflow:ellipsis}.selectize.select .selectize-input:after{display:none}body .selectize-dropdown{border:none;z-index:101}.selectize.select{height:34px}.selectize.select input::-moz-placeholder,.selectize.select textarea::-moz-placeholder{color:var(--gray-700)}.selectize.select input:-ms-input-placeholder,.selectize.select textarea:-ms-input-placeholder{color:var(--gray-700)}.selectize.select input::placeholder,.selectize.select textarea::placeholder{color:var(--gray-700)}.selectize.select:not(.fullwidth){max-width:100%;width:25em}.datetimewrapper .selectize.select:not(.fullwidth){max-width:calc(100% - 29px)}.selectize.select .selectize-control{max-width:100%;position:relative}:not(.flex)>.selectize.select .selectize-control{display:inline-block}.selectize.select .selectize-control:after{border:solid;border-width:0 .125rem .125rem 0;color:var(--ui-control-color);content:"";display:block;font-size:0;height:.4375rem;opacity:.8;pointer-events:none;position:relative;position:absolute;top:calc(50% - 5px);transform:rotate(45deg);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:.4375rem;z-index:1}body.ltr .selectize.select .selectize-control:after{right:9px}body.rtl .selectize.select .selectize-control:after{left:9px}.selectize.select .selectize-input{border-radius:5px;white-space:nowrap}.selectize.select .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.select .selectize-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#dfe5ec;border:none;color:#3f4d5a;display:block;font-size:14px;line-height:20px;max-width:100%;position:relative}body.ltr .selectize.select .selectize-input{padding:7px 22px 7px 10px}body.rtl .selectize.select .selectize-input{padding:7px 10px 7px 22px}.selectize.select .selectize-input::-ms-expand{display:none}.selectize.select .selectize-control,.selectize.select .selectize-input{width:100%}.selectize.multiselect .selectize-input{min-height:34px;padding-bottom:3px}.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input>.item{background-color:#e4edf6;border-radius:3px;color:#3f4d5a;display:inline-block;display:inline-flex;flex-direction:row;font-size:12px;line-height:14px;padding:3px 7px;padding:3px 7px!important}.selectize.multiselect .selectize-input>.item.active{background-color:#cdd8e4}.selectize.multiselect .selectize-input>.item>.remove{border-left:none;color:var(--ui-control-color);font-size:0;padding:0;position:static}body.ltr .selectize.multiselect .selectize-input>.item>.remove{margin:-1px -3px 0 3px}body.rtl .selectize.multiselect .selectize-input>.item>.remove{margin:-1px 3px 0 -3px}.selectize.multiselect .selectize-input>.item>.remove:hover{background-color:transparent;color:var(--ui-control-hover-color)}.selectize.multiselect .selectize-input>.item>.remove:before{font-family:Craft;font-size:14px;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"remove";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body .selectize-dropdown{margin-top:1px}body .selectize-dropdown .optgroup-header,body .selectize-dropdown .option,body .selectize-dropdown [data-selectable]{color:#3f4d5a;margin:0 -14px;padding:10px 14px;text-decoration:none;white-space:nowrap}body .selectize-dropdown .optgroup{padding-top:5px}body .selectize-dropdown .optgroup:not(:first-child){border-top:1px solid var(--hairline-color)}body .selectize-dropdown .optgroup .option{padding-left:24px}body .selectize-dropdown .optgroup-header{color:#606d7b;font-size:11px;line-height:1.2;margin:0;padding:4px 0;text-transform:uppercase}body .selectize-dropdown .active:not(.selected),body .selectize-dropdown .option:hover{background-color:var(--gray-100)}body .selectize-dropdown .selected{background-color:var(--dark-sel-color);color:var(--white)!important;cursor:default!important}body .selectize-dropdown .selected svg circle,body .selectize-dropdown .selected svg ellipse,body .selectize-dropdown .selected svg line,body .selectize-dropdown .selected svg path,body .selectize-dropdown .selected svg polygon,body .selectize-dropdown .selected svg polyline,body .selectize-dropdown .selected svg rect,body .selectize-dropdown .selected svg text{fill:var(--white);stroke-width:0}body .selectize-dropdown .selected .light{color:inherit!important}body .selectize-dropdown-content{background:#fff;border-radius:4px;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);max-height:70vh;overflow:auto;padding:0 14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:100}body .selectize-dropdown-content .option{min-height:18px}body .selectize-dropdown-content>div[data-value=new]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"plus";margin-right:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body .selectize-dropdown-content>div[data-value=new]:after{content:"…"}body.no-scroll .selectize-dropdown-content{max-height:200px}.ui-datepicker{position:fixed;top:-300px;-padding:10px;height:242px;width:210px;z-index:101!important}body.ltr .ui-datepicker{margin-left:1px}body.rtl .ui-datepicker{margin-right:1px}.ui-datepicker-header{padding:8px 8px 4px}body.ltr .ui-datepicker-prev{float:left}body.ltr .ui-datepicker-next,body.rtl .ui-datepicker-prev{float:right}body.rtl .ui-datepicker-next{float:left}.ui-datepicker-next span,.ui-datepicker-prev span{display:none}.ui-datepicker-next,.ui-datepicker-prev{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.ui-datepicker-next:hover:after,.ui-datepicker-prev:hover:after{border-color:var(--link-color)}.ui-datepicker-prev:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .ui-datepicker-prev:after{transform:rotate(135deg)}body.rtl .ui-datepicker-prev:after{transform:rotate(-45deg)}.ui-datepicker-next:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .ui-datepicker-next:after{transform:rotate(-45deg)}body.rtl .ui-datepicker-next:after{transform:rotate(135deg)}.ui-datepicker-title{text-align:center}.ui-datepicker-calendar td,.ui-datepicker-calendar th{padding:2px!important}.ui-datepicker-calendar td a,.ui-datepicker-calendar th span{color:var(--text-color);display:block;line-height:26px;text-align:center;width:1.625rem}.ui-datepicker-calendar th span{color:var(--medium-text-color);font-weight:400}.ui-datepicker-calendar td a{border-radius:2px}.ui-datepicker-calendar td a:hover{background-color:var(--light-sel-color);text-decoration:none}.ui-datepicker-calendar td a.ui-state-active{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.ui-datepicker-calendar td.ui-datepicker-today a{border-radius:13px;box-shadow:inset 0 0 0 2px var(--light-sel-color)}.ui-timepicker-wrapper{z-index:101}.ui-timepicker-list{height:210px;overflow-y:auto;width:calc(14px + 6em);z-index:100}body.ltr .ui-timepicker-list{margin-left:1px}body.rtl .ui-timepicker-list{margin-right:1px}.ui-timepicker-list li{cursor:pointer;white-space:nowrap}body.ltr .ui-timepicker-list li{padding:2px 0 2px 14px}body.rtl .ui-timepicker-list li{padding:2px 14px 2px 0}.ui-timepicker-list li:hover{background-color:var(--light-sel-color)}.ui-timepicker-list li.ui-timepicker-selected{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.slide-picker{display:flex;height:1rem;white-space:nowrap}.slide-picker a{background-image:none;border:1px solid var(--hairline-color);box-sizing:border-box;cursor:pointer;height:calc(1rem - 2px);margin-bottom:1px;margin-left:0;margin-top:1px;position:relative;width:calc(.5rem - 1px)}body.ltr .slide-picker a{border-left:none}body.rtl .slide-picker a{border-right:none}.slide-picker a:first-child{width:.5rem}body.ltr .slide-picker a:first-child{border-left:1px solid var(--gray-400)!important}body.rtl .slide-picker a:first-child{border-right:1px solid var(--gray-400)!important}.slide-picker a:before{content:"";height:var(--touch-target-size);left:-1px;position:absolute;top:calc(-.25rem - 1px);width:calc(100% + 2px)}.slide-picker:hover a.active-hover,.slide-picker:not(:hover) a.active{border-bottom-color:var(--gray-400);border-top-color:var(--gray-400);height:1rem;margin-bottom:0;margin-top:0}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-left:1px solid var(--gray-400)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-right:1px solid var(--gray-400)}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-top-left-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-top-right-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-bottom-left-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-bottom-right-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-right:1px solid var(--gray-400)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-left:1px solid var(--gray-400)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-top-right-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-top-left-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-bottom-right-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-bottom-left-radius:var(--small-border-radius)}.slide-picker:focus a.active{background-color:var(--light-sel-color)}.icon-picker{align-items:center;display:flex;flex-direction:row;gap:var(--xs)}.icon-picker--icon{align-items:center;background-clip:padding-box;background-color:#fbfcfe;background:var(--gray-050);border:1px solid rgba(96,125,159,.25);border-radius:3px;border-radius:var(--ui-control-border-radius);display:flex;height:var(--ui-control-height);justify-content:center;width:var(--ui-control-height)}.icon-picker--icon svg{height:1.25rem;width:1.25rem}.icon-picker--icon svg circle,.icon-picker--icon svg ellipse,.icon-picker--icon svg line,.icon-picker--icon svg path,.icon-picker--icon svg polygon,.icon-picker--icon svg polyline,.icon-picker--icon svg rect,.icon-picker--icon svg text{fill:var(--ui-control-color);stroke-width:0}.icon-picker-modal{--width:calc(var(--ui-control-height)*10 + var(--s)*9 + var(--xl)*2);max-width:calc(100% - 20px)!important;min-width:0!important;width:var(--width)!important}.icon-picker-modal .body{display:flex;flex-direction:column;gap:var(--l);height:100%}.icon-picker-modal .body .icon-picker-modal--list{flex:1;overflow:hidden;position:relative}.icon-picker-modal .body .icon-picker-modal--list:not(.loading) .spinner{display:none}.icon-picker-modal .body .icon-picker-modal--list.loading:after{background-color:hsla(0,0%,100%,.75);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.icon-picker-modal .body .icon-picker-modal--list.loading .spinner{top:calc(50% - 10px);z-index:1}.icon-picker-modal .body .icon-picker-modal--list ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--s);justify-content:start;max-height:100%;overflow:auto}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon{--focus-ring:var(--inner-focus-ring)}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon:hover{background-color:var(--blue-100);border-color:var(--link-color)}ul.errors{list-style-type:square;margin-top:5px}body.ltr ul.errors{padding-left:20px}body.rtl ul.errors{padding-right:20px}ul.errors li{color:var(--error-color)}.message-container{height:100%;position:absolute;top:0;width:100%;z-index:100}body.ltr .message-container{left:0}body.rtl .message-container{right:0}.message-container.no-access{background-color:rgba(31,41,51,.5)}.message-container .pane{box-shadow:0 25px 100px rgba(31,41,51,.5);margin-left:auto;margin-right:auto;margin-top:-33px!important;top:50%;width:320px}body.setup-2fa{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%}body.setup-2fa #setup-2fa{display:flex;flex-direction:column;gap:var(--l);max-width:100%;padding:var(--padding);width:550px}body.setup-2fa #setup-2fa #setup-2fa-intro{text-align:center}body.licensing-issues,body.setup-2fa #setup-2fa #setup-2fa-btn{display:flex;justify-content:center}body.licensing-issues{align-items:center;flex-direction:column;min-height:100%;padding:var(--padding)}body.licensing-issues #licensing-issues{display:flex;flex-direction:row;max-width:50em}body.licensing-issues #licensing-issues .buttons{justify-content:space-between}body.licensing-issues #licensing-issues .buttons [data-icon]{margin-left:0;margin-right:0}body.licensing-issues #continue{margin:0}.autosuggest-container{position:relative}.autosuggest__results-container{background-color:var(--white);border-radius:var(--large-border-radius);box-shadow:0 1px 5px -1px rgba(31,41,51,.2);box-sizing:border-box;font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1em!important;padding:0 14px;position:absolute;text-align:left;width:100%;z-index:2}.autosuggest__results-container .autosuggest__results-before{color:#606d7b;font-size:11px;line-height:1.2;margin:14px 0 3px;margin-top:14px!important;text-transform:uppercase}.autosuggest__results-container .autosuggest__results-item{color:#3f4d5a;margin:0 -14px;overflow:hidden;padding:10px 14px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted,.autosuggest__results-container .autosuggest__results-item:hover{background-color:var(--dark-sel-color);color:var(--white)!important;cursor:pointer}.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg circle,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg ellipse,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg line,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg path,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polygon,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polyline,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg rect,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg text,.autosuggest__results-container .autosuggest__results-item:hover svg circle,.autosuggest__results-container .autosuggest__results-item:hover svg ellipse,.autosuggest__results-container .autosuggest__results-item:hover svg line,.autosuggest__results-container .autosuggest__results-item:hover svg path,.autosuggest__results-container .autosuggest__results-item:hover svg polygon,.autosuggest__results-container .autosuggest__results-item:hover svg polyline,.autosuggest__results-container .autosuggest__results-item:hover svg rect,.autosuggest__results-container .autosuggest__results-item:hover svg text{fill:var(--white);stroke-width:0}.matrix>.buttons{margin-top:10px}.matrixblock{background-color:var(--white);border:2px solid var(--gray-100);border-radius:var(--large-border-radius);margin-bottom:10px;padding:0 var(--m) var(--m);position:relative}.matrixblock.static .titlebar{margin-bottom:14px}body.ltr .matrixblock.static .titlebar{padding-right:0}body.rtl .matrixblock.static .titlebar{padding-left:0}body.ltr .matrixblock.static .titlebar{padding-left:14px}body.rtl .matrixblock.static .titlebar{padding-right:14px}.matrixblock>.actions .action-btn,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){background-color:transparent;color:var(--custom-text-color,var(--ui-control-color));height:var(--touch-target-size);padding:0;width:var(--touch-target-size)}.matrixblock>.actions .action-btn:hover,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):hover{-webkit-backdrop-filter:brightness(90%);backdrop-filter:brightness(90%)}.matrixblock>.actions .action-btn:active,.matrixblock>.actions .action-btn[aria-expanded=true],.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):active,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn)[aria-expanded=true]{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.matrixblock .flex-fields{--row-gap:var(--m)!important}.matrixblock .hidden+.field{margin-top:0}.matrixblock>.titlebar{align-items:center;border-radius:calc(var(--large-border-radius) - 2px) calc(var(--large-border-radius) - 2px) 0 0;box-sizing:border-box;color:var(--custom-text-color,var(--light-text-color));display:grid;gap:var(--m);grid-template-columns:auto 1fr;margin:0 calc(var(--m)*-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;background-color:var(--gray-050);cursor:default;min-height:calc(var(--lh) + 10px);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .matrixblock>.titlebar{padding:5px calc(var(--m) + 70px) 5px var(--m)}body.rtl .matrixblock>.titlebar{padding:5px var(--m) 5px calc(var(--m) + 70px)}.matrixblock>.titlebar>.preview{flex-grow:1;min-width:0;opacity:0;overflow:hidden;transition:opacity .1s linear}.matrixblock>.titlebar>.preview:empty{display:none}body.ltr .matrixblock>.titlebar>.preview{-webkit-mask-image:linear-gradient(270deg,transparent,#000 12px);mask-image:linear-gradient(270deg,transparent,#000 12px)}body.rtl .matrixblock>.titlebar>.preview{-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px);mask-image:linear-gradient(90deg,transparent,#000 12px)}.matrixblock>.titlebar>.preview span{opacity:.5}.matrixblock>.titlebar>.matrixblock-tabs{flex:1;margin:-5px 0;min-width:0}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{margin:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-right:3px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-left:3px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist]{padding:0 12px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab]{background-color:transparent}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab] .tab-label{height:calc(var(--lh) + 10px);padding:0 var(--m)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){margin-left:0;margin-right:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-left:0}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-right:0}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-left:calc((var(--m) + 12px)*-1)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-right:calc((var(--m) + 12px)*-1)}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-left-radius:calc(var(--large-border-radius) - 2px)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-right-radius:calc(var(--large-border-radius) - 2px)}body.ltr .matrixblock.disabled-entry>.titlebar{padding-right:100px}body.rtl .matrixblock.disabled-entry>.titlebar{padding-left:100px}.matrixblock.disabled-entry>.actions>.status.off{display:block}.matrixblock.collapsed>.titlebar{border-radius:calc(var(--large-border-radius) - 2px)}.matrixblock.collapsed>.titlebar>.preview{opacity:1}.matrixblock>.actions{align-items:center;cursor:default;display:flex;gap:var(--xs);min-height:calc(var(--lh) + 10px);position:absolute;top:0}body.ltr .matrixblock>.actions{right:var(--m)}body.rtl .matrixblock>.actions{left:var(--m)}.matrixblock>.actions>*{margin:0!important}.matrixblock>.actions>.status.off{display:none}.matrixblock>.actions a:not([data-action]){color:var(--dark-hairline-color);height:var(--touch-target-size);padding:0;text-align:center;transform:color linear .1s}.matrixblock>.actions a:not([data-action]):hover{color:var(--link-color)}.matrixblock>.actions a:not([data-action]):hover.settings:after{border-color:var(--link-color)}.matrixblock:not(.static)>.fields{padding-top:var(--l)}.matrixblock>.fields>.flex-fields>.field:before{display:none}body.ltr .matrixblock>.fields>.flex-fields>.field>.status-badge{left:-2px}body.rtl .matrixblock>.fields>.flex-fields>.field>.status-badge{right:-2px}.matrixblock>.buttons{height:30px;margin-top:0}.add-category-form{margin-top:24px}.add-category-form .texticon{width:200px}body.ltr .add-category-form .texticon{float:left}body.rtl .add-category-form .texticon{float:right}body.ltr .add-category-form .texticon{margin-right:5px}body.rtl .add-category-form .texticon{margin-left:5px}body.ltr .add-category-form .texticon .text{padding-right:30px}body.rtl .add-category-form .texticon .text{padding-left:30px}.add-category-form .texticon .spinner{position:absolute;top:0}body.ltr .add-category-form .texticon .spinner{right:5px}body.rtl .add-category-form .texticon .spinner{left:5px}body.sitepicker #main-content{align-items:center;justify-content:center;padding:30px;text-align:center}body.sitepicker #content-container{max-width:400px}.sitepicker-group li:not(:first-child) a{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.sitepicker-group li:not(:first-child) a:not(:hover){border-top-color:transparent}.sitepicker-group li:not(:last-child) a{border-bottom-left-radius:0;border-bottom-right-radius:0}.sitepicker-group li a{border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);box-sizing:border-box;display:block;font-size:16px;line-height:1.4;position:relative;text-align:left;width:100%}body.ltr .sitepicker-group li a{padding:9px 42px 9px 15px}body.rtl .sitepicker-group li a{padding:9px 15px 9px 42px}.sitepicker-group li a:after{font-size:14px;margin:0;padding:0;position:absolute;top:calc(50% - 7px)}body.ltr .sitepicker-group li a:after{right:12px}body.rtl .sitepicker-group li a:after{left:12px}.sitepicker-group li a:hover{border-color:var(--link-color);text-decoration:none;z-index:1}.elementselectormodal .body .main{float:left\9;width:445px\9}@media only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx){.structure ul li{background-size:40px}body.ltr .structure ul li{background-image:url(../images/branch_2x.png)}body.rtl .structure ul li{background-image:url(../images/branch_rtl_2x.png)}.hud .tip-left{background-image:url(../images/hudtip_left_2x.png);background-size:15px 30px}.hud .tip-top{background-image:url(../images/hudtip_top_2x.png);background-size:30px 15px}.hud .tip-right{background-image:url(../images/hudtip_right_2x.png);background-size:15px 30px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom_2x.png);background-size:30px 15px}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray_2x.png)}}:root{--xs:4px;--s:8px;--m:14px;--l:18px;--xl:24px;--padding:var(--xl);--neg-padding:calc(var(--padding)*-1);--sidebar-width:14.125rem;--global-sidebar-width:14.125rem;--header-height:2.75rem;--details-width:350px}html{-webkit-text-size-adjust:100%}body,html{min-height:100vh}body.dragging *{cursor:move!important;cursor:grabbing!important}body :focus{box-shadow:var(--focus-ring);outline-color:transparent;outline-style:solid}.reduce-focus-visibility :focus:not(:focus-visible){box-shadow:none}.reduce-focus-visibility :focus-visible{box-shadow:var(--focus-ring)}.skip-link{height:1px;left:-10000px;margin:5px;overflow:hidden;position:absolute;top:0;width:1px;z-index:101}.skip-link:focus{background-color:var(--gray-100)!important;height:auto;left:unset;width:auto}body.ltr .skip-link:focus{left:0}body.rtl .skip-link:focus{right:0}@media only screen and (min-width:75rem){#global-skip-link{--light-color:var(--white);--dark-color:var(--gray-800);--focus-ring:0 0 0 3px var(--dark-color),0 0 0 6px var(--light-color)}}#global-container{display:flex;min-height:100vh;position:relative}@media screen and (prefers-reduced-motion:no-preference){body.ltr #global-container{transition:left .1s cubic-bezier(.33,1,.68,1)}body.rtl #global-container{transition:right .1s cubic-bezier(.33,1,.68,1)}}#global-header{grid-template-columns:1fr min-content min-content}#global-header,#system-info{align-items:center;display:grid}#system-info{background-clip:padding-box;border-bottom:1px solid var(--hairline-color);color:currentColor;flex:0 0 2.8125rem;flex-direction:row;gap:10px;grid-template-columns:var(--prefix-width) auto;height:2.8125rem;padding:0 var(--gutter-width);position:relative}#system-info:after{display:none}#system-info:focus,#system-info:hover{background-color:var(--gray-200);text-decoration:none}#site-icon{--size:var(--prefix-width);height:var(--size)}#site-icon img,#site-icon svg{border-radius:4px;display:block;height:var(--size);width:var(--size)}#site-icon svg circle,#site-icon svg ellipse,#site-icon svg line,#site-icon svg path,#site-icon svg polygon,#site-icon svg polyline,#site-icon svg rect,#site-icon svg text{fill:var(--medium-text-color);stroke-width:0}#system-name .h2,#system-name h2{display:-webkit-box;margin:0;max-height:40px;overflow:hidden;position:relative;width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media only screen and (min-width:75rem){[data-sidebar=collapsed] #system-info:hover #system-name{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] #system-name{background:#fff;border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);color:var(--text-color);left:calc(100% + var(--s)*2);opacity:0;padding:var(--xs) var(--s);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%) translateX(-5px);white-space:nowrap}[data-sidebar=collapsed] #system-name:focus{box-shadow:var(--focus-ring)}}@media only screen and (min-width:75rem)and (prefers-reduced-motion:no-preference){[data-sidebar=collapsed] #system-name{transition:opacity 50ms cubic-bezier(.33,1,.68,1),transform .15s cubic-bezier(.33,1,.68,1)}}#global-footer{align-items:center;display:flex;flex-direction:column;gap:var(--m);padding:var(--m) var(--m) var(--xl)}body.has-debug-toolbar #global-footer{padding-bottom:calc(var(--xl) + 42px)}#global-footer a{white-space:nowrap}#app-info{display:flex;flex-direction:row;gap:var(--m);justify-content:center}#trial-info{background-color:var(--gray-150);border-radius:var(--large-border-radius);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px #bdcbdb,0 2px 12px rgba(205,216,228,.5);padding:16px var(--xl);text-align:center}#app-version{align-items:center;color:var(--gray-600);display:flex;font-size:12px;gap:var(--s);justify-content:center;text-align:center}#app-version a{text-decoration:underline}#app-version a,#app-version a.go:hover:after{color:var(--gray-600)}#edition-logo{border:1px solid var(--gray-600);border-radius:3px;box-sizing:content-box;display:inline-flex;font-size:11px;font-weight:600;letter-spacing:1.7px;line-height:8px;padding:6px 5px 6px 7px;position:relative;text-transform:uppercase;top:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#devmode{background:url(../images/dev-mode.svg) repeat-x 21px 0,var(--gray-900);cursor:help;flex:0 0 4px;margin-top:auto;min-height:4px;width:100%}#page-container{display:flex;flex-direction:column;flex-grow:1}#alerts{background-color:var(--red-050);border-left:6px solid var(--error-color);color:var(--error-color);position:relative}#alerts>li{box-shadow:inset 0 -1px 0 0 var(--red-100);padding:10px 24px}#alerts>li .resolvable-alert-buttons{margin-top:var(--m)}#alerts>li .btn,#alerts>li a.go{align-items:center;border:1px solid rgba(220,38,38,.5);border-radius:var(--medium-border-radius);color:var(--error-color);display:inline-flex;height:1.875rem;margin:0 2px;padding:4px 5px}.flex #alerts>li .btn,.flex #alerts>li a.go{margin:0}#alerts>li .btn:hover,#alerts>li a.go:hover{border-color:var(--error-color)}#alerts>li a:not(.btn){color:var(--error-color);text-decoration:underline}#alerts>li a:not(.btn).go{text-decoration:none;white-space:nowrap}#alerts>li a:not(.btn).go:after{color:var(--error-color);font-size:15px;margin-top:1px}#alerts>li .btn{background-color:transparent}#global-header .btn.menubtn,.btn.action-btn,li.crumb .btn.menubtn{height:var(--touch-target-size);padding:0;width:var(--touch-target-size)}#global-header .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),.btn.action-btn:not(:hover):not(:active):not([aria-expanded=true]),li.crumb .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]){background-color:transparent}#global-header{border-bottom:1px solid var(--hairline-color);margin-bottom:var(--m);width:100%}#global-header .flex{align-items:center;height:var(--header-height)}#global-header .btn{--ui-control-color:var(--gray-400);--ui-control-hover-color:var(--gray-800);--ui-control-active-color:var(--gray-700)}#global-header .btn:hover{color:var(--ui-control-hover-color)}.nav-toggle{align-items:center;border-right:1px solid var(--medium-hairline-color);color:currentColor;display:flex;height:var(--header-height);justify-content:center;line-height:26px;min-width:44px;text-align:center;width:44px}.nav-toggle:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"menu";font-size:16px;line-height:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nav-toggle:hover{color:var(--link-color)}#crumbs{align-items:center;display:flex;flex-direction:row;font-size:13px;margin:0!important;max-width:100%;overflow:hidden}#crumbs.empty{display:none}#crumbs nav{margin:0}#primary-nav-toggle:focus-visible{box-shadow:var(--inner-focus-ring)}#crumb-list{align-items:stretch;display:flex;flex-direction:row;flex-wrap:nowrap;height:var(--header-height);max-width:100%;--arrow-padding:10;--arrow-height:22;--arrow-angle:35;--arrow-width:17.1111;--arrow-c:27.871}body.rtl #crumb-list{--arrow-angle:-35;--arrow-width:-19.4444}#crumb-list li.crumb{color:var(--light-text-color);cursor:default;position:relative}body.ltr #crumb-list li.crumb{padding-left:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb{padding-right:calc(var(--arrow-width)*.5rem/16)}body.ltr #crumb-list li.crumb:not(.current){padding-right:calc(var(--arrow-width)*1.125rem/16)}body.rtl #crumb-list li.crumb:not(.current){padding-left:calc(var(--arrow-width)*1.125rem/16)}#crumb-list li.crumb:not(.current):after,#crumb-list li.crumb:not(.current):before{background:var(--medium-hairline-color);content:"";display:block;height:calc(var(--arrow-c)*1rem/16);pointer-events:none;position:absolute;width:1px}body.ltr #crumb-list li.crumb:not(.current):after,body.ltr #crumb-list li.crumb:not(.current):before{right:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb:not(.current):after,body.rtl #crumb-list li.crumb:not(.current):before{left:calc(var(--arrow-width)*.5rem/16)}#crumb-list li.crumb:not(.current):before{top:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle)*-1deg))}#crumb-list li.crumb:not(.current):after{bottom:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle)*1deg))}#crumb-list .menu--disclosure li{display:block}#crumb-list .menu--disclosure li:after{content:none}#crumb-menu-trigger{min-width:var(--touch-target-size)}#crumb-menu-trigger:before{width:100%}#crumb-menu .chip{min-height:44px}li.crumb{align-items:center;display:flex;flex-wrap:nowrap;gap:var(--xs)}li.crumb [data-icon]{position:relative;top:-1px}li.crumb .menubtn{margin:0 calc(var(--xs)*-1/2);position:relative}li.crumb [data-icon=ellipsis]:before{font-size:17px;margin-top:3px}li.crumb .chip{background-color:transparent;padding:0;--custom-bg-color:initial!important;--custom-text-color:initial!important;--custom-sel-bg-color:initial!important}li.crumb .chip .label-link{max-width:15em}li.crumb .chip .label-link:focus-visible{box-shadow:var(--inner-focus-ring)}li.crumb .chip .label-link span:not(.context-label){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.crumb:has(.menubtn)>a{margin-right:0!important;padding-right:var(--xs)!important}li.crumb>a{align-items:center;display:flex!important;flex:1;flex-wrap:nowrap;gap:var(--xs);white-space:nowrap}.menu--disclosure li.crumb>a{min-height:34px}li.crumb a,li.crumb button{align-items:center;display:inline-flex;min-height:var(--touch-target-size)}li.crumb a:not(:hover),li.crumb button:not(:hover){color:var(--text-color)}li.crumb a:not(:hover) svg circle,li.crumb a:not(:hover) svg ellipse,li.crumb a:not(:hover) svg line,li.crumb a:not(:hover) svg path,li.crumb a:not(:hover) svg polygon,li.crumb a:not(:hover) svg polyline,li.crumb a:not(:hover) svg rect,li.crumb a:not(:hover) svg text,li.crumb button:not(:hover) svg circle,li.crumb button:not(:hover) svg ellipse,li.crumb button:not(:hover) svg line,li.crumb button:not(:hover) svg path,li.crumb button:not(:hover) svg polygon,li.crumb button:not(:hover) svg polyline,li.crumb button:not(:hover) svg rect,li.crumb button:not(:hover) svg text{fill:var(--text-color);stroke-width:0}li.crumb a:hover,li.crumb button:hover{text-decoration:none}li.crumb a{position:relative}li.crumb button{cursor:pointer}li.breadcrumb-toggle-wrapper:after{content:none}#account-menu ul li a{max-width:calc(100% + 28px)!important}#announcements-btn{height:1.875rem;padding-left:0;padding-right:0;position:relative;width:1.875rem;width:calc(1.75rem + 10px)}#announcements-btn:not(:hover):not(:active):not(.active){background-color:transparent}#announcements-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}#announcements-btn.unread:after{background-color:var(--blue-600);border-radius:50%;content:"";display:block;height:.4375rem;position:absolute;top:.1875rem;width:.4375rem}body.ltr #announcements-btn.unread:after{right:5px}body.rtl #announcements-btn.unread:after{left:5px}#announcements-btn svg{height:1rem;width:1rem}#announcements-btn svg circle,#announcements-btn svg ellipse,#announcements-btn svg line,#announcements-btn svg path,#announcements-btn svg polygon,#announcements-btn svg polyline,#announcements-btn svg rect,#announcements-btn svg text{fill:var(--ui-control-color);stroke-width:0}#announcements-btn.active svg circle,#announcements-btn.active svg ellipse,#announcements-btn.active svg line,#announcements-btn.active svg path,#announcements-btn.active svg polygon,#announcements-btn.active svg polyline,#announcements-btn.active svg rect,#announcements-btn.active svg text,#announcements-btn:active svg circle,#announcements-btn:active svg ellipse,#announcements-btn:active svg line,#announcements-btn:active svg path,#announcements-btn:active svg polygon,#announcements-btn:active svg polyline,#announcements-btn:active svg rect,#announcements-btn:active svg text,#announcements-btn:hover svg circle,#announcements-btn:hover svg ellipse,#announcements-btn:hover svg line,#announcements-btn:hover svg path,#announcements-btn:hover svg polygon,#announcements-btn:hover svg polyline,#announcements-btn:hover svg rect,#announcements-btn:hover svg text{fill:var(--ui-control-active-color);stroke-width:0}#announcements{max-width:350px}#announcements .announcement:not(:first-child){margin-top:20px}#announcements .announcement .announcement-label-container{align-items:center;display:flex;margin-bottom:3px;margin-top:-3px}#announcements .announcement .announcement-label-container .announcement-icon svg{display:block;height:15px;width:15px}#announcements .announcement .announcement-label-container .announcement-label{color:var(--light-text-color);font-size:12px;margin-left:5px}#announcements .announcement.unread .announcement__heading:after{background-color:var(--blue-600);border-radius:4px;content:"";display:block;height:7px;position:absolute;top:7px;width:7px}body.ltr #announcements .announcement.unread .announcement__heading:after{left:-13px}body.rtl #announcements .announcement.unread .announcement__heading:after{right:-13px}#announcements .announcement p{margin:0}#announcements .announcement__header{display:grid}#announcements .announcement__heading{margin:0 0 3px;order:1;position:relative}#user-info{align-items:center;background-color:transparent;border-radius:0;display:flex;flex-direction:row;height:100%;padding-bottom:5px;padding-top:5px}body.ltr #user-info{padding-left:var(--s)}body.rtl #user-info{padding-right:var(--s)}body.ltr #user-info{padding-right:calc(var(--padding) + 1px)}body.rtl #user-info{padding-left:calc(var(--padding) + 1px)}#user-info:after{border-color:var(--ui-control-color);transition:border-color .1s linear}#user-info:hover:after{border-color:var(--ui-control-hover-color)}#user-info[aria-expanded=true]:after{border-color:var(--ui-control-active-color)}.header-photo img,.header-photo svg{border-radius:50%;box-shadow:0 0 0 1px rgba(31,41,51,.05),0 0 0 rgba(31,41,51,0);display:block;height:1.875rem;max-width:none;transition:box-shadow .15s linear;width:1.875rem}#user-info:hover .header-photo img,#user-info:hover .header-photo svg{box-shadow:0 0 0 1px rgba(31,41,51,.05),0 2px 10px -2px rgba(31,41,51,.3)}#main-container{flex-grow:1;position:relative}#notifications{bottom:8px;position:fixed;width:calc(100% - 16px);z-index:101}body.ltr #notifications{left:8px}body.rtl #notifications{right:8px}body.has-debug-toolbar #notifications{bottom:50px}@media only screen and (min-width:60.875rem){#notifications{width:350px}}#notifications .notification{background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);box-shadow:0 0 0 1px rgba(19,26,32,.15),0 2px 12px rgba(19,26,32,.15);display:flex;padding:10px 14px;position:relative;--color:var(--notice-color)}#notifications .notification:focus{box-shadow:var(--focus-ring)}#notifications .notification[data-type=success]{--color:var(--success-color)}#notifications .notification[data-type=error]{--color:var(--error-color)}#notifications .notification+.notification{margin-top:12px}#notifications .notification .notification-icon{color:var(--color);font-size:18px;margin-top:-2px;width:18px}body.ltr #notifications .notification .notification-icon{margin-right:10px}body.rtl #notifications .notification .notification-icon{margin-left:10px}#notifications .notification .notification-main{overflow:hidden}#notifications .notification .notification-body{display:grid;gap:var(--s);grid-template-columns:20px 1fr;width:100%}#notifications .notification .notification-body .notification-message{font-weight:700;overflow-wrap:anywhere;word-break:normal}#notifications .notification .notification-body .notification-details{margin-top:var(--xs)}#notifications .notification .notification-body .notification-details .chip{border:1px solid rgba(51,64,77,.1)}#notifications .notification .notification-close-btn{position:relative;top:-2px}body.ltr #notifications .notification .notification-close-btn{margin-left:10px}body.rtl #notifications .notification .notification-close-btn{margin-right:10px}#header-container{margin-bottom:var(--m)}@media only screen and (min-width:75rem){#primary-nav-toggle{display:none}body.ltr #crumbs.empty+.context-menu-container,body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{margin-left:var(--padding)}body.rtl #crumbs.empty+.context-menu-container,body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{margin-right:var(--padding)}body.ltr #crumbs.empty+.context-menu-container,body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{padding-left:0}body.rtl #crumbs.empty+.context-menu-container,body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{padding-right:0}}#global-header .flex,#header .flex{max-width:100%}#global-header .flex.flex-nowrap,#header .flex.flex-nowrap{min-width:0}#header{align-content:stretch;align-items:flex-start;background-color:rgba(154,165,177,0);box-shadow:0 1px 0 rgba(51,64,77,0);box-sizing:border-box;display:flex;flex-wrap:nowrap;gap:var(--s);justify-content:space-between;padding:5px var(--padding);position:relative;transition:background-color .1s linear,box-shadow .1s linear;z-index:2}body.fixed-header #header{background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.1);position:fixed;top:0;z-index:12}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){#header{transition:background-color .1s linear,box-shadow .1s linear,-webkit-backdrop-filter .1s linear;transition:background-color .1s linear,box-shadow .1s linear,backdrop-filter .1s linear;transition:background-color .1s linear,box-shadow .1s linear,backdrop-filter .1s linear,-webkit-backdrop-filter .1s linear}body.fixed-header #header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75)}}#header h1{line-height:34px;margin-bottom:0;min-width:0}#header .btngroup,#header .buttons,#header h1{margin-top:0}@media only screen and (min-width:60.875rem){#page-title.has-toolbar{min-width:calc(14.125rem - var(--xl) - var(--s))!important}}#toolbar{align-items:flex-start;flex:1;justify-content:space-between}#toolbar .icon:before,#toolbar .menubtn:after,#toolbar .texticon:before,#toolbar [data-icon-after]:after,#toolbar [data-icon]:before{color:currentColor;opacity:.8}#toolbar .text{border-radius:var(--large-border-radius)}#toolbar .text:-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text::-moz-placeholder{color:var(--light-text-color)}#toolbar .text::placeholder{color:var(--light-text-color)}#toolbar .text:not(:focus){background-clip:border-box}@media only screen and (max-width:400px){#action-buttons .btngroup .btn:first-child{flex-basis:100%}}@media only screen and (max-width:60.8125rem){#action-buttons{flex-direction:row-reverse;justify-content:start;margin-top:10px}}#main-content{align-items:flex-start;box-sizing:border-box;display:flex;flex-direction:row;padding:0 var(--padding) 48px}#main-content>.grid:only-child{flex:1}#sidebar-toggle-container{display:none}#sidebar-container{box-sizing:border-box;flex:0 0 14.125rem;width:14.125rem}@media only screen and (min-width:75rem){body.ltr #sidebar-container{margin-left:calc(var(--xl)*-1)}body.rtl #sidebar-container{margin-right:calc(var(--xl)*-1)}}#sidebar{background-color:transparent;box-sizing:border-box;padding:0 40px var(--m);position:relative;width:14.125rem}#sidebar.fixed{position:fixed}#sidebar nav{margin-left:-31px;margin-right:-31px}#sidebar nav li a{position:relative}#sidebar nav li a:focus{z-index:1}#sidebar nav li a:not(.sel):hover{background-color:var(--gray-200)}#sidebar .skip-link{margin:0 var(--s)}@media only screen and (min-width:75rem){#sidebar{padding:0 31px var(--m)}}#content-container{flex:1 1 auto;width:400px}.content-pane{background:#fff;background-clip:padding-box;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:var(--xl) var(--padding);position:relative;word-wrap:break-word}.content-pane:focus{box-shadow:var(--focus-ring)}.content-pane>hr{margin-left:calc(var(--xl)*-1);margin-right:calc(var(--xl)*-1)}#footer,.footer{line-height:2rem;min-height:44px;padding:6px var(--pane-padding,var(--xl))}#footer .buttons,.footer .buttons{align-items:center;display:flex;height:32px}#footer .btn,.footer .btn{height:var(--ui-control-height--small);padding-bottom:4px;padding-top:4px}#footer{background-color:var(--gray-050);border-radius:var(--small-border-radius);border-top:2px solid var(--white);bottom:0;box-sizing:border-box;margin:calc(var(--s) + 1px) calc(var(--padding)*-1 + 2px) calc(var(--xl)*-1 + 2px);position:sticky;z-index:1}#footer:empty{display:none}#footer.stuck{border-radius:0}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){#footer.stuck{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75)}}.has-debug-toolbar #footer{transition:padding .1s linear}.has-debug-toolbar #footer.stuck{padding-bottom:52px}#footer .flex>*,#footer>*{margin-bottom:0}#details-container[data-state=collapsed]{display:none}#details-container{display:block;flex:0 1 auto;width:calc(var(--details-width) + var(--m))}body.ltr #details-container{padding-left:var(--m)}body.rtl #details-container{padding-right:var(--m)}#details{display:none;display:block;width:350px;z-index:1}#details.fixed{position:fixed}#details .details{padding-bottom:calc(var(--xl) + 11.5em)}#details .details .meta{border-radius:var(--large-border-radius)}#details .details .meta:not(.read-only):not(.warning){background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details .meta:not(.read-only):not(.warning):focus{box-shadow:var(--focus-ring)}#details .details .meta.read-only{background-color:transparent!important;color:var(--medium-text-color)}#details .details .meta>.data:first-child,#details .details .meta>.field:first-child{border-top-right-radius:var(--large-border-radius)}#details .details .meta>.data:first-child,#details .details .meta>.data:first-child>.status-badge,#details .details .meta>.field:first-child,#details .details .meta>.field:first-child>.status-badge{border-top-left-radius:var(--large-border-radius)}#details .details .meta>.data:last-child,#details .details .meta>.field:last-child{border-bottom-right-radius:var(--large-border-radius)}#details .details .meta>.data:last-child,#details .details .meta>.data:last-child>.status-badge,#details .details .meta>.field:last-child,#details .details .meta>.field:last-child>.status-badge{border-bottom-left-radius:var(--large-border-radius)}#details .details>.field>.input>.text.fullwidth{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details>.field>.input>.text.fullwidth:focus{box-shadow:var(--focus-ring)}#details .details .notes{border-radius:var(--large-border-radius);padding-bottom:var(--m);padding-top:var(--m)}@media only screen and (max-width:74.9375rem){#global-container{width:calc(100vw + 14.125rem)}body.ltr #global-container{left:-14.125rem}body.rtl #global-container{right:-14.125rem}body.ltr.showing-nav #global-container{left:0}body.rtl.showing-nav #global-container{right:0}#crumbs{display:flex!important}#header,#main-content{width:100vw}#main-content.has-sidebar{padding-left:0}}@media only screen and (max-width:60.8125rem){#header{display:flex;flex-wrap:wrap}#header .flex:not(#toolbar){margin-top:10px}#toolbar{flex:auto;flex-wrap:wrap!important;order:3;width:100%}#toolbar>*{margin-top:10px!important}#action-buttons{order:2}body.fixed-header #header .flex:first-child{margin-top:0}#main-content{display:block}#main-content.has-sidebar{padding:0 var(--padding) 48px}#sidebar nav{margin-left:-40px;margin-right:-40px}#sidebar .skip-link{margin:0}#source-actions{margin-left:-9px;margin-top:var(--s)}#sidebar-toggle-container{display:block;margin-bottom:var(--s)}#sidebar-toggle:after{top:0;transform:rotate(45deg)}body.rtl #sidebar-toggle:after{transform:rotate(135deg)}#content-container{min-height:0!important}#details-container,#sidebar-container{display:block;padding-left:0!important;width:auto!important}#details-toggle{display:none}#details,#sidebar{max-height:none!important;overflow-y:visible!important;position:relative!important;width:auto}#sidebar{margin-bottom:var(--m)}body.showing-sidebar #sidebar{background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding-block:.5rem}body.showing-sidebar #sidebar:focus{box-shadow:var(--focus-ring)}body:not(.showing-sidebar) #sidebar{display:none}body.ltr #details-container{margin-right:0}body.rtl #details-container{margin-left:0}#content-container{max-width:none!important;width:auto!important}#details{margin-top:var(--m);padding:0!important}#details .details{margin-bottom:auto}}@media only screen and (max-width:767px){:root{--padding:var(--s);--neg-padding:calc(var(--s)*-1)}#tabs ul li a{padding-left:var(--m);padding-right:var(--m)}body.ltr #tabs ul li+li{margin-left:-7px}body.rtl #tabs ul li+li{margin-right:-7px}.card-grid{display:flex!important;flex-direction:column}}body.ltr #settingsmenu ul li a{padding-left:46px}body.rtl #settingsmenu ul li a{padding-right:46px}#settingsmenu ul li a:before{font-size:15px}body.ltr #settingsmenu ul li a:before{margin:1px 0 0 -22px}body.rtl #settingsmenu ul li a:before{margin:1px -22px 0 0}#settingsmenu ul li a img{height:16px;margin-left:-23px;margin-top:1px;position:absolute;width:16px}.grid{min-height:1px;position:relative}.grid:after{clear:both;content:"";display:block;height:0;visibility:hidden}.grid>.item{display:none}.grid>.item,.sidebar{box-sizing:border-box}.sidebar{font-size:13px;width:14.125rem}.sidebar:not(.drag-helper){background-color:var(--gray-050);padding:var(--m) 0}.sidebar .heading{margin:0 var(--xl);position:relative}.sidebar .heading:not(:first-child){margin-top:var(--m)}.sidebar .heading>span{color:var(--medium-text-color);display:inline-block;font-size:11px;font-weight:700;margin:0 -5px;padding:0 5px;position:relative;text-transform:uppercase;z-index:1}.sidebar .heading>ul{margin:2px calc(var(--xl)*-1)}.sidebar nav{padding:0 var(--s)}body.ltr .sidebar nav>ul>li.heading>ul>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>a{padding-left:24px}body.rtl .sidebar nav>ul>li.heading>ul>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>a{padding-right:24px}body.ltr .sidebar nav>ul>li.heading>ul>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>.toggle{left:calc(var(--m)*0)}body.rtl .sidebar nav>ul>li.heading>ul>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>.toggle{right:calc(var(--m)*0)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>a{padding-left:38px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>a{padding-right:38px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle{left:calc(var(--m)*1)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle{right:calc(var(--m)*1)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a{padding-left:52px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a{padding-right:52px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*2)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*2)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:66px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:66px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*3)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*3)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:80px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:80px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*4)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*4)}.sidebar nav li{position:relative}.sidebar nav li:not(.has-subnav)>a:not(.sel):hover{text-decoration:none}.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.sel{background-color:var(--gray-500);cursor:default}.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.active-drop-target+.toggle,.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.sel+.toggle{color:var(--white)}.sidebar nav li:not(.has-subnav)>a.sel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sidebar nav li a{align-items:center;border-radius:var(--large-border-radius);box-sizing:border-box;color:var(--text-color);cursor:pointer;display:flex;flex-direction:row;margin-bottom:1px;min-height:var(--xl);padding:7px var(--xl);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;word-break:break-word}.sidebar nav li a .status{flex-shrink:1}.sidebar nav li a .icon{flex-shrink:1;height:1.125rem;opacity:.85;position:relative;top:1px;transition:margin-left .15s linear,margin-right .15s linear;width:1.125rem;word-break:normal}body.ltr .sidebar nav li a .icon{margin-right:10px}body.rtl .sidebar nav li a .icon{margin-left:10px}.sidebar nav li a .icon.icon-mask svg circle,.sidebar nav li a .icon.icon-mask svg ellipse,.sidebar nav li a .icon.icon-mask svg line,.sidebar nav li a .icon.icon-mask svg path,.sidebar nav li a .icon.icon-mask svg polygon,.sidebar nav li a .icon.icon-mask svg polyline,.sidebar nav li a .icon.icon-mask svg rect,.sidebar nav li a .icon.icon-mask svg text{fill:currentColor;stroke-width:0}.sidebar nav li a .icon.icon-mask span[data-icon]{color:currentColor}.sidebar nav li a .icon svg{height:1rem;width:1rem}.sidebar nav li a .icon span[data-icon]{font-size:16px}.sidebar nav li a .icon span[data-icon]:before{display:block}.sidebar nav li a .label{flex:1}.sidebar nav li a .badge{background-color:var(--medium-text-color);border-radius:var(--s);color:var(--white);flex-shrink:1;font-size:.6875rem;line-height:16px;padding:0 6px}body.ltr .sidebar nav li a .badge{margin:0 -4px 0 10px}body.rtl .sidebar nav li a .badge{margin:0 10px 0 -4px}.sidebar nav li .toggle{align-items:center;display:flex;height:34px;justify-content:center;position:absolute;top:0;width:var(--xl);z-index:1}.sidebar nav li ul{display:none}.sidebar nav li.expanded>ul,.sidebar nav li.heading>ul{display:block}.error-summary{background:#fff;background-color:var(--gray-050);border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin-bottom:var(--l);padding:var(--l) var(--xl)}.error-summary:focus{box-shadow:var(--focus-ring)}.error-summary .notification-icon{color:var(--error-color);float:left;margin:-2px 6px 0 0}.error-summary h2{margin-top:0}.error-summary>ul.errors li,.error-summary>ul.errors li a{color:var(--text-color)}.error-summary>ul.errors li a em,.error-summary>ul.errors li em{font-weight:600}.error-summary>ul.errors li a:hover,.error-summary>ul.errors li:hover{color:var(--link-color)}.slideout .error-summary{background-color:rgba(var(--error-color-rgb),.03);border:1px solid var(--error-color);box-shadow:none;padding:var(--m)}.slideout .flex-fields .error-summary{margin:0 var(--row-gap) var(--row-gap)}body.ltr .content.has-sidebar:not(.hiding-sidebar){margin-left:14.125rem}body.rtl .content.has-sidebar:not(.hiding-sidebar){margin-right:14.125rem}#content-notice{margin:0 calc(var(--xl)*-1);padding:0 var(--xl)}#content-notice:not(:last-child){border-bottom:1px solid var(--hairline-color);margin-bottom:5px;padding-bottom:5px}#content :not(.meta)>.flex-fields,#content>.flex-fields,.draghelper .flex-fields,.so-content .flex-fields{--row-gap:var(--xl);align-content:flex-start;display:flex;flex-wrap:wrap;margin:0 calc(var(--row-gap)*-1) calc(var(--row-gap)*-1);width:calc(100% + var(--row-gap)*2)}#content :not(.meta)>.flex-fields>:not(.error-summary),#content>.flex-fields>:not(.error-summary),.draghelper .flex-fields>:not(.error-summary),.so-content .flex-fields>:not(.error-summary){box-sizing:border-box;margin:0 0 var(--row-gap)!important;padding:0 var(--row-gap)}#content :not(.meta)>.flex-fields>h2,#content>.flex-fields>h2,.draghelper .flex-fields>h2,.so-content .flex-fields>h2{flex:4 0 100%}#content :not(.meta)>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),#content>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.draghelper .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.so-content .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))){border-top:1px solid var(--hairline-color);padding-top:var(--xl)}#content :not(.meta)>.flex-fields>.line-break,#content :not(.meta)>.flex-fields>hr,#content>.flex-fields>.line-break,#content>.flex-fields>hr,.draghelper .flex-fields>.line-break,.draghelper .flex-fields>hr,.so-content .flex-fields>.line-break,.so-content .flex-fields>hr{flex:4 0 100%}#content :not(.meta)>.flex-fields>.line-break:not(:first-child),#content>.flex-fields>.line-break:not(:first-child),.draghelper .flex-fields>.line-break:not(:first-child),.so-content .flex-fields>.line-break:not(:first-child){margin-bottom:0!important}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break),#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,#content>.flex-fields>:not(h2):not(hr):not(.line-break),#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break),.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child,.so-content .flex-fields>:not(h2):not(hr):not(.line-break),.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child{position:relative;width:100%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{background-color:rgba(205,216,228,.5);content:"";height:100%;position:absolute;top:0;width:1px}body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{left:-1px}body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{right:-1px}@media only screen and (min-width:96rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25{width:25%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75{width:75%}}@media only screen and (min-width:37.5rem)and (max-width:95.9375rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}@media only screen and (min-width:75rem){.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}.global-sidebar{--is-always-visible:true;--prefix-width:1.875rem;--prefix-ratio:1;--gutter-width:0.625rem;display:grid;grid-auto-flow:row;grid-template-columns:var(--global-sidebar-width);grid-template-rows:var(--header-height) minmax(0,1fr) auto;height:100vh;padding:0;position:sticky;top:0;z-index:100;-webkit-overflow-scrolling:touch;background-color:var(--gray-150);border-inline-end:1px solid var(--hairline-color);width:var(--global-sidebar-width)}.global-sidebar a{text-decoration:none}.global-sidebar :not(.has-subnav)>a:not([href]),.global-sidebar>a:not([href]){background-color:transparent;cursor:default}@media only screen and (max-width:74.9375rem){.global-sidebar{--is-always-visible:false}}.global-sidebar__nav{overflow-x:hidden;overflow-y:auto;padding:var(--s) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-scroll-chaining:none;overscroll-behavior:contain}.global-sidebar__footer{border-block-start:1px solid var(--hairline-color);margin-block-start:auto}.global-nav>ul{display:flex;flex-direction:column;gap:var(--s)}.global-nav>ul>li{position:relative}.nav-icon{align-items:center;aspect-ratio:1;display:inline-flex;flex-direction:column;justify-content:center;line-height:0;width:1rem;--thumb-size:1rem}.nav-icon>svg{height:100%;width:100%}.nav-icon>svg circle,.nav-icon>svg ellipse,.nav-icon>svg line,.nav-icon>svg path,.nav-icon>svg polygon,.nav-icon>svg polyline,.nav-icon>svg rect,.nav-icon>svg text{fill:currentColor;stroke-width:0}.nav-item{--gutter-width:0.625rem;align-items:center;display:grid;grid-template-areas:". action trigger ." "subnav subnav subnav subnav";grid-template-columns:var(--gutter-width) minmax(0,1fr) var(--prefix-width) var(--gutter-width);width:100%}.nav-item>.sidebar-action{grid-area:action}.nav-item__trigger{--icon-size:10px;--trigger-size:var(--touch-target-size);display:flex;grid-area:trigger;z-index:1}.nav-item__trigger .menubtn{align-items:center;border:transparent;flex-direction:column;height:var(--trigger-size);justify-content:center;padding:0;width:var(--trigger-size)}.nav-item__trigger .menubtn:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--medium-text-color);color:var(--white)}.nav-item__trigger .menubtn[aria-expanded=true]:not(:hover){background-color:transparent}.nav-item__trigger .menubtn[aria-expanded=true]:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;top:2px;transform:rotate(225deg);width:.4375rem}.nav-item__trigger .menubtn:after{margin-inline-start:0!important}.nav-item__subnav{--prefix-ratio:4/3;display:none;grid-area:subnav}.nav-item__subnav[data-state=expanded]{display:block}.badge{background-color:var(--medium-text-color);border-radius:var(--s);color:var(--white);display:inline-flex;font-size:11px;height:1rem;justify-content:center;line-height:1rem;min-width:1.1rem;padding:0 var(--xs);text-align:center}.sidebar-actions{padding:10px var(--gutter-width)}.sidebar-action{--thumb-size:0.75rem;align-items:center;border-radius:var(--medium-border-radius);color:currentColor;cursor:pointer;display:grid;font-weight:500;grid-template-columns:var(--prefix-width) minmax(0,1fr) auto;min-height:30px;padding-inline:var(--xs);position:relative;text-align:left;width:100%}.sidebar-action:before{content:"";height:80%;inset-block-start:50%;inset-inline-start:-.625rem;position:absolute;transform:translateY(-50%);width:var(--xs)}.sidebar-action:focus-visible,.sidebar-action:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--medium-text-color);color:var(--white)}.sidebar-action.sel:before{--indicator-size:6px;background-color:var(--medium-text-color);color:var(--white)}.sidebar-action--sub{--indicator-size:4px;font-size:.9em;min-height:26px}.sidebar-action--sub:focus-visible:before,.sidebar-action--sub:hover:before{background-color:var(--white)}.sidebar-action--sub:before{background-color:currentColor;border-radius:100%;height:var(--indicator-size);top:50%;width:var(--indicator-size)}body.ltr .sidebar-action--sub:before{left:calc(15px - var(--indicator-size)/2)}body.rtl .sidebar-action--sub:before{right:calc(15px - var(--indicator-size)/2)}.sidebar-action--job{align-items:flex-start;grid-column:2/4!important}.sidebar-action--job .sidebar-action__label{flex-wrap:wrap;gap:var(--xs);padding-block:var(--xs)}.sidebar-action--job .label{white-space:normal}.sidebar-action--job .progress-label{color:var(--gray-300);display:block;font-size:11px;line-height:1.5;width:100%}.sidebar-action--job .nav-icon{display:block;height:16px;position:relative;width:16px}.sidebar-action--job .nav-icon>canvas{display:block;height:16px;position:absolute;width:16px}.sidebar-action--job #job-icon-hover{opacity:0}.sidebar-action--job:hover #job-icon-hover{opacity:1}.sidebar-action--job:hover #job-icon-static{opacity:0}.sidebar-action__prefix{align-items:center;aspect-ratio:var(--prefix-ratio);display:flex;flex-shrink:0;justify-content:center;line-height:0;width:var(--prefix-width)}.sidebar-action__label{align-items:center;display:flex;gap:var(--s);margin-inline-start:7px;overflow:hidden;padding:0 var(--xs);text-overflow:ellipsis;white-space:nowrap}.sidebar-action__label [data-icon=external]{display:inline-flex}.sidebar-action__badge{display:flex;flex:0 1 auto;flex-direction:column;justify-content:center;margin-inline-start:auto;padding:0 var(--s)}@media only screen and (min-width:75rem){[data-sidebar=collapsed] .global-sidebar{--global-sidebar-width:3.125rem}[data-sidebar=collapsed] .nav-item{grid-template-areas:". action ." ". trigger ." "subnav subnav subnav";grid-template-columns:var(--gutter-width) var(--prefix-width) var(--gutter-width)}[data-sidebar=collapsed] .nav-item__indicator{right:-1px}[data-sidebar=collapsed] .sidebar-action{min-height:var(--prefix-width);padding-inline:0;width:var(--prefix-width)}[data-sidebar=collapsed] .sidebar-action:focus-visible .sidebar-action__label,[data-sidebar=collapsed] .sidebar-action:hover .sidebar-action__label{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] .nav-item__trigger .menubtn{height:var(--touch-target-size);padding-block:2px var(--xs);width:100%}[data-sidebar=collapsed] .sidebar-action__label{display:none;opacity:0;z-index:10}[data-sidebar=collapsed] .sidebar-action__badge{bottom:var(--xs);padding:0;position:absolute;right:calc(var(--xs)*-1);transform:translateY(25%);z-index:100}[data-sidebar=collapsed] .sidebar-action--sub{min-height:26px}[data-sidebar=collapsed] .sidebar-action--sub:before{inset-block-start:50%;inset-inline-start:50%;transform:translateX(-50%) translateY(-50%)}[data-sidebar=collapsed] .global-nav>ul>li+li{--separator-width:1.75rem}[data-sidebar=collapsed] .global-nav>ul>li+li:before{background-color:var(--hairline-color);content:"";height:1px;inset-block-start:calc(var(--s)/-2);inset-inline-start:calc((var(--global-sidebar-width) - var(--separator-width))/2);margin:0 auto;position:absolute;width:var(--separator-width)}[data-sidebar=expanded] #sidebar-toggle-icon{transform:rotate(180deg)}}#sidebar-trigger{display:none}@media only screen and (min-width:75rem){#sidebar-trigger{display:flex}}craft-tooltip{left:0;max-width:240px;opacity:0;position:fixed;top:0;transform:translateY(-4px);transition:opacity .1s ease-in-out,transform .15s ease-in-out;white-space:normal;width:-moz-max-content;width:max-content;z-index:99}craft-tooltip>.inner{background-color:var(--white);border:1px solid var(--dark-hairline-color);border-radius:var(--medium-border-radius);box-shadow:0 0 10px rgba(0,0,0,.2);color:var(--gray-700);display:inline-block;font-weight:400;padding:var(--xs) var(--s);pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}craft-tooltip .arrow{background:var(--white);border:1px solid transparent;height:8px;position:absolute;transform:rotate(45deg);width:8px}craft-tooltip .arrow[data-placement^=bottom]{border-block-color:var(--dark-hairline-color) transparent;border-inline-color:var(--dark-hairline-color) transparent}craft-tooltip .arrow[data-placement^=top]{border-block-color:transparent var(--dark-hairline-color);border-inline-color:transparent var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=right]{border-block-color:transparent var(--dark-hairline-color);border-inline-color:var(--dark-hairline-color) transparent}craft-tooltip .arrow[data-placement^=left]{border-block-color:var(--dark-hairline-color) transparent;border-inline-color:transparent var(--dark-hairline-color)}.lp-editor-container,.lp-preview-container{background-color:var(--white);height:100%;position:fixed;top:0;z-index:100}.lp-editor-container>header,.lp-preview-container>header{background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.2);box-sizing:border-box;padding:5px 24px;position:relative;z-index:1}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-editor-container>header,.lp-preview-container>header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75);left:0;position:absolute;top:0;width:100%;z-index:2}.lp-editor-container>header+.lp-editor,.lp-preview-container>header+.lp-editor{padding-top:68px}}.lp-editor-container>header .btn,.lp-editor-container>header .checkmark-icon,.lp-editor-container>header .spinner,.lp-preview-container>header .btn,.lp-preview-container>header .checkmark-icon,.lp-preview-container>header .spinner{margin-bottom:0}.lp-editor-container{display:flex;flex-direction:column}.lp-editor-container .lp-editor{box-sizing:border-box;flex:1;overflow:auto;padding:24px}.lp-editor-container .lp-editor>.field:last-child{margin-bottom:24px!important}body.ltr .lp-editor-container .lp-editor>.field>.status-badge{left:-24px}body.rtl .lp-editor-container .lp-editor>.field>.status-badge{right:-24px}body.ltr .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{left:calc(var(--m)*-1)}body.rtl .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{right:calc(var(--m)*-1)}.lp-editor-container .lp-draghandle{cursor:col-resize;height:100%;position:absolute;top:0;width:4px;z-index:101}body.ltr .lp-editor-container .lp-draghandle{right:-2px}body.rtl .lp-editor-container .lp-draghandle{left:-2px}.lp-preview-container{box-shadow:-1px 0 0 rgba(63,77,90,.2);display:flex;flex-direction:column}.lp-preview-container.dragging:after{content:"";font-size:0;height:100%;left:0;position:absolute;top:0;width:100%}.lp-preview-container .lp-preview-header{display:flex}@supports not ((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-preview-header{background-color:rgba(228,237,246,.75)}}.lp-preview-container .lp-preview-header .buttons{margin:0}body.ltr .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-left:7px}body.rtl .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-right:7px}.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:0}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:44px}}.lp-preview-container .lp-preview-header .lp-device-type .btn:before{background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:22px;transition-duration:.3s;width:27px}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--phone:before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--tablet:before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--desktop:before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-device-type__label:before{background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:22px;transition-duration:.3s;width:27px}.lp-preview-container .lp-device-type__label.lp-device-type__label--phone:before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--tablet:before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--desktop:before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-preview-container__bumper-link{bottom:0;top:unset}.lp-preview-container .lp-device-mask{display:none}.lp-preview-container .lp-iframe-container{flex:1;overflow:auto}.lp-preview-container .lp-iframe-container .lp-preview{display:block;min-height:100%;width:100%}.lp-preview-container .lp-iframe-container:not(.lp-iframe-container--has-device-preview) .lp-device-preview-container{height:100%!important;margin:0!important;transform:none!important;width:auto!important}.lp-preview-container .lp-iframe-container--has-device-preview{background-color:var(--gray-100);flex:none;height:calc(100% - 44px);padding-top:0!important;position:relative;top:0;width:100%}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-iframe-container--has-device-preview{top:44px}}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-preview-container{left:50%;opacity:1;overflow:auto;position:absolute;top:50%;transition:opacity .3s;z-index:2}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-mask{background-color:#fff;background-image:url(../images/preview/chrome-phone-top.svg),url(../images/preview/chrome-phone-bottom.svg);background-position:top,bottom;background-repeat:no-repeat;background-size:contain;border-radius:18px;box-shadow:0 0 58px rgba(6,67,117,.3);display:block;left:50%;position:absolute;top:50%;z-index:1}.lp-preview-container .lp-iframe-container--has-device-preview.lp-iframe-container--tablet .lp-device-mask{background-image:url(../images/preview/chrome-tablet-top.svg),url(../images/preview/chrome-tablet-bottom.svg)}@media screen and (prefers-reduced-motion:no-preference){.lp-preview-container .lp-iframe-container--rotating .lp-device-mask{transition-duration:.3s;transition-property:transform}.lp-preview-container .lp-iframe-container--rotating .lp-device-preview-container{opacity:0;transition:opacity 0s}}.login-container .login-form-container{background-color:var(--gray-050)}.login-container .login-form input[readonly]{cursor:not-allowed}.login-container .login-form>.btn,.login-container .login-form>.field{margin-top:var(--l)}.login-container .login-form>.btn:not(:last-child):not(.last),.login-container .login-form>.field:not(:last-child):not(.last){margin-bottom:var(--l)}.login-container .login-form .btn{display:flex}.login-container .alternative-login-methods{margin-top:var(--m)}.login-container .alternative-login-methods .btn{width:100%}.login-container .login-alt-container button,.login-container .login-forgot-password{color:var(--medium-text-color);cursor:pointer!important;font-size:11px}.login-container .login-alt-container{margin:calc(var(--s) - var(--xl)) 0}.login-container .login-alt-container button{background-color:transparent;display:inline-flex;height:auto;min-height:var(--touch-target-size);padding:0;width:auto}.login-container .login-alt-container button:focus,.login-container .login-alt-container button:hover,.login-container .login-forgot-password:focus,.login-container .login-forgot-password:hover{color:var(--link-color)}.login-container .login-errors{color:var(--error-color);margin-top:1em;text-align:center}.login-alt-menu{z-index:1001}body.login{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%}body.login main{max-width:100%;padding:var(--padding);width:calc(300px + var(--padding)*2)}body.login main h1{font-size:32px;line-height:40px;text-align:center;word-wrap:break-word}body.login main h1 #login-logo{height:auto;max-height:300px;width:100%}body.login #poweredby{display:block;margin-bottom:48px;margin-top:70px;opacity:.8;text-align:center}body.login #poweredby:active,body.login #poweredby:focus,body.login #poweredby:hover{opacity:1}body.login #poweredby>svg{display:inline-block}.modal.email-sent{width:300px}body.ltr .modal.email-sent .body{padding-left:68px}body.rtl .modal.email-sent .body{padding-right:68px}.modal.email-sent .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--link-color);content:"mail";display:block;font-size:30px;position:absolute;top:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.email-sent .body:before{left:24px}body.rtl .modal.email-sent .body:before{right:24px}.login-modal{background:var(--gray-100);border-radius:var(--large-border-radius);max-width:calc(100% - 20px);width:calc(600px + var(--l)*2)}.login-modal .body{display:flex;flex-direction:row;padding:var(--l)}.login-modal .body .login-modal-form,.login-modal .body .login-modal-intro{max-width:100%;width:300px}.login-modal .body .login-modal-intro{padding:var(--m)}@media screen and (max-width:656px){.login-modal{border-radius:var(--large-border-radius)}.login-modal .body{flex-direction:column;gap:var(--m);overflow:auto;padding:var(--m)}.login-modal .body .login-modal-intro{padding:var(--xs) var(--xl)}.login-modal .body .login-modal-form{border-radius:0}}.layoutdesigner{container-type:inline-size}.fld-container{align-items:stretch;background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.25);border-radius:3px;box-shadow:none;display:flex;min-height:500px;overflow:hidden;position:relative}body.ltr .fld-container{padding-right:265px}body.rtl .fld-container{padding-left:265px}.errors>.fld-container{border:1px solid var(--error-color)!important}.fld-container .fld-workspace{background-color:var(--gray-050);background-image:linear-gradient(to right,var(--gray-100) 1px,transparent 0),linear-gradient(to bottom,var(--gray-100) 1px,transparent 1px);background-position:-1px -1px;background-size:24px 24px;box-shadow:inset 0 1px 3px -1px #acbed2;flex:1}body.ltr .fld-container .fld-workspace{border-radius:calc(var(--small-border-radius) - 1px) 0 0 calc(var(--small-border-radius-1px))}body.rtl .fld-container .fld-workspace{border-radius:0 calc(var(--small-border-radius) - 1px) calc(var(--small-border-radius-1px)) 0}body.ltr .fld-container .fld-workspace{padding:24px 0 24px 24px}body.rtl .fld-container .fld-workspace{padding:24px 24px 24px 0}.fld-container .fld-workspace .fld-tabs{align-items:flex-start;display:flex;flex-wrap:wrap}body.ltr .fld-container:not(:has(.fld-library)){padding-right:0}body.rtl .fld-container:not(:has(.fld-library)){padding-left:0}body.ltr .fld-container:not(:has(.fld-library)) .fld-workspace{padding-right:24px}body.rtl .fld-container:not(:has(.fld-library)) .fld-workspace{padding-left:24px}.fld-container .fld-library{height:100%;padding:14px;position:absolute;top:0;width:265px}body.ltr .fld-container .fld-library{right:0}body.rtl .fld-container .fld-library{left:0}.fld-new-tab-btn:active{background-color:var(--gray-050)}.fld-library-menu{padding:14px;width:264px}body.ltr .fld-library-menu{margin-left:-14px}body.rtl .fld-library-menu{margin-right:-14px}.fld-library{display:flex;flex-direction:column}.fld-library .btngroup{margin-bottom:14px}.fld-library .fld-field-library{flex:1;margin:-3px;min-height:0;overflow:auto;padding:3px}.fld-library .fld-field-library .fld-field-group{margin-top:14px}.fld-library .fld-field-library .fld-field-group>:not(:first-child),.fld-library .fld-ui-library>:not(:first-child){margin-top:var(--s)}.fld-library .filtered{display:none}.fld-new-tab-btn,.fld-new-tab-btn:hover,.fld-tab .fld-tabcontent,.fld-tab .tabs .tab,.layoutdesigner .fld-library{background-color:var(--white);box-shadow:0 0 0 1px rgba(31,41,51,.1),0 2px 5px -2px rgba(31,41,51,.2)}.fld-element .settings:before,.fld-tab .settings:before{font-size:16px;margin-top:-2px;opacity:.5}.fld-element .settings.active:before,.fld-element .settings:hover:before,.fld-tab .settings.active:before,.fld-tab .settings:hover:before{opacity:1}.fld-tab{box-sizing:border-box;width:288px}body.ltr .fld-tab{padding:0 25px 24px 0}body.rtl .fld-tab{padding:0 0 24px 25px}.fld-tab .tabs{display:flex;margin:-10px -12px 0;overflow:hidden;padding:10px 12px 0}.fld-tab .tabs .tab{align-items:center;border-radius:var(--medium-border-radius) var(--medium-border-radius) 0 0;box-sizing:border-box;display:flex;gap:var(--xs);max-width:calc(100% - 10px);padding:8px 14px}body:not(.dragging) .fld-tab .tabs .tab.draggable{cursor:move;cursor:grab}.fld-tab .tabs .tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fld-tab .fld-tabcontent{padding:14px}body.ltr .fld-tab .fld-tabcontent{border-radius:0 var(--medium-border-radius) var(--medium-border-radius) var(--medium-border-radius)}body.rtl .fld-tab .fld-tabcontent{border-radius:var(--medium-border-radius) 0 var(--medium-border-radius) var(--medium-border-radius)}.fld-tab .fld-tabcontent>.fld-add-btn:not(:first-child),.fld-tab .fld-tabcontent>.fld-element:not(:first-child){margin-top:var(--s)}.fld-tab .fld-tabcontent .fld-add-btn:not([aria-expanded=true]){display:none}.fld-tab.fld-insertion .fld-tabcontent,.fld-tab.fld-insertion .tabs .tab{background-color:var(--gray-050);background-image:linear-gradient(to right,var(--gray-100) 1px,transparent 0),linear-gradient(to bottom,var(--gray-100) 1px,transparent 1px);background-size:24px 24px;border:2px dashed var(--hairline-color);box-shadow:none;margin:-2px}.fld-tab.fld-insertion .tabs .tab{background-position:-1px -1px}.fld-tab.fld-insertion .fld-tabcontent{background-position:-1px -13px}.fld-tab-caboose{min-height:24px}.fld-element{align-items:center;background-color:var(--white);border-radius:var(--medium-border-radius);box-shadow:inset 0 0 0 1px var(--hairline-color);display:flex;gap:var(--s);padding:var(--s);position:relative}body:not(.dragging) .fld-element{cursor:move;cursor:grab}.fld-element.fld-insertion{background:none;border:2px dashed var(--hairline-color);border-radius:var(--medium-border-radius);box-shadow:none;box-sizing:border-box}.fld-element.draghelper{box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.fld-element.fld-field{background-color:var(--gray-100);color:var(--medium-text-color)}.fld-element.fld-field:not(.draghelper){box-shadow:none}.fld-element.fld-field .field-name{display:flex;flex-direction:column;gap:var(--xs)}.fld-element .fld-element-icon{text-align:center}.fld-element .fld-element-icon,.fld-element .fld-element-icon svg{height:16px;width:16px}.fld-element .fld-element-icon svg circle,.fld-element .fld-element-icon svg ellipse,.fld-element .fld-element-icon svg line,.fld-element .fld-element-icon svg path,.fld-element .fld-element-icon svg polygon,.fld-element .fld-element-icon svg polyline,.fld-element .fld-element-icon svg rect,.fld-element .fld-element-icon svg text{fill:var(--ui-control-color);stroke-width:0}.fld-element .field-name{flex:1;overflow:hidden}.fld-element .field-name .fld-attribute,.fld-element .field-name .fld-element-label{align-items:center;display:flex;flex:1;gap:var(--xs)}.fld-element .field-name .fld-attribute .smalltext,.fld-element .field-name .fld-element-label h4{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fld-element .field-name .fld-element-label h4{color:var(--text-color);font-weight:400;margin:0}.fld-br,.fld-hr{display:flex;flex:1;justify-content:center;position:relative}.fld-br:before,.fld-hr:before{border-radius:2px;content:"";display:block;font-size:0;height:4px;left:0;position:absolute;top:calc(50% - 2px);width:100%}.fld-br .smalltext,.fld-hr .smalltext{align-items:center;background-color:var(--gray-100);border-radius:var(--large-border-radius);display:flex;height:var(--touch-target-size);justify-content:center;padding:0 var(--s);position:relative}.fld-hr:before{background-color:var(--gray-100)}.fld-br:before{background-image:repeating-linear-gradient(to right,var(--gray-100),var(--gray-100) 5.2631578947%,transparent 5.2631578947%,transparent 10.5263157895%,var(--gray-100) 10.5263157895%)}.fld-element-settings-body{flex:1;margin:-24px var(--neg-padding) 0;overflow:hidden auto;padding:24px var(--padding);position:relative}.fld-element-settings-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-direction:row;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);position:relative;z-index:3}.fld-element-settings-footer:focus{box-shadow:var(--focus-ring)}.fld-element-settings-footer>.ee-site-select{flex:1}body.ltr .fld-element-settings-footer>.btn{margin-left:5px}body.rtl .fld-element-settings-footer>.btn{margin-right:5px}body.ltr .fld-element-settings-footer>.spinner{margin:0 var(--neg-padding) 0 0}body.rtl .fld-element-settings-footer>.spinner{margin:0 0 0 var(--neg-padding)}@container (width < 577px){body.ltr .fld-container{padding-right:0}body.rtl .fld-container{padding-left:0}body.ltr .fld-container .fld-workspace{padding-right:24px}body.rtl .fld-container .fld-workspace{padding-left:24px}.fld-container>.fld-library{display:none}.fld-tab .fld-tabcontent .fld-add-btn{display:inline-flex!important}}html.noscroll,html.noscroll body{height:100%;overflow:hidden}.modal.imageeditor{background-color:var(--gray-900);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.modal.imageeditor.modal{border-radius:0}.modal.imageeditor.modal .body:after{display:none}.modal.imageeditor .btn:not(.submit):not(.noborder){background-color:var(--gray-600);color:var(--white)}.modal.imageeditor .btn:not(.submit):not(.noborder):hover{background-color:var(--gray-700)}.modal.imageeditor .btn:not(.submit):not(.noborder).active{background-color:var(--gray-800)}.modal.imageeditor .icon:before{content:"";display:inline-block;height:24px;margin-left:-3px;width:24px}.modal.imageeditor .icon.rotate-left:before{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .icon.rotate-right:before{background-image:url(../images/image-editor/rotate-right.svg)}.modal.imageeditor .icon.flip-vertical:before{background-image:url(../images/image-editor/flip-vertical.svg)}.modal.imageeditor .icon.flip-horizontal:before{background-image:url(../images/image-editor/flip-horizontal.svg)}.modal.imageeditor .icon.constraint:before{background-image:url(../images/image-editor/unconstrained.svg)}.modal.imageeditor .icon.focal-point:before{background-image:url(../images/image-editor/focal-point.svg)}.modal.imageeditor .body{display:flex;padding:0}.modal.imageeditor input{color:var(--text-color)}.modal.imageeditor .body .tabs{border-right:1px solid var(--gray-1000)}.modal.imageeditor .body .tabs ul{align-items:stretch;flex-direction:column;width:100px}.modal.imageeditor .body .tabs ul li{border-bottom:1px solid var(--gray-1000);cursor:pointer;padding:14px;position:relative;text-align:center}.modal.imageeditor .body .tabs ul li:before{background-color:currentColor;content:"";height:100%;position:absolute;top:0;width:0}body.ltr .modal.imageeditor .body .tabs ul li:before{left:0}body.rtl .modal.imageeditor .body .tabs ul li:before{right:0}.modal.imageeditor .body .tabs ul li.selected{background-color:#151c23}.modal.imageeditor .body .tabs ul li.selected:before{width:2px}.modal.imageeditor .body .tabs ul li i{background-position:top;background-repeat:no-repeat;display:block;height:24px}.modal.imageeditor .body .tabs ul li[data-view=rotate] i{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .body .tabs ul li[data-view=crop] i{background-image:url(../images/image-editor/crop.svg)}.modal.imageeditor .body .tabs ul li[data-view=filters] i{background-image:url(../images/image-editor/filters.svg)}.modal.imageeditor .body .tabs ul li:hover{background-color:#1b242c;cursor:pointer}.modal.imageeditor .body .views{overflow:auto;padding:24px}.modal.imageeditor .body .views .btngroup{margin-bottom:24px}.modal.imageeditor .body .views .filters ul{width:100px}.modal.imageeditor .body .views .filters ul li{margin-bottom:14px;margin-right:14px;text-align:center}.modal.imageeditor .body .views .filters ul li:last-child{margin-right:0}.modal.imageeditor .body .views .filters ul li img{border:3px solid transparent;border-radius:4px}.modal.imageeditor .body .views .filters ul li span{display:block}.modal.imageeditor .body .views .filters ul li:hover{cursor:pointer}.modal.imageeditor .body .views .filters ul li.selected img{border-color:var(--white)}.modal.imageeditor .body .image-container{display:flex;flex-direction:column;flex-grow:1;overflow:hidden;position:relative}.modal.imageeditor .body .image-container .image{flex-grow:1;margin:14px;position:relative;text-align:center}.modal.imageeditor .body .image-container .image canvas{left:0;position:absolute;top:0}.modal.imageeditor .body .image-container .image-tools{text-align:center}.modal.imageeditor .body .image-container .image-tools .straightening{display:block;margin:0 auto;max-width:400px;min-height:3.75rem;overflow:hidden}.modal.imageeditor .footer{background-color:transparent;border-top:1px solid #000;bottom:0;left:0;position:absolute;width:100%}body.has-debug-toolbar .modal.imageeditor .footer{padding-bottom:50px}.modal.imageeditor .body .views .crop fieldset .heading{display:none}.modal.imageeditor .body .views .crop .custom-constraint-spacer{padding:0 var(--xs)}.modal.imageeditor .body .views .crop .constraint-group{display:grid;grid-gap:var(--xs)}body.ltr .modal.imageeditor .body .views .crop .custom{padding-left:calc(1rem + 5px)}body.rtl .modal.imageeditor .body .views .crop .custom{padding-right:calc(1rem + 5px)}.modal.imageeditor .body .views .crop .orientation{align-items:center;display:flex;justify-content:center}.modal.imageeditor .body .views .crop .orientation input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;cursor:pointer;margin:0 4px}.modal.imageeditor .body .views .crop .orientation input[value=landscape]{background-image:url(../images/image-editor/orientation-landscape-unchecked.svg);height:20px;width:30px}.modal.imageeditor .body .views .crop .orientation input[value=landscape]:checked{background-image:url(../images/image-editor/orientation-landscape-checked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]{background-image:url(../images/image-editor/orientation-portrait-unchecked.svg);height:30px;width:20px}.modal.imageeditor .body .views .crop .orientation input[value=portrait]:checked{background-image:url(../images/image-editor/orientation-portrait-checked.svg)}.modal.imageeditor.vertical .body .views .crop>.btngroup:first-child{justify-content:center}.modal.imageeditor:not(.vertical) .body .views .crop .constraint.custom{margin-top:var(--xs)}.vertical.imageeditor .body{flex-direction:column}.vertical.imageeditor .body .image-container{flex-basis:30vh;flex-shrink:0}.vertical.imageeditor .body .constraint-group{grid-template-columns:1fr 1fr}.vertical.imageeditor .body .tabs ul{border-bottom:1px solid #000;border-top:1px solid #000;display:flex;flex-direction:row;width:100%}.vertical.imageeditor .body .tabs ul li{border:0;border-right:1px solid #000;flex-grow:1;padding:10px 7px}.vertical.imageeditor .body .tabs ul li:before{height:0;top:unset;top:0;width:100%}.vertical.imageeditor .body .tabs ul li.selected:before{height:2px;width:100%}.vertical.imageeditor .body .views{width:auto}.vertical.imageeditor .body .views .rotate{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:-14px}.vertical.imageeditor .body .views .rotate .btngroup{margin:0 7px 14px}.vertical.imageeditor .body .views .filters ul{height:109px;margin:0 -24px -24px;overflow:auto;padding:24px;text-align:center;white-space:nowrap;width:auto}.vertical.imageeditor .body .views .filters ul li{display:inline-block;margin-bottom:0}.slide-rule{padding:10px 0;position:relative}.slide-rule:focus{box-shadow:none}body.reduce-focus-visibility .slide-rule:focus-visible .cursor:after,body:not(.reduce-focus-visibility) .slide-rule:focus .cursor:after{box-shadow:var(--focus-ring)}.slide-rule .cursor:after{content:"";height:3.125rem;left:50%;position:absolute;top:-15px;transform:translateX(-50%);width:1.25rem}.slide-rule .cursor{border-left:.3125rem solid transparent;border-right:.3125rem solid transparent;border-top:.3125rem solid #63a6e1;height:0;left:50%;margin-left:-.25rem;margin-top:4px;position:absolute;width:0;z-index:1}.slide-rule .graduations{height:40px;position:relative;white-space:nowrap}.slide-rule .graduations ul{float:left;position:relative}.slide-rule .graduations ul li{display:inline-block;font-size:8px;position:relative;width:10px}.slide-rule .graduations ul li:not(.main-graduation){left:1px}.slide-rule .graduations ul li.main-graduation:before{border-left-width:3px}.slide-rule .graduations ul li.main-graduation .label{cursor:default;display:block}.slide-rule .graduations ul li.selected:before{border-left-color:#63a6e1}.slide-rule .graduations ul li:before{border-left:1px solid var(--white);content:"";height:10px;left:0;position:absolute;top:0}.slide-rule .graduations ul li .label{display:none;left:-9px;position:absolute;text-align:center;top:10px;width:20px}.slide-rule .value{background:var(--gray-600);bottom:0;box-sizing:border-box;display:none;left:50%;margin-left:-25px;padding:5px;position:absolute;width:50px;z-index:1}.slide-rule .overlay{background-image:linear-gradient(to right,var(--gray-900) 0,rgba(31,41,51,0) 15%,rgba(31,41,51,0) 85%,var(--gray-900) 100%);bottom:1px;left:0;position:absolute;right:0;top:0;z-index:2}.menu.dark{background-color:var(--gray-600);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.menu.dark ul li a{color:var(--white)!important}.menu.dark ul li a:not(.sel):not(.disabled):hover{background-color:var(--gray-700)}.elements .tableview td.checkbox-cell div.checkbox,.elements .tableview td.checkbox-cell input.checkbox+label,_:-ms-lang(x){top:16px}_:-ms-lang(x),div:empty.checkbox,input.checkbox+label:empty{display:block}.yii-debug-toolbar__title a{display:block!important}.cp-chart{height:100%;margin:0;position:relative}.cp-chart svg{height:100%;width:100%}.cp-chart .axis line,.cp-chart .axis path{fill:none;stroke:var(--hairline-color);shape-rendering:crispEdges}.cp-chart .ticks-axis line,.cp-chart .ticks-axis path{fill:none;stroke:none;shape-rendering:crispEdges}.cp-chart .ticks-axis g.tick text{fill:var(--black);font-size:11px}.cp-chart .axis text{fill:rgba(0,0,0,.6)}.cp-chart .grid-line .tick,.cp-chart .grid-line .tick line{stroke:rgba(0,0,0,.08);stroke-opacity:.7;shape-rendering:crispEdges}.cp-chart .grid-line path{stroke-width:0}.tooltip{background:hsla(0,0%,100%,.9);border-radius:3px;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);padding:7px 10px;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000000}
+:root{--white:#fff;--black:#000;--gray-050-hsl:212,60%,97%;--gray-100-hsl:212,50%,93%;--gray-150-hsl:212,40%,89%;--gray-200-hsl:212,30%,85%;--gray-300-hsl:211,13%,65%;--gray-350-hsl:211,11%,59%;--gray-400-hsl:210,10%,53%;--gray-500-hsl:211,12%,43%;--gray-550-hsl:210,13%,40%;--gray-600-hsl:209,14%,37%;--gray-700-hsl:209,18%,30%;--gray-800-hsl:209,20%,25%;--gray-900-hsl:210,24%,16%;--gray-1000-hsl:210,24%,10%;--gray-050:hsl(var(--gray-050-hsl));--gray-100:hsl(var(--gray-100-hsl));--gray-150:hsl(var(--gray-150-hsl));--gray-200:hsl(var(--gray-200-hsl));--gray-300:hsl(var(--gray-300-hsl));--gray-350:hsl(var(--gray-350-hsl));--gray-400:hsl(var(--gray-400-hsl));--gray-500:hsl(var(--gray-500-hsl));--gray-550:hsl(var(--gray-550-hsl));--gray-600:hsl(var(--gray-600-hsl));--gray-700:hsl(var(--gray-700-hsl));--gray-800:hsl(var(--gray-800-hsl));--gray-900:hsl(var(--gray-900-hsl));--gray-1000:hsl(var(--gray-1000-hsl));--red-050:#fef2f2;--red-100:#fee2e2;--red-200:#fecaca;--red-300:#fca5a5;--red-400:#f87171;--red-500:#ef4444;--red-600:#dc2626;--red-700:#b91c1c;--red-800:#991b1b;--red-900:#7f1d1d;--red-950:#450a0a;--orange-050:#fff7ed;--orange-100:#ffedd5;--orange-200:#fed7aa;--orange-300:#fdba74;--orange-400:#fb923c;--orange-500:#f97316;--orange-600:#ea580c;--orange-700:#c2410c;--orange-800:#9a3412;--orange-900:#7c2d12;--orange-950:#431407;--amber-050:#fffbeb;--amber-100:#fef3c7;--amber-200:#fde68a;--amber-300:#fcd34d;--amber-400:#fbbf24;--amber-500:#f59e0b;--amber-600:#d97706;--amber-700:#b45309;--amber-800:#92400e;--amber-900:#78350f;--amber-950:#451a03;--yellow-050:#fefce8;--yellow-100:#fef9c3;--yellow-200:#fef08a;--yellow-300:#fde047;--yellow-400:#facc15;--yellow-500:#eab308;--yellow-600:#ca8a04;--yellow-700:#a16207;--yellow-750:#93580b;--yellow-800:#854d0e;--yellow-900:#713f12;--yellow-950:#422006;--lime-050:#f7fee7;--lime-100:#ecfccb;--lime-200:#d9f99d;--lime-300:#bef264;--lime-400:#a3e635;--lime-500:#84cc16;--lime-600:#65a30d;--lime-700:#4d7c0f;--lime-800:#3f6212;--lime-900:#365314;--lime-950:#1a2e05;--green-050:#f0fdf4;--green-100:#dcfce7;--green-200:#bbf7d0;--green-300:#86efac;--green-400:#4ade80;--green-500:#22c55e;--green-600:#16a34a;--green-700:#15803d;--green-800:#166534;--green-900:#14532d;--green-950:#052e16;--emerald-050:#ecfdf5;--emerald-100:#d1fae5;--emerald-200:#a7f3d0;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--emerald-700:#047857;--emerald-800:#065f46;--emerald-900:#064e3b;--emerald-950:#022c22;--teal-050:#f0fdfa;--teal-100:#ccfbf1;--teal-200:#99f6e4;--teal-300:#5eead4;--teal-400:#2dd4bf;--teal-500:#14b8a6;--teal-550:#11a697;--teal-600:#0d9488;--teal-700:#0f766e;--teal-800:#115e59;--teal-900:#134e4a;--teal-950:#042f2e;--cyan-050:#ecfeff;--cyan-100:#cffafe;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--cyan-800:#155e75;--cyan-900:#164e63;--cyan-950:#083344;--sky-050:#f0f9ff;--sky-100:#e0f2fe;--sky-200:#bae6fd;--sky-300:#7dd3fc;--sky-400:#38bdf8;--sky-500:#0ea5e9;--sky-600:#0284c7;--sky-700:#0369a1;--sky-800:#075985;--sky-900:#0c4a6e;--sky-950:#082f49;--blue-050:#eff6ff;--blue-100:#dbeafe;--blue-200:#bfdbfe;--blue-300:#93c5fd;--blue-400:#60a5fa;--blue-500:#3b82f6;--blue-600:#2563eb;--blue-700:#1d4ed8;--blue-800:#1e40af;--blue-900:#1e3a8a;--blue-950:#172554;--indigo-050:#eef2ff;--indigo-100:#e0e7ff;--indigo-200:#c7d2fe;--indigo-300:#a5b4fc;--indigo-400:#818cf8;--indigo-500:#6366f1;--indigo-600:#4f46e5;--indigo-700:#4338ca;--indigo-800:#3730a3;--indigo-900:#312e81;--indigo-950:#1e1b4b;--violet-050:#f5f3ff;--violet-100:#ede9fe;--violet-200:#ddd6fe;--violet-300:#c4b5fd;--violet-400:#a78bfa;--violet-500:#8b5cf6;--violet-600:#7c3aed;--violet-700:#6d28d9;--violet-800:#5b21b6;--violet-900:#4c1d95;--violet-950:#2e1065;--purple-050:#faf5ff;--purple-100:#f3e8ff;--purple-200:#e9d5ff;--purple-300:#d8b4fe;--purple-400:#c084fc;--purple-500:#a855f7;--purple-600:#9333ea;--purple-700:#7e22ce;--purple-800:#6b21a8;--purple-900:#581c87;--purple-950:#3b0764;--fuchsia-050:#fdf4ff;--fuchsia-100:#fae8ff;--fuchsia-200:#f5d0fe;--fuchsia-300:#f0abfc;--fuchsia-400:#e879f9;--fuchsia-500:#d946ef;--fuchsia-600:#c026d3;--fuchsia-700:#a21caf;--fuchsia-800:#86198f;--fuchsia-900:#701a75;--fuchsia-950:#4a044e;--pink-050:#fdf2f8;--pink-100:#fce7f3;--pink-200:#fbcfe8;--pink-300:#f9a8d4;--pink-400:#f472b6;--pink-500:#ec4899;--pink-600:#db2777;--pink-700:#be185d;--pink-800:#9d174d;--pink-900:#831843;--pink-950:#500724;--rose-050:#fff1f2;--rose-100:#ffe4e6;--rose-200:#fecdd3;--rose-300:#fda4af;--rose-400:#fb7185;--rose-500:#f43f5e;--rose-600:#e11d48;--rose-700:#be123c;--rose-800:#9f1239;--rose-900:#881337;--rose-950:#4c0519;--bg-color:$grey100;--bg-color-hsl:212deg,50%,93%;--primary-color:var(--red-600);--secondary-color:var(--gray-500);--input-color:#607d9f;--text-color:var(--gray-700);--medium-dark-text-color:var(--gray-550);--medium-text-color:var(--gray-550);--light-text-color:var(--gray-500);--link-color:#1f5fea;--font-weight-bold:700;--hairline-color:rgba(51,64,77,.1);--medium-hairline-color:#cfd8e3;--dark-hairline-color:rgba(123,135,147,.5);--light-focus-color:var(--blue-300);--medium-focus-color:var(--blue-500);--dark-focus-color:#0f74b1;--light-focus-ring:0 0 0 1px #5ed0fa,0 0 0 3px rgba(94,208,250,.7);--medium-focus-ring:0 0 0 1px #2bb0ed,0 0 0 3px rgba(43,176,237,.7);--dark-focus-ring:0 0 0 1px #0f74b1,0 0 0 3px rgba(15,116,177,.7);--light-sel-color:var(--gray-200);--dark-sel-color:var(--gray-500);--error-color-rgb:216,31,35;--error-color:rgba(var(--error-color-rgb),1);--warning-color:var(--amber-700);--success-color:var(--teal-700);--notice-color:var(--sky-700);--enabled-color:var(--teal-550);--pending-color:var(--orange-400);--disabled-color:var(--red-600);--indicator-border-color:var(--amber-600);--indicator-icon-color:var(--amber-700);--small-border-radius:3px;--medium-border-radius:4px;--large-border-radius:5px;--menu-border-radius:var(--medium-border-radius);--checkbox-size:1rem;--radio-size:1rem;--ui-control-color:var(--gray-550);--ui-control-hover-color:var(--gray-600);--ui-control-active-color:var(--gray-700);--ui-control-static-bg-color:rgba(96,125,159,.25);--ui-control-bg-color:var(--ui-control-static-bg-color);--ui-control-hover-bg-color:rgba(96,125,159,.3);--ui-control-active-bg-color:rgba(96,125,159,.5);--ui-control-border-radius:var(--large-border-radius);--ui-control-height:2.125rem;--ui-control-height--small:1.875rem;--light-focus-hsl:211.6981132075deg,96.3636363636%,78.431372549%;--medium-focus-hsl:217.2192513369deg,91.2195121951%,59.8039215686%;--dark-focus-hsl:202.5925925926deg,84.375%,37.6470588235%;--focus-ring:0 0 0 1px hsl(var(--dark-focus-hsl)),0 0 0 3px hsla(var(--dark-focus-hsl),0.8);--inner-focus-ring:inset 0 0 0 1px hsl(var(--dark-focus-hsl)),inset 0 0 0 3px hsla(var(--dark-focus-hsl),0.7);--touch-target-size:1.5rem;--thumb-size:1.25rem;--icon-size:1rem;--elements-busy-top-position:calc(50% - var(--size, 20px)/2);--lh:1.42em}@font-face{font-display:block;font-family:Craft;font-style:normal;font-weight:400;src:url(../fonts/Craft.woff2) format("woff2"),url(../fonts/Craft.woff) format("woff"),url(../fonts/Craft.ttf) format("truetype"),url(../fonts/Craft.svg#Craft) format("svg")}body,html{background-color:var(--gray-100);box-shadow:var(--light-focus-ring)}body{color:var(--text-color);font-size:.875rem;line-height:var(--lh);overflow-x:hidden;width:100vw;-webkit-font-smoothing:subpixel-antialiased}body.rtl{direction:rtl}body,input,select,textarea{font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.buttons:first-child,.condition-container:first-child,.field:first-child,.first,.grid:first-child,.pane:first-child,.toolbar:first-child,blockquote:first-child,fieldset:first-child,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,hr:first-child,p:first-child{margin-top:0!important}.buttons:last-child,.condition-container:last-child,.field:last-child,.grid:last-child,.last,.meta:last-child,.pane:last-child,.toolbar:last-child,blockquote:last-child,fieldset:last-child,h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0!important}.mt-0{margin-top:0!important}.mt-xs{margin-top:var(--xs)!important}.mt-s{margin-top:var(--s)!important}.mt-m{margin-top:var(--m)!important}.mt-l{margin-top:var(--l)!important}.mt-xl{margin-top:var(--xl)!important}.mb-0{margin-bottom:0!important}.mb-xs{margin-bottom:var(--xs)!important}.mb-s{margin-bottom:var(--s)!important}.mb-m{margin-bottom:var(--m)!important}.mb-l{margin-bottom:var(--l)!important}.mb-xl{margin-bottom:var(--xl)!important}.ml-0{margin-left:0!important}.ml-xs{margin-left:var(--xs)!important}.ml-s{margin-left:var(--s)!important}.ml-m{margin-left:var(--m)!important}.ml-l{margin-left:var(--l)!important}.ml-xl{margin-left:var(--xl)!important}.mr-0{margin-right:0!important}.mr-xs{margin-right:var(--xs)!important}.mr-s{margin-right:var(--s)!important}.mr-m{margin-right:var(--m)!important}.mr-l{margin-right:var(--l)!important}.mr-xl{margin-right:var(--xl)!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-xs{margin-left:var(--xs)!important;margin-right:var(--xs)!important}.mx-s{margin-left:var(--s)!important;margin-right:var(--s)!important}.mx-m{margin-left:var(--m)!important;margin-right:var(--m)!important}.mx-l{margin-left:var(--l)!important;margin-right:var(--l)!important}.mx-xl{margin-left:var(--xl)!important;margin-right:var(--xl)!important}.my-0{margin-bottom:0!important;margin-top:0!important}.my-xs{margin-bottom:var(--xs)!important;margin-top:var(--xs)!important}.my-s{margin-bottom:var(--s)!important;margin-top:var(--s)!important}.my-m{margin-bottom:var(--m)!important;margin-top:var(--m)!important}.my-l{margin-bottom:var(--l)!important;margin-top:var(--l)!important}.my-xl{margin-bottom:var(--xl)!important;margin-top:var(--xl)!important}.pointer{cursor:pointer!important}.no-scroll{overflow:hidden!important}.draghelper{box-sizing:border-box;list-style-type:none}.offset-drag-helper{transition:margin .2s linear,padding .2s linear}body.dragging.ltr .offset-drag-helper{margin:-50px 0 0 -50px;padding:60px 0 0 60px}body.dragging.rtl .offset-drag-helper{margin:-50px -50px 0 0;padding:60px 60px 0 0}img{max-width:100%}body.rtl .ltr .text,body.rtl .ltr table.editable textarea{direction:ltr!important;text-align:left!important}body.ltr .rtl .text,body.ltr .rtl table.editable textarea{direction:rtl!important;text-align:right!important}#help:before,.action-btn:before,.go:after,.icon:before,.insecure:before,.menu .flex.padded.sel:before,.menu ul.padded li .menu-item.sel:before,.menu ul.padded li .menu-option.sel:before,.menu ul.padded li a.sel:before,.preview-btn:before,.required:after,.secure:before,.texticon:before,.view-btn:before,[data-icon-after]:after,[data-icon]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.badge-icon{align-items:center;border:1px solid var(--indicator-border-color);border-radius:var(--small-border-radius);box-sizing:border-box;color:var(--indicator-icon-color);display:inline-flex;font-size:9px;height:1rem;justify-content:center;position:relative;top:-1px;width:1rem}.insecure:before,.secure:before{font-size:14px;margin-top:-3px}[data-icon]:before{content:attr(data-icon)}[data-icon-after]:after{content:attr(data-icon-after)}[data-icon-size=large][data-icon-after]:after,[data-icon-size=large][data-icon]:before{font-size:20px}[data-icon-size=small][data-icon-after]:after,[data-icon-size=small][data-icon]:before{font-size:14px}[data-icon-size=puny][data-icon-after]:after,[data-icon-size=puny][data-icon]:before{font-size:12px}body.rtl [data-icon-after=list]:after,body.rtl [data-icon=list]:before{content:"listrtl"}body.rtl [data-icon-after=structure]:after,body.rtl [data-icon=structure]:before{content:"structurertl"}.icon.secure:before{content:"secure"}.icon.insecure:before{content:"insecure"}.icon.add:before{content:"plus"}.icon.edit:before{content:"edit"}.icon.settings:before{content:"settings"}.icon.search:before{content:"search"}.icon.expand:before{content:"expand"}.icon.collapse:before{content:"collapse"}.help:before{color:var(--pink-400);content:"help"}body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-right:var(--xs)}body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-left:var(--xs)}.preview-btn:before{content:"view";margin-top:-2px}body.ltr .view-btn:before{content:"share"}body.rtl .view-btn:before{content:"shareleft"}.action-btn:before{content:"ellipsis"}.h1,h1{font-size:18px;font-weight:700;line-height:1.2;margin-bottom:24px}.h2,h2{font-size:16px}.h2,.h3,.h4,h2,h3,h4{font-weight:700;line-height:1.2;margin:14px 0}.h4,h4{color:var(--medium-text-color)}.h5,h5{color:var(--medium-text-color)}.h5,.h6,h5,h6{line-height:1.2;margin:14px 0 3px}.h6,h6{color:#606d7b;font-size:11px;text-transform:uppercase}body.ltr h1[data-icon]:before{margin:-8px 10px 0 0}body.rtl h1[data-icon]:before{margin:-8px 0 0 10px}h2[data-icon]:before{font-size:19px}body.ltr h2[data-icon]:before{margin:-4px 6px 0 0}body.rtl h2[data-icon]:before{margin:-4px 0 0 6px}hr{border:none;border-top:1px solid var(--hairline-color);color:transparent;height:0;margin:24px 0}.pane hr{margin:24px -24px}p{margin:1em 0}h5+p{margin-top:0}sup{vertical-align:super}sub,sup{font-size:smaller}sub{vertical-align:sub}body.ltr .indent{margin-left:14px}body.rtl .indent{margin-right:14px}.bullets{list-style-type:square}body.ltr .bullets{padding-left:40px}body.rtl .bullets{padding-right:40px}ol{list-style-type:decimal}body.ltr ol{padding-left:40px}body.rtl ol{padding-right:40px}.code,code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important}.code.smalltext,code.smalltext{font-size:.8em!important}.code input,.code textarea{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important;font-size:1em!important}pre code{display:block;overflow-x:auto}a{color:var(--link-color);cursor:pointer}a[aria-current]{cursor:default}a:hover,body.underline-links a{text-decoration:underline}a .cp-icon svg circle,a .cp-icon svg ellipse,a .cp-icon svg line,a .cp-icon svg path,a .cp-icon svg polygon,a .cp-icon svg polyline,a .cp-icon svg rect,a .cp-icon svg text{fill:var(--icon-color,var(--link-color));stroke-width:0}a:not([href]){color:inherit;cursor:inherit}a.sel,a:not([href]):hover,body.underline-links a:not([href]),li.sel>a{text-decoration:none}a.sel,li.sel>a{cursor:default!important}.go:after{color:var(--link-color);font-size:11px;margin-top:-1px;opacity:.9}body.ltr .go:after{padding-left:4px}body.rtl .go:after{padding-right:4px}body.ltr .go:after{content:"circlerarr"}body.rtl .go:after{content:"circlelarr"}button{cursor:pointer}.alert-icon,.checkmark-icon{border-radius:20px;cursor:pointer;line-height:10px;margin-bottom:0!important;padding:5px}.alert-icon:before,.checkmark-icon:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkmark-icon{background-color:var(--gray-200)}p .checkmark-icon{display:inline-block}.checkmark-icon:before{color:var(--success-color);content:"check"}.alert-icon{background-color:var(--gray-200)}.alert-icon:before{color:var(--error-color);content:"alert"}.revision-status-hud{max-width:400px}.revision-status-hud .http-error{background-color:var(--gray-050);border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);color:var(--light-text-color);padding:7px 14px}.draft-notice{align-content:stretch;align-items:center;color:var(--blue-800);display:flex;gap:var(--s);justify-content:center}#content-notice .draft-notice{display:inline-flex;justify-content:flex-start}body.ltr .so-notice>.draft-notice{margin:-5px 0 -5px calc(var(--xl)*-1)}body.rtl .so-notice>.draft-notice{margin:-5px calc(var(--xl)*-1) -5px 0}body.ltr .so-notice>.draft-notice{padding:5px 0 5px var(--xl)}body.rtl .so-notice>.draft-notice{padding:5px var(--xl) 5px 0}body.ltr .so-notice>.draft-notice{border-bottom-left-radius:var(--large-border-radius)}body.rtl .so-notice>.draft-notice{border-bottom-right-radius:var(--large-border-radius)}body.ltr .so-notice>.draft-notice{background-image:linear-gradient(to bottom right,rgba(37,99,235,.2),rgba(37,99,235,0) 50%)}body.rtl .so-notice>.draft-notice{background-image:linear-gradient(270deg,rgba(37,99,235,.2),rgba(37,99,235,0))}.draft-notice p{flex:1;margin:0}.draft-notice .draft-icon{align-items:center;border:2px solid rgba(30,64,175,.2);border-radius:100%;box-shadow:0 1px 1px 1px var(--white);box-sizing:border-box;display:flex;flex-shrink:0;height:34px;justify-content:center;position:relative;width:34px}.draft-notice .draft-icon:before{color:var(--blue-800)!important;font-size:18px;left:1px;position:relative}.draft-notice .draft-icon:after{border-radius:100%;bottom:-2px;box-shadow:inset 0 2px 0 rgba(30,58,138,.2);content:"";font-size:0;left:-2px;position:absolute;right:-2px;top:-2px}.draft-notice .discard-changes-btn{background-color:transparent!important;border:2px solid var(--blue-600);color:var(--blue-800)!important}body.ltr .draft-notice .discard-changes-btn{margin-left:var(--xs)}body.rtl .draft-notice .discard-changes-btn{margin-right:var(--xs)}.draft-notice .discard-changes-btn:focus,.draft-notice .discard-changes-btn:hover{border-color:#1555e2}.draft-notice .discard-changes-btn:active{border-color:#134cca}.revision-notice{align-content:stretch;align-items:center;color:var(--gray-600);display:flex;gap:var(--s);justify-content:center}#content-notice .revision-notice{display:inline-flex;justify-content:flex-start}.revision-notice p{flex:1;margin:0}.revision-notice .revision-icon{align-items:center;border:2px solid rgba(51,64,77,.2);border-radius:100%;box-shadow:0 1px 1px 1px var(--white);box-sizing:border-box;display:flex;flex-shrink:0;height:34px;justify-content:center;position:relative;width:34px}.revision-notice .revision-icon:before{color:var(--grey-800)!important;font-size:18px;left:1px;position:relative}.revision-notice .revision-icon:after{border-radius:100%;bottom:-2px;box-shadow:inset 0 2px 0 rgba(30,58,138,.2);content:"";font-size:0;left:-2px;position:absolute;right:-2px;top:-2px}button.toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;color:inherit;padding:0}.toggle:before,a.fieldtoggle:before{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transition:transform .1s linear;width:.4375rem}body.ltr .toggle:before,body.ltr a.fieldtoggle:before{transform:rotate(-45deg)}body.rtl .toggle:before,body.rtl a.fieldtoggle:before{transform:rotate(135deg)}.sidebar nav li.expanded>.toggle:before,.structure li:not(.collapsed)>.row>.toggle:before,.toggle.expanded:before,a.fieldtoggle.expanded:before{transform:rotate(45deg)!important}a.fieldtoggle{color:var(--text-color);display:block;margin:14px 0;position:relative;text-decoration:none}body.ltr a.fieldtoggle{padding-left:12px}body.rtl a.fieldtoggle{padding-right:12px}a.fieldtoggle:before{display:block;position:absolute;top:7px}body.ltr a.fieldtoggle:before{left:-1px}body.rtl a.fieldtoggle:before{right:-1px}em,i{font-style:italic}ul.errors em{font-style:normal}b,i em,strong{font-weight:700}.readable{font-size:16px;line-height:22px}.readable .h1,.readable .h2,.readable .h3,.readable .h4,.readable .h5,.readable .h6,.readable h1,.readable h2,.readable h3,.readable h4,.readable h5,.readable h6{font-weight:600;margin:24px 0 16px}.readable .h1,.readable h1{color:#000;font-size:32px;line-height:40px}.readable .h2,.readable h2{font-size:24px;line-height:30px}.readable .h3,.readable h3{font-size:20px;line-height:24px}.readable .h4,.readable h4{font-size:16px;line-height:20px}.readable .h5,.readable h5{font-size:14px;line-height:18px}.readable .h6,.readable h6{color:#596673;font-size:13.6px;line-height:17px}.readable ol,.readable ul{margin:1em 0}body.ltr .readable ol,body.ltr .readable ul{padding-left:2em}body.rtl .readable ol,body.rtl .readable ul{padding-right:2em}.readable ul li{list-style-type:disc}.readable li+li{margin-top:.25em}.readable .tip-dismiss-btn{position:absolute;top:12px}body.ltr .readable .tip-dismiss-btn{right:12px}body.rtl .readable .tip-dismiss-btn{left:12px}.readable .tip-dismiss-btn+p{margin-top:0}.readable blockquote{margin:16px 0}.readable blockquote:not(.note){color:#596673;padding:0 16px}body.ltr .readable blockquote:not(.note){border-left:4px solid rgba(51,64,77,.1)}body.rtl .readable blockquote:not(.note){border-right:4px solid rgba(51,64,77,.1)}.readable blockquote.note{border:1px solid;border-radius:4px;padding:1em;position:relative}body.ltr .readable blockquote.note{padding-left:50px}body.rtl .readable blockquote.note{padding-right:50px}body.ltr .readable blockquote.note.dismissible{padding-right:36px}body.rtl .readable blockquote.note.dismissible{padding-left:36px}.readable blockquote.note:not(.tip):not(.warning){border-color:#dc2626;color:#bf503f}.readable blockquote.note:not(.tip):not(.warning):before{color:#dc2626;content:"alert"}.readable blockquote.note.tip{border-color:#1f5fea;color:#1f5fea}.readable blockquote.note.tip:before{color:#1f5fea;content:"lightbulb"}.readable blockquote.note.warning{border-color:#854d0e;color:#cf783a}.readable blockquote.note.warning:before{color:#854d0e;content:"alert"}.readable blockquote.note:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;font-size:24px;opacity:1;position:absolute;top:15px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:24px}body.ltr .readable blockquote.note:before{left:16px}body.rtl .readable blockquote.note:before{right:16px}.readable blockquote.note a[href]{color:currentColor;text-decoration:underline}.readable .go:after{font-size:14px}body.ltr .leftalign{text-align:left}body.rtl .leftalign{text-align:right}.topalign{vertical-align:top}body.ltr .rightalign{text-align:right}body.rtl .rightalign{text-align:left}.centeralign{text-align:center!important}.nowrap{white-space:nowrap}.break-word{word-wrap:break-word}.light{color:var(--medium-text-color)!important;font-weight:400}.extralight{color:var(--light-text-color)!important}.smalltext{font-size:12px;line-height:1.2}.largetext{font-size:16px;line-height:1.2}.zilch{color:var(--light-text-color);font-size:20px;line-height:24px;padding:100px 0;text-align:center}.zilch.small{font-size:16px;padding:24px 0}input.checkbox+label.smalltext{padding-top:2px}.required:after{color:var(--rose-500);content:"asterisk";font-size:12px}body.ltr .required:after{margin:-2px 0 0 5px}body.rtl .required:after{margin:-2px 5px 0 0}.scrollpane{overflow:auto}body.ltr .left{float:left}body.ltr .right,body.rtl .left{float:right}body.rtl .right{float:left}td,th{vertical-align:middle}body.ltr td,body.ltr th{text-align:left}body.ltr table[dir=rtl] td,body.ltr table[dir=rtl] th,body.rtl td,body.rtl th{text-align:right}body.rtl table[dir=ltr] td,body.rtl table[dir=ltr] th{text-align:left}td.right,th.right{float:none}body.ltr td.right,body.ltr th.right{text-align:right}body.rtl td.right,body.rtl th.right{text-align:left}.clear{clear:both;display:block;height:0}.fullwidth{width:100%}.token{background-color:#e4edf6;border-radius:3px;color:#3f4d5a;display:inline-block;font-size:12px;line-height:14px;padding:3px 7px}.token[data-name="*"]{position:relative;width:10px}.token[data-name="*"] span{opacity:0}.token[data-name="*"]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"asterisk";display:block;font-size:9px;left:0;line-height:17px;position:absolute;text-indent:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.token:focus{background-color:#cdd8e4}.highlight .token{background:transparent;border:none;border-radius:0;box-shadow:none;display:inline;font-size:inherit;line-height:inherit;padding:0;text-shadow:none}.pane.highlight pre[class*=language-]{overflow:visible}.pane.highlight pre[class*=language-]>code.diff-highlight .token:not(.prefix){margin:0 -24px;padding:0 24px}.success{color:var(--success-color)!important}.notice .icon:before,.notice.with-icon:before,.warning .icon:before,.warning.with-icon:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em}body.ltr .notice .icon:before,body.ltr .notice.with-icon:before,body.ltr .warning .icon:before,body.ltr .warning.with-icon:before{margin:-2px 2px 0 0}body.rtl .notice .icon:before,body.rtl .notice.with-icon:before,body.rtl .warning .icon:before,body.rtl .warning.with-icon:before{margin:-2px 0 0 2px}.notice.has-icon,.warning.has-icon{align-items:flex-start;display:flex;flex-wrap:nowrap}.notice.has-icon .icon,.warning.has-icon .icon{flex-shrink:1}.notice{color:var(--notice-color)!important}.notice a{text-decoration:underline}.notice .icon:before,.notice.with-icon:before{content:"lightbulb"}.warning{color:var(--warning-color)!important}.warning .icon:before,.warning.with-icon:before{content:"alert"}.error{color:var(--error-color)!important}.icon.move:not(.disabled){cursor:move}.icon.move:before{color:var(--custom-text-color,var(--ui-control-color));content:"move"}.icon.move:not(.disabled):hover:before{color:var(--link-color)}.icon.delete{display:inline-block;line-height:inherit}.icon.delete:before{color:var(--ui-control-color);content:"remove"}.icon.delete:not(.disabled){cursor:pointer}.icon.delete:not(.disabled):hover:before{color:var(--disabled-color)}.icon.delete:not(.disabled):active:before{color:var(--red-800)}.hidden{display:none!important}.visually-hidden{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.invisible{visibility:hidden}.clearafter:after{clear:both;content:"";display:block;height:0;visibility:hidden}.info{cursor:pointer;height:1.375em;overflow:hidden;vertical-align:bottom;width:1em}.info,.info:before{display:inline-block;text-align:center}.info:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;vertical-align:middle;word-wrap:normal!important;color:var(--ui-control-color);line-height:1.375;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:baseline;width:100%}.info:not(.warning):before{content:"info"}.info:not(.warning):hover:before{color:var(--link-color)}.info.warning:before{content:"alert"}.info.warning:hover:before{color:var(--warning-color)}.info-hud table{max-width:280px;table-layout:auto}.info-hud td{word-wrap:break-word;width:100%}@media(max-width:450px){.info-hud table{table-layout:fixed;width:100%}}.content{position:relative}.content:after{clear:both;content:"";display:block;height:0;visibility:hidden}.customize-sources-modal{overflow:visible!important}body.ltr .customize-sources-modal{padding-left:200px}body.rtl .customize-sources-modal{padding-right:200px}.customize-sources-modal>.cs-sidebar{background-color:var(--gray-050);border:none;box-shadow:inset -1px 0 0 var(--hairline-color);box-sizing:border-box;height:calc(100% - 44px);margin:0;overflow:auto;padding:10px 0;position:absolute;top:0;width:200px}body.ltr .customize-sources-modal>.cs-sidebar{left:0}body.rtl .customize-sources-modal>.cs-sidebar{right:0}body.ltr .customize-sources-modal>.cs-sidebar{border-top-left-radius:var(--large-border-radius)}body.rtl .customize-sources-modal>.cs-sidebar{border-top-right-radius:var(--large-border-radius)}.customize-sources-modal>.cs-sidebar>.btn{display:block;width:calc(100% - 28px)}body.ltr .customize-sources-modal>.cs-sidebar>.btn{margin:10px 0 0 14px}body.rtl .customize-sources-modal>.cs-sidebar>.btn{margin:10px 14px 0 0}body.ltr .customize-sources-modal.sidebar-hidden{padding-left:0}body.rtl .customize-sources-modal.sidebar-hidden{padding-right:0}.customize-sources-modal.sidebar-hidden>.cs-sidebar{display:none}.customize-sources-modal>.source-settings{box-sizing:border-box;height:calc(100% - 44px);overflow:auto;padding:24px;position:relative}.customize-sources-modal>.footer{bottom:0;left:0;position:absolute;width:100%}.customize-sources-item{--selected-item-color:var(--white);align-items:center;background-color:var(--gray-100);border:solid var(--hairline-color);border-width:1px 0;box-sizing:border-box;cursor:default;display:flex;margin-top:-1px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 1px)}.customize-sources-item+.customize-sources-item.heading{margin-top:10px}.customize-sources-item+.customize-sources-item:not(.heading){border-top:1px solid var(--hairline-color)}.customize-sources-item.sel{--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7);--ui-control-color:var(--selected-item-color);background-color:var(--dark-sel-color);color:var(--selected-item-color);z-index:1}.customize-sources-item .label{flex:1}.customize-sources-item.heading .label{color:var(--light-text-color);font-size:12px;font-weight:700;text-transform:uppercase}.customize-sources-item.heading.sel .label{color:var(--selected-item-color)}.customize-sources-item__move{align-items:center;justify-content:center;position:absolute;top:50%;transform:translate(-50%,-50%)}body.ltr .customize-sources-item__move{right:0}body.rtl .customize-sources-item__move{left:0}.customize-sources-item__move.icon{display:flex;text-decoration:none}.customize-sources-item__btn{margin:3px;padding:8px 14px}body.ltr .customize-sources-item__btn{padding-right:30px}body.rtl .customize-sources-item__btn{padding-left:30px}.checkbox-select-item{align-content:stretch;align-items:flex-start;display:flex;margin-bottom:4px}.checkbox-select-item .move{margin-top:-3px;position:relative;z-index:1}body.ltr .checkbox-select-item .move{margin-right:10px}body.rtl .checkbox-select-item .move{margin-left:10px}ul.path{align-items:stretch;display:flex;flex-direction:row;flex-wrap:wrap}ul.path li{align-items:center;display:inline-flex}ul.path li:not(:last-child):after{border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr ul.path li:not(:last-child):after{margin:0 5px 0 2px}body.rtl ul.path li:not(:last-child):after{margin:0 2px 0 5px}body.ltr ul.path li:not(:last-child):after{transform:rotate(-45deg)}body.rtl ul.path li:not(:last-child):after{transform:rotate(135deg)}ul.icons{display:flex;flex-wrap:wrap;margin-top:20px}ul.icons li{margin:0 4px 10px 0}ul.icons li a{border:1px solid var(--white);border-radius:4px;color:var(--text-color);display:block;padding:60px 5px 10px;position:relative;text-align:center;width:110px}ul.icons li a:before{display:block;font-size:40px;left:0;line-height:60px;position:absolute;top:0;width:100%}ul.icons li a .icon img,ul.icons li a .icon svg{height:40px;left:calc(50% - 20px);position:absolute;top:12px;width:40px}ul.icons li a .icon.icon-mask svg circle,ul.icons li a .icon.icon-mask svg ellipse,ul.icons li a .icon.icon-mask svg line,ul.icons li a .icon.icon-mask svg path,ul.icons li a .icon.icon-mask svg polygon,ul.icons li a .icon.icon-mask svg polyline,ul.icons li a .icon.icon-mask svg rect,ul.icons li a .icon.icon-mask svg text{fill:var(--text-color);stroke-width:0}ul.icons li a:hover{background-color:var(--gray-050);border-color:var(--gray-100);text-decoration:none}ul.icons li a:hover .icon.icon-mask svg circle,ul.icons li a:hover .icon.icon-mask svg ellipse,ul.icons li a:hover .icon.icon-mask svg line,ul.icons li a:hover .icon.icon-mask svg path,ul.icons li a:hover .icon.icon-mask svg polygon,ul.icons li a:hover .icon.icon-mask svg polyline,ul.icons li a:hover .icon.icon-mask svg rect,ul.icons li a:hover .icon.icon-mask svg text{fill:var(--link-color);stroke-width:0}@media only screen and (max-width:380px){ul.icons li a{width:96px}}@media only screen and (max-width:320px){ul.icons li a{width:75px}}.toolbar{margin-bottom:var(--s);min-height:34px;position:relative}.toolbar .flex,.toolbar.flex{align-items:flex-start}.toolbar .text{border-radius:var(--large-border-radius)!important}.flex{align-content:stretch;align-items:center;display:flex;gap:var(--s)}.flex.flex-gap-xs{gap:var(--xs)}.flex.flex-gap-m{gap:var(--m)}.flex.flex-gap-l{gap:var(--l)}.flex.flex-gap-xl{gap:var(--xl)}.flex:not(.flex-nowrap){flex-wrap:wrap}.flex>.label{white-space:nowrap}.centeralign .flex{justify-content:center}.inline-flex{align-content:stretch;align-items:center;display:inline-flex!important;gap:var(--s)}.gap-xs{gap:var(--xs)}.gap-s{gap:var(--s)}.gap-m{gap:var(--m)}.gap-l{gap:var(--l)}.gap-xl{gap:var(--xl)}.flex-grow{flex:1;max-width:100%}.flex-justify{justify-content:space-between}.flex-justify-start{justify-content:flex-start}.flex-justify-end{justify-content:flex-end}.flex-justify-center{justify-content:center}.flex-start{align-items:flex-start}.flex-end{align-items:flex-end}.flex-center{align-items:center}.flex-stretch{align-items:stretch}.spacer{width:14px}.buttons{align-items:center;display:flex;gap:7px;margin:24px 0;position:relative}.footer>.buttons,.hud-footer>.buttons{margin:0}.btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--ui-control-bg-color);border:none;border-radius:var(--ui-control-border-radius);box-sizing:border-box;color:currentColor;display:inline-flex;font-size:inherit;justify-content:center;padding:7px 10px;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}.btn:not([aria-current]){cursor:pointer}.btn.chromeless{height:auto;padding:0}.btn.chromeless,.btn.chromeless:active,.btn.chromeless:focus,.btn.chromeless:hover{background-color:transparent}.btn.chromeless:active,.btn.chromeless:hover{text-decoration:underline}.btn.hairline,.btn.link-btn{background-color:transparent;border:1px solid var(--medium-hairline-color)}.btn.hairline:active,.btn.hairline[aria-expanded=true],.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{background-color:var(--ui-control-static-bg-color)}.btn.hairline:active,.btn.hairline:hover,.btn.hairline[aria-expanded=true]{border-color:var(--dark-hairline-color)}.btn.link-btn{color:var(--link-color)}.btn.link-btn:active,.btn.link-btn:hover,.btn.link-btn[aria-expanded=true]{border-color:var(--link-color)}.btn.wrap{height:auto;min-height:34px;text-align:left;white-space:normal}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):hover{--ui-control-bg-color:var(--ui-control-hover-bg-color)}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current])[aria-expanded=true]{--ui-control-bg-color:var(--ui-control-active-bg-color)}.btn[type=color]{padding:6px!important;width:36px}.btn.loading{cursor:default}.btn:hover{text-decoration:none}.btn.btn-empty,.btn:empty{padding-left:12px;padding-right:12px}body.ltr .btn.icon:not(:empty):not(.btn-empty):before,body.ltr .btn.menubtn:not(.action-btn).icon.btn-empty:before,body.ltr .btn.menubtn:not(.action-btn).icon:empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.ltr .btn[data-icon]:not(:empty):not(.btn-empty):before{margin-right:5px}body.rtl .btn.icon:not(:empty):not(.btn-empty):before,body.rtl .btn.menubtn:not(.action-btn).icon.btn-empty:before,body.rtl .btn.menubtn:not(.action-btn).icon:empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.rtl .btn[data-icon]:not(:empty):not(.btn-empty):before{margin-left:5px}.btn:not(.loading) .spinner{display:none}.btn.loading .label,.btn.loading:after,.btn.loading:before{visibility:hidden}.btn div.checkbox{margin-top:2px}.btn [data-icon]{margin-top:-3px}body.ltr .btn [data-icon]{margin-right:5px}body.rtl .btn [data-icon]{margin-left:5px}.btn [data-icon].light:before{color:var(--gray-300)}.disabled{opacity:.25;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.noteditable,.noteditable .element,.noteditable .lightswitch-container,.noteditable+.colorhex{cursor:not-allowed}.btn,.spinner{height:var(--ui-control-height)}body.ltr .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.ltr .menu-toggle:not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn).icon:after,body.ltr .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-left:6px}body.rtl .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.rtl .menu-toggle:not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn).icon:after,body.rtl .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-right:6px}.btn.icon:before,.btn[data-icon-after]:after,.btn[data-icon]:before{position:relative}.btn.icon.small:before,.btn.small[data-icon-after]:after,.btn.small[data-icon]:before{font-size:10px}.btngroup{align-items:center;border-radius:var(--large-border-radius);display:flex;position:relative;white-space:nowrap;z-index:1}.btngroup.fullwidth .btn{flex:1}.btngroup.disabled .btn{cursor:default}.btngroup .btn:focus{z-index:1}body.ltr .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-right:1px}body.rtl .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-left:1px}body.ltr .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-bottom-left-radius:0;border-top-left-radius:0}body.ltr .btngroup .btn:not(:last-child):not(.btngroup-btn-last),body.rtl .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-bottom-right-radius:0;border-top-right-radius:0}body.rtl .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-bottom-left-radius:0;border-top-left-radius:0}.btngroup--exclusive .btn[aria-pressed=true]:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]){background-color:var(--gray-500);color:var(--white)}.copytext{align-items:center;display:flex;position:relative;white-space:nowrap;z-index:1}body.ltr .copytext .text{border-bottom-right-radius:0;border-top-right-radius:0;min-width:0}body.ltr .copytext .btn,body.rtl .copytext .text{border-bottom-left-radius:0;border-top-left-radius:0}body.rtl .copytext .btn{border-bottom-right-radius:0;border-top-right-radius:0}.copytextbtn{align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);color:var(--medium-text-color);cursor:pointer;display:inline-flex;flex-wrap:nowrap;padding:0 9px}.copytextbtn .copytextbtn__icon{background:none;color:var(--light-text-color);margin-top:-3px;padding:0;width:13px}body.ltr .copytextbtn .copytextbtn__icon{margin-left:5px}body.rtl .copytextbtn .copytextbtn__icon{margin-right:5px}.copytextbtn:focus,.copytextbtn:hover{border-color:var(--medium-hairline-color);color:var(--text-color)}.copytextbtn:focus .copytextbtn__value,.copytextbtn:hover .copytextbtn__value{color:var(--text-color)}.copytextbtn.small{padding:0 5px}.copytextbtn.small .copytextbtn__value{font-size:.6875rem}.menu-toggle,.menubtn:not(.action-btn){align-items:center;display:inline-flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.menu-toggle:after,.menubtn:not(.action-btn):after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transform:rotate(45deg);width:.4375rem}.menu-toggle.btn:after,.menubtn:not(.action-btn).btn:after{top:-1px}.menu-toggle.btn:not(.disabled):not(.inactive).active:after,.menu-toggle.btn:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive):active:after{border-color:var(--ui-control-active-color)}.menu-toggle.btn.submit:after,.menubtn:not(.action-btn).btn.submit:after{border-color:var(--white)!important;opacity:.8}.menu-toggle.btn.submit:not(.disabled):not(.inactive).active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):hover:after{opacity:1}.menu-toggle:not(.btn):not(.icon),.menubtn:not(.action-btn):not(.btn):not(.icon){height:17px}.menu-toggle:not(.btn):not(.icon):after,.menubtn:not(.action-btn):not(.btn):not(.icon):after{border-color:var(--link-color);top:-2px}body.ltr .menu-toggle.btn-empty,body.ltr .menu-toggle:empty,body.ltr .menubtn:not(.action-btn).btn-empty,body.ltr .menubtn:not(.action-btn):empty{padding-left:8px}body.ltr .menu-toggle.btn-empty,body.ltr .menu-toggle:empty,body.ltr .menubtn:not(.action-btn).btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.rtl .menu-toggle.btn-empty,body.rtl .menu-toggle:empty,body.rtl .menubtn:not(.action-btn).btn-empty,body.rtl .menubtn:not(.action-btn):empty{padding-right:8px}body.rtl .menu-toggle.btn-empty,body.rtl .menu-toggle:empty,body.rtl .menubtn:not(.action-btn).btn-empty,body.rtl .menubtn:not(.action-btn):empty{padding-left:8px}@keyframes rotator{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.spinner{align-items:center;display:inline-flex;height:var(--size,34px);justify-content:center;width:var(--size,24px)}.spinner:before{animation:rotator .7s linear infinite;border-color:transparent currentcolor currentcolor transparent;border-radius:50%;border-style:solid;border-width:2px;box-sizing:border-box;content:"";display:block;font-size:0;height:var(--size,20px);-o-object-fit:scale-down;object-fit:scale-down;opacity:.8;width:var(--size,20px)}.spinner.small{--size:12px}.spinner.big{--size:48px}.spinner.spinner-absolute{height:var(--size,20px);left:calc(50% - var(--size, 20px)/2);position:absolute;top:var(--elements-busy-top-position);width:var(--size,20px)}body.ltr .btn+.spinner{margin-left:7px}body.rtl .btn+.spinner{margin-right:7px}body.ltr .buttons .btn+.spinner,body.ltr .buttons .btngroup+.spinner{margin-left:0}body.rtl .buttons .btn+.spinner,body.rtl .buttons .btngroup+.spinner{margin-right:0}body.ltr .buttons.right .btn+.spinner{margin-right:var(--neg-padding)}body.rtl .buttons.right .btn+.spinner{margin-left:var(--neg-padding)}.btn.small,.btngroup.small .btn{font-size:12px;line-height:22px;padding:0 var(--s)!important}.btn.small,.btn.small+.spinner,.btngroup.small,.btngroup.small input.btn{height:22px}.btn.big,.btngroup.big .btn{font-size:14px;line-height:36px;padding:0 14px}body.ltr .btn.big[data-icon]:before,body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-left:-2px}body.rtl .btn.big[data-icon]:before,body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-right:-2px}.btn.big,.btn.big+.spinner,.btngroup.big,.btngroup.big input.btn{height:36px}.btn.huge{height:48px;line-height:48px;padding:var(--l)}.btn.secondary,.btn.submit{color:var(--white)!important;--ui-control-active-color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.btn.submit{background-color:var(--primary-color)!important}.btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.btn.submit:not(.disabled):not(.inactive):not(.loading):hover{background-color:#c82020!important}.btn.submit:not(.disabled):not(.inactive):not(.loading).active,.btn.submit:not(.disabled):not(.inactive):not(.loading):active,.btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#b21d1d!important}.btn.caution{background-color:var(--red-050)!important;color:var(--error-color)}.btn.caution.hover,.btn.caution:focus,.btn.caution:hover{background-color:#fcdada!important}.btn.caution.active,.btn.caution:active,.btn.caution[aria-expanded=true]{background-color:var(--red-100)!important}.btn.secondary,.secondary-buttons .btn.submit{background-color:var(--secondary-color)!important}.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus,.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):hover{background-color:#55616d!important}.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,.btn.secondary:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true],.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#4a545e!important}div.btn.submit{overflow:hidden;position:relative}div.btn.submit input{left:100%;position:absolute}.btn.dashed{background-color:transparent;border:1px dashed var(--medium-hairline-color)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-right:1px solid transparent}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-left:1px solid transparent}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-right:-1px}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-left:-1px}.btn.dashed:focus{background-color:rgba(205,216,228,.1);border-color:transparent}.reduce-focus-visibility .btn.dashed:focus:not(:focus-visible){border:1px dashed var(--medium-hairline-color)}.btn.dashed:not(.disabled).active,.btn.dashed:not(.disabled):active,.btn.dashed:not(.disabled)[aria-expanded=true]{background-color:rgba(205,216,228,.25)}.chevron-btns{display:flex;justify-content:flex-start}.chevron-btns .btn{background-color:transparent;border-radius:0;padding:0;position:relative}.chevron-btns .btn.active-drop-target,.chevron-btns .btn.current-step{color:var(--white);--text-color:var(--white);--ui-control-color:var(--white);--ui-control-bg-color:var(--gray-500);--ui-control-hover-bg-color:#55616d;--ui-control-active-bg-color:#4a545e}.chevron-btns .btn.current-step{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7)}.chevron-btns .btn:focus{box-shadow:none;z-index:1}.chevron-btns .btn:focus .label{box-shadow:var(--focus-ring);z-index:1}.reduce-focus-visibility .chevron-btns .btn:focus:not(:focus-visible) .label{box-shadow:none}.reduce-focus-visibility .chevron-btns .btn:focus-visible .label{box-shadow:var(--focus-ring)}body.ltr .chevron-btns .btn:not(.has-action-menu){padding-right:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns .btn:not(.has-action-menu){padding-left:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns .btn:not(.has-action-menu){margin-right:2.8px}body.rtl .chevron-btns .btn:not(.has-action-menu){margin-left:2.8px}body.ltr .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-right:5px}body.rtl .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-left:5px}body.ltr .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-left:8px}body.rtl .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-right:8px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label{padding:3px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;transform:rotate(45deg);width:.4375rem}.chevron-btns .btn .btn-body{align-items:center;background-color:var(--ui-control-bg-color);display:inline-flex;height:var(--ui-control-height);justify-content:center}.chevron-btns .btn .btn-body [data-icon]{--ui-control-height:0.8125rem;text-align:center}body.ltr .chevron-btns .btn .btn-body [data-icon]{margin-right:0}body.rtl .chevron-btns .btn .btn-body [data-icon]{margin-left:0}.chevron-btns .btn .label{align-items:center;display:inline-flex;overflow:hidden;text-overflow:ellipsis}body.ltr .chevron-btns .btn.has-action-menu .btn-body{padding-right:1px}body.rtl .chevron-btns .btn.has-action-menu .btn-body{padding-left:1px}body.ltr .chevron-btns .btn.has-action-menu .btn-body{margin-right:0}body.rtl .chevron-btns .btn.has-action-menu .btn-body{margin-left:0}.chevron-btns .btn .chevron-left,.chevron-btns .btn .chevron-right{height:100%;position:absolute;top:0;width:calc(var(--ui-control-height)/2)}.chevron-btns .btn .chevron-left{border-top:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left{left:0}body.rtl .chevron-btns .btn .chevron-left{right:0}body.ltr .chevron-btns .btn .chevron-left{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .chevron-btns .btn .chevron-left{border-right:calc(var(--ui-control-height)/2) solid transparent}.chevron-btns .btn .chevron-left:after{border-bottom:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color);bottom:0;content:"";display:block;font-size:0;position:absolute}body.ltr .chevron-btns .btn .chevron-left:after{right:0}body.rtl .chevron-btns .btn .chevron-left:after{left:0}body.ltr .chevron-btns .btn .chevron-left:after{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .chevron-btns .btn .chevron-left:after{border-right:calc(var(--ui-control-height)/2) solid transparent}.chevron-btns .btn .chevron-right{border-bottom:calc(var(--ui-control-height)/2) solid transparent;border-top:calc(var(--ui-control-height)/2) solid transparent}body.ltr .chevron-btns .btn .chevron-right{right:0}body.rtl .chevron-btns .btn .chevron-right{left:0}body.ltr .chevron-btns .btn .chevron-right{border-left:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.rtl .chevron-btns .btn .chevron-right{border-right:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}.chevron-btns ol{display:flex;list-style-type:none;position:relative}body.ltr .chevron-btns ol{padding-left:0}body.rtl .chevron-btns ol{padding-right:0}body.ltr .chevron-btns ol li.first-step .btn .btn-body{padding-left:14px}body.rtl .chevron-btns ol li.first-step .btn .btn-body{padding-right:14px}body.ltr .chevron-btns ol li.first-step .btn .btn-body{border-radius:var(--ui-control-border-radius) 0 0 var(--ui-control-border-radius)}body.rtl .chevron-btns ol li.first-step .btn .btn-body{border-radius:0 var(--ui-control-border-radius) var(--ui-control-border-radius) 0}.chevron-btns ol li.first-step .btn .chevron-left{display:none}body.ltr .chevron-btns ol li:not(.first-step) .btn{margin-left:calc(var(--ui-control-height)*-1/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{margin-right:calc(var(--ui-control-height)*-1/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn{padding-left:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{padding-right:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-left:7px}body.rtl .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-right:7px}.color-input-container{position:relative}.color-input-container .color-hex-indicator{line-height:34px;position:absolute;text-align:center;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:1em}body.ltr .color-input-container .color-hex-indicator{left:7px}body.rtl .color-input-container .color-hex-indicator{right:7px}.color-input{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:.9em!important}body.ltr .color-input{padding-left:calc(7px + 1em)}body.rtl .color-input{padding-right:calc(7px + 1em)}.color{border-radius:17px;display:inline-block;height:34px;padding:0;position:relative;vertical-align:middle;width:34px}.color:not(.static):not(.noteditable){cursor:pointer}.color:not(.small){background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px;background-size:17px 17px}.color.small,.color:not(.small){background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0)}.color.small{background-position:0 0,4px 0,4px -4px,0 4px;background-size:8px 8px;height:16px;width:16px}.color .color-preview{border-radius:17px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);height:100%;position:absolute;top:0;width:100%}body.ltr .color .color-preview{left:0}body.rtl .color .color-preview{right:0}.color .color-preview:focus-within{box-shadow:var(--focus-ring)}.color .color-preview>.color-preview-input{border:none;height:100%;margin:0;opacity:0;padding:0;position:absolute;width:100%}body.ltr .color .color-preview>.color-preview-input{left:0}body.rtl .color .color-preview>.color-preview-input{right:0}.colorhex{color:var(--medium-text-color);display:inline-block;margin-left:5px;vertical-align:middle}.lightswitch-outer-container{display:flex}.lightswitch-outer-container .lightswitch-inner-container{align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);display:flex;max-width:100%;padding-left:7px;padding-right:7px}.lightswitch-outer-container .lightswitch-inner-container span{color:var(--medium-text-color);cursor:default;flex-grow:1;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto;overflow:auto;overflow-wrap:break-word;padding:7px 0}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-right:7px}.lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:right}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-right:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-left:7px;text-align:left}.lightswitch{background-image:linear-gradient(to right,var(--gray-400),var(--gray-400));border:none!important;cursor:pointer;display:block;overflow:hidden;position:relative;transition:background-image .1s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lightswitch.on{background-image:linear-gradient(to right,var(--enabled-color),var(--enabled-color))}.lightswitch.indeterminate{background-image:linear-gradient(to right,var(--enabled-color),var(--gray-300))}.lightswitch .lightswitch-container{height:100%;position:relative}.lightswitch .lightswitch-container .handle{background-color:var(--white);position:absolute;top:1px}.lightswitch:not(.small){border-radius:11px;height:22px;min-width:34px;width:34px}.lightswitch:not(.small) .lightswitch-container{width:46px}body.ltr .lightswitch:not(.small) .lightswitch-container{margin-left:-12px}body.rtl .lightswitch:not(.small) .lightswitch-container{margin-right:-12px}.lightswitch:not(.small) .lightswitch-container .handle{border-radius:10px;height:20px;left:calc(50% - 10px);width:20px}.lightswitch.small{border-radius:9px;height:18px;width:28px}.lightswitch.small .lightswitch-container{width:38px}body.ltr .lightswitch.small .lightswitch-container{margin-left:-10px}body.rtl .lightswitch.small .lightswitch-container{margin-right:-10px}.lightswitch.small .lightswitch-container .handle{border-radius:8px;height:16px;left:calc(50% - 8px);width:16px}table .lightswitch{display:inline-block;margin-bottom:-5px}body.ltr .lightswitch.on .lightswitch-container{margin-left:0}body.rtl .lightswitch.on .lightswitch-container{margin-right:0}body.ltr .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-left:-6px}body.rtl .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-right:-6px}body.ltr .lightswitch.indeterminate.small .lightswitch-container{margin-left:-5px}body.rtl .lightswitch.indeterminate.small .lightswitch-container{margin-right:-5px}table.data+.pagination{margin-top:24px}.pagination .page-link{align-items:center;border-radius:var(--medium-border-radius);display:flex;height:1.875rem;justify-content:center;width:1.875rem}.pagination .page-link:after{position:relative;transition:border-color .1s linear}.pagination .page-link.prev-page:after{border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .pagination .page-link.prev-page:after{transform:rotate(135deg)}body.rtl .pagination .page-link.prev-page:after{transform:rotate(-45deg)}body.ltr .pagination .page-link.prev-page:after{right:-1px}body.rtl .pagination .page-link.prev-page:after{left:-1px}.pagination .page-link.next-page:after{border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .pagination .page-link.next-page:after{transform:rotate(-45deg)}body.rtl .pagination .page-link.next-page:after{transform:rotate(135deg)}body.ltr .pagination .page-link.next-page:after{left:-1px}body.rtl .pagination .page-link.next-page:after{right:-1px}.pagination .page-link:not(.disabled){box-shadow:inset 0 0 0 1px var(--hairline-color);cursor:pointer;transition:box-shadow .1s linear}.pagination .page-link:not(.disabled):hover{box-shadow:inset 0 0 0 1px var(--link-color);text-decoration:none}.pagination .page-link:not(.disabled):hover:after{border-color:var(--link-color)}body.reduce-focus-visibility .pagination .page-link:not(.disabled):focus-visible,body:not(.reduce-focus-visibility) .pagination .page-link:not(.disabled):focus{box-shadow:inset 0 0 0 1px var(--hairline-color),var(--focus-ring)}.pagination .page-link.disabled{opacity:1}.pagination .page-link.disabled:after{border-color:var(--hairline-color)}body.ltr .actions{float:right}body.ltr .actions>li,body.rtl .actions{float:left}body.rtl .actions>li{float:right}body.ltr .actions>li+li{margin-left:10px}body.rtl .actions>li+li{margin-right:10px}h1+.actions{margin-top:-100px}h2+.actions{margin-top:-54px}.tablepane{--pane-y-padding-default:calc(var(--xl) - 2px);--pane-x-padding-default:calc(var(--padding) - 2px);margin:calc(var(--pane-padding, var(--pane-y-padding-default))*-1) calc(var(--pane-padding, var(--pane-x-padding-default))*-1) calc(var(--pane-padding, var(--padding))*-1 + var(--pane-padding, var(--m)));overflow-x:auto;padding:0!important}body.ltr .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.ltr .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-left:var(--pane-padding,var(--pane-x-padding-default))}body.ltr .tablepane table.data td:last-child,body.ltr .tablepane table.data th:last-child,body.rtl .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.rtl .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-right:var(--pane-padding,var(--pane-x-padding-default))}body.rtl .tablepane table.data td:last-child,body.rtl .tablepane table.data th:last-child{padding-left:var(--pane-padding,var(--pane-x-padding-default))}table.fixed-layout{table-layout:fixed}table td.thin,table th.thin{white-space:nowrap;width:.01%!important}table thead th{font-weight:700;vertical-align:top}body.ltr table thead th{text-align:left}body.rtl table thead th{text-align:right}table:not(.data) td,table:not(.data) th{padding-bottom:7px;padding-top:7px}table:not(.data) td:not(:first-child),table:not(.data) th:not(:first-child){padding-left:12px}table:not(.data) td:not(:last-child),table:not(.data) th:not(:last-child){padding-right:12px}table.data td,table.data th{box-sizing:border-box;padding-left:12px;padding-right:12px;position:relative}table.data td.checkbox-cell,table.data td.vuetable-th-slot-checkbox,table.data th.checkbox-cell,table.data th.vuetable-th-slot-checkbox{box-sizing:content-box;min-width:var(--checkbox-size);position:relative;width:var(--checkbox-size)!important}table.data td.checkbox-cell div.checkbox,table.data td.checkbox-cell input.checkbox+label,table.data td.vuetable-th-slot-checkbox div.checkbox,table.data td.vuetable-th-slot-checkbox input.checkbox+label,table.data th.checkbox-cell div.checkbox,table.data th.checkbox-cell input.checkbox+label,table.data th.vuetable-th-slot-checkbox div.checkbox,table.data th.vuetable-th-slot-checkbox input.checkbox+label{position:absolute;top:calc(50% - .5rem)}table.data th{font-weight:700}body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data thead:first-child tr:first-child th:first-child{border-top-left-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data thead:first-child tr:first-child th:first-child{border-top-right-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data thead:first-child tr:first-child th:first-child{border-bottom-left-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data thead:first-child tr:first-child th:first-child{border-bottom-right-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data thead:first-child tr:first-child th:last-child{border-top-right-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data thead:first-child tr:first-child th:last-child{border-top-left-radius:var(--border-radius,var(--small-border-radius))}body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data thead:first-child tr:first-child th:last-child{border-bottom-right-radius:var(--border-radius,var(--small-border-radius))}body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data thead:first-child tr:first-child th:last-child{border-bottom-left-radius:var(--border-radius,var(--small-border-radius))}table.data thead td,table.data thead th{background-color:var(--gray-050);cursor:default;width:auto}table.data thead td,table.data thead th:not(.orderable){padding-bottom:var(--s);padding-top:var(--s)}table.data thead th{vertical-align:middle;white-space:nowrap}table.data thead th.orderable{padding:0!important;position:relative}body:not(.dragging) table.data thead th.orderable:not(.ordered):hover{background-color:var(--gray-100)}table.data thead th.orderable.ordered{background-color:var(--light-sel-color)}table.data thead th.orderable.ordered:not(.loading) button:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;position:absolute;top:2px;top:calc(50% - 3px);transform:rotate(225deg);width:.4375rem}body.ltr table.data thead th.orderable.ordered:not(.loading) button:after{right:var(--m)}body.rtl table.data thead th.orderable.ordered:not(.loading) button:after{left:var(--m)}table.data thead th.orderable.ordered:not(.loading).desc button:after{transform:rotate(45deg)}table.data thead th.orderable button{font:inherit;padding:var(--pane-padding,var(--m)) var(--m);position:relative;width:100%}body.ltr table.data thead th.orderable button{padding-right:35px}body.rtl table.data thead th.orderable button{padding-left:35px}body.ltr table.data thead th.orderable button{text-align:left}body.rtl table.data thead th.orderable button{text-align:right}table.data thead th.orderable button:focus{z-index:1}table.data thead th:not(.loading) .spinner{display:none}table.data thead th .spinner{position:absolute;top:calc(50% - 6px);--size:12px}body.ltr table.data thead th .spinner{right:8px}body.rtl table.data thead th .spinner{left:8px}table.data tbody tr{--hover-bg-color:var(--gray-050);--selected-bg-color:var(--dark-sel-color)}table.data tbody tr:not(.disabled):hover td,table.data tbody tr:not(.disabled):hover th{background-color:var(--hover-bg-color)}table.data tbody tr:not(.disabled):focus{position:relative;z-index:1}table.data tbody tr:not(.disabled).active-drop-target,table.data tbody tr:not(.disabled).sel{--text-color:var(--white);--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl))}table.data tbody tr:not(.disabled).active-drop-target td,table.data tbody tr:not(.disabled).active-drop-target th,table.data tbody tr:not(.disabled).sel td,table.data tbody tr:not(.disabled).sel th{background-color:var(--selected-bg-color);color:var(--white)}table.data tbody td,table.data tbody th{background-clip:padding-box;max-width:33vw;padding-bottom:7px;padding-top:7px}table.data tbody td.timestamp{color:var(--light-text-color);vertical-align:bottom;white-space:nowrap}body.ltr table.data tbody td.timestamp{text-align:right}body.rtl table.data tbody td.timestamp{text-align:left}table.data thead+tbody tr td,table.data thead+tbody tr th,table.data tr+tr td,table.data tr+tr th{border-top:1px solid transparent}table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) td,table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) th{border-top-color:var(--gray-300)}table.collapsed{width:auto}table.collapsed,table.collapsed tbody,table.collapsed tbody td,table.collapsed tbody th,table.collapsed tbody tr{border:none;display:block;padding:0;white-space:normal;width:auto!important}body.ltr table.collapsed,body.ltr table.collapsed tbody,body.ltr table.collapsed tbody td,body.ltr table.collapsed tbody th,body.ltr table.collapsed tbody tr{text-align:left}body.rtl table.collapsed,body.rtl table.collapsed tbody,body.rtl table.collapsed tbody td,body.rtl table.collapsed tbody th,body.rtl table.collapsed tbody tr{text-align:right}table.collapsed thead{display:none}table.collapsed tbody tr{border-bottom:1px dotted var(--hairline-color);padding:6px 0}table.collapsed tbody tr:after{clear:both;content:"";display:block;height:0;visibility:hidden}table.collapsed tbody td,table.collapsed tbody th{padding:2px 0!important}table.collapsed tbody td:empty{display:none}body.ltr table.collapsed tbody [data-title]{margin-right:0}body.rtl table.collapsed tbody [data-title]{margin-left:0}table.collapsed tbody [data-title]:before{content:attr(data-title) ":";font-weight:700;margin-right:5px}table.collapsed tbody [data-title] form{display:inline-block}.datatablesorthelper,.editabletablesorthelper{background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.datatablesorthelper,.datatablesorthelper .chip,.datatablesorthelper a{cursor:move!important}.datatablesorthelper tr:first-child td,.datatablesorthelper tr:first-child th{border-top:none!important}.datatablesorthelper tr:last-child td,.datatablesorthelper tr:last-child th{border-bottom:none!important}.datatablesorthelper th .toggle{display:none!important}.card,.chip{background-color:var(--custom-bg-color,var(--gray-050));color:var(--custom-text-color,var(--text-color))}.chip{align-items:center;border-radius:var(--large-border-radius);cursor:default;display:inline-flex;font-weight:400;gap:var(--xs);max-width:100%;padding:0 var(--s);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chip.small{flex-direction:row;min-height:calc(1.625rem + 8px);--thumb-size:1.875rem}body.ltr .chip.small>.thumb{margin:0 2px 0 -2px}body.rtl .chip.small>.thumb{margin:0 -2px 0 2px}.chip.small>.thumb.cp-icon{--thumb-size:1rem}.chip.large{flex-direction:column;--thumb-size:120px;min-width:calc(var(--s)*2 + var(--thumb-size));padding-bottom:var(--xs);padding-top:var(--xs);width:100%}.chip.large .chip-content{width:100%}.chip .chip-content{align-items:center;display:flex;flex-direction:row;gap:var(--s);max-width:100%}body.ltr .chip .chip-content .icon,body.ltr .chip .chip-content .status{margin-right:0}body.rtl .chip .chip-content .icon,body.rtl .chip .chip-content .status{margin-left:0}.chip .chip-content .icon{margin:-4px -1px 0}.chip .chip-content .chip-actions{margin-left:auto}.chip.sel,li.active-drop-target .chip,li.sel .chip{--text-color:var(--white);--custom-text-color:var(--white)!important;--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl));background-color:var(--custom-sel-bg-color,var(--dark-sel-color))!important;color:var(--white)}.chip.sel .cp-icon,li.active-drop-target .chip .cp-icon,li.sel .chip .cp-icon{--icon-color:var(--white)!important}.chip.sel,.sel .chip{cursor:default}.chip.sel .thumb,.sel .chip .thumb{filter:brightness(.85)}.chip.sel .thumb img,.sel .chip .thumb img{box-shadow:0 0 0 1px rgba(96,109,123,.1),0 6px 4px -4px rgba(96,109,123,.2)}.offset-drag-helper .chip{background-color:var(--gray-050);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.chip>.thumb{align-items:center;display:flex;flex:0 0 auto;height:var(--thumb-size);justify-content:center;position:relative;width:var(--thumb-size)}.chip>.thumb.rounded img,.chip>.thumb.rounded svg{border:var(--xs) solid transparent;border-radius:50%}.chip>.thumb.checkered img{background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0);background-position:0 0,4px 0,4px -4px,0 4px;background-size:8px 8px}.chip>.thumb img,.chip>.thumb svg{border-radius:var(--small-border-radius);display:block;flex-shrink:0;max-height:100%;max-width:100%}.chip>.thumb svg{width:100%}.cp-icon{align-items:center;display:flex;justify-content:center;max-width:var(--icon-size)}.cp-icon,.cp-icon svg{height:var(--icon-size);width:var(--icon-size)}.cp-icon svg{max-height:var(--icon-size)!important;max-width:var(--icon-size)!important}.cp-icon svg circle,.cp-icon svg ellipse,.cp-icon svg line,.cp-icon svg path,.cp-icon svg polygon,.cp-icon svg polyline,.cp-icon svg rect,.cp-icon svg text{fill:var(--icon-color,var(--ui-control-color));stroke-width:0}.cp-icon.large{--icon-size:1.25rem}.cp-icon.small{--icon-size:0.875rem}.cp-icon.puny{--icon-size:0.75rem}.cards,.chips{display:flex;--custom-bg-color:initial;--custom-text-color:initial;--custom-sel-bg-color:initial}.cards:not(.inline-chips),.chips:not(.inline-chips){flex-direction:column}.cards li,.chips li{max-width:100%}.cards{gap:var(--s)}.chips{align-items:flex-start;gap:var(--xs)}.inline-chips{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.inline-chips .chip{margin:0!important}.elements.inline-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.card{align-items:stretch;cursor:default;display:flex;flex-direction:row;gap:var(--m);padding:var(--m);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.card,.card:after{border-radius:var(--large-border-radius)}.card.sel,li.sel .card{--text-color:var(--white);--custom-text-color:var(--white)!important;--medium-dark-text-color:var(--white);--medium-text-color:var(--white);--light-text-color:var(--white);--link-color:var(--white);--ui-control-color:var(--white);--focus-ring:0 0 0 3px hsl(var(--light-focus-hsl));background-color:var(--custom-sel-bg-color,var(--dark-sel-color))!important;color:var(--white)}.card.sel>.thumb,li.sel .card>.thumb{background-color:var(--dark-sel-color)!important;filter:brightness(.85)}.card>.thumb{align-items:stretch;background-color:var(--gray-100);display:flex;margin:calc(var(--m)*-1);min-height:calc(var(--m)*2 + var(--lh)*3 + var(--xs));min-width:128px;overflow:hidden;position:relative;width:128px}body.ltr .card>.thumb{margin-right:0}body.rtl .card>.thumb{margin-left:0}.card>.thumb:after{bottom:0;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);content:"";display:block;font-size:0;position:absolute;top:0;width:10px}body.ltr .card>.thumb:after{right:-10px}body.rtl .card>.thumb:after{left:-10px}body.ltr .card>.thumb,body.ltr .card>.thumb:after{border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .card>.thumb,body.rtl .card>.thumb:after{border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.card>.thumb img,.card>.thumb svg{max-height:128px;-o-object-fit:cover;object-fit:cover;width:100%}body.ltr .card>.cp-icon{margin:0 -4px 0 -2px}body.rtl .card>.cp-icon{margin:0 -2px 0 -4px}.card .card-content,.card .card-content .card-body{display:flex;flex:1;flex-direction:column;gap:var(--xs)}.card .card-content{flex:1 0 0!important;margin:calc((1rem - var(--lh))/2) 0;overflow:hidden;position:relative;--focus-ring:var(--inner-focus-ring)}.card .card-content .card-heading{align-items:center;display:flex;flex-direction:row;gap:5px}.card .card-content .card-heading .status{flex:0 0 10px;margin:0}.card .card-content .card-heading .label{font-weight:600}.card .card-content .card-body:empty{display:none}.card .card-content .card-body>*{--max-lines:2;margin:0;max-height:calc(var(--lh)*var(--max-lines));overflow:hidden;text-wrap:pretty}.card .card-content .card-body .checkbox-preview-label{display:inline;font-style:italic;margin-inline-start:5px}.card>.card-actions-container{align-items:flex-start!important;display:flex;position:relative}.card-grid{display:grid!important;gap:var(--s)!important;grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}.card-grid>li{border-radius:var(--large-border-radius)}.card-grid>li>.card{height:100%;margin:0!important}.lp-editor-container .card-grid{grid-template-columns:minmax(0,1fr)}.context-label,.context-menu-container{align-items:center;border:1px solid var(--medium-hairline-color);border-radius:calc(var(--touch-target-size)/2);color:var(--light-text-color);display:inline-flex;font-size:11px;font-weight:400;height:var(--touch-target-size);padding:0 var(--s);text-decoration:none!important}body.ltr .context-label,body.ltr .context-menu-container{margin-left:var(--xs)}body.rtl .context-label,body.rtl .context-menu-container{margin-right:var(--xs)}body.ltr .context-menu-container{padding-right:0}body.rtl .context-menu-container{padding-left:0}body.ltr .context-menu-container .menubtn:not(.action-btn){margin:0 -1px 0 0}body.rtl .context-menu-container .menubtn:not(.action-btn){margin:0 0 0 -1px}body.ltr .context-menu-container .menubtn:not(.action-btn){padding-right:2px!important}body.rtl .context-menu-container .menubtn:not(.action-btn){padding-left:2px!important}body.ltr .context-menu-container .menubtn:not(.action-btn){border-left:1px solid var(--medium-hairline-color)}body.rtl .context-menu-container .menubtn:not(.action-btn){border-right:1px solid var(--medium-hairline-color)}body.ltr .context-menu-container .menubtn:not(.action-btn){border-radius:0 calc(var(--touch-target-size)/2) calc(var(--touch-target-size)/2) 0}body.rtl .context-menu-container .menubtn:not(.action-btn){border-radius:calc(var(--touch-target-size)/2) 0 0 calc(var(--touch-target-size)/2)}.context-menu-container .menubtn:not(.action-btn):hover{border-color:var(--dark-hairline-color)!important}.context-menu-container>*{display:inline-block}body.ltr .context-menu-container>*{padding-right:var(--s)}body.rtl .context-menu-container>*{padding-left:var(--s)}.context-menu-container .menubtn:not(.action-btn):only-child,.context-menu-container .visually-hidden:first-child+.menubtn:not(.action-btn):last-child{border-left:none!important;border-radius:calc(var(--touch-target-size)/2)!important;margin:0 calc(var(--s)*-1)}.card .checkbox:before,.chip .checkbox:before{box-shadow:none!important}.card .label,.chip .label{align-items:center;display:flex;gap:var(--xs);overflow:hidden}.card .label .label-link,.chip .label .label-link{flex:1 1 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .label .label-link:focus,.chip .label .label-link:focus{box-shadow:var(--inner-focus-ring)}.card .label .segment:after,.chip .label .segment:after{border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;content:"";display:inline-flex!important;display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;top:-2px;width:.4375rem}body.ltr .card .label .segment:after,body.ltr .chip .label .segment:after{margin:0 5px 0 2px}body.rtl .card .label .segment:after,body.rtl .chip .label .segment:after{margin:0 2px 0 5px}body.ltr .card .label .segment:after,body.ltr .chip .label .segment:after{transform:rotate(-45deg)}body.rtl .card .label .segment:after,body.rtl .chip .label .segment:after{transform:rotate(135deg)}.sel .card .label .segment:after,.sel .chip .label .segment:after{border:solid var(--white);border-width:0 .0625rem .0625rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .sel .card .label .segment:after,body.ltr .sel .chip .label .segment:after{transform:rotate(-45deg)}body.rtl .sel .card .label .segment:after,body.rtl .sel .chip .label .segment:after{transform:rotate(135deg)}.card>.card-actions-container>.card-actions,.card>.chip-content>.chip-actions,.chip>.card-actions-container>.card-actions,.chip>.chip-content>.chip-actions{align-items:center;display:flex;flex-direction:row;gap:var(--s);min-height:1rem}.card>.card-actions-container>.card-actions:empty,.card>.chip-content>.chip-actions:empty,.chip>.card-actions-container>.card-actions:empty,.chip>.chip-content>.chip-actions:empty{display:none}.card>.card-actions-container>.card-actions>.status,.card>.chip-content>.chip-actions>.status,.chip>.card-actions-container>.card-actions>.status,.chip>.chip-content>.chip-actions>.status{margin:0}.card>.card-actions-container>.card-actions>.action-btn,.card>.card-actions-container>.card-actions>.move,.card>.chip-content>.chip-actions>.action-btn,.card>.chip-content>.chip-actions>.move,.chip>.card-actions-container>.card-actions>.action-btn,.chip>.card-actions-container>.card-actions>.move,.chip>.chip-content>.chip-actions>.action-btn,.chip>.chip-content>.chip-actions>.move{height:var(--touch-target-size);margin:0 -4px;width:var(--touch-target-size)}.card>.card-actions-container>.card-actions>.action-btn:before,.card>.card-actions-container>.card-actions>.move:before,.card>.chip-content>.chip-actions>.action-btn:before,.card>.chip-content>.chip-actions>.move:before,.chip>.card-actions-container>.card-actions>.action-btn:before,.chip>.card-actions-container>.card-actions>.move:before,.chip>.chip-content>.chip-actions>.action-btn:before,.chip>.chip-content>.chip-actions>.move:before{color:var(--custom-text-color,var(--ui-control-color))}.card>.card-actions-container>.card-actions .action-btn,.card>.chip-content>.chip-actions .action-btn,.chip>.card-actions-container>.card-actions .action-btn,.chip>.chip-content>.chip-actions .action-btn{background-color:transparent}body.ltr .card>.card-actions-container>.card-actions .action-btn:before,body.ltr .card>.chip-content>.chip-actions .action-btn:before,body.ltr .chip>.card-actions-container>.card-actions .action-btn:before,body.ltr .chip>.chip-content>.chip-actions .action-btn:before{margin-right:0!important}body.rtl .card>.card-actions-container>.card-actions .action-btn:before,body.rtl .card>.chip-content>.chip-actions .action-btn:before,body.rtl .chip>.card-actions-container>.card-actions .action-btn:before,body.rtl .chip>.chip-content>.chip-actions .action-btn:before{margin-left:0!important}.card>.card-actions-container>.card-actions .action-btn:active,.card>.card-actions-container>.card-actions .action-btn:hover,.card>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.card>.chip-content>.chip-actions .action-btn:active,.card>.chip-content>.chip-actions .action-btn:hover,.card>.chip-content>.chip-actions .action-btn[aria-expanded=true],.chip>.card-actions-container>.card-actions .action-btn:active,.chip>.card-actions-container>.card-actions .action-btn:hover,.chip>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.chip>.chip-content>.chip-actions .action-btn:active,.chip>.chip-content>.chip-actions .action-btn:hover,.chip>.chip-content>.chip-actions .action-btn[aria-expanded=true]{-webkit-backdrop-filter:brightness(90%);backdrop-filter:brightness(90%)}.card>.card-actions-container>.card-actions .move,.card>.chip-content>.chip-actions .move,.chip>.card-actions-container>.card-actions .move,.chip>.chip-content>.chip-actions .move{margin-top:-3px!important}.card.error .label .label-link,.chip.error .label .label-link{color:var(--error-color)}.element-index .source-path{background-color:var(--gray-050);border-radius:3px;--ui-control-bg-color:var(--light-sel-color);--ui-control-hover-bg-color:#bdcbdb;--ui-control-active-bg-color:#acbed2}.element-index .source-path .chevron-btns{background:#fff;display:inline-flex;position:relative;--ui-control-height:1.875rem}.element-index .source-path .chevron-btns:before{border-top:calc(var(--ui-control-height)/2) solid #f3f7fc;content:"";display:block;font-size:0;height:0;position:absolute;top:0;width:0}body.ltr .element-index .source-path .chevron-btns:before{right:0}body.rtl .element-index .source-path .chevron-btns:before{left:0}body.ltr .element-index .source-path .chevron-btns:before{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .element-index .source-path .chevron-btns:before{border-right:calc(var(--ui-control-height)/2) solid transparent}.element-index .source-path .chevron-btns:after{border-bottom:calc(var(--ui-control-height)/2) solid #f3f7fc;content:"";display:block;font-size:0;position:absolute;top:calc(var(--ui-control-height)/2)}body.ltr .element-index .source-path .chevron-btns:after{right:0}body.rtl .element-index .source-path .chevron-btns:after{left:0}body.ltr .element-index .source-path .chevron-btns:after{border-left:calc(var(--ui-control-height)/2) solid transparent}body.rtl .element-index .source-path .chevron-btns:after{border-right:calc(var(--ui-control-height)/2) solid transparent}.element-index .source-path .chevron-btns .btn{--ui-control-border-radius:3px}.element-index .source-path .btn.settings{box-shadow:0 0 0 2px var(--white)}.element-index.main .source-path{margin:-22px calc(var(--padding)*-1 + 2px) 24px}.elementselectormodal .element-index .source-path{margin-bottom:2px}.element-index.pane .toolbar{background-color:var(--gray-050);border-radius:calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) 0 0;box-shadow:0 1px 0 var(--hairline-color);margin:calc(var(--pane-padding)*-1) calc(var(--pane-padding)*-1) var(--pane-padding)!important;padding:var(--pane-padding);position:relative;z-index:2}.element-index.pane .header{background-color:transparent;border-bottom:1px solid var(--hairline-color);padding-bottom:var(--pane-padding);padding-top:var(--pane-padding)}.element-index.pane .elements{--border-radius:0}.element-index.pane .elements .tableview table.data thead td,.element-index.pane .elements .tableview table.data thead th{border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements .tableview table.data thead td:not(.ordered),.element-index.pane .elements .tableview table.data thead th:not(.ordered){background-color:transparent}.element-index.pane .footer{background:transparent;border-radius:0 0 calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px)!important;border-top:1px solid var(--hairline-color);box-shadow:none}.element-index craft-proxy-scrollbar{margin-inline:calc(var(--xl)*-1);position:sticky;width:calc(100% + var(--xl)*2)}.elements{position:relative}.elements:not(.busy) .update-spinner{display:none}.elements.busy{min-height:72px}.elements.busy:after{background:hsla(0,0%,100%,.75);border-radius:var(--large-border-radius);content:"";display:block;font-size:0;height:100%;left:calc(var(--pane-padding, 24px)*-1);position:absolute;top:0;width:calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));z-index:100}.elements .header{background-color:var(--gray-050);border-radius:var(--border-radius,var(--small-border-radius));box-shadow:none;margin:calc(var(--xl)*-1 + 2px) calc(var(--padding)*-1 + 2px) var(--xl);padding:var(--s)}.elements .header:after{content:""}.elements .header .selectallcontainer{align-items:center;cursor:default;display:flex;gap:5px}.elements .tableview tr.draggee td,.elements .tableview tr.draggee th,.elements .thumbsview li.draggee{opacity:.25}.elements .tableview th .move,.elements .tableview th .toggle{align-items:center;display:flex;height:var(--touch-target-size);justify-content:center;position:absolute;top:50%;transform:translateY(-50%);width:var(--touch-target-size)}body.ltr .elements .tableview th .move,body.ltr .elements .tableview th .toggle{margin-left:calc(var(--touch-target-size)*-1)}body.rtl .elements .tableview th .move,body.rtl .elements .tableview th .toggle{margin-right:calc(var(--touch-target-size)*-1)}.elements .tableview th .move{font-size:11px;text-decoration:none}.elements .tableview th .toggle{border-radius:50%;padding:4px;text-align:center}body.ltr .elements .tableview th .move+.toggle{margin-left:calc(var(--touch-target-size)*-2)}body.rtl .elements .tableview th .move+.toggle{margin-right:calc(var(--touch-target-size)*-2)}.elements .tableview th .enabled-label{margin-left:var(--xs)}.elements .tableview .chip{background-color:transparent}.elements .thumbsview{display:grid;gap:var(--xs);grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.elements .thumbsview li{border-radius:var(--large-border-radius);max-width:226px;position:relative}body.ltr .elements .thumbsview li{margin:0 1px 1px 0}body.rtl .elements .thumbsview li{margin:0 0 1px 1px}.elements .thumbsview li:hover .chip{background-color:var(--gray-050)}.elements .thumbsview li.sel a{cursor:pointer!important}.elements .thumbsview li.sel a:hover{text-decoration:underline}.elements .thumbsview .chip.large{width:100%}.export-form{position:relative}.export-form .spinner{bottom:0;position:absolute}body.ltr .export-form .spinner{right:-24px}body.rtl .export-form .spinner{left:-24px}.structure{position:relative;z-index:1}body.ltr .structure li{padding-left:8px}body.rtl .structure li{padding-right:8px}.structure li.collapsed>ul{display:none}.structure li .add.active,.structure li .row:hover>.icon,.structure li.draghelper>.row .move{opacity:1}.structure li.draghelper>.row .add{opacity:0}.structure li.draghelper>.row .move:before{color:var(--link-color)}.structure li.draginsertion{background-color:var(--link-color)!important;border-radius:1px;height:2px;position:relative}body.ltr .structure li.draginsertion{margin:-1px 0 -1px 8px}body.rtl .structure li.draginsertion{margin:-1px 8px -1px 0}body.ltr .structure li.draginsertion{padding-left:0}body.rtl .structure li.draginsertion{padding-right:0}body.ltr .structure li.draginsertion{border-left:none}body.rtl .structure li.draginsertion{border-right:none}.structure li .toggle{padding:4px;position:relative;z-index:1}body.ltr .structure li .toggle{float:left}body.rtl .structure li .toggle{float:right}body.ltr .structure li .toggle{margin:10px -8px 0 -12px}body.rtl .structure li .toggle{margin:10px -12px 0 -8px}.structure li .row:after{clear:both;content:"";display:block;height:0;visibility:hidden}.structure li .add,.structure li .move{opacity:0;transition:opacity .1s linear}body.ltr .structure li .add,body.ltr .structure li .move{margin:5px 5px 0 0}body.rtl .structure li .add,body.rtl .structure li .move{margin:5px 0 0 5px}.structure li .add{padding:0 5px}.structure li .add:before{color:var(--dark-hairline-color);content:"downangle"}.structure li .add.active:before,.structure li .add:not(.disabled):hover:before{color:var(--link-color)}body.ltr .structure li .checkbox{float:left}body.rtl .structure li .checkbox{float:right}body.ltr .structure li .checkbox{margin:7px 0 0 7px}body.rtl .structure li .checkbox{margin:7px 7px 0 0}body.ltr .structure ul{margin-left:-3px}body.rtl .structure ul{margin-right:-3px}.structure ul li{background-repeat:no-repeat;--background-position-x:0;--background-position-y:-6px;background-position:var(--background-position-x) var(--background-position-y)}body.ltr .structure ul li{padding-left:38px}body.rtl .structure ul li{padding-right:38px}body.ltr .structure ul li{background-image:url(../images/branch.png)}body.rtl .structure ul li{--background-position-x:100%;background-image:url(../images/branch_rtl.png)}body.ltr .structure ul li:not(:last-child):not(.last){padding-left:37px}body.rtl .structure ul li:not(:last-child):not(.last){padding-right:37px}body.ltr .structure ul li:not(:last-child):not(.last){border-left:1px solid var(--gray-200)}body.rtl .structure ul li:not(:last-child):not(.last){border-right:1px solid var(--gray-200)}body.ltr .structure ul li:not(:last-child):not(.last){--background-position-x:-1px}body.rtl .structure ul li:not(:last-child):not(.last){--background-position-x:calc(100% + 1px)}body.ltr .structure ul li.draginsertion{margin-left:38px}body.rtl .structure ul li.draginsertion{margin-right:38px}.structure .row.draghover .chip{border-radius:15px;box-shadow:inset 0 0 0 2px var(--link-color);z-index:2}.structure .row.droptarget{border-radius:5px;box-shadow:inset 0 0 0 2px var(--link-color)}.componentselect .components:not(:empty)+.flex,.elementselect .elements:not(:empty)+.flex{margin-top:var(--s)}.elementselect{min-height:34px;position:relative}.elementselect .btn,.elementselect .flex{clear:both}.elementselect .structure .chip{margin-top:var(--xs)}body.ltr .elementselect .structure>li{padding-left:0}body.rtl .elementselect .structure>li{padding-right:0}body.ltr .elementselect .structure ul{margin-left:14px}body.rtl .elementselect .structure ul{margin-right:14px}.elementselect .structure ul li{--background-position-y:0}.nested-element-cards{display:flex;flex-direction:column;gap:var(--s)}.nested-element-cards>.pane{margin:0}table.editable{border:1px solid var(--gray-200);border-radius:var(--large-border-radius)}table.editable td.action,table.editable td.heading,table.editable th{background-color:var(--gray-050);color:var(--medium-text-color);font-weight:400}table.editable tbody tr th,table.editable thead tr th{padding:6px 10px}table.editable thead tr th{border-bottom:1px solid var(--hairline-color)}body.ltr table.editable thead tr th.has-info{padding-right:calc(15px + 1em)}body.rtl table.editable thead tr th.has-info{padding-left:calc(15px + 1em)}table.editable thead tr th span.info{margin-left:5px;position:absolute}table.editable tbody tr:not(:first-child) td,table.editable tbody tr:not(:first-child) th{border-top:1px solid var(--hairline-color)}body.ltr table.editable tbody tr:last-child td:first-child{border-bottom-left-radius:var(--large-border-radius)}body.rtl table.editable tbody tr:last-child td:first-child{border-bottom-right-radius:var(--large-border-radius)}body.ltr table.editable tbody tr:last-child td:first-child input.text,body.ltr table.editable tbody tr:last-child td:first-child textarea{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}body.rtl table.editable tbody tr:last-child td:first-child input.text,body.rtl table.editable tbody tr:last-child td:first-child textarea{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}body.ltr table.editable tbody tr td:not(:first-child),body.ltr table.editable tbody tr th~td:not(.hidden)~td{border-left:1px solid var(--hairline-color)}body.rtl table.editable tbody tr td:not(:first-child),body.rtl table.editable tbody tr th~td:not(.hidden)~td{border-right:1px solid var(--hairline-color)}body.ltr table.editable tbody tr th~td:not(:first-child){border-left:1px solid #dbdddf}body.rtl table.editable tbody tr th~td:not(:first-child){border-right:1px solid #dbdddf}table.editable tbody tr td{background-color:var(--white);padding:4px 10px;text-align:center;vertical-align:top}table.editable tbody tr td.focus{box-shadow:inset 0 0 0 1px var(--hairline-color);position:relative}table.editable tbody tr td.textual{padding:0}table.editable tbody tr td.textual .editable-table-preview{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual .editable-table-preview{text-align:left}body.rtl table.editable tbody tr td.textual .editable-table-preview{text-align:right}table.editable tbody tr td.textual .editable-table-preview+textarea{height:0;min-height:0;opacity:0;padding-bottom:0;padding-top:0}table.editable tbody tr td.textual textarea{resize:none}table.editable tbody tr td.textual pre{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual pre{text-align:left}body.rtl table.editable tbody tr td.textual pre{text-align:right}table.editable tbody tr td.lightswitch-cell{padding-bottom:9px;padding-top:9px}table.editable tbody tr td.lightswitch-cell .lightswitch{display:block;margin:0 auto}table.editable tbody tr td.checkbox-cell{padding-bottom:10px;padding-top:10px}table.editable tbody tr td.checkbox-cell .checkbox-wrapper{display:block;height:16px;margin:-2px auto 0;width:16px}table.editable tbody tr td.error{box-shadow:inset 0 0 0 1px var(--error-color)}table.editable tbody tr td.disabled{opacity:1;position:relative}table.editable tbody tr td.disabled:after{background-color:rgba(243,247,252,.75);content:"";font-size:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}table.editable tbody tr td.action{padding:4px 7px}body.ltr table.editable tbody tr td.action+td.action{border-left:none}body.rtl table.editable tbody tr td.action+td.action{border-right:none}body.ltr table.editable tbody tr td.action+td.action{padding-left:0}body.rtl table.editable tbody tr td.action+td.action{padding-right:0}table.editable tbody tr td .flex>*{margin-bottom:0}table.editable tbody .editable-table-preview,table.editable tbody input.text,table.editable tbody pre,table.editable tbody textarea,table.editable tbody textarea.text{background-color:transparent;border:none;border-radius:0;box-shadow:none;box-sizing:border-box;display:block;line-height:20px;overflow:hidden;padding:7px 10px;transition:none;width:100%}table.editable tbody .color-container{display:block;position:relative}table.editable tbody .color-container .color-input,table.editable tbody .color-container>.color{margin-bottom:0}table.editable tbody .color-container>.color{position:absolute;top:10px;z-index:1}body.ltr table.editable tbody .color-container>.color{left:10px}body.rtl table.editable tbody .color-container>.color{right:10px}body.ltr table.editable tbody .color-container .color-hex-indicator{left:32px}body.rtl table.editable tbody .color-container .color-hex-indicator{right:32px}body.ltr table.editable tbody .color-container .color-input{padding-left:calc(32px + 1em)}body.rtl table.editable tbody .color-container .color-input{padding-right:calc(32px + 1em)}table.editable tbody .datewrapper,table.editable tbody .timewrapper{display:block;width:calc(100% - 29px)}table.editable tbody .datewrapper .text+div[data-icon],table.editable tbody .timewrapper .text+div[data-icon]{top:6px}body.ltr table.editable tbody .datewrapper .text+div[data-icon],body.ltr table.editable tbody .timewrapper .text+div[data-icon]{left:10px}body.rtl table.editable tbody .datewrapper .text+div[data-icon],body.rtl table.editable tbody .timewrapper .text+div[data-icon]{right:10px}table.editable:not(.static) td.textual{cursor:text}table.editable+.btn.add{display:block;width:100%}table.editable:not(.hidden)+.btn.add{border-radius:0 0 var(--medium-border-radius) var(--medium-border-radius);border-top-width:0}.border-box+.buttons,.shadow-box+.buttons{margin-top:7px}body.ltr .tree ul,body.ltr ul.tree{margin-left:20px}body.rtl .tree ul,body.rtl ul.tree{margin-right:20px}body.ltr .tree li .toggle{margin:7px 0 0 -15px}body.rtl .tree li .toggle{margin:7px -15px 0 0}.status{background-clip:border-box;border:1px solid transparent;border-radius:100%;box-sizing:border-box;display:inline-block;flex:0 0 auto;height:.75rem;position:relative;width:.75rem}body.ltr .status{margin-right:10px}body.rtl .status{margin-left:10px}body.use-shapes .status.all{background-image:linear-gradient(30deg,#184cef,#e5422b);rotate:45deg}body.use-shapes .status.pending{background-color:transparent;border-color:transparent transparent var(--pending-color) transparent;border-radius:1px;border-style:solid;border-width:0 5px 10px}body.use-shapes .status.all,body.use-shapes .status.expired,body.use-shapes .status.off,body.use-shapes .status.suspended{border-radius:2px;transform:scale(90%)}.status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:var(--ui-control-color)}.status.all{background-image:linear-gradient(60deg,#184cef,#e5422b);background-origin:border-box}.status.active,.status.enabled,.status.live,.status.on{background-color:var(--enabled-color)}.bg-red,.status.expired,.status.off,.status.red,.status.suspended{background-color:var(--disabled-color)}.status.warning{background-color:var(--warning-color)}.bg-orange,.status.orange,.status.pending{background-color:var(--pending-color)}.bg-amber,.status.amber{background-color:var(--amber-500)}.bg-yellow,.status.yellow{background-color:var(--yellow-500)}.bg-lime,.status.lime{background-color:var(--lime-500)}.bg-green,.status.green{background-color:var(--green-600)}.bg-emerald,.status.emerald{background-color:var(--emerald-500)}.bg-teal,.bg-turquoise,.status.teal,.status.turquoise{background-color:var(--teal-500)}.bg-cyan,.status.cyan{background-color:var(--cyan-500)}.bg-sky,.status.sky{background-color:var(--sky-500)}.bg-blue,.status.blue{background-color:var(--blue-600)}.bg-indigo,.status.indigo{background-color:var(--indigo-500)}.bg-violet,.status.violet{background-color:var(--violet-500)}.bg-purple,.status.purple{background-color:var(--purple-500)}.bg-fuchsia,.status.fuchsia{background-color:var(--fuchsia-500)}.bg-pink,.status.pink{background-color:var(--pink-500)}.bg-rose,.status.rose{background-color:var(--rose-500)}.status.light{background-color:var(--gray-100)}.bg-white,.status.white{background-color:var(--white)}.bg-black,.status.black{background-color:var(--gray-800)}.bg-gray,.bg-grey,.status.gray,.status.grey{background-color:var(--gray-300)}.status.disabled,.status.white{opacity:1}.cp-icon.warning,.icon.warning,[data-icon-after].warning,[data-icon].warning{--icon-color:var(--warning-color)}.cp-icon.red,.icon.red,[data-icon-after].red,[data-icon].red{--icon-color:var(--disabled-color)}.cp-icon.orange,.icon.orange,[data-icon-after].orange,[data-icon].orange{--icon-color:var(--pending-color)}.cp-icon.amber,.icon.amber,[data-icon-after].amber,[data-icon].amber{--icon-color:var(--amber-500)}.cp-icon.yellow,.icon.yellow,[data-icon-after].yellow,[data-icon].yellow{--icon-color:var(--yellow-500)}.cp-icon.lime,.icon.lime,[data-icon-after].lime,[data-icon].lime{--icon-color:var(--lime-500)}.cp-icon.green,.icon.green,[data-icon-after].green,[data-icon].green{--icon-color:var(--green-500)}.cp-icon.emerald,.icon.emerald,[data-icon-after].emerald,[data-icon].emerald{--icon-color:var(--emerald-500)}.cp-icon.teal,.icon.teal,[data-icon-after].teal,[data-icon].teal{--icon-color:var(--teal-500)}.cp-icon.cyan,.icon.cyan,[data-icon-after].cyan,[data-icon].cyan{--icon-color:var(--cyan-500)}.cp-icon.sky,.icon.sky,[data-icon-after].sky,[data-icon].sky{--icon-color:var(--sky-500)}.cp-icon.blue,.icon.blue,[data-icon-after].blue,[data-icon].blue{--icon-color:var(--blue-600)}.cp-icon.indigo,.icon.indigo,[data-icon-after].indigo,[data-icon].indigo{--icon-color:var(--indigo-500)}.cp-icon.violet,.icon.violet,[data-icon-after].violet,[data-icon].violet{--icon-color:var(--violet-500)}.cp-icon.purple,.icon.purple,[data-icon-after].purple,[data-icon].purple{--icon-color:var(--purple-500)}.cp-icon.fuchsia,.icon.fuchsia,[data-icon-after].fuchsia,[data-icon].fuchsia{--icon-color:var(--fuchsia-500)}.cp-icon.pink,.icon.pink,[data-icon-after].pink,[data-icon].pink{--icon-color:var(--pink-500)}.cp-icon.rose,.icon.rose,[data-icon-after].rose,[data-icon].rose{--icon-color:var(--rose-500)}.cp-icon.white,.icon.white,[data-icon-after].white,[data-icon].white{--icon-color:var(--white)}.cp-icon.black,.icon.black,[data-icon-after].black,[data-icon].black{--icon-color:var(--gray-800)}.cp-icon.gray,.icon.gray,[data-icon-after].gray,[data-icon].gray{--icon-color:var(--gray-300)}.amber[data-icon-after]:after,.amber[data-icon]:before,.black[data-icon-after]:after,.black[data-icon]:before,.blue[data-icon-after]:after,.blue[data-icon]:before,.cyan[data-icon-after]:after,.cyan[data-icon]:before,.emerald[data-icon-after]:after,.emerald[data-icon]:before,.fuchsia[data-icon-after]:after,.fuchsia[data-icon]:before,.gray[data-icon-after]:after,.gray[data-icon]:before,.green[data-icon-after]:after,.green[data-icon]:before,.indigo[data-icon-after]:after,.indigo[data-icon]:before,.lime[data-icon-after]:after,.lime[data-icon]:before,.orange[data-icon-after]:after,.orange[data-icon]:before,.pink[data-icon-after]:after,.pink[data-icon]:before,.purple[data-icon-after]:after,.purple[data-icon]:before,.red[data-icon-after]:after,.red[data-icon]:before,.rose[data-icon-after]:after,.rose[data-icon]:before,.sky[data-icon-after]:after,.sky[data-icon]:before,.teal[data-icon-after]:after,.teal[data-icon]:before,.violet[data-icon-after]:after,.violet[data-icon]:before,.warning[data-icon-after]:after,.warning[data-icon]:before,.white[data-icon-after]:after,.white[data-icon]:before,.yellow[data-icon-after]:after,.yellow[data-icon]:before{color:var(--icon-color)!important}.condition-container{margin:24px 0}.condition-footer,.condition-rule{padding:7px}.condition-footer{border:1px dashed var(--medium-hairline-color);border-radius:var(--large-border-radius)}.condition:not(:empty)+.condition-footer{border-top-left-radius:0;border-top-right-radius:0;border-top-width:0}.condition-footer .spinner:not(.loading){display:none}.condition-rule{background-color:var(--gray-050);border:1px solid var(--hairline-color);margin:0}.condition-rule:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.condition-rule+.condition-rule{border-top-width:0}.condition-rule>.rule-actions,.condition-rule>.rule-move{margin-top:5px}.condition-rule>.rule-body .lightswitch{display:block;margin-top:6px}.condition-rule>.rule-body .selectize{min-width:100px}.condition-rule>.rule-body .text.fullwidth{max-width:100%;min-width:100px}.progressbar{border:2px solid var(--gray-700);border-radius:6px;left:20%;padding:2px;position:absolute;width:60%;z-index:1000}.progressbar-inner{background-color:var(--gray-700);border-radius:2px;height:4px}.progressbar:not(.pending) .progressbar-inner{transition:width .1s linear;width:0}.progressbar.pending .progressbar-inner{animation-duration:.25s;animation-iteration-count:infinite;animation-timing-function:linear}body.ltr .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(135deg,var(--white),var(--white) 8.8388347649px,var(--gray-700) 8.8388347649px,var(--gray-700) 17.6776695297px)}body.rtl .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(45deg,var(--white),var(--white) 8.8388347649px,var(--gray-700) 8.8388347649px,var(--gray-700) 17.6776695297px)}body.ltr .progressbar.pending .progressbar-inner{animation-name:pendingprogress-ltr}body.rtl .progressbar.pending .progressbar-inner{animation-name:pendingprogress-rtl}@keyframes pendingprogress-ltr{0%{background-position:0}to{background-position:25px}}@keyframes pendingprogress-rtl{0%{background-position:0}to{background-position:-25px}}.elementselect .progress-shade{background-color:hsla(0,0%,100%,.8);display:none;height:100%;position:absolute;top:0;width:100%}body.ltr .elementselect .progress-shade{left:0}body.rtl .elementselect .progress-shade{right:0}.elementselect.uploading{position:relative}.elementselect.uploading .progress-shade{display:block;z-index:2}.missing-component{background-color:var(--gray-050)!important;max-width:400px;padding:7px 10px!important}.missing-component .error{margin:0}.missing-component .install-plugin{border-top:1px solid var(--hairline-color);margin:7px 0 -7px;position:relative}body.ltr .missing-component .install-plugin{padding:10px 0 10px 40px}body.rtl .missing-component .install-plugin{padding:10px 40px 10px 0}.missing-component .install-plugin .icon{height:32px;position:absolute;top:calc(50% - 16px);width:32px}body.ltr .missing-component .install-plugin .icon{left:0}body.rtl .missing-component .install-plugin .icon{right:0}.missing-component .install-plugin .icon img,.missing-component .install-plugin .icon svg{height:100%;width:100%}.missing-component .install-plugin h3{flex:1;margin:8px 0!important}.missing-component .install-plugin .btn{margin:0}.pane{--pane-padding:var(--xl);--border:1px solid var(--hairline-color);background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin:14px 0;padding:var(--pane-padding);position:relative;word-wrap:break-word;box-sizing:border-box}.pane:focus{box-shadow:var(--focus-ring)}#content .pane,.pane .pane{background-color:var(--gray-050);border:1px solid var(--hairline-color);box-shadow:none}.pane.dashed{border:1px dashed var(--medium-hairline-color)!important}.pane.dashed,.pane.hairline{background-color:transparent!important;box-shadow:none}.pane.hairline{border:1px solid rgba(96,125,159,.25)!important}.pane.no-border{border:none!important}.pane.padding-xs{--pane-padding:var(--xs)}.pane.padding-s{--pane-padding:var(--s)}.pane.padding-m{--pane-padding:var(--m)}.pane.padding-l{--pane-padding:var(--l)}.pane.loading{min-height:200px}.pane.loading:after{content:"";display:block;font-size:0;height:100%;left:-24px;position:absolute;top:0;width:calc(100% + 48px)}.pane-header{background-color:var(--gray-050);border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;box-shadow:inset 0 -1px 0 0 rgba(154,165,177,.25);box-sizing:border-box;margin:calc(var(--xl)*-1) var(--neg-padding) var(--xl);min-height:45px;padding:5px var(--xl) 6px}.pane-header .header-btn{height:1.875rem;margin:2px 0;padding-left:0;padding-right:0;width:1.875rem}.pane-header .header-btn:not(:hover):not(:active):not(.active){background-color:transparent}.pane-header .header-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}.pane-header .spinner{margin:0!important}.pane-tabs{align-items:center;display:flex;flex-direction:row;margin:-5px calc(var(--padding)*-1) -6px}.pane-tabs:first-child{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;overflow:hidden}.pane-tabs [role=tablist]{display:flex;flex:1;flex-direction:row;overflow-x:auto;scrollbar-width:none}.pane-tabs [role=tablist]::-webkit-scrollbar{display:none}body.ltr .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(270deg,transparent,#000 24px);mask-image:linear-gradient(270deg,transparent,#000 24px)}body.rtl .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px);mask-image:linear-gradient(90deg,transparent,#000 24px)}.pane-tabs [role=tablist] [role=tab]{--tab-label-color:var(--light-text-color)}.pane-tabs [role=tablist] [role=tab].error{--highlight-color:var(--error-color)!important;--tab-label-color:var(--error-color)!important}.pane-tabs [role=tablist] [role=tab],.pane-tabs [role=tablist] [role=tab] .tab-label{border-radius:2px 2px 0 0}.pane-tabs [role=tablist] [role=tab] .tab-label{align-items:center;display:flex;flex-direction:row;height:45px;padding:0 var(--padding);position:relative;white-space:nowrap}.pane-tabs [role=tablist] [role=tab]:hover{text-decoration:none}body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible,body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus{box-shadow:none}body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible .tab-label,body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus .tab-label{box-shadow:var(--inner-focus-ring)}.pane-tabs [role=tablist] [role=tab]:not(.sel){color:var(--custom-text-color,var(--tab-label-color))}.pane-tabs [role=tablist] [role=tab]:not(.sel):hover{-webkit-backdrop-filter:brightness(95%);backdrop-filter:brightness(95%)}.pane-tabs [role=tablist] [role=tab].sel{--highlight-color:var(--gray-500);--tab-label-color:var(--text-color);background-color:var(--white)!important;box-shadow:inset 0 2px 0 var(--custom-text-color,var(--highlight-color)),0 0 0 1px rgba(51,64,77,.1),0 2px 12px var(--custom-sel-tab-shadow-color,var(--gray-200));color:var(--tab-label-color);cursor:default;position:relative;z-index:1}body.ltr .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-left:4px}body.rtl .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-right:4px}body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-left-radius:var(--large-border-radius)}body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-right-radius:var(--large-border-radius)}.pane-tabs .menubtn{margin:0 var(--xl)}.pane-tabs .menubtn.error span[data-icon]{margin-right:2px}.details{--spacing:var(--l);padding:0 var(--padding) var(--spacing)}.details .field,.details .meta,.details hr{margin-left:var(--neg-padding);margin-right:var(--neg-padding)}.details .meta{margin-bottom:var(--spacing)}.details .meta:not(.read-only){background-color:var(--gray-050)!important}.details .meta.read-only{color:var(--medium-text-color)}.details .meta.read-only>.data{min-height:auto}.details .meta.read-only>.data>.heading,.details .meta.read-only>.data>.value{padding:6px 0}.details .meta.read-only>.data:first-child>.heading,.details .meta.read-only>.data:first-child>.value{padding-top:0}.details .meta.read-only>.data:last-child>.heading,.details .meta.read-only>.data:last-child>.value{padding-bottom:0}.details .meta.warning{background-color:var(--yellow-050)!important;box-shadow:0 0 0 1px var(--yellow-300),0 2px 12px rgba(205,216,228,.5);color:var(--text-color)!important;padding-bottom:var(--m);padding-top:var(--m)}.details .meta.warning p{margin-bottom:5px}.details .meta.warning .btn{background-color:var(--yellow-300)}.details .meta.warning .btn:focus,.details .meta.warning .btn:hover{background-color:#fcd815}.details .meta.warning .btn:active,.details .meta.warning .btn[aria-expanded=true]{background-color:#f5ce03}.details .meta>.data,.details .meta>.field{margin:0 var(--neg-padding)!important}.details .meta>.data>.heading,.details .meta>.data>.heading>label,.details .meta>.field>.heading,.details .meta>.field>.heading>label{color:var(--gray-600)}body.ltr .details .meta>.field>.status-badge{left:0}body.rtl .details .meta>.field>.status-badge{right:0}.details .meta .text::-moz-placeholder{color:var(--gray-500)}.details .meta .text:-ms-input-placeholder{color:var(--gray-500)}.details .meta .datewrapper .text+div[data-icon],.details .meta .text::placeholder,.details .meta .timewrapper .text+div[data-icon]{color:var(--gray-500)}body.ltr .details .meta .ui-datepicker{margin:0 0 0 -8px}body.rtl .details .meta .ui-datepicker{margin:0 -8px 0 0}.details hr{border-top-color:var(--hairline-color);margin:var(--spacing) 0}.details input::-moz-placeholder,.details textarea::-moz-placeholder{color:var(--gray-500)}.details input:-ms-input-placeholder,.details textarea:-ms-input-placeholder{color:var(--gray-500)}.details input::placeholder,.details textarea::placeholder{color:var(--gray-500)}.details .text{background-color:transparent!important;resize:none}.details>.field>.heading>label,.details>fieldset>legend{color:var(--gray-600);font-weight:400;margin-top:0}.details>fieldset{margin:0 0 var(--spacing)}.details>fieldset>legend{margin-bottom:5px}.details>.field{margin:0 0 var(--spacing)}.details>.field>.heading{margin-top:0}.details>.field>.input>.text.fullwidth{background-color:var(--gray-050)!important;border:none;margin:0 var(--neg-padding);padding-left:var(--padding);padding-right:var(--padding);width:calc(100% + var(--padding) + var(--padding))}.details>.text{border-radius:var(--large-border-radius);margin-bottom:var(--spacing)}.details>.text:not(:focus){border-color:rgba(96,125,159,.4)}.meta{overflow:visible;padding:0 var(--padding)}.meta>.data,.meta>.field,.meta>.flex-fields>.data,.meta>.flex-fields>.field{align-items:center;box-sizing:border-box;display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 var(--neg-padding)!important;min-height:44px;padding:0 var(--padding);transition:padding-left .1s linear,padding-right .1s linear}body.ltr .meta>.data.nested,body.ltr .meta>.field.nested,body.ltr .meta>.flex-fields>.data.nested,body.ltr .meta>.flex-fields>.field.nested{padding-left:38px}body.rtl .meta>.data.nested,body.rtl .meta>.field.nested,body.rtl .meta>.flex-fields>.data.nested,body.rtl .meta>.flex-fields>.field.nested{padding-right:38px}.meta>.data.add,.meta>.field.add,.meta>.flex-fields>.data.add,.meta>.flex-fields>.field.add{background-color:#ebf2fa}.meta>.data.add:before,.meta>.field.add:before,.meta>.flex-fields>.data.add:before,.meta>.flex-fields>.field.add:before{font-family:Craft;position:absolute;width:31px;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"plus";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .meta>.data.add:before,body.ltr .meta>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before{left:0}body.rtl .meta>.data.add:before,body.rtl .meta>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before{right:0}body.ltr .meta>.data.add:before,body.ltr .meta>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before{text-align:right}body.rtl .meta>.data.add:before,body.rtl .meta>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before{text-align:left}.meta>.data.add .input,.meta>.field.add .input,.meta>.flex-fields>.data.add .input,.meta>.flex-fields>.field.add .input{width:100%}.meta>.data>.heading,.meta>.field>.heading,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading{margin:0}@media screen and (min-width:400px){.meta>.data>.heading,.meta>.field>.heading,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading{flex:0 0 104px;line-height:18px}body.ltr .meta>.data>.heading,body.ltr .meta>.field>.heading,body.ltr .meta>.flex-fields>.data>.heading,body.ltr .meta>.flex-fields>.field>.heading{margin-right:var(--s)}body.rtl .meta>.data>.heading,body.rtl .meta>.field>.heading,body.rtl .meta>.flex-fields>.data>.heading,body.rtl .meta>.flex-fields>.field>.heading{margin-left:var(--s)}}.meta>.data.lightswitch-field>.heading,.meta>.field.lightswitch-field>.heading,.meta>.flex-fields>.data.lightswitch-field>.heading,.meta>.flex-fields>.field.lightswitch-field>.heading{flex:1}.meta>.data>.input .flex,.meta>.field>.input .flex,.meta>.flex-fields>.data>.input .flex,.meta>.flex-fields>.field>.input .flex{flex-wrap:nowrap}.meta>.data>.input .flex>*,.meta>.field>.input .flex>*,.meta>.flex-fields>.data>.input .flex>*,.meta>.flex-fields>.field>.input .flex>*{margin-bottom:0}.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding-top:var(--s)}@media screen and (min-width:400px){.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding:12px 0}}.meta>.field>.heading>.copytextbtn,.meta>.flex-fields>.field>.heading>.copytextbtn{display:none}.meta>.data>.heading,.meta>.flex-fields>.data>.heading{padding:var(--s) 0}.meta>.data>.heading,.meta>.field>.heading>label,.meta>.flex-fields>.data>.heading,.meta>.flex-fields>.field>.heading>label{color:var(--medium-text-color)}.meta>.data>.value,.meta>.field>.input,.meta>.flex-fields>.data>.value,.meta>.flex-fields>.field>.input{padding:5px 0;width:100%}@media screen and (min-width:400px){.meta>.data>.value,.meta>.field>.input,.meta>.flex-fields>.data>.value,.meta>.flex-fields>.field>.input{width:calc(100% - 112px)}}.meta>.data>.value,.meta>.flex-fields>.data>.value{align-items:center;display:flex}.meta>.data>.value>[data-icon=draft],.meta>.flex-fields>.data>.value>[data-icon=draft]{margin-top:-2px}body.ltr .meta>.data>.value>[data-icon=draft],body.ltr .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-right:8px}body.rtl .meta>.data>.value>[data-icon=draft],body.rtl .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-left:8px}.meta>.field.lightswitch-field>.input,.meta>.flex-fields>.field.lightswitch-field>.input{flex:0;width:auto}.meta>.field.has-errors,.meta>.flex-fields>.field.has-errors{border:1px solid var(--error-color)!important}.meta>.field.has-errors:first-child,.meta>.flex-fields>.field.has-errors:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.meta>.field.has-errors:last-child,.meta>.flex-fields>.field.has-errors:last-child{border-bottom-left-radius:var(--large-border-radius);border-bottom-right-radius:var(--large-border-radius)}.meta>.field.has-errors+.field,.meta>.flex-fields>.field.has-errors+.field{border-top:none!important}.meta>.field>.heading>label,.meta>.field>.heading>legend,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.field>.heading>legend{font-weight:400}.meta>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.field>.input>.datewrapper>.text,.meta>.field>.input>.flex>.text,.meta>.field>.input>.flex>.textwrapper>.text,.meta>.field>.input>.text,.meta>.field>.input>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datewrapper>.text,.meta>.flex-fields>.field>.input>.flex>.text,.meta>.flex-fields>.field>.input>.flex>.textwrapper>.text,.meta>.flex-fields>.field>.input>.text,.meta>.flex-fields>.field>.input>.timewrapper>.text{background-color:transparent;border:none!important;border-radius:0;display:block;margin:-5px 0;padding:12px 0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{background-color:transparent}body.ltr .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon]{left:0}body.rtl .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon]{right:0}.meta>.field>.input>.datetimewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper{gap:0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper{width:55%}.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{width:45%}body.ltr .meta>.field>.input>.datetimewrapper>.clear-btn,body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-right:-24px}body.rtl .meta>.field>.input>.datetimewrapper>.clear-btn,body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-left:-24px}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{display:block;width:100%}.meta>.field>ul.errors,.meta>.flex-fields>.field>ul.errors{list-style-type:none;margin:0;padding:0 0 6px;width:100%}body.ltr .meta>.field>.clear-btn,body.ltr .meta>.flex-fields>.field>.clear-btn{margin-right:var(--neg-padding)}body.rtl .meta>.field>.clear-btn,body.rtl .meta>.flex-fields>.field>.clear-btn{margin-left:var(--neg-padding)}.meta>.field:not(:first-child):not(.first-child),.meta>.flex-fields+.field:not(.first-child){border-top:1px solid var(--hairline-color)}.meta>.flex-fields blockquote.note,.meta>.flex-fields h2{background-color:#ebf2fa;margin:0 -24px!important;padding:14px 24px}.meta>.flex-fields blockquote.note{border:none;border-radius:0}.meta>.flex-fields hr{margin:0 -24px}.meta>.field>.input>.select{background-color:transparent;border-radius:0;box-shadow:none;display:block;margin:calc(var(--s)*-1) 0;width:100%}body.ltr .meta>.field>.input>.select:after{right:0}body.rtl .meta>.field>.input>.select:after{left:0}.meta>.field>.input>.select+.spinner{position:absolute;top:calc(50% - 17px)}body.ltr .meta>.field>.input>.select+.spinner{right:-24px}body.rtl .meta>.field>.input>.select+.spinner{left:-24px}.meta>.field>.input>.select select{background-color:transparent;width:100%}body.ltr .meta>.field>.input>.select select{padding:var(--s) 12px var(--s) 0}body.rtl .meta>.field>.input>.select select{padding:var(--s) 0 var(--s) 12px}.meta>.field>.input>.custom-select{background-color:transparent;border-radius:0;box-shadow:none;display:block;margin:calc(var(--s)*-1) 0;width:100%}.meta>.field>.input>.custom-select .menubtn:not(.action-btn){background-color:transparent;justify-content:start;width:100%}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-left:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-right:0}.meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{position:absolute;top:calc(50% - 5px)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{right:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{left:0}.meta>.field>.input>.custom-select .label{max-width:100%;overflow:hidden;text-overflow:ellipsis}.body{position:relative}.hud,.modal,.slideout,.slideout-container{box-sizing:border-box;z-index:100}.hud,.modal{background-color:#fff;border-radius:5px;box-shadow:0 25px 100px rgba(31,41,51,.5)!important}.slideout-shade{opacity:0;transition:opacity .25s linear}.slideout-shade.so-visible{opacity:1}.slideout-container{height:100vh;height:-webkit-fill-available;left:0;pointer-events:none;position:fixed;top:0;width:100vw}.slideout-container.so-lp{height:calc(100vh - var(--m)*2);left:var(--m);position:absolute;top:var(--m);width:calc(100% - var(--m)*2)}body.has-debug-toolbar .slideout-container{height:calc(100vh - 42px)}.slideout{background-color:var(--white);box-shadow:0 0 0 1px rgba(123,135,147,.25),0 25px 100px rgba(31,41,51,.5)!important;container-type:inline-size;display:flex;flex-direction:column;overflow:hidden;padding:24px var(--padding);pointer-events:all;position:absolute}.slideout.so-lp,.slideout.so-mobile{height:100%!important;left:0;transition:top .25s linear;width:100%!important;will-change:top}.slideout.so-mobile{--padding:14px;--neg-padding:-14px}body.ltr .slideout:not(.so-mobile){border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .slideout:not(.so-mobile){border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.slideout:not(.so-mobile):not(.so-lp){height:100%;top:0;width:55%}@media screen and (prefers-reduced-motion:no-preference){body.ltr .slideout:not(.so-mobile):not(.so-lp){transition:left .25s linear;will-change:left}body.rtl .slideout:not(.so-mobile):not(.so-lp){transition:right .25s linear;will-change:right}}.slideout>.pane-header{padding-left:var(--padding);padding-right:var(--padding);z-index:2}.slideout>.pane-header>.so-toolbar{align-items:center;display:flex;flex-direction:row;gap:var(--xs);min-height:28px}.slideout>.pane-header>.so-toolbar>.pane-tabs{flex:1;width:1px}body.ltr .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-right:0}body.rtl .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-left:0}.slideout>.so-body{flex:1;margin:-24px var(--neg-padding);overflow:hidden auto;position:relative}.slideout>.so-body:not(:last-child){margin-bottom:0}.slideout>.so-body>h1:not(:last-child){border-bottom:1px solid var(--hairline-color);padding-bottom:var(--s)}.slideout>.so-body.so-full-details,.slideout>.so-body>.so-sidebar{background-color:var(--gray-100)!important}.slideout>.so-body:not(.so-full-details){padding:24px var(--padding)}.slideout>.so-body.so-full-details>.so-content>.details,.slideout>.so-body>.so-sidebar{box-sizing:border-box;padding:0 var(--padding) var(--spacing)}.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container,.slideout>.so-body>.so-sidebar>.preview-thumb-container{height:auto;margin:0 var(--neg-padding);min-height:54px}.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container+.pane-header,.slideout>.so-body>.so-sidebar>.preview-thumb-container+.pane-header{border-radius:0}.slideout>.so-body.so-full-details>.so-content>.details .image-actions.is-mobile,.slideout>.so-body>.so-sidebar .image-actions.is-mobile{margin:calc(var(--spacing)/2) 0 var(--spacing)}.slideout>.so-body.so-full-details>.so-content>.details>.meta.read-only:first-child,.slideout>.so-body>.so-sidebar>.meta.read-only:first-child{margin-top:var(--padding)}.slideout>.so-body.so-full-details>.so-content>.details>.meta.warning,.slideout>.so-body>.so-sidebar>.meta.warning{border-bottom:1px solid var(--yellow-300);box-shadow:none}.slideout>.so-body.so-full-details>.so-content>.details>.field>.input>.text.fullwidth,.slideout>.so-body>.so-sidebar>.field>.input>.text.fullwidth{border-radius:0}.slideout>.so-body.so-full-details>.so-content>.details .notes,.slideout>.so-body>.so-sidebar .notes{padding-bottom:var(--m);padding-top:var(--m)}.slideout>.so-body>.so-sidebar{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);height:100%;max-width:100%;overflow:hidden auto;position:absolute;top:0;width:350px;z-index:1}.slideout>.so-body>.so-sidebar:focus{box-shadow:var(--focus-ring)}body.ltr .slideout>.so-body>.so-sidebar{transition:right .25s linear}body.rtl .slideout>.so-body>.so-sidebar{transition:left .25s linear}.slideout>.so-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-wrap:wrap;gap:var(--s);justify-content:space-between;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);position:relative;z-index:3}.slideout>.so-footer:focus{box-shadow:var(--focus-ring)}.slideout>.so-footer>.so-extra{border-bottom:1px solid var(--hairline-color);flex:0 0 100%;margin:0 var(--neg-padding);padding:0 var(--padding) 8px}@container (width > 700px){.slideout.showing-sidebar .so-body{display:flex;flex-direction:row;overflow:hidden;padding:0}.slideout.showing-sidebar .so-body>.so-content{box-sizing:border-box;height:100%;overflow:hidden auto;padding:24px;position:relative;width:calc(100% - 350px);z-index:2}body.ltr .slideout.showing-sidebar .so-body>.so-content{border-right:1px solid var(--gray-200)}body.rtl .slideout.showing-sidebar .so-body>.so-content{border-left:1px solid var(--gray-200)}.slideout.showing-sidebar .so-body>.so-sidebar{box-shadow:none;display:block!important;height:100%;left:auto!important;position:relative;right:auto!important;top:auto}.slideout>.so-footer>.so-extra{border:none;flex:auto 0 1;margin:0;padding:0}}.footer,.header,.hud-footer,.hud-header{background-color:var(--gray-100);box-sizing:border-box;position:relative;z-index:1}.header,.hud-header{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;box-shadow:inset 0 -1px 0 var(--hairline-color);padding:24px}.header h1,.hud-header h1{margin:0}.footer,.hud-footer{border-radius:0 0 var(--large-border-radius) var(--large-border-radius);box-shadow:inset 0 1px 0 var(--hairline-color);padding:5px var(--pane-padding,var(--xl))}.footer.flex>*,.hud-footer.flex>*{margin-bottom:0}.hud .main,.modal .body{box-sizing:border-box;overflow:hidden;padding:24px}.modal .body .header,.pane .header{margin:calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1) var(--pane-padding,24px)}.modal .body .footer,.pane .footer{margin:var(--pane-padding,24px) calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1)}.hud-shade,.modal-shade,.slideout-shade{display:none;height:100%;left:0;position:fixed;top:0;width:100%;z-index:100}.modal-shade:not(.dark),.slideout-shade:not(.dark){background-color:rgba(123,135,147,.35)!important}.modal-shade.dark,.slideout-shade.dark{background-color:rgba(31,41,51,.5)!important}.modal-shade.blurred,.slideout-shade.blurred{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.modal{overflow:hidden;position:fixed}.modal:not(.fitted):not(.fullscreen){height:66%;min-height:400px;min-width:600px;width:66%}.modal.fitted{height:auto;min-height:0;min-width:0;width:auto}.modal.fullscreen{border-radius:0;height:100%;width:100%}body.ltr .modal.alert .body{padding-left:76px}body.rtl .modal.alert .body{padding-right:76px}.modal.alert .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"alert";font-size:40px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.alert .body:before{margin:-6px 0 0 -58px}body.rtl .modal.alert .body:before{margin:-6px -58px 0 0}body.ltr .modal.alert .body:before{float:left}body.rtl .modal.alert .body:before{float:right}body.ltr .modal.secure .body{padding-left:76px}body.rtl .modal.secure .body{padding-right:76px}.modal.secure .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--light-text-color);content:"secure";font-size:58px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.secure .body:before{margin:-14px 0 0 -56px}body.rtl .modal.secure .body:before{margin:-14px -56px 0 0}body.ltr .modal.secure .body:before{float:left}body.rtl .modal.secure .body:before{float:right}.modal .resizehandle{bottom:0;cursor:nwse-resize;height:24px;padding:var(--xs);position:absolute;width:24px;z-index:1}body.ltr .modal .resizehandle{right:0}body.rtl .modal .resizehandle{left:0}.modal .resizehandle path{fill:var(--ui-control-color)}.hud,body.ltr .modal .resizehandle .rtl,body.rtl .modal .resizehandle .ltr{display:none}.hud{position:absolute;top:0}.hud.tooltip-hud{display:block}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray.png)}.hud .tip{background:no-repeat 0 0;position:absolute;z-index:101}.hud .tip-left{background-image:url(../images/hudtip_left.png);height:30px;left:-15px;width:15px}.hud .tip-top{background-image:url(../images/hudtip_top.png);height:15px;top:-15px;width:30px}.hud .tip-right{background-image:url(../images/hudtip_right.png);height:30px;right:-15px;width:15px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom.png);bottom:-15px;height:15px;width:30px}.hud .hud-footer,.hud .hud-header{padding:var(--s) var(--xl)}.hud .body{overflow:hidden}.hud .body ::-webkit-scrollbar{-webkit-appearance:none;appearance:none}.hud .body ::-webkit-scrollbar:vertical{width:11px}.hud .body ::-webkit-scrollbar:horizontal{height:11px}.hud .body ::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.5);border:2px solid transparent;border-radius:8px}.hud .body ::-webkit-scrollbar-track{background-color:var(--gray-050)}.preview-thumb-container{align-items:center;background-color:var(--gray-900);display:flex;flex-direction:row;height:190px;margin:0 var(--neg-padding) var(--spacing);position:relative}.preview-thumb-container.checkered img{background-color:var(--white);background-image:linear-gradient(45deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(135deg,rgba(154,165,177,.25) 25%,transparent 0),linear-gradient(45deg,transparent 75%,rgba(154,165,177,.25) 0),linear-gradient(135deg,transparent 75%,rgba(154,165,177,.25) 0);background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px;background-size:17px 17px}.preview-thumb-container.editable{cursor:pointer}.preview-thumb-container.loading:after{background-color:rgba(31,41,51,.8);content:"";display:block;font-size:0;height:100%;left:0;position:absolute;top:0;width:100%}.preview-thumb-container.loading .spinner{color:var(--white);z-index:1}#details .preview-thumb-container{border-radius:var(--large-border-radius);overflow:hidden}.preview-thumb-container .preview-thumb{align-items:center;display:flex;flex-direction:column;height:100%;width:100%}.preview-thumb-container .preview-thumb img{display:block;max-height:190px;max-width:100%}.image-actions.is-mobile{display:grid;grid-template-columns:1fr 1fr;margin:calc(var(--spacing)/2*-1) var(--neg-padding) var(--spacing)}.button-fade .buttons{margin:0;opacity:0;position:absolute;top:10px;transition:opacity .1s linear}body.ltr .button-fade .buttons{right:10px}body.rtl .button-fade .buttons{left:10px}.button-fade .buttons .btn{--ui-control-color:var(--white);--ui-control-hover-color:var(--white);--ui-control-active-color:var(--white);--interaction-background-color:var(--gray-700);background-color:var(--gray-600);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--light-color:var(--white);--dark-color:var(--gray-800);--focus-ring:0 0 0 3px var(--light-color),0 0 0 6px var(--dark-color)}.button-fade .buttons .btn:hover{background-color:var(--interaction-background-color)!important}.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed).focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):hover{background-color:var(--interaction-background-color)}.button-fade:focus-within .buttons,.button-fade:hover .buttons{opacity:1}.elementselectormodal{--content-padding:24px;padding-bottom:44px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.elementselectormodal>.header{padding-bottom:14px;padding-top:14px;text-align:center}.elementselectormodal>.header+.body{height:calc(100% - 48px)!important}.elementselectormodal .body{height:100%;position:relative}.elementselectormodal .body .spinner.big{left:50%;margin:-24px 0 0 -24px;position:absolute;top:50%}.elementselectormodal .body .content{height:calc(100% + 48px)}.elementselectormodal .body .content .sidebar{height:100%;overflow:auto;padding:var(--content-padding) 0;position:absolute;top:0}body.ltr .elementselectormodal .body .content .sidebar{margin-left:-249px}body.rtl .elementselectormodal .body .content .sidebar{margin-right:-249px}.elementselectormodal .body .content .main{box-sizing:border-box;height:100%;margin:-24px;overflow:auto;padding:var(--content-padding);position:relative}.elementselectormodal .body .content .main .elements.busy{min-height:calc(100% - 48px)}.elementselectormodal .body .content .main .elements.busy .update-spinner{z-index:101}.elementselectormodal .body .content .main .elements .header{margin:0 0 var(--m)}.elementselectormodal .body .content .main .elements .tableview table tr td,.elementselectormodal .body .content .main .elements .tableview table tr th{cursor:default}.elementselectormodal .body .content .main .elements .tableview table tr .checkbox:before{box-shadow:none!important}.elementselectormodal .body .content .main .elements .structure .row{margin-top:1px}.elementselectormodal .footer{bottom:0;box-sizing:border-box;left:0;margin:0;position:absolute;width:100%}body.ltr .elementselectormodal .footer .spinner{float:right}body.rtl .elementselectormodal .footer .spinner{float:left}body.ltr .elementselectormodal .footer .spinner{margin-right:-24px}body.rtl .elementselectormodal .footer .spinner{margin-left:-24px}.customize-sources-modal .main-header,.elementselectormodal .main-header{align-items:center;display:flex;margin-bottom:var(--s)}.customize-sources-modal .main-heading,.elementselectormodal .main-heading{margin-bottom:0}.customize-sources-modal .nav-toggle,.elementselectormodal .nav-toggle{color:var(--ui-control-color);height:var(--touch-target-size);width:var(--touch-target-size)}body.ltr .customize-sources-modal .nav-toggle,body.ltr .elementselectormodal .nav-toggle{margin-left:4px}body.rtl .customize-sources-modal .nav-toggle,body.rtl .elementselectormodal .nav-toggle{margin-right:4px}.customize-sources-modal .nav-toggle:hover,.elementselectormodal .nav-toggle:hover{color:var(--gray-500)}.customize-sources-modal .sidebar-header,.elementselectormodal .sidebar-header{display:flex;justify-content:flex-end;margin-bottom:var(--s);padding:0 var(--s)}.customize-sources-modal .nav-close,.elementselectormodal .nav-close{height:var(--touch-target-size);width:var(--touch-target-size)}.element-hud-form .buttons{position:relative}.element-hud-form .buttons .spinner{position:absolute;top:0}body.ltr .element-hud-form .buttons .spinner{right:-24px}body.rtl .element-hud-form .buttons .spinner{left:-24px}.activity-container{margin-inline:var(--s)}.activity-container ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.activity-container ul li .activity-btn{border-radius:50%;display:block;height:30px;width:30px}.activity-container ul li .activity-btn .elementthumb{background:var(--gray-050);border:2px solid var(--white);border-radius:50px;box-shadow:0 1px 2px 1px rgba(31,41,51,.1);height:100%;overflow:hidden;position:relative;width:100%}.activity-container ul li .activity-btn .elementthumb img,.activity-container ul li .activity-btn .elementthumb svg{display:block;height:100%;width:100%}body.ltr .activity-container ul li:not(:last-child){margin-right:-10px}body.rtl .activity-container ul li:not(:last-child){margin-left:-10px}.element-index-view-menu{max-width:calc(100% - 20px);padding:0!important;width:400px}.element-index-view-menu .meta{padding-bottom:var(--s);padding-top:var(--s)}.element-index-view-menu .table-columns-field{align-items:flex-start}.element-index-view-menu .table-columns-field .input{padding:13px 0}.element-index-view-menu .menu-footer{background-color:var(--gray-050);margin:0!important;padding:var(--s) var(--xl)!important}.element-index-view-menu-table-column{align-content:stretch;align-items:flex-start;display:flex;margin-bottom:4px}.element-index-view-menu-table-column .icon.move{position:relative;z-index:1}body.ltr .element-index-view-menu-table-column .icon.move{margin-right:10px}body.rtl .element-index-view-menu-table-column .icon.move{margin-left:10px}.sort-field .input .flex .btngroup .btn{width:42px}.sort-field .input .flex .flex-grow{max-width:calc(100% - 85px - var(--s))}@media screen and (max-width:350px){.sort-field .input .flex{flex-direction:column}.sort-field .input .flex>*{width:100%}.sort-field .input .flex .flex-grow{max-width:none}}.element-filter-hud.loading .body{align-items:center;display:flex;justify-content:center;padding:44px}.element-filter-hud .body,.element-filter-hud .main{overflow:visible}.address-cards{display:grid;gap:var(--m) var(--m);grid-auto-rows:minmax(0,1fr);grid-template-columns:repeat(1,minmax(0,1fr))}.so-content .address-cards{grid-template-columns:repeat(1,minmax(0,1fr))!important}.address-cards__add-btn{height:auto;min-height:8rem;padding:1rem;width:100%}.address-card.error{border:1px solid #cf1124}.address-card.error:hover{border-color:#cf1124}@media(min-width:1024px){.address-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1280px){.address-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.so-content .address-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}}@media(min-width:1536px){.address-cards{grid-template-columns:repeat(4,minmax(0,1fr))}}.address-card{border:1px solid #eee;border-radius:.375rem;min-height:4rem;padding:1rem}.address-card:hover{background-color:#fafafa;border-color:#ddd;cursor:pointer}.address-card .address-card-header{display:flex;flex-wrap:nowrap;justify-content:space-between}.address-card .address-card-header-actions{display:flex;justify-content:flex-end}.address-card .address-card-label{background:#e6f1fe;border-radius:.25rem;color:#2563eb;font-size:.75rem;font-weight:500;margin-bottom:.75rem;padding:.125rem .5rem;text-transform:uppercase}.ltr .address-card .address-card-label{margin-right:.5rem}.rtl .address-card .address-card-label{margin-left:.5rem}#elevatedsessionmodal,#logoutwarningmodal,.login-modal,.login-modal-shade,.logoutwarningmodalshade,.prompt{z-index:1001}#elevatedsessionmodal,#logoutwarningmodal,.prompt{width:500px}.prompt{height:auto;min-height:auto}.cpmodal>.cpmodal-body{padding:var(--padding)}.cpmodal>.cpmodal-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:var(--s) var(--padding);position:relative}.cpmodal>.cpmodal-footer:focus{box-shadow:var(--focus-ring)}.deleteusermodal .content-summary{background-color:var(--gray-050);margin:-24px -24px 24px;padding:24px}.deleteusermodal .options label{display:inline-block;line-height:30px}.deleteusermodal .elementselect{display:inline-block;vertical-align:middle}body.ltr .deleteusermodal .elementselect{margin-left:10px}body.rtl .deleteusermodal .elementselect{margin-right:10px}body.ltr .deleteusermodal .buttons .spinner{margin-right:-20px}body.rtl .deleteusermodal .buttons .spinner{margin-left:-20px}.deleteusermodal div.elements{list-style:none}.dropdownsettingsmodal{height:auto;max-width:400px;min-height:0;min-width:0;width:auto}.dropdownsettingsmodal .body{max-height:100%;overflow-y:auto}.previewmodal.zilch{align-items:center;display:flex;justify-content:center;padding:100px 0}.video-transcript{background-color:var(--gray-050);font-size:1rem;overflow-y:scroll;position:relative}body.reduce-focus-visibility .video-transcript:focus-visible,body:not(.reduce-focus-visibility) .video-transcript:focus{background-color:var(--gray-800);box-shadow:none;color:var(--white)}.video-transcript__inner{margin-left:auto;margin-right:auto;max-width:550px;padding:var(--xl)}.menu,.ui-datepicker,.ui-timepicker-list{background:#fff;border-radius:4px;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);overflow:auto;padding:0 14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:100}.ui-datepicker,.ui-timepicker-list{padding:0}.menu{display:none;position:absolute}.menu.padded{padding:var(--s) calc(var(--m) + var(--s))}.menu.padded hr{margin:var(--s) calc((var(--m) + var(--s))*-1)}.menu.padded ul li{margin:0 calc(var(--m)*-1);padding:0 var(--m)}.menu.padded ul li a{border-radius:var(--large-border-radius)}.menu.padded .extralight{margin-top:2px}.menu .h6:first-child,.menu h6:first-child{margin-top:14px!important}.menu ul.padded li .menu-item,.menu ul.padded li .menu-option,.menu ul.padded li a{padding-inline-start:calc(var(--m) + 1.125rem)}.menu ul.padded li .menu-item.sel:not([data-icon]):before,.menu ul.padded li .menu-option.sel:not([data-icon]):before,.menu ul.padded li a.sel:not([data-icon]):before{color:currentColor;content:"check";font-size:14px;margin-top:3px!important;width:14px}body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.ltr .menu ul.padded li a.sel:not([data-icon]):before{float:left}body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.rtl .menu ul.padded li a.sel:not([data-icon]):before{float:right}body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.ltr .menu ul.padded li a.sel:not([data-icon]):before{margin:4px 0 0 calc(-1.125rem - 4px)}body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before,body.rtl .menu ul.padded li a.sel:not([data-icon]):before{margin:4px calc(-1.125rem - 4px) 0 0}.menu ul li .menu-item,.menu ul li .menu-option,.menu ul li a{-webkit-appearance:none;font-size:14px;margin:0 -14px;padding:10px 14px;white-space:nowrap}body.ltr .menu ul li .menu-item:not(:last-child),body.ltr .menu ul li .menu-option:not(:last-child),body.ltr .menu ul li a:not(:last-child){margin-right:0}body.rtl .menu ul li .menu-item:not(:last-child),body.rtl .menu ul li .menu-option:not(:last-child),body.rtl .menu ul li a:not(:last-child){margin-left:0}.menu ul li .menu-item:not(.flex):not(.hidden),.menu ul li .menu-option:not(.flex):not(.hidden),.menu ul li a:not(.flex):not(.hidden){display:block;width:calc(100% + 28px)}body.ltr .menu ul li .menu-item:not(.flex):not(.hidden),body.ltr .menu ul li .menu-option:not(.flex):not(.hidden),body.ltr .menu ul li a:not(.flex):not(.hidden){text-align:left}body.rtl .menu ul li .menu-item:not(.flex):not(.hidden),body.rtl .menu ul li .menu-option:not(.flex):not(.hidden),body.rtl .menu ul li a:not(.flex):not(.hidden){text-align:right}.menu ul li .menu-item.flex [data-icon],.menu ul li .menu-option.flex [data-icon],.menu ul li a.flex [data-icon]{margin-top:-2px}.menu ul li .menu-item.sel,.menu ul li .menu-option.sel,.menu ul li a.sel{cursor:default}.menu ul li .menu-item .shortcut,.menu ul li .menu-option .shortcut,.menu ul li a .shortcut{border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px rgba(81,95,108,.25),0 1px 3px -1px rgba(81,95,108,.5);padding:0 4px}body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut,body.ltr .menu ul li a .shortcut{float:right}body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut,body.rtl .menu ul li a .shortcut{float:left}body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut,body.ltr .menu ul li a .shortcut{margin-left:14px}body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut,body.rtl .menu ul li a .shortcut{margin-right:14px}.menu>.flex{margin-bottom:10px;margin-top:10px;position:relative}body.ltr .menu>.flex.padded{margin-left:-14px}body.rtl .menu>.flex.padded{margin-right:-14px}body.ltr .menu>.flex.padded{padding-left:24px}body.rtl .menu>.flex.padded{padding-right:24px}.menu>.flex.padded.sel:before{color:var(--light-text-color);content:"check";font-size:14px;position:absolute;top:36px}body.ltr .menu>.flex.padded.sel:before{left:7px}body.rtl .menu>.flex.padded.sel:before{right:7px}.menu hr{margin:5px -14px}.menu .go:after{color:inherit}.menu ul li .menu-item,.menu ul li .menu-option,.menu:not(.menu--disclosure) ul li a{color:#3f4d5a;cursor:default;text-decoration:none}.menu li>a [data-icon]:before,.menu li>a span.icon:not([data-icon]),.menu li>a[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button span.icon:not([data-icon]),.menu li>button[data-icon]:before{display:inline-block;height:.875rem;width:.875rem}body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before{margin-left:-1px}body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before{margin-right:-1px}body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before{margin-right:9px}body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before{margin-left:9px}.menu li>a [data-icon]:before,.menu li>a[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button[data-icon]:before{color:currentColor;font-size:14px;position:relative;text-align:center;top:-2px}.menu li>a span.icon:not([data-icon]) svg,.menu li>button span.icon:not([data-icon]) svg{display:block;height:100%;position:relative;top:1px;width:100%}.menu li>a span.icon:not([data-icon]) svg circle,.menu li>a span.icon:not([data-icon]) svg ellipse,.menu li>a span.icon:not([data-icon]) svg line,.menu li>a span.icon:not([data-icon]) svg path,.menu li>a span.icon:not([data-icon]) svg polygon,.menu li>a span.icon:not([data-icon]) svg polyline,.menu li>a span.icon:not([data-icon]) svg rect,.menu li>a span.icon:not([data-icon]) svg text,.menu li>button span.icon:not([data-icon]) svg circle,.menu li>button span.icon:not([data-icon]) svg ellipse,.menu li>button span.icon:not([data-icon]) svg line,.menu li>button span.icon:not([data-icon]) svg path,.menu li>button span.icon:not([data-icon]) svg polygon,.menu li>button span.icon:not([data-icon]) svg polyline,.menu li>button span.icon:not([data-icon]) svg rect,.menu li>button span.icon:not([data-icon]) svg text{fill:var(--icon-color,var(--ui-control-color));stroke-width:0}.menu li>a.error [data-icon]:before,.menu li>a.error[data-icon]:before,.menu li>button.error [data-icon]:before,.menu li>button.error[data-icon]:before{color:var(--error-color)}.menu li>a.error span.icon:not([data-icon]) svg circle,.menu li>a.error span.icon:not([data-icon]) svg ellipse,.menu li>a.error span.icon:not([data-icon]) svg line,.menu li>a.error span.icon:not([data-icon]) svg path,.menu li>a.error span.icon:not([data-icon]) svg polygon,.menu li>a.error span.icon:not([data-icon]) svg polyline,.menu li>a.error span.icon:not([data-icon]) svg rect,.menu li>a.error span.icon:not([data-icon]) svg text,.menu li>button.error span.icon:not([data-icon]) svg circle,.menu li>button.error span.icon:not([data-icon]) svg ellipse,.menu li>button.error span.icon:not([data-icon]) svg line,.menu li>button.error span.icon:not([data-icon]) svg path,.menu li>button.error span.icon:not([data-icon]) svg polygon,.menu li>button.error span.icon:not([data-icon]) svg polyline,.menu li>button.error span.icon:not([data-icon]) svg rect,.menu li>button.error span.icon:not([data-icon]) svg text{fill:var(--error-color);stroke-width:0}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover{background-color:var(--dark-sel-color);color:var(--white)!important}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg text{fill:var(--white);stroke-width:0}.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li a:not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:currentColor}body.ltr .menu .h6.padded,body.ltr .menu h6.padded,body.ltr .menu hr.padded{margin-left:20px}body.rtl .menu .h6.padded,body.rtl .menu h6.padded,body.rtl .menu hr.padded{margin-right:20px}.menu--disclosure ul li>.menu-item:hover,.menu--disclosure ul li>.menu-option:hover,.menu--disclosure ul li>a:not(.crumb-link):hover{background-color:#f3f7fc;color:#3f4d5a}body.reduce-focus-visibility .menu--disclosure ul li>.menu-item:focus-visible,body.reduce-focus-visibility .menu--disclosure ul li>.menu-option:focus-visible,body.reduce-focus-visibility .menu--disclosure ul li>a:not(.crumb-link):focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-item:focus,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-option:focus,body:not(.reduce-focus-visibility) .menu--disclosure ul li>a:not(.crumb-link):focus{box-shadow:inset 0 0 0 3px hsla(var(--dark-focus-hsl),.7)}.tagselect .elements li{display:inline}.tagselect .chip.small{clear:none}body.ltr .tagselect .chip.small{margin-right:7px}body.rtl .tagselect .chip.small{margin-left:7px}.tagselect .add{display:inline-block;position:relative;width:12em;z-index:1}body.ltr .tagselect .add{margin:7px 7px 0 0}body.rtl .tagselect .add{margin:7px 0 0 7px}body.ltr .tagselect .add .text{padding-right:30px}body.rtl .tagselect .add .text{padding-left:30px}.tagselect .add .spinner{position:absolute;top:0}body.ltr .tagselect .add .spinner{right:5px}body.rtl .tagselect .add .spinner{left:5px}body.ltr .tagmenu ul li a{padding-left:26px}body.rtl .tagmenu ul li a{padding-right:26px}body.ltr .tagmenu ul li a:before{float:left}body.rtl .tagmenu ul li a:before{float:right}body.ltr .tagmenu ul li a:before{margin:3px 0 0 -18px}body.rtl .tagmenu ul li a:before{margin:3px -18px 0 0}.selectize-control.single .selectize-input:not(.no-arrow):after{display:none}.shadow-box{border:1px solid var(--gray-200);border-radius:var(--large-border-radius);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}table.editable,table.shadow-box{border-collapse:separate;border-spacing:0}table.editable caption+tbody tr:first-child td:first-child,table.editable caption+tbody tr:first-child td:first-child.disabled:after,table.editable caption+tbody tr:first-child th:first-child,table.editable caption+tbody tr:first-child th:first-child.disabled:after,table.editable tbody:first-child tr:first-child td:first-child,table.editable tbody:first-child tr:first-child td:first-child.disabled:after,table.editable tbody:first-child tr:first-child th:first-child,table.editable tbody:first-child tr:first-child th:first-child.disabled:after,table.editable thead tr:first-child td:first-child,table.editable thead tr:first-child td:first-child.disabled:after,table.editable thead tr:first-child th:first-child,table.editable thead tr:first-child th:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:first-child,table.shadow-box caption+tbody tr:first-child td:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:first-child,table.shadow-box caption+tbody tr:first-child th:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:first-child,table.shadow-box tbody:first-child tr:first-child td:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:first-child,table.shadow-box tbody:first-child tr:first-child th:first-child.disabled:after,table.shadow-box thead tr:first-child td:first-child,table.shadow-box thead tr:first-child td:first-child.disabled:after,table.shadow-box thead tr:first-child th:first-child,table.shadow-box thead tr:first-child th:first-child.disabled:after{border-top-left-radius:var(--medium-border-radius)}table.editable caption+tbody tr:first-child td:last-child,table.editable caption+tbody tr:first-child td:last-child.disabled:after,table.editable caption+tbody tr:first-child th:last-child,table.editable caption+tbody tr:first-child th:last-child.disabled:after,table.editable tbody:first-child tr:first-child td:last-child,table.editable tbody:first-child tr:first-child td:last-child.disabled:after,table.editable tbody:first-child tr:first-child th:last-child,table.editable tbody:first-child tr:first-child th:last-child.disabled:after,table.editable thead tr:first-child td:last-child,table.editable thead tr:first-child td:last-child.disabled:after,table.editable thead tr:first-child th:last-child,table.editable thead tr:first-child th:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:last-child,table.shadow-box caption+tbody tr:first-child td:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:last-child,table.shadow-box caption+tbody tr:first-child th:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:last-child,table.shadow-box tbody:first-child tr:first-child td:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:last-child,table.shadow-box tbody:first-child tr:first-child th:last-child.disabled:after,table.shadow-box thead tr:first-child td:last-child,table.shadow-box thead tr:first-child td:last-child.disabled:after,table.shadow-box thead tr:first-child th:last-child,table.shadow-box thead tr:first-child th:last-child.disabled:after{border-top-right-radius:var(--medium-border-radius)}table.editable tbody:last-child tr:last-child td:first-child,table.editable tbody:last-child tr:last-child td:first-child.disabled:after,table.editable tbody:last-child tr:last-child th:first-child,table.editable tbody:last-child tr:last-child th:first-child.disabled:after,table.editable thead:last-child tr:last-child td:first-child,table.editable thead:last-child tr:last-child td:first-child.disabled:after,table.editable thead:last-child tr:last-child th:first-child,table.editable thead:last-child tr:last-child th:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:first-child,table.shadow-box tbody:last-child tr:last-child td:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:first-child,table.shadow-box tbody:last-child tr:last-child th:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:first-child,table.shadow-box thead:last-child tr:last-child td:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child th:first-child,table.shadow-box thead:last-child tr:last-child th:first-child.disabled:after{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}table.editable tbody:last-child tr:last-child td:last-child,table.editable tbody:last-child tr:last-child td:last-child.disabled:after,table.editable tbody:last-child tr:last-child th:last-child,table.editable tbody:last-child tr:last-child th:last-child.disabled:after,table.editable thead:last-child tr:last-child td:last-child,table.editable thead:last-child tr:last-child td:last-child.disabled:after,table.editable thead:last-child tr:last-child th:last-child,table.editable thead:last-child tr:last-child th:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:last-child,table.shadow-box tbody:last-child tr:last-child td:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:last-child,table.shadow-box tbody:last-child tr:last-child th:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:last-child,table.shadow-box thead:last-child tr:last-child td:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child th:last-child,table.shadow-box thead:last-child tr:last-child th:last-child.disabled:after{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}.border-box,.multiselect>select,.passwordwrapper,.selectize.multiselect .selectize-input,.text{background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.25);border-radius:3px}.border-box.focus,.passwordwrapper.focus,.selectize.multiselect .selectize-input.focus,.text.focus{box-shadow:var(--focus-ring)}body.reduce-focus-visibility .border-box:focus-visible,body.reduce-focus-visibility .passwordwrapper:focus-visible,body.reduce-focus-visibility .selectize.multiselect .selectize-input:focus-visible,body.reduce-focus-visibility .text:focus-visible,body:not(.reduce-focus-visibility) .border-box:focus,body:not(.reduce-focus-visibility) .passwordwrapper:focus,body:not(.reduce-focus-visibility) .selectize.multiselect .selectize-input:focus,body:not(.reduce-focus-visibility) .text:focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input,.text>input,.text>textarea,input.text,table.editable textarea,textarea.text{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;color:var(--text-color);font-size:14px;line-height:20px;min-height:3px}.selectize.multiselect .selectize-input{line-height:18px}textarea.text.fullwidth{display:block}.multitext .multitextrow:after{clear:both;content:"";display:block;height:0;visibility:hidden}body.ltr .multitext .multitextrow:first-child .text:first-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:first-child .text:last-child,body.rtl .multitext .multitextrow:first-child .text:first-child{border-top-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:last-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:first-child{border-bottom-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:last-child,body.rtl .multitext .multitextrow:last-child .text:first-child{border-bottom-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:last-child{border-bottom-left-radius:var(--medium-border-radius)}.multitext .multitextrow:not(:first-child) .text{margin-top:-1px}.multitext .multitextrow .text{border-radius:0;box-sizing:border-box;float:left}body.ltr .multitext .multitextrow .text:not(:first-child){margin-left:-1px}body.rtl .multitext .multitextrow .text:not(:first-child){margin-right:-1px}.multitext .multitextrow .text:first-child:last-child{width:100%}.multitext .multitextrow .text:first-child:nth-last-child(2){width:50%}.multitext .multitextrow .text:first-child:nth-last-child(2)~.text{width:calc(50% + 1px)}.multitext .multitextrow .text.error{position:relative;z-index:1}.multitext .multitextrow .selectize.multiselect .selectize-input.focus,.multitext .multitextrow .text:focus{position:relative;z-index:2}.chars-left{color:var(--light-text-color);position:relative}body.ltr .chars-left{float:right}body.rtl .chars-left{float:left}body.ltr .chars-left{margin:-1.6875rem 7px 0 0}body.rtl .chars-left{margin:-1.6875rem 0 0 7px}.input.ltr>.chars-left{float:right!important;margin-right:7px!important}.input.rtl>.chars-left{float:left!important;margin-left:7px!important}.chars-left.negative-chars-left{color:var(--error-color)}.field,fieldset{margin:24px 0;position:relative}.flex>.field,.flex>fieldset{margin-bottom:0;margin-top:0}.field{min-inline-size:0}.field>.status-badge{border-radius:1px;content:"";cursor:help;height:100%;position:absolute;top:0;width:2px}body.ltr .field>.status-badge{left:0}body.rtl .field>.status-badge{right:0}.field>.status-badge.modified{background-color:var(--blue-600);box-shadow:0 0 5px rgba(36,99,235,.15)}.field>.status-badge.outdated{background-color:var(--pending-color);box-shadow:0 0 5px rgba(251,146,60,.15)}.field>.heading{align-items:center;display:flex;flex-wrap:wrap;margin-bottom:5px;margin-top:-5px;position:relative}.field>.heading>label,.field>.heading>legend{font-weight:700}.field>.heading>label code,.field>.heading>legend code{font-size:1em!important}body.ltr .field>.heading>label .info,body.ltr .field>.heading>legend .info{margin-left:5px}body.rtl .field>.heading>label .info,body.rtl .field>.heading>legend .info{margin-right:5px}.field>.heading .t9n-indicator{color:var(--light-text-color);position:relative;top:-.0625rem}body.ltr .field>.heading .t9n-indicator{margin-left:7px}body.rtl .field>.heading .t9n-indicator{margin-right:7px}.field>.heading+.instructions{margin-top:-3px}.field>.heading>.instructions{width:100%}.field>.instructions{margin-bottom:5px}.field>.input{position:relative}.field>.input+.instructions{margin:5px 0 0}.field>.input input:disabled,.field>.input textarea:disabled{cursor:not-allowed}.field>.notice,.field>.warning{margin:5px 0 0}.checkboxfield .instructions,.field>.heading>.instructions,.field>.instructions{color:var(--custom-text-color,var(--medium-text-color))}.checkboxfield .instructions embed,.checkboxfield .instructions iframe,.checkboxfield .instructions img,.checkboxfield .instructions video,.field>.heading>.instructions embed,.field>.heading>.instructions iframe,.field>.heading>.instructions img,.field>.heading>.instructions video,.field>.instructions embed,.field>.instructions iframe,.field>.instructions img,.field>.instructions video{max-width:100%!important}.checkboxfield .instructions ol,.checkboxfield .instructions ul,.field>.heading>.instructions ol,.field>.heading>.instructions ul,.field>.instructions ol,.field>.instructions ul{margin:1em 0}body.ltr .checkboxfield .instructions ol,body.ltr .checkboxfield .instructions ul,body.ltr .field>.heading>.instructions ol,body.ltr .field>.heading>.instructions ul,body.ltr .field>.instructions ol,body.ltr .field>.instructions ul{padding-left:2em}body.rtl .checkboxfield .instructions ol,body.rtl .checkboxfield .instructions ul,body.rtl .field>.heading>.instructions ol,body.rtl .field>.heading>.instructions ul,body.rtl .field>.instructions ol,body.rtl .field>.instructions ul{padding-right:2em}.checkboxfield .instructions ul li,.field>.heading>.instructions ul li,.field>.instructions ul li{list-style-type:disc}.checkboxfield .instructions li+li,.field>.heading>.instructions li+li,.field>.instructions li+li{margin-top:.25em}.expand-status-btn{border-radius:var(--small-border-radius);color:var(--text-color);height:17px;line-height:16px;padding:0;width:30px}body.ltr .expand-status-btn{margin-left:5px}body.rtl .expand-status-btn{margin-right:5px}.expand-status-btn:before{margin:0}.nested-fields{margin:-24px;padding:24px 24px 0}.nested-fields.hidden{display:block;height:0}.nested-fields>.field:last-child{padding-bottom:24px}input.checkbox{height:var(--checkbox-size);opacity:0;position:absolute;width:var(--checkbox-size)}div.checkbox,input.checkbox+label{clear:none;cursor:pointer;display:inline-block;line-height:1rem;min-height:1rem;position:relative}body.ltr div.checkbox,body.ltr input.checkbox+label{padding-left:calc(1rem + 5px)}body.rtl div.checkbox,body.rtl input.checkbox+label{padding-right:calc(1rem + 5px)}div.checkbox,div.checkbox:before,input.checkbox+label,input.checkbox+label:before{border-radius:var(--small-border-radius)}div.checkbox:before,input.checkbox+label:before{background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);box-sizing:border-box;content:"";display:block;font-size:0;height:var(--checkbox-size);position:absolute;top:0;width:var(--checkbox-size)!important}body.ltr div.checkbox:before,body.ltr input.checkbox+label:before{left:0}body.rtl div.checkbox:before,body.rtl input.checkbox+label:before{right:0}body.ltr div.checkbox:empty,body.ltr input.checkbox+label:empty{padding-left:var(--checkbox-size)}body.rtl div.checkbox:empty,body.rtl input.checkbox+label:empty{padding-right:var(--checkbox-size)}div.checkbox:empty:after,input.checkbox+label:empty:after{content:"";font-size:0}div.checkbox .info,input.checkbox+label .info{height:16px}.disabled div.checkbox,input.checkbox:disabled+label{cursor:not-allowed}.elementselectormodal .body .content .main .elements .disabled .checkbox:before,.sel div.checkbox:before,div.checkbox.checked:before,div.checkbox.indeterminate:before,input.checkbox:checked+label:before,input.checkbox:indeterminate+label:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--gray-900);line-height:var(--checkbox-size);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.elementselectormodal .body .content .main .elements .disabled .checkbox:before,.sel.matrixblock>.actions div.checkbox:not(.indeterminate):before,.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,div.checkbox.checked:not(.indeterminate):before,input.checkbox:checked:not(:indeterminate)+label:before{content:"check";font-size:14px}div.checkbox.indeterminate:before,input.checkbox:indeterminate+label:before{content:"minus";font-size:7px;text-align:center}body:not(.reduce-focus-visibility) :focus div.checkbox:before,body:not(.reduce-focus-visibility) input.checkbox:focus+label:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility :focus-visible div.checkbox:before,body.reduce-focus-visibility input.checkbox:focus-visible+label:before{box-shadow:var(--focus-ring)}.checkbox-icon{background-color:var(--enabled-color);border-radius:var(--small-border-radius);color:var(--white);display:inline-flex;padding:3px}.checkbox-icon:before{--checkbox-size:14px;font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"check";font-size:var(--checkbox-size);line-height:var(--checkbox-size);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.checkbox-preview-label{display:none}body.reduce-focus-visibility .monaco-mouse-cursor-text:focus-visible,body:not(.reduce-focus-visibility) .monaco-mouse-cursor-text:focus{box-shadow:none!important}fieldset .checkboxfield{margin:5px 0}.checkboxfield .instructions,.checkboxfield .notice,.checkboxfield .warning{margin-top:2px}body.ltr .checkboxfield .instructions,body.ltr .checkboxfield .notice,body.ltr .checkboxfield .warning{padding-left:calc(1rem + 5px)}body.rtl .checkboxfield .instructions,body.rtl .checkboxfield .notice,body.rtl .checkboxfield .warning{padding-right:calc(1rem + 5px)}input.radio{height:var(--radio-size);opacity:0;position:absolute;width:var(--radio-size)}div.radio,input.radio+label{clear:none;cursor:pointer;display:inline-block;line-height:1.7142857143;position:relative}body.ltr div.radio,body.ltr input.radio+label{padding-left:calc(1rem + 5px)}body.rtl div.radio,body.rtl input.radio+label{padding-right:calc(1rem + 5px)}.disabled div.radio,input.radio:disabled+label{cursor:not-allowed}body.ltr div.radio:empty,body.ltr input.radio+label:empty{padding-left:var(--radio-size)}body.rtl div.radio:empty,body.rtl input.radio+label:empty{padding-right:var(--radio-size)}div.radio:after,div.radio:before,input.radio+label:after,input.radio+label:before{background-clip:padding-box;border-radius:100%;box-sizing:border-box;content:"";display:block;position:absolute}div.radio:before,input.radio+label:before{background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);height:var(--radio-size);left:0;top:50%;transform:translateY(-50%);width:var(--radio-size)}div.radio:after,input.radio+label:after{height:calc(var(--radio-size) - 8px);left:4px;top:50%;transform:translateY(-50%);width:calc(var(--radio-size) - 8px)}.sel div.radio:after,div.radio.checked:after,input.radio:checked+label:after{background:var(--gray-900)}body:not(.reduce-focus-visibility) :focus div.radio:before,body:not(.reduce-focus-visibility) input.radio:focus+label:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility :focus-visible div.radio:before,body.reduce-focus-visibility input.radio:focus-visible+label:before{box-shadow:var(--focus-ring)}.multiselect>select{-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--text-color);font-size:14px}body.reduce-focus-visibility .multiselect>select:focus-visible,body:not(.reduce-focus-visibility) .multiselect>select:focus{box-shadow:var(--focus-ring)}.multiselect>select option{padding:1px 8px}.selectize.multiselect .selectize-input,.text{padding:6px 9px}.text{background-color:var(--white)}.text:not(.small){box-sizing:border-box;min-height:2.125rem}.text.small{padding:3px}.text.readable{font-size:16px;line-height:22px;padding:16px 18px}.text.readable+.chars-left{margin-top:-23px}body.ltr .text.clearable{padding-right:var(--touch-target-size)}body.rtl .text.clearable{padding-left:var(--touch-target-size)}.text input{background-color:transparent;border:none;margin:0;padding:0}.input.errors>.autosuggest-container .text,.input.errors>.border-box,.input.errors>.passwordwrapper,.input.errors>.text,.text.error,td.errors .text{border:1px solid var(--error-color)!important}.texticon{cursor:text;min-width:130px;position:relative}.texticon.icon:before{color:var(--ui-control-color);position:absolute;top:calc(50% - .4375rem)}body.ltr .texticon.icon:before{left:9px}body.rtl .texticon.icon:before{right:9px}.texticon .texticon-icon{align-items:center;display:flex;justify-content:center;position:absolute;top:1.0625rem;transform:translateY(-50%)}body.ltr .texticon .texticon-icon{left:9px}body.rtl .texticon .texticon-icon{right:9px}body.ltr .texticon .text{padding-left:1.625rem}body.rtl .texticon .text{padding-right:1.625rem}.texticon .clear-btn{height:var(--touch-target-size);position:absolute;top:calc((var(--touch-target-size) - 34px)/-2);width:var(--touch-target-size)}body.ltr .texticon .clear-btn{right:0}body.rtl .texticon .clear-btn{left:0}body.ltr .texticon.has-filter-btn .text{padding-right:26px}body.rtl .texticon.has-filter-btn .text{padding-left:26px}.texticon.has-filter-btn .filter-btn{border-radius:13px;cursor:pointer;font-size:14px;line-height:22px;padding:0 7px 4px;position:absolute;top:1.0625rem;transform:translateY(-50%)}body.ltr .texticon.has-filter-btn .filter-btn{right:4px}body.rtl .texticon.has-filter-btn .filter-btn{left:4px}.texticon.has-filter-btn .filter-btn:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--medium-text-color);content:"filter";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.texticon.has-filter-btn .filter-btn:hover{background-color:var(--gray-100)}.texticon.has-filter-btn .filter-btn.active,.texticon.has-filter-btn .filter-btn:active,.texticon.has-filter-btn .filter-btn[aria-expanded=true]{background-color:var(--gray-350)}.texticon.has-filter-btn .filter-btn.active:before,.texticon.has-filter-btn .filter-btn:active:before,.texticon.has-filter-btn .filter-btn[aria-expanded=true]:before{color:var(--white)}body.ltr .texticon.has-filter-btn .text.clearable{padding-right:calc(30px + var(--touch-target-size))}body.rtl .texticon.has-filter-btn .text.clearable{padding-left:calc(30px + var(--touch-target-size))}body.ltr .texticon.has-filter-btn .clear-btn{right:30px}body.rtl .texticon.has-filter-btn .clear-btn{left:30px}.texthint-container{height:0;position:relative}.texthint{color:var(--light-text-color);cursor:text;position:absolute;top:-1px;width:100%}.passwordwrapper{position:relative}.passwordwrapper .password{background:transparent;border:none;box-shadow:none;padding-right:4rem}.passwordwrapper .password-toggle{bottom:0;color:var(--link-color);cursor:pointer;position:absolute;top:0}body.ltr .passwordwrapper .password-toggle{right:9px}body.rtl .passwordwrapper .password-toggle{left:9px}.passwordwrapper .password-toggle:hover{text-decoration:underline}.datetimewrapper{flex-direction:row;flex-wrap:nowrap;gap:5px}.clear-btn,.datetimewrapper{align-items:center;display:flex}.clear-btn{background:transparent;border:none;color:var(--ui-control-color);cursor:pointer;justify-content:center;padding:0;width:24px}.clear-btn:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"remove";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.clear-btn:hover{color:var(--ui-control-hover-color)}.clear-btn:active{color:var(--ui-control-active-color)}.close-btn{position:relative}.close-btn:after,.close-btn:before{background-color:var(--ui-control-color);content:"";height:15px;left:50%;position:absolute;top:50%;width:2px}.close-btn:before{transform:translate(-50%,-50%) rotate(-45deg)}.close-btn:after{transform:translate(-50%,-50%) rotate(45deg)}.close-btn:hover:after,.close-btn:hover:before{background-color:var(--ui-control-hover-color)}.close-btn:active:after,.close-btn:active:before{background-color:var(--ui-control-active-color)}.datewrapper,.timewrapper{display:inline-block;position:relative}.datewrapper .text,.timewrapper .text{position:relative;width:100%;z-index:1}.datewrapper .text+div[data-icon],.timewrapper .text+div[data-icon]{display:none}.datewrapper .text:-moz-placeholder-shown+div[data-icon],.timewrapper .text:-moz-placeholder-shown+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}.datewrapper .text:-ms-input-placeholder+div[data-icon],.timewrapper .text:-ms-input-placeholder+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}.datewrapper .text.empty-value+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text.empty-value+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]{color:var(--light-text-color);display:block;position:absolute;top:calc(50% - 12px);z-index:0}body.ltr .datewrapper .text:-moz-placeholder-shown+div[data-icon],body.ltr .timewrapper .text:-moz-placeholder-shown+div[data-icon]{left:14px}body.ltr .datewrapper .text:-ms-input-placeholder+div[data-icon],body.ltr .timewrapper .text:-ms-input-placeholder+div[data-icon]{left:14px}body.ltr .datewrapper .text.empty-value+div[data-icon],body.ltr .datewrapper .text:placeholder-shown+div[data-icon],body.ltr .timewrapper .text.empty-value+div[data-icon],body.ltr .timewrapper .text:placeholder-shown+div[data-icon]{left:14px}body.rtl .datewrapper .text:-moz-placeholder-shown+div[data-icon],body.rtl .timewrapper .text:-moz-placeholder-shown+div[data-icon]{right:14px}body.rtl .datewrapper .text:-ms-input-placeholder+div[data-icon],body.rtl .timewrapper .text:-ms-input-placeholder+div[data-icon]{right:14px}body.rtl .datewrapper .text.empty-value+div[data-icon],body.rtl .datewrapper .text:placeholder-shown+div[data-icon],body.rtl .timewrapper .text.empty-value+div[data-icon],body.rtl .timewrapper .text:placeholder-shown+div[data-icon]{right:14px}.datewrapper .text:-moz-placeholder-shown+div[data-icon],.datewrapper .text:-moz-placeholder-shown+div[data-icon]:before,.timewrapper .text:-moz-placeholder-shown+div[data-icon],.timewrapper .text:-moz-placeholder-shown+div[data-icon]:before{pointer-events:none;-moz-user-select:none;user-select:none;z-index:1}.datewrapper .text:-ms-input-placeholder+div[data-icon],.datewrapper .text:-ms-input-placeholder+div[data-icon]:before,.timewrapper .text:-ms-input-placeholder+div[data-icon],.timewrapper .text:-ms-input-placeholder+div[data-icon]:before{pointer-events:none;-ms-user-select:none;user-select:none;z-index:1}.datewrapper .text.empty-value+div[data-icon],.datewrapper .text.empty-value+div[data-icon]:before,.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon]:before,.timewrapper .text.empty-value+div[data-icon],.timewrapper .text.empty-value+div[data-icon]:before,.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]:before{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.datewrapper{width:8em}.timewrapper{width:7em}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--gray-400)}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--gray-400)}input::placeholder,textarea::placeholder{color:var(--gray-400)}::-ms-clear,::-ms-reveal{display:none}tr.indexingSession td{height:34px;padding:1px 10px}tr.indexingSession td.progress div.progressContainer{align-items:center;display:flex;justify-content:space-between;width:100%}tr.indexingSession td.progress div.progressContainer .progressbar{height:12px;left:0;position:relative;width:70%;z-index:1}tr.indexingSession td.progress div.progressContainer div.progressInfo{width:20%}.select:not(.selectize),.select:not(.selectize) select{border-radius:5px;position:relative;white-space:nowrap}.select:not(.selectize){max-width:100%;position:relative}:not(.flex)>.select:not(.selectize){display:inline-block}.select:not(.selectize):after{border:solid;border-width:0 .125rem .125rem 0;color:var(--ui-control-color);content:"";display:block;font-size:0;height:.4375rem;opacity:.8;pointer-events:none;position:relative;position:absolute;top:calc(50% - 5px);transform:rotate(45deg);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:.4375rem;z-index:1}body.ltr .select:not(.selectize):after{right:9px}body.rtl .select:not(.selectize):after{left:9px}.select:not(.selectize) select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#dfe5ec;border:none;color:#3f4d5a;display:block;font-size:14px;line-height:20px;max-width:100%;position:relative;white-space:pre}body.ltr .select:not(.selectize) select{padding:7px 22px 7px 10px}body.rtl .select:not(.selectize) select{padding:7px 10px 7px 22px}.select:not(.selectize) select::-ms-expand{display:none}.select:not(.selectize).fullwidth select{min-width:100%}.select:not(.selectize) select:hover{background-color:#cfd8e2;box-shadow:var(--focus-ring);outline-color:transparent}body.reduce-focus-visibility .select:not(.selectize) select:focus-visible,body:not(.reduce-focus-visibility) .select:not(.selectize) select:focus{background-color:#cfd8e2;box-shadow:var(--focus-ring);outline-color:transparent}.select:not(.selectize).small:after{top:9px}.select:not(.selectize).small select{font-size:11px;padding-bottom:4px!important;padding-top:4px!important}.custom-select.disabled,.selectize-control .selectize-input.disabled{cursor:not-allowed!important;opacity:1;pointer-events:auto!important}.custom-select.disabled *,.selectize-control .selectize-input.disabled *{cursor:not-allowed!important;pointer-events:auto!important}.selectize .selectize-input{background-color:transparent;border-color:inherit;box-shadow:none;display:block}.selectize .selectize-input .item{max-width:100%}.selectize .selectize-input .item span{overflow:hidden;text-overflow:ellipsis}.selectize.select .selectize-input:after{display:none}body .selectize-dropdown{border:none;z-index:101}.selectize.select{height:34px}.selectize.select input::-moz-placeholder,.selectize.select textarea::-moz-placeholder{color:var(--gray-700)}.selectize.select input:-ms-input-placeholder,.selectize.select textarea:-ms-input-placeholder{color:var(--gray-700)}.selectize.select input::placeholder,.selectize.select textarea::placeholder{color:var(--gray-700)}.selectize.select:not(.fullwidth){max-width:100%;width:25em}.datetimewrapper .selectize.select:not(.fullwidth){max-width:calc(100% - 29px)}.selectize.select .selectize-control{max-width:100%;position:relative}:not(.flex)>.selectize.select .selectize-control{display:inline-block}.selectize.select .selectize-control:after{border:solid;border-width:0 .125rem .125rem 0;color:var(--ui-control-color);content:"";display:block;font-size:0;height:.4375rem;opacity:.8;pointer-events:none;position:relative;position:absolute;top:calc(50% - 5px);transform:rotate(45deg);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:.4375rem;z-index:1}body.ltr .selectize.select .selectize-control:after{right:9px}body.rtl .selectize.select .selectize-control:after{left:9px}.selectize.select .selectize-input{border-radius:5px;white-space:nowrap}.selectize.select .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.select .selectize-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#dfe5ec;border:none;color:#3f4d5a;display:block;font-size:14px;line-height:20px;max-width:100%;position:relative}body.ltr .selectize.select .selectize-input{padding:7px 22px 7px 10px}body.rtl .selectize.select .selectize-input{padding:7px 10px 7px 22px}.selectize.select .selectize-input::-ms-expand{display:none}.selectize.select .selectize-control,.selectize.select .selectize-input{width:100%}.selectize.multiselect .selectize-input{min-height:34px;padding-bottom:3px}.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input>.item{background-color:#e4edf6;border-radius:3px;color:#3f4d5a;display:inline-block;display:inline-flex;flex-direction:row;font-size:12px;line-height:14px;padding:3px 7px;padding:3px 7px!important}.selectize.multiselect .selectize-input>.item.active{background-color:#cdd8e4}.selectize.multiselect .selectize-input>.item>.remove{border-left:none;color:var(--ui-control-color);font-size:0;padding:0;position:static}body.ltr .selectize.multiselect .selectize-input>.item>.remove{margin:-1px -3px 0 3px}body.rtl .selectize.multiselect .selectize-input>.item>.remove{margin:-1px 3px 0 -3px}.selectize.multiselect .selectize-input>.item>.remove:hover{background-color:transparent;color:var(--ui-control-hover-color)}.selectize.multiselect .selectize-input>.item>.remove:before{font-family:Craft;font-size:14px;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"remove";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body .selectize-dropdown{margin-top:1px}body .selectize-dropdown .optgroup-header,body .selectize-dropdown .option,body .selectize-dropdown [data-selectable]{color:#3f4d5a;margin:0 -14px;padding:10px 14px;text-decoration:none;white-space:nowrap}body .selectize-dropdown .optgroup{padding-top:5px}body .selectize-dropdown .optgroup:not(:first-child){border-top:1px solid var(--hairline-color)}body .selectize-dropdown .optgroup .option{padding-left:24px}body .selectize-dropdown .optgroup-header{color:#606d7b;font-size:11px;line-height:1.2;margin:0;padding:4px 0;text-transform:uppercase}body .selectize-dropdown .active:not(.selected),body .selectize-dropdown .option:hover{background-color:var(--gray-100)}body .selectize-dropdown .selected{background-color:var(--dark-sel-color);color:var(--white)!important;cursor:default!important}body .selectize-dropdown .selected svg circle,body .selectize-dropdown .selected svg ellipse,body .selectize-dropdown .selected svg line,body .selectize-dropdown .selected svg path,body .selectize-dropdown .selected svg polygon,body .selectize-dropdown .selected svg polyline,body .selectize-dropdown .selected svg rect,body .selectize-dropdown .selected svg text{fill:var(--white);stroke-width:0}body .selectize-dropdown .selected .light{color:inherit!important}body .selectize-dropdown-content{background:#fff;border-radius:4px;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);max-height:70vh;overflow:auto;padding:0 14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:100}body .selectize-dropdown-content .option{min-height:18px}body .selectize-dropdown-content>div[data-value=new]:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"plus";margin-right:5px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body .selectize-dropdown-content>div[data-value=new]:after{content:"…"}body.no-scroll .selectize-dropdown-content{max-height:200px}.ui-datepicker{position:fixed;top:-300px;-padding:10px;height:242px;width:210px;z-index:101!important}body.ltr .ui-datepicker{margin-left:1px}body.rtl .ui-datepicker{margin-right:1px}.ui-datepicker-header{padding:8px 8px 4px}body.ltr .ui-datepicker-prev{float:left}body.ltr .ui-datepicker-next,body.rtl .ui-datepicker-prev{float:right}body.rtl .ui-datepicker-next{float:left}.ui-datepicker-next span,.ui-datepicker-prev span{display:none}.ui-datepicker-next,.ui-datepicker-prev{align-items:center;display:flex;height:20px;justify-content:center;width:20px}.ui-datepicker-next:hover:after,.ui-datepicker-prev:hover:after{border-color:var(--link-color)}.ui-datepicker-prev:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .ui-datepicker-prev:after{transform:rotate(135deg)}body.rtl .ui-datepicker-prev:after{transform:rotate(-45deg)}.ui-datepicker-next:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;width:.4375rem}body.ltr .ui-datepicker-next:after{transform:rotate(-45deg)}body.rtl .ui-datepicker-next:after{transform:rotate(135deg)}.ui-datepicker-title{text-align:center}.ui-datepicker-calendar td,.ui-datepicker-calendar th{padding:2px!important}.ui-datepicker-calendar td a,.ui-datepicker-calendar th span{color:var(--text-color);display:block;line-height:26px;text-align:center;width:1.625rem}.ui-datepicker-calendar th span{color:var(--medium-text-color);font-weight:400}.ui-datepicker-calendar td a{border-radius:2px}.ui-datepicker-calendar td a:hover{background-color:var(--light-sel-color);text-decoration:none}.ui-datepicker-calendar td a.ui-state-active{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.ui-datepicker-calendar td.ui-datepicker-today a{border-radius:13px;box-shadow:inset 0 0 0 2px var(--light-sel-color)}.ui-timepicker-wrapper{z-index:101}.ui-timepicker-list{height:210px;overflow-y:auto;width:calc(14px + 6em);z-index:100}body.ltr .ui-timepicker-list{margin-left:1px}body.rtl .ui-timepicker-list{margin-right:1px}.ui-timepicker-list li{cursor:pointer;white-space:nowrap}body.ltr .ui-timepicker-list li{padding:2px 0 2px 14px}body.rtl .ui-timepicker-list li{padding:2px 14px 2px 0}.ui-timepicker-list li:hover{background-color:var(--light-sel-color)}.ui-timepicker-list li.ui-timepicker-selected{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.slide-picker{display:flex;height:1rem;white-space:nowrap}.slide-picker a{background-image:none;border:1px solid var(--hairline-color);box-sizing:border-box;cursor:pointer;height:calc(1rem - 2px);margin-bottom:1px;margin-left:0;margin-top:1px;position:relative;width:calc(.5rem - 1px)}body.ltr .slide-picker a{border-left:none}body.rtl .slide-picker a{border-right:none}.slide-picker a:first-child{width:.5rem}body.ltr .slide-picker a:first-child{border-left:1px solid var(--gray-400)!important}body.rtl .slide-picker a:first-child{border-right:1px solid var(--gray-400)!important}.slide-picker a:before{content:"";height:var(--touch-target-size);left:-1px;position:absolute;top:calc(-.25rem - 1px);width:calc(100% + 2px)}.slide-picker:hover a.active-hover,.slide-picker:not(:hover) a.active{border-bottom-color:var(--gray-400);border-top-color:var(--gray-400);height:1rem;margin-bottom:0;margin-top:0}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-left:1px solid var(--gray-400)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-right:1px solid var(--gray-400)}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-top-left-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-top-right-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.active-hover:first-child,body.ltr .slide-picker:not(:hover) a.active:first-child{border-bottom-left-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.active-hover:first-child,body.rtl .slide-picker:not(:hover) a.active:first-child{border-bottom-right-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-right:1px solid var(--gray-400)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-left:1px solid var(--gray-400)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-top-right-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-top-left-radius:var(--small-border-radius)}body.ltr .slide-picker:hover a.last-active-hover,body.ltr .slide-picker:not(:hover) a.last-active{border-bottom-right-radius:var(--small-border-radius)}body.rtl .slide-picker:hover a.last-active-hover,body.rtl .slide-picker:not(:hover) a.last-active{border-bottom-left-radius:var(--small-border-radius)}.slide-picker:focus a.active{background-color:var(--light-sel-color)}.icon-picker{align-items:center;display:flex;flex-direction:row;gap:var(--xs)}.icon-picker--icon{align-items:center;background-clip:padding-box;background-color:#fbfcfe;background:var(--gray-050);border:1px solid rgba(96,125,159,.25);border-radius:3px;border-radius:var(--ui-control-border-radius);display:flex;height:var(--ui-control-height);justify-content:center;width:var(--ui-control-height)}.icon-picker--icon svg{height:1.25rem;width:1.25rem}.icon-picker--icon svg circle,.icon-picker--icon svg ellipse,.icon-picker--icon svg line,.icon-picker--icon svg path,.icon-picker--icon svg polygon,.icon-picker--icon svg polyline,.icon-picker--icon svg rect,.icon-picker--icon svg text{fill:var(--ui-control-color);stroke-width:0}.icon-picker-modal{--width:calc(var(--ui-control-height)*10 + var(--s)*9 + var(--xl)*2);max-width:calc(100% - 20px)!important;min-width:0!important;width:var(--width)!important}.icon-picker-modal .body{display:flex;flex-direction:column;gap:var(--l);height:100%}.icon-picker-modal .body .icon-picker-modal--list{flex:1;overflow:hidden;position:relative}.icon-picker-modal .body .icon-picker-modal--list:not(.loading) .spinner{display:none}.icon-picker-modal .body .icon-picker-modal--list.loading:after{background-color:hsla(0,0%,100%,.75);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.icon-picker-modal .body .icon-picker-modal--list.loading .spinner{top:calc(50% - 10px);z-index:1}.icon-picker-modal .body .icon-picker-modal--list ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--s);justify-content:start;max-height:100%;overflow:auto}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon{--focus-ring:var(--inner-focus-ring)}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon:hover{background-color:var(--blue-100);border-color:var(--link-color)}ul.errors{list-style-type:square;margin-top:5px}body.ltr ul.errors{padding-left:20px}body.rtl ul.errors{padding-right:20px}ul.errors li{color:var(--error-color)}.message-container{height:100%;position:absolute;top:0;width:100%;z-index:100}body.ltr .message-container{left:0}body.rtl .message-container{right:0}.message-container.no-access{background-color:rgba(31,41,51,.5)}.message-container .pane{box-shadow:0 25px 100px rgba(31,41,51,.5);margin-left:auto;margin-right:auto;margin-top:-33px!important;top:50%;width:320px}body.setup-2fa{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%}body.setup-2fa #setup-2fa{display:flex;flex-direction:column;gap:var(--l);max-width:100%;padding:var(--padding);width:550px}body.setup-2fa #setup-2fa #setup-2fa-intro{text-align:center}body.licensing-issues,body.setup-2fa #setup-2fa #setup-2fa-btn{display:flex;justify-content:center}body.licensing-issues{align-items:center;flex-direction:column;min-height:100%;padding:var(--padding)}body.licensing-issues #licensing-issues{display:flex;flex-direction:row;max-width:50em}body.licensing-issues #licensing-issues .buttons{justify-content:space-between}body.licensing-issues #licensing-issues .buttons [data-icon]{margin-left:0;margin-right:0}body.licensing-issues #continue{margin:0}.autosuggest-container{position:relative}.autosuggest__results-container{background-color:var(--white);border-radius:var(--large-border-radius);box-shadow:0 1px 5px -1px rgba(31,41,51,.2);box-sizing:border-box;font-family:system-ui,BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1em!important;padding:0 14px;position:absolute;text-align:left;width:100%;z-index:2}.autosuggest__results-container .autosuggest__results-before{color:#606d7b;font-size:11px;line-height:1.2;margin:14px 0 3px;margin-top:14px!important;text-transform:uppercase}.autosuggest__results-container .autosuggest__results-item{color:#3f4d5a;margin:0 -14px;overflow:hidden;padding:10px 14px;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted,.autosuggest__results-container .autosuggest__results-item:hover{background-color:var(--dark-sel-color);color:var(--white)!important;cursor:pointer}.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg circle,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg ellipse,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg line,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg path,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polygon,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polyline,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg rect,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg text,.autosuggest__results-container .autosuggest__results-item:hover svg circle,.autosuggest__results-container .autosuggest__results-item:hover svg ellipse,.autosuggest__results-container .autosuggest__results-item:hover svg line,.autosuggest__results-container .autosuggest__results-item:hover svg path,.autosuggest__results-container .autosuggest__results-item:hover svg polygon,.autosuggest__results-container .autosuggest__results-item:hover svg polyline,.autosuggest__results-container .autosuggest__results-item:hover svg rect,.autosuggest__results-container .autosuggest__results-item:hover svg text{fill:var(--white);stroke-width:0}.matrix>.buttons{margin-top:10px}.matrixblock{background-color:var(--white);border:2px solid var(--gray-100);border-radius:var(--large-border-radius);margin-bottom:10px;padding:0 var(--m) var(--m);position:relative}.matrixblock.static .titlebar{margin-bottom:14px}body.ltr .matrixblock.static .titlebar{padding-right:0}body.rtl .matrixblock.static .titlebar{padding-left:0}body.ltr .matrixblock.static .titlebar{padding-left:14px}body.rtl .matrixblock.static .titlebar{padding-right:14px}.matrixblock>.actions .action-btn,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){background-color:transparent;color:var(--custom-text-color,var(--ui-control-color));height:var(--touch-target-size);padding:0;width:var(--touch-target-size)}.matrixblock>.actions .action-btn:hover,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):hover{-webkit-backdrop-filter:brightness(90%);backdrop-filter:brightness(90%)}.matrixblock>.actions .action-btn:active,.matrixblock>.actions .action-btn[aria-expanded=true],.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):active,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn)[aria-expanded=true]{-webkit-backdrop-filter:brightness(85%);backdrop-filter:brightness(85%)}.matrixblock .flex-fields{--row-gap:var(--m)!important}.matrixblock .hidden+.field{margin-top:0}.matrixblock>.titlebar{align-items:center;border-radius:calc(var(--large-border-radius) - 2px) calc(var(--large-border-radius) - 2px) 0 0;box-sizing:border-box;color:var(--custom-text-color,var(--light-text-color));display:grid;gap:var(--m);grid-template-columns:auto 1fr;margin:0 calc(var(--m)*-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-wrap:normal;background-color:var(--gray-050);cursor:default;min-height:calc(var(--lh) + 10px);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .matrixblock>.titlebar{padding:5px calc(var(--m) + 70px) 5px var(--m)}body.rtl .matrixblock>.titlebar{padding:5px var(--m) 5px calc(var(--m) + 70px)}.matrixblock>.titlebar>.preview{flex-grow:1;min-width:0;opacity:0;overflow:hidden;transition:opacity .1s linear}.matrixblock>.titlebar>.preview:empty{display:none}body.ltr .matrixblock>.titlebar>.preview{-webkit-mask-image:linear-gradient(270deg,transparent,#000 12px);mask-image:linear-gradient(270deg,transparent,#000 12px)}body.rtl .matrixblock>.titlebar>.preview{-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px);mask-image:linear-gradient(90deg,transparent,#000 12px)}.matrixblock>.titlebar>.preview span{opacity:.5}.matrixblock>.titlebar>.matrixblock-tabs{flex:1;margin:-5px 0;min-width:0}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{margin:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-right:3px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-left:3px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist]{padding:0 12px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist].scrollable{-webkit-mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent);mask-image:linear-gradient(90deg,transparent,#000 12px,#000 calc(100% - 12px),transparent)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab]{background-color:transparent}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab] .tab-label{height:calc(var(--lh) + 10px);padding:0 var(--m)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){margin-left:0;margin-right:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-left:0}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after{margin-right:0}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-left:calc((var(--m) + 12px)*-1)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-right:calc((var(--m) + 12px)*-1)}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-left-radius:calc(var(--large-border-radius) - 2px)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-right-radius:calc(var(--large-border-radius) - 2px)}body.ltr .matrixblock.disabled-entry>.titlebar{padding-right:100px}body.rtl .matrixblock.disabled-entry>.titlebar{padding-left:100px}.matrixblock.disabled-entry>.actions>.status.off{display:block}.matrixblock.collapsed>.titlebar{border-radius:calc(var(--large-border-radius) - 2px)}.matrixblock.collapsed>.titlebar>.preview{opacity:1}.matrixblock>.actions{align-items:center;cursor:default;display:flex;gap:var(--xs);min-height:calc(var(--lh) + 10px);position:absolute;top:0}body.ltr .matrixblock>.actions{right:var(--m)}body.rtl .matrixblock>.actions{left:var(--m)}.matrixblock>.actions>*{margin:0!important}.matrixblock>.actions>.status.off{display:none}.matrixblock>.actions a:not([data-action]){color:var(--dark-hairline-color);height:var(--touch-target-size);padding:0;text-align:center;transform:color linear .1s}.matrixblock>.actions a:not([data-action]):hover{color:var(--link-color)}.matrixblock>.actions a:not([data-action]):hover.settings:after{border-color:var(--link-color)}.matrixblock:not(.static)>.fields{padding-top:var(--l)}.matrixblock>.fields>.flex-fields>.field:before{display:none}body.ltr .matrixblock>.fields>.flex-fields>.field>.status-badge{left:-2px}body.rtl .matrixblock>.fields>.flex-fields>.field>.status-badge{right:-2px}.matrixblock>.buttons{height:30px;margin-top:0}.add-category-form{margin-top:24px}.add-category-form .texticon{width:200px}body.ltr .add-category-form .texticon{float:left}body.rtl .add-category-form .texticon{float:right}body.ltr .add-category-form .texticon{margin-right:5px}body.rtl .add-category-form .texticon{margin-left:5px}body.ltr .add-category-form .texticon .text{padding-right:30px}body.rtl .add-category-form .texticon .text{padding-left:30px}.add-category-form .texticon .spinner{position:absolute;top:0}body.ltr .add-category-form .texticon .spinner{right:5px}body.rtl .add-category-form .texticon .spinner{left:5px}body.sitepicker #main-content{align-items:center;justify-content:center;padding:30px;text-align:center}body.sitepicker #content-container{max-width:400px}.sitepicker-group li:not(:first-child) a{border-top-left-radius:0;border-top-right-radius:0;margin-top:-1px}.sitepicker-group li:not(:first-child) a:not(:hover){border-top-color:transparent}.sitepicker-group li:not(:last-child) a{border-bottom-left-radius:0;border-bottom-right-radius:0}.sitepicker-group li a{border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);box-sizing:border-box;display:block;font-size:16px;line-height:1.4;position:relative;text-align:left;width:100%}body.ltr .sitepicker-group li a{padding:9px 42px 9px 15px}body.rtl .sitepicker-group li a{padding:9px 15px 9px 42px}.sitepicker-group li a:after{font-size:14px;margin:0;padding:0;position:absolute;top:calc(50% - 7px)}body.ltr .sitepicker-group li a:after{right:12px}body.rtl .sitepicker-group li a:after{left:12px}.sitepicker-group li a:hover{border-color:var(--link-color);text-decoration:none;z-index:1}.elementselectormodal .body .main{float:left\9;width:445px\9}@media only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx){.structure ul li{background-size:40px}body.ltr .structure ul li{background-image:url(../images/branch_2x.png)}body.rtl .structure ul li{background-image:url(../images/branch_rtl_2x.png)}.hud .tip-left{background-image:url(../images/hudtip_left_2x.png);background-size:15px 30px}.hud .tip-top{background-image:url(../images/hudtip_top_2x.png);background-size:30px 15px}.hud .tip-right{background-image:url(../images/hudtip_right_2x.png);background-size:15px 30px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom_2x.png);background-size:30px 15px}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray_2x.png)}}:root{--xs:4px;--s:8px;--m:14px;--l:18px;--xl:24px;--padding:var(--xl);--neg-padding:calc(var(--padding)*-1);--sidebar-width:14.125rem;--global-sidebar-width:14.125rem;--header-height:2.75rem;--details-width:350px}html{-webkit-text-size-adjust:100%}body,html{min-height:100vh}body.dragging *{cursor:move!important;cursor:grabbing!important}body :focus{box-shadow:var(--focus-ring);outline-color:transparent;outline-style:solid}.reduce-focus-visibility :focus:not(:focus-visible){box-shadow:none}.reduce-focus-visibility :focus-visible{box-shadow:var(--focus-ring)}.skip-link{height:1px;left:-10000px;margin:5px;overflow:hidden;position:absolute;top:0;width:1px;z-index:101}.skip-link:focus{background-color:var(--gray-100)!important;height:auto;left:unset;width:auto}body.ltr .skip-link:focus{left:0}body.rtl .skip-link:focus{right:0}@media only screen and (min-width:75rem){#global-skip-link{--light-color:var(--white);--dark-color:var(--gray-800);--focus-ring:0 0 0 3px var(--dark-color),0 0 0 6px var(--light-color)}}#global-container{display:flex;min-height:100vh;position:relative}@media screen and (prefers-reduced-motion:no-preference){body.ltr #global-container{transition:left .1s cubic-bezier(.33,1,.68,1)}body.rtl #global-container{transition:right .1s cubic-bezier(.33,1,.68,1)}}#global-header{grid-template-columns:1fr min-content min-content}#global-header,#system-info{align-items:center;display:grid}#system-info{background-clip:padding-box;border-bottom:1px solid var(--hairline-color);color:currentColor;flex:0 0 2.8125rem;flex-direction:row;gap:10px;grid-template-columns:var(--prefix-width) auto;height:2.8125rem;padding:0 var(--gutter-width);position:relative}#system-info:after{display:none}#system-info:focus,#system-info:hover{background-color:var(--gray-200);text-decoration:none}#site-icon{--size:var(--prefix-width);height:var(--size)}#site-icon img,#site-icon svg{border-radius:4px;display:block;height:var(--size);width:var(--size)}#site-icon svg circle,#site-icon svg ellipse,#site-icon svg line,#site-icon svg path,#site-icon svg polygon,#site-icon svg polyline,#site-icon svg rect,#site-icon svg text{fill:var(--medium-text-color);stroke-width:0}#system-name .h2,#system-name h2{display:-webkit-box;margin:0;max-height:40px;overflow:hidden;position:relative;width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media only screen and (min-width:75rem){[data-sidebar=collapsed] #system-info:hover #system-name{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] #system-name{background:#fff;border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);color:var(--text-color);left:calc(100% + var(--s)*2);opacity:0;padding:var(--xs) var(--s);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%) translateX(-5px);white-space:nowrap}[data-sidebar=collapsed] #system-name:focus{box-shadow:var(--focus-ring)}}@media only screen and (min-width:75rem)and (prefers-reduced-motion:no-preference){[data-sidebar=collapsed] #system-name{transition:opacity 50ms cubic-bezier(.33,1,.68,1),transform .15s cubic-bezier(.33,1,.68,1)}}#global-footer{align-items:center;display:flex;flex-direction:column;gap:var(--m);padding:var(--m) var(--m) var(--xl)}body.has-debug-toolbar #global-footer{padding-bottom:calc(var(--xl) + 42px)}#global-footer a{white-space:nowrap}#app-info{display:flex;flex-direction:row;gap:var(--m);justify-content:center}#trial-info{background-color:var(--gray-150);border-radius:var(--large-border-radius);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px #bdcbdb,0 2px 12px rgba(205,216,228,.5);padding:16px var(--xl);text-align:center}#app-version{align-items:center;color:var(--gray-600);display:flex;font-size:12px;gap:var(--s);justify-content:center;text-align:center}#app-version a{text-decoration:underline}#app-version a,#app-version a.go:hover:after{color:var(--gray-600)}#edition-logo{border:1px solid var(--gray-600);border-radius:3px;box-sizing:content-box;display:inline-flex;font-size:11px;font-weight:600;letter-spacing:1.7px;line-height:8px;padding:6px 5px 6px 7px;position:relative;text-transform:uppercase;top:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#devmode{background:url(../images/dev-mode.svg) repeat-x 21px 0,var(--gray-900);cursor:help;flex:0 0 4px;margin-top:auto;min-height:4px;width:100%}#page-container{display:flex;flex-direction:column;flex-grow:1}#alerts{background-color:var(--red-050);border-left:6px solid var(--error-color);color:var(--error-color);position:relative}#alerts>li{box-shadow:inset 0 -1px 0 0 var(--red-100);padding:10px 24px}#alerts>li .resolvable-alert-buttons{margin-top:var(--m)}#alerts>li .btn,#alerts>li a.go{align-items:center;border:1px solid rgba(220,38,38,.5);border-radius:var(--medium-border-radius);color:var(--error-color);display:inline-flex;height:1.875rem;margin:0 2px;padding:4px 5px}.flex #alerts>li .btn,.flex #alerts>li a.go{margin:0}#alerts>li .btn:hover,#alerts>li a.go:hover{border-color:var(--error-color)}#alerts>li a:not(.btn){color:var(--error-color);text-decoration:underline}#alerts>li a:not(.btn).go{text-decoration:none;white-space:nowrap}#alerts>li a:not(.btn).go:after{color:var(--error-color);font-size:15px;margin-top:1px}#alerts>li .btn{background-color:transparent}#global-header .btn.menubtn,.btn.action-btn,li.crumb .btn.menubtn{height:var(--touch-target-size);padding:0;width:var(--touch-target-size)}#global-header .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),.btn.action-btn:not(:hover):not(:active):not([aria-expanded=true]),li.crumb .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]){background-color:transparent}#global-header{border-bottom:1px solid var(--hairline-color);margin-bottom:var(--m);width:100%}#global-header .flex{align-items:center;height:var(--header-height)}#global-header .btn{--ui-control-color:var(--gray-400);--ui-control-hover-color:var(--gray-800);--ui-control-active-color:var(--gray-700)}#global-header .btn:hover{color:var(--ui-control-hover-color)}.nav-toggle{align-items:center;border-right:1px solid var(--medium-hairline-color);color:currentColor;display:flex;height:var(--header-height);justify-content:center;line-height:26px;min-width:44px;text-align:center;width:44px}.nav-toggle:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;content:"menu";font-size:16px;line-height:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nav-toggle:hover{color:var(--link-color)}#crumbs{align-items:center;display:flex;flex-direction:row;font-size:13px;margin:0!important;max-width:100%;overflow:hidden}#crumbs.empty{display:none}#crumbs nav{margin:0}#primary-nav-toggle:focus-visible{box-shadow:var(--inner-focus-ring)}#crumb-list{align-items:stretch;display:flex;flex-direction:row;flex-wrap:nowrap;height:var(--header-height);max-width:100%;--arrow-padding:10;--arrow-height:22;--arrow-angle:35;--arrow-width:17.1111;--arrow-c:27.871}body.rtl #crumb-list{--arrow-angle:-35;--arrow-width:-19.4444}#crumb-list li.crumb{color:var(--light-text-color);cursor:default;position:relative}body.ltr #crumb-list li.crumb{padding-left:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb{padding-right:calc(var(--arrow-width)*.5rem/16)}body.ltr #crumb-list li.crumb:not(.current){padding-right:calc(var(--arrow-width)*1.125rem/16)}body.rtl #crumb-list li.crumb:not(.current){padding-left:calc(var(--arrow-width)*1.125rem/16)}#crumb-list li.crumb:not(.current):after,#crumb-list li.crumb:not(.current):before{background:var(--medium-hairline-color);content:"";display:block;height:calc(var(--arrow-c)*1rem/16);pointer-events:none;position:absolute;width:1px}body.ltr #crumb-list li.crumb:not(.current):after,body.ltr #crumb-list li.crumb:not(.current):before{right:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb:not(.current):after,body.rtl #crumb-list li.crumb:not(.current):before{left:calc(var(--arrow-width)*.5rem/16)}#crumb-list li.crumb:not(.current):before{top:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle)*-1deg))}#crumb-list li.crumb:not(.current):after{bottom:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle)*1deg))}#crumb-list .menu--disclosure li{display:block}#crumb-list .menu--disclosure li:after{content:none}#crumb-menu-trigger{min-width:var(--touch-target-size)}#crumb-menu-trigger:before{width:100%}#crumb-menu .chip{min-height:44px}li.crumb{align-items:center;display:flex;flex-wrap:nowrap;gap:var(--xs)}li.crumb [data-icon]{position:relative;top:-1px}li.crumb .menubtn{margin:0 calc(var(--xs)*-1/2);position:relative}li.crumb [data-icon=ellipsis]:before{font-size:17px;margin-top:3px}li.crumb .chip{background-color:transparent;padding:0;--custom-bg-color:initial!important;--custom-text-color:initial!important;--custom-sel-bg-color:initial!important}li.crumb .chip .label-link{max-width:15em}li.crumb .chip .label-link:focus-visible{box-shadow:var(--inner-focus-ring)}li.crumb .chip .label-link span:not(.context-label){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}li.crumb:has(.menubtn)>a{margin-right:0!important;padding-right:var(--xs)!important}li.crumb>a{align-items:center;display:flex!important;flex:1;flex-wrap:nowrap;gap:var(--xs);white-space:nowrap}.menu--disclosure li.crumb>a{min-height:34px}li.crumb a,li.crumb button{align-items:center;display:inline-flex;min-height:var(--touch-target-size)}li.crumb a:not(:hover),li.crumb button:not(:hover){color:var(--text-color)}li.crumb a:not(:hover) svg circle,li.crumb a:not(:hover) svg ellipse,li.crumb a:not(:hover) svg line,li.crumb a:not(:hover) svg path,li.crumb a:not(:hover) svg polygon,li.crumb a:not(:hover) svg polyline,li.crumb a:not(:hover) svg rect,li.crumb a:not(:hover) svg text,li.crumb button:not(:hover) svg circle,li.crumb button:not(:hover) svg ellipse,li.crumb button:not(:hover) svg line,li.crumb button:not(:hover) svg path,li.crumb button:not(:hover) svg polygon,li.crumb button:not(:hover) svg polyline,li.crumb button:not(:hover) svg rect,li.crumb button:not(:hover) svg text{fill:var(--text-color);stroke-width:0}li.crumb a:hover,li.crumb button:hover{text-decoration:none}li.crumb a{position:relative}li.crumb button{cursor:pointer}li.breadcrumb-toggle-wrapper:after{content:none}#account-menu ul li a{max-width:calc(100% + 28px)!important}#announcements-btn{height:1.875rem;padding-left:0;padding-right:0;position:relative;width:1.875rem;width:calc(1.75rem + 10px)}#announcements-btn:not(:hover):not(:active):not(.active){background-color:transparent}#announcements-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}#announcements-btn.unread:after{background-color:var(--blue-600);border-radius:50%;content:"";display:block;height:.4375rem;position:absolute;top:.1875rem;width:.4375rem}body.ltr #announcements-btn.unread:after{right:5px}body.rtl #announcements-btn.unread:after{left:5px}#announcements-btn svg{height:1rem;width:1rem}#announcements-btn svg circle,#announcements-btn svg ellipse,#announcements-btn svg line,#announcements-btn svg path,#announcements-btn svg polygon,#announcements-btn svg polyline,#announcements-btn svg rect,#announcements-btn svg text{fill:var(--ui-control-color);stroke-width:0}#announcements-btn.active svg circle,#announcements-btn.active svg ellipse,#announcements-btn.active svg line,#announcements-btn.active svg path,#announcements-btn.active svg polygon,#announcements-btn.active svg polyline,#announcements-btn.active svg rect,#announcements-btn.active svg text,#announcements-btn:active svg circle,#announcements-btn:active svg ellipse,#announcements-btn:active svg line,#announcements-btn:active svg path,#announcements-btn:active svg polygon,#announcements-btn:active svg polyline,#announcements-btn:active svg rect,#announcements-btn:active svg text,#announcements-btn:hover svg circle,#announcements-btn:hover svg ellipse,#announcements-btn:hover svg line,#announcements-btn:hover svg path,#announcements-btn:hover svg polygon,#announcements-btn:hover svg polyline,#announcements-btn:hover svg rect,#announcements-btn:hover svg text{fill:var(--ui-control-active-color);stroke-width:0}#announcements{max-width:350px}#announcements .announcement:not(:first-child){margin-top:20px}#announcements .announcement .announcement-label-container{align-items:center;display:flex;margin-bottom:3px;margin-top:-3px}#announcements .announcement .announcement-label-container .announcement-icon svg{display:block;height:15px;width:15px}#announcements .announcement .announcement-label-container .announcement-label{color:var(--light-text-color);font-size:12px;margin-left:5px}#announcements .announcement.unread .announcement__heading:after{background-color:var(--blue-600);border-radius:4px;content:"";display:block;height:7px;position:absolute;top:7px;width:7px}body.ltr #announcements .announcement.unread .announcement__heading:after{left:-13px}body.rtl #announcements .announcement.unread .announcement__heading:after{right:-13px}#announcements .announcement p{margin:0}#announcements .announcement__header{display:grid}#announcements .announcement__heading{margin:0 0 3px;order:1;position:relative}#user-info{align-items:center;background-color:transparent;border-radius:0;display:flex;flex-direction:row;height:100%;padding-bottom:5px;padding-top:5px}body.ltr #user-info{padding-left:var(--s)}body.rtl #user-info{padding-right:var(--s)}body.ltr #user-info{padding-right:calc(var(--padding) + 1px)}body.rtl #user-info{padding-left:calc(var(--padding) + 1px)}#user-info:after{border-color:var(--ui-control-color);transition:border-color .1s linear}#user-info:hover:after{border-color:var(--ui-control-hover-color)}#user-info[aria-expanded=true]:after{border-color:var(--ui-control-active-color)}.header-photo img,.header-photo svg{border-radius:50%;box-shadow:0 0 0 1px rgba(31,41,51,.05),0 0 0 rgba(31,41,51,0);display:block;height:1.875rem;max-width:none;transition:box-shadow .15s linear;width:1.875rem}#user-info:hover .header-photo img,#user-info:hover .header-photo svg{box-shadow:0 0 0 1px rgba(31,41,51,.05),0 2px 10px -2px rgba(31,41,51,.3)}#main-container{flex-grow:1;position:relative}#notifications{bottom:8px;position:fixed;width:calc(100% - 16px);z-index:101}body.ltr #notifications{left:8px}body.rtl #notifications{right:8px}body.has-debug-toolbar #notifications{bottom:50px}@media only screen and (min-width:60.875rem){#notifications{width:350px}}#notifications .notification{background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);box-shadow:0 0 0 1px rgba(19,26,32,.15),0 2px 12px rgba(19,26,32,.15);display:flex;padding:10px 14px;position:relative;--color:var(--notice-color)}#notifications .notification:focus{box-shadow:var(--focus-ring)}#notifications .notification[data-type=success]{--color:var(--success-color)}#notifications .notification[data-type=error]{--color:var(--error-color)}#notifications .notification+.notification{margin-top:12px}#notifications .notification .notification-icon{color:var(--color);font-size:18px;margin-top:-2px;width:18px}body.ltr #notifications .notification .notification-icon{margin-right:10px}body.rtl #notifications .notification .notification-icon{margin-left:10px}#notifications .notification .notification-main{overflow:hidden}#notifications .notification .notification-body{display:grid;gap:var(--s);grid-template-columns:20px 1fr;width:100%}#notifications .notification .notification-body .notification-message{font-weight:700;overflow-wrap:anywhere;word-break:normal}#notifications .notification .notification-body .notification-details{margin-top:var(--xs)}#notifications .notification .notification-body .notification-details .chip{border:1px solid rgba(51,64,77,.1)}#notifications .notification .notification-close-btn{position:relative;top:-2px}body.ltr #notifications .notification .notification-close-btn{margin-left:10px}body.rtl #notifications .notification .notification-close-btn{margin-right:10px}#header-container{margin-bottom:var(--m)}@media only screen and (min-width:75rem){#primary-nav-toggle{display:none}body.ltr #crumbs.empty+.context-menu-container,body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{margin-left:var(--padding)}body.rtl #crumbs.empty+.context-menu-container,body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{margin-right:var(--padding)}body.ltr #crumbs.empty+.context-menu-container,body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{padding-left:0}body.rtl #crumbs.empty+.context-menu-container,body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child{padding-right:0}}#global-header .flex,#header .flex{max-width:100%}#global-header .flex.flex-nowrap,#header .flex.flex-nowrap{min-width:0}#header{align-content:stretch;align-items:flex-start;background-color:rgba(154,165,177,0);box-shadow:0 1px 0 rgba(51,64,77,0);box-sizing:border-box;display:flex;flex-wrap:nowrap;gap:var(--s);justify-content:space-between;padding:5px var(--padding);position:relative;transition:background-color .1s linear,box-shadow .1s linear;z-index:2}body.fixed-header #header{background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.1);position:fixed;top:0;z-index:12}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){#header{transition:background-color .1s linear,box-shadow .1s linear,-webkit-backdrop-filter .1s linear;transition:background-color .1s linear,box-shadow .1s linear,backdrop-filter .1s linear;transition:background-color .1s linear,box-shadow .1s linear,backdrop-filter .1s linear,-webkit-backdrop-filter .1s linear}body.fixed-header #header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75)}}#header h1{line-height:34px;margin-bottom:0;min-width:0}#header .btngroup,#header .buttons,#header h1{margin-top:0}@media only screen and (min-width:60.875rem){#page-title.has-toolbar{min-width:calc(14.125rem - var(--xl) - var(--s))!important}}#toolbar{align-items:flex-start;flex:1;justify-content:space-between}#toolbar .icon:before,#toolbar .menubtn:after,#toolbar .texticon:before,#toolbar [data-icon-after]:after,#toolbar [data-icon]:before{color:currentColor;opacity:.8}#toolbar .text{border-radius:var(--large-border-radius)}#toolbar .text:-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text::-moz-placeholder{color:var(--light-text-color)}#toolbar .text::placeholder{color:var(--light-text-color)}#toolbar .text:not(:focus){background-clip:border-box}@media only screen and (max-width:400px){#action-buttons .btngroup .btn:first-child{flex-basis:100%}}@media only screen and (max-width:60.8125rem){#action-buttons{flex-direction:row-reverse;justify-content:start;margin-top:10px}}#main-content{align-items:flex-start;box-sizing:border-box;display:flex;flex-direction:row;padding:0 var(--padding) 48px}#main-content>.grid:only-child{flex:1}#sidebar-toggle-container{display:none}#sidebar-container{box-sizing:border-box;flex:0 0 14.125rem;width:14.125rem}@media only screen and (min-width:75rem){body.ltr #sidebar-container{margin-left:calc(var(--xl)*-1)}body.rtl #sidebar-container{margin-right:calc(var(--xl)*-1)}}#sidebar{background-color:transparent;box-sizing:border-box;padding:0 40px var(--m);position:relative;width:14.125rem}#sidebar.fixed{position:fixed}#sidebar nav{margin-left:-31px;margin-right:-31px}#sidebar nav li a{position:relative}#sidebar nav li a:focus{z-index:1}#sidebar nav li a:not(.sel):hover{background-color:var(--gray-200)}#sidebar .skip-link{margin:0 var(--s)}@media only screen and (min-width:75rem){#sidebar{padding:0 31px var(--m)}}#content-container{flex:1 1 auto;width:400px}.content-pane{background:#fff;background-clip:padding-box;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:var(--xl) var(--padding);position:relative;word-wrap:break-word}.content-pane:focus{box-shadow:var(--focus-ring)}.content-pane>hr{margin-left:calc(var(--xl)*-1);margin-right:calc(var(--xl)*-1)}#footer,.footer{line-height:2rem;min-height:44px;padding:6px var(--pane-padding,var(--xl))}#footer .buttons,.footer .buttons{align-items:center;display:flex;height:32px}#footer .btn,.footer .btn{height:var(--ui-control-height--small);padding-bottom:4px;padding-top:4px}#footer{background-color:var(--gray-050);border-radius:var(--small-border-radius);border-top:2px solid var(--white);bottom:0;box-sizing:border-box;margin:calc(var(--s) + 1px) calc(var(--padding)*-1 + 2px) calc(var(--xl)*-1 + 2px);position:sticky;z-index:1}#footer:empty{display:none}#footer.stuck{border-radius:0}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){#footer.stuck{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75)}}.has-debug-toolbar #footer{transition:padding .1s linear}.has-debug-toolbar #footer.stuck{padding-bottom:52px}#footer .flex>*,#footer>*{margin-bottom:0}#details-container[data-state=collapsed]{display:none}#details-container{display:block;flex:0 1 auto;width:calc(var(--details-width) + var(--m))}body.ltr #details-container{padding-left:var(--m)}body.rtl #details-container{padding-right:var(--m)}#details{display:none;display:block;width:350px;z-index:1}#details.fixed{position:fixed}#details .details{padding-bottom:calc(var(--xl) + 11.5em)}#details .details .meta{border-radius:var(--large-border-radius)}#details .details .meta:not(.read-only):not(.warning){background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details .meta:not(.read-only):not(.warning):focus{box-shadow:var(--focus-ring)}#details .details .meta.read-only{background-color:transparent!important;color:var(--medium-text-color)}#details .details .meta>.data:first-child,#details .details .meta>.field:first-child{border-top-right-radius:var(--large-border-radius)}#details .details .meta>.data:first-child,#details .details .meta>.data:first-child>.status-badge,#details .details .meta>.field:first-child,#details .details .meta>.field:first-child>.status-badge{border-top-left-radius:var(--large-border-radius)}#details .details .meta>.data:last-child,#details .details .meta>.field:last-child{border-bottom-right-radius:var(--large-border-radius)}#details .details .meta>.data:last-child,#details .details .meta>.data:last-child>.status-badge,#details .details .meta>.field:last-child,#details .details .meta>.field:last-child>.status-badge{border-bottom-left-radius:var(--large-border-radius)}#details .details>.field>.input>.text.fullwidth{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details>.field>.input>.text.fullwidth:focus{box-shadow:var(--focus-ring)}#details .details .notes{border-radius:var(--large-border-radius);padding-bottom:var(--m);padding-top:var(--m)}@media only screen and (max-width:74.9375rem){#global-container{width:calc(100vw + 14.125rem)}body.ltr #global-container{left:-14.125rem}body.rtl #global-container{right:-14.125rem}body.ltr.showing-nav #global-container{left:0}body.rtl.showing-nav #global-container{right:0}#crumbs{display:flex!important}#header,#main-content{width:100vw}#main-content.has-sidebar{padding-left:0}}@media only screen and (max-width:60.8125rem){#header{display:flex;flex-wrap:wrap}#header .flex:not(#toolbar){margin-top:10px}#toolbar{flex:auto;flex-wrap:wrap!important;order:3;width:100%}#toolbar>*{margin-top:10px!important}#action-buttons{order:2}body.fixed-header #header .flex:first-child{margin-top:0}#main-content{display:block}#main-content.has-sidebar{padding:0 var(--padding) 48px}#sidebar nav{margin-left:-40px;margin-right:-40px}#sidebar .skip-link{margin:0}#source-actions{margin-left:-9px;margin-top:var(--s)}#sidebar-toggle-container{display:block;margin-bottom:var(--s)}#sidebar-toggle:after{top:0;transform:rotate(45deg)}body.rtl #sidebar-toggle:after{transform:rotate(135deg)}#content-container{min-height:0!important}#details-container,#sidebar-container{display:block;padding-left:0!important;width:auto!important}#details-toggle{display:none}#details,#sidebar{max-height:none!important;overflow-y:visible!important;position:relative!important;width:auto}#sidebar{margin-bottom:var(--m)}body.showing-sidebar #sidebar{background:#fff;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding-block:.5rem}body.showing-sidebar #sidebar:focus{box-shadow:var(--focus-ring)}body:not(.showing-sidebar) #sidebar{display:none}body.ltr #details-container{margin-right:0}body.rtl #details-container{margin-left:0}#content-container{max-width:none!important;width:auto!important}#details{margin-top:var(--m);padding:0!important}#details .details{margin-bottom:auto}}@media only screen and (max-width:767px){:root{--padding:var(--s);--neg-padding:calc(var(--s)*-1)}#tabs ul li a{padding-left:var(--m);padding-right:var(--m)}body.ltr #tabs ul li+li{margin-left:-7px}body.rtl #tabs ul li+li{margin-right:-7px}.card-grid{display:flex!important;flex-direction:column}}body.ltr #settingsmenu ul li a{padding-left:46px}body.rtl #settingsmenu ul li a{padding-right:46px}#settingsmenu ul li a:before{font-size:15px}body.ltr #settingsmenu ul li a:before{margin:1px 0 0 -22px}body.rtl #settingsmenu ul li a:before{margin:1px -22px 0 0}#settingsmenu ul li a img{height:16px;margin-left:-23px;margin-top:1px;position:absolute;width:16px}.grid{min-height:1px;position:relative}.grid:after{clear:both;content:"";display:block;height:0;visibility:hidden}.grid>.item{display:none}.grid>.item,.sidebar{box-sizing:border-box}.sidebar{font-size:13px;width:14.125rem}.sidebar:not(.drag-helper){background-color:var(--gray-050);padding:var(--m) 0}.sidebar .heading{margin:0 var(--xl);position:relative}.sidebar .heading:not(:first-child){margin-top:var(--m)}.sidebar .heading>span{color:var(--medium-text-color);display:inline-block;font-size:11px;font-weight:700;margin:0 -5px;padding:0 5px;position:relative;text-transform:uppercase;z-index:1}.sidebar .heading>ul{margin:2px calc(var(--xl)*-1)}.sidebar nav{padding:0 var(--s)}body.ltr .sidebar nav>ul>li.heading>ul>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>a{padding-left:24px}body.rtl .sidebar nav>ul>li.heading>ul>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>a{padding-right:24px}body.ltr .sidebar nav>ul>li.heading>ul>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>.toggle{left:calc(var(--m)*0)}body.rtl .sidebar nav>ul>li.heading>ul>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>.toggle{right:calc(var(--m)*0)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>a{padding-left:38px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>a{padding-right:38px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle{left:calc(var(--m)*1)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle{right:calc(var(--m)*1)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a{padding-left:52px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a{padding-right:52px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*2)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*2)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:66px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:66px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*3)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*3)}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:80px}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:80px}body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*4)}body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*4)}.sidebar nav li{position:relative}.sidebar nav li:not(.has-subnav)>a:not(.sel):hover{text-decoration:none}.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.sel{background-color:var(--gray-500);cursor:default}.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.active-drop-target+.toggle,.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.sel+.toggle{color:var(--white)}.sidebar nav li:not(.has-subnav)>a.sel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sidebar nav li a{align-items:center;border-radius:var(--large-border-radius);box-sizing:border-box;color:var(--text-color);cursor:pointer;display:flex;flex-direction:row;margin-bottom:1px;min-height:var(--xl);padding:7px var(--xl);position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;word-break:break-word}.sidebar nav li a .status{flex-shrink:1}.sidebar nav li a .icon{flex-shrink:1;height:1.125rem;opacity:.85;position:relative;top:1px;transition:margin-left .15s linear,margin-right .15s linear;width:1.125rem;word-break:normal}body.ltr .sidebar nav li a .icon{margin-right:10px}body.rtl .sidebar nav li a .icon{margin-left:10px}.sidebar nav li a .icon.icon-mask svg circle,.sidebar nav li a .icon.icon-mask svg ellipse,.sidebar nav li a .icon.icon-mask svg line,.sidebar nav li a .icon.icon-mask svg path,.sidebar nav li a .icon.icon-mask svg polygon,.sidebar nav li a .icon.icon-mask svg polyline,.sidebar nav li a .icon.icon-mask svg rect,.sidebar nav li a .icon.icon-mask svg text{fill:currentColor;stroke-width:0}.sidebar nav li a .icon.icon-mask span[data-icon]{color:currentColor}.sidebar nav li a .icon svg{height:1rem;width:1rem}.sidebar nav li a .icon span[data-icon]{font-size:16px}.sidebar nav li a .icon span[data-icon]:before{display:block}.sidebar nav li a .label{flex:1}.sidebar nav li a .badge{background-color:var(--medium-text-color);border-radius:var(--s);color:var(--white);flex-shrink:1;font-size:.6875rem;line-height:16px;padding:0 6px}body.ltr .sidebar nav li a .badge{margin:0 -4px 0 10px}body.rtl .sidebar nav li a .badge{margin:0 10px 0 -4px}.sidebar nav li .toggle{align-items:center;display:flex;height:34px;justify-content:center;position:absolute;top:0;width:var(--xl);z-index:1}.sidebar nav li ul{display:none}.sidebar nav li.expanded>ul,.sidebar nav li.heading>ul{display:block}.error-summary{background:#fff;background-color:var(--gray-050);border-radius:var(--large-border-radius);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin-bottom:var(--l);padding:var(--l) var(--xl)}.error-summary:focus{box-shadow:var(--focus-ring)}.error-summary .notification-icon{color:var(--error-color);float:left;margin:-2px 6px 0 0}.error-summary h2{margin-top:0}.error-summary>ul.errors li,.error-summary>ul.errors li a{color:var(--text-color)}.error-summary>ul.errors li a em,.error-summary>ul.errors li em{font-weight:600}.error-summary>ul.errors li a:hover,.error-summary>ul.errors li:hover{color:var(--link-color)}.slideout .error-summary{background-color:rgba(var(--error-color-rgb),.03);border:1px solid var(--error-color);box-shadow:none;padding:var(--m)}.slideout .flex-fields .error-summary{margin:0 var(--row-gap) var(--row-gap)}body.ltr .content.has-sidebar:not(.hiding-sidebar){margin-left:14.125rem}body.rtl .content.has-sidebar:not(.hiding-sidebar){margin-right:14.125rem}#content-notice{margin:0 calc(var(--xl)*-1);padding:0 var(--xl)}#content-notice:not(:last-child){border-bottom:1px solid var(--hairline-color);margin-bottom:5px;padding-bottom:5px}#content :not(.meta)>.flex-fields,#content>.flex-fields,.draghelper .flex-fields,.so-content .flex-fields{--row-gap:var(--xl);align-content:flex-start;display:flex;flex-wrap:wrap;margin:0 calc(var(--row-gap)*-1) calc(var(--row-gap)*-1);width:calc(100% + var(--row-gap)*2)}#content :not(.meta)>.flex-fields>:not(.error-summary),#content>.flex-fields>:not(.error-summary),.draghelper .flex-fields>:not(.error-summary),.so-content .flex-fields>:not(.error-summary){box-sizing:border-box;margin:0 0 var(--row-gap)!important;padding:0 var(--row-gap)}#content :not(.meta)>.flex-fields>h2,#content>.flex-fields>h2,.draghelper .flex-fields>h2,.so-content .flex-fields>h2{flex:4 0 100%}#content :not(.meta)>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),#content>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.draghelper .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.so-content .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))){border-top:1px solid var(--hairline-color);padding-top:var(--xl)}#content :not(.meta)>.flex-fields>.line-break,#content :not(.meta)>.flex-fields>hr,#content>.flex-fields>.line-break,#content>.flex-fields>hr,.draghelper .flex-fields>.line-break,.draghelper .flex-fields>hr,.so-content .flex-fields>.line-break,.so-content .flex-fields>hr{flex:4 0 100%}#content :not(.meta)>.flex-fields>.line-break:not(:first-child),#content>.flex-fields>.line-break:not(:first-child),.draghelper .flex-fields>.line-break:not(:first-child),.so-content .flex-fields>.line-break:not(:first-child){margin-bottom:0!important}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break),#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,#content>.flex-fields>:not(h2):not(hr):not(.line-break),#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break),.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child,.so-content .flex-fields>:not(h2):not(hr):not(.line-break),.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child{position:relative;width:100%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{background-color:rgba(205,216,228,.5);content:"";height:100%;position:absolute;top:0;width:1px}body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{left:-1px}body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{right:-1px}@media only screen and (min-width:96rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25{width:25%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75{width:75%}}@media only screen and (min-width:37.5rem)and (max-width:95.9375rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}@media only screen and (min-width:75rem){.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}.global-sidebar{--is-always-visible:true;--prefix-width:1.875rem;--prefix-ratio:1;--gutter-width:0.625rem;display:grid;grid-auto-flow:row;grid-template-columns:var(--global-sidebar-width);grid-template-rows:var(--header-height) minmax(0,1fr) auto;height:100vh;padding:0;position:sticky;top:0;z-index:100;-webkit-overflow-scrolling:touch;background-color:var(--gray-150);border-inline-end:1px solid var(--hairline-color);width:var(--global-sidebar-width)}.global-sidebar a{text-decoration:none}.global-sidebar :not(.has-subnav)>a:not([href]),.global-sidebar>a:not([href]){background-color:transparent;cursor:default}@media only screen and (max-width:74.9375rem){.global-sidebar{--is-always-visible:false}}.global-sidebar__nav{overflow-x:hidden;overflow-y:auto;padding:var(--s) 0;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-scroll-chaining:none;overscroll-behavior:contain}.global-sidebar__footer{border-block-start:1px solid var(--hairline-color);margin-block-start:auto}.global-nav>ul{display:flex;flex-direction:column;gap:var(--s)}.global-nav>ul>li{position:relative}.nav-icon{align-items:center;aspect-ratio:1;display:inline-flex;flex-direction:column;justify-content:center;line-height:0;width:1rem;--thumb-size:1rem}.nav-icon>svg{height:100%;width:100%}.nav-icon>svg circle,.nav-icon>svg ellipse,.nav-icon>svg line,.nav-icon>svg path,.nav-icon>svg polygon,.nav-icon>svg polyline,.nav-icon>svg rect,.nav-icon>svg text{fill:currentColor;stroke-width:0}.nav-item{--gutter-width:0.625rem;align-items:center;display:grid;grid-template-areas:". action trigger ." "subnav subnav subnav subnav";grid-template-columns:var(--gutter-width) minmax(0,1fr) var(--prefix-width) var(--gutter-width);width:100%}.nav-item>.sidebar-action{grid-area:action}.nav-item__trigger{--icon-size:10px;--trigger-size:var(--touch-target-size);display:flex;grid-area:trigger;z-index:1}.nav-item__trigger .menubtn{align-items:center;border:transparent;flex-direction:column;height:var(--trigger-size);justify-content:center;padding:0;width:var(--trigger-size)}.nav-item__trigger .menubtn:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--medium-text-color);color:var(--white)}.nav-item__trigger .menubtn[aria-expanded=true]:not(:hover){background-color:transparent}.nav-item__trigger .menubtn[aria-expanded=true]:after{border:solid;border-width:0 .125rem .125rem 0;content:"";display:block;font-size:0;height:.4375rem;opacity:.8;position:relative;top:2px;transform:rotate(225deg);width:.4375rem}.nav-item__trigger .menubtn:after{margin-inline-start:0!important}.nav-item__subnav{--prefix-ratio:4/3;display:none;grid-area:subnav}.nav-item__subnav[data-state=expanded]{display:block}.badge{background-color:var(--medium-text-color);border-radius:var(--s);color:var(--white);display:inline-flex;font-size:11px;height:1rem;justify-content:center;line-height:1rem;min-width:1.1rem;padding:0 var(--xs);text-align:center}.sidebar-actions{padding:10px var(--gutter-width)}.sidebar-action{--thumb-size:0.75rem;align-items:center;border-radius:var(--medium-border-radius);color:currentColor;cursor:pointer;display:grid;font-weight:500;grid-template-columns:var(--prefix-width) minmax(0,1fr) auto;min-height:30px;padding-inline:var(--xs);position:relative;text-align:left;width:100%}.sidebar-action:before{content:"";height:80%;inset-block-start:50%;inset-inline-start:-.625rem;position:absolute;transform:translateY(-50%);width:var(--xs)}.sidebar-action:focus-visible,.sidebar-action:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;background-color:var(--medium-text-color);color:var(--white)}.sidebar-action.sel:before{--indicator-size:6px;background-color:var(--medium-text-color);color:var(--white)}.sidebar-action--sub{--indicator-size:4px;font-size:.9em;min-height:26px}.sidebar-action--sub:focus-visible:before,.sidebar-action--sub:hover:before{background-color:var(--white)}.sidebar-action--sub:before{background-color:currentColor;border-radius:100%;height:var(--indicator-size);top:50%;width:var(--indicator-size)}body.ltr .sidebar-action--sub:before{left:calc(15px - var(--indicator-size)/2)}body.rtl .sidebar-action--sub:before{right:calc(15px - var(--indicator-size)/2)}.sidebar-action--job{align-items:flex-start;grid-column:2/4!important}.sidebar-action--job .sidebar-action__label{flex-wrap:wrap;gap:var(--xs);padding-block:var(--xs)}.sidebar-action--job .label{white-space:normal}.sidebar-action--job .progress-label{color:var(--gray-300);display:block;font-size:11px;line-height:1.5;width:100%}.sidebar-action--job .nav-icon{display:block;height:16px;position:relative;width:16px}.sidebar-action--job .nav-icon>canvas{display:block;height:16px;position:absolute;width:16px}.sidebar-action--job #job-icon-hover{opacity:0}.sidebar-action--job:hover #job-icon-hover{opacity:1}.sidebar-action--job:hover #job-icon-static{opacity:0}.sidebar-action__prefix{align-items:center;aspect-ratio:var(--prefix-ratio);display:flex;flex-shrink:0;justify-content:center;line-height:0;width:var(--prefix-width)}.sidebar-action__label{align-items:center;display:flex;gap:var(--s);margin-inline-start:7px;overflow:hidden;padding:0 var(--xs);text-overflow:ellipsis;white-space:nowrap}.sidebar-action__label [data-icon=external]{display:inline-flex}.sidebar-action__badge{display:flex;flex:0 1 auto;flex-direction:column;justify-content:center;margin-inline-start:auto;padding:0 var(--s)}@media only screen and (min-width:75rem){[data-sidebar=collapsed] .global-sidebar{--global-sidebar-width:3.125rem}[data-sidebar=collapsed] .nav-item{grid-template-areas:". action ." ". trigger ." "subnav subnav subnav";grid-template-columns:var(--gutter-width) var(--prefix-width) var(--gutter-width)}[data-sidebar=collapsed] .nav-item__indicator{right:-1px}[data-sidebar=collapsed] .sidebar-action{min-height:var(--prefix-width);padding-inline:0;width:var(--prefix-width)}[data-sidebar=collapsed] .sidebar-action:focus-visible .sidebar-action__label,[data-sidebar=collapsed] .sidebar-action:hover .sidebar-action__label{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] .nav-item__trigger .menubtn{height:var(--touch-target-size);padding-block:2px var(--xs);width:100%}[data-sidebar=collapsed] .sidebar-action__label{display:none;opacity:0;z-index:10}[data-sidebar=collapsed] .sidebar-action__badge{bottom:var(--xs);padding:0;position:absolute;right:calc(var(--xs)*-1);transform:translateY(25%);z-index:100}[data-sidebar=collapsed] .sidebar-action--sub{min-height:26px}[data-sidebar=collapsed] .sidebar-action--sub:before{inset-block-start:50%;inset-inline-start:50%;transform:translateX(-50%) translateY(-50%)}[data-sidebar=collapsed] .global-nav>ul>li+li{--separator-width:1.75rem}[data-sidebar=collapsed] .global-nav>ul>li+li:before{background-color:var(--hairline-color);content:"";height:1px;inset-block-start:calc(var(--s)/-2);inset-inline-start:calc((var(--global-sidebar-width) - var(--separator-width))/2);margin:0 auto;position:absolute;width:var(--separator-width)}[data-sidebar=expanded] #sidebar-toggle-icon{transform:rotate(180deg)}}#sidebar-trigger{display:none}@media only screen and (min-width:75rem){#sidebar-trigger{display:flex}}craft-tooltip{left:0;max-width:240px;opacity:0;position:fixed;top:0;transform:translateY(-4px);transition:opacity .1s ease-in-out,transform .15s ease-in-out;white-space:normal;width:-moz-max-content;width:max-content;z-index:99}craft-tooltip>.inner{background-color:var(--white);border:1px solid var(--dark-hairline-color);border-radius:var(--medium-border-radius);box-shadow:0 0 10px rgba(0,0,0,.2);color:var(--gray-700);display:inline-block;font-weight:400;padding:var(--xs) var(--s);pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}craft-tooltip .arrow{background:var(--white);border:1px solid transparent;height:8px;position:absolute;transform:rotate(45deg);width:8px}craft-tooltip .arrow[data-placement^=bottom]{border-block-color:var(--dark-hairline-color) transparent;border-inline-color:var(--dark-hairline-color) transparent}craft-tooltip .arrow[data-placement^=top]{border-block-color:transparent var(--dark-hairline-color);border-inline-color:transparent var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=right]{border-block-color:transparent var(--dark-hairline-color);border-inline-color:var(--dark-hairline-color) transparent}craft-tooltip .arrow[data-placement^=left]{border-block-color:var(--dark-hairline-color) transparent;border-inline-color:transparent var(--dark-hairline-color)}.lp-editor-container,.lp-preview-container{background-color:var(--white);height:100%;position:fixed;top:0;z-index:100}.lp-editor-container>header,.lp-preview-container>header{background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.2);box-sizing:border-box;padding:5px 24px;position:relative;z-index:1}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-editor-container>header,.lp-preview-container>header{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background-color:rgba(228,237,246,.75);left:0;position:absolute;top:0;width:100%;z-index:2}.lp-editor-container>header+.lp-editor,.lp-preview-container>header+.lp-editor{padding-top:68px}}.lp-editor-container>header .btn,.lp-editor-container>header .checkmark-icon,.lp-editor-container>header .spinner,.lp-preview-container>header .btn,.lp-preview-container>header .checkmark-icon,.lp-preview-container>header .spinner{margin-bottom:0}.lp-editor-container{display:flex;flex-direction:column}.lp-editor-container .lp-editor{box-sizing:border-box;flex:1;overflow:auto;padding:24px}.lp-editor-container .lp-editor>.field:last-child{margin-bottom:24px!important}body.ltr .lp-editor-container .lp-editor>.field>.status-badge{left:-24px}body.rtl .lp-editor-container .lp-editor>.field>.status-badge{right:-24px}body.ltr .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{left:calc(var(--m)*-1)}body.rtl .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{right:calc(var(--m)*-1)}.lp-editor-container .lp-draghandle{cursor:col-resize;height:100%;position:absolute;top:0;width:4px;z-index:101}body.ltr .lp-editor-container .lp-draghandle{right:-2px}body.rtl .lp-editor-container .lp-draghandle{left:-2px}.lp-preview-container{box-shadow:-1px 0 0 rgba(63,77,90,.2);display:flex;flex-direction:column}.lp-preview-container.dragging:after{content:"";font-size:0;height:100%;left:0;position:absolute;top:0;width:100%}.lp-preview-container .lp-preview-header{display:flex}@supports not ((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-preview-header{background-color:rgba(228,237,246,.75)}}.lp-preview-container .lp-preview-header .buttons{margin:0}body.ltr .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-left:7px}body.rtl .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-right:7px}.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:0}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:44px}}.lp-preview-container .lp-preview-header .lp-device-type .btn:before{background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:22px;transition-duration:.3s;width:27px}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--phone:before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--tablet:before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--desktop:before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-device-type__label:before{background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";display:block;height:22px;transition-duration:.3s;width:27px}.lp-preview-container .lp-device-type__label.lp-device-type__label--phone:before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--tablet:before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--desktop:before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-preview-container__bumper-link{bottom:0;top:unset}.lp-preview-container .lp-device-mask{display:none}.lp-preview-container .lp-iframe-container{flex:1;overflow:auto}.lp-preview-container .lp-iframe-container .lp-preview{display:block;min-height:100%;width:100%}.lp-preview-container .lp-iframe-container:not(.lp-iframe-container--has-device-preview) .lp-device-preview-container{height:100%!important;margin:0!important;transform:none!important;width:auto!important}.lp-preview-container .lp-iframe-container--has-device-preview{background-color:var(--gray-100);flex:none;height:calc(100% - 44px);padding-top:0!important;position:relative;top:0;width:100%}@supports((-webkit-backdrop-filter:blur(10px)) or (backdrop-filter:blur(10px))){.lp-preview-container .lp-iframe-container--has-device-preview{top:44px}}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-preview-container{left:50%;opacity:1;overflow:auto;position:absolute;top:50%;transition:opacity .3s;z-index:2}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-mask{background-color:#fff;background-image:url(../images/preview/chrome-phone-top.svg),url(../images/preview/chrome-phone-bottom.svg);background-position:top,bottom;background-repeat:no-repeat;background-size:contain;border-radius:18px;box-shadow:0 0 58px rgba(6,67,117,.3);display:block;left:50%;position:absolute;top:50%;z-index:1}.lp-preview-container .lp-iframe-container--has-device-preview.lp-iframe-container--tablet .lp-device-mask{background-image:url(../images/preview/chrome-tablet-top.svg),url(../images/preview/chrome-tablet-bottom.svg)}@media screen and (prefers-reduced-motion:no-preference){.lp-preview-container .lp-iframe-container--rotating .lp-device-mask{transition-duration:.3s;transition-property:transform}.lp-preview-container .lp-iframe-container--rotating .lp-device-preview-container{opacity:0;transition:opacity 0s}}.login-container .login-form-container{background-color:var(--gray-050)}.login-container .login-form input[readonly]{cursor:not-allowed}.login-container .login-form>.btn,.login-container .login-form>.field{margin-top:var(--l)}.login-container .login-form>.btn:not(:last-child):not(.last),.login-container .login-form>.field:not(:last-child):not(.last){margin-bottom:var(--l)}.login-container .login-form .btn{display:flex}.login-container .alternative-login-methods{margin-top:var(--m)}.login-container .alternative-login-methods .btn{width:100%}.login-container .login-alt-container button,.login-container .login-forgot-password{color:var(--medium-text-color);cursor:pointer!important;font-size:11px}.login-container .login-alt-container{margin:calc(var(--s) - var(--xl)) 0}.login-container .login-alt-container button{background-color:transparent;display:inline-flex;height:auto;min-height:var(--touch-target-size);padding:0;width:auto}.login-container .login-alt-container button:focus,.login-container .login-alt-container button:hover,.login-container .login-forgot-password:focus,.login-container .login-forgot-password:hover{color:var(--link-color)}.login-container .login-errors{color:var(--error-color);margin-top:1em;text-align:center}.login-alt-menu{z-index:1001}body.login{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%}body.login main{max-width:100%;padding:var(--padding);width:calc(300px + var(--padding)*2)}body.login main h1{font-size:32px;line-height:40px;text-align:center;word-wrap:break-word}body.login main h1 #login-logo{height:auto;max-height:300px;width:100%}body.login #poweredby{display:block;margin-bottom:48px;margin-top:70px;opacity:.8;text-align:center}body.login #poweredby:active,body.login #poweredby:focus,body.login #poweredby:hover{opacity:1}body.login #poweredby>svg{display:inline-block}.modal.email-sent{width:300px}body.ltr .modal.email-sent .body{padding-left:68px}body.rtl .modal.email-sent .body{padding-right:68px}.modal.email-sent .body:before{font-family:Craft;speak:never;direction:ltr;-ms-font-feature-settings:"liga","dlig";-o-font-feature-settings:"liga","dlig";font-feature-settings:"liga","dlig";font-variant:normal;font-weight:400;line-height:1;text-rendering:optimizeLegibility;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;font-style:normal;text-align:center;vertical-align:middle;word-wrap:normal!important;color:var(--link-color);content:"mail";display:block;font-size:30px;position:absolute;top:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.ltr .modal.email-sent .body:before{left:24px}body.rtl .modal.email-sent .body:before{right:24px}.login-modal{background:var(--gray-100);border-radius:var(--large-border-radius);max-width:calc(100% - 20px);width:calc(600px + var(--l)*2)}.login-modal .body{display:flex;flex-direction:row;padding:var(--l)}.login-modal .body .login-modal-form,.login-modal .body .login-modal-intro{max-width:100%;width:300px}.login-modal .body .login-modal-intro{padding:var(--m)}@media screen and (max-width:656px){.login-modal{border-radius:var(--large-border-radius)}.login-modal .body{flex-direction:column;gap:var(--m);overflow:auto;padding:var(--m)}.login-modal .body .login-modal-intro{padding:var(--xs) var(--xl)}.login-modal .body .login-modal-form{border-radius:0}}.layoutdesigner{container-type:inline-size}.fld-container{align-items:stretch;background-clip:padding-box;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.25);border-radius:3px;box-shadow:none;display:flex;min-height:500px;overflow:hidden;position:relative}body.ltr .fld-container{padding-right:265px}body.rtl .fld-container{padding-left:265px}.errors>.fld-container{border:1px solid var(--error-color)!important}.fld-container .fld-workspace{background-color:var(--gray-050);background-image:linear-gradient(to right,var(--gray-100) 1px,transparent 0),linear-gradient(to bottom,var(--gray-100) 1px,transparent 1px);background-position:-1px -1px;background-size:24px 24px;box-shadow:inset 0 1px 3px -1px #acbed2;flex:1}body.ltr .fld-container .fld-workspace{border-radius:calc(var(--small-border-radius) - 1px) 0 0 calc(var(--small-border-radius-1px))}body.rtl .fld-container .fld-workspace{border-radius:0 calc(var(--small-border-radius) - 1px) calc(var(--small-border-radius-1px)) 0}body.ltr .fld-container .fld-workspace{padding:24px 0 24px 24px}body.rtl .fld-container .fld-workspace{padding:24px 24px 24px 0}.fld-container .fld-workspace .fld-tabs{align-items:flex-start;display:flex;flex-wrap:wrap}body.ltr .fld-container:not(:has(.fld-library)){padding-right:0}body.rtl .fld-container:not(:has(.fld-library)){padding-left:0}body.ltr .fld-container:not(:has(.fld-library)) .fld-workspace{padding-right:24px}body.rtl .fld-container:not(:has(.fld-library)) .fld-workspace{padding-left:24px}.fld-container .fld-library{height:100%;padding:14px;position:absolute;top:0;width:265px}body.ltr .fld-container .fld-library{right:0}body.rtl .fld-container .fld-library{left:0}.fld-new-tab-btn:active{background-color:var(--gray-050)}.fld-library-menu{padding:14px;width:264px}body.ltr .fld-library-menu{margin-left:-14px}body.rtl .fld-library-menu{margin-right:-14px}.fld-library{display:flex;flex-direction:column}.fld-library .btngroup{margin-bottom:14px}.fld-library .fld-field-library{flex:1;margin:-3px;min-height:0;overflow:auto;padding:3px}.fld-library .fld-field-library .fld-field-group{margin-top:14px}.fld-library .fld-field-library .fld-field-group>:not(:first-child),.fld-library .fld-ui-library>:not(:first-child){margin-top:var(--s)}.fld-library .filtered{display:none}.fld-new-tab-btn,.fld-new-tab-btn:hover,.fld-tab .fld-tabcontent,.fld-tab .tabs .tab,.layoutdesigner .fld-library{background-color:var(--white);box-shadow:0 0 0 1px rgba(31,41,51,.1),0 2px 5px -2px rgba(31,41,51,.2)}.fld-element .settings:before,.fld-tab .settings:before{font-size:16px;margin-top:-2px;opacity:.5}.fld-element .settings.active:before,.fld-element .settings:hover:before,.fld-tab .settings.active:before,.fld-tab .settings:hover:before{opacity:1}.fld-tab{box-sizing:border-box;width:288px}body.ltr .fld-tab{padding:0 25px 24px 0}body.rtl .fld-tab{padding:0 0 24px 25px}.fld-tab .tabs{display:flex;margin:-10px -12px 0;overflow:hidden;padding:10px 12px 0}.fld-tab .tabs .tab{align-items:center;border-radius:var(--medium-border-radius) var(--medium-border-radius) 0 0;box-sizing:border-box;display:flex;gap:var(--xs);max-width:calc(100% - 10px);padding:8px 14px}body:not(.dragging) .fld-tab .tabs .tab.draggable{cursor:move;cursor:grab}.fld-tab .tabs .tab span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fld-tab .fld-tabcontent{padding:14px}body.ltr .fld-tab .fld-tabcontent{border-radius:0 var(--medium-border-radius) var(--medium-border-radius) var(--medium-border-radius)}body.rtl .fld-tab .fld-tabcontent{border-radius:var(--medium-border-radius) 0 var(--medium-border-radius) var(--medium-border-radius)}.fld-tab .fld-tabcontent>.fld-add-btn:not(:first-child),.fld-tab .fld-tabcontent>.fld-element:not(:first-child){margin-top:var(--s)}.fld-tab .fld-tabcontent .fld-add-btn:not([aria-expanded=true]){display:none}.fld-tab.fld-insertion .fld-tabcontent,.fld-tab.fld-insertion .tabs .tab{background-color:var(--gray-050);background-image:linear-gradient(to right,var(--gray-100) 1px,transparent 0),linear-gradient(to bottom,var(--gray-100) 1px,transparent 1px);background-size:24px 24px;border:2px dashed var(--hairline-color);box-shadow:none;margin:-2px}.fld-tab.fld-insertion .tabs .tab{background-position:-1px -1px}.fld-tab.fld-insertion .fld-tabcontent{background-position:-1px -13px}.fld-tab-caboose{min-height:24px}.fld-element{align-items:center;background-color:var(--white);border-radius:var(--medium-border-radius);box-shadow:inset 0 0 0 1px var(--hairline-color);display:flex;gap:var(--s);padding:var(--s);position:relative}body:not(.dragging) .fld-element{cursor:move;cursor:grab}.fld-element.fld-insertion{background:none;border:2px dashed var(--hairline-color);border-radius:var(--medium-border-radius);box-shadow:none;box-sizing:border-box}.fld-element.draghelper{box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.fld-element.fld-field{background-color:var(--gray-100);color:var(--medium-text-color)}.fld-element.fld-field:not(.draghelper){box-shadow:none}.fld-element.fld-field .field-name{display:flex;flex-direction:column;gap:var(--xs)}.fld-element .fld-element-icon{text-align:center}.fld-element .fld-element-icon,.fld-element .fld-element-icon svg{height:16px;width:16px}.fld-element .fld-element-icon svg circle,.fld-element .fld-element-icon svg ellipse,.fld-element .fld-element-icon svg line,.fld-element .fld-element-icon svg path,.fld-element .fld-element-icon svg polygon,.fld-element .fld-element-icon svg polyline,.fld-element .fld-element-icon svg rect,.fld-element .fld-element-icon svg text{fill:var(--ui-control-color);stroke-width:0}.fld-element .field-name{flex:1;overflow:hidden}.fld-element .field-name .fld-attribute,.fld-element .field-name .fld-element-label{align-items:center;display:flex;flex:1;gap:var(--xs)}.fld-element .field-name .fld-attribute .smalltext,.fld-element .field-name .fld-element-label h4{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fld-element .field-name .fld-element-label h4{color:var(--text-color);font-weight:400;margin:0}.fld-br,.fld-hr{display:flex;flex:1;justify-content:center;position:relative}.fld-br:before,.fld-hr:before{border-radius:2px;content:"";display:block;font-size:0;height:4px;left:0;position:absolute;top:calc(50% - 2px);width:100%}.fld-br .smalltext,.fld-hr .smalltext{align-items:center;background-color:var(--gray-100);border-radius:var(--large-border-radius);display:flex;height:var(--touch-target-size);justify-content:center;padding:0 var(--s);position:relative}.fld-hr:before{background-color:var(--gray-100)}.fld-br:before{background-image:repeating-linear-gradient(to right,var(--gray-100),var(--gray-100) 5.2631578947%,transparent 5.2631578947%,transparent 10.5263157895%,var(--gray-100) 10.5263157895%)}.fld-element-settings-body{flex:1;margin:-24px var(--neg-padding) 0;overflow:hidden auto;padding:24px var(--padding);position:relative}.fld-element-settings-footer{background:#fff;background-color:var(--gray-050);box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);display:flex;flex-direction:row;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);position:relative;z-index:3}.fld-element-settings-footer:focus{box-shadow:var(--focus-ring)}.fld-element-settings-footer>.ee-site-select{flex:1}body.ltr .fld-element-settings-footer>.btn{margin-left:5px}body.rtl .fld-element-settings-footer>.btn{margin-right:5px}body.ltr .fld-element-settings-footer>.spinner{margin:0 var(--neg-padding) 0 0}body.rtl .fld-element-settings-footer>.spinner{margin:0 0 0 var(--neg-padding)}@container (width < 577px){body.ltr .fld-container{padding-right:0}body.rtl .fld-container{padding-left:0}body.ltr .fld-container .fld-workspace{padding-right:24px}body.rtl .fld-container .fld-workspace{padding-left:24px}.fld-container>.fld-library{display:none}.fld-tab .fld-tabcontent .fld-add-btn{display:inline-flex!important}}html.noscroll,html.noscroll body{height:100%;overflow:hidden}.modal.imageeditor{background-color:var(--gray-900);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring:0 0 0 1px hsl(var(--light-focus-hsl)),0 0 0 3px hsla(var(--light-focus-hsl),0.7);opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.modal.imageeditor.modal{border-radius:0}.modal.imageeditor.modal .body:after{display:none}.modal.imageeditor .btn:not(.submit):not(.noborder){background-color:var(--gray-600);color:var(--white)}.modal.imageeditor .btn:not(.submit):not(.noborder):hover{background-color:var(--gray-700)}.modal.imageeditor .btn:not(.submit):not(.noborder).active{background-color:var(--gray-800)}.modal.imageeditor .icon:before{content:"";display:inline-block;height:24px;margin-left:-3px;width:24px}.modal.imageeditor .icon.rotate-left:before{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .icon.rotate-right:before{background-image:url(../images/image-editor/rotate-right.svg)}.modal.imageeditor .icon.flip-vertical:before{background-image:url(../images/image-editor/flip-vertical.svg)}.modal.imageeditor .icon.flip-horizontal:before{background-image:url(../images/image-editor/flip-horizontal.svg)}.modal.imageeditor .icon.constraint:before{background-image:url(../images/image-editor/unconstrained.svg)}.modal.imageeditor .icon.focal-point:before{background-image:url(../images/image-editor/focal-point.svg)}.modal.imageeditor .body{display:flex;padding:0}.modal.imageeditor input{color:var(--text-color)}.modal.imageeditor .body .tabs{border-right:1px solid var(--gray-1000)}.modal.imageeditor .body .tabs ul{align-items:stretch;flex-direction:column;width:100px}.modal.imageeditor .body .tabs ul li{border-bottom:1px solid var(--gray-1000);cursor:pointer;padding:14px;position:relative;text-align:center}.modal.imageeditor .body .tabs ul li:before{background-color:currentColor;content:"";height:100%;position:absolute;top:0;width:0}body.ltr .modal.imageeditor .body .tabs ul li:before{left:0}body.rtl .modal.imageeditor .body .tabs ul li:before{right:0}.modal.imageeditor .body .tabs ul li.selected{background-color:#151c23}.modal.imageeditor .body .tabs ul li.selected:before{width:2px}.modal.imageeditor .body .tabs ul li i{background-position:top;background-repeat:no-repeat;display:block;height:24px}.modal.imageeditor .body .tabs ul li[data-view=rotate] i{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .body .tabs ul li[data-view=crop] i{background-image:url(../images/image-editor/crop.svg)}.modal.imageeditor .body .tabs ul li[data-view=filters] i{background-image:url(../images/image-editor/filters.svg)}.modal.imageeditor .body .tabs ul li:hover{background-color:#1b242c;cursor:pointer}.modal.imageeditor .body .views{overflow:auto;padding:24px}.modal.imageeditor .body .views .btngroup{margin-bottom:24px}.modal.imageeditor .body .views .filters ul{width:100px}.modal.imageeditor .body .views .filters ul li{margin-bottom:14px;margin-right:14px;text-align:center}.modal.imageeditor .body .views .filters ul li:last-child{margin-right:0}.modal.imageeditor .body .views .filters ul li img{border:3px solid transparent;border-radius:4px}.modal.imageeditor .body .views .filters ul li span{display:block}.modal.imageeditor .body .views .filters ul li:hover{cursor:pointer}.modal.imageeditor .body .views .filters ul li.selected img{border-color:var(--white)}.modal.imageeditor .body .image-container{display:flex;flex-direction:column;flex-grow:1;overflow:hidden;position:relative}.modal.imageeditor .body .image-container .image{flex-grow:1;margin:14px;position:relative;text-align:center}.modal.imageeditor .body .image-container .image canvas{left:0;position:absolute;top:0}.modal.imageeditor .body .image-container .image-tools{text-align:center}.modal.imageeditor .body .image-container .image-tools .straightening{display:block;margin:0 auto;max-width:400px;min-height:3.75rem;overflow:hidden}.modal.imageeditor .footer{background-color:transparent;border-top:1px solid #000;bottom:0;left:0;position:absolute;width:100%}body.has-debug-toolbar .modal.imageeditor .footer{padding-bottom:50px}.modal.imageeditor .body .views .crop fieldset .heading{display:none}.modal.imageeditor .body .views .crop .custom-constraint-spacer{padding:0 var(--xs)}.modal.imageeditor .body .views .crop .constraint-group{display:grid;grid-gap:var(--xs)}body.ltr .modal.imageeditor .body .views .crop .custom{padding-left:calc(1rem + 5px)}body.rtl .modal.imageeditor .body .views .crop .custom{padding-right:calc(1rem + 5px)}.modal.imageeditor .body .views .crop .orientation{align-items:center;display:flex;justify-content:center}.modal.imageeditor .body .views .crop .orientation input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:50%;background-repeat:no-repeat;cursor:pointer;margin:0 4px}.modal.imageeditor .body .views .crop .orientation input[value=landscape]{background-image:url(../images/image-editor/orientation-landscape-unchecked.svg);height:20px;width:30px}.modal.imageeditor .body .views .crop .orientation input[value=landscape]:checked{background-image:url(../images/image-editor/orientation-landscape-checked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]{background-image:url(../images/image-editor/orientation-portrait-unchecked.svg);height:30px;width:20px}.modal.imageeditor .body .views .crop .orientation input[value=portrait]:checked{background-image:url(../images/image-editor/orientation-portrait-checked.svg)}.modal.imageeditor.vertical .body .views .crop>.btngroup:first-child{justify-content:center}.modal.imageeditor:not(.vertical) .body .views .crop .constraint.custom{margin-top:var(--xs)}.vertical.imageeditor .body{flex-direction:column}.vertical.imageeditor .body .image-container{flex-basis:30vh;flex-shrink:0}.vertical.imageeditor .body .constraint-group{grid-template-columns:1fr 1fr}.vertical.imageeditor .body .tabs ul{border-bottom:1px solid #000;border-top:1px solid #000;display:flex;flex-direction:row;width:100%}.vertical.imageeditor .body .tabs ul li{border:0;border-right:1px solid #000;flex-grow:1;padding:10px 7px}.vertical.imageeditor .body .tabs ul li:before{height:0;top:unset;top:0;width:100%}.vertical.imageeditor .body .tabs ul li.selected:before{height:2px;width:100%}.vertical.imageeditor .body .views{width:auto}.vertical.imageeditor .body .views .rotate{display:flex;flex-wrap:wrap;justify-content:center;margin-bottom:-14px}.vertical.imageeditor .body .views .rotate .btngroup{margin:0 7px 14px}.vertical.imageeditor .body .views .filters ul{height:109px;margin:0 -24px -24px;overflow:auto;padding:24px;text-align:center;white-space:nowrap;width:auto}.vertical.imageeditor .body .views .filters ul li{display:inline-block;margin-bottom:0}.slide-rule{padding:10px 0;position:relative}.slide-rule:focus{box-shadow:none}body.reduce-focus-visibility .slide-rule:focus-visible .cursor:after,body:not(.reduce-focus-visibility) .slide-rule:focus .cursor:after{box-shadow:var(--focus-ring)}.slide-rule .cursor:after{content:"";height:3.125rem;left:50%;position:absolute;top:-15px;transform:translateX(-50%);width:1.25rem}.slide-rule .cursor{border-left:.3125rem solid transparent;border-right:.3125rem solid transparent;border-top:.3125rem solid #63a6e1;height:0;left:50%;margin-left:-.25rem;margin-top:4px;position:absolute;width:0;z-index:1}.slide-rule .graduations{height:40px;position:relative;white-space:nowrap}.slide-rule .graduations ul{float:left;position:relative}.slide-rule .graduations ul li{display:inline-block;font-size:8px;position:relative;width:10px}.slide-rule .graduations ul li:not(.main-graduation){left:1px}.slide-rule .graduations ul li.main-graduation:before{border-left-width:3px}.slide-rule .graduations ul li.main-graduation .label{cursor:default;display:block}.slide-rule .graduations ul li.selected:before{border-left-color:#63a6e1}.slide-rule .graduations ul li:before{border-left:1px solid var(--white);content:"";height:10px;left:0;position:absolute;top:0}.slide-rule .graduations ul li .label{display:none;left:-9px;position:absolute;text-align:center;top:10px;width:20px}.slide-rule .value{background:var(--gray-600);bottom:0;box-sizing:border-box;display:none;left:50%;margin-left:-25px;padding:5px;position:absolute;width:50px;z-index:1}.slide-rule .overlay{background-image:linear-gradient(to right,var(--gray-900) 0,rgba(31,41,51,0) 15%,rgba(31,41,51,0) 85%,var(--gray-900) 100%);bottom:1px;left:0;position:absolute;right:0;top:0;z-index:2}.menu.dark{background-color:var(--gray-600);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.menu.dark ul li a{color:var(--white)!important}.menu.dark ul li a:not(.sel):not(.disabled):hover{background-color:var(--gray-700)}.elements .tableview td.checkbox-cell div.checkbox,.elements .tableview td.checkbox-cell input.checkbox+label,_:-ms-lang(x){top:16px}_:-ms-lang(x),div:empty.checkbox,input.checkbox+label:empty{display:block}.yii-debug-toolbar__title a{display:block!important}.cp-chart{height:100%;margin:0;position:relative}.cp-chart svg{height:100%;width:100%}.cp-chart .axis line,.cp-chart .axis path{fill:none;stroke:var(--hairline-color);shape-rendering:crispEdges}.cp-chart .ticks-axis line,.cp-chart .ticks-axis path{fill:none;stroke:none;shape-rendering:crispEdges}.cp-chart .ticks-axis g.tick text{fill:var(--black);font-size:11px}.cp-chart .axis text{fill:rgba(0,0,0,.6)}.cp-chart .grid-line .tick,.cp-chart .grid-line .tick line{stroke:rgba(0,0,0,.08);stroke-opacity:.7;shape-rendering:crispEdges}.cp-chart .grid-line path{stroke-width:0}.tooltip{background:hsla(0,0%,100%,.9);border-radius:3px;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);padding:7px 10px;pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000000}
 /*# sourceMappingURL=cp.css.map*/
\ No newline at end of file
diff --git a/src/web/assets/cp/dist/css/cp.css.map b/src/web/assets/cp/dist/css/cp.css.map
index 33bd4afac3e..1bdb78b297e 100644
--- a/src/web/assets/cp/dist/css/cp.css.map
+++ b/src/web/assets/cp/dist/css/cp.css.map
@@ -1 +1 @@
-{"version":3,"file":"css/cp.css","mappings":"AAAA,MCGA,YACE,aACA,2BAEA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,oCAEA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,sCACA,kBAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBAEA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBAEA,mBAC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","sources":["webpack:///./css/craft.scss","webpack:///./css/_color-palette.scss","webpack:///./css/_variables.scss","webpack:///./css/_main.scss","webpack:///../../../../../packages/craftcms-sass/_mixins.scss","webpack:///./css/_cp.scss","webpack:///./css/_global-sidebar.scss","webpack:///./css/_craft-tooltip.scss","webpack:///./css/_preview.scss","webpack:///./css/_login.scss","webpack:///../../../../../node_modules/@craftcms/sass/_mixins.scss","webpack:///./css/_fld.scss","webpack:///./css/_image_editor.scss","webpack:///./css/_shame.scss","webpack:///./css/charts.scss"],"sourcesContent":[":root{--white: #fff;--black: #000;--gray-050-hsl: 212, 60%, 97%;--gray-100-hsl: 212, 50%, 93%;--gray-150-hsl: 212, 40%, 89%;--gray-200-hsl: 212, 30%, 85%;--gray-300-hsl: 211, 13%, 65%;--gray-350-hsl: 211, 11%, 59%;--gray-400-hsl: 210, 10%, 53%;--gray-500-hsl: 211, 12%, 43%;--gray-550-hsl: 210, 13%, 40%;--gray-600-hsl: 209, 14%, 37%;--gray-700-hsl: 209, 18%, 30%;--gray-800-hsl: 209, 20%, 25%;--gray-900-hsl: 210, 24%, 16%;--gray-1000-hsl: 210, 24%, 10%;--gray-050: hsl(var(--gray-050-hsl));--gray-100: hsl(var(--gray-100-hsl));--gray-150: hsl(var(--gray-150-hsl));--gray-200: hsl(var(--gray-200-hsl));--gray-300: hsl(var(--gray-300-hsl));--gray-350: hsl(var(--gray-350-hsl));--gray-400: hsl(var(--gray-400-hsl));--gray-500: hsl(var(--gray-500-hsl));--gray-550: hsl(var(--gray-550-hsl));--gray-600: hsl(var(--gray-600-hsl));--gray-700: hsl(var(--gray-700-hsl));--gray-800: hsl(var(--gray-800-hsl));--gray-900: hsl(var(--gray-900-hsl));--gray-1000: hsl(var(--gray-1000-hsl));--red-050: #fef2f2;--red-100: #fee2e2;--red-200: #fecaca;--red-300: #fca5a5;--red-400: #f87171;--red-500: #ef4444;--red-600: #dc2626;--red-700: #b91c1c;--red-800: #991b1b;--red-900: #7f1d1d;--red-950: #450a0a;--orange-050: #fff7ed;--orange-100: #ffedd5;--orange-200: #fed7aa;--orange-300: #fdba74;--orange-400: #fb923c;--orange-500: #f97316;--orange-600: #ea580c;--orange-700: #c2410c;--orange-800: #9a3412;--orange-900: #7c2d12;--orange-950: #431407;--amber-050: #fffbeb;--amber-100: #fef3c7;--amber-200: #fde68a;--amber-300: #fcd34d;--amber-400: #fbbf24;--amber-500: #f59e0b;--amber-600: #d97706;--amber-700: #b45309;--amber-800: #92400e;--amber-900: #78350f;--amber-950: #451a03;--yellow-050: #fefce8;--yellow-100: #fef9c3;--yellow-200: #fef08a;--yellow-300: #fde047;--yellow-400: #facc15;--yellow-500: #eab308;--yellow-600: #ca8a04;--yellow-700: #a16207;--yellow-750: #93580b;--yellow-800: #854d0e;--yellow-900: #713f12;--yellow-950: #422006;--lime-050: #f7fee7;--lime-100: #ecfccb;--lime-200: #d9f99d;--lime-300: #bef264;--lime-400: #a3e635;--lime-500: #84cc16;--lime-600: #65a30d;--lime-700: #4d7c0f;--lime-800: #3f6212;--lime-900: #365314;--lime-950: #1a2e05;--green-050: #f0fdf4;--green-100: #dcfce7;--green-200: #bbf7d0;--green-300: #86efac;--green-400: #4ade80;--green-500: #22c55e;--green-600: #16a34a;--green-700: #15803d;--green-800: #166534;--green-900: #14532d;--green-950: #052e16;--emerald-050: #ecfdf5;--emerald-100: #d1fae5;--emerald-200: #a7f3d0;--emerald-300: #6ee7b7;--emerald-400: #34d399;--emerald-500: #10b981;--emerald-600: #059669;--emerald-700: #047857;--emerald-800: #065f46;--emerald-900: #064e3b;--emerald-950: #022c22;--teal-050: #f0fdfa;--teal-100: #ccfbf1;--teal-200: #99f6e4;--teal-300: #5eead4;--teal-400: #2dd4bf;--teal-500: #14b8a6;--teal-550: #11a697;--teal-600: #0d9488;--teal-700: #0f766e;--teal-800: #115e59;--teal-900: #134e4a;--teal-950: #042f2e;--cyan-050: #ecfeff;--cyan-100: #cffafe;--cyan-200: #a5f3fc;--cyan-300: #67e8f9;--cyan-400: #22d3ee;--cyan-500: #06b6d4;--cyan-600: #0891b2;--cyan-700: #0e7490;--cyan-800: #155e75;--cyan-900: #164e63;--cyan-950: #083344;--sky-050: #f0f9ff;--sky-100: #e0f2fe;--sky-200: #bae6fd;--sky-300: #7dd3fc;--sky-400: #38bdf8;--sky-500: #0ea5e9;--sky-600: #0284c7;--sky-700: #0369a1;--sky-800: #075985;--sky-900: #0c4a6e;--sky-950: #082f49;--blue-050: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-300: #93c5fd;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--blue-800: #1e40af;--blue-900: #1e3a8a;--blue-950: #172554;--indigo-050: #eef2ff;--indigo-100: #e0e7ff;--indigo-200: #c7d2fe;--indigo-300: #a5b4fc;--indigo-400: #818cf8;--indigo-500: #6366f1;--indigo-600: #4f46e5;--indigo-700: #4338ca;--indigo-800: #3730a3;--indigo-900: #312e81;--indigo-950: #1e1b4b;--violet-050: #f5f3ff;--violet-100: #ede9fe;--violet-200: #ddd6fe;--violet-300: #c4b5fd;--violet-400: #a78bfa;--violet-500: #8b5cf6;--violet-600: #7c3aed;--violet-700: #6d28d9;--violet-800: #5b21b6;--violet-900: #4c1d95;--violet-950: #2e1065;--purple-050: #faf5ff;--purple-100: #f3e8ff;--purple-200: #e9d5ff;--purple-300: #d8b4fe;--purple-400: #c084fc;--purple-500: #a855f7;--purple-600: #9333ea;--purple-700: #7e22ce;--purple-800: #6b21a8;--purple-900: #581c87;--purple-950: #3b0764;--fuchsia-050: #fdf4ff;--fuchsia-100: #fae8ff;--fuchsia-200: #f5d0fe;--fuchsia-300: #f0abfc;--fuchsia-400: #e879f9;--fuchsia-500: #d946ef;--fuchsia-600: #c026d3;--fuchsia-700: #a21caf;--fuchsia-800: #86198f;--fuchsia-900: #701a75;--fuchsia-950: #4a044e;--pink-050: #fdf2f8;--pink-100: #fce7f3;--pink-200: #fbcfe8;--pink-300: #f9a8d4;--pink-400: #f472b6;--pink-500: #ec4899;--pink-600: #db2777;--pink-700: #be185d;--pink-800: #9d174d;--pink-900: #831843;--pink-950: #500724;--rose-050: #fff1f2;--rose-100: #ffe4e6;--rose-200: #fecdd3;--rose-300: #fda4af;--rose-400: #fb7185;--rose-500: #f43f5e;--rose-600: #e11d48;--rose-700: #be123c;--rose-800: #9f1239;--rose-900: #881337;--rose-950: #4c0519}:root{--bg-color: $grey100;--bg-color-hsl: 212deg, 50%, 93%;--primary-color: var(--red-600);--secondary-color: var(--gray-500);--input-color: hsl(212, 25%, 50%);--text-color: var(--gray-700);--medium-dark-text-color: var(--gray-550);--medium-text-color: var(--gray-550);--light-text-color: var(--gray-500);--link-color: #1f5fea;--font-weight-bold: 700;--hairline-color: rgba(51, 64, 77, 0.1);--medium-hairline-color: #cfd8e3;--dark-hairline-color: rgba(123, 135, 147, 0.5);--light-focus-color: var(--blue-300);--medium-focus-color: var(--blue-500);--dark-focus-color: #0f74b1;--light-focus-ring: 0 0 0 1px #5ed0fa, 0 0 0 3px rgba(94, 208, 250, 0.7);--medium-focus-ring: 0 0 0 1px #2bb0ed, 0 0 0 3px rgba(43, 176, 237, 0.7);--dark-focus-ring: 0 0 0 1px #0f74b1, 0 0 0 3px rgba(15, 116, 177, 0.7);--light-sel-color: var(--gray-200);--dark-sel-color: var(--gray-500);--error-color-rgb: 216, 31, 35;--error-color: rgba(var(--error-color-rgb), 1);--warning-color: var(--amber-700);--success-color: var(--teal-700);--notice-color: var(--sky-700);--enabled-color: var(--teal-550);--pending-color: var(--orange-400);--disabled-color: var(--red-600);--indicator-border-color: var(--amber-600);--indicator-icon-color: var(--amber-700);--small-border-radius: 3px;--medium-border-radius: 4px;--large-border-radius: 5px;--menu-border-radius: var(--medium-border-radius);--checkbox-size: 1rem;--radio-size: 1rem}@font-face{font-family:\"Craft\";src:url(\"../fonts/Craft.woff2\") format(\"woff2\"),url(\"../fonts/Craft.woff\") format(\"woff\"),url(\"../fonts/Craft.ttf\") format(\"truetype\"),url(\"../fonts/Craft.svg#Craft\") format(\"svg\");font-weight:normal;font-style:normal;font-display:block}:root{--ui-control-color: var(--gray-550);--ui-control-hover-color: var(--gray-600);--ui-control-active-color: var(--gray-700);--ui-control-static-bg-color: rgba(96, 125, 159, 0.25);--ui-control-bg-color: var(--ui-control-static-bg-color);--ui-control-hover-bg-color: rgba(96, 125, 159, 0.3);--ui-control-active-bg-color: rgba(96, 125, 159, 0.5);--ui-control-border-radius: var(--large-border-radius);--ui-control-height: calc(34rem / 16);--ui-control-height--small: calc(30rem / 16);--light-focus-hsl: 211.6981132075deg, 96.3636363636%, 78.431372549%;--medium-focus-hsl: 217.2192513369deg, 91.2195121951%, 59.8039215686%;--dark-focus-hsl: 202.5925925926deg, 84.375%, 37.6470588235%;--focus-ring: 0 0 0 1px hsl(var(--dark-focus-hsl)), 0 0 0 3px hsla(var(--dark-focus-hsl), 0.8);--inner-focus-ring: inset 0 0 0 1px hsl(var(--dark-focus-hsl)), inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);--touch-target-size: calc( 24rem / 16 );--thumb-size: calc(20rem / 16);--icon-size: 1rem;--elements-busy-top-position: calc(50% - var(--size, 20px) / 2);--lh: 1.42em}body,html{box-shadow:var(--light-focus-ring);background-color:var(--gray-100)}html.noscroll,html.noscroll body{overflow:hidden}body{width:100vw;overflow-x:hidden;font-size:0.875rem;line-height:var(--lh);color:var(--text-color);-webkit-font-smoothing:subpixel-antialiased}body.rtl{direction:rtl}body,input,select,textarea{font-family:system-ui,BlinkMacSystemFont,-apple-system,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.first,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child,blockquote:first-child,hr:first-child,.pane:first-child,.grid:first-child,fieldset:first-child,.field:first-child,.toolbar:first-child,.buttons:first-child,.condition-container:first-child{margin-top:0 !important}.last,h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child,blockquote:last-child,.pane:last-child,.grid:last-child,.meta:last-child,fieldset:last-child,.field:last-child,.toolbar:last-child,.buttons:last-child,.condition-container:last-child{margin-bottom:0 !important}.mt-0{margin-top:0 !important}.mt-xs{margin-top:var(--xs) !important}.mt-s{margin-top:var(--s) !important}.mt-m{margin-top:var(--m) !important}.mt-l{margin-top:var(--l) !important}.mt-xl{margin-top:var(--xl) !important}.mb-0{margin-bottom:0 !important}.mb-xs{margin-bottom:var(--xs) !important}.mb-s{margin-bottom:var(--s) !important}.mb-m{margin-bottom:var(--m) !important}.mb-l{margin-bottom:var(--l) !important}.mb-xl{margin-bottom:var(--xl) !important}.ml-0{margin-left:0 !important}.ml-xs{margin-left:var(--xs) !important}.ml-s{margin-left:var(--s) !important}.ml-m{margin-left:var(--m) !important}.ml-l{margin-left:var(--l) !important}.ml-xl{margin-left:var(--xl) !important}.mr-0{margin-right:0 !important}.mr-xs{margin-right:var(--xs) !important}.mr-s{margin-right:var(--s) !important}.mr-m{margin-right:var(--m) !important}.mr-l{margin-right:var(--l) !important}.mr-xl{margin-right:var(--xl) !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.mx-xs{margin-left:var(--xs) !important;margin-right:var(--xs) !important}.mx-s{margin-left:var(--s) !important;margin-right:var(--s) !important}.mx-m{margin-left:var(--m) !important;margin-right:var(--m) !important}.mx-l{margin-left:var(--l) !important;margin-right:var(--l) !important}.mx-xl{margin-left:var(--xl) !important;margin-right:var(--xl) !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-xs{margin-top:var(--xs) !important;margin-bottom:var(--xs) !important}.my-s{margin-top:var(--s) !important;margin-bottom:var(--s) !important}.my-m{margin-top:var(--m) !important;margin-bottom:var(--m) !important}.my-l{margin-top:var(--l) !important;margin-bottom:var(--l) !important}.my-xl{margin-top:var(--xl) !important;margin-bottom:var(--xl) !important}.pointer{cursor:pointer !important}.no-scroll{overflow:hidden !important}.draghelper{box-sizing:border-box;list-style-type:none}.offset-drag-helper{transition:margin linear 200ms,padding linear 200ms}body.dragging.ltr .offset-drag-helper{margin:-50px 0 0 -50px;padding:60px 0 0 60px}body.dragging.rtl .offset-drag-helper{margin:-50px -50px 0 0;padding:60px 60px 0 0}img{max-width:100%}body.rtl .ltr .text,body.rtl .ltr table.editable textarea{text-align:left !important;direction:ltr !important}body.ltr .rtl .text,body.ltr .rtl table.editable textarea{text-align:right !important;direction:rtl !important}.icon:before,.menu ul.padded li a.sel:before,.menu ul.padded li .menu-item.sel:before,.menu ul.padded li .menu-option.sel:before,.menu .flex.padded.sel:before,.texticon:before,#help:before,.secure:before,.insecure:before,.go:after,.required:after,.preview-btn:before,.view-btn:before,.action-btn:before,[data-icon]:before,[data-icon-after]:after{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none}.badge-icon{position:relative;top:-1px;display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;box-sizing:border-box;border:1px solid var(--indicator-border-color);border-radius:var(--small-border-radius);color:var(--indicator-icon-color);font-size:9px}.secure:before,.insecure:before{margin-top:-3px;font-size:14px}[data-icon]:before{content:attr(data-icon)}[data-icon-after]:after{content:attr(data-icon-after)}[data-icon-size=large][data-icon]:before,[data-icon-size=large][data-icon-after]:after{font-size:20px}[data-icon-size=small][data-icon]:before,[data-icon-size=small][data-icon-after]:after{font-size:14px}[data-icon-size=puny][data-icon]:before,[data-icon-size=puny][data-icon-after]:after{font-size:12px}body.rtl [data-icon=list]:before,body.rtl [data-icon-after=list]:after{content:\"listrtl\"}body.rtl [data-icon=structure]:before,body.rtl [data-icon-after=structure]:after{content:\"structurertl\"}.icon.secure:before{content:\"secure\"}.icon.insecure:before{content:\"insecure\"}.icon.add:before{content:\"plus\"}.icon.edit:before{content:\"edit\"}.icon.settings:before{content:\"settings\"}.icon.search:before{content:\"search\"}.icon.expand:before{content:\"expand\"}.icon.collapse:before{content:\"collapse\"}.help:before{content:\"help\";color:var(--pink-400)}body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-right:var(--xs)}body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-left:var(--xs)}.preview-btn:before{margin-top:-2px;content:\"view\"}body.ltr .view-btn:before{content:\"share\"}body.rtl .view-btn:before{content:\"shareleft\"}.action-btn:before{content:\"ellipsis\"}h1,.h1{margin-bottom:24px;font-size:18px;font-weight:bold;line-height:1.2}h2,.h2{margin:14px 0;font-size:16px;font-weight:bold;line-height:1.2}h3,.h3{margin:14px 0;font-weight:bold;line-height:1.2}h4,.h4{margin:14px 0;font-weight:bold;line-height:1.2;color:var(--medium-text-color)}h5,.h5{margin:14px 0 3px;line-height:1.2;color:var(--medium-text-color)}h6,.h6{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase}body.ltr h1[data-icon]:before{margin:-8px 10px 0 0}body.rtl h1[data-icon]:before{margin:-8px 0 0 10px}h2[data-icon]:before{font-size:19px}body.ltr h2[data-icon]:before{margin:-4px 6px 0 0}body.rtl h2[data-icon]:before{margin:-4px 0 0 6px}hr{margin:24px 0;border:none;border-top:1px solid var(--hairline-color);height:0;color:rgba(0,0,0,0)}.pane hr{margin:24px -24px}p{margin:1em 0}h5+p{margin-top:0}sup{vertical-align:super;font-size:smaller}sub{vertical-align:sub;font-size:smaller}body.ltr .indent{margin-left:14px}body.rtl .indent{margin-right:14px}.bullets{list-style-type:square}body.ltr .bullets{padding-left:40px}body.rtl .bullets{padding-right:40px}ol{list-style-type:decimal}body.ltr ol{padding-left:40px}body.rtl ol{padding-right:40px}code,.code{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important}code.smalltext,.code.smalltext{font-size:.8em !important}.code input,.code textarea{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important;font-size:1em !important}pre code{display:block;overflow-x:auto}a{color:var(--link-color);cursor:pointer}a[aria-current]{cursor:default}body.underline-links a,a:hover{text-decoration:underline}a .cp-icon svg rect,a .cp-icon svg circle,a .cp-icon svg ellipse,a .cp-icon svg line,a .cp-icon svg polyline,a .cp-icon svg polygon,a .cp-icon svg path,a .cp-icon svg text{fill:var(--icon-color, var(--link-color));stroke-width:0}a:not([href]){color:inherit;cursor:inherit}body.underline-links a:not([href]),a:not([href]):hover{text-decoration:none}a.sel,li.sel>a{cursor:default !important;text-decoration:none}.go:after{font-size:11px;margin-top:-1px;color:var(--link-color);opacity:.9}body.ltr .go:after{padding-left:4px}body.rtl .go:after{padding-right:4px}body.ltr .go:after{content:\"circlerarr\"}body.rtl .go:after{content:\"circlelarr\"}button{cursor:pointer}.checkmark-icon,.alert-icon{padding:5px;margin-bottom:0 !important;line-height:10px;border-radius:20px;cursor:pointer}.checkmark-icon:before,.alert-icon:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none}.checkmark-icon{background-color:var(--gray-200)}p .checkmark-icon{display:inline-block}.checkmark-icon:before{content:\"check\";color:var(--success-color)}.alert-icon{background-color:var(--gray-200)}.alert-icon:before{content:\"alert\";color:var(--error-color)}.revision-status-hud{max-width:400px}.revision-status-hud .http-error{border-radius:var(--medium-border-radius);border:1px solid var(--hairline-color);color:var(--light-text-color);background-color:var(--gray-050);padding:7px 14px}.draft-notice{display:flex;align-items:center;align-content:stretch;justify-content:center;gap:var(--s);color:var(--blue-800)}#content-notice .draft-notice{display:inline-flex;justify-content:flex-start}body.ltr .so-notice>.draft-notice{margin:-5px 0 -5px calc(var(--xl)*-1)}body.rtl .so-notice>.draft-notice{margin:-5px calc(var(--xl)*-1) -5px 0}body.ltr .so-notice>.draft-notice{padding:5px 0 5px var(--xl)}body.rtl .so-notice>.draft-notice{padding:5px var(--xl) 5px 0}body.ltr .so-notice>.draft-notice{border-bottom-left-radius:var(--large-border-radius)}body.rtl .so-notice>.draft-notice{border-bottom-right-radius:var(--large-border-radius)}body.ltr .so-notice>.draft-notice{background-image:linear-gradient(to bottom right, rgba(37, 99, 235, 0.2), rgba(37, 99, 235, 0) 50%)}body.rtl .so-notice>.draft-notice{background-image:linear-gradient(to left, rgba(37, 99, 235, 0.2), rgba(37, 99, 235, 0))}.draft-notice p{flex:1;margin:0}.draft-notice .draft-icon{position:relative;flex-shrink:0;width:34px;height:34px;display:flex;justify-content:center;align-items:center;border-radius:100%;border:2px solid rgba(30,64,175,.2);box-sizing:border-box;box-shadow:0 1px 1px 1px var(--white)}.draft-notice .draft-icon:before{position:relative;left:1px;color:var(--blue-800) !important;font-size:18px}.draft-notice .draft-icon:after{content:\"\";font-size:0;position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:100%;box-shadow:inset 0 2px 0 rgba(30,58,138,.2)}.draft-notice .discard-changes-btn{background-color:rgba(0,0,0,0) !important;color:var(--blue-800) !important;border:2px solid var(--blue-600)}body.ltr .draft-notice .discard-changes-btn{margin-left:var(--xs)}body.rtl .draft-notice .discard-changes-btn{margin-right:var(--xs)}.draft-notice .discard-changes-btn:hover,.draft-notice .discard-changes-btn:focus{border-color:#1555e2}.draft-notice .discard-changes-btn:active{border-color:#134cca}.revision-notice{display:flex;align-items:center;align-content:stretch;justify-content:center;gap:var(--s);color:var(--gray-600)}#content-notice .revision-notice{display:inline-flex;justify-content:flex-start}.revision-notice p{flex:1;margin:0}.revision-notice .revision-icon{position:relative;flex-shrink:0;width:34px;height:34px;display:flex;justify-content:center;align-items:center;border-radius:100%;border:2px solid rgba(51,64,77,.2);box-sizing:border-box;box-shadow:0 1px 1px 1px var(--white)}.revision-notice .revision-icon:before{position:relative;left:1px;color:var(--grey-800) !important;font-size:18px}.revision-notice .revision-icon:after{content:\"\";font-size:0;position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:100%;box-shadow:inset 0 2px 0 rgba(30,58,138,.2)}button.toggle{appearance:none;color:inherit;background:none;border:none;padding:0}.toggle:before,a.fieldtoggle:before{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transition:transform linear 100ms}body.ltr .toggle:before,body.ltr a.fieldtoggle:before{transform:rotate(-45deg)}body.rtl .toggle:before,body.rtl a.fieldtoggle:before{transform:rotate(135deg)}.toggle.expanded:before,a.fieldtoggle.expanded:before,.sidebar nav li.expanded>.toggle:before,.structure li:not(.collapsed)>.row>.toggle:before{transform:rotate(45deg) !important}a.fieldtoggle{display:block;position:relative;margin:14px 0;color:var(--text-color);text-decoration:none}body.ltr a.fieldtoggle{padding-left:12px}body.rtl a.fieldtoggle{padding-right:12px}a.fieldtoggle:before{display:block;position:absolute;top:7px}body.ltr a.fieldtoggle:before{left:-1px}body.rtl a.fieldtoggle:before{right:-1px}em,i{font-style:italic}ul.errors em{font-style:normal}strong,b,i em{font-weight:bold}.readable{font-size:16px;line-height:22px}.readable h1,.readable .h1,.readable h2,.readable .h2,.readable h3,.readable .h3,.readable h4,.readable .h4,.readable h5,.readable .h5,.readable h6,.readable .h6{margin:24px 0 16px;font-weight:600}.readable h1,.readable .h1{font-size:32px;line-height:40px;color:#000}.readable h2,.readable .h2{font-size:24px;line-height:30px}.readable h3,.readable .h3{font-size:20px;line-height:24px}.readable h4,.readable .h4{font-size:16px;line-height:20px}.readable h5,.readable .h5{font-size:14px;line-height:18px}.readable h6,.readable .h6{font-size:13.6px;line-height:17px;color:#596673}.readable ul,.readable ol{margin:1em 0}body.ltr .readable ul,body.ltr .readable ol{padding-left:2em}body.rtl .readable ul,body.rtl .readable ol{padding-right:2em}.readable ul li{list-style-type:disc}.readable li+li{margin-top:.25em}.readable .tip-dismiss-btn{position:absolute;top:12px}body.ltr .readable .tip-dismiss-btn{right:12px}body.rtl .readable .tip-dismiss-btn{left:12px}.readable .tip-dismiss-btn+p{margin-top:0}.readable blockquote{margin:16px 0}.readable blockquote:not(.note){padding:0 16px;color:#596673}body.ltr .readable blockquote:not(.note){border-left:4px solid rgba(51,64,77,.1)}body.rtl .readable blockquote:not(.note){border-right:4px solid rgba(51,64,77,.1)}.readable blockquote.note{position:relative;border-radius:4px;padding:1em;border:1px solid}body.ltr .readable blockquote.note{padding-left:50px}body.rtl .readable blockquote.note{padding-right:50px}body.ltr .readable blockquote.note.dismissible{padding-right:36px}body.rtl .readable blockquote.note.dismissible{padding-left:36px}.readable blockquote.note:not(.tip):not(.warning){border-color:#dc2626;color:#bf503f}.readable blockquote.note:not(.tip):not(.warning):before{content:\"alert\";color:#dc2626}.readable blockquote.note.tip{border-color:#1f5fea;color:#1f5fea}.readable blockquote.note.tip:before{content:\"lightbulb\";color:#1f5fea}.readable blockquote.note.warning{border-color:#854d0e;color:#cf783a}.readable blockquote.note.warning:before{content:\"alert\";color:#854d0e}.readable blockquote.note:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;opacity:1;position:absolute;top:15px;font-size:24px;width:24px}body.ltr .readable blockquote.note:before{left:16px}body.rtl .readable blockquote.note:before{right:16px}.readable blockquote.note a[href]{color:currentColor;text-decoration:underline}.readable .go:after{font-size:14px}body.ltr .leftalign{text-align:left}body.rtl .leftalign{text-align:right}.topalign{vertical-align:top}body.ltr .rightalign{text-align:right}body.rtl .rightalign{text-align:left}.centeralign{text-align:center !important}.nowrap{white-space:nowrap}.break-word{word-wrap:break-word}.light{color:var(--medium-text-color) !important;font-weight:normal}.extralight{color:var(--light-text-color) !important}.smalltext{font-size:12px;line-height:1.2}.largetext{font-size:16px;line-height:1.2}.zilch{padding:100px 0;text-align:center;font-size:20px;line-height:24px;color:var(--light-text-color)}.zilch.small{padding:24px 0;font-size:16px}input.checkbox+label.smalltext{padding-top:2px}.required:after{content:\"asterisk\";font-size:12px;color:var(--rose-500)}body.ltr .required:after{margin:-2px 0 0 5px}body.rtl .required:after{margin:-2px 5px 0 0}.scrollpane{overflow:auto}body.ltr .left{float:left}body.rtl .left{float:right}body.ltr .right{float:right}body.rtl .right{float:left}th,td{vertical-align:middle}body.ltr th,body.ltr td{text-align:left}body.rtl th,body.rtl td{text-align:right}body.ltr table[dir=rtl] th,body.ltr table[dir=rtl] td{text-align:right}body.rtl table[dir=ltr] th,body.rtl table[dir=ltr] td{text-align:left}th.right,td.right{float:none}body.ltr th.right,body.ltr td.right{text-align:right}body.rtl th.right,body.rtl td.right{text-align:left}.clear{display:block;clear:both;height:0}.fullwidth{width:100%}.token{display:inline-block;border-radius:3px;padding:3px 7px;font-size:12px;line-height:14px;color:#3f4d5a;background-color:#e4edf6}.token[data-name=\"*\"]{position:relative;width:10px}.token[data-name=\"*\"] span{opacity:0}.token[data-name=\"*\"]:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;display:block;position:absolute;top:0;left:0;width:100%;font-size:9px;line-height:17px;content:\"asterisk\";text-indent:0}.token:focus{background-color:#cdd8e4}.highlight .token{display:inline;border:none;border-radius:0;padding:0;font-size:inherit;line-height:inherit;text-shadow:none;background:rgba(0,0,0,0);box-shadow:none}.pane.highlight pre[class*=language-]{overflow:visible}.pane.highlight pre[class*=language-]>code.diff-highlight .token:not(.prefix){margin:0 -24px;padding:0 24px}.success{color:var(--success-color) !important}.notice.with-icon:before,.notice .icon:before,.warning.with-icon:before,.warning .icon:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;width:1em}body.ltr .notice.with-icon:before,body.ltr .notice .icon:before,body.ltr .warning.with-icon:before,body.ltr .warning .icon:before{margin:-2px 2px 0 0}body.rtl .notice.with-icon:before,body.rtl .notice .icon:before,body.rtl .warning.with-icon:before,body.rtl .warning .icon:before{margin:-2px 0 0 2px}.notice.has-icon,.warning.has-icon{display:flex;flex-wrap:nowrap;align-items:flex-start}.notice.has-icon .icon,.warning.has-icon .icon{flex-shrink:1}.notice{color:var(--notice-color) !important}.notice a{text-decoration:underline}.notice.with-icon:before,.notice .icon:before{content:\"lightbulb\"}.warning{color:var(--warning-color) !important}.warning.with-icon:before,.warning .icon:before{content:\"alert\"}.error{color:var(--error-color) !important}.icon.move:not(.disabled){cursor:move}.icon.move:before{content:\"move\";color:var(--custom-text-color, var(--ui-control-color))}.icon.move:not(.disabled):hover:before{color:var(--link-color)}.icon.delete{display:inline-block;line-height:inherit}.icon.delete:before{content:\"remove\";color:var(--ui-control-color)}.icon.delete:not(.disabled){cursor:pointer}.icon.delete:not(.disabled):hover:before{color:var(--disabled-color)}.icon.delete:not(.disabled):active:before{color:var(--red-800)}.hidden{display:none !important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.invisible{visibility:hidden}.clearafter:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.info{vertical-align:bottom;display:inline-block;width:1em;height:1.375em;text-align:center;cursor:pointer;overflow:hidden}.info:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;vertical-align:baseline;width:100%;line-height:1.375;color:var(--ui-control-color)}.info:not(.warning):before{content:\"info\"}.info:not(.warning):hover:before{color:var(--link-color)}.info.warning:before{content:\"alert\"}.info.warning:hover:before{color:var(--warning-color)}.info-hud table{max-width:280px;table-layout:auto}.info-hud td{word-wrap:break-word;width:100%}@media(max-width: 450px){.info-hud table{table-layout:fixed;width:100%}}.content{position:relative}.content:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.customize-sources-modal{overflow:visible !important}body.ltr .customize-sources-modal{padding-left:200px}body.rtl .customize-sources-modal{padding-right:200px}.customize-sources-modal>.cs-sidebar{position:absolute;top:0;margin:0;padding:10px 0;border:none;width:200px;height:calc(100% - 44px);box-sizing:border-box;background-color:var(--gray-050);overflow:auto;box-shadow:inset -1px 0 0 var(--hairline-color)}body.ltr .customize-sources-modal>.cs-sidebar{left:0}body.rtl .customize-sources-modal>.cs-sidebar{right:0}body.ltr .customize-sources-modal>.cs-sidebar{border-top-left-radius:var(--large-border-radius)}body.rtl .customize-sources-modal>.cs-sidebar{border-top-right-radius:var(--large-border-radius)}.customize-sources-modal>.cs-sidebar>.btn{display:block;width:calc(100% - 28px)}body.ltr .customize-sources-modal>.cs-sidebar>.btn{margin:10px 0 0 14px}body.rtl .customize-sources-modal>.cs-sidebar>.btn{margin:10px 14px 0 0}body.ltr .customize-sources-modal.sidebar-hidden{padding-left:0}body.rtl .customize-sources-modal.sidebar-hidden{padding-right:0}.customize-sources-modal.sidebar-hidden>.cs-sidebar{display:none}.customize-sources-modal>.source-settings{position:relative;height:calc(100% - 44px);box-sizing:border-box;padding:24px;overflow:auto}.customize-sources-modal>.footer{position:absolute;bottom:0;left:0;width:100%}.customize-sources-item{--selected-item-color: var(--white);display:flex;width:calc(100% - 1px);box-sizing:border-box;align-items:center;position:relative;margin-top:-1px;background-color:var(--gray-100);border:solid var(--hairline-color);border-width:1px 0;user-select:none;cursor:default}.customize-sources-item+.customize-sources-item.heading{margin-top:10px}.customize-sources-item+.customize-sources-item:not(.heading){border-top:1px solid var(--hairline-color)}.customize-sources-item.sel{--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);--ui-control-color: var(--selected-item-color);background-color:var(--dark-sel-color);color:var(--selected-item-color);z-index:1}.customize-sources-item .label{flex:1}.customize-sources-item.heading .label{text-transform:uppercase;color:var(--light-text-color);font-size:12px;font-weight:bold}.customize-sources-item.heading.sel .label{color:var(--selected-item-color)}.customize-sources-item__move{position:absolute;top:50%;transform:translate(-50%, -50%);justify-content:center;align-items:center}body.ltr .customize-sources-item__move{right:0}body.rtl .customize-sources-item__move{left:0}.customize-sources-item__move.icon{display:flex;text-decoration:none}.customize-sources-item__btn{padding:8px 14px;margin:3px}body.ltr .customize-sources-item__btn{padding-right:30px}body.rtl .customize-sources-item__btn{padding-left:30px}.checkbox-select-item{display:flex;align-items:flex-start;align-content:stretch;margin-bottom:4px}.checkbox-select-item .move{margin-top:-3px;position:relative;z-index:1}body.ltr .checkbox-select-item .move{margin-right:10px}body.rtl .checkbox-select-item .move{margin-left:10px}ul.path{display:flex;flex-direction:row;align-items:stretch;flex-wrap:wrap}ul.path li{display:inline-flex;align-items:center}ul.path li:not(:last-child):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr ul.path li:not(:last-child):after{margin:0 5px 0 2px}body.rtl ul.path li:not(:last-child):after{margin:0 2px 0 5px}body.ltr ul.path li:not(:last-child):after{transform:rotate(-45deg)}body.rtl ul.path li:not(:last-child):after{transform:rotate(135deg)}ul.icons{margin-top:20px;display:flex;flex-wrap:wrap}ul.icons li{margin:0 4px 10px 0}ul.icons li a{display:block;position:relative;padding:60px 5px 10px;width:110px;text-align:center;color:var(--text-color);border-radius:4px;border:1px solid var(--white)}ul.icons li a:before{display:block;position:absolute;top:0;left:0;width:100%;font-size:40px;line-height:60px}ul.icons li a .icon img,ul.icons li a .icon svg{width:40px;height:40px;position:absolute;top:12px;left:calc(50% - 20px)}ul.icons li a .icon.icon-mask svg rect,ul.icons li a .icon.icon-mask svg circle,ul.icons li a .icon.icon-mask svg ellipse,ul.icons li a .icon.icon-mask svg line,ul.icons li a .icon.icon-mask svg polyline,ul.icons li a .icon.icon-mask svg polygon,ul.icons li a .icon.icon-mask svg path,ul.icons li a .icon.icon-mask svg text{fill:var(--text-color);stroke-width:0}ul.icons li a:hover{text-decoration:none;background-color:var(--gray-050);border-color:var(--gray-100)}ul.icons li a:hover .icon.icon-mask svg rect,ul.icons li a:hover .icon.icon-mask svg circle,ul.icons li a:hover .icon.icon-mask svg ellipse,ul.icons li a:hover .icon.icon-mask svg line,ul.icons li a:hover .icon.icon-mask svg polyline,ul.icons li a:hover .icon.icon-mask svg polygon,ul.icons li a:hover .icon.icon-mask svg path,ul.icons li a:hover .icon.icon-mask svg text{fill:var(--link-color);stroke-width:0}@media only screen and (max-width: 380px){ul.icons li a{width:96px}}@media only screen and (max-width: 320px){ul.icons li a{width:75px}}.toolbar{position:relative;margin-bottom:var(--s);min-height:34px}.toolbar.flex,.toolbar .flex{align-items:flex-start}.toolbar .text{border-radius:var(--large-border-radius) !important}.flex{display:flex;align-items:center;align-content:stretch;gap:var(--s)}.flex.flex-gap-xs{gap:var(--xs)}.flex.flex-gap-m{gap:var(--m)}.flex.flex-gap-l{gap:var(--l)}.flex.flex-gap-xl{gap:var(--xl)}.flex:not(.flex-nowrap){flex-wrap:wrap}.flex>*.label{white-space:nowrap}.centeralign .flex{justify-content:center}.inline-flex{display:inline-flex !important;align-items:center;align-content:stretch;gap:var(--s)}.gap-xs{gap:var(--xs)}.gap-s{gap:var(--s)}.gap-m{gap:var(--m)}.gap-l{gap:var(--l)}.gap-xl{gap:var(--xl)}.flex-grow{flex:1;max-width:100%}.flex-justify{justify-content:space-between}.flex-justify-start{justify-content:flex-start}.flex-justify-end{justify-content:flex-end}.flex-justify-center{justify-content:center}.flex-start{align-items:flex-start}.flex-end{align-items:flex-end}.flex-center{align-items:center}.flex-stretch{align-items:stretch}.spacer{width:14px}.buttons{display:flex;gap:7px;position:relative;margin:24px 0;align-items:center}.hud-footer>.buttons,.footer>.buttons{margin:0}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ui-control-border-radius);padding:7px 10px;border:none;text-align:center;white-space:nowrap;user-select:none;box-sizing:border-box;appearance:none;color:currentColor;font-size:inherit;background-color:var(--ui-control-bg-color)}.btn:not([aria-current]){cursor:pointer}.btn.chromeless{background-color:rgba(0,0,0,0);height:auto;padding:0}.btn.chromeless:hover,.btn.chromeless:active,.btn.chromeless:focus{background-color:rgba(0,0,0,0)}.btn.chromeless:hover,.btn.chromeless:active{text-decoration:underline}.btn.hairline,.btn.link-btn{border:1px solid var(--medium-hairline-color);background-color:rgba(0,0,0,0)}.btn.hairline:active,.btn.hairline[aria-expanded=true],.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{background-color:var(--ui-control-static-bg-color)}.btn.hairline:hover,.btn.hairline:active,.btn.hairline[aria-expanded=true]{border-color:var(--dark-hairline-color)}.btn.link-btn{color:var(--link-color)}.btn.link-btn:hover,.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{border-color:var(--link-color)}.btn.wrap{height:auto;min-height:34px;white-space:initial;text-align:left}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):hover{--ui-control-bg-color: var(--ui-control-hover-bg-color)}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current])[aria-expanded=true]{--ui-control-bg-color: var(--ui-control-active-bg-color)}.btn[type=color]{padding:6px !important;width:36px}.btn.loading{cursor:default}.btn:hover{text-decoration:none}.btn:empty,.btn.btn-empty{padding-left:12px;padding-right:12px}body.ltr .btn[data-icon]:not(:empty):not(.btn-empty):before,body.ltr .btn.icon:not(:empty):not(.btn-empty):before,body.ltr .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.ltr .btn.menubtn:not(.action-btn).icon:empty:before,body.ltr .btn.menubtn:not(.action-btn).icon.btn-empty:before{margin-right:5px}body.rtl .btn[data-icon]:not(:empty):not(.btn-empty):before,body.rtl .btn.icon:not(:empty):not(.btn-empty):before,body.rtl .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.rtl .btn.menubtn:not(.action-btn).icon:empty:before,body.rtl .btn.menubtn:not(.action-btn).icon.btn-empty:before{margin-left:5px}.btn:not(.loading) .spinner{display:none}.btn.loading:before,.btn.loading:after,.btn.loading .label{visibility:hidden}.btn div.checkbox{margin-top:2px}.btn [data-icon]{margin-top:-3px}body.ltr .btn [data-icon]{margin-right:5px}body.rtl .btn [data-icon]{margin-left:5px}.btn [data-icon].light:before{color:var(--gray-300)}.disabled{opacity:.25;pointer-events:none;user-select:none}.noteditable{cursor:not-allowed}.noteditable .element,.noteditable .lightswitch-container,.noteditable+.colorhex{cursor:not-allowed}.btn,.spinner{height:var(--ui-control-height)}body.ltr .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.ltr .menu-toggle:not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn).icon:after{margin-left:6px}body.rtl .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.rtl .menu-toggle:not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn).icon:after{margin-right:6px}.btn[data-icon]:before,.btn[data-icon-after]:after,.btn.icon:before{position:relative}.btn.small[data-icon]:before,.btn.small[data-icon-after]:after,.btn.icon.small:before{font-size:10px}.btngroup{position:relative;z-index:1;display:flex;white-space:nowrap;align-items:center;border-radius:var(--large-border-radius)}.btngroup.fullwidth .btn{flex:1}.btngroup.disabled .btn{cursor:default}.btngroup .btn:focus{z-index:1}body.ltr .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-right:1px}body.rtl .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-left:1px}body.ltr .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-top-left-radius:0;border-bottom-left-radius:0}body.ltr .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-top-right-radius:0;border-bottom-right-radius:0}body.rtl .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-top-right-radius:0;border-bottom-right-radius:0}body.rtl .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-top-left-radius:0;border-bottom-left-radius:0}.btngroup--exclusive .btn[aria-pressed=true]:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]){background-color:var(--gray-500);color:var(--white)}.copytext{position:relative;z-index:1;display:flex;white-space:nowrap;align-items:center}body.ltr .copytext .text{border-top-right-radius:0;border-bottom-right-radius:0;min-width:0}body.ltr .copytext .btn{border-top-left-radius:0;border-bottom-left-radius:0}body.rtl .copytext .text{border-top-left-radius:0;border-bottom-left-radius:0}body.rtl .copytext .btn{border-top-right-radius:0;border-bottom-right-radius:0}.copytextbtn{display:inline-flex;flex-wrap:nowrap;align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);padding:0 9px;cursor:pointer;color:var(--medium-text-color)}.copytextbtn .copytextbtn__icon{padding:0;width:13px;background:none;margin-top:-3px;color:var(--light-text-color)}body.ltr .copytextbtn .copytextbtn__icon{margin-left:5px}body.rtl .copytextbtn .copytextbtn__icon{margin-right:5px}.copytextbtn:hover,.copytextbtn:focus{border-color:var(--medium-hairline-color);color:var(--text-color)}.copytextbtn:hover .copytextbtn__value,.copytextbtn:focus .copytextbtn__value{color:var(--text-color)}.copytextbtn.small{padding:0 5px}.copytextbtn.small .copytextbtn__value{font-size:.6875rem}.menu-toggle,.menubtn:not(.action-btn){display:inline-flex;align-items:center;user-select:none}.menu-toggle:after,.menubtn:not(.action-btn):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:relative}.menu-toggle.btn:after,.menubtn:not(.action-btn).btn:after{top:-1px}.menu-toggle.btn:not(.disabled):not(.inactive):active:after,.menu-toggle.btn:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive).active:after{border-color:var(--ui-control-active-color)}.menu-toggle.btn.submit:after,.menubtn:not(.action-btn).btn.submit:after{border-color:var(--white) !important;opacity:.8}.menu-toggle.btn.submit:not(.disabled):not(.inactive):hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).active:after{opacity:1}.menu-toggle:not(.btn):not(.icon),.menubtn:not(.action-btn):not(.btn):not(.icon){height:17px}.menu-toggle:not(.btn):not(.icon):after,.menubtn:not(.action-btn):not(.btn):not(.icon):after{top:-2px;border-color:var(--link-color)}body.ltr .menu-toggle:empty,body.ltr .menu-toggle.btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.ltr .menubtn:not(.action-btn).btn-empty{padding-left:8px}body.rtl .menu-toggle:empty,body.rtl .menu-toggle.btn-empty,body.rtl .menubtn:not(.action-btn):empty,body.rtl .menubtn:not(.action-btn).btn-empty{padding-right:8px}body.ltr .menu-toggle:empty,body.ltr .menu-toggle.btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.ltr .menubtn:not(.action-btn).btn-empty{padding-right:8px}body.rtl .menu-toggle:empty,body.rtl .menu-toggle.btn-empty,body.rtl .menubtn:not(.action-btn):empty,body.rtl .menubtn:not(.action-btn).btn-empty{padding-left:8px}@keyframes rotator{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner{display:inline-flex;align-items:center;justify-content:center;width:var(--size, 24px);height:var(--size, 34px)}.spinner:before{display:block;content:\"\";font-size:0;animation:rotator .7s linear infinite;box-sizing:border-box;width:var(--size, 20px);height:var(--size, 20px);object-fit:scale-down;border-radius:50%;border:2px solid rgba(0,0,0,0);border-right-color:currentColor;border-bottom-color:currentColor;opacity:.8}.spinner.small{--size: 12px}.spinner.big{--size: 48px}.spinner.spinner-absolute{position:absolute;width:var(--size, 20px);height:var(--size, 20px);top:var(--elements-busy-top-position);left:calc(50% - var(--size, 20px)/2)}body.ltr .btn+.spinner{margin-left:7px}body.rtl .btn+.spinner{margin-right:7px}body.ltr .buttons .btn+.spinner,body.ltr .buttons .btngroup+.spinner{margin-left:0}body.rtl .buttons .btn+.spinner,body.rtl .buttons .btngroup+.spinner{margin-right:0}body.ltr .buttons.right .btn+.spinner{margin-right:var(--neg-padding)}body.rtl .buttons.right .btn+.spinner{margin-left:var(--neg-padding)}.btngroup.small .btn,.btn.small{padding:0 var(--s) !important;font-size:12px;line-height:22px}.btngroup.small,.btngroup.small input.btn,.btn.small,.btn.small+.spinner{height:22px}.btngroup.big .btn,.btn.big{padding:0 14px;font-size:14px;line-height:36px}body.ltr .btn.big[data-icon]:before,body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-left:-2px}body.rtl .btn.big[data-icon]:before,body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-right:-2px}.btngroup.big,.btngroup.big input.btn,.btn.big,.btn.big+.spinner{height:36px}.btn.huge{padding:var(--l);line-height:48px;height:48px}.btn.submit,.btn.secondary{color:var(--white) !important;--ui-control-active-color: var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.btn.submit{background-color:var(--primary-color) !important}.btn.submit:not(.disabled):not(.inactive):not(.loading):hover,.btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.btn.submit:not(.disabled):not(.inactive):not(.loading):focus{background-color:#c82020 !important}.btn.submit:not(.disabled):not(.inactive):not(.loading):active,.btn.submit:not(.disabled):not(.inactive):not(.loading).active,.btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#b21d1d !important}.btn.caution{background-color:var(--red-050) !important;color:var(--error-color)}.btn.caution:hover,.btn.caution.hover,.btn.caution:focus{background-color:#fcdada !important}.btn.caution:active,.btn.caution.active,.btn.caution[aria-expanded=true]{background-color:var(--red-100) !important}.secondary-buttons .btn.submit,.btn.secondary{background-color:var(--secondary-color) !important}.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus{background-color:#55616d !important}.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true],.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,.btn.secondary:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#4a545e !important}div.btn.submit{position:relative;overflow:hidden}div.btn.submit input{position:absolute;left:100%}.btn.dashed{border:1px dashed var(--medium-hairline-color);background-color:rgba(0,0,0,0)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-right:1px solid rgba(0,0,0,0)}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-left:1px solid rgba(0,0,0,0)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-right:-1px}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-left:-1px}.btn.dashed:focus{background-color:rgba(205,216,228,.1);border-color:rgba(0,0,0,0)}.reduce-focus-visibility .btn.dashed:focus:not(:focus-visible){border:1px dashed var(--medium-hairline-color)}.btn.dashed:not(.disabled):active,.btn.dashed:not(.disabled).active,.btn.dashed:not(.disabled)[aria-expanded=true]{background-color:rgba(205,216,228,.25)}.chevron-btns{display:flex;justify-content:flex-start}.chevron-btns .btn{position:relative;padding:0;border-radius:0;background-color:rgba(0,0,0,0)}.chevron-btns .btn.current-step,.chevron-btns .btn.active-drop-target{color:var(--white);--text-color: var(--white);--ui-control-color: var(--white);--ui-control-bg-color: var(--gray-500);--ui-control-hover-bg-color: #55616d;--ui-control-active-bg-color: #4a545e}.chevron-btns .btn.current-step{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7)}.chevron-btns .btn:focus{z-index:1;box-shadow:none}.chevron-btns .btn:focus .label{z-index:1;box-shadow:var(--focus-ring)}.reduce-focus-visibility .chevron-btns .btn:focus:not(:focus-visible) .label{box-shadow:none}.reduce-focus-visibility .chevron-btns .btn:focus-visible .label{box-shadow:var(--focus-ring)}body.ltr .chevron-btns .btn:not(.has-action-menu){padding-right:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns .btn:not(.has-action-menu){padding-left:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns .btn:not(.has-action-menu){margin-right:2.8px}body.rtl .chevron-btns .btn:not(.has-action-menu){margin-left:2.8px}body.ltr .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-right:5px}body.rtl .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-left:5px}body.ltr .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-left:8px}body.rtl .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-right:8px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label{padding:3px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:relative}.chevron-btns .btn .btn-body{display:inline-flex;align-items:center;justify-content:center;height:var(--ui-control-height);background-color:var(--ui-control-bg-color)}.chevron-btns .btn .btn-body [data-icon]{--ui-control-height: calc((13rem / 16));text-align:center}body.ltr .chevron-btns .btn .btn-body [data-icon]{margin-right:0}body.rtl .chevron-btns .btn .btn-body [data-icon]{margin-left:0}.chevron-btns .btn .label{display:inline-flex;align-items:center;overflow:hidden;text-overflow:ellipsis}body.ltr .chevron-btns .btn.has-action-menu .btn-body{padding-right:1px}body.rtl .chevron-btns .btn.has-action-menu .btn-body{padding-left:1px}body.ltr .chevron-btns .btn.has-action-menu .btn-body{margin-right:0}body.rtl .chevron-btns .btn.has-action-menu .btn-body{margin-left:0}.chevron-btns .btn .chevron-right,.chevron-btns .btn .chevron-left{position:absolute;top:0;height:100%;width:calc(var(--ui-control-height)/2)}.chevron-btns .btn .chevron-left{border-top:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left{left:0}body.rtl .chevron-btns .btn .chevron-left{right:0}body.ltr .chevron-btns .btn .chevron-left{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .chevron-btns .btn .chevron-left{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.chevron-btns .btn .chevron-left:after{display:block;content:\"\";font-size:0;position:absolute;bottom:0;border-bottom:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left:after{right:0}body.rtl .chevron-btns .btn .chevron-left:after{left:0}body.ltr .chevron-btns .btn .chevron-left:after{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .chevron-btns .btn .chevron-left:after{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.chevron-btns .btn .chevron-right{border-top:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0);border-bottom:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.ltr .chevron-btns .btn .chevron-right{right:0}body.rtl .chevron-btns .btn .chevron-right{left:0}body.ltr .chevron-btns .btn .chevron-right{border-left:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.rtl .chevron-btns .btn .chevron-right{border-right:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}.chevron-btns ol{position:relative;list-style-type:none;display:flex}body.ltr .chevron-btns ol{padding-left:0}body.rtl .chevron-btns ol{padding-right:0}body.ltr .chevron-btns ol li.first-step .btn .btn-body{padding-left:14px}body.rtl .chevron-btns ol li.first-step .btn .btn-body{padding-right:14px}body.ltr .chevron-btns ol li.first-step .btn .btn-body{border-radius:var(--ui-control-border-radius) 0 0 var(--ui-control-border-radius)}body.rtl .chevron-btns ol li.first-step .btn .btn-body{border-radius:0 var(--ui-control-border-radius) var(--ui-control-border-radius) 0}.chevron-btns ol li.first-step .btn .chevron-left{display:none}body.ltr .chevron-btns ol li:not(.first-step) .btn{margin-left:calc(-1*var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{margin-right:calc(-1*var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn{padding-left:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{padding-right:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-left:7px}body.rtl .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-right:7px}.color-input-container{position:relative}.color-input-container .color-hex-indicator{position:absolute;top:0;width:1em;line-height:34px;text-align:center;user-select:none}body.ltr .color-input-container .color-hex-indicator{left:7px}body.rtl .color-input-container .color-hex-indicator{right:7px}.color-input{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important}body.ltr .color-input{padding-left:calc(7px + 1em)}body.rtl .color-input{padding-right:calc(7px + 1em)}.color{display:inline-block;position:relative;vertical-align:middle;width:34px;height:34px;border-radius:17px;padding:0}.color:not(.static):not(.noteditable){cursor:pointer}.color:not(.small){background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:17px 17px;background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px}.color.small{width:16px;height:16px;background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:8px 8px;background-position:0 0,4px 0,4px -4px,0 4px}.color .color-preview{position:absolute;top:0;width:100%;height:100%;border-radius:17px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}body.ltr .color .color-preview{left:0}body.rtl .color .color-preview{right:0}.color .color-preview:focus-within{box-shadow:var(--focus-ring)}.color .color-preview>.color-preview-input{position:absolute;width:100%;height:100%;margin:0;padding:0;border:none;opacity:0}body.ltr .color .color-preview>.color-preview-input{left:0}body.rtl .color .color-preview>.color-preview-input{right:0}.colorhex{display:inline-block;margin-left:5px;vertical-align:middle;color:var(--medium-text-color)}.lightswitch-outer-container{display:flex}.lightswitch-outer-container .lightswitch-inner-container{border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);display:flex;align-items:center;max-width:100%;padding-left:7px;padding-right:7px}.lightswitch-outer-container .lightswitch-inner-container span{flex-grow:1;padding:7px 0;color:var(--medium-text-color);cursor:default;overflow:auto;overflow-wrap:break-word;hyphens:auto}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-right:7px}.lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:right}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-right:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:left}.lightswitch{display:block;position:relative;border:none !important;overflow:hidden;cursor:pointer;user-select:none;background-image:linear-gradient(to right, var(--gray-400), var(--gray-400));transition:background-image linear 100ms}.lightswitch.on{background-image:linear-gradient(to right, var(--enabled-color), var(--enabled-color))}.lightswitch.indeterminate{background-image:linear-gradient(to right, var(--enabled-color), var(--gray-300))}.lightswitch .lightswitch-container{position:relative;height:100%}.lightswitch .lightswitch-container .handle{position:absolute;top:1px;background-color:var(--white)}.lightswitch:not(.small){border-radius:11px;min-width:34px;width:34px;height:22px}.lightswitch:not(.small) .lightswitch-container{width:46px}body.ltr .lightswitch:not(.small) .lightswitch-container{margin-left:-12px}body.rtl .lightswitch:not(.small) .lightswitch-container{margin-right:-12px}.lightswitch:not(.small) .lightswitch-container .handle{border-radius:10px;width:20px;height:20px;left:calc(50% - 10px)}.lightswitch.small{border-radius:9px;width:28px;height:18px}.lightswitch.small .lightswitch-container{width:38px}body.ltr .lightswitch.small .lightswitch-container{margin-left:-10px}body.rtl .lightswitch.small .lightswitch-container{margin-right:-10px}.lightswitch.small .lightswitch-container .handle{border-radius:8px;width:16px;height:16px;left:calc(50% - 8px)}table .lightswitch{display:inline-block;margin-bottom:-5px}body.ltr .lightswitch.on .lightswitch-container{margin-left:0}body.rtl .lightswitch.on .lightswitch-container{margin-right:0}body.ltr .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-left:-6px}body.rtl .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-right:-6px}body.ltr .lightswitch.indeterminate.small .lightswitch-container{margin-left:-5px}body.rtl .lightswitch.indeterminate.small .lightswitch-container{margin-right:-5px}table.data+.pagination{margin-top:24px}.pagination .page-link{width:1.875rem;height:1.875rem;display:flex;align-items:center;justify-content:center;border-radius:var(--medium-border-radius)}.pagination .page-link:after{position:relative;transition:border-color linear 100ms}.pagination .page-link.prev-page:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .pagination .page-link.prev-page:after{transform:rotate(135deg)}body.rtl .pagination .page-link.prev-page:after{transform:rotate(-45deg)}body.ltr .pagination .page-link.prev-page:after{right:-1px}body.rtl .pagination .page-link.prev-page:after{left:-1px}.pagination .page-link.next-page:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .pagination .page-link.next-page:after{transform:rotate(-45deg)}body.rtl .pagination .page-link.next-page:after{transform:rotate(135deg)}body.ltr .pagination .page-link.next-page:after{left:-1px}body.rtl .pagination .page-link.next-page:after{right:-1px}.pagination .page-link:not(.disabled){transition:box-shadow linear 100ms;box-shadow:inset 0 0 0 1px var(--hairline-color);cursor:pointer}.pagination .page-link:not(.disabled):hover{text-decoration:none;box-shadow:inset 0 0 0 1px var(--link-color)}.pagination .page-link:not(.disabled):hover:after{border-color:var(--link-color)}body:not(.reduce-focus-visibility) .pagination .page-link:not(.disabled):focus,body.reduce-focus-visibility .pagination .page-link:not(.disabled):focus-visible{box-shadow:inset 0 0 0 1px var(--hairline-color),var(--focus-ring)}.pagination .page-link.disabled{opacity:1}.pagination .page-link.disabled:after{border-color:var(--hairline-color)}body.ltr .actions{float:right}body.rtl .actions{float:left}body.ltr .actions>li{float:left}body.rtl .actions>li{float:right}body.ltr .actions>li+li{margin-left:10px}body.rtl .actions>li+li{margin-right:10px}h1+.actions{margin-top:-100px}h2+.actions{margin-top:-54px}.tablepane{--pane-y-padding-default: calc(var(--xl) - 2px);--pane-x-padding-default: calc(var(--padding) - 2px);margin:calc(var(--pane-padding, var(--pane-y-padding-default))*-1) calc(var(--pane-padding, var(--pane-x-padding-default))*-1) calc(var(--pane-padding, var(--padding))*-1 + var(--pane-padding, var(--m)));padding:0 !important;overscroll-behavior:contain;overflow-x:auto}body.ltr .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.ltr .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-left:var(--pane-padding, var(--pane-x-padding-default))}body.rtl .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.rtl .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-right:var(--pane-padding, var(--pane-x-padding-default))}body.ltr .tablepane table.data th:last-child,body.ltr .tablepane table.data td:last-child{padding-right:var(--pane-padding, var(--pane-x-padding-default))}body.rtl .tablepane table.data th:last-child,body.rtl .tablepane table.data td:last-child{padding-left:var(--pane-padding, var(--pane-x-padding-default))}table.fixed-layout{table-layout:fixed}table th.thin,table td.thin{width:.01% !important;white-space:nowrap}table thead th{font-weight:bold;vertical-align:top}body.ltr table thead th{text-align:left}body.rtl table thead th{text-align:right}table:not(.data) th,table:not(.data) td{padding-top:7px;padding-bottom:7px}table:not(.data) th:not(:first-child),table:not(.data) td:not(:first-child){padding-left:12px}table:not(.data) th:not(:last-child),table:not(.data) td:not(:last-child){padding-right:12px}table.data th,table.data td{position:relative;padding-left:12px;padding-right:12px;box-sizing:border-box}table.data th.checkbox-cell,table.data th.vuetable-th-slot-checkbox,table.data td.checkbox-cell,table.data td.vuetable-th-slot-checkbox{width:var(--checkbox-size) !important;min-width:var(--checkbox-size);box-sizing:content-box;position:relative}table.data th.checkbox-cell input.checkbox+label,table.data th.checkbox-cell div.checkbox,table.data th.vuetable-th-slot-checkbox input.checkbox+label,table.data th.vuetable-th-slot-checkbox div.checkbox,table.data td.checkbox-cell input.checkbox+label,table.data td.checkbox-cell div.checkbox,table.data td.vuetable-th-slot-checkbox input.checkbox+label,table.data td.vuetable-th-slot-checkbox div.checkbox{position:absolute;top:calc(50% - .5rem)}table.data th{font-weight:bold}body.ltr table.data thead:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child{border-top-left-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child{border-top-right-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child{border-bottom-left-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child{border-bottom-right-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child{border-top-right-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child{border-top-left-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child{border-bottom-right-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child{border-bottom-left-radius:var(--border-radius, var(--small-border-radius))}table.data thead th,table.data thead td{width:auto;background-color:var(--gray-050);cursor:default}table.data thead th:not(.orderable),table.data thead td{padding-top:var(--s);padding-bottom:var(--s)}table.data thead th{white-space:nowrap;vertical-align:middle}table.data thead th.orderable{position:relative;padding:0 !important}body:not(.dragging) table.data thead th.orderable:not(.ordered):hover{background-color:var(--gray-100)}table.data thead th.orderable.ordered{background-color:var(--light-sel-color)}table.data thead th.orderable.ordered:not(.loading) button:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(225deg);top:2px;position:absolute;top:calc(50% - 3px)}body.ltr table.data thead th.orderable.ordered:not(.loading) button:after{right:var(--m)}body.rtl table.data thead th.orderable.ordered:not(.loading) button:after{left:var(--m)}table.data thead th.orderable.ordered:not(.loading).desc button:after{transform:rotate(45deg)}table.data thead th.orderable button{position:relative;font:inherit;width:100%;padding:var(--pane-padding, var(--m)) var(--m)}body.ltr table.data thead th.orderable button{padding-right:35px}body.rtl table.data thead th.orderable button{padding-left:35px}body.ltr table.data thead th.orderable button{text-align:left}body.rtl table.data thead th.orderable button{text-align:right}table.data thead th.orderable button:focus{z-index:1}table.data thead th:not(.loading) .spinner{display:none}table.data thead th .spinner{position:absolute;top:calc(50% - 6px);--size: 12px}body.ltr table.data thead th .spinner{right:8px}body.rtl table.data thead th .spinner{left:8px}table.data tbody tr{--hover-bg-color: var(--gray-050);--selected-bg-color: var(--dark-sel-color)}table.data tbody tr:not(.disabled):hover th,table.data tbody tr:not(.disabled):hover td{background-color:var(--hover-bg-color)}table.data tbody tr:not(.disabled):focus{position:relative;z-index:1}table.data tbody tr:not(.disabled).sel,table.data tbody tr:not(.disabled).active-drop-target{--text-color: var(--white);--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl))}table.data tbody tr:not(.disabled).sel th,table.data tbody tr:not(.disabled).sel td,table.data tbody tr:not(.disabled).active-drop-target th,table.data tbody tr:not(.disabled).active-drop-target td{color:var(--white);background-color:var(--selected-bg-color)}table.data tbody th,table.data tbody td{padding-top:7px;padding-bottom:7px;background-clip:padding-box;max-width:33vw}table.data tbody td.timestamp{vertical-align:bottom;white-space:nowrap;color:var(--light-text-color)}body.ltr table.data tbody td.timestamp{text-align:right}body.rtl table.data tbody td.timestamp{text-align:left}table.data thead+tbody tr th,table.data thead+tbody tr td,table.data tr+tr th,table.data tr+tr td{border-top:1px solid rgba(0,0,0,0)}table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) th,table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) td{border-top-color:var(--gray-300)}table.collapsed{width:auto}table.collapsed,table.collapsed tbody,table.collapsed tbody tr,table.collapsed tbody th,table.collapsed tbody td{display:block;border:none;padding:0;width:auto !important;white-space:normal}body.ltr table.collapsed,body.ltr table.collapsed tbody,body.ltr table.collapsed tbody tr,body.ltr table.collapsed tbody th,body.ltr table.collapsed tbody td{text-align:left}body.rtl table.collapsed,body.rtl table.collapsed tbody,body.rtl table.collapsed tbody tr,body.rtl table.collapsed tbody th,body.rtl table.collapsed tbody td{text-align:right}table.collapsed thead{display:none}table.collapsed tbody tr{padding:6px 0;border-bottom:1px dotted var(--hairline-color)}table.collapsed tbody tr:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}table.collapsed tbody th,table.collapsed tbody td{padding:2px 0 !important}table.collapsed tbody td:empty{display:none}body.ltr table.collapsed tbody [data-title]{margin-right:0}body.rtl table.collapsed tbody [data-title]{margin-left:0}table.collapsed tbody [data-title]:before{margin-right:5px;content:attr(data-title) \":\";font-weight:bold}table.collapsed tbody [data-title] form{display:inline-block}.datatablesorthelper,.editabletablesorthelper{background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.datatablesorthelper,.datatablesorthelper .chip,.datatablesorthelper a{cursor:move !important}.datatablesorthelper tr:first-child th,.datatablesorthelper tr:first-child td{border-top:none !important}.datatablesorthelper tr:last-child th,.datatablesorthelper tr:last-child td{border-bottom:none !important}.datatablesorthelper th .toggle{display:none !important}.chip,.card{color:var(--custom-text-color, var(--text-color));background-color:var(--custom-bg-color, var(--gray-050))}.chip{position:relative;display:inline-flex;align-items:center;cursor:default;user-select:none;font-weight:normal;padding:0 var(--s);max-width:100%;gap:var(--xs);border-radius:var(--large-border-radius)}.chip.small{flex-direction:row;min-height:calc(1.625rem + 8px);--thumb-size: calc(30rem / 16)}body.ltr .chip.small>.thumb{margin:0 2px 0 -2px}body.rtl .chip.small>.thumb{margin:0 -2px 0 2px}.chip.small>.thumb.cp-icon{--thumb-size: 1rem}.chip.large{flex-direction:column;--thumb-size: 120px;min-width:calc(var(--s)*2 + var(--thumb-size));width:100%;padding-top:var(--xs);padding-bottom:var(--xs)}.chip.large .chip-content{width:100%}.chip .chip-content{display:flex;flex-direction:row;align-items:center;gap:var(--s);max-width:100%}body.ltr .chip .chip-content .status,body.ltr .chip .chip-content .icon{margin-right:0}body.rtl .chip .chip-content .status,body.rtl .chip .chip-content .icon{margin-left:0}.chip .chip-content .icon{margin:-4px -1px 0}.chip .chip-content .chip-actions{margin-left:auto}.chip.sel,li.sel .chip,li.active-drop-target .chip{--text-color: var(--white);--custom-text-color: var(--white) !important;--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl));color:var(--white);background-color:var(--custom-sel-bg-color, var(--dark-sel-color)) !important}.chip.sel .cp-icon,li.sel .chip .cp-icon,li.active-drop-target .chip .cp-icon{--icon-color: var(--white) !important}.chip.sel,.sel .chip{cursor:default}.chip.sel .thumb,.sel .chip .thumb{filter:brightness(0.85)}.chip.sel .thumb img,.sel .chip .thumb img{box-shadow:0 0 0 1px rgba(96,109,123,.1),0 6px 4px -4px rgba(96,109,123,.2)}.offset-drag-helper .chip{background-color:var(--gray-050);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.chip>.thumb{flex:0 0 auto;position:relative;display:flex;align-items:center;justify-content:center;width:var(--thumb-size);height:var(--thumb-size)}.chip>.thumb.rounded img,.chip>.thumb.rounded svg{border:var(--xs) solid rgba(0,0,0,0);border-radius:50%}.chip>.thumb.checkered img{background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:8px 8px;background-position:0 0,4px 0,4px -4px,0 4px}.chip>.thumb img,.chip>.thumb svg{display:block;flex-shrink:0;border-radius:var(--small-border-radius);max-width:100%;max-height:100%}.chip>.thumb svg{width:100%}.cp-icon{display:flex;align-items:center;justify-content:center;width:var(--icon-size);height:var(--icon-size);max-width:var(--icon-size)}.cp-icon svg{width:var(--icon-size);height:var(--icon-size);max-width:var(--icon-size) !important;max-height:var(--icon-size) !important}.cp-icon svg rect,.cp-icon svg circle,.cp-icon svg ellipse,.cp-icon svg line,.cp-icon svg polyline,.cp-icon svg polygon,.cp-icon svg path,.cp-icon svg text{fill:var(--icon-color, var(--ui-control-color));stroke-width:0}.cp-icon.large{--icon-size: calc(20rem / 16)}.cp-icon.small{--icon-size: calc(14rem / 16)}.cp-icon.puny{--icon-size: calc(12rem / 16)}.chips,.cards{display:flex;--custom-bg-color: initial;--custom-text-color: initial;--custom-sel-bg-color: initial}.chips:not(.inline-chips),.cards:not(.inline-chips){flex-direction:column}.chips li,.cards li{max-width:100%}.cards{gap:var(--s)}.chips{align-items:flex-start;gap:var(--xs)}.inline-chips{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--xs)}.inline-chips .chip{margin:0 !important}.elements.inline-chips{display:grid;grid-template-columns:repeat(auto-fill, minmax(160px, 1fr))}.card{position:relative;display:flex;flex-direction:row;align-items:stretch;padding:var(--m);gap:var(--m);border-radius:var(--large-border-radius);cursor:default;user-select:none;width:100%}.card:after{border-radius:var(--large-border-radius)}.card.sel,li.sel .card{--text-color: var(--white);--custom-text-color: var(--white) !important;--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl));color:var(--white);background-color:var(--custom-sel-bg-color, var(--dark-sel-color)) !important}.card.sel>.thumb,li.sel .card>.thumb{background-color:var(--dark-sel-color) !important;filter:brightness(0.85)}.card>.thumb{position:relative;display:flex;align-items:stretch;margin:calc(var(--m)*-1);width:128px;min-width:128px;min-height:calc(var(--m)*2 + var(--lh)*3 + var(--xs));background-color:var(--gray-100);overflow:hidden}body.ltr .card>.thumb{margin-right:0}body.rtl .card>.thumb{margin-left:0}.card>.thumb:after{display:block;content:\"\";font-size:0;position:absolute;top:0;bottom:0;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);width:10px}body.ltr .card>.thumb:after{right:-10px}body.rtl .card>.thumb:after{left:-10px}body.ltr .card>.thumb,body.ltr .card>.thumb:after{border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .card>.thumb,body.rtl .card>.thumb:after{border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.card>.thumb img,.card>.thumb svg{width:100%;max-height:128px;object-fit:cover}body.ltr .card>.cp-icon{margin:0 -4px 0 -2px}body.rtl .card>.cp-icon{margin:0 -2px 0 -4px}.card .card-content,.card .card-content .card-body{display:flex;flex-direction:column;gap:var(--xs);flex:1}.card .card-content{margin:calc((1rem - var(--lh))/2) 0;flex:1 0 0 !important;overflow:hidden;position:relative;--focus-ring: var(--inner-focus-ring)}.card .card-content .card-heading{display:flex;flex-direction:row;align-items:center;gap:5px}.card .card-content .card-heading .status{margin:0;flex:0 0 10px}.card .card-content .card-heading .label{font-weight:600}.card .card-content .card-body:empty{display:none}.card .card-content .card-body>*{--max-lines: 2;margin:0;max-height:calc(var(--lh)*var(--max-lines));overflow:hidden;text-wrap:pretty}.card .card-content .card-body .checkbox-preview-label{display:inline;font-style:italic;margin-inline-start:5px}.card>.card-actions-container{display:flex;align-items:flex-start !important;position:relative}.card-grid{display:grid !important;gap:var(--s) !important;grid-template-columns:repeat(auto-fill, minmax(360px, 1fr))}.card-grid>li{border-radius:var(--large-border-radius)}.card-grid>li>.card{margin:0 !important;height:100%}.lp-editor-container .card-grid{grid-template-columns:minmax(0, 1fr)}.context-label,.context-menu-container{display:inline-flex;align-items:center;height:var(--touch-target-size);padding:0 var(--s);font-size:11px;font-weight:normal;text-decoration:none !important;color:var(--light-text-color);border-radius:calc(var(--touch-target-size)/2);border:1px solid var(--medium-hairline-color)}body.ltr .context-label,body.ltr .context-menu-container{margin-left:var(--xs)}body.rtl .context-label,body.rtl .context-menu-container{margin-right:var(--xs)}body.ltr .context-menu-container{padding-right:0}body.rtl .context-menu-container{padding-left:0}body.ltr .context-menu-container .menubtn:not(.action-btn){margin:0 -1px 0 0}body.rtl .context-menu-container .menubtn:not(.action-btn){margin:0 0 0 -1px}body.ltr .context-menu-container .menubtn:not(.action-btn){padding-right:2px !important}body.rtl .context-menu-container .menubtn:not(.action-btn){padding-left:2px !important}body.ltr .context-menu-container .menubtn:not(.action-btn){border-left:1px solid var(--medium-hairline-color)}body.rtl .context-menu-container .menubtn:not(.action-btn){border-right:1px solid var(--medium-hairline-color)}body.ltr .context-menu-container .menubtn:not(.action-btn){border-radius:0 calc(var(--touch-target-size)/2) calc(var(--touch-target-size)/2) 0}body.rtl .context-menu-container .menubtn:not(.action-btn){border-radius:calc(var(--touch-target-size)/2) 0 0 calc(var(--touch-target-size)/2)}.context-menu-container .menubtn:not(.action-btn):hover{border-color:var(--dark-hairline-color) !important}.context-menu-container>*{display:inline-block}body.ltr .context-menu-container>*{padding-right:var(--s)}body.rtl .context-menu-container>*{padding-left:var(--s)}.context-menu-container .menubtn:not(.action-btn):only-child,.context-menu-container .visually-hidden:first-child+.menubtn:not(.action-btn):last-child{margin:0 calc(var(--s)*-1);border-left:none !important;border-radius:calc(var(--touch-target-size)/2) !important}.chip .checkbox:before,.card .checkbox:before{box-shadow:none !important}.chip .label,.card .label{display:flex;align-items:center;gap:var(--xs);overflow:hidden}.chip .label .label-link,.card .label .label-link{flex:1 1 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip .label .label-link:focus,.card .label .label-link:focus{box-shadow:var(--inner-focus-ring)}.chip .label .segment:after,.card .label .segment:after{display:inline-flex !important;position:relative;top:-2px;display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr .chip .label .segment:after,body.ltr .card .label .segment:after{margin:0 5px 0 2px}body.rtl .chip .label .segment:after,body.rtl .card .label .segment:after{margin:0 2px 0 5px}body.ltr .chip .label .segment:after,body.ltr .card .label .segment:after{transform:rotate(-45deg)}body.rtl .chip .label .segment:after,body.rtl .card .label .segment:after{transform:rotate(135deg)}.sel .chip .label .segment:after,.sel .card .label .segment:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--white);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr .sel .chip .label .segment:after,body.ltr .sel .card .label .segment:after{transform:rotate(-45deg)}body.rtl .sel .chip .label .segment:after,body.rtl .sel .card .label .segment:after{transform:rotate(135deg)}.chip>.chip-content>.chip-actions,.chip>.card-actions-container>.card-actions,.card>.chip-content>.chip-actions,.card>.card-actions-container>.card-actions{display:flex;flex-direction:row;align-items:center;gap:var(--s);min-height:1rem}.chip>.chip-content>.chip-actions:empty,.chip>.card-actions-container>.card-actions:empty,.card>.chip-content>.chip-actions:empty,.card>.card-actions-container>.card-actions:empty{display:none}.chip>.chip-content>.chip-actions>.status,.chip>.card-actions-container>.card-actions>.status,.card>.chip-content>.chip-actions>.status,.card>.card-actions-container>.card-actions>.status{margin:0}.chip>.chip-content>.chip-actions>.action-btn,.chip>.chip-content>.chip-actions>.move,.chip>.card-actions-container>.card-actions>.action-btn,.chip>.card-actions-container>.card-actions>.move,.card>.chip-content>.chip-actions>.action-btn,.card>.chip-content>.chip-actions>.move,.card>.card-actions-container>.card-actions>.action-btn,.card>.card-actions-container>.card-actions>.move{height:var(--touch-target-size);width:var(--touch-target-size);margin:0 -4px}.chip>.chip-content>.chip-actions>.action-btn:before,.chip>.chip-content>.chip-actions>.move:before,.chip>.card-actions-container>.card-actions>.action-btn:before,.chip>.card-actions-container>.card-actions>.move:before,.card>.chip-content>.chip-actions>.action-btn:before,.card>.chip-content>.chip-actions>.move:before,.card>.card-actions-container>.card-actions>.action-btn:before,.card>.card-actions-container>.card-actions>.move:before{color:var(--custom-text-color, var(--ui-control-color))}.chip>.chip-content>.chip-actions .action-btn,.chip>.card-actions-container>.card-actions .action-btn,.card>.chip-content>.chip-actions .action-btn,.card>.card-actions-container>.card-actions .action-btn{background-color:rgba(0,0,0,0)}body.ltr .chip>.chip-content>.chip-actions .action-btn:before,body.ltr .chip>.card-actions-container>.card-actions .action-btn:before,body.ltr .card>.chip-content>.chip-actions .action-btn:before,body.ltr .card>.card-actions-container>.card-actions .action-btn:before{margin-right:0 !important}body.rtl .chip>.chip-content>.chip-actions .action-btn:before,body.rtl .chip>.card-actions-container>.card-actions .action-btn:before,body.rtl .card>.chip-content>.chip-actions .action-btn:before,body.rtl .card>.card-actions-container>.card-actions .action-btn:before{margin-left:0 !important}.chip>.chip-content>.chip-actions .action-btn:hover,.chip>.chip-content>.chip-actions .action-btn:active,.chip>.chip-content>.chip-actions .action-btn[aria-expanded=true],.chip>.card-actions-container>.card-actions .action-btn:hover,.chip>.card-actions-container>.card-actions .action-btn:active,.chip>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.card>.chip-content>.chip-actions .action-btn:hover,.card>.chip-content>.chip-actions .action-btn:active,.card>.chip-content>.chip-actions .action-btn[aria-expanded=true],.card>.card-actions-container>.card-actions .action-btn:hover,.card>.card-actions-container>.card-actions .action-btn:active,.card>.card-actions-container>.card-actions .action-btn[aria-expanded=true]{backdrop-filter:brightness(90%)}.chip>.chip-content>.chip-actions .move,.chip>.card-actions-container>.card-actions .move,.card>.chip-content>.chip-actions .move,.card>.card-actions-container>.card-actions .move{margin-top:-3px !important}.chip.error .label .label-link,.card.error .label .label-link{color:var(--error-color)}.element-index .source-path{background-color:var(--gray-050);border-radius:3px;--ui-control-bg-color: var(--light-sel-color);--ui-control-hover-bg-color: #bdcbdb;--ui-control-active-bg-color: #acbed2}.element-index .source-path .chevron-btns{display:inline-flex;position:relative;background:#fff;--ui-control-height: calc((30rem / 16))}.element-index .source-path .chevron-btns:before{display:block;content:\"\";font-size:0;position:absolute;top:0;width:0;height:0;border-top:calc(var(--ui-control-height)/2) solid #f3f7fc}body.ltr .element-index .source-path .chevron-btns:before{right:0}body.rtl .element-index .source-path .chevron-btns:before{left:0}body.ltr .element-index .source-path .chevron-btns:before{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .element-index .source-path .chevron-btns:before{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.element-index .source-path .chevron-btns:after{display:block;content:\"\";font-size:0;position:absolute;top:calc(var(--ui-control-height)/2);border-bottom:calc(var(--ui-control-height)/2) solid #f3f7fc}body.ltr .element-index .source-path .chevron-btns:after{right:0}body.rtl .element-index .source-path .chevron-btns:after{left:0}body.ltr .element-index .source-path .chevron-btns:after{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .element-index .source-path .chevron-btns:after{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.element-index .source-path .chevron-btns .btn{--ui-control-border-radius: 3px}.element-index .source-path .btn.settings{box-shadow:0 0 0 2px var(--white)}.element-index.main .source-path{margin:-22px calc(var(--padding)*-1 + 2px) 24px}.elementselectormodal .element-index .source-path{margin-bottom:2px}.element-index.pane .toolbar{position:relative;z-index:2;margin:calc(var(--pane-padding)*-1) calc(var(--pane-padding)*-1) var(--pane-padding) !important;border-radius:calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) 0 0;padding:var(--pane-padding);box-shadow:0 1px 0 var(--hairline-color);background-color:var(--gray-050)}.element-index.pane .header{padding-top:var(--pane-padding);padding-bottom:var(--pane-padding);background-color:rgba(0,0,0,0);border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements{--border-radius: 0}.element-index.pane .elements .tableview table.data thead th,.element-index.pane .elements .tableview table.data thead td{border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements .tableview table.data thead th:not(.ordered),.element-index.pane .elements .tableview table.data thead td:not(.ordered){background-color:rgba(0,0,0,0)}.element-index.pane .footer{border-radius:0 0 calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) !important;box-shadow:none;border-top:1px solid var(--hairline-color);background:rgba(0,0,0,0)}.elements{position:relative}.elements:not(.busy) .update-spinner{display:none}.elements.busy{min-height:72px}.elements.busy:after{display:block;content:\"\";font-size:0;position:absolute;z-index:100;top:0;left:calc(var(--pane-padding, 24px)*-1);width:calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));height:100%;background:rgba(255,255,255,.75);border-radius:var(--large-border-radius)}.elements .header{margin:calc(var(--xl)*-1 + 2px) calc(var(--padding)*-1 + 2px) var(--xl);padding:var(--s);background-color:var(--gray-050);box-shadow:none;border-radius:var(--border-radius, var(--small-border-radius))}.elements .header:after{content:\"\"}.elements .header .selectallcontainer{display:flex;align-items:center;gap:5px;cursor:default}.elements .tableview tr.draggee th,.elements .tableview tr.draggee td,.elements .thumbsview li.draggee{opacity:.25}.elements .tableview th .move,.elements .tableview th .toggle{display:flex;position:absolute;justify-content:center;align-items:center;top:50%;transform:translateY(-50%);width:var(--touch-target-size);height:var(--touch-target-size)}body.ltr .elements .tableview th .move,body.ltr .elements .tableview th .toggle{margin-left:calc(var(--touch-target-size)*-1)}body.rtl .elements .tableview th .move,body.rtl .elements .tableview th .toggle{margin-right:calc(var(--touch-target-size)*-1)}.elements .tableview th .move{font-size:11px;text-decoration:none}.elements .tableview th .toggle{text-align:center;padding:4px;border-radius:50%}body.ltr .elements .tableview th .move+.toggle{margin-left:calc(var(--touch-target-size)*-2)}body.rtl .elements .tableview th .move+.toggle{margin-right:calc(var(--touch-target-size)*-2)}.elements .tableview th .enabled-label{margin-left:var(--xs)}.elements .tableview .chip{background-color:rgba(0,0,0,0)}.elements .thumbsview{display:grid;gap:var(--xs);grid-template-columns:repeat(auto-fill, minmax(180px, 1fr))}.elements .thumbsview li{position:relative;max-width:226px;border-radius:var(--large-border-radius)}body.ltr .elements .thumbsview li{margin:0 1px 1px 0}body.rtl .elements .thumbsview li{margin:0 0 1px 1px}.elements .thumbsview li:hover .chip{background-color:var(--gray-050)}.elements .thumbsview li.sel a{cursor:pointer !important}.elements .thumbsview li.sel a:hover{text-decoration:underline}.elements .thumbsview .chip.large{width:100%}.export-form{position:relative}.export-form .spinner{position:absolute;bottom:0}body.ltr .export-form .spinner{right:-24px}body.rtl .export-form .spinner{left:-24px}.structure{position:relative;z-index:1}body.ltr .structure li{padding-left:8px}body.rtl .structure li{padding-right:8px}.structure li.collapsed>ul{display:none}.structure li .row:hover>.icon,.structure li.draghelper>.row .move,.structure li .add.active{opacity:1}.structure li.draghelper>.row .add{opacity:0}.structure li.draghelper>.row .move:before{color:var(--link-color)}.structure li.draginsertion{position:relative;height:2px;background-color:var(--link-color) !important;border-radius:1px}body.ltr .structure li.draginsertion{margin:-1px 0 -1px 8px}body.rtl .structure li.draginsertion{margin:-1px 8px -1px 0}body.ltr .structure li.draginsertion{padding-left:0}body.rtl .structure li.draginsertion{padding-right:0}body.ltr .structure li.draginsertion{border-left:none}body.rtl .structure li.draginsertion{border-right:none}.structure li .toggle{position:relative;z-index:1;padding:4px}body.ltr .structure li .toggle{float:left}body.rtl .structure li .toggle{float:right}body.ltr .structure li .toggle{margin:10px -8px 0 -12px}body.rtl .structure li .toggle{margin:10px -12px 0 -8px}.structure li .row:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.structure li .move,.structure li .add{opacity:0;transition:opacity linear 100ms}body.ltr .structure li .move,body.ltr .structure li .add{margin:5px 5px 0 0}body.rtl .structure li .move,body.rtl .structure li .add{margin:5px 0 0 5px}.structure li .add{padding:0 5px}.structure li .add:before{content:\"downangle\";color:var(--dark-hairline-color)}.structure li .add:not(.disabled):hover:before,.structure li .add.active:before{color:var(--link-color)}body.ltr .structure li .checkbox{float:left}body.rtl .structure li .checkbox{float:right}body.ltr .structure li .checkbox{margin:7px 0 0 7px}body.rtl .structure li .checkbox{margin:7px 7px 0 0}body.ltr .structure ul{margin-left:-3px}body.rtl .structure ul{margin-right:-3px}.structure ul li{background-repeat:no-repeat;--background-position-x: 0;--background-position-y: -6px;background-position:var(--background-position-x) var(--background-position-y)}body.ltr .structure ul li{padding-left:38px}body.rtl .structure ul li{padding-right:38px}body.ltr .structure ul li{background-image:url(../images/branch.png)}body.rtl .structure ul li{--background-position-x: 100%;background-image:url(../images/branch_rtl.png)}body.ltr .structure ul li:not(:last-child):not(.last){padding-left:37px}body.rtl .structure ul li:not(:last-child):not(.last){padding-right:37px}body.ltr .structure ul li:not(:last-child):not(.last){border-left:1px solid var(--gray-200)}body.rtl .structure ul li:not(:last-child):not(.last){border-right:1px solid var(--gray-200)}body.ltr .structure ul li:not(:last-child):not(.last){--background-position-x: -1px}body.rtl .structure ul li:not(:last-child):not(.last){--background-position-x: calc(100% + 1px)}body.ltr .structure ul li.draginsertion{margin-left:38px}body.rtl .structure ul li.draginsertion{margin-right:38px}.structure .row.draghover .chip{z-index:2;border-radius:15px;box-shadow:inset 0 0 0 2px var(--link-color)}.structure .row.droptarget{border-radius:5px;box-shadow:inset 0 0 0 2px var(--link-color)}.elementselect .elements:not(:empty)+.flex,.componentselect .components:not(:empty)+.flex{margin-top:var(--s)}.elementselect{position:relative;min-height:34px}.elementselect .flex,.elementselect .btn{clear:both}.elementselect .structure .chip{margin-top:var(--xs)}body.ltr .elementselect .structure>li{padding-left:0}body.rtl .elementselect .structure>li{padding-right:0}body.ltr .elementselect .structure ul{margin-left:14px}body.rtl .elementselect .structure ul{margin-right:14px}.elementselect .structure ul li{--background-position-y: 0}.nested-element-cards{display:flex;flex-direction:column;gap:var(--s)}.nested-element-cards>.pane{margin:0}table.editable{border-radius:var(--large-border-radius);border:1px solid var(--gray-200)}table.editable th,table.editable td.heading,table.editable td.action{color:var(--medium-text-color);font-weight:normal;background-color:var(--gray-050)}table.editable thead tr th,table.editable tbody tr th{padding:6px 10px}table.editable thead tr th{border-bottom:1px solid var(--hairline-color)}body.ltr table.editable thead tr th.has-info{padding-right:calc(15px + 1em)}body.rtl table.editable thead tr th.has-info{padding-left:calc(15px + 1em)}table.editable thead tr th span.info{position:absolute;margin-left:5px}table.editable tbody tr:not(:first-child) th,table.editable tbody tr:not(:first-child) td{border-top:1px solid var(--hairline-color)}body.ltr table.editable tbody tr:last-child td:first-child{border-bottom-left-radius:var(--large-border-radius)}body.rtl table.editable tbody tr:last-child td:first-child{border-bottom-right-radius:var(--large-border-radius)}body.ltr table.editable tbody tr:last-child td:first-child textarea,body.ltr table.editable tbody tr:last-child td:first-child input.text{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}body.rtl table.editable tbody tr:last-child td:first-child textarea,body.rtl table.editable tbody tr:last-child td:first-child input.text{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}body.ltr table.editable tbody tr td:not(:first-child),body.ltr table.editable tbody tr th~td:not(.hidden)~td{border-left:1px solid var(--hairline-color)}body.rtl table.editable tbody tr td:not(:first-child),body.rtl table.editable tbody tr th~td:not(.hidden)~td{border-right:1px solid var(--hairline-color)}body.ltr table.editable tbody tr th~td:not(:first-child){border-left:1px solid #dbdddf}body.rtl table.editable tbody tr th~td:not(:first-child){border-right:1px solid #dbdddf}table.editable tbody tr td{vertical-align:top;text-align:center;background-color:var(--white);padding:4px 10px}table.editable tbody tr td.focus{position:relative;box-shadow:inset 0 0 0 1px var(--hairline-color)}table.editable tbody tr td.textual{padding:0}table.editable tbody tr td.textual .editable-table-preview{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual .editable-table-preview{text-align:left}body.rtl table.editable tbody tr td.textual .editable-table-preview{text-align:right}table.editable tbody tr td.textual .editable-table-preview+textarea{opacity:0;height:0;min-height:0;padding-top:0;padding-bottom:0}table.editable tbody tr td.textual textarea{resize:none}table.editable tbody tr td.textual pre{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual pre{text-align:left}body.rtl table.editable tbody tr td.textual pre{text-align:right}table.editable tbody tr td.lightswitch-cell{padding-top:9px;padding-bottom:9px}table.editable tbody tr td.lightswitch-cell .lightswitch{display:block;margin:0 auto}table.editable tbody tr td.checkbox-cell{padding-top:10px;padding-bottom:10px}table.editable tbody tr td.checkbox-cell .checkbox-wrapper{display:block;margin:-2px auto 0;width:16px;height:16px}table.editable tbody tr td.error{box-shadow:inset 0 0 0 1px var(--error-color)}table.editable tbody tr td.disabled{position:relative;opacity:1}table.editable tbody tr td.disabled:after{content:\"\";font-size:0;position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(243,247,252,.75);user-select:none}table.editable tbody tr td.action{padding:4px 7px}body.ltr table.editable tbody tr td.action+td.action{border-left:none}body.rtl table.editable tbody tr td.action+td.action{border-right:none}body.ltr table.editable tbody tr td.action+td.action{padding-left:0}body.rtl table.editable tbody tr td.action+td.action{padding-right:0}table.editable tbody tr td .flex>*{margin-bottom:0}table.editable tbody textarea,table.editable tbody textarea.text,table.editable tbody input.text,table.editable tbody pre,table.editable tbody .editable-table-preview{display:block;width:100%;border:none;box-shadow:none;border-radius:0;padding:7px 10px;line-height:20px;background-color:rgba(0,0,0,0);overflow:hidden;transition:none;box-sizing:border-box}table.editable tbody .color-container{display:block;position:relative}table.editable tbody .color-container>.color,table.editable tbody .color-container .color-input{margin-bottom:0}table.editable tbody .color-container>.color{position:absolute;top:10px;z-index:1}body.ltr table.editable tbody .color-container>.color{left:10px}body.rtl table.editable tbody .color-container>.color{right:10px}body.ltr table.editable tbody .color-container .color-hex-indicator{left:32px}body.rtl table.editable tbody .color-container .color-hex-indicator{right:32px}body.ltr table.editable tbody .color-container .color-input{padding-left:calc(32px + 1em)}body.rtl table.editable tbody .color-container .color-input{padding-right:calc(32px + 1em)}table.editable tbody .datewrapper,table.editable tbody .timewrapper{display:block;width:calc(100% - 29px)}table.editable tbody .datewrapper .text+div[data-icon],table.editable tbody .timewrapper .text+div[data-icon]{top:6px}body.ltr table.editable tbody .datewrapper .text+div[data-icon],body.ltr table.editable tbody .timewrapper .text+div[data-icon]{left:10px}body.rtl table.editable tbody .datewrapper .text+div[data-icon],body.rtl table.editable tbody .timewrapper .text+div[data-icon]{right:10px}table.editable:not(.static) td.textual{cursor:text}table.editable+.btn.add{display:block;width:100%}table.editable:not(.hidden)+.btn.add{border-top-width:0;border-radius:0 0 var(--medium-border-radius) var(--medium-border-radius)}.border-box+.buttons,.shadow-box+.buttons{margin-top:7px}body.ltr ul.tree,body.ltr .tree ul{margin-left:20px}body.rtl ul.tree,body.rtl .tree ul{margin-right:20px}body.ltr .tree li .toggle{margin:7px 0 0 -15px}body.rtl .tree li .toggle{margin:7px -15px 0 0}.status{flex:0 0 auto;display:inline-block;position:relative;width:.75rem;height:.75rem;border:1px solid rgba(0,0,0,0);border-radius:100%;box-sizing:border-box;background-clip:border-box}body.ltr .status{margin-right:10px}body.rtl .status{margin-left:10px}body.use-shapes .status.all{rotate:45deg;background-image:linear-gradient(30deg, #184cef, #e5422b)}body.use-shapes .status.pending{background-color:rgba(0,0,0,0);border-style:solid;border-width:0 5px 10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--pending-color) rgba(0,0,0,0);border-radius:1px}body.use-shapes .status.all,body.use-shapes .status.off,body.use-shapes .status.suspended,body.use-shapes .status.expired{border-radius:2px;transform:scale(90%)}.status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:var(--ui-control-color)}.status.all{background-image:linear-gradient(60deg, #184cef, #e5422b);background-origin:border-box}.status.on,.status.live,.status.active,.status.enabled{background-color:var(--enabled-color)}.status.red,.bg-red,.status.off,.status.suspended,.status.expired{background-color:var(--disabled-color)}.status.warning{background-color:var(--warning-color)}.status.orange,.bg-orange,.status.pending{background-color:var(--pending-color)}.status.amber,.bg-amber{background-color:var(--amber-500)}.status.yellow,.bg-yellow{background-color:var(--yellow-500)}.status.lime,.bg-lime{background-color:var(--lime-500)}.status.green,.bg-green{background-color:var(--green-600)}.status.emerald,.bg-emerald{background-color:var(--emerald-500)}.status.teal,.bg-teal,.status.turquoise,.bg-turquoise{background-color:var(--teal-500)}.status.cyan,.bg-cyan{background-color:var(--cyan-500)}.status.sky,.bg-sky{background-color:var(--sky-500)}.status.blue,.bg-blue{background-color:var(--blue-600)}.status.indigo,.bg-indigo{background-color:var(--indigo-500)}.status.violet,.bg-violet{background-color:var(--violet-500)}.status.purple,.bg-purple{background-color:var(--purple-500)}.status.fuchsia,.bg-fuchsia{background-color:var(--fuchsia-500)}.status.pink,.bg-pink{background-color:var(--pink-500)}.status.rose,.bg-rose{background-color:var(--rose-500)}.status.light{background-color:var(--gray-100)}.status.white,.bg-white{background-color:var(--white)}.status.black,.bg-black{background-color:var(--gray-800)}.status.gray,.bg-gray,.status.grey,.bg-grey{background-color:var(--gray-300)}.status.white,.status.disabled{opacity:1}.icon.warning,.cp-icon.warning,[data-icon].warning,[data-icon-after].warning{--icon-color: var(--warning-color)}.icon.red,.cp-icon.red,[data-icon].red,[data-icon-after].red{--icon-color: var(--disabled-color)}.icon.orange,.cp-icon.orange,[data-icon].orange,[data-icon-after].orange{--icon-color: var(--pending-color)}.icon.amber,.cp-icon.amber,[data-icon].amber,[data-icon-after].amber{--icon-color: var(--amber-500)}.icon.yellow,.cp-icon.yellow,[data-icon].yellow,[data-icon-after].yellow{--icon-color: var(--yellow-500)}.icon.lime,.cp-icon.lime,[data-icon].lime,[data-icon-after].lime{--icon-color: var(--lime-500)}.icon.green,.cp-icon.green,[data-icon].green,[data-icon-after].green{--icon-color: var(--green-500)}.icon.emerald,.cp-icon.emerald,[data-icon].emerald,[data-icon-after].emerald{--icon-color: var(--emerald-500)}.icon.teal,.cp-icon.teal,[data-icon].teal,[data-icon-after].teal{--icon-color: var(--teal-500)}.icon.cyan,.cp-icon.cyan,[data-icon].cyan,[data-icon-after].cyan{--icon-color: var(--cyan-500)}.icon.sky,.cp-icon.sky,[data-icon].sky,[data-icon-after].sky{--icon-color: var(--sky-500)}.icon.blue,.cp-icon.blue,[data-icon].blue,[data-icon-after].blue{--icon-color: var(--blue-600)}.icon.indigo,.cp-icon.indigo,[data-icon].indigo,[data-icon-after].indigo{--icon-color: var(--indigo-500)}.icon.violet,.cp-icon.violet,[data-icon].violet,[data-icon-after].violet{--icon-color: var(--violet-500)}.icon.purple,.cp-icon.purple,[data-icon].purple,[data-icon-after].purple{--icon-color: var(--purple-500)}.icon.fuchsia,.cp-icon.fuchsia,[data-icon].fuchsia,[data-icon-after].fuchsia{--icon-color: var(--fuchsia-500)}.icon.pink,.cp-icon.pink,[data-icon].pink,[data-icon-after].pink{--icon-color: var(--pink-500)}.icon.rose,.cp-icon.rose,[data-icon].rose,[data-icon-after].rose{--icon-color: var(--rose-500)}.icon.white,.cp-icon.white,[data-icon].white,[data-icon-after].white{--icon-color: var(--white)}.icon.black,.cp-icon.black,[data-icon].black,[data-icon-after].black{--icon-color: var(--gray-800)}.icon.gray,.cp-icon.gray,[data-icon].gray,[data-icon-after].gray{--icon-color: var(--gray-300)}.warning[data-icon]:before,.warning[data-icon-after]:after,.red[data-icon]:before,.red[data-icon-after]:after,.orange[data-icon]:before,.orange[data-icon-after]:after,.amber[data-icon]:before,.amber[data-icon-after]:after,.yellow[data-icon]:before,.yellow[data-icon-after]:after,.lime[data-icon]:before,.lime[data-icon-after]:after,.green[data-icon]:before,.green[data-icon-after]:after,.emerald[data-icon]:before,.emerald[data-icon-after]:after,.teal[data-icon]:before,.teal[data-icon-after]:after,.cyan[data-icon]:before,.cyan[data-icon-after]:after,.sky[data-icon]:before,.sky[data-icon-after]:after,.blue[data-icon]:before,.blue[data-icon-after]:after,.indigo[data-icon]:before,.indigo[data-icon-after]:after,.violet[data-icon]:before,.violet[data-icon-after]:after,.purple[data-icon]:before,.purple[data-icon-after]:after,.fuchsia[data-icon]:before,.fuchsia[data-icon-after]:after,.pink[data-icon]:before,.pink[data-icon-after]:after,.rose[data-icon]:before,.rose[data-icon-after]:after,.white[data-icon]:before,.white[data-icon-after]:after,.black[data-icon]:before,.black[data-icon-after]:after,.gray[data-icon]:before,.gray[data-icon-after]:after{color:var(--icon-color) !important}.condition-container{margin:24px 0}.condition-rule,.condition-footer{padding:7px}.condition-footer{border:1px dashed var(--medium-hairline-color);border-radius:var(--large-border-radius)}.condition:not(:empty)+.condition-footer{border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.condition-footer .spinner:not(.loading){display:none}.condition-rule{margin:0;border:1px solid var(--hairline-color);background-color:var(--gray-050)}.condition-rule:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.condition-rule+.condition-rule{border-top-width:0}.condition-rule>.rule-move,.condition-rule>.rule-actions{margin-top:5px}.condition-rule>.rule-body .lightswitch{margin-top:6px;display:block}.condition-rule>.rule-body .selectize{min-width:100px}.condition-rule>.rule-body .text.fullwidth{min-width:100px;max-width:100%}.progressbar{border-radius:6px;border:2px solid var(--gray-700);padding:2px;position:absolute;left:20%;width:60%;z-index:1000}.progressbar-inner{border-radius:2px;height:4px;background-color:var(--gray-700)}.progressbar:not(.pending) .progressbar-inner{width:0;transition:width linear 100ms}.progressbar.pending .progressbar-inner{animation-timing-function:linear;animation-duration:250ms;animation-iteration-count:infinite}body.ltr .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(135deg, var(--white), var(--white) 8.8388347649px, var(--gray-700) 8.8388347649px, var(--gray-700) 17.6776695297px)}body.rtl .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(45deg, var(--white), var(--white) 8.8388347649px, var(--gray-700) 8.8388347649px, var(--gray-700) 17.6776695297px)}body.ltr .progressbar.pending .progressbar-inner{animation-name:pendingprogress-ltr}body.rtl .progressbar.pending .progressbar-inner{animation-name:pendingprogress-rtl}@keyframes pendingprogress-ltr{from{background-position:0}to{background-position:25px}}@keyframes pendingprogress-rtl{from{background-position:0}to{background-position:-25px}}.elementselect .progress-shade{background-color:rgba(255,255,255,.8);width:100%;height:100%;position:absolute;top:0;display:none}body.ltr .elementselect .progress-shade{left:0}body.rtl .elementselect .progress-shade{right:0}.elementselect.uploading{position:relative}.elementselect.uploading .progress-shade{display:block;z-index:2}.missing-component{padding:7px 10px !important;max-width:400px;background-color:var(--gray-050) !important}.missing-component .error{margin:0}.missing-component .install-plugin{margin:7px 0 -7px;border-top:1px solid var(--hairline-color);position:relative}body.ltr .missing-component .install-plugin{padding:10px 0 10px 40px}body.rtl .missing-component .install-plugin{padding:10px 40px 10px 0}.missing-component .install-plugin .icon{width:32px;height:32px;position:absolute;top:calc(50% - 16px)}body.ltr .missing-component .install-plugin .icon{left:0}body.rtl .missing-component .install-plugin .icon{right:0}.missing-component .install-plugin .icon img,.missing-component .install-plugin .icon svg{width:100%;height:100%}.missing-component .install-plugin h3{flex:1;margin:8px 0 !important}.missing-component .install-plugin .btn{margin:0}.pane{--pane-padding: var(--xl);--border: 1px solid var(--hairline-color);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);position:relative;margin:14px 0;padding:var(--pane-padding);border-radius:var(--large-border-radius);word-wrap:break-word;box-sizing:border-box}.pane:focus{box-shadow:var(--focus-ring)}.pane .pane,#content .pane{background-color:var(--gray-050);border:1px solid var(--hairline-color);box-shadow:none}.pane.dashed{background-color:rgba(0,0,0,0) !important;box-shadow:none;border:1px dashed var(--medium-hairline-color) !important}.pane.hairline{background-color:rgba(0,0,0,0) !important;box-shadow:none;border:1px solid rgba(96, 125, 159, 0.25) !important}.pane.no-border{border:none !important}.pane.padding-xs{--pane-padding: var(--xs)}.pane.padding-s{--pane-padding: var(--s)}.pane.padding-m{--pane-padding: var(--m)}.pane.padding-l{--pane-padding: var(--l)}.pane.loading{min-height:200px}.pane.loading:after{display:block;content:\"\";font-size:0;position:absolute;top:0;left:-24px;width:calc(100% + 48px);height:100%}.pane-header{margin:calc(var(--xl)*-1) var(--neg-padding) var(--xl);padding:5px var(--xl) 6px;min-height:45px;box-sizing:border-box;box-shadow:inset 0 -1px 0 0 rgba(154,165,177,.25);border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;background-color:var(--gray-050)}.pane-header .header-btn{margin:2px 0;width:1.875rem;height:1.875rem;padding-left:0;padding-right:0}.pane-header .header-btn:not(:hover):not(:active):not(.active){background-color:rgba(0,0,0,0)}.pane-header .header-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}.pane-header .spinner{margin:0 !important}.pane-tabs{display:flex;flex-direction:row;align-items:center;margin:-5px calc(var(--padding)*-1) -6px}.pane-tabs:first-child{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;overflow:hidden}.pane-tabs [role=tablist]{flex:1;display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none}.pane-tabs [role=tablist]::-webkit-scrollbar{display:none}body.ltr .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to left, rgba(0, 0, 0, 0), rgb(0, 0, 0) 24px)}body.rtl .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 24px)}.pane-tabs [role=tablist] [role=tab]{--tab-label-color: var(--light-text-color)}.pane-tabs [role=tablist] [role=tab].error{--highlight-color: var(--error-color) !important;--tab-label-color: var(--error-color) !important}.pane-tabs [role=tablist] [role=tab],.pane-tabs [role=tablist] [role=tab] .tab-label{border-radius:2px 2px 0 0}.pane-tabs [role=tablist] [role=tab] .tab-label{display:flex;flex-direction:row;align-items:center;position:relative;padding:0 var(--padding);white-space:nowrap;height:45px}.pane-tabs [role=tablist] [role=tab]:hover{text-decoration:none}body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus,body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible{box-shadow:none}body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus .tab-label,body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible .tab-label{box-shadow:var(--inner-focus-ring)}.pane-tabs [role=tablist] [role=tab]:not(.sel){color:var(--custom-text-color, var(--tab-label-color))}.pane-tabs [role=tablist] [role=tab]:not(.sel):hover{backdrop-filter:brightness(95%)}.pane-tabs [role=tablist] [role=tab].sel{--highlight-color: var(--gray-500);--tab-label-color: var(--text-color);position:relative;z-index:1;cursor:default;box-shadow:inset 0 2px 0 var(--custom-text-color, var(--highlight-color)),0 0 0 1px rgba(51,64,77,.1),0 2px 12px var(--custom-sel-tab-shadow-color, var(--gray-200));color:var(--tab-label-color);background-color:var(--white) !important}body.ltr .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-left:4px}body.rtl .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-right:4px}body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-left-radius:var(--large-border-radius)}body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-right-radius:var(--large-border-radius)}.pane-tabs .menubtn{margin:0 var(--xl)}.pane-tabs .menubtn.error span[data-icon]{margin-right:2px}.details{--spacing: var(--l);padding:0 var(--padding) var(--spacing)}.details .meta,.details .field,.details hr{margin-left:var(--neg-padding);margin-right:var(--neg-padding)}.details .meta{margin-bottom:var(--spacing)}.details .meta:not(.read-only){background-color:var(--gray-050) !important}.details .meta.read-only{color:var(--medium-text-color)}.details .meta.read-only>.data{min-height:auto}.details .meta.read-only>.data>.heading,.details .meta.read-only>.data>.value{padding:6px 0}.details .meta.read-only>.data:first-child>.heading,.details .meta.read-only>.data:first-child>.value{padding-top:0}.details .meta.read-only>.data:last-child>.heading,.details .meta.read-only>.data:last-child>.value{padding-bottom:0}.details .meta.warning{padding-top:var(--m);padding-bottom:var(--m);color:var(--text-color) !important;background-color:var(--yellow-050) !important;box-shadow:0 0 0 1px var(--yellow-300),0 2px 12px rgba(205,216,228,.5)}.details .meta.warning p{margin-bottom:5px}.details .meta.warning .btn{background-color:var(--yellow-300)}.details .meta.warning .btn:hover,.details .meta.warning .btn:focus{background-color:#fcd815}.details .meta.warning .btn:active,.details .meta.warning .btn[aria-expanded=true]{background-color:#f5ce03}.details .meta>.field,.details .meta>.data{margin:0 var(--neg-padding) !important}.details .meta>.field>.heading>label,.details .meta>.field>.heading,.details .meta>.data>.heading>label,.details .meta>.data>.heading{color:var(--gray-600)}body.ltr .details .meta>.field>.status-badge{left:0}body.rtl .details .meta>.field>.status-badge{right:0}.details .meta .text::placeholder,.details .meta .datewrapper .text+div[data-icon],.details .meta .timewrapper .text+div[data-icon]{color:var(--gray-500)}body.ltr .details .meta .ui-datepicker{margin:0 0 0 -8px}body.rtl .details .meta .ui-datepicker{margin:0 -8px 0 0}.details hr{margin:var(--spacing) 0;border-top-color:var(--hairline-color)}.details input::-webkit-input-placeholder,.details textarea::-webkit-input-placeholder{color:var(--gray-500)}.details input:-ms-input-placeholder,.details textarea:-ms-input-placeholder{color:var(--gray-500)}.details input::-ms-input-placeholder,.details textarea::-ms-input-placeholder{color:var(--gray-500)}.details input:-moz-placeholder,.details textarea:-moz-placeholder{color:var(--gray-500)}.details input::-moz-placeholder,.details textarea::-moz-placeholder{color:var(--gray-500)}.details input::placeholder,.details textarea::placeholder{color:var(--gray-500)}.details .text{background-color:rgba(0,0,0,0) !important;resize:none}.details>.field>.heading>label,.details>fieldset>legend{margin-top:0;font-weight:normal;color:var(--gray-600)}.details>fieldset{margin:0 0 var(--spacing)}.details>fieldset>legend{margin-bottom:5px}.details>.field{margin:0 0 var(--spacing)}.details>.field>.heading{margin-top:0}.details>.field>.input>.text.fullwidth{margin:0 var(--neg-padding);padding-left:var(--padding);padding-right:var(--padding);border:none;background-color:var(--gray-050) !important;width:calc(100% + var(--padding) + var(--padding))}.details>.text{border-radius:var(--large-border-radius);margin-bottom:var(--spacing)}.details>.text:not(:focus){border-color:rgba(96,125,159,.4)}.meta{padding:0 var(--padding);overflow:visible}.meta>.field,.meta>.data,.meta>.flex-fields>.field,.meta>.flex-fields>.data{display:flex;min-height:44px;box-sizing:border-box;flex-wrap:wrap;justify-content:space-between;align-items:center;margin:0 var(--neg-padding) !important;padding:0 var(--padding);transition:padding-left linear 100ms,padding-right linear 100ms}body.ltr .meta>.field.nested,body.ltr .meta>.data.nested,body.ltr .meta>.flex-fields>.field.nested,body.ltr .meta>.flex-fields>.data.nested{padding-left:38px}body.rtl .meta>.field.nested,body.rtl .meta>.data.nested,body.rtl .meta>.flex-fields>.field.nested,body.rtl .meta>.flex-fields>.data.nested{padding-right:38px}.meta>.field.add,.meta>.data.add,.meta>.flex-fields>.field.add,.meta>.flex-fields>.data.add{background-color:#ebf2fa}.meta>.field.add:before,.meta>.data.add:before,.meta>.flex-fields>.field.add:before,.meta>.flex-fields>.data.add:before{position:absolute;width:31px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"plus\";color:var(--light-text-color)}body.ltr .meta>.field.add:before,body.ltr .meta>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before{left:0}body.rtl .meta>.field.add:before,body.rtl .meta>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before{right:0}body.ltr .meta>.field.add:before,body.ltr .meta>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before{text-align:right}body.rtl .meta>.field.add:before,body.rtl .meta>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before{text-align:left}.meta>.field.add .input,.meta>.data.add .input,.meta>.flex-fields>.field.add .input,.meta>.flex-fields>.data.add .input{width:100%}.meta>.field>.heading,.meta>.data>.heading,.meta>.flex-fields>.field>.heading,.meta>.flex-fields>.data>.heading{margin:0}@media screen and (min-width: 400px){.meta>.field>.heading,.meta>.data>.heading,.meta>.flex-fields>.field>.heading,.meta>.flex-fields>.data>.heading{flex:0 0 104px;line-height:18px}body.ltr .meta>.field>.heading,body.ltr .meta>.data>.heading,body.ltr .meta>.flex-fields>.field>.heading,body.ltr .meta>.flex-fields>.data>.heading{margin-right:var(--s)}body.rtl .meta>.field>.heading,body.rtl .meta>.data>.heading,body.rtl .meta>.flex-fields>.field>.heading,body.rtl .meta>.flex-fields>.data>.heading{margin-left:var(--s)}}.meta>.field.lightswitch-field>.heading,.meta>.data.lightswitch-field>.heading,.meta>.flex-fields>.field.lightswitch-field>.heading,.meta>.flex-fields>.data.lightswitch-field>.heading{flex:1}.meta>.field>.input .flex,.meta>.data>.input .flex,.meta>.flex-fields>.field>.input .flex,.meta>.flex-fields>.data>.input .flex{flex-wrap:nowrap}.meta>.field>.input .flex>*,.meta>.data>.input .flex>*,.meta>.flex-fields>.field>.input .flex>*,.meta>.flex-fields>.data>.input .flex>*{margin-bottom:0}.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding-top:var(--s)}@media screen and (min-width: 400px){.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding:12px 0}}.meta>.field>.heading>.copytextbtn,.meta>.flex-fields>.field>.heading>.copytextbtn{display:none}.meta>.data>.heading,.meta>.flex-fields>.data>.heading{padding:var(--s) 0}.meta>.field>.heading>label,.meta>.data>.heading,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.data>.heading{color:var(--medium-text-color)}.meta>.field>.input,.meta>.data>.value,.meta>.flex-fields>.field>.input,.meta>.flex-fields>.data>.value{padding:5px 0;width:100%}@media screen and (min-width: 400px){.meta>.field>.input,.meta>.data>.value,.meta>.flex-fields>.field>.input,.meta>.flex-fields>.data>.value{width:calc(100% - 112px)}}.meta>.data>.value,.meta>.flex-fields>.data>.value{display:flex;align-items:center}.meta>.data>.value>[data-icon=draft],.meta>.flex-fields>.data>.value>[data-icon=draft]{margin-top:-2px}body.ltr .meta>.data>.value>[data-icon=draft],body.ltr .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-right:8px}body.rtl .meta>.data>.value>[data-icon=draft],body.rtl .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-left:8px}.meta>.field.lightswitch-field>.input,.meta>.flex-fields>.field.lightswitch-field>.input{flex:0;width:auto}.meta>.field.has-errors,.meta>.flex-fields>.field.has-errors{border:1px solid var(--error-color) !important}.meta>.field.has-errors:first-child,.meta>.flex-fields>.field.has-errors:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.meta>.field.has-errors:last-child,.meta>.flex-fields>.field.has-errors:last-child{border-bottom-left-radius:var(--large-border-radius);border-bottom-right-radius:var(--large-border-radius)}.meta>.field.has-errors+.field,.meta>.flex-fields>.field.has-errors+.field{border-top:none !important}.meta>.field>.heading>label,.meta>.field>.heading>legend,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.field>.heading>legend{font-weight:normal}.meta>.field>.input>.text,.meta>.field>.input>.flex>.text,.meta>.field>.input>.flex>.textwrapper>.text,.meta>.field>.input>.datewrapper>.text,.meta>.field>.input>.timewrapper>.text,.meta>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.flex-fields>.field>.input>.text,.meta>.flex-fields>.field>.input>.flex>.text,.meta>.flex-fields>.field>.input>.flex>.textwrapper>.text,.meta>.flex-fields>.field>.input>.datewrapper>.text,.meta>.flex-fields>.field>.input>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper>.text{display:block;margin:-5px 0;padding:12px 0;border-radius:0;background-color:rgba(0,0,0,0);border:none !important}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon]{left:0}body.rtl .meta>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon]{right:0}.meta>.field>.input>.datetimewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper{gap:0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper{width:55%}.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{width:45%}body.ltr .meta>.field>.input>.datetimewrapper>.clear-btn,body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-right:-24px}body.rtl .meta>.field>.input>.datetimewrapper>.clear-btn,body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-left:-24px}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{display:block;width:100%}.meta>.field>ul.errors,.meta>.flex-fields>.field>ul.errors{margin:0;padding:0 0 6px;width:100%;list-style-type:none}body.ltr .meta>.field>.clear-btn,body.ltr .meta>.flex-fields>.field>.clear-btn{margin-right:var(--neg-padding)}body.rtl .meta>.field>.clear-btn,body.rtl .meta>.flex-fields>.field>.clear-btn{margin-left:var(--neg-padding)}.meta>.field:not(:first-child):not(.first-child),.meta>.flex-fields+.field:not(.first-child){border-top:1px solid var(--hairline-color)}.meta>.flex-fields h2,.meta>.flex-fields blockquote.note{margin:0 -24px !important;padding:14px 24px;background-color:#ebf2fa}.meta>.flex-fields blockquote.note{border-radius:0;border:none}.meta>.flex-fields hr{margin:0 -24px}.meta>.field>.input>.select{display:block;margin:calc(var(--s)*-1) 0;width:100%;border-radius:0;box-shadow:none;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.select:after{right:0}body.rtl .meta>.field>.input>.select:after{left:0}.meta>.field>.input>.select+.spinner{position:absolute;top:calc(50% - 17px)}body.ltr .meta>.field>.input>.select+.spinner{right:-24px}body.rtl .meta>.field>.input>.select+.spinner{left:-24px}.meta>.field>.input>.select select{width:100%;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.select select{padding:var(--s) 12px var(--s) 0}body.rtl .meta>.field>.input>.select select{padding:var(--s) 0 var(--s) 12px}.meta>.field>.input>.custom-select{display:block;margin:calc(var(--s)*-1) 0;width:100%;border-radius:0;box-shadow:none;background-color:rgba(0,0,0,0)}.meta>.field>.input>.custom-select .menubtn:not(.action-btn){justify-content:start;width:100%;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-left:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-right:0}.meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{position:absolute;top:calc(50% - 5px)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{right:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{left:0}.meta>.field>.input>.custom-select .label{max-width:100%;overflow:hidden;text-overflow:ellipsis}.body{position:relative}.slideout-container,.slideout,.modal,.hud{z-index:100;box-sizing:border-box}.modal,.hud{border-radius:5px;background-color:#fff;box-shadow:0 25px 100px rgba(31,41,51,.5) !important}.slideout-shade{opacity:0;transition:opacity linear 250ms}.slideout-shade.so-visible{opacity:1}.slideout-container{position:fixed;top:0;left:0;width:100vw;height:100vh;height:-webkit-fill-available;pointer-events:none}.slideout-container.so-lp{position:absolute;top:var(--m);left:var(--m);width:calc(100% - var(--m)*2);height:calc(100vh - var(--m)*2)}body.has-debug-toolbar .slideout-container{height:calc(100vh - 42px)}.slideout{position:absolute;background-color:var(--white);box-shadow:0 0 0 1px rgba(123,135,147,.25),0 25px 100px rgba(31,41,51,.5) !important;display:flex;flex-direction:column;overflow:hidden;padding:24px var(--padding);pointer-events:all;container-type:inline-size}.slideout.so-mobile,.slideout.so-lp{width:100% !important;height:100% !important;left:0;transition:top linear 250ms;will-change:top}.slideout.so-mobile{--padding: 14px;--neg-padding: -14px}body.ltr .slideout:not(.so-mobile){border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .slideout:not(.so-mobile){border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.slideout:not(.so-mobile):not(.so-lp){top:0;width:55%;height:100%}@media screen and (prefers-reduced-motion: no-preference){body.ltr .slideout:not(.so-mobile):not(.so-lp){transition:left linear 250ms;will-change:left}body.rtl .slideout:not(.so-mobile):not(.so-lp){transition:right linear 250ms;will-change:right}}.slideout>.pane-header{padding-left:var(--padding);padding-right:var(--padding);z-index:2}.slideout>.pane-header>.so-toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--xs);min-height:28px}.slideout>.pane-header>.so-toolbar>.pane-tabs{width:1px;flex:1}body.ltr .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-right:0}body.rtl .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-left:0}.slideout>.so-body{flex:1;margin:-24px var(--neg-padding);overflow:hidden auto;position:relative}.slideout>.so-body:not(:last-child){margin-bottom:0}.slideout>.so-body>h1:not(:last-child){padding-bottom:var(--s);border-bottom:1px solid var(--hairline-color)}.slideout>.so-body.so-full-details,.slideout>.so-body>.so-sidebar{background-color:var(--gray-100) !important}.slideout>.so-body:not(.so-full-details){padding:24px var(--padding)}.slideout>.so-body>.so-sidebar,.slideout>.so-body.so-full-details>.so-content>.details{box-sizing:border-box;padding:0 var(--padding) var(--spacing)}.slideout>.so-body>.so-sidebar>.preview-thumb-container,.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container{margin:0 var(--neg-padding);height:auto;min-height:54px}.slideout>.so-body>.so-sidebar>.preview-thumb-container+.pane-header,.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container+.pane-header{border-radius:0}.slideout>.so-body>.so-sidebar .image-actions.is-mobile,.slideout>.so-body.so-full-details>.so-content>.details .image-actions.is-mobile{margin:calc(var(--spacing)/2) 0 var(--spacing)}.slideout>.so-body>.so-sidebar>.meta.read-only:first-child,.slideout>.so-body.so-full-details>.so-content>.details>.meta.read-only:first-child{margin-top:var(--padding)}.slideout>.so-body>.so-sidebar>.meta.warning,.slideout>.so-body.so-full-details>.so-content>.details>.meta.warning{box-shadow:none;border-bottom:1px solid var(--yellow-300)}.slideout>.so-body>.so-sidebar>.field>.input>.text.fullwidth,.slideout>.so-body.so-full-details>.so-content>.details>.field>.input>.text.fullwidth{border-radius:0}.slideout>.so-body>.so-sidebar .notes,.slideout>.so-body.so-full-details>.so-content>.details .notes{padding-top:var(--m);padding-bottom:var(--m)}.slideout>.so-body>.so-sidebar{position:absolute;top:0;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);width:350px;height:100%;max-width:100%;overflow:hidden auto;z-index:1}.slideout>.so-body>.so-sidebar:focus{box-shadow:var(--focus-ring)}body.ltr .slideout>.so-body>.so-sidebar{transition:right linear 250ms}body.rtl .slideout>.so-body>.so-sidebar{transition:left linear 250ms}.slideout>.so-footer{position:relative;display:flex;gap:var(--s);justify-content:space-between;flex-wrap:wrap;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);background-color:var(--gray-050);z-index:3}.slideout>.so-footer:focus{box-shadow:var(--focus-ring)}.slideout>.so-footer>.so-extra{flex:0 0 100%;margin:0 var(--neg-padding);padding:0 var(--padding) 8px;border-bottom:1px solid var(--hairline-color)}@container (width > 700px){.slideout.showing-sidebar .so-body{display:flex;flex-direction:row;padding:0;overflow:hidden}.slideout.showing-sidebar .so-body>.so-content{position:relative;z-index:2;padding:24px;width:calc(100% - 350px);height:100%;box-sizing:border-box;overflow:hidden auto}body.ltr .slideout.showing-sidebar .so-body>.so-content{border-right:1px solid var(--gray-200)}body.rtl .slideout.showing-sidebar .so-body>.so-content{border-left:1px solid var(--gray-200)}.slideout.showing-sidebar .so-body>.so-sidebar{position:relative;display:block !important;top:auto;right:auto !important;left:auto !important;height:100%;box-shadow:none}.slideout>.so-footer>.so-extra{margin:0;padding:0;border:none;flex:auto 0 1}}.header,.hud-header,.footer,.hud-footer{position:relative;z-index:1;box-sizing:border-box}.header,.hud-header,.footer,.hud-footer{background-color:var(--gray-100)}.header,.hud-header{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;padding:24px;box-shadow:inset 0 -1px 0 var(--hairline-color)}.header h1,.hud-header h1{margin:0}.footer,.hud-footer{border-radius:0 0 var(--large-border-radius) var(--large-border-radius);padding:5px var(--pane-padding, var(--xl));box-shadow:inset 0 1px 0 var(--hairline-color)}.footer.flex>*,.hud-footer.flex>*{margin-bottom:0}.modal .body,.hud .main{padding:24px;overflow:hidden;box-sizing:border-box}.pane .header,.modal .body .header{margin:calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1) var(--pane-padding, 24px)}.pane .footer,.modal .body .footer{margin:var(--pane-padding, 24px) calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1)}.slideout-shade,.modal-shade,.hud-shade{z-index:100;position:fixed;top:0;left:0;width:100%;height:100%;display:none}.slideout-shade:not(.dark),.modal-shade:not(.dark){background-color:rgba(123,135,147,.35) !important}.slideout-shade.dark,.modal-shade.dark{background-color:rgba(31,41,51,.5) !important}.slideout-shade.blurred,.modal-shade.blurred{backdrop-filter:blur(10px)}.modal{position:fixed;overflow:hidden}.modal:not(.fitted):not(.fullscreen){width:66%;height:66%;min-width:600px;min-height:400px}.modal.fitted{width:auto;height:auto;min-width:0;min-height:0}.modal.fullscreen{width:100%;height:100%;border-radius:0}body.ltr .modal.alert .body{padding-left:76px}body.rtl .modal.alert .body{padding-right:76px}.modal.alert .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"alert\";font-size:40px;color:var(--light-text-color)}body.ltr .modal.alert .body:before{margin:-6px 0 0 -58px}body.rtl .modal.alert .body:before{margin:-6px -58px 0 0}body.ltr .modal.alert .body:before{float:left}body.rtl .modal.alert .body:before{float:right}body.ltr .modal.secure .body{padding-left:76px}body.rtl .modal.secure .body{padding-right:76px}.modal.secure .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"secure\";font-size:58px;color:var(--light-text-color)}body.ltr .modal.secure .body:before{margin:-14px 0 0 -56px}body.rtl .modal.secure .body:before{margin:-14px -56px 0 0}body.ltr .modal.secure .body:before{float:left}body.rtl .modal.secure .body:before{float:right}.modal .resizehandle{position:absolute;z-index:1;bottom:0;width:24px;height:24px;cursor:nwse-resize;padding:var(--xs)}body.ltr .modal .resizehandle{right:0}body.rtl .modal .resizehandle{left:0}.modal .resizehandle path{fill:var(--ui-control-color)}body.rtl .modal .resizehandle .ltr{display:none}body.ltr .modal .resizehandle .rtl{display:none}.hud{position:absolute;display:none;top:0}.hud.tooltip-hud{display:block}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray.png)}.hud .tip{position:absolute;z-index:101;background:no-repeat 0 0}.hud .tip-left{left:-15px;width:15px;height:30px;background-image:url(../images/hudtip_left.png)}.hud .tip-top{top:-15px;width:30px;height:15px;background-image:url(../images/hudtip_top.png)}.hud .tip-right{right:-15px;width:15px;height:30px;background-image:url(../images/hudtip_right.png)}.hud .tip-bottom{bottom:-15px;width:30px;height:15px;background-image:url(../images/hudtip_bottom.png)}.hud .hud-header,.hud .hud-footer{padding:var(--s) var(--xl)}.hud .body{overflow:hidden}.hud .body ::-webkit-scrollbar{appearance:none}.hud .body ::-webkit-scrollbar:vertical{width:11px}.hud .body ::-webkit-scrollbar:horizontal{height:11px}.hud .body ::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid rgba(0,0,0,0);background-color:rgba(0,0,0,.5)}.hud .body ::-webkit-scrollbar-track{background-color:var(--gray-050)}.preview-thumb-container{position:relative;display:flex;flex-direction:row;align-items:center;height:190px;background-color:var(--gray-900);margin:0 var(--neg-padding) var(--spacing)}.preview-thumb-container.checkered img{background-color:var(--white);background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:17px 17px;background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px}.preview-thumb-container.editable{cursor:pointer}.preview-thumb-container.loading:after{content:\"\";font-size:0;display:block;position:absolute;width:100%;height:100%;left:0;top:0;background-color:rgba(31,41,51,.8)}.preview-thumb-container.loading .spinner{color:var(--white);z-index:1}#details .preview-thumb-container{border-radius:var(--large-border-radius);overflow:hidden}.preview-thumb-container .preview-thumb{display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.preview-thumb-container .preview-thumb img{display:block;max-width:100%;max-height:190px}.image-actions.is-mobile{margin:calc(var(--spacing)/2*-1) var(--neg-padding) var(--spacing);display:grid;grid-template-columns:1fr 1fr}.button-fade .buttons{opacity:0;position:absolute;top:10px;margin:0;transition:opacity linear 100ms}body.ltr .button-fade .buttons{right:10px}body.rtl .button-fade .buttons{left:10px}.button-fade .buttons .btn{--ui-control-color: var(--white);--ui-control-hover-color: var(--white);--ui-control-active-color: var(--white);--interaction-background-color: var(--gray-700);background-color:var(--gray-600);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--light-color: var(--white);--dark-color: var(--gray-800);--focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color)}.button-fade .buttons .btn:hover{background-color:var(--interaction-background-color) !important}.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed).focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):hover{background-color:var(--interaction-background-color)}.button-fade:hover .buttons,.button-fade:focus-within .buttons{opacity:1}.elementselectormodal{--content-padding: 24px;padding-bottom:44px;user-select:none}.elementselectormodal>.header{padding-top:14px;padding-bottom:14px;text-align:center}.elementselectormodal>.header+.body{height:calc(100% - 48px) !important}.elementselectormodal .body{position:relative;height:100%}.elementselectormodal .body .spinner.big{position:absolute;top:50%;left:50%;margin:-24px 0 0 -24px}.elementselectormodal .body .content{height:calc(100% + 48px)}.elementselectormodal .body .content .sidebar{position:absolute;top:0;height:100%;overflow:auto;padding:var(--content-padding) 0}body.ltr .elementselectormodal .body .content .sidebar{margin-left:-249px}body.rtl .elementselectormodal .body .content .sidebar{margin-right:-249px}.elementselectormodal .body .content .main{margin:-24px;padding:var(--content-padding);height:100%;box-sizing:border-box;overflow:auto;position:relative}.elementselectormodal .body .content .main .elements.busy{min-height:calc(100% - 48px)}.elementselectormodal .body .content .main .elements.busy .update-spinner{z-index:101}.elementselectormodal .body .content .main .elements .header{margin:0 0 var(--m)}.elementselectormodal .body .content .main .elements .tableview table tr th,.elementselectormodal .body .content .main .elements .tableview table tr td{cursor:default}.elementselectormodal .body .content .main .elements .tableview table tr .checkbox:before{box-shadow:none !important}.elementselectormodal .body .content .main .elements .structure .row{margin-top:1px}.elementselectormodal .footer{position:absolute;bottom:0;left:0;width:100%;margin:0;box-sizing:border-box}body.ltr .elementselectormodal .footer .spinner{float:right}body.rtl .elementselectormodal .footer .spinner{float:left}body.ltr .elementselectormodal .footer .spinner{margin-right:-24px}body.rtl .elementselectormodal .footer .spinner{margin-left:-24px}.elementselectormodal .main-header,.customize-sources-modal .main-header{display:flex;align-items:center;margin-bottom:var(--s)}.elementselectormodal .main-heading,.customize-sources-modal .main-heading{margin-bottom:0}.elementselectormodal .nav-toggle,.customize-sources-modal .nav-toggle{height:var(--touch-target-size);width:var(--touch-target-size);color:var(--ui-control-color)}body.ltr .elementselectormodal .nav-toggle,body.ltr .customize-sources-modal .nav-toggle{margin-left:4px}body.rtl .elementselectormodal .nav-toggle,body.rtl .customize-sources-modal .nav-toggle{margin-right:4px}.elementselectormodal .nav-toggle:hover,.customize-sources-modal .nav-toggle:hover{color:var(--gray-500)}.elementselectormodal .sidebar-header,.customize-sources-modal .sidebar-header{display:flex;justify-content:flex-end;padding:0 var(--s);margin-bottom:var(--s)}.elementselectormodal .nav-close,.customize-sources-modal .nav-close{height:var(--touch-target-size);width:var(--touch-target-size)}.element-hud-form .buttons{position:relative}.element-hud-form .buttons .spinner{position:absolute;top:0}body.ltr .element-hud-form .buttons .spinner{right:-24px}body.rtl .element-hud-form .buttons .spinner{left:-24px}.activity-container{margin-inline:var(--s)}.activity-container ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.activity-container ul li .activity-btn{width:30px;height:30px;border-radius:50%;display:block}.activity-container ul li .activity-btn .elementthumb{position:relative;width:100%;height:100%;border-radius:50px;background:var(--gray-050);overflow:hidden;border:2px solid var(--white);box-shadow:0 1px 2px 1px rgba(31,41,51,.1)}.activity-container ul li .activity-btn .elementthumb img,.activity-container ul li .activity-btn .elementthumb svg{display:block;width:100%;height:100%}body.ltr .activity-container ul li:not(:last-child){margin-right:-10px}body.rtl .activity-container ul li:not(:last-child){margin-left:-10px}.element-index-view-menu{width:400px;max-width:calc(100% - 20px);padding:0 !important}.element-index-view-menu .meta{padding-top:var(--s);padding-bottom:var(--s)}.element-index-view-menu .table-columns-field{align-items:flex-start}.element-index-view-menu .table-columns-field .input{padding:13px 0}.element-index-view-menu .menu-footer{margin:0 !important;padding:var(--s) var(--xl) !important;background-color:var(--gray-050)}.element-index-view-menu-table-column{display:flex;align-items:flex-start;align-content:stretch;margin-bottom:4px}.element-index-view-menu-table-column .icon.move{position:relative;z-index:1}body.ltr .element-index-view-menu-table-column .icon.move{margin-right:10px}body.rtl .element-index-view-menu-table-column .icon.move{margin-left:10px}.sort-field .input .flex .btngroup .btn{width:42px}.sort-field .input .flex .flex-grow{max-width:calc(100% - 85px - var(--s))}@media screen and (max-width: 350px){.sort-field .input .flex{flex-direction:column}.sort-field .input .flex>*{width:100%}.sort-field .input .flex .flex-grow{max-width:none}}.element-filter-hud.loading .body{padding:44px;display:flex;align-items:center;justify-content:center}.element-filter-hud .body,.element-filter-hud .main{overflow:visible}.address-cards{display:grid;gap:var(--m) var(--m);grid-template-columns:repeat(1, minmax(0, 1fr));grid-auto-rows:minmax(0, 1fr)}.so-content .address-cards{grid-template-columns:repeat(1, minmax(0, 1fr)) !important}.address-cards__add-btn{padding:1rem;min-height:8rem;height:auto;width:100%}.address-card.error{border:1px solid #cf1124}.address-card.error:hover{border-color:#cf1124}@media(min-width: 1024px){.address-cards{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media(min-width: 1280px){.address-cards{grid-template-columns:repeat(3, minmax(0, 1fr))}.so-content .address-cards{grid-template-columns:repeat(2, minmax(0, 1fr)) !important}}@media(min-width: 1536px){.address-cards{grid-template-columns:repeat(4, minmax(0, 1fr))}}.address-card{border:1px solid #eee;border-radius:.375rem;padding:1rem;min-height:4rem}.address-card:hover{border-color:#ddd;background-color:#fafafa;cursor:pointer}.address-card .address-card-header{display:flex;flex-wrap:nowrap;justify-content:space-between}.address-card .address-card-header-actions{display:flex;justify-content:flex-end}.address-card .address-card-label{background:#e6f1fe;color:#2563eb;padding:.125rem .5rem;border-radius:.25rem;font-size:.75rem;text-transform:uppercase;font-weight:500;margin-bottom:.75rem}.ltr .address-card .address-card-label{margin-right:.5rem}.rtl .address-card .address-card-label{margin-left:.5rem}.logoutwarningmodalshade,.login-modal-shade,#logoutwarningmodal,.login-modal,#elevatedsessionmodal,.prompt{z-index:1001}#logoutwarningmodal,#elevatedsessionmodal,.prompt{width:500px}.prompt{height:auto;min-height:auto}.cpmodal>.cpmodal-body{padding:var(--padding)}.cpmodal>.cpmodal-footer{position:relative;display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:var(--s) var(--padding);background-color:var(--gray-050)}.cpmodal>.cpmodal-footer:focus{box-shadow:var(--focus-ring)}.deleteusermodal .content-summary{margin:-24px -24px 24px;padding:24px;background-color:var(--gray-050)}.deleteusermodal .options label{display:inline-block;line-height:30px}.deleteusermodal .elementselect{display:inline-block;vertical-align:middle}body.ltr .deleteusermodal .elementselect{margin-left:10px}body.rtl .deleteusermodal .elementselect{margin-right:10px}body.ltr .deleteusermodal .buttons .spinner{margin-right:-20px}body.rtl .deleteusermodal .buttons .spinner{margin-left:-20px}.deleteusermodal div.elements{list-style:none}.dropdownsettingsmodal{width:auto;height:auto;min-width:0;min-height:0;max-width:400px}.dropdownsettingsmodal .body{max-height:100%;overflow-y:auto}.previewmodal.zilch{padding:100px 0;display:flex;align-items:center;justify-content:center}.video-transcript{background-color:var(--gray-050);overflow-y:scroll;font-size:1rem;position:relative}body:not(.reduce-focus-visibility) .video-transcript:focus,body.reduce-focus-visibility .video-transcript:focus-visible{box-shadow:none;color:var(--white);background-color:var(--gray-800)}.video-transcript__inner{margin-left:auto;margin-right:auto;max-width:550px;padding:var(--xl)}.menu,.ui-datepicker,.ui-timepicker-list{z-index:100;border-radius:4px;padding:0 14px;overflow:auto;background:#fff;user-select:none;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25)}.ui-datepicker,.ui-timepicker-list{padding:0}.menu{display:none;position:absolute}.menu.padded{padding:var(--s) calc(var(--m) + var(--s))}.menu.padded hr{margin:var(--s) calc((var(--m) + var(--s))*-1)}.menu.padded ul li{margin:0 calc(var(--m)*-1);padding:0 var(--m)}.menu.padded ul li a{border-radius:var(--large-border-radius)}.menu.padded .extralight{margin-top:2px}.menu h6:first-child,.menu .h6:first-child{margin-top:14px !important}.menu ul.padded li a,.menu ul.padded li .menu-item,.menu ul.padded li .menu-option{padding-inline-start:calc(var(--m) + 1.125rem)}.menu ul.padded li a.sel:not([data-icon]):before,.menu ul.padded li .menu-item.sel:not([data-icon]):before,.menu ul.padded li .menu-option.sel:not([data-icon]):before{font-size:14px;width:14px;content:\"check\";color:currentColor;margin-top:3px !important}body.ltr .menu ul.padded li a.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before{float:left}body.rtl .menu ul.padded li a.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before{float:right}body.ltr .menu ul.padded li a.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before{margin:4px 0 0 calc(-1.125rem - 4px)}body.rtl .menu ul.padded li a.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before{margin:4px calc(-1.125rem - 4px) 0 0}.menu ul li a,.menu ul li .menu-item,.menu ul li .menu-option{margin:0 -14px;padding:10px 14px;white-space:nowrap;font-size:14px;-webkit-appearance:none}body.ltr .menu ul li a:not(:last-child),body.ltr .menu ul li .menu-item:not(:last-child),body.ltr .menu ul li .menu-option:not(:last-child){margin-right:0}body.rtl .menu ul li a:not(:last-child),body.rtl .menu ul li .menu-item:not(:last-child),body.rtl .menu ul li .menu-option:not(:last-child){margin-left:0}.menu ul li a:not(.flex):not(.hidden),.menu ul li .menu-item:not(.flex):not(.hidden),.menu ul li .menu-option:not(.flex):not(.hidden){display:block;width:calc(100% + 28px)}body.ltr .menu ul li a:not(.flex):not(.hidden),body.ltr .menu ul li .menu-item:not(.flex):not(.hidden),body.ltr .menu ul li .menu-option:not(.flex):not(.hidden){text-align:left}body.rtl .menu ul li a:not(.flex):not(.hidden),body.rtl .menu ul li .menu-item:not(.flex):not(.hidden),body.rtl .menu ul li .menu-option:not(.flex):not(.hidden){text-align:right}.menu ul li a.flex [data-icon],.menu ul li .menu-item.flex [data-icon],.menu ul li .menu-option.flex [data-icon]{margin-top:-2px}.menu ul li a.sel,.menu ul li .menu-item.sel,.menu ul li .menu-option.sel{cursor:default}.menu ul li a .shortcut,.menu ul li .menu-item .shortcut,.menu ul li .menu-option .shortcut{padding:0 4px;border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px rgba(81,95,108,.25),0 1px 3px -1px rgba(81,95,108,.5)}body.ltr .menu ul li a .shortcut,body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut{float:right}body.rtl .menu ul li a .shortcut,body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut{float:left}body.ltr .menu ul li a .shortcut,body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut{margin-left:14px}body.rtl .menu ul li a .shortcut,body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut{margin-right:14px}.menu>.flex{margin-top:10px;margin-bottom:10px;position:relative}body.ltr .menu>.flex.padded{margin-left:-14px}body.rtl .menu>.flex.padded{margin-right:-14px}body.ltr .menu>.flex.padded{padding-left:24px}body.rtl .menu>.flex.padded{padding-right:24px}.menu>.flex.padded.sel:before{position:absolute;top:36px;content:\"check\";font-size:14px;color:var(--light-text-color)}body.ltr .menu>.flex.padded.sel:before{left:7px}body.rtl .menu>.flex.padded.sel:before{right:7px}.menu hr{margin:5px -14px}.menu .go:after{color:inherit}.menu:not(.menu--disclosure) ul li a,.menu ul li .menu-item,.menu ul li .menu-option{color:#3f4d5a;text-decoration:none;cursor:default}.menu li>a[data-icon]:before,.menu li>a [data-icon]:before,.menu li>a span.icon:not([data-icon]),.menu li>button[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button span.icon:not([data-icon]){display:inline-block;width:.875rem;height:.875rem}body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]){margin-left:-1px}body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]){margin-right:-1px}body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]){margin-right:9px}body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]){margin-left:9px}.menu li>a[data-icon]:before,.menu li>a [data-icon]:before,.menu li>button[data-icon]:before,.menu li>button [data-icon]:before{position:relative;top:-2px;text-align:center;font-size:14px;color:currentColor}.menu li>a span.icon:not([data-icon]) svg,.menu li>button span.icon:not([data-icon]) svg{display:block;position:relative;top:1px;width:100%;height:100%}.menu li>a span.icon:not([data-icon]) svg rect,.menu li>a span.icon:not([data-icon]) svg circle,.menu li>a span.icon:not([data-icon]) svg ellipse,.menu li>a span.icon:not([data-icon]) svg line,.menu li>a span.icon:not([data-icon]) svg polyline,.menu li>a span.icon:not([data-icon]) svg polygon,.menu li>a span.icon:not([data-icon]) svg path,.menu li>a span.icon:not([data-icon]) svg text,.menu li>button span.icon:not([data-icon]) svg rect,.menu li>button span.icon:not([data-icon]) svg circle,.menu li>button span.icon:not([data-icon]) svg ellipse,.menu li>button span.icon:not([data-icon]) svg line,.menu li>button span.icon:not([data-icon]) svg polyline,.menu li>button span.icon:not([data-icon]) svg polygon,.menu li>button span.icon:not([data-icon]) svg path,.menu li>button span.icon:not([data-icon]) svg text{fill:var(--icon-color, var(--ui-control-color));stroke-width:0}.menu li>a.error[data-icon]:before,.menu li>a.error [data-icon]:before,.menu li>button.error[data-icon]:before,.menu li>button.error [data-icon]:before{color:var(--error-color)}.menu li>a.error span.icon:not([data-icon]) svg rect,.menu li>a.error span.icon:not([data-icon]) svg circle,.menu li>a.error span.icon:not([data-icon]) svg ellipse,.menu li>a.error span.icon:not([data-icon]) svg line,.menu li>a.error span.icon:not([data-icon]) svg polyline,.menu li>a.error span.icon:not([data-icon]) svg polygon,.menu li>a.error span.icon:not([data-icon]) svg path,.menu li>a.error span.icon:not([data-icon]) svg text,.menu li>button.error span.icon:not([data-icon]) svg rect,.menu li>button.error span.icon:not([data-icon]) svg circle,.menu li>button.error span.icon:not([data-icon]) svg ellipse,.menu li>button.error span.icon:not([data-icon]) svg line,.menu li>button.error span.icon:not([data-icon]) svg polyline,.menu li>button.error span.icon:not([data-icon]) svg polygon,.menu li>button.error span.icon:not([data-icon]) svg path,.menu li>button.error span.icon:not([data-icon]) svg text{fill:var(--error-color);stroke-width:0}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover{color:var(--white) !important;background-color:var(--dark-sel-color)}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg text{fill:var(--white);stroke-width:0}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:currentColor}body.ltr .menu hr.padded,body.ltr .menu .h6.padded,body.ltr .menu h6.padded{margin-left:20px}body.rtl .menu hr.padded,body.rtl .menu .h6.padded,body.rtl .menu h6.padded{margin-right:20px}.menu--disclosure ul li>a:not(.crumb-link):hover,.menu--disclosure ul li>.menu-item:hover,.menu--disclosure ul li>.menu-option:hover{color:#3f4d5a;background-color:#f3f7fc}body:not(.reduce-focus-visibility) .menu--disclosure ul li>a:not(.crumb-link):focus,body.reduce-focus-visibility .menu--disclosure ul li>a:not(.crumb-link):focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-item:focus,body.reduce-focus-visibility .menu--disclosure ul li>.menu-item:focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-option:focus,body.reduce-focus-visibility .menu--disclosure ul li>.menu-option:focus-visible{box-shadow:inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7)}.tagselect .elements li{display:inline}.tagselect .chip.small{clear:none}body.ltr .tagselect .chip.small{margin-right:7px}body.rtl .tagselect .chip.small{margin-left:7px}.tagselect .add{position:relative;z-index:1;display:inline-block;width:12em}body.ltr .tagselect .add{margin:7px 7px 0 0}body.rtl .tagselect .add{margin:7px 0 0 7px}body.ltr .tagselect .add .text{padding-right:30px}body.rtl .tagselect .add .text{padding-left:30px}.tagselect .add .spinner{position:absolute;top:0}body.ltr .tagselect .add .spinner{right:5px}body.rtl .tagselect .add .spinner{left:5px}body.ltr .tagmenu ul li a{padding-left:26px}body.rtl .tagmenu ul li a{padding-right:26px}body.ltr .tagmenu ul li a:before{float:left}body.rtl .tagmenu ul li a:before{float:right}body.ltr .tagmenu ul li a:before{margin:3px 0 0 -18px}body.rtl .tagmenu ul li a:before{margin:3px -18px 0 0}.selectize-control.single .selectize-input:not(.no-arrow)::after{display:none}.shadow-box{border-radius:var(--large-border-radius);border:1px solid var(--gray-200);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}table.shadow-box,table.editable{border-collapse:separate;border-spacing:0}table.shadow-box thead tr:first-child th:first-child,table.shadow-box thead tr:first-child th:first-child.disabled:after,table.shadow-box thead tr:first-child td:first-child,table.shadow-box thead tr:first-child td:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:first-child,table.shadow-box tbody:first-child tr:first-child th:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:first-child,table.shadow-box tbody:first-child tr:first-child td:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:first-child,table.shadow-box caption+tbody tr:first-child th:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:first-child,table.shadow-box caption+tbody tr:first-child td:first-child.disabled:after,table.editable thead tr:first-child th:first-child,table.editable thead tr:first-child th:first-child.disabled:after,table.editable thead tr:first-child td:first-child,table.editable thead tr:first-child td:first-child.disabled:after,table.editable tbody:first-child tr:first-child th:first-child,table.editable tbody:first-child tr:first-child th:first-child.disabled:after,table.editable tbody:first-child tr:first-child td:first-child,table.editable tbody:first-child tr:first-child td:first-child.disabled:after,table.editable caption+tbody tr:first-child th:first-child,table.editable caption+tbody tr:first-child th:first-child.disabled:after,table.editable caption+tbody tr:first-child td:first-child,table.editable caption+tbody tr:first-child td:first-child.disabled:after{border-top-left-radius:var(--medium-border-radius)}table.shadow-box thead tr:first-child th:last-child,table.shadow-box thead tr:first-child th:last-child.disabled:after,table.shadow-box thead tr:first-child td:last-child,table.shadow-box thead tr:first-child td:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:last-child,table.shadow-box tbody:first-child tr:first-child th:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:last-child,table.shadow-box tbody:first-child tr:first-child td:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:last-child,table.shadow-box caption+tbody tr:first-child th:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:last-child,table.shadow-box caption+tbody tr:first-child td:last-child.disabled:after,table.editable thead tr:first-child th:last-child,table.editable thead tr:first-child th:last-child.disabled:after,table.editable thead tr:first-child td:last-child,table.editable thead tr:first-child td:last-child.disabled:after,table.editable tbody:first-child tr:first-child th:last-child,table.editable tbody:first-child tr:first-child th:last-child.disabled:after,table.editable tbody:first-child tr:first-child td:last-child,table.editable tbody:first-child tr:first-child td:last-child.disabled:after,table.editable caption+tbody tr:first-child th:last-child,table.editable caption+tbody tr:first-child th:last-child.disabled:after,table.editable caption+tbody tr:first-child td:last-child,table.editable caption+tbody tr:first-child td:last-child.disabled:after{border-top-right-radius:var(--medium-border-radius)}table.shadow-box thead:last-child tr:last-child th:first-child,table.shadow-box thead:last-child tr:last-child th:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:first-child,table.shadow-box thead:last-child tr:last-child td:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:first-child,table.shadow-box tbody:last-child tr:last-child th:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:first-child,table.shadow-box tbody:last-child tr:last-child td:first-child.disabled:after,table.editable thead:last-child tr:last-child th:first-child,table.editable thead:last-child tr:last-child th:first-child.disabled:after,table.editable thead:last-child tr:last-child td:first-child,table.editable thead:last-child tr:last-child td:first-child.disabled:after,table.editable tbody:last-child tr:last-child th:first-child,table.editable tbody:last-child tr:last-child th:first-child.disabled:after,table.editable tbody:last-child tr:last-child td:first-child,table.editable tbody:last-child tr:last-child td:first-child.disabled:after{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}table.shadow-box thead:last-child tr:last-child th:last-child,table.shadow-box thead:last-child tr:last-child th:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:last-child,table.shadow-box thead:last-child tr:last-child td:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:last-child,table.shadow-box tbody:last-child tr:last-child th:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:last-child,table.shadow-box tbody:last-child tr:last-child td:last-child.disabled:after,table.editable thead:last-child tr:last-child th:last-child,table.editable thead:last-child tr:last-child th:last-child.disabled:after,table.editable thead:last-child tr:last-child td:last-child,table.editable thead:last-child tr:last-child td:last-child.disabled:after,table.editable tbody:last-child tr:last-child th:last-child,table.editable tbody:last-child tr:last-child th:last-child.disabled:after,table.editable tbody:last-child tr:last-child td:last-child,table.editable tbody:last-child tr:last-child td:last-child.disabled:after{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}.text,.passwordwrapper,.border-box,.selectize.multiselect .selectize-input,.multiselect>select{border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box}.text.focus,.passwordwrapper.focus,.border-box.focus,.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}body:not(.reduce-focus-visibility) .text:focus,body.reduce-focus-visibility .text:focus-visible,body:not(.reduce-focus-visibility) .passwordwrapper:focus,body.reduce-focus-visibility .passwordwrapper:focus-visible,body:not(.reduce-focus-visibility) .border-box:focus,body.reduce-focus-visibility .border-box:focus-visible,body:not(.reduce-focus-visibility) .selectize.multiselect .selectize-input:focus,body.reduce-focus-visibility .selectize.multiselect .selectize-input:focus-visible{box-shadow:var(--focus-ring)}input.text,textarea.text,.text>input,.text>textarea,table.editable textarea,.selectize.multiselect .selectize-input{font-size:14px;line-height:20px;color:var(--text-color);min-height:3px;box-sizing:border-box;appearance:none}.selectize.multiselect .selectize-input{line-height:18px}textarea.text.fullwidth{display:block}.multitext .multitextrow:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}body.ltr .multitext .multitextrow:first-child .text:first-child{border-top-left-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:first-child{border-top-right-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:first-child .text:last-child{border-top-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:last-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:first-child{border-bottom-left-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:first-child{border-bottom-right-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:last-child{border-bottom-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:last-child{border-bottom-left-radius:var(--medium-border-radius)}.multitext .multitextrow:not(:first-child) .text{margin-top:-1px}.multitext .multitextrow .text{border-radius:0;float:left;box-sizing:border-box}body.ltr .multitext .multitextrow .text:not(:first-child){margin-left:-1px}body.rtl .multitext .multitextrow .text:not(:first-child){margin-right:-1px}.multitext .multitextrow .text:first-child:nth-last-child(1){width:100%}.multitext .multitextrow .text:first-child:nth-last-child(2){width:50%}.multitext .multitextrow .text:first-child:nth-last-child(2)~.text{width:calc(50% + 1px)}.multitext .multitextrow .text.error{position:relative;z-index:1}.multitext .multitextrow .text:focus,.multitext .multitextrow .selectize.multiselect .selectize-input.focus{position:relative;z-index:2}.chars-left{position:relative;color:var(--light-text-color)}body.ltr .chars-left{float:right}body.rtl .chars-left{float:left}body.ltr .chars-left{margin:-1.6875rem 7px 0 0}body.rtl .chars-left{margin:-1.6875rem 0 0 7px}.input.ltr>.chars-left{float:right !important;margin-right:7px !important}.input.rtl>.chars-left{float:left !important;margin-left:7px !important}.chars-left.negative-chars-left{color:var(--error-color)}.field,fieldset{position:relative;margin:24px 0}.flex>.field,.flex>fieldset{margin-top:0;margin-bottom:0}.field{min-inline-size:initial}.field>.status-badge{position:absolute;top:0;width:2px;height:100%;border-radius:1px;content:\"\";cursor:help}body.ltr .field>.status-badge{left:0}body.rtl .field>.status-badge{right:0}.field>.status-badge.modified{background-color:var(--blue-600);box-shadow:0 0 5px rgba(36,99,235,.15)}.field>.status-badge.outdated{background-color:var(--pending-color);box-shadow:0 0 5px rgba(251,146,60,.15)}.field>.heading{display:flex;flex-wrap:wrap;align-items:center;position:relative;margin-top:-5px;margin-bottom:5px}.field>.heading>label,.field>.heading>legend{font-weight:bold}.field>.heading>label code,.field>.heading>legend code{font-size:1em !important}body.ltr .field>.heading>label .info,body.ltr .field>.heading>legend .info{margin-left:5px}body.rtl .field>.heading>label .info,body.rtl .field>.heading>legend .info{margin-right:5px}.field>.heading .t9n-indicator{position:relative;top:-0.0625rem;color:var(--light-text-color)}body.ltr .field>.heading .t9n-indicator{margin-left:7px}body.rtl .field>.heading .t9n-indicator{margin-right:7px}.field>.heading+.instructions{margin-top:-3px}.field>.heading>.instructions{width:100%}.field>.instructions{margin-bottom:5px}.field>.input{position:relative}.field>.input+.instructions{margin:5px 0 0}.field>.input input:disabled,.field>.input textarea:disabled{cursor:not-allowed}.field>.notice,.field>.warning{margin:5px 0 0}.field>.instructions,.field>.heading>.instructions,.checkboxfield .instructions{color:var(--custom-text-color, var(--medium-text-color))}.field>.instructions img,.field>.instructions video,.field>.instructions embed,.field>.instructions iframe,.field>.heading>.instructions img,.field>.heading>.instructions video,.field>.heading>.instructions embed,.field>.heading>.instructions iframe,.checkboxfield .instructions img,.checkboxfield .instructions video,.checkboxfield .instructions embed,.checkboxfield .instructions iframe{max-width:100% !important}.field>.instructions ul,.field>.instructions ol,.field>.heading>.instructions ul,.field>.heading>.instructions ol,.checkboxfield .instructions ul,.checkboxfield .instructions ol{margin:1em 0}body.ltr .field>.instructions ul,body.ltr .field>.instructions ol,body.ltr .field>.heading>.instructions ul,body.ltr .field>.heading>.instructions ol,body.ltr .checkboxfield .instructions ul,body.ltr .checkboxfield .instructions ol{padding-left:2em}body.rtl .field>.instructions ul,body.rtl .field>.instructions ol,body.rtl .field>.heading>.instructions ul,body.rtl .field>.heading>.instructions ol,body.rtl .checkboxfield .instructions ul,body.rtl .checkboxfield .instructions ol{padding-right:2em}.field>.instructions ul li,.field>.heading>.instructions ul li,.checkboxfield .instructions ul li{list-style-type:disc}.field>.instructions li+li,.field>.heading>.instructions li+li,.checkboxfield .instructions li+li{margin-top:.25em}.expand-status-btn{width:30px;height:17px;padding:0;line-height:16px;border-radius:var(--small-border-radius);color:var(--text-color)}body.ltr .expand-status-btn{margin-left:5px}body.rtl .expand-status-btn{margin-right:5px}.expand-status-btn:before{margin:0}.nested-fields{margin:-24px;padding:24px 24px 0}.nested-fields.hidden{display:block;height:0}.nested-fields>.field:last-child{padding-bottom:24px}input.checkbox{opacity:0;position:absolute;width:var(--checkbox-size);height:var(--checkbox-size)}input.checkbox+label,div.checkbox{display:inline-block;clear:none;position:relative;line-height:1rem;min-height:1rem;cursor:pointer}body.ltr input.checkbox+label,body.ltr div.checkbox{padding-left:calc(1rem + 5px)}body.rtl input.checkbox+label,body.rtl div.checkbox{padding-right:calc(1rem + 5px)}input.checkbox+label,input.checkbox+label:before,div.checkbox,div.checkbox:before{border-radius:var(--small-border-radius)}input.checkbox+label:before,div.checkbox:before{display:block;position:absolute;top:0;width:var(--checkbox-size) !important;height:var(--checkbox-size);box-sizing:border-box;content:\"\";font-size:0;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);background-clip:padding-box}body.ltr input.checkbox+label:before,body.ltr div.checkbox:before{left:0}body.rtl input.checkbox+label:before,body.rtl div.checkbox:before{right:0}body.ltr input.checkbox+label:empty,body.ltr div.checkbox:empty{padding-left:var(--checkbox-size)}body.rtl input.checkbox+label:empty,body.rtl div.checkbox:empty{padding-right:var(--checkbox-size)}input.checkbox+label:empty:after,div.checkbox:empty:after{content:\"\";font-size:0}input.checkbox+label .info,div.checkbox .info{height:16px}input.checkbox:disabled+label,.disabled div.checkbox{cursor:not-allowed}input.checkbox:checked+label:before,div.checkbox.checked:before,.sel div.checkbox:before,input.checkbox:indeterminate+label:before,div.checkbox.indeterminate:before,.elementselectormodal .body .content .main .elements .disabled .checkbox:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;line-height:var(--checkbox-size);color:var(--gray-900)}input.checkbox:checked:not(:indeterminate)+label:before,div.checkbox.checked:not(.indeterminate):before,.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,.sel.matrixblock>.actions div.checkbox:not(.indeterminate):before,.elementselectormodal .body .content .main .elements .disabled .checkbox:before{content:\"check\";font-size:14px}input.checkbox:indeterminate+label:before,div.checkbox.indeterminate:before{content:\"minus\";font-size:7px;text-align:center}body:not(.reduce-focus-visibility) input.checkbox:focus+label:before,body:not(.reduce-focus-visibility) :focus div.checkbox:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility input.checkbox:focus-visible+label:before,body.reduce-focus-visibility :focus-visible div.checkbox:before{box-shadow:var(--focus-ring)}.checkbox-icon{display:inline-flex;padding:3px;background-color:var(--enabled-color);color:var(--white);border-radius:var(--small-border-radius)}.checkbox-icon:before{--checkbox-size: 14px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"check\";line-height:var(--checkbox-size);font-size:var(--checkbox-size)}.checkbox-preview-label{display:none}body:not(.reduce-focus-visibility) .monaco-mouse-cursor-text:focus,body.reduce-focus-visibility .monaco-mouse-cursor-text:focus-visible{box-shadow:none !important}fieldset .checkboxfield{margin:5px 0}.checkboxfield .instructions,.checkboxfield .notice,.checkboxfield .warning{margin-top:2px}body.ltr .checkboxfield .instructions,body.ltr .checkboxfield .notice,body.ltr .checkboxfield .warning{padding-left:calc(1rem + 5px)}body.rtl .checkboxfield .instructions,body.rtl .checkboxfield .notice,body.rtl .checkboxfield .warning{padding-right:calc(1rem + 5px)}input.radio{opacity:0;position:absolute;width:var(--radio-size);height:var(--radio-size)}input.radio+label,div.radio{display:inline-block;clear:none;position:relative;line-height:1.7142857143;cursor:pointer}body.ltr input.radio+label,body.ltr div.radio{padding-left:calc(1rem + 5px)}body.rtl input.radio+label,body.rtl div.radio{padding-right:calc(1rem + 5px)}input.radio:disabled+label,.disabled div.radio{cursor:not-allowed}body.ltr input.radio+label:empty,body.ltr div.radio:empty{padding-left:var(--radio-size)}body.rtl input.radio+label:empty,body.rtl div.radio:empty{padding-right:var(--radio-size)}input.radio+label:before,input.radio+label:after,div.radio:before,div.radio:after{display:block;position:absolute;content:\"\";box-sizing:border-box;background-clip:padding-box;border-radius:100%}input.radio+label:before,div.radio:before{top:50%;left:0;transform:translateY(-50%);width:var(--radio-size);height:var(--radio-size);background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4)}input.radio+label:after,div.radio:after{top:50%;left:4px;transform:translateY(-50%);width:calc(var(--radio-size) - 8px);height:calc(var(--radio-size) - 8px)}input.radio:checked+label:after,div.radio.checked:after,.sel div.radio:after{background:var(--gray-900)}body:not(.reduce-focus-visibility) input.radio:focus+label:before,body:not(.reduce-focus-visibility) :focus div.radio:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility input.radio:focus-visible+label:before,body.reduce-focus-visibility :focus-visible div.radio:before{box-shadow:var(--focus-ring)}.multiselect>select{color:var(--text-color);font-size:14px;appearance:none}body:not(.reduce-focus-visibility) .multiselect>select:focus,body.reduce-focus-visibility .multiselect>select:focus-visible{box-shadow:var(--focus-ring)}.multiselect>select option{padding:1px 8px}.text,.selectize.multiselect .selectize-input{padding:6px 9px}.text{background-color:var(--white)}.text:not(.small){box-sizing:border-box;min-height:2.125rem}.text.small{padding:3px}.text.readable{padding:16px 18px;font-size:16px;line-height:22px}.text.readable+.chars-left{margin-top:-23px}body.ltr .text.clearable{padding-right:var(--touch-target-size)}body.rtl .text.clearable{padding-left:var(--touch-target-size)}.text input{margin:0;padding:0;border:none;background-color:rgba(0,0,0,0)}td.errors .text,.input.errors>.text,.input.errors>.border-box,.input.errors>.passwordwrapper,.input.errors>.autosuggest-container .text,.text.error{border:1px solid var(--error-color) !important}.texticon{position:relative;cursor:text;min-width:130px}.texticon.icon:before{position:absolute;top:calc(50% - .4375rem);color:var(--ui-control-color)}body.ltr .texticon.icon:before{left:9px}body.rtl .texticon.icon:before{right:9px}.texticon .texticon-icon{position:absolute;top:1.0625rem;transform:translateY(-50%);display:flex;justify-content:center;align-items:center}body.ltr .texticon .texticon-icon{left:9px}body.rtl .texticon .texticon-icon{right:9px}body.ltr .texticon .text{padding-left:1.625rem}body.rtl .texticon .text{padding-right:1.625rem}.texticon .clear-btn{position:absolute;top:calc((var(--touch-target-size) - 34px)/-2);width:var(--touch-target-size);height:var(--touch-target-size)}body.ltr .texticon .clear-btn{right:0}body.rtl .texticon .clear-btn{left:0}body.ltr .texticon.has-filter-btn .text{padding-right:26px}body.rtl .texticon.has-filter-btn .text{padding-left:26px}.texticon.has-filter-btn .filter-btn{position:absolute;top:1.0625rem;transform:translateY(-50%);padding:0 7px 4px;font-size:14px;line-height:22px;cursor:pointer;border-radius:13px}body.ltr .texticon.has-filter-btn .filter-btn{right:4px}body.rtl .texticon.has-filter-btn .filter-btn{left:4px}.texticon.has-filter-btn .filter-btn:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"filter\";color:var(--medium-text-color)}.texticon.has-filter-btn .filter-btn:hover{background-color:var(--gray-100)}.texticon.has-filter-btn .filter-btn:active,.texticon.has-filter-btn .filter-btn.active,.texticon.has-filter-btn .filter-btn[aria-expanded=true]{background-color:var(--gray-350)}.texticon.has-filter-btn .filter-btn:active:before,.texticon.has-filter-btn .filter-btn.active:before,.texticon.has-filter-btn .filter-btn[aria-expanded=true]:before{color:var(--white)}body.ltr .texticon.has-filter-btn .text.clearable{padding-right:calc(30px + var(--touch-target-size))}body.rtl .texticon.has-filter-btn .text.clearable{padding-left:calc(30px + var(--touch-target-size))}body.ltr .texticon.has-filter-btn .clear-btn{right:30px}body.rtl .texticon.has-filter-btn .clear-btn{left:30px}.texthint-container{position:relative;height:0}.texthint{position:absolute;top:-1px;width:100%;color:var(--light-text-color);cursor:text}.passwordwrapper{position:relative}.passwordwrapper .password{border:none;background:rgba(0,0,0,0);padding-right:4rem;box-shadow:none}.passwordwrapper .password-toggle{color:var(--link-color);position:absolute;top:0;bottom:0;cursor:pointer}body.ltr .passwordwrapper .password-toggle{right:9px}body.rtl .passwordwrapper .password-toggle{left:9px}.passwordwrapper .password-toggle:hover{text-decoration:underline}.datetimewrapper{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;gap:5px}.clear-btn{display:flex;justify-content:center;align-items:center;width:24px;cursor:pointer;color:var(--ui-control-color);border:none;padding:0;background:rgba(0,0,0,0)}.clear-btn:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"remove\"}.clear-btn:hover{color:var(--ui-control-hover-color)}.clear-btn:active{color:var(--ui-control-active-color)}.close-btn{position:relative}.close-btn:before,.close-btn:after{position:absolute;content:\"\";top:50%;left:50%;height:15px;width:2px;background-color:var(--ui-control-color)}.close-btn:before{transform:translate(-50%, -50%) rotate(-45deg)}.close-btn:after{transform:translate(-50%, -50%) rotate(45deg)}.close-btn:hover:before,.close-btn:hover:after{background-color:var(--ui-control-hover-color)}.close-btn:active:before,.close-btn:active:after{background-color:var(--ui-control-active-color)}.datewrapper,.timewrapper{display:inline-block;position:relative}.datewrapper .text,.timewrapper .text{position:relative;z-index:1;width:100%}.datewrapper .text+div[data-icon],.timewrapper .text+div[data-icon]{display:none}.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text.empty-value+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text.empty-value+div[data-icon]{display:block;position:absolute;top:calc(50% - 12px);z-index:0;color:var(--light-text-color)}body.ltr .datewrapper .text:placeholder-shown+div[data-icon],body.ltr .datewrapper .text.empty-value+div[data-icon],body.ltr .timewrapper .text:placeholder-shown+div[data-icon],body.ltr .timewrapper .text.empty-value+div[data-icon]{left:14px}body.rtl .datewrapper .text:placeholder-shown+div[data-icon],body.rtl .datewrapper .text.empty-value+div[data-icon],body.rtl .timewrapper .text:placeholder-shown+div[data-icon],body.rtl .timewrapper .text.empty-value+div[data-icon]{right:14px}.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon]:before,.datewrapper .text.empty-value+div[data-icon],.datewrapper .text.empty-value+div[data-icon]:before,.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]:before,.timewrapper .text.empty-value+div[data-icon],.timewrapper .text.empty-value+div[data-icon]:before{user-select:none;pointer-events:none;z-index:1}.datewrapper{width:8em}.timewrapper{width:7em}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:var(--gray-400)}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--gray-400)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--gray-400)}input:-moz-placeholder,textarea:-moz-placeholder{color:var(--gray-400)}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--gray-400)}input::placeholder,textarea::placeholder{color:var(--gray-400)}::-ms-reveal,::-ms-clear{display:none}tr.indexingSession td{height:34px;padding:1px 10px}tr.indexingSession td.progress div.progressContainer{width:100%;display:flex;justify-content:space-between;align-items:center}tr.indexingSession td.progress div.progressContainer .progressbar{width:70%;position:relative;left:0;height:12px;z-index:1}tr.indexingSession td.progress div.progressContainer div.progressInfo{width:20%}.select:not(.selectize),.select:not(.selectize) select{position:relative;border-radius:5px;white-space:nowrap}.select:not(.selectize){max-width:100%;position:relative}:not(.flex)>.select:not(.selectize){display:inline-block}.select:not(.selectize):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:absolute;z-index:1;top:calc(50% - 5px);user-select:none;pointer-events:none;color:var(--ui-control-color)}body.ltr .select:not(.selectize):after{right:9px}body.rtl .select:not(.selectize):after{left:9px}.select:not(.selectize) select{display:block;position:relative;max-width:100%;border:none;font-size:14px;line-height:20px;color:#3f4d5a;background-color:#dfe5ec;appearance:none;white-space:pre}body.ltr .select:not(.selectize) select{padding:7px 22px 7px 10px}body.rtl .select:not(.selectize) select{padding:7px 10px 7px 22px}.select:not(.selectize) select::-ms-expand{display:none}.select:not(.selectize).fullwidth select{min-width:100%}.select:not(.selectize) select:hover{outline-color:rgba(0,0,0,0);background-color:#cfd8e2;box-shadow:var(--focus-ring)}body:not(.reduce-focus-visibility) .select:not(.selectize) select:focus,body.reduce-focus-visibility .select:not(.selectize) select:focus-visible{outline-color:rgba(0,0,0,0);background-color:#cfd8e2;box-shadow:var(--focus-ring)}.select:not(.selectize).small:after{top:9px}.select:not(.selectize).small select{padding-top:4px !important;padding-bottom:4px !important;font-size:11px}.selectize-control .selectize-input.disabled,.custom-select.disabled{opacity:1;cursor:not-allowed !important;pointer-events:auto !important}.selectize-control .selectize-input.disabled *,.custom-select.disabled *{cursor:not-allowed !important;pointer-events:auto !important}.selectize .selectize-input{display:block;border-color:inherit;box-shadow:none;background-color:rgba(0,0,0,0)}.selectize .selectize-input .item{max-width:100%}.selectize .selectize-input .item span{overflow:hidden;text-overflow:ellipsis}.selectize.select .selectize-input:after{display:none}body .selectize-dropdown{border:none;z-index:101}.selectize.select{height:34px}.selectize.select input::-webkit-input-placeholder,.selectize.select textarea::-webkit-input-placeholder{color:var(--gray-700)}.selectize.select input:-ms-input-placeholder,.selectize.select textarea:-ms-input-placeholder{color:var(--gray-700)}.selectize.select input::-ms-input-placeholder,.selectize.select textarea::-ms-input-placeholder{color:var(--gray-700)}.selectize.select input:-moz-placeholder,.selectize.select textarea:-moz-placeholder{color:var(--gray-700)}.selectize.select input::-moz-placeholder,.selectize.select textarea::-moz-placeholder{color:var(--gray-700)}.selectize.select input::placeholder,.selectize.select textarea::placeholder{color:var(--gray-700)}.selectize.select:not(.fullwidth){width:25em;max-width:100%}.datetimewrapper .selectize.select:not(.fullwidth){max-width:calc(100% - 29px)}.selectize.select .selectize-control{max-width:100%;position:relative}:not(.flex)>.selectize.select .selectize-control{display:inline-block}.selectize.select .selectize-control:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:absolute;z-index:1;top:calc(50% - 5px);user-select:none;pointer-events:none;color:var(--ui-control-color)}body.ltr .selectize.select .selectize-control:after{right:9px}body.rtl .selectize.select .selectize-control:after{left:9px}.selectize.select .selectize-input{position:relative;border-radius:5px;white-space:nowrap}.selectize.select .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.select .selectize-input{display:block;position:relative;max-width:100%;border:none;font-size:14px;line-height:20px;color:#3f4d5a;background-color:#dfe5ec;appearance:none}body.ltr .selectize.select .selectize-input{padding:7px 22px 7px 10px}body.rtl .selectize.select .selectize-input{padding:7px 10px 7px 22px}.selectize.select .selectize-input::-ms-expand{display:none}.selectize.select .selectize-control,.selectize.select .selectize-input{width:100%}.selectize.multiselect .selectize-input{min-height:34px;padding-bottom:3px}.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input>.item{display:inline-block;border-radius:3px;padding:3px 7px;font-size:12px;line-height:14px;color:#3f4d5a;background-color:#e4edf6;display:inline-flex;flex-direction:row;padding:3px 7px !important}.selectize.multiselect .selectize-input>.item.active{background-color:#cdd8e4}.selectize.multiselect .selectize-input>.item>.remove{position:static;border-left:none;padding:0;font-size:0;color:var(--ui-control-color)}body.ltr .selectize.multiselect .selectize-input>.item>.remove{margin:-1px -3px 0 3px}body.rtl .selectize.multiselect .selectize-input>.item>.remove{margin:-1px 3px 0 -3px}.selectize.multiselect .selectize-input>.item>.remove:hover{color:var(--ui-control-hover-color);background-color:rgba(0,0,0,0)}.selectize.multiselect .selectize-input>.item>.remove:before{font-size:14px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"remove\"}body .selectize-dropdown{margin-top:1px}body .selectize-dropdown [data-selectable],body .selectize-dropdown .option,body .selectize-dropdown .optgroup-header{margin:0 -14px;padding:10px 14px;color:#3f4d5a;text-decoration:none;white-space:nowrap}body .selectize-dropdown .optgroup{padding-top:5px}body .selectize-dropdown .optgroup:not(:first-child){border-top:1px solid var(--hairline-color)}body .selectize-dropdown .optgroup .option{padding-left:24px}body .selectize-dropdown .optgroup-header{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase;margin:0;padding:4px 0}body .selectize-dropdown .active:not(.selected),body .selectize-dropdown .option:hover{background-color:var(--gray-100)}body .selectize-dropdown .selected{color:var(--white) !important;background-color:var(--dark-sel-color);cursor:default !important}body .selectize-dropdown .selected svg rect,body .selectize-dropdown .selected svg circle,body .selectize-dropdown .selected svg ellipse,body .selectize-dropdown .selected svg line,body .selectize-dropdown .selected svg polyline,body .selectize-dropdown .selected svg polygon,body .selectize-dropdown .selected svg path,body .selectize-dropdown .selected svg text{fill:var(--white);stroke-width:0}body .selectize-dropdown .selected .light{color:inherit !important}body .selectize-dropdown-content{z-index:100;border-radius:4px;padding:0 14px;overflow:auto;background:#fff;user-select:none;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);max-height:70vh}body .selectize-dropdown-content .option{min-height:18px}body .selectize-dropdown-content>div[data-value=new]:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"plus\";margin-right:5px}body .selectize-dropdown-content>div[data-value=new]:after{content:\"…\"}body.no-scroll .selectize-dropdown-content{max-height:200px}.ui-datepicker{position:fixed;top:-300px;-padding:10px;width:210px;height:242px;z-index:101 !important}body.ltr .ui-datepicker{margin-left:1px}body.rtl .ui-datepicker{margin-right:1px}.ui-datepicker-header{padding:8px 8px 4px}body.ltr .ui-datepicker-prev{float:left}body.rtl .ui-datepicker-prev{float:right}body.ltr .ui-datepicker-next{float:right}body.rtl .ui-datepicker-next{float:left}.ui-datepicker-prev span,.ui-datepicker-next span{display:none}.ui-datepicker-prev,.ui-datepicker-next{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.ui-datepicker-prev:hover:after,.ui-datepicker-next:hover:after{border-color:var(--link-color)}.ui-datepicker-prev:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .ui-datepicker-prev:after{transform:rotate(135deg)}body.rtl .ui-datepicker-prev:after{transform:rotate(-45deg)}.ui-datepicker-next:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .ui-datepicker-next:after{transform:rotate(-45deg)}body.rtl .ui-datepicker-next:after{transform:rotate(135deg)}.ui-datepicker-title{text-align:center}.ui-datepicker-calendar th,.ui-datepicker-calendar td{padding:2px !important}.ui-datepicker-calendar th span,.ui-datepicker-calendar td a{display:block;width:1.625rem;line-height:26px;text-align:center;color:var(--text-color)}.ui-datepicker-calendar th span{color:var(--medium-text-color);font-weight:normal}.ui-datepicker-calendar td a{border-radius:2px}.ui-datepicker-calendar td a:hover{background-color:var(--light-sel-color);text-decoration:none}.ui-datepicker-calendar td a.ui-state-active{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.ui-datepicker-calendar td.ui-datepicker-today a{border-radius:13px;box-shadow:inset 0 0 0 2px var(--light-sel-color)}.ui-timepicker-wrapper{z-index:101}.ui-timepicker-list{overflow-y:auto;width:calc(14px + 6em);height:210px;z-index:100}body.ltr .ui-timepicker-list{margin-left:1px}body.rtl .ui-timepicker-list{margin-right:1px}.ui-timepicker-list li{white-space:nowrap;cursor:pointer}body.ltr .ui-timepicker-list li{padding:2px 0 2px 14px}body.rtl .ui-timepicker-list li{padding:2px 14px 2px 0}.ui-timepicker-list li:hover{background-color:var(--light-sel-color)}.ui-timepicker-list li.ui-timepicker-selected{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.slide-picker{display:flex;height:1rem;white-space:nowrap}.slide-picker a{position:relative;border:1px solid var(--hairline-color);background-image:none;width:calc(.5rem - 1px);height:calc(1rem - 2px);margin-left:0;margin-top:1px;margin-bottom:1px;box-sizing:border-box;cursor:pointer}body.ltr .slide-picker a{border-left:none}body.rtl .slide-picker a{border-right:none}.slide-picker a:first-child{width:.5rem}body.ltr .slide-picker a:first-child{border-left:1px solid var(--gray-400) !important}body.rtl .slide-picker a:first-child{border-right:1px solid var(--gray-400) !important}.slide-picker a:before{content:\"\";position:absolute;top:calc(-0.25rem - 1px);left:-1px;width:calc(100% + 2px);height:var(--touch-target-size)}.slide-picker:not(:hover) a.active,.slide-picker:hover a.active-hover{border-top-color:var(--gray-400);border-bottom-color:var(--gray-400);height:1rem;margin-top:0;margin-bottom:0}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-left:1px solid var(--gray-400)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-right:1px solid var(--gray-400)}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-top-left-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-top-right-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-bottom-left-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-bottom-right-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-right:1px solid var(--gray-400)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-left:1px solid var(--gray-400)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-top-right-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-top-left-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-bottom-right-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-bottom-left-radius:var(--small-border-radius)}.slide-picker:focus a.active{background-color:var(--light-sel-color)}.icon-picker{display:flex;flex-direction:row;align-items:center;gap:var(--xs)}.icon-picker--icon{display:flex;align-items:center;justify-content:center;border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box;border-radius:var(--ui-control-border-radius);width:var(--ui-control-height);height:var(--ui-control-height);background:var(--gray-050)}.icon-picker--icon svg{width:1.25rem;height:1.25rem}.icon-picker--icon svg rect,.icon-picker--icon svg circle,.icon-picker--icon svg ellipse,.icon-picker--icon svg line,.icon-picker--icon svg polyline,.icon-picker--icon svg polygon,.icon-picker--icon svg path,.icon-picker--icon svg text{fill:var(--ui-control-color);stroke-width:0}.icon-picker-modal{--width: calc(var(--ui-control-height) * 10 + var(--s) * 9 + var(--xl) * 2);width:var(--width) !important;min-width:0 !important;max-width:calc(100% - 20px) !important}.icon-picker-modal .body{height:100%;display:flex;flex-direction:column;gap:var(--l)}.icon-picker-modal .body .icon-picker-modal--list{flex:1;position:relative;overflow:hidden}.icon-picker-modal .body .icon-picker-modal--list:not(.loading) .spinner{display:none}.icon-picker-modal .body .icon-picker-modal--list.loading:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";background-color:rgba(255,255,255,.75)}.icon-picker-modal .body .icon-picker-modal--list.loading .spinner{top:calc(50% - 10px);z-index:1}.icon-picker-modal .body .icon-picker-modal--list ul{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:start;gap:var(--s);max-height:100%;overflow:auto}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon{--focus-ring: var(--inner-focus-ring)}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon:hover{border-color:var(--link-color);background-color:var(--blue-100)}ul.errors{margin-top:5px;list-style-type:square}body.ltr ul.errors{padding-left:20px}body.rtl ul.errors{padding-right:20px}ul.errors li{color:var(--error-color)}.message-container{position:absolute;z-index:100;top:0;width:100%;height:100%}body.ltr .message-container{left:0}body.rtl .message-container{right:0}.message-container.no-access{background-color:rgba(31,41,51,.5)}.message-container .pane{top:50%;margin-top:-33px !important;margin-left:auto;margin-right:auto;width:320px;box-shadow:0 25px 100px rgba(31,41,51,.5)}body.setup-2fa{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}body.setup-2fa #setup-2fa{display:flex;flex-direction:column;gap:var(--l);width:550px;max-width:100%;padding:var(--padding)}body.setup-2fa #setup-2fa #setup-2fa-intro{text-align:center}body.setup-2fa #setup-2fa #setup-2fa-btn{display:flex;justify-content:center}body.licensing-issues{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:var(--padding)}body.licensing-issues #licensing-issues{display:flex;flex-direction:row;max-width:50em}body.licensing-issues #licensing-issues .buttons{justify-content:space-between}body.licensing-issues #licensing-issues .buttons [data-icon]{margin-left:0;margin-right:0}body.licensing-issues #continue{margin:0}.autosuggest-container{position:relative}.autosuggest__results-container{position:absolute;z-index:2;width:100%;border-radius:var(--large-border-radius);background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2);box-sizing:border-box;padding:0 14px;text-align:left;font-family:system-ui,BlinkMacSystemFont,-apple-system,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif;font-size:1em !important}.autosuggest__results-container .autosuggest__results-before{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase;margin-top:14px !important}.autosuggest__results-container .autosuggest__results-item{margin:0 -14px;padding:10px 14px;color:#3f4d5a;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autosuggest__results-container .autosuggest__results-item:hover,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted{color:var(--white) !important;background-color:var(--dark-sel-color);cursor:pointer}.autosuggest__results-container .autosuggest__results-item:hover svg rect,.autosuggest__results-container .autosuggest__results-item:hover svg circle,.autosuggest__results-container .autosuggest__results-item:hover svg ellipse,.autosuggest__results-container .autosuggest__results-item:hover svg line,.autosuggest__results-container .autosuggest__results-item:hover svg polyline,.autosuggest__results-container .autosuggest__results-item:hover svg polygon,.autosuggest__results-container .autosuggest__results-item:hover svg path,.autosuggest__results-container .autosuggest__results-item:hover svg text,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg rect,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg circle,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg ellipse,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg line,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polyline,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polygon,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg path,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg text{fill:var(--white);stroke-width:0}.matrix>.buttons{margin-top:10px}.matrixblock{position:relative;margin-bottom:10px;padding:0 var(--m) var(--m);border-radius:var(--large-border-radius);border:2px solid var(--gray-100);background-color:var(--white)}.matrixblock.static .titlebar{margin-bottom:14px}body.ltr .matrixblock.static .titlebar{padding-right:0}body.rtl .matrixblock.static .titlebar{padding-left:0}body.ltr .matrixblock.static .titlebar{padding-left:14px}body.rtl .matrixblock.static .titlebar{padding-right:14px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn),.matrixblock>.actions .action-btn{padding:0;width:var(--touch-target-size);height:var(--touch-target-size);color:var(--custom-text-color, var(--ui-control-color));background-color:rgba(0,0,0,0)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):hover,.matrixblock>.actions .action-btn:hover{backdrop-filter:brightness(90%)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):active,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn)[aria-expanded=true],.matrixblock>.actions .action-btn:active,.matrixblock>.actions .action-btn[aria-expanded=true]{backdrop-filter:brightness(85%)}.matrixblock .flex-fields{--row-gap: var(--m) !important}.matrixblock .hidden+.field{margin-top:0}.matrixblock>.titlebar{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--m);margin:0 calc(var(--m)*-1);box-sizing:border-box;border-radius:calc(var(--large-border-radius) - 2px) calc(var(--large-border-radius) - 2px) 0 0;color:var(--custom-text-color, var(--light-text-color));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;cursor:default;user-select:none;position:relative;background-color:var(--gray-050);min-height:calc(var(--lh) + 10px)}body.ltr .matrixblock>.titlebar{padding:5px calc(var(--m) + 70px) 5px var(--m)}body.rtl .matrixblock>.titlebar{padding:5px var(--m) 5px calc(var(--m) + 70px)}.matrixblock>.titlebar>.preview{flex-grow:1;min-width:0;opacity:0;transition:opacity linear 100ms;overflow:hidden}.matrixblock>.titlebar>.preview:empty{display:none}body.ltr .matrixblock>.titlebar>.preview{mask-image:linear-gradient(to left, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px)}body.rtl .matrixblock>.titlebar>.preview{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px)}.matrixblock>.titlebar>.preview span{opacity:.5}.matrixblock>.titlebar>.matrixblock-tabs{flex:1;min-width:0;margin:-5px 0}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{margin:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-right:3px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-left:3px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist]{padding:0 12px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px, rgb(0, 0, 0) calc(100% - 12px), rgba(0, 0, 0, 0) 100%)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab]{background-color:rgba(0,0,0,0)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab] .tab-label{height:calc(var(--lh) + 10px);padding:0 var(--m)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){margin-left:0;margin-right:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty)::after{margin-left:0px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty)::after{margin-right:0px}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-left:calc((var(--m) + 12px)*-1)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-right:calc((var(--m) + 12px)*-1)}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-left-radius:calc(var(--large-border-radius) - 2px)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-right-radius:calc(var(--large-border-radius) - 2px)}body.ltr .matrixblock.disabled-entry>.titlebar{padding-right:100px}body.rtl .matrixblock.disabled-entry>.titlebar{padding-left:100px}.matrixblock.disabled-entry>.actions>.status.off{display:block}.matrixblock.collapsed>.titlebar{border-radius:calc(var(--large-border-radius) - 2px)}.matrixblock.collapsed>.titlebar>.preview{opacity:1}.matrixblock>.actions{display:flex;align-items:center;gap:var(--xs);position:absolute;top:0;cursor:default;min-height:calc(var(--lh) + 10px)}body.ltr .matrixblock>.actions{right:var(--m)}body.rtl .matrixblock>.actions{left:var(--m)}.matrixblock>.actions>*{margin:0 !important}.matrixblock>.actions>.status.off{display:none}.matrixblock>.actions a:not([data-action]){padding:0;height:var(--touch-target-size);text-align:center;color:var(--dark-hairline-color);transform:color linear 100ms}.matrixblock>.actions a:not([data-action]):hover{color:var(--link-color)}.matrixblock>.actions a:not([data-action]):hover.settings:after{border-color:var(--link-color)}.matrixblock:not(.static)>.fields{padding-top:var(--l)}.matrixblock>.fields>.flex-fields>.field:before{display:none}body.ltr .matrixblock>.fields>.flex-fields>.field>.status-badge{left:-2px}body.rtl .matrixblock>.fields>.flex-fields>.field>.status-badge{right:-2px}.matrixblock>.buttons{margin-top:0;height:30px}.add-category-form{margin-top:24px}.add-category-form .texticon{width:200px}body.ltr .add-category-form .texticon{float:left}body.rtl .add-category-form .texticon{float:right}body.ltr .add-category-form .texticon{margin-right:5px}body.rtl .add-category-form .texticon{margin-left:5px}body.ltr .add-category-form .texticon .text{padding-right:30px}body.rtl .add-category-form .texticon .text{padding-left:30px}.add-category-form .texticon .spinner{position:absolute;top:0}body.ltr .add-category-form .texticon .spinner{right:5px}body.rtl .add-category-form .texticon .spinner{left:5px}body.sitepicker #main-content{padding:30px;justify-content:center;align-items:center;text-align:center}body.sitepicker #content-container{max-width:400px}.sitepicker-group li:not(:first-child) a{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.sitepicker-group li:not(:first-child) a:not(:hover){border-top-color:rgba(0,0,0,0)}.sitepicker-group li:not(:last-child) a{border-bottom-left-radius:0;border-bottom-right-radius:0}.sitepicker-group li a{display:block;position:relative;text-align:left;width:100%;box-sizing:border-box;border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);font-size:16px;line-height:1.4}body.ltr .sitepicker-group li a{padding:9px 42px 9px 15px}body.rtl .sitepicker-group li a{padding:9px 15px 9px 42px}.sitepicker-group li a:after{font-size:14px;position:absolute;top:calc(50% - 7px);margin:0;padding:0}body.ltr .sitepicker-group li a:after{right:12px}body.rtl .sitepicker-group li a:after{left:12px}.sitepicker-group li a:hover{border-color:var(--link-color);text-decoration:none;z-index:1}.elementselectormodal .body .main{float:left \\9 ;width:445px \\9 }@media only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (-moz-min-device-pixel-ratio: 1.5),only screen and (-o-min-device-pixel-ratio: 3/2),only screen and (min-device-pixel-ratio: 1.5),only screen and (min-resolution: 1.5dppx){.structure ul li{background-size:40px}body.ltr .structure ul li{background-image:url(../images/branch_2x.png)}body.rtl .structure ul li{background-image:url(../images/branch_rtl_2x.png)}.hud .tip-left{background-image:url(../images/hudtip_left_2x.png);background-size:15px 30px}.hud .tip-top{background-image:url(../images/hudtip_top_2x.png);background-size:30px 15px}.hud .tip-right{background-image:url(../images/hudtip_right_2x.png);background-size:15px 30px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom_2x.png);background-size:30px 15px}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray_2x.png)}}:root{--xs: 4px;--s: 8px;--m: 14px;--l: 18px;--xl: 24px;--padding: var(--xl);--neg-padding: calc(var(--padding) * -1);--sidebar-width: 14.125rem;--global-sidebar-width: 14.125rem;--header-height: calc(44rem / 16);--details-width: 350px}html{-webkit-text-size-adjust:100%;min-height:100vh}body{min-height:100vh}body.dragging *{cursor:move !important;cursor:grabbing !important}body :focus{outline-style:solid;outline-color:rgba(0,0,0,0);box-shadow:var(--focus-ring)}.reduce-focus-visibility :focus:not(:focus-visible){box-shadow:none}.reduce-focus-visibility :focus-visible{box-shadow:var(--focus-ring)}.skip-link{position:absolute;margin:5px;left:-10000px;top:0;width:1px;height:1px;overflow:hidden;z-index:101}.skip-link:focus{left:unset;width:auto;height:auto;background-color:var(--gray-100) !important}body.ltr .skip-link:focus{left:0}body.rtl .skip-link:focus{right:0}@media only screen and (min-width: 75rem){#global-skip-link{--light-color: var(--white);--dark-color: var(--gray-800);--focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color)}}#global-container{position:relative;display:flex;min-height:100vh}@media screen and (prefers-reduced-motion: no-preference){body.ltr #global-container{transition:left 100ms cubic-bezier(0.33, 1, 0.68, 1)}body.rtl #global-container{transition:right 100ms cubic-bezier(0.33, 1, 0.68, 1)}}#global-header{display:grid;grid-template-columns:1fr min-content min-content;align-items:center}#system-info{display:grid;grid-template-columns:var(--prefix-width) auto;gap:10px;height:2.8125rem;padding:0 var(--gutter-width);position:relative;flex:0 0 2.8125rem;flex-direction:row;align-items:center;color:currentColor;border-bottom:1px solid var(--hairline-color);background-clip:padding-box}#system-info:after{display:none}#system-info:focus,#system-info:hover{text-decoration:none;background-color:var(--gray-200)}#site-icon{--size: var(--prefix-width);height:var(--size)}#site-icon img,#site-icon svg{display:block;width:var(--size);height:var(--size);border-radius:4px}#site-icon svg rect,#site-icon svg circle,#site-icon svg ellipse,#site-icon svg line,#site-icon svg polyline,#site-icon svg polygon,#site-icon svg path,#site-icon svg text{fill:var(--medium-text-color);stroke-width:0}#system-name h2,#system-name .h2{margin:0;width:100%;overflow:hidden;max-height:40px;position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media only screen and (min-width: 75rem){[data-sidebar=collapsed] #system-info:hover #system-name{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] #system-name{position:absolute;left:calc(100% + var(--s)*2);top:50%;transform:translateY(-50%) translateX(-5px);opacity:0;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);color:var(--text-color);border-radius:var(--medium-border-radius);padding:var(--xs) var(--s);white-space:nowrap;pointer-events:none}[data-sidebar=collapsed] #system-name:focus{box-shadow:var(--focus-ring)}}@media only screen and (min-width: 75rem)and (prefers-reduced-motion: no-preference){[data-sidebar=collapsed] #system-name{transition:opacity 50ms cubic-bezier(0.33, 1, 0.68, 1),transform 150ms cubic-bezier(0.33, 1, 0.68, 1)}}#global-footer{display:flex;flex-direction:column;align-items:center;padding:var(--m) var(--m) var(--xl);gap:var(--m)}body.has-debug-toolbar #global-footer{padding-bottom:calc(var(--xl) + 42px)}#global-footer a{white-space:nowrap}#app-info{display:flex;flex-direction:row;justify-content:center;gap:var(--m)}#trial-info{padding:16px var(--xl);border-radius:var(--large-border-radius);background-color:var(--gray-150);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 0 0 1px #bdcbdb,0 2px 12px rgba(205,216,228,.5);text-align:center}#app-version{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--gray-600);text-align:center;gap:var(--s)}#app-version a{color:var(--gray-600);text-decoration:underline}#app-version a.go:hover:after{color:var(--gray-600)}#edition-logo{position:relative;top:-1px;user-select:none;border:1px solid var(--gray-600);border-radius:3px;display:inline-flex;box-sizing:content-box;font-size:11px;padding:6px 7px;line-height:8px;font-weight:600;letter-spacing:1.7px;padding-right:5px;text-transform:uppercase}#devmode{margin-top:auto;flex:0 0 4px;width:100%;min-height:4px;background:url(../images/dev-mode.svg) repeat-x 21px 0,var(--gray-900);cursor:help}#page-container{display:flex;flex-direction:column;flex-grow:1}#alerts{position:relative;background-color:var(--red-050);border-left:6px solid var(--error-color);color:var(--error-color)}#alerts>li{padding:10px 24px;box-shadow:inset 0 -1px 0 0 var(--red-100)}#alerts>li .resolvable-alert-buttons{margin-top:var(--m)}#alerts>li .btn,#alerts>li a.go{display:inline-flex;align-items:center;border:1px solid rgba(220,38,38,.5);border-radius:var(--medium-border-radius);padding:4px 5px;margin:0 2px;color:var(--error-color);height:1.875rem}.flex #alerts>li .btn,.flex #alerts>li a.go{margin:0}#alerts>li .btn:hover,#alerts>li a.go:hover{border-color:var(--error-color)}#alerts>li a:not(.btn){color:var(--error-color);text-decoration:underline}#alerts>li a:not(.btn).go{text-decoration:none;white-space:nowrap}#alerts>li a:not(.btn).go:after{color:var(--error-color);font-size:15px;margin-top:1px}#alerts>li .btn{background-color:rgba(0,0,0,0)}#global-header .btn.menubtn,li.crumb .btn.menubtn,.btn.action-btn{padding:0;width:var(--touch-target-size);height:var(--touch-target-size)}#global-header .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),li.crumb .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),.btn.action-btn:not(:hover):not(:active):not([aria-expanded=true]){background-color:rgba(0,0,0,0)}#global-header{width:100%;margin-bottom:var(--m);border-bottom:1px solid var(--hairline-color)}#global-header .flex{height:var(--header-height);align-items:center}#global-header .btn{--ui-control-color: var(--gray-400);--ui-control-hover-color: var(--gray-800);--ui-control-active-color: var(--gray-700)}#global-header .btn:hover{color:var(--ui-control-hover-color)}.nav-toggle{display:flex;align-items:center;justify-content:center;width:44px;min-width:44px;height:var(--header-height);border-right:1px solid var(--medium-hairline-color);line-height:26px;color:currentColor;text-align:center}.nav-toggle:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"menu\";font-size:16px;line-height:0}.nav-toggle:hover{color:var(--link-color)}#crumbs{display:flex;flex-direction:row;align-items:center;font-size:13px;margin:0 !important;max-width:100%;overflow:hidden}#crumbs.empty{display:none}#crumbs nav{margin:0}#primary-nav-toggle:focus-visible{box-shadow:var(--inner-focus-ring)}#crumb-list{display:flex;flex-direction:row;align-items:stretch;flex-wrap:nowrap;max-width:100%;height:var(--header-height);--arrow-padding: 10;--arrow-height: 22;--arrow-angle: 35;--arrow-width: 17.1111;--arrow-c: 27.871}body.rtl #crumb-list{--arrow-angle: -35;--arrow-width: -19.4444}#crumb-list li.crumb{position:relative;cursor:default;color:var(--light-text-color)}body.ltr #crumb-list li.crumb{padding-left:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb{padding-right:calc(var(--arrow-width)*.5rem/16)}body.ltr #crumb-list li.crumb:not(.current){padding-right:calc(var(--arrow-width)*1.125rem/16)}body.rtl #crumb-list li.crumb:not(.current){padding-left:calc(var(--arrow-width)*1.125rem/16)}#crumb-list li.crumb:not(.current):before,#crumb-list li.crumb:not(.current):after{display:block;content:\"\";width:1px;height:calc(var(--arrow-c)*1rem/16);position:absolute;background:var(--medium-hairline-color);pointer-events:none}body.ltr #crumb-list li.crumb:not(.current):before,body.ltr #crumb-list li.crumb:not(.current):after{right:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb:not(.current):before,body.rtl #crumb-list li.crumb:not(.current):after{left:calc(var(--arrow-width)*.5rem/16)}#crumb-list li.crumb:not(.current):before{top:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle) * -1deg))}#crumb-list li.crumb:not(.current):after{bottom:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle) * 1deg))}#crumb-list .menu--disclosure li{display:block}#crumb-list .menu--disclosure li::after{content:none}#crumb-menu-trigger{min-width:var(--touch-target-size)}#crumb-menu-trigger:before{width:100%}#crumb-menu .chip{min-height:44px}li.crumb{display:flex;align-items:center;flex-wrap:nowrap;gap:var(--xs)}li.crumb [data-icon]{position:relative;top:-1px}li.crumb .menubtn{position:relative;margin:0 calc(var(--xs)*-1/2)}li.crumb [data-icon=ellipsis]:before{margin-top:3px;font-size:17px}li.crumb .chip{padding:0;background-color:rgba(0,0,0,0);--custom-bg-color: initial !important;--custom-text-color: initial !important;--custom-sel-bg-color: initial !important}li.crumb .chip .label-link{max-width:15em}li.crumb .chip .label-link:focus-visible{box-shadow:var(--inner-focus-ring)}li.crumb .chip .label-link span:not(.context-label){display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}li.crumb:has(.menubtn)>a{margin-right:0 !important;padding-right:var(--xs) !important}li.crumb>a{flex:1;display:flex !important;align-items:center;flex-wrap:nowrap;gap:var(--xs);white-space:nowrap}.menu--disclosure li.crumb>a{min-height:34px}li.crumb a,li.crumb button{display:inline-flex;align-items:center;min-height:var(--touch-target-size)}li.crumb a:not(:hover),li.crumb button:not(:hover){color:var(--text-color)}li.crumb a:not(:hover) svg rect,li.crumb a:not(:hover) svg circle,li.crumb a:not(:hover) svg ellipse,li.crumb a:not(:hover) svg line,li.crumb a:not(:hover) svg polyline,li.crumb a:not(:hover) svg polygon,li.crumb a:not(:hover) svg path,li.crumb a:not(:hover) svg text,li.crumb button:not(:hover) svg rect,li.crumb button:not(:hover) svg circle,li.crumb button:not(:hover) svg ellipse,li.crumb button:not(:hover) svg line,li.crumb button:not(:hover) svg polyline,li.crumb button:not(:hover) svg polygon,li.crumb button:not(:hover) svg path,li.crumb button:not(:hover) svg text{fill:var(--text-color);stroke-width:0}li.crumb a:hover,li.crumb button:hover{text-decoration:none}li.crumb a{position:relative}li.crumb button{cursor:pointer}li.breadcrumb-toggle-wrapper::after{content:none}#account-menu ul li a{max-width:calc(100% + 28px) !important}#announcements-btn{width:1.875rem;height:1.875rem;padding-left:0;padding-right:0;width:calc(1.75rem + 10px);position:relative}#announcements-btn:not(:hover):not(:active):not(.active){background-color:rgba(0,0,0,0)}#announcements-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}#announcements-btn.unread:after{content:\"\";display:block;position:absolute;top:.1875rem;width:.4375rem;height:.4375rem;border-radius:50%;background-color:var(--blue-600)}body.ltr #announcements-btn.unread:after{right:5px}body.rtl #announcements-btn.unread:after{left:5px}#announcements-btn svg{width:1rem;height:1rem}#announcements-btn svg rect,#announcements-btn svg circle,#announcements-btn svg ellipse,#announcements-btn svg line,#announcements-btn svg polyline,#announcements-btn svg polygon,#announcements-btn svg path,#announcements-btn svg text{fill:var(--ui-control-color);stroke-width:0}#announcements-btn:hover svg rect,#announcements-btn:hover svg circle,#announcements-btn:hover svg ellipse,#announcements-btn:hover svg line,#announcements-btn:hover svg polyline,#announcements-btn:hover svg polygon,#announcements-btn:hover svg path,#announcements-btn:hover svg text,#announcements-btn:active svg rect,#announcements-btn:active svg circle,#announcements-btn:active svg ellipse,#announcements-btn:active svg line,#announcements-btn:active svg polyline,#announcements-btn:active svg polygon,#announcements-btn:active svg path,#announcements-btn:active svg text,#announcements-btn.active svg rect,#announcements-btn.active svg circle,#announcements-btn.active svg ellipse,#announcements-btn.active svg line,#announcements-btn.active svg polyline,#announcements-btn.active svg polygon,#announcements-btn.active svg path,#announcements-btn.active svg text{fill:var(--ui-control-active-color);stroke-width:0}#announcements{max-width:350px}#announcements .announcement:not(:first-child){margin-top:20px}#announcements .announcement .announcement-label-container{margin-top:-3px;display:flex;align-items:center;margin-bottom:3px}#announcements .announcement .announcement-label-container .announcement-icon svg{display:block;width:15px;height:15px}#announcements .announcement .announcement-label-container .announcement-label{margin-left:5px;font-size:12px;color:var(--light-text-color)}#announcements .announcement.unread .announcement__heading:after{content:\"\";display:block;position:absolute;top:7px;width:7px;height:7px;border-radius:4px;background-color:var(--blue-600)}body.ltr #announcements .announcement.unread .announcement__heading:after{left:-13px}body.rtl #announcements .announcement.unread .announcement__heading:after{right:-13px}#announcements .announcement p{margin:0}#announcements .announcement__header{display:grid}#announcements .announcement__heading{position:relative;margin:0 0 3px;order:1}#user-info{display:flex;flex-direction:row;align-items:center;padding-top:5px;padding-bottom:5px;height:100%;background-color:rgba(0,0,0,0);border-radius:0}body.ltr #user-info{padding-left:var(--s)}body.rtl #user-info{padding-right:var(--s)}body.ltr #user-info{padding-right:calc(var(--padding) + 1px)}body.rtl #user-info{padding-left:calc(var(--padding) + 1px)}#user-info:after{border-color:var(--ui-control-color);transition:border-color linear 100ms}#user-info:hover:after{border-color:var(--ui-control-hover-color)}#user-info[aria-expanded=true]:after{border-color:var(--ui-control-active-color)}.header-photo img,.header-photo svg{display:block;width:1.875rem;height:1.875rem;max-width:none;border-radius:50%;box-shadow:0 0 0 1px rgba(31,41,51,.05),0 0 0 rgba(31,41,51,0);transition:box-shadow linear 150ms}#user-info:hover .header-photo img,#user-info:hover .header-photo svg{box-shadow:0 0 0 1px rgba(31,41,51,.05),0 2px 10px -2px rgba(31,41,51,.3)}#main-container{position:relative;flex-grow:1}#notifications{position:fixed;bottom:8px;width:calc(100% - 16px);z-index:101}body.ltr #notifications{left:8px}body.rtl #notifications{right:8px}body.has-debug-toolbar #notifications{bottom:50px}@media only screen and (min-width: 60.875rem){#notifications{width:350px}}#notifications .notification{display:flex;position:relative;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:10px 14px;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px rgba(19,26,32,.15),0 2px 12px rgba(19,26,32,.15);--color: var(--notice-color)}#notifications .notification:focus{box-shadow:var(--focus-ring)}#notifications .notification[data-type=success]{--color: var(--success-color)}#notifications .notification[data-type=error]{--color: var(--error-color)}#notifications .notification+.notification{margin-top:12px}#notifications .notification .notification-icon{width:18px;margin-top:-2px;font-size:18px;color:var(--color)}body.ltr #notifications .notification .notification-icon{margin-right:10px}body.rtl #notifications .notification .notification-icon{margin-left:10px}#notifications .notification .notification-main{overflow:hidden}#notifications .notification .notification-body{display:grid;grid-template-columns:20px 1fr;gap:var(--s);width:100%}#notifications .notification .notification-body .notification-message{font-weight:bold;word-break:normal;overflow-wrap:anywhere}#notifications .notification .notification-body .notification-details{margin-top:var(--xs)}#notifications .notification .notification-body .notification-details .chip{border:1px solid rgba(51,64,77,.1)}#notifications .notification .notification-close-btn{position:relative;top:-2px}body.ltr #notifications .notification .notification-close-btn{margin-left:10px}body.rtl #notifications .notification .notification-close-btn{margin-right:10px}#header-container{margin-bottom:var(--m)}@media only screen and (min-width: 75rem){#primary-nav-toggle{display:none}body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.ltr #crumbs.empty+.context-menu-container{margin-left:var(--padding)}body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.rtl #crumbs.empty+.context-menu-container{margin-right:var(--padding)}body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.ltr #crumbs.empty+.context-menu-container{padding-left:0}body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.rtl #crumbs.empty+.context-menu-container{padding-right:0}}#global-header .flex,#header .flex{max-width:100%}#global-header .flex.flex-nowrap,#header .flex.flex-nowrap{min-width:0}#header{display:flex;align-items:flex-start;align-content:stretch;flex-wrap:nowrap;justify-content:space-between;gap:var(--s);padding:5px var(--padding);position:relative;z-index:2;box-sizing:border-box;background-color:rgba(154,165,177,0);box-shadow:0 1px 0 rgba(51,64,77,0);transition:background-color linear 100ms,box-shadow linear 100ms}body.fixed-header #header{position:fixed;z-index:12;top:0;background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.1)}@supports(backdrop-filter: blur(10px)){#header{transition:background-color linear 100ms,box-shadow linear 100ms,backdrop-filter linear 100ms}body.fixed-header #header{background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}}#header h1{line-height:34px;margin-top:0;margin-bottom:0;min-width:0}#header .buttons,#header .btngroup{margin-top:0}@media only screen and (min-width: 60.875rem){#page-title.has-toolbar{min-width:calc(14.125rem - var(--xl) - var(--s)) !important}}#toolbar{flex:1;align-items:flex-start;justify-content:space-between}#toolbar .icon:before,#toolbar .texticon:before,#toolbar .menubtn:after,#toolbar [data-icon]:before,#toolbar [data-icon-after]:after{color:currentColor;opacity:.8}#toolbar .text{border-radius:var(--large-border-radius)}#toolbar .text::-webkit-input-placeholder{color:var(--light-text-color)}#toolbar .text:-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text::-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text:-moz-placeholder{color:var(--light-text-color)}#toolbar .text::-moz-placeholder{color:var(--light-text-color)}#toolbar .text::placeholder{color:var(--light-text-color)}#toolbar .text:not(:focus){background-clip:border-box}@media only screen and (max-width: 400px){#action-buttons .btngroup .btn:first-child{flex-basis:100%}}@media only screen and (max-width: 60.8125rem){#action-buttons{flex-direction:row-reverse;justify-content:start;margin-top:10px}}#main-content{display:flex;flex-direction:row;align-items:flex-start;padding:0 var(--padding) 48px;box-sizing:border-box}#main-content>.grid:only-child{flex:1}#sidebar-toggle-container{display:none}#sidebar-container{flex:0 0 14.125rem;width:14.125rem;box-sizing:border-box}@media only screen and (min-width: 75rem){body.ltr #sidebar-container{margin-left:calc(var(--xl)*-1)}body.rtl #sidebar-container{margin-right:calc(var(--xl)*-1)}}#sidebar{position:relative;box-sizing:border-box;padding:0 40px var(--m);width:14.125rem;background-color:rgba(0,0,0,0)}#sidebar.fixed{position:fixed}#sidebar nav{margin-left:-31px;margin-right:-31px}#sidebar nav li a{position:relative}#sidebar nav li a:focus{z-index:1}#sidebar nav li a:not(.sel):hover{background-color:var(--gray-200)}#sidebar .skip-link{margin:0 var(--s)}@media only screen and (min-width: 75rem){#sidebar{padding:0 31px var(--m)}}#content-container{flex:1 1 auto;width:400px}.content-pane{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);border-radius:var(--large-border-radius);position:relative;background-clip:padding-box;padding:var(--xl) var(--padding);word-wrap:break-word}.content-pane:focus{box-shadow:var(--focus-ring)}.content-pane>hr{margin-left:calc(var(--xl)*-1);margin-right:calc(var(--xl)*-1)}#footer,.footer{padding:6px var(--pane-padding, var(--xl));min-height:44px;line-height:2rem}#footer .buttons,.footer .buttons{height:32px;display:flex;align-items:center}#footer .btn,.footer .btn{padding-top:4px;padding-bottom:4px;height:var(--ui-control-height--small)}#footer{position:sticky;bottom:0;z-index:1;margin:calc(var(--s) + 1px) calc(var(--padding)*-1 + 2px) calc(var(--xl)*-1 + 2px);background-color:var(--gray-050);border-radius:var(--small-border-radius);box-sizing:border-box;border-top:2px solid var(--white)}#footer:empty{display:none}#footer.stuck{border-radius:0}@supports(backdrop-filter: blur(10px)){#footer.stuck{background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}}.has-debug-toolbar #footer{transition:padding linear 100ms}.has-debug-toolbar #footer.stuck{padding-bottom:52px}#footer>*,#footer .flex>*{margin-bottom:0}#details-container[data-state=collapsed]{display:none}#details-container{display:block;flex:0 1 auto;width:calc(var(--details-width) + var(--m))}body.ltr #details-container{padding-left:var(--m)}body.rtl #details-container{padding-right:var(--m)}#details{display:none}#details{display:block;width:350px;z-index:1}#details.fixed{position:fixed}#details .details{padding-bottom:calc(var(--xl) + 11.5em)}#details .details .meta{border-radius:var(--large-border-radius)}#details .details .meta:not(.read-only):not(.warning){background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details .meta:not(.read-only):not(.warning):focus{box-shadow:var(--focus-ring)}#details .details .meta.read-only{color:var(--medium-text-color);background-color:rgba(0,0,0,0) !important}#details .details .meta>.field:first-child,#details .details .meta>.data:first-child{border-top-right-radius:var(--large-border-radius)}#details .details .meta>.field:first-child,#details .details .meta>.field:first-child>.status-badge,#details .details .meta>.data:first-child,#details .details .meta>.data:first-child>.status-badge{border-top-left-radius:var(--large-border-radius)}#details .details .meta>.field:last-child,#details .details .meta>.data:last-child{border-bottom-right-radius:var(--large-border-radius)}#details .details .meta>.field:last-child,#details .details .meta>.field:last-child>.status-badge,#details .details .meta>.data:last-child,#details .details .meta>.data:last-child>.status-badge{border-bottom-left-radius:var(--large-border-radius)}#details .details>.field>.input>.text.fullwidth{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details>.field>.input>.text.fullwidth:focus{box-shadow:var(--focus-ring)}#details .details .notes{border-radius:var(--large-border-radius);padding-top:var(--m);padding-bottom:var(--m)}@media only screen and (max-width: 74.9375rem){#global-container{width:calc(100vw + 14.125rem)}body.ltr #global-container{left:-14.125rem}body.rtl #global-container{right:-14.125rem}body.ltr.showing-nav #global-container{left:0}body.rtl.showing-nav #global-container{right:0}#crumbs{display:flex !important}#header{width:100vw}#main-content{width:100vw}#main-content.has-sidebar{padding-left:0}}@media only screen and (max-width: 60.8125rem){#header{display:flex;flex-wrap:wrap}#header .flex:not(#toolbar){margin-top:10px}#toolbar{flex-wrap:wrap !important;order:3;width:100%;flex:auto}#toolbar>*{margin-top:10px !important}#action-buttons{order:2}body.fixed-header #header .flex:first-child{margin-top:0}#main-content{display:block}#main-content.has-sidebar{padding:0 var(--padding) 48px}#sidebar nav{margin-left:-40px;margin-right:-40px}#sidebar .skip-link{margin:0}#source-actions{margin-top:var(--s);margin-left:-9px}#sidebar-toggle-container{display:block;margin-bottom:var(--s)}#sidebar-toggle:after{top:0;transform:rotate(45deg)}body.rtl #sidebar-toggle:after{transform:rotate(135deg)}#content-container{min-height:0 !important}#sidebar-container,#details-container{width:auto !important;padding-left:0 !important;display:block}#details-toggle{display:none}#sidebar,#details{position:relative !important;overflow-y:visible !important;max-height:none !important;width:auto}#sidebar{margin-bottom:var(--m)}body.showing-sidebar #sidebar{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding-block:.5rem;border-radius:var(--large-border-radius)}body.showing-sidebar #sidebar:focus{box-shadow:var(--focus-ring)}body:not(.showing-sidebar) #sidebar{display:none}body.ltr #details-container{margin-right:0}body.rtl #details-container{margin-left:0}#content-container{width:auto !important;max-width:none !important}#details{padding:0 !important;margin-top:var(--m)}#details .details{margin-bottom:auto}}@media only screen and (max-width: 767px){:root{--padding: var(--s);--neg-padding: calc(var(--s) * -1)}#tabs ul li a{padding-left:var(--m);padding-right:var(--m)}body.ltr #tabs ul li+li{margin-left:-7px}body.rtl #tabs ul li+li{margin-right:-7px}.card-grid{display:flex !important;flex-direction:column}}body.ltr #settingsmenu ul li a{padding-left:46px}body.rtl #settingsmenu ul li a{padding-right:46px}#settingsmenu ul li a:before{font-size:15px}body.ltr #settingsmenu ul li a:before{margin:1px 0 0 -22px}body.rtl #settingsmenu ul li a:before{margin:1px -22px 0 0}#settingsmenu ul li a img{width:16px;height:16px;position:absolute;margin-left:-23px;margin-top:1px}.grid{position:relative;min-height:1px}.grid:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.grid>.item{display:none;box-sizing:border-box}.sidebar{width:14.125rem;box-sizing:border-box;font-size:13px}.sidebar:not(.drag-helper){padding:var(--m) 0;background-color:var(--gray-050)}.sidebar .heading{position:relative;margin:0 var(--xl)}.sidebar .heading:not(:first-child){margin-top:var(--m)}.sidebar .heading>span{display:inline-block;position:relative;z-index:1;padding:0 5px;margin:0 -5px;text-transform:uppercase;color:var(--medium-text-color);font-size:11px;font-weight:bold}.sidebar .heading>ul{margin:2px calc(var(--xl)*-1)}.sidebar nav{padding:0 var(--s)}body.ltr .sidebar nav>ul>li:not(.heading)>a,body.ltr .sidebar nav>ul>li.heading>ul>li>a{padding-left:24px}body.rtl .sidebar nav>ul>li:not(.heading)>a,body.rtl .sidebar nav>ul>li.heading>ul>li>a{padding-right:24px}body.ltr .sidebar nav>ul>li:not(.heading)>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>.toggle{left:calc(var(--m)*0)}body.rtl .sidebar nav>ul>li:not(.heading)>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>.toggle{right:calc(var(--m)*0)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a{padding-left:38px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a{padding-right:38px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle{left:calc(var(--m)*1)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle{right:calc(var(--m)*1)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a{padding-left:52px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a{padding-right:52px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*2)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*2)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:66px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:66px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*3)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*3)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:80px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:80px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*4)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*4)}.sidebar nav li{position:relative}.sidebar nav li:not(.has-subnav)>a:not(.sel):hover{text-decoration:none}.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.active-drop-target{cursor:default;background-color:var(--gray-500)}.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.sel+.toggle,.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.active-drop-target+.toggle{color:var(--white)}.sidebar nav li:not(.has-subnav)>a.sel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sidebar nav li a{position:relative;margin-bottom:1px;display:flex;flex-direction:row;align-items:center;padding:7px var(--xl);min-height:var(--xl);box-sizing:border-box;color:var(--text-color);cursor:pointer;user-select:none;border-radius:var(--large-border-radius);word-break:break-word}.sidebar nav li a .status{flex-shrink:1}.sidebar nav li a .icon{position:relative;top:1px;flex-shrink:1;width:1.125rem;height:1.125rem;word-break:normal;transition:margin-left linear 150ms,margin-right linear 150ms;opacity:.85}body.ltr .sidebar nav li a .icon{margin-right:10px}body.rtl .sidebar nav li a .icon{margin-left:10px}.sidebar nav li a .icon.icon-mask svg rect,.sidebar nav li a .icon.icon-mask svg circle,.sidebar nav li a .icon.icon-mask svg ellipse,.sidebar nav li a .icon.icon-mask svg line,.sidebar nav li a .icon.icon-mask svg polyline,.sidebar nav li a .icon.icon-mask svg polygon,.sidebar nav li a .icon.icon-mask svg path,.sidebar nav li a .icon.icon-mask svg text{fill:currentColor;stroke-width:0}.sidebar nav li a .icon.icon-mask span[data-icon]{color:currentColor}.sidebar nav li a .icon svg{width:1rem;height:1rem}.sidebar nav li a .icon span[data-icon]{font-size:16px}.sidebar nav li a .icon span[data-icon]::before{display:block}.sidebar nav li a .label{flex:1}.sidebar nav li a .badge{flex-shrink:1;padding:0 6px;font-size:.6875rem;line-height:16px;border-radius:var(--s);background-color:var(--medium-text-color);color:var(--white)}body.ltr .sidebar nav li a .badge{margin:0 -4px 0 10px}body.rtl .sidebar nav li a .badge{margin:0 10px 0 -4px}.sidebar nav li .toggle{position:absolute;z-index:1;height:34px;top:0;width:var(--xl);display:flex;align-items:center;justify-content:center}.sidebar nav li ul{display:none}.sidebar nav li.heading>ul,.sidebar nav li.expanded>ul{display:block}.error-summary{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin-bottom:var(--l);padding:var(--l) var(--xl);border-radius:var(--large-border-radius);background-color:var(--gray-050)}.error-summary:focus{box-shadow:var(--focus-ring)}.error-summary .notification-icon{color:var(--error-color);margin:-2px 6px 0 0;float:left}.error-summary h2{margin-top:0}.error-summary>ul.errors li,.error-summary>ul.errors li a{color:var(--text-color)}.error-summary>ul.errors li em,.error-summary>ul.errors li a em{font-weight:600}.error-summary>ul.errors li:hover,.error-summary>ul.errors li a:hover{color:var(--link-color)}.slideout .error-summary{border:1px solid var(--error-color);box-shadow:none;background-color:rgba(var(--error-color-rgb), 0.03);padding:var(--m)}.slideout .flex-fields .error-summary{margin:0 var(--row-gap) var(--row-gap)}body.ltr .content.has-sidebar:not(.hiding-sidebar){margin-left:14.125rem}body.rtl .content.has-sidebar:not(.hiding-sidebar){margin-right:14.125rem}#content-notice{margin:0 calc(var(--xl)*-1);padding:0 var(--xl)}#content-notice:not(:last-child){padding-bottom:5px;border-bottom:1px solid var(--hairline-color);margin-bottom:5px}#content :not(.meta)>.flex-fields,#content>.flex-fields,.so-content .flex-fields,.draghelper .flex-fields{--row-gap: var(--xl);display:flex;flex-wrap:wrap;align-content:flex-start;margin:0 calc(var(--row-gap)*-1) calc(var(--row-gap)*-1);width:calc(100% + var(--row-gap)*2)}#content :not(.meta)>.flex-fields>:not(.error-summary),#content>.flex-fields>:not(.error-summary),.so-content .flex-fields>:not(.error-summary),.draghelper .flex-fields>:not(.error-summary){margin:0 0 var(--row-gap) !important;padding:0 var(--row-gap);box-sizing:border-box}#content :not(.meta)>.flex-fields>h2,#content>.flex-fields>h2,.so-content .flex-fields>h2,.draghelper .flex-fields>h2{flex:4 0 100%}#content :not(.meta)>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),#content>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.so-content .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.draghelper .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))){padding-top:var(--xl);border-top:1px solid var(--hairline-color)}#content :not(.meta)>.flex-fields>hr,#content :not(.meta)>.flex-fields>.line-break,#content>.flex-fields>hr,#content>.flex-fields>.line-break,.so-content .flex-fields>hr,.so-content .flex-fields>.line-break,.draghelper .flex-fields>hr,.draghelper .flex-fields>.line-break{flex:4 0 100%}#content :not(.meta)>.flex-fields>.line-break:not(:first-child),#content>.flex-fields>.line-break:not(:first-child),.so-content .flex-fields>.line-break:not(:first-child),.draghelper .flex-fields>.line-break:not(:first-child){margin-bottom:0 !important}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break),#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,#content>.flex-fields>:not(h2):not(hr):not(.line-break),#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,.so-content .flex-fields>:not(h2):not(hr):not(.line-break),.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break),.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child{position:relative;width:100%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{position:absolute;top:0;width:1px;height:100%;content:\"\";background-color:rgba(205,216,228,.5)}body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{left:-1px}body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{right:-1px}@media only screen and (min-width: 96rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25{width:25%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75{width:75%}}@media only screen and (min-width: 37.5rem)and (max-width: 95.9375rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}@media only screen and (min-width: 75rem){.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}.global-sidebar{--is-always-visible: true;--prefix-width: calc(30rem / 16);--prefix-ratio: 1;--gutter-width: calc(10rem / 16);position:sticky;top:0;z-index:100;display:grid;grid-template-columns:var(--global-sidebar-width);grid-template-rows:var(--header-height) minmax(0, 1fr) auto;grid-auto-flow:row;height:100vh;padding:0;-webkit-overflow-scrolling:touch;background-color:var(--gray-150);border-inline-end:1px solid var(--hairline-color);width:var(--global-sidebar-width)}.global-sidebar a{text-decoration:none}.global-sidebar>a:not([href]),.global-sidebar *:not(.has-subnav)>a:not([href]){cursor:default;background-color:rgba(0,0,0,0)}@media only screen and (max-width: 74.9375rem){.global-sidebar{--is-always-visible: false}}.global-sidebar__nav{padding:var(--s) 0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior:contain}.global-sidebar__footer{margin-block-start:auto;border-block-start:1px solid var(--hairline-color)}.global-nav>ul{display:flex;flex-direction:column;gap:var(--s)}.global-nav>ul>li{position:relative}.nav-icon{display:inline-flex;flex-direction:column;justify-content:center;align-items:center;width:1rem;aspect-ratio:1;line-height:0;--thumb-size: 1rem}.nav-icon>svg{width:100%;height:100%}.nav-icon>svg rect,.nav-icon>svg circle,.nav-icon>svg ellipse,.nav-icon>svg line,.nav-icon>svg polyline,.nav-icon>svg polygon,.nav-icon>svg path,.nav-icon>svg text{fill:currentColor;stroke-width:0}.nav-item{--gutter-width: calc(10rem / 16);display:grid;grid-template-columns:var(--gutter-width) minmax(0, 1fr) var(--prefix-width) var(--gutter-width);grid-template-areas:\". action trigger .\" \"subnav subnav subnav subnav\";align-items:center;width:100%}.nav-item>.sidebar-action{grid-area:action}.nav-item__trigger{--icon-size: 10px;--trigger-size: var(--touch-target-size);grid-area:trigger;display:flex;z-index:1}.nav-item__trigger .menubtn{padding:0;flex-direction:column;justify-content:center;align-items:center;width:var(--trigger-size);height:var(--trigger-size);border:rgba(0,0,0,0)}.nav-item__trigger .menubtn:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--white);background-color:var(--medium-text-color)}.nav-item__trigger .menubtn[aria-expanded=true]:not(:hover){background-color:rgba(0,0,0,0)}.nav-item__trigger .menubtn[aria-expanded=true]:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(225deg);top:2px}.nav-item__trigger .menubtn:after{margin-inline-start:0 !important}.nav-item__subnav{--prefix-ratio: 4/3;display:none;grid-area:subnav}.nav-item__subnav[data-state=expanded]{display:block}.badge{display:inline-flex;justify-content:center;text-align:center;font-size:11px;line-height:1rem;min-width:1.1rem;height:1rem;padding:0 var(--xs);border-radius:var(--s);background-color:var(--medium-text-color);color:var(--white)}.sidebar-actions{padding:10px var(--gutter-width)}.sidebar-action{--thumb-size: 0.75rem;display:grid;grid-template-columns:var(--prefix-width) minmax(0, 1fr) auto;width:100%;align-items:center;position:relative;text-align:left;border-radius:var(--medium-border-radius);color:currentColor;cursor:pointer;min-height:30px;padding-inline:var(--xs);font-weight:500}.sidebar-action:before{content:\"\";position:absolute;inset-inline-start:-0.625rem;inset-block-start:50%;height:80%;transform:translateY(-50%);width:var(--xs)}.sidebar-action:focus-visible,.sidebar-action:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--white);background-color:var(--medium-text-color)}.sidebar-action.sel:before{--indicator-size: 6px;color:var(--white);background-color:var(--medium-text-color)}.sidebar-action--sub{--indicator-size: 4px;font-size:.9em;min-height:26px}.sidebar-action--sub:focus-visible:before,.sidebar-action--sub:hover:before{background-color:var(--white)}.sidebar-action--sub:before{width:var(--indicator-size);height:var(--indicator-size);border-radius:100%;top:50%;background-color:currentColor}body.ltr .sidebar-action--sub:before{left:calc(15px - var(--indicator-size)/2)}body.rtl .sidebar-action--sub:before{right:calc(15px - var(--indicator-size)/2)}.sidebar-action--job{grid-column:2/4 !important;align-items:flex-start}.sidebar-action--job .sidebar-action__label{flex-wrap:wrap;padding-block:var(--xs);gap:var(--xs)}.sidebar-action--job .label{white-space:normal}.sidebar-action--job .progress-label{width:100%;display:block;color:var(--gray-300);font-size:11px;line-height:1.5}.sidebar-action--job .nav-icon{display:block;position:relative;width:16px;height:16px}.sidebar-action--job .nav-icon>canvas{display:block;position:absolute;width:16px;height:16px}.sidebar-action--job #job-icon-hover{opacity:0}.sidebar-action--job:hover #job-icon-hover{opacity:1}.sidebar-action--job:hover #job-icon-static{opacity:0}.sidebar-action__prefix{display:flex;align-items:center;justify-content:center;width:var(--prefix-width);aspect-ratio:var(--prefix-ratio);line-height:0;flex-shrink:0}.sidebar-action__label{display:flex;gap:var(--s);align-items:center;padding:0 var(--xs);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-inline-start:7px}.sidebar-action__label [data-icon=external]{display:inline-flex}.sidebar-action__badge{flex:0 1 auto;display:flex;flex-direction:column;justify-content:center;padding:0 var(--s);margin-inline-start:auto}@media only screen and (min-width: 75rem){[data-sidebar=collapsed] .global-sidebar{--global-sidebar-width: calc(50rem / 16)}[data-sidebar=collapsed] .nav-item{grid-template-areas:\". action .\" \". trigger .\" \"subnav subnav subnav\";grid-template-columns:var(--gutter-width) var(--prefix-width) var(--gutter-width)}[data-sidebar=collapsed] .nav-item__indicator{right:-1px}[data-sidebar=collapsed] .sidebar-action{width:var(--prefix-width);padding-inline:0;min-height:var(--prefix-width)}[data-sidebar=collapsed] .sidebar-action:focus-visible .sidebar-action__label,[data-sidebar=collapsed] .sidebar-action:hover .sidebar-action__label{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] .nav-item__trigger .menubtn{width:100%;height:var(--touch-target-size);padding-block:2px var(--xs)}[data-sidebar=collapsed] .sidebar-action__label{display:none;z-index:10;opacity:0}[data-sidebar=collapsed] .sidebar-action__badge{z-index:100;position:absolute;right:calc(var(--xs)*-1);bottom:var(--xs);transform:translateY(25%);padding:0}[data-sidebar=collapsed] .sidebar-action--sub{min-height:26px}[data-sidebar=collapsed] .sidebar-action--sub:before{inset-inline-start:50%;inset-block-start:50%;transform:translateX(-50%) translateY(-50%)}[data-sidebar=collapsed] .global-nav>ul>li+li{--separator-width: calc(28rem / 16)}[data-sidebar=collapsed] .global-nav>ul>li+li:before{position:absolute;inset-block-start:calc(var(--s)/-2);inset-inline-start:calc((var(--global-sidebar-width) - var(--separator-width))/2);content:\"\";width:var(--separator-width);height:1px;margin:0 auto;background-color:var(--hairline-color)}[data-sidebar=expanded] #sidebar-toggle-icon{transform:rotate(180deg)}}#sidebar-trigger{display:none}@media only screen and (min-width: 75rem){#sidebar-trigger{display:flex}}craft-tooltip{position:fixed;white-space:normal;opacity:0;transform:translateY(-4px);width:max-content;max-width:240px;transition:opacity 100ms ease-in-out,transform 150ms ease-in-out;top:0;left:0;z-index:99}craft-tooltip>.inner{position:relative;display:inline-block;background-color:var(--white);color:var(--gray-700);border:1px solid var(--dark-hairline-color);box-shadow:0 0 10px rgba(0,0,0,.2);border-radius:var(--medium-border-radius);padding:var(--xs) var(--s);pointer-events:none;user-select:none;font-weight:400}craft-tooltip .arrow{position:absolute;background:var(--white);width:8px;height:8px;transform:rotate(45deg);border-style:solid;border-width:1px;border-color:rgba(0,0,0,0)}craft-tooltip .arrow[data-placement^=bottom]{border-inline-color:var(--dark-hairline-color) rgba(0,0,0,0);border-block-color:var(--dark-hairline-color) rgba(0,0,0,0)}craft-tooltip .arrow[data-placement^=top]{border-inline-color:rgba(0,0,0,0) var(--dark-hairline-color);border-block-color:rgba(0,0,0,0) var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=right]{border-inline-color:var(--dark-hairline-color) rgba(0,0,0,0);border-block-color:rgba(0,0,0,0) var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=left]{border-inline-color:rgba(0,0,0,0) var(--dark-hairline-color);border-block-color:var(--dark-hairline-color) rgba(0,0,0,0)}.lp-editor-container,.lp-preview-container{position:fixed;top:0;height:100%;background-color:var(--white);z-index:100}.lp-editor-container>header,.lp-preview-container>header{padding:5px 24px;background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.2);box-sizing:border-box;position:relative;z-index:1}@supports(backdrop-filter: blur(10px)){.lp-editor-container>header,.lp-preview-container>header{position:absolute;z-index:2;top:0;left:0;width:100%;background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}.lp-editor-container>header+.lp-editor,.lp-preview-container>header+.lp-editor{padding-top:68px}}.lp-editor-container>header .btn,.lp-editor-container>header .spinner,.lp-editor-container>header .checkmark-icon,.lp-preview-container>header .btn,.lp-preview-container>header .spinner,.lp-preview-container>header .checkmark-icon{margin-bottom:0}.lp-editor-container{display:flex;flex-direction:column}.lp-editor-container .lp-editor{flex:1;padding:24px;overflow:auto;box-sizing:border-box}.lp-editor-container .lp-editor>.field:last-child{margin-bottom:24px !important}body.ltr .lp-editor-container .lp-editor>.field>.status-badge{left:-24px}body.rtl .lp-editor-container .lp-editor>.field>.status-badge{right:-24px}body.ltr .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{left:calc(var(--m)*-1)}body.rtl .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{right:calc(var(--m)*-1)}.lp-editor-container .lp-draghandle{position:absolute;z-index:101;top:0;width:4px;height:100%;cursor:col-resize}body.ltr .lp-editor-container .lp-draghandle{right:-2px}body.rtl .lp-editor-container .lp-draghandle{left:-2px}.lp-preview-container{display:flex;flex-direction:column;box-shadow:-1px 0 0 rgba(63,77,90,.2)}.lp-preview-container.dragging:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";font-size:0}.lp-preview-container .lp-preview-header{display:flex}@supports not (backdrop-filter: blur(10px)){.lp-preview-container .lp-preview-header{background-color:rgba(228,237,246,.75)}}.lp-preview-container .lp-preview-header .buttons{margin:0}body.ltr .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-left:7px}body.rtl .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-right:7px}.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:0}@supports(backdrop-filter: blur(10px)){.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:44px}}.lp-preview-container .lp-preview-header .lp-device-type .btn::before{width:27px;height:22px;display:block;content:\"\";background-size:contain;background-repeat:no-repeat;background-position:center;transition-duration:.3s}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--phone::before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--tablet::before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--desktop::before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-device-type__label::before{width:27px;height:22px;display:block;content:\"\";background-size:contain;background-repeat:no-repeat;background-position:center;transition-duration:.3s}.lp-preview-container .lp-device-type__label.lp-device-type__label--phone::before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--tablet::before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--desktop::before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-preview-container__bumper-link{top:unset;bottom:0}.lp-preview-container .lp-device-mask{display:none}.lp-preview-container .lp-iframe-container{flex:1;overflow:auto}.lp-preview-container .lp-iframe-container .lp-preview{display:block;width:100%;min-height:100%}.lp-preview-container .lp-iframe-container:not(.lp-iframe-container--has-device-preview) .lp-device-preview-container{width:auto !important;height:100% !important;transform:none !important;margin:0 !important}.lp-preview-container .lp-iframe-container--has-device-preview{flex:none;padding-top:0 !important;position:relative;top:0;height:calc(100% - 44px);width:100%;background-color:var(--gray-100)}@supports(backdrop-filter: blur(10px)){.lp-preview-container .lp-iframe-container--has-device-preview{top:44px}}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-preview-container{position:absolute;top:50%;left:50%;z-index:2;overflow:auto;opacity:1;transition:opacity .3s}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-mask{display:block;position:absolute;top:50%;left:50%;z-index:1;background-image:url(../images/preview/chrome-phone-top.svg),url(../images/preview/chrome-phone-bottom.svg);background-position:top center,bottom center;background-repeat:no-repeat;background-size:contain;background-color:#fff;box-shadow:0 0 58px rgba(6,67,117,.3);border-radius:18px}.lp-preview-container .lp-iframe-container--has-device-preview.lp-iframe-container--tablet .lp-device-mask{background-image:url(../images/preview/chrome-tablet-top.svg),url(../images/preview/chrome-tablet-bottom.svg)}@media screen and (prefers-reduced-motion: no-preference){.lp-preview-container .lp-iframe-container--rotating .lp-device-mask{transition-duration:.3s;transition-property:transform}.lp-preview-container .lp-iframe-container--rotating .lp-device-preview-container{opacity:0;transition:opacity 0s}}.login-container .login-form-container{background-color:var(--gray-050)}.login-container .login-form input[readonly]{cursor:not-allowed}.login-container .login-form>.field,.login-container .login-form>.btn{margin-top:var(--l)}.login-container .login-form>.field:not(:last-child):not(.last),.login-container .login-form>.btn:not(:last-child):not(.last){margin-bottom:var(--l)}.login-container .login-form .btn{display:flex}.login-container .alternative-login-methods{margin-top:var(--m)}.login-container .alternative-login-methods .btn{width:100%}.login-container .login-forgot-password,.login-container .login-alt-container button{font-size:11px;color:var(--medium-text-color);cursor:pointer !important}.login-container .login-alt-container{margin:calc(var(--s) - var(--xl)) 0}.login-container .login-alt-container button{display:inline-flex;background-color:rgba(0,0,0,0);padding:0;width:auto;height:auto;min-height:var(--touch-target-size)}.login-container .login-forgot-password:hover,.login-container .login-forgot-password:focus,.login-container .login-alt-container button:hover,.login-container .login-alt-container button:focus{color:var(--link-color)}.login-container .login-errors{text-align:center;color:var(--error-color);margin-top:1em}.login-alt-menu{z-index:1001}body.login{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}body.login main{padding:var(--padding);width:calc(300px + var(--padding)*2);max-width:100%}body.login main h1{text-align:center;font-size:32px;line-height:40px;word-wrap:break-word}body.login main h1 #login-logo{width:100%;height:auto;max-height:300px}body.login #poweredby{display:block;text-align:center;margin-top:70px;margin-bottom:48px;opacity:.8}body.login #poweredby:hover,body.login #poweredby:focus,body.login #poweredby:active{opacity:1}body.login #poweredby>svg{display:inline-block}.modal.email-sent{width:300px}body.ltr .modal.email-sent .body{padding-left:68px}body.rtl .modal.email-sent .body{padding-right:68px}.modal.email-sent .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;display:block;position:absolute;top:24px;content:\"mail\";font-size:30px;color:var(--link-color)}body.ltr .modal.email-sent .body:before{left:24px}body.rtl .modal.email-sent .body:before{right:24px}.login-modal{width:calc(600px + var(--l)*2);max-width:calc(100% - 20px);background:var(--gray-100);border-radius:var(--large-border-radius)}.login-modal .body{display:flex;flex-direction:row;padding:var(--l)}.login-modal .body .login-modal-intro,.login-modal .body .login-modal-form{width:300px;max-width:100%}.login-modal .body .login-modal-intro{padding:var(--m)}@media screen and (max-width: 656px){.login-modal{border-radius:var(--large-border-radius)}.login-modal .body{padding:var(--m);flex-direction:column;gap:var(--m);overflow:auto}.login-modal .body .login-modal-intro{padding:var(--xs) var(--xl)}.login-modal .body .login-modal-form{border-radius:0}}.layoutdesigner{container-type:inline-size}.fld-container{display:flex;align-items:stretch;position:relative;border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box;overflow:hidden;box-shadow:none;min-height:500px}body.ltr .fld-container{padding-right:265px}body.rtl .fld-container{padding-left:265px}.errors>.fld-container{border:1px solid var(--error-color) !important}.fld-container .fld-workspace{flex:1;background-color:var(--gray-050);background-image:linear-gradient(to right, var(--gray-100) 1px, transparent 0px),linear-gradient(to bottom, var(--gray-100) 1px, transparent 1px);background-size:24px 24px;background-position:-1px -1px;box-shadow:inset 0 1px 3px -1px #acbed2}body.ltr .fld-container .fld-workspace{border-radius:calc(var(--small-border-radius) - 1px) 0 0 calc(var(--small-border-radius-1px))}body.rtl .fld-container .fld-workspace{border-radius:0 calc(var(--small-border-radius) - 1px) calc(var(--small-border-radius-1px)) 0}body.ltr .fld-container .fld-workspace{padding:24px 0 24px 24px}body.rtl .fld-container .fld-workspace{padding:24px 24px 24px 0}.fld-container .fld-workspace .fld-tabs{display:flex;align-items:flex-start;flex-wrap:wrap}body.ltr .fld-container:not(:has(.fld-library)){padding-right:0}body.rtl .fld-container:not(:has(.fld-library)){padding-left:0}body.ltr .fld-container:not(:has(.fld-library)) .fld-workspace{padding-right:24px}body.rtl .fld-container:not(:has(.fld-library)) .fld-workspace{padding-left:24px}.fld-container .fld-library{position:absolute;top:0;height:100%;width:265px;padding:14px}body.ltr .fld-container .fld-library{right:0}body.rtl .fld-container .fld-library{left:0}.fld-new-tab-btn:active{background-color:var(--gray-050)}.fld-library-menu{width:264px;padding:14px}body.ltr .fld-library-menu{margin-left:-14px}body.rtl .fld-library-menu{margin-right:-14px}.fld-library{display:flex;flex-direction:column}.fld-library .btngroup{margin-bottom:14px}.fld-library .fld-field-library{margin:-3px;padding:3px;flex:1;min-height:0;overflow:auto}.fld-library .fld-field-library .fld-field-group{margin-top:14px}.fld-library .fld-field-library .fld-field-group>*:not(:first-child){margin-top:var(--s)}.fld-library .fld-ui-library>*:not(:first-child){margin-top:var(--s)}.fld-library .filtered{display:none}.layoutdesigner .fld-library,.fld-tab .tabs .tab,.fld-tab .fld-tabcontent,.fld-new-tab-btn,.fld-new-tab-btn:hover{background-color:var(--white);box-shadow:0 0 0 1px rgba(31,41,51,.1),0 2px 5px -2px rgba(31,41,51,.2)}.fld-tab .settings:before,.fld-element .settings:before{margin-top:-2px;font-size:16px;opacity:.5}.fld-tab .settings:hover:before,.fld-tab .settings.active:before,.fld-element .settings:hover:before,.fld-element .settings.active:before{opacity:1}.fld-tab{width:288px;box-sizing:border-box}body.ltr .fld-tab{padding:0 25px 24px 0}body.rtl .fld-tab{padding:0 0 24px 25px}.fld-tab .tabs{margin:-10px -12px 0;padding:10px 12px 0;overflow:hidden;display:flex}.fld-tab .tabs .tab{display:flex;align-items:center;gap:var(--xs);max-width:calc(100% - 10px);box-sizing:border-box;padding:8px 14px;border-radius:var(--medium-border-radius) var(--medium-border-radius) 0 0}body:not(.dragging) .fld-tab .tabs .tab.draggable{cursor:move;cursor:grab}.fld-tab .tabs .tab span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fld-tab .fld-tabcontent{padding:14px}body.ltr .fld-tab .fld-tabcontent{border-radius:0 var(--medium-border-radius) var(--medium-border-radius) var(--medium-border-radius)}body.rtl .fld-tab .fld-tabcontent{border-radius:var(--medium-border-radius) 0 var(--medium-border-radius) var(--medium-border-radius)}.fld-tab .fld-tabcontent>.fld-element:not(:first-child),.fld-tab .fld-tabcontent>.fld-add-btn:not(:first-child){margin-top:var(--s)}.fld-tab .fld-tabcontent .fld-add-btn:not([aria-expanded=true]){display:none}.fld-tab.fld-insertion .tabs .tab,.fld-tab.fld-insertion .fld-tabcontent{margin:-2px;border:2px dashed var(--hairline-color);box-shadow:none;background-color:var(--gray-050);background-image:linear-gradient(to right, var(--gray-100) 1px, transparent 0px),linear-gradient(to bottom, var(--gray-100) 1px, transparent 1px);background-size:24px 24px}.fld-tab.fld-insertion .tabs .tab{background-position:-1px -1px}.fld-tab.fld-insertion .fld-tabcontent{background-position:-1px -13px}.fld-tab-caboose{min-height:24px}.fld-element{position:relative;display:flex;align-items:center;padding:var(--s);gap:var(--s);box-shadow:inset 0 0 0 1px var(--hairline-color);border-radius:var(--medium-border-radius);background-color:var(--white)}body:not(.dragging) .fld-element{cursor:move;cursor:grab}.fld-element.fld-insertion{box-sizing:border-box;border:2px dashed var(--hairline-color);border-radius:var(--medium-border-radius);background:none;box-shadow:none}.fld-element.draghelper{box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.fld-element.fld-field{color:var(--medium-text-color);background-color:var(--gray-100)}.fld-element.fld-field:not(.draghelper){box-shadow:none}.fld-element.fld-field .field-name{display:flex;flex-direction:column;gap:var(--xs)}.fld-element .fld-element-icon{text-align:center}.fld-element .fld-element-icon,.fld-element .fld-element-icon svg{width:16px;height:16px}.fld-element .fld-element-icon svg rect,.fld-element .fld-element-icon svg circle,.fld-element .fld-element-icon svg ellipse,.fld-element .fld-element-icon svg line,.fld-element .fld-element-icon svg polyline,.fld-element .fld-element-icon svg polygon,.fld-element .fld-element-icon svg path,.fld-element .fld-element-icon svg text{fill:var(--ui-control-color);stroke-width:0}.fld-element .field-name{flex:1;overflow:hidden}.fld-element .field-name .fld-element-label,.fld-element .field-name .fld-attribute{flex:1;display:flex;align-items:center;gap:var(--xs)}.fld-element .field-name .fld-element-label h4,.fld-element .field-name .fld-attribute .smalltext{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fld-element .field-name .fld-element-label h4{font-weight:normal;color:var(--text-color);margin:0}.fld-hr,.fld-br{position:relative;flex:1;display:flex;justify-content:center}.fld-hr:before,.fld-br:before{position:absolute;display:block;top:calc(50% - 2px);left:0;width:100%;height:4px;content:\"\";font-size:0;border-radius:2px}.fld-hr .smalltext,.fld-br .smalltext{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--gray-100);border-radius:var(--large-border-radius);padding:0 var(--s);height:var(--touch-target-size)}.fld-hr:before{background-color:var(--gray-100)}.fld-br:before{background-image:repeating-linear-gradient(to right, var(--gray-100), var(--gray-100) 5.2631578947%, transparent 5.2631578947%, transparent 10.5263157895%, var(--gray-100) 10.5263157895%)}.fld-element-settings-body{flex:1;margin:-24px var(--neg-padding) 0;padding:24px var(--padding);overflow:hidden auto;position:relative}.fld-element-settings-footer{position:relative;display:flex;flex-direction:row;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);background-color:var(--gray-050);z-index:3}.fld-element-settings-footer:focus{box-shadow:var(--focus-ring)}.fld-element-settings-footer>.ee-site-select{flex:1}body.ltr .fld-element-settings-footer>.btn{margin-left:5px}body.rtl .fld-element-settings-footer>.btn{margin-right:5px}body.ltr .fld-element-settings-footer>.spinner{margin:0 var(--neg-padding) 0 0}body.rtl .fld-element-settings-footer>.spinner{margin:0 0 0 var(--neg-padding)}@container (width < 577px){body.ltr .fld-container{padding-right:0}body.rtl .fld-container{padding-left:0}body.ltr .fld-container .fld-workspace{padding-right:24px}body.rtl .fld-container .fld-workspace{padding-left:24px}.fld-container>.fld-library{display:none}.fld-tab .fld-tabcontent .fld-add-btn{display:inline-flex !important}}html.noscroll,html.noscroll body{overflow:hidden;height:100%}.modal.imageeditor{background-color:var(--gray-900);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);opacity:0;user-select:none}.modal.imageeditor.modal{border-radius:0}.modal.imageeditor.modal .body:after{display:none}.modal.imageeditor .btn:not(.submit):not(.noborder){background-color:var(--gray-600);color:var(--white)}.modal.imageeditor .btn:not(.submit):not(.noborder):hover{background-color:var(--gray-700)}.modal.imageeditor .btn:not(.submit):not(.noborder).active{background-color:var(--gray-800)}.modal.imageeditor .icon::before{width:24px;height:24px;margin-left:-3px;display:inline-block;content:\"\"}.modal.imageeditor .icon.rotate-left::before{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .icon.rotate-right::before{background-image:url(../images/image-editor/rotate-right.svg)}.modal.imageeditor .icon.flip-vertical::before{background-image:url(../images/image-editor/flip-vertical.svg)}.modal.imageeditor .icon.flip-horizontal::before{background-image:url(../images/image-editor/flip-horizontal.svg)}.modal.imageeditor .icon.constraint::before{background-image:url(../images/image-editor/unconstrained.svg)}.modal.imageeditor .icon.focal-point::before{background-image:url(../images/image-editor/focal-point.svg)}.modal.imageeditor .body{display:flex;padding:0}.modal.imageeditor input{color:var(--text-color)}.modal.imageeditor .body .tabs{border-right:1px solid var(--gray-1000)}.modal.imageeditor .body .tabs ul{width:100px;flex-direction:column;align-items:stretch}.modal.imageeditor .body .tabs ul li{position:relative;padding:14px;text-align:center;border-bottom:1px solid var(--gray-1000);cursor:pointer}.modal.imageeditor .body .tabs ul li::before{position:absolute;top:0;content:\"\";width:0;height:100%;background-color:currentColor}body.ltr .modal.imageeditor .body .tabs ul li::before{left:0}body.rtl .modal.imageeditor .body .tabs ul li::before{right:0}.modal.imageeditor .body .tabs ul li.selected{background-color:#151c23}.modal.imageeditor .body .tabs ul li.selected::before{width:2px}.modal.imageeditor .body .tabs ul li i{background-repeat:no-repeat;background-position:top center;display:block;height:24px}.modal.imageeditor .body .tabs ul li[data-view=rotate] i{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .body .tabs ul li[data-view=crop] i{background-image:url(../images/image-editor/crop.svg)}.modal.imageeditor .body .tabs ul li[data-view=filters] i{background-image:url(../images/image-editor/filters.svg)}.modal.imageeditor .body .tabs ul li:hover{background-color:#1b242c}.modal.imageeditor .body .tabs ul li:hover{cursor:pointer}.modal.imageeditor .body .views{padding:24px;overflow:auto}.modal.imageeditor .body .views .btngroup{margin-bottom:24px}.modal.imageeditor .body .views .filters ul{width:100px}.modal.imageeditor .body .views .filters ul li{text-align:center;margin-right:14px;margin-bottom:14px}.modal.imageeditor .body .views .filters ul li:last-child{margin-right:0}.modal.imageeditor .body .views .filters ul li img{border:3px solid rgba(0,0,0,0);border-radius:4px}.modal.imageeditor .body .views .filters ul li span{display:block}.modal.imageeditor .body .views .filters ul li:hover{cursor:pointer}.modal.imageeditor .body .views .filters ul li.selected img{border-color:var(--white)}.modal.imageeditor .body .image-container{flex-grow:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.modal.imageeditor .body .image-container .image{text-align:center;flex-grow:1;position:relative;margin:14px}.modal.imageeditor .body .image-container .image canvas{position:absolute;top:0;left:0}.modal.imageeditor .body .image-container .image-tools{text-align:center}.modal.imageeditor .body .image-container .image-tools .straightening{max-width:400px;min-height:3.75rem;display:block;margin:0 auto;overflow:hidden}.modal.imageeditor .footer{position:absolute;background-color:rgba(0,0,0,0);bottom:0;left:0;width:100%;border-top:1px solid #000}body.has-debug-toolbar .modal.imageeditor .footer{padding-bottom:50px}.modal.imageeditor .body .views .crop fieldset .heading{display:none}.modal.imageeditor .body .views .crop .custom-constraint-spacer{padding:0 var(--xs)}.modal.imageeditor .body .views .crop .constraint-group{display:grid;grid-gap:var(--xs)}body.ltr .modal.imageeditor .body .views .crop .custom{padding-left:calc(1rem + 5px)}body.rtl .modal.imageeditor .body .views .crop .custom{padding-right:calc(1rem + 5px)}.modal.imageeditor .body .views .crop .orientation{display:flex;align-items:center;justify-content:center}.modal.imageeditor .body .views .crop .orientation input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:center center;background-repeat:no-repeat;margin:0 4px;cursor:pointer}.modal.imageeditor .body .views .crop .orientation input[value=landscape]{width:30px;height:20px;background-image:url(../images/image-editor/orientation-landscape-unchecked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=landscape]:checked{background-image:url(../images/image-editor/orientation-landscape-checked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]{width:20px;height:30px;background-image:url(../images/image-editor/orientation-portrait-unchecked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]:checked{background-image:url(../images/image-editor/orientation-portrait-checked.svg)}.modal.imageeditor.vertical .body .views .crop>.btngroup:first-child{justify-content:center}.modal.imageeditor:not(.vertical) .body .views .crop .constraint.custom{margin-top:var(--xs)}.vertical.imageeditor .body{flex-direction:column}.vertical.imageeditor .body .image-container{flex-basis:30vh;flex-shrink:0}.vertical.imageeditor .body .constraint-group{grid-template-columns:1fr 1fr}.vertical.imageeditor .body .tabs ul{display:flex;flex-direction:row;width:100%;border-top:1px solid #000;border-bottom:1px solid #000}.vertical.imageeditor .body .tabs ul li{flex-grow:1;border:0;border-right:1px solid #000;padding:10px 7px}.vertical.imageeditor .body .tabs ul li::before{top:unset;top:0;width:100%;height:0}.vertical.imageeditor .body .tabs ul li.selected::before{width:100%;height:2px}.vertical.imageeditor .body .views{width:auto}.vertical.imageeditor .body .views .rotate{display:flex;justify-content:center;flex-wrap:wrap;margin-bottom:-14px}.vertical.imageeditor .body .views .rotate .btngroup{margin:0 7px 14px}.vertical.imageeditor .body .views .filters ul{width:auto;height:109px;overflow:auto;white-space:nowrap;margin:0 -24px;margin-bottom:-24px;padding:24px;text-align:center}.vertical.imageeditor .body .views .filters ul li{display:inline-block;margin-bottom:0}.slide-rule{position:relative;padding:10px 0}.slide-rule:focus{box-shadow:none}body:not(.reduce-focus-visibility) .slide-rule:focus .cursor::after,body.reduce-focus-visibility .slide-rule:focus-visible .cursor::after{box-shadow:var(--focus-ring)}.slide-rule .cursor::after{content:\"\";width:1.25rem;height:3.125rem;position:absolute;top:-15px;left:50%;transform:translateX(-50%)}.slide-rule .cursor{position:absolute;margin-left:-0.25rem;margin-top:4px;left:50%;z-index:1;width:0;height:0;border-left:0.3125rem solid rgba(0,0,0,0);border-right:0.3125rem solid rgba(0,0,0,0);border-top:0.3125rem solid #63a6e1}.slide-rule .graduations{white-space:nowrap;height:40px;position:relative}.slide-rule .graduations ul{position:relative;float:left}.slide-rule .graduations ul li{display:inline-block;font-size:8px;position:relative;width:10px}.slide-rule .graduations ul li:not(.main-graduation){left:1px}.slide-rule .graduations ul li.main-graduation:before{border-left-width:3px}.slide-rule .graduations ul li.main-graduation .label{display:block;cursor:default}.slide-rule .graduations ul li.selected:before{border-left-color:#63a6e1}.slide-rule .graduations ul li:before{content:\"\";position:absolute;border-left:1px solid var(--white);height:10px;top:0px;left:0}.slide-rule .graduations ul li .label{width:20px;position:absolute;top:10px;left:-9px;display:none;text-align:center}.slide-rule .value{display:none;position:absolute;bottom:0;left:50%;z-index:1;box-sizing:border-box;padding:5px;width:50px;margin-left:-25px;background:var(--gray-600)}.slide-rule .overlay{z-index:2;position:absolute;top:0;right:0;bottom:1px;left:0;background-image:linear-gradient(to right, var(--gray-900) 0%, rgba(31, 41, 51, 0) 15%, rgba(31, 41, 51, 0) 85%, var(--gray-900) 100%)}.menu.dark{background-color:var(--gray-600);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.menu.dark ul li a{color:var(--white) !important}.menu.dark ul li a:not(.sel):not(.disabled):hover{background-color:var(--gray-700)}_:-ms-lang(x),.elements .tableview td.checkbox-cell input.checkbox+label,.elements .tableview td.checkbox-cell div.checkbox{top:16px}_:-ms-lang(x),input.checkbox+label:empty,div:empty.checkbox{display:block}.yii-debug-toolbar__title a{display:block !important}","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n:root {\n  --white: #fff;\n  --black: #000;\n\n  --gray-050-hsl: 212, 60%, 97%;\n  --gray-100-hsl: 212, 50%, 93%;\n  --gray-150-hsl: 212, 40%, 89%;\n  --gray-200-hsl: 212, 30%, 85%;\n  --gray-300-hsl: 211, 13%, 65%;\n  --gray-350-hsl: 211, 11%, 59%;\n  --gray-400-hsl: 210, 10%, 53%;\n  --gray-500-hsl: 211, 12%, 43%;\n  --gray-550-hsl: 210, 13%, 40%;\n  --gray-600-hsl: 209, 14%, 37%;\n  --gray-700-hsl: 209, 18%, 30%;\n  --gray-800-hsl: 209, 20%, 25%;\n  --gray-900-hsl: 210, 24%, 16%;\n  --gray-1000-hsl: 210, 24%, 10%;\n\n  --gray-050: hsl(var(--gray-050-hsl));\n  --gray-100: hsl(var(--gray-100-hsl));\n  --gray-150: hsl(var(--gray-150-hsl));\n  --gray-200: hsl(var(--gray-200-hsl));\n  --gray-300: hsl(var(--gray-300-hsl));\n  --gray-350: hsl(var(--gray-350-hsl));\n  --gray-400: hsl(var(--gray-400-hsl));\n  --gray-500: hsl(var(--gray-500-hsl));\n  --gray-550: hsl(var(--gray-550-hsl));\n  --gray-600: hsl(var(--gray-600-hsl));\n  --gray-700: hsl(var(--gray-700-hsl));\n  --gray-800: hsl(var(--gray-800-hsl));\n  --gray-900: hsl(var(--gray-900-hsl));\n  --gray-1000: hsl(var(--gray-1000-hsl));\n\n  --red-050: #fef2f2;\n  --red-100: #fee2e2;\n  --red-200: #fecaca;\n  --red-300: #fca5a5;\n  --red-400: #f87171;\n  --red-500: #ef4444;\n  --red-600: #dc2626;\n  --red-700: #b91c1c;\n  --red-800: #991b1b;\n  --red-900: #7f1d1d;\n  --red-950: #450a0a;\n\n  --orange-050: #fff7ed;\n  --orange-100: #ffedd5;\n  --orange-200: #fed7aa;\n  --orange-300: #fdba74;\n  --orange-400: #fb923c;\n  --orange-500: #f97316;\n  --orange-600: #ea580c;\n  --orange-700: #c2410c;\n  --orange-800: #9a3412;\n  --orange-900: #7c2d12;\n  --orange-950: #431407;\n\n  --amber-050: #fffbeb;\n  --amber-100: #fef3c7;\n  --amber-200: #fde68a;\n  --amber-300: #fcd34d;\n  --amber-400: #fbbf24;\n  --amber-500: #f59e0b;\n  --amber-600: #d97706;\n  --amber-700: #b45309;\n  --amber-800: #92400e;\n  --amber-900: #78350f;\n  --amber-950: #451a03;\n\n  --yellow-050: #fefce8;\n  --yellow-100: #fef9c3;\n  --yellow-200: #fef08a;\n  --yellow-300: #fde047;\n  --yellow-400: #facc15;\n  --yellow-500: #eab308;\n  --yellow-600: #ca8a04;\n  --yellow-700: #a16207;\n  --yellow-750: #93580b;\n  --yellow-800: #854d0e;\n  --yellow-900: #713f12;\n  --yellow-950: #422006;\n\n  --lime-050: #f7fee7;\n  --lime-100: #ecfccb;\n  --lime-200: #d9f99d;\n  --lime-300: #bef264;\n  --lime-400: #a3e635;\n  --lime-500: #84cc16;\n  --lime-600: #65a30d;\n  --lime-700: #4d7c0f;\n  --lime-800: #3f6212;\n  --lime-900: #365314;\n  --lime-950: #1a2e05;\n\n  --green-050: #f0fdf4;\n  --green-100: #dcfce7;\n  --green-200: #bbf7d0;\n  --green-300: #86efac;\n  --green-400: #4ade80;\n  --green-500: #22c55e;\n  --green-600: #16a34a;\n  --green-700: #15803d;\n  --green-800: #166534;\n  --green-900: #14532d;\n  --green-950: #052e16;\n\n  --emerald-050: #ecfdf5;\n  --emerald-100: #d1fae5;\n  --emerald-200: #a7f3d0;\n  --emerald-300: #6ee7b7;\n  --emerald-400: #34d399;\n  --emerald-500: #10b981;\n  --emerald-600: #059669;\n  --emerald-700: #047857;\n  --emerald-800: #065f46;\n  --emerald-900: #064e3b;\n  --emerald-950: #022c22;\n\n  --teal-050: #f0fdfa;\n  --teal-100: #ccfbf1;\n  --teal-200: #99f6e4;\n  --teal-300: #5eead4;\n  --teal-400: #2dd4bf;\n  --teal-500: #14b8a6;\n  --teal-550: #11a697;\n  --teal-600: #0d9488;\n  --teal-700: #0f766e;\n  --teal-800: #115e59;\n  --teal-900: #134e4a;\n  --teal-950: #042f2e;\n\n  --cyan-050: #ecfeff;\n  --cyan-100: #cffafe;\n  --cyan-200: #a5f3fc;\n  --cyan-300: #67e8f9;\n  --cyan-400: #22d3ee;\n  --cyan-500: #06b6d4;\n  --cyan-600: #0891b2;\n  --cyan-700: #0e7490;\n  --cyan-800: #155e75;\n  --cyan-900: #164e63;\n  --cyan-950: #083344;\n\n  --sky-050: #f0f9ff;\n  --sky-100: #e0f2fe;\n  --sky-200: #bae6fd;\n  --sky-300: #7dd3fc;\n  --sky-400: #38bdf8;\n  --sky-500: #0ea5e9;\n  --sky-600: #0284c7;\n  --sky-700: #0369a1;\n  --sky-800: #075985;\n  --sky-900: #0c4a6e;\n  --sky-950: #082f49;\n\n  --blue-050: #eff6ff;\n  --blue-100: #dbeafe;\n  --blue-200: #bfdbfe;\n  --blue-300: #93c5fd;\n  --blue-400: #60a5fa;\n  --blue-500: #3b82f6;\n  --blue-600: #2563eb;\n  --blue-700: #1d4ed8;\n  --blue-800: #1e40af;\n  --blue-900: #1e3a8a;\n  --blue-950: #172554;\n\n  --indigo-050: #eef2ff;\n  --indigo-100: #e0e7ff;\n  --indigo-200: #c7d2fe;\n  --indigo-300: #a5b4fc;\n  --indigo-400: #818cf8;\n  --indigo-500: #6366f1;\n  --indigo-600: #4f46e5;\n  --indigo-700: #4338ca;\n  --indigo-800: #3730a3;\n  --indigo-900: #312e81;\n  --indigo-950: #1e1b4b;\n\n  --violet-050: #f5f3ff;\n  --violet-100: #ede9fe;\n  --violet-200: #ddd6fe;\n  --violet-300: #c4b5fd;\n  --violet-400: #a78bfa;\n  --violet-500: #8b5cf6;\n  --violet-600: #7c3aed;\n  --violet-700: #6d28d9;\n  --violet-800: #5b21b6;\n  --violet-900: #4c1d95;\n  --violet-950: #2e1065;\n\n  --purple-050: #faf5ff;\n  --purple-100: #f3e8ff;\n  --purple-200: #e9d5ff;\n  --purple-300: #d8b4fe;\n  --purple-400: #c084fc;\n  --purple-500: #a855f7;\n  --purple-600: #9333ea;\n  --purple-700: #7e22ce;\n  --purple-800: #6b21a8;\n  --purple-900: #581c87;\n  --purple-950: #3b0764;\n\n  --fuchsia-050: #fdf4ff;\n  --fuchsia-100: #fae8ff;\n  --fuchsia-200: #f5d0fe;\n  --fuchsia-300: #f0abfc;\n  --fuchsia-400: #e879f9;\n  --fuchsia-500: #d946ef;\n  --fuchsia-600: #c026d3;\n  --fuchsia-700: #a21caf;\n  --fuchsia-800: #86198f;\n  --fuchsia-900: #701a75;\n  --fuchsia-950: #4a044e;\n\n  --pink-050: #fdf2f8;\n  --pink-100: #fce7f3;\n  --pink-200: #fbcfe8;\n  --pink-300: #f9a8d4;\n  --pink-400: #f472b6;\n  --pink-500: #ec4899;\n  --pink-600: #db2777;\n  --pink-700: #be185d;\n  --pink-800: #9d174d;\n  --pink-900: #831843;\n  --pink-950: #500724;\n\n  --rose-050: #fff1f2;\n  --rose-100: #ffe4e6;\n  --rose-200: #fecdd3;\n  --rose-300: #fda4af;\n  --rose-400: #fb7185;\n  --rose-500: #f43f5e;\n  --rose-600: #e11d48;\n  --rose-700: #be123c;\n  --rose-800: #9f1239;\n  --rose-900: #881337;\n  --rose-950: #4c0519;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n:root {\n  --bg-color: $grey100;\n  --bg-color-hsl: #{hue($grey100)}, #{saturation($grey100)},\n    #{lightness($grey100)};\n\n  // submit button colors\n  --primary-color: var(--red-600);\n  --secondary-color: var(--gray-500);\n\n  --input-color: hsl(212, 25%, 50%);\n\n  // text colors\n  --text-color: var(--gray-700);\n  --medium-dark-text-color: var(--gray-550);\n  --medium-text-color: var(--gray-550);\n  --light-text-color: var(--gray-500);\n  --link-color: #1f5fea;\n\n  // font styles\n  --font-weight-bold: 700;\n\n  // hairline colors\n  --hairline-color: #{transparentize(hsl(209, 20%, 25%), 0.9)};\n  --medium-hairline-color: #cfd8e3; // matches shadow below global header;\n  --dark-hairline-color: #{transparentize(hsl(210, 10%, 53%), 0.5)};\n\n  // focus colors\n  --light-focus-color: var(--blue-300);\n  --medium-focus-color: var(--blue-500);\n  --dark-focus-color: #0f74b1;\n\n  // focus rings\n  --light-focus-ring: 0 0 0 1px #5ed0fa,\n    0 0 0 3px #{transparentize(#5ed0fa, 0.3)};\n  --medium-focus-ring: 0 0 0 1px #2bb0ed,\n    0 0 0 3px #{transparentize(#2bb0ed, 0.3)};\n  --dark-focus-ring: 0 0 0 1px #0f74b1,\n    0 0 0 3px #{transparentize(#0f74b1, 0.3)};\n\n  // selection colors\n  --light-sel-color: var(--gray-200);\n  --dark-sel-color: var(--gray-500);\n\n  // alert/notice colors\n  --error-color-rgb: 216, 31, 35;\n  --error-color: rgba(var(--error-color-rgb), 1);\n  --warning-color: var(--amber-700);\n  --success-color: var(--teal-700);\n  --notice-color: var(--sky-700);\n\n  // status colors\n  --enabled-color: var(--teal-550);\n  --pending-color: var(--orange-400);\n  --disabled-color: var(--red-600);\n\n  // misc colors\n  --indicator-border-color: var(--amber-600);\n  --indicator-icon-color: var(--amber-700);\n\n  // UI element styles\n  --small-border-radius: 3px;\n  --medium-border-radius: 4px;\n  --large-border-radius: 5px;\n\n  --menu-border-radius: var(--medium-border-radius);\n  --checkbox-size: 1rem;\n  --radio-size: 1rem;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n@mixin striped-bg($size, $color: $grey100) {\n  // h/t https://css-tricks.com/stripes-css/\n  $halfSize: $size * 0.5;\n  body.ltr & {\n    background: repeating-linear-gradient(\n      135deg,\n      var(--white),\n      var(--white) $halfSize,\n      $color $halfSize,\n      $color $size\n    );\n  }\n  body.rtl & {\n    background: repeating-linear-gradient(\n      45deg,\n      var(--white),\n      var(--white) $halfSize,\n      $color $halfSize,\n      $color $size\n    );\n  }\n}\n\n@font-face {\n  font-family: 'Craft';\n  src:\n    url('../fonts/Craft.woff2') format('woff2'),\n    url('../fonts/Craft.woff') format('woff'),\n    url('../fonts/Craft.ttf') format('truetype'),\n    url('../fonts/Craft.svg#Craft') format('svg');\n  font-weight: normal;\n  font-style: normal;\n  font-display: block;\n}\n\n/* ----------------------------------------\n/*  Basic stuff\n/* ----------------------------------------*/\n\n:root {\n  --ui-control-color: var(--gray-550);\n  --ui-control-hover-color: var(--gray-600);\n  --ui-control-active-color: var(--gray-700);\n  --ui-control-static-bg-color: #{transparentize($inputColor, 0.75)};\n  --ui-control-bg-color: var(--ui-control-static-bg-color);\n  --ui-control-hover-bg-color: #{transparentize($inputColor, 0.7)};\n  --ui-control-active-bg-color: #{transparentize($inputColor, 0.5)};\n  --ui-control-border-radius: var(--large-border-radius);\n  --ui-control-height: calc(34rem / 16);\n  --ui-control-height--small: calc(30rem / 16);\n  --light-focus-hsl: #{hue($lightFocusColor)}, #{saturation($lightFocusColor)},\n    #{lightness($lightFocusColor)};\n  --medium-focus-hsl: #{hue($mediumFocusColor)},\n    #{saturation($mediumFocusColor)}, #{lightness($mediumFocusColor)};\n  --dark-focus-hsl: #{hue($darkFocusColor)}, #{saturation($darkFocusColor)},\n    #{lightness($darkFocusColor)};\n  --focus-ring: 0 0 0 1px hsl(var(--dark-focus-hsl)),\n    0 0 0 3px hsla(var(--dark-focus-hsl), 0.8);\n  --inner-focus-ring: inset 0 0 0 1px hsl(var(--dark-focus-hsl)),\n    inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);\n  --touch-target-size: calc(\n    24rem / 16\n  ); /* Minimum recommended touch target size */\n  --thumb-size: calc(20rem / 16);\n  --icon-size: 1rem;\n  --elements-busy-top-position: calc(50% - var(--size, 20px) / 2);\n  --lh: 1.42em;\n}\n\nbody,\nhtml {\n  box-shadow: var(--light-focus-ring);\n  background-color: var(--gray-100);\n}\n\nhtml.noscroll,\nhtml.noscroll body {\n  overflow: hidden;\n}\n\nbody {\n  width: 100vw;\n  overflow-x: hidden;\n  @include fontSize(14);\n  line-height: var(--lh);\n  color: var(--text-color);\n  -webkit-font-smoothing: subpixel-antialiased;\n}\n\nbody.rtl {\n  direction: rtl;\n}\n\nbody,\ninput,\nselect,\ntextarea {\n  @include sans-serif-font;\n}\n\n.first,\nh1:first-child,\nh2:first-child,\nh3:first-child,\nh4:first-child,\nh5:first-child,\nh6:first-child,\np:first-child,\nblockquote:first-child,\nhr:first-child,\n.pane:first-child,\n.grid:first-child,\nfieldset:first-child,\n.field:first-child,\n.toolbar:first-child,\n.buttons:first-child,\n.condition-container:first-child {\n  margin-top: 0 !important;\n}\n\n.last,\nh1:last-child,\nh2:last-child,\nh3:last-child,\nh4:last-child,\nh5:last-child,\nh6:last-child,\np:last-child,\nblockquote:last-child,\n.pane:last-child,\n.grid:last-child,\n.meta:last-child,\nfieldset:last-child,\n.field:last-child,\n.toolbar:last-child,\n.buttons:last-child,\n.condition-container:last-child {\n  margin-bottom: 0 !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n.mt-xs {\n  margin-top: var(--xs) !important;\n}\n.mt-s {\n  margin-top: var(--s) !important;\n}\n.mt-m {\n  margin-top: var(--m) !important;\n}\n.mt-l {\n  margin-top: var(--l) !important;\n}\n.mt-xl {\n  margin-top: var(--xl) !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n.mb-xs {\n  margin-bottom: var(--xs) !important;\n}\n.mb-s {\n  margin-bottom: var(--s) !important;\n}\n.mb-m {\n  margin-bottom: var(--m) !important;\n}\n.mb-l {\n  margin-bottom: var(--l) !important;\n}\n.mb-xl {\n  margin-bottom: var(--xl) !important;\n}\n\n.ml-0 {\n  margin-left: 0 !important;\n}\n.ml-xs {\n  margin-left: var(--xs) !important;\n}\n.ml-s {\n  margin-left: var(--s) !important;\n}\n.ml-m {\n  margin-left: var(--m) !important;\n}\n.ml-l {\n  margin-left: var(--l) !important;\n}\n.ml-xl {\n  margin-left: var(--xl) !important;\n}\n\n.mr-0 {\n  margin-right: 0 !important;\n}\n.mr-xs {\n  margin-right: var(--xs) !important;\n}\n.mr-s {\n  margin-right: var(--s) !important;\n}\n.mr-m {\n  margin-right: var(--m) !important;\n}\n.mr-l {\n  margin-right: var(--l) !important;\n}\n.mr-xl {\n  margin-right: var(--xl) !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n.mx-xs {\n  margin-left: var(--xs) !important;\n  margin-right: var(--xs) !important;\n}\n.mx-s {\n  margin-left: var(--s) !important;\n  margin-right: var(--s) !important;\n}\n.mx-m {\n  margin-left: var(--m) !important;\n  margin-right: var(--m) !important;\n}\n.mx-l {\n  margin-left: var(--l) !important;\n  margin-right: var(--l) !important;\n}\n.mx-xl {\n  margin-left: var(--xl) !important;\n  margin-right: var(--xl) !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n.my-xs {\n  margin-top: var(--xs) !important;\n  margin-bottom: var(--xs) !important;\n}\n.my-s {\n  margin-top: var(--s) !important;\n  margin-bottom: var(--s) !important;\n}\n.my-m {\n  margin-top: var(--m) !important;\n  margin-bottom: var(--m) !important;\n}\n.my-l {\n  margin-top: var(--l) !important;\n  margin-bottom: var(--l) !important;\n}\n.my-xl {\n  margin-top: var(--xl) !important;\n  margin-bottom: var(--xl) !important;\n}\n\n.pointer {\n  cursor: pointer !important;\n}\n\n.no-scroll {\n  overflow: hidden !important;\n}\n\n.draghelper {\n  box-sizing: border-box;\n  list-style-type: none;\n}\n\n.offset-drag-helper {\n  transition:\n    margin linear 200ms,\n    padding linear 200ms;\n}\n\nbody.dragging.ltr .offset-drag-helper {\n  margin: -50px 0 0 -50px;\n  padding: 60px 0 0 60px;\n}\n\nbody.dragging.rtl .offset-drag-helper {\n  margin: -50px -50px 0 0;\n  padding: 60px 60px 0 0;\n}\n\nimg {\n  max-width: 100%;\n}\n\n.text,\ntable.editable textarea {\n  body.rtl .ltr & {\n    text-align: left !important;\n    direction: ltr !important;\n  }\n\n  body.ltr .rtl & {\n    text-align: right !important;\n    direction: rtl !important;\n  }\n}\n\n/* icons */\n.icon:before,\n.menu ul.padded li a.sel:before,\n.menu ul.padded li .menu-item.sel:before,\n.menu ul.padded li .menu-option.sel:before,\n.menu .flex.padded.sel:before,\n.texticon:before,\n#help:before,\n.secure:before,\n.insecure:before,\n.go:after,\n.required:after,\n.preview-btn:before,\n.view-btn:before,\n.action-btn:before,\n[data-icon]:before,\n[data-icon-after]:after {\n  @include icon;\n}\n\n.badge-icon {\n  position: relative;\n  top: -1px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 1rem;\n  height: 1rem;\n  box-sizing: border-box;\n  border: 1px solid var(--indicator-border-color);\n  border-radius: var(--small-border-radius);\n  color: var(--indicator-icon-color);\n  font-size: 9px;\n}\n\n.secure:before,\n.insecure:before {\n  margin-top: -3px;\n  font-size: 14px;\n}\n\n[data-icon]:before {\n  content: attr(data-icon);\n}\n\n[data-icon-after]:after {\n  content: attr(data-icon-after);\n}\n\n[data-icon-size='large'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 20px;\n  }\n}\n\n[data-icon-size='small'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 14px;\n  }\n}\n\n[data-icon-size='puny'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 12px;\n  }\n}\n\nbody.rtl [data-icon='list']:before,\nbody.rtl [data-icon-after='list']:after {\n  content: 'listrtl';\n}\n\nbody.rtl [data-icon='structure']:before,\nbody.rtl [data-icon-after='structure']:after {\n  content: 'structurertl';\n}\n\n.icon.secure:before {\n  content: 'secure';\n}\n\n.icon.insecure:before {\n  content: 'insecure';\n}\n\n.icon.add:before {\n  content: 'plus';\n}\n\n.icon.edit:before {\n  content: 'edit';\n}\n\n.icon.settings:before {\n  content: 'settings';\n}\n\n.icon.search:before {\n  content: 'search';\n}\n\n.icon.expand:before {\n  content: 'expand';\n}\n\n.icon.collapse:before {\n  content: 'collapse';\n}\n\n.help:before {\n  content: 'help';\n  color: var(--pink-400);\n}\n\n.preview-btn,\n.view-btn {\n  &:before {\n    @include margin-right(var(--xs));\n  }\n}\n\n.preview-btn:before {\n  margin-top: -2px;\n  content: 'view';\n}\n\n.view-btn:before {\n  body.ltr & {\n    content: 'share';\n  }\n  body.rtl & {\n    content: 'shareleft';\n  }\n}\n\n.action-btn:before {\n  content: 'ellipsis';\n}\n\n/* headings */\nh1,\n.h1 {\n  margin-bottom: 24px;\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh2,\n.h2 {\n  margin: 14px 0;\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh3,\n.h3 {\n  margin: 14px 0;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh4,\n.h4 {\n  margin: 14px 0;\n  font-weight: bold;\n  line-height: 1.2;\n  color: var(--medium-text-color);\n}\n\nh5,\n.h5 {\n  margin: 14px 0 3px;\n  line-height: 1.2;\n  color: var(--medium-text-color);\n}\n\nh6,\n.h6 {\n  @include h6-styles;\n}\n\nh1[data-icon]:before {\n  @include margin(-8px, 10px, 0, 0);\n}\n\nh2[data-icon]:before {\n  @include margin(-4px, 6px, 0, 0);\n  font-size: 19px;\n}\n\n/* horizontal rule */\nhr {\n  margin: 24px 0;\n  border: none;\n  border-top: 1px solid var(--hairline-color);\n  height: 0;\n  color: transparent;\n}\n\n.pane hr {\n  margin: 24px -24px;\n}\n\n/* paragraphs */\np {\n  margin: 1em 0;\n}\n\nh5 + p {\n  margin-top: 0;\n}\n\nsup {\n  vertical-align: super;\n  font-size: smaller;\n}\n\nsub {\n  vertical-align: sub;\n  font-size: smaller;\n}\n\n.indent {\n  @include margin-left(14px);\n}\n\n/* lists */\n.bullets {\n  @include padding-left(40px);\n  list-style-type: square;\n}\n\nol {\n  @include padding-left(40px);\n  list-style-type: decimal;\n}\n\n/* code */\ncode,\n.code {\n  @include fixed-width-font;\n\n  &.smalltext {\n    font-size: 0.8em !important;\n  }\n}\n\n.code {\n  input,\n  textarea {\n    @include fixed-width-font;\n    font-size: 1em !important;\n  }\n}\n\npre code {\n  display: block;\n  overflow-x: auto;\n}\n\n/* links */\na {\n  color: var(--link-color);\n  cursor: pointer;\n\n  &[aria-current] {\n    cursor: default;\n  }\n\n  body.underline-links &,\n  &:hover {\n    text-decoration: underline;\n  }\n\n  .cp-icon svg {\n    @include svg-mask(var(--icon-color, var(--link-color)));\n  }\n}\n\na:not([href]) {\n  color: inherit;\n  cursor: inherit;\n\n  body.underline-links &,\n  &:hover {\n    text-decoration: none;\n  }\n}\n\na.sel,\nli.sel > a {\n  cursor: default !important;\n  text-decoration: none;\n}\n\n.go:after {\n  font-size: 11px;\n  margin-top: -1px;\n  @include padding-left(4px);\n  color: var(--link-color);\n  opacity: 0.9;\n  body.ltr & {\n    content: 'circlerarr';\n  }\n  body.rtl & {\n    content: 'circlelarr';\n  }\n}\n\nbutton {\n  cursor: pointer;\n}\n\n/* status icons */\n.checkmark-icon,\n.alert-icon {\n  padding: 5px;\n  margin-bottom: 0 !important;\n  line-height: 10px;\n  border-radius: 20px;\n  cursor: pointer;\n\n  &:before {\n    @include icon;\n  }\n}\n\n.checkmark-icon {\n  p & {\n    display: inline-block;\n  }\n\n  background-color: var(--gray-200);\n\n  &:before {\n    content: 'check';\n    color: var(--success-color);\n  }\n}\n\n.alert-icon {\n  background-color: var(--gray-200);\n\n  &:before {\n    content: 'alert';\n    color: var(--error-color);\n  }\n}\n\n.revision-status-hud {\n  max-width: 400px;\n\n  .http-error {\n    border-radius: var(--medium-border-radius);\n    border: 1px solid var(--hairline-color);\n    color: var(--light-text-color);\n    background-color: var(--gray-050);\n    padding: 7px 14px;\n  }\n}\n\n.draft-notice {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  justify-content: center;\n  gap: var(--s);\n  color: var(--blue-800);\n\n  #content-notice & {\n    display: inline-flex;\n    justify-content: flex-start;\n  }\n\n  .so-notice > & {\n    @include margin(-5px, 0, -5px, calc(var(--xl) * -1));\n    @include padding(5px, 0, 5px, var(--xl));\n    @include border-bottom-left-radius(var(--large-border-radius));\n\n    body.ltr & {\n      background-image: linear-gradient(\n        to bottom right,\n        transparentize($blue600, 0.8),\n        transparentize($blue600, 1) 50%\n      );\n    }\n    body.rtl & {\n      background-image: linear-gradient(\n        to left,\n        transparentize($blue600, 0.8),\n        transparentize($blue600, 1)\n      );\n    }\n  }\n\n  p {\n    flex: 1;\n    margin: 0;\n  }\n\n  .draft-icon {\n    position: relative;\n    flex-shrink: 0;\n    width: 34px;\n    height: 34px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    border-radius: 100%;\n    border: 2px solid transparentize($blue800, 0.8);\n    box-sizing: border-box;\n    box-shadow: 0 1px 1px 1px var(--white);\n\n    &:before {\n      position: relative;\n      left: 1px;\n      color: var(--blue-800) !important;\n      font-size: 18px;\n    }\n\n    &:after {\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: -2px;\n      left: -2px;\n      right: -2px;\n      bottom: -2px;\n      border-radius: 100%;\n      box-shadow: inset 0 2px 0 transparentize($blue900, 0.8);\n    }\n  }\n\n  .discard-changes-btn {\n    @include margin-left(var(--xs));\n    background-color: transparent !important;\n    color: var(--blue-800) !important;\n    border: 2px solid var(--blue-600);\n\n    &:hover,\n    &:focus {\n      border-color: darken($blue600, 5%);\n    }\n\n    &:active {\n      border-color: darken($blue600, 10%);\n    }\n  }\n}\n\n.revision-notice {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  justify-content: center;\n  gap: var(--s);\n  color: var(--gray-600);\n\n  #content-notice & {\n    display: inline-flex;\n    justify-content: flex-start;\n  }\n\n  p {\n    flex: 1;\n    margin: 0;\n  }\n\n  .revision-icon {\n    position: relative;\n    flex-shrink: 0;\n    width: 34px;\n    height: 34px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    border-radius: 100%;\n    border: 2px solid transparentize($grey800, 0.8);\n    box-sizing: border-box;\n    box-shadow: 0 1px 1px 1px var(--white);\n\n    &:before {\n      position: relative;\n      left: 1px;\n      color: var(--grey-800) !important;\n      font-size: 18px;\n    }\n\n    &:after {\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: -2px;\n      left: -2px;\n      right: -2px;\n      bottom: -2px;\n      border-radius: 100%;\n      box-shadow: inset 0 2px 0 transparentize($blue900, 0.8);\n    }\n  }\n}\n\n/* toggles */\nbutton.toggle {\n  appearance: none;\n  color: inherit;\n  background: none;\n  border: none;\n  padding: 0;\n}\n\n.toggle:before,\na.fieldtoggle:before {\n  @include angle(right);\n  transition: transform linear 100ms;\n}\n\n.toggle.expanded:before,\na.fieldtoggle.expanded:before,\n.sidebar nav li.expanded > .toggle:before,\n.structure li:not(.collapsed) > .row > .toggle:before {\n  transform: rotate(45deg) !important;\n}\n\na.fieldtoggle {\n  display: block;\n  position: relative;\n  margin: 14px 0;\n  @include padding-left(12px);\n  color: var(--text-color);\n  text-decoration: none;\n}\n\na.fieldtoggle:before {\n  display: block;\n  position: absolute;\n  top: 7px;\n  @include left(-1px);\n}\n\n/* emphasis */\nem,\ni {\n  font-style: italic;\n}\nul.errors em {\n  font-style: normal;\n}\n\nstrong,\nb,\ni em {\n  font-weight: bold;\n}\n\n/* readable blocks */\n.readable {\n  @include readable;\n}\n\n/* text styles */\n.leftalign {\n  @include alignleft;\n}\n\n.topalign {\n  vertical-align: top;\n}\n\n.rightalign {\n  @include alignright;\n}\n\n.centeralign {\n  text-align: center !important;\n}\n\n.nowrap {\n  white-space: nowrap;\n}\n\n.break-word {\n  word-wrap: break-word;\n}\n\n.light {\n  color: var(--medium-text-color) !important;\n  font-weight: normal;\n}\n\n.extralight {\n  color: var(--light-text-color) !important;\n}\n\n.smalltext {\n  font-size: 12px;\n  line-height: 1.2;\n}\n\n.largetext {\n  font-size: 16px;\n  line-height: 1.2;\n}\n\n.zilch {\n  padding: 100px 0;\n  text-align: center;\n  font-size: 20px;\n  line-height: 24px;\n  color: var(--light-text-color);\n\n  &.small {\n    padding: 24px 0;\n    font-size: 16px;\n  }\n}\n\ninput.checkbox + label.smalltext {\n  padding-top: 2px;\n}\n\n.required:after {\n  content: 'asterisk';\n  @include margin(-2px, 0, 0, 5px);\n  font-size: 12px;\n  color: var(--rose-500);\n}\n\n.scrollpane {\n  overflow: auto;\n}\n\n.left {\n  @include floatleft;\n}\n\n.right {\n  @include floatright;\n}\n\nth,\ntd {\n  @include alignleft;\n  vertical-align: middle;\n}\n\nbody.ltr table[dir='rtl'] {\n  th,\n  td {\n    text-align: right;\n  }\n}\nbody.rtl table[dir='ltr'] {\n  th,\n  td {\n    text-align: left;\n  }\n}\n\nth.right,\ntd.right {\n  float: none;\n  @include alignright;\n}\n\n.clear {\n  display: block;\n  clear: both;\n  height: 0;\n}\n\n.fullwidth {\n  width: 100%;\n}\n\n.token {\n  @include token-styles;\n}\n\n.token[data-name='*'] {\n  position: relative;\n  width: 10px;\n}\n\n.token[data-name='*'] span {\n  opacity: 0;\n}\n\n.token[data-name='*']:before {\n  @include icon;\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  font-size: 9px;\n  line-height: 17px;\n  content: 'asterisk';\n  text-indent: 0;\n}\n\n.token:focus {\n  @include active-token-styles;\n}\n\n// Override .token for Prism\n.highlight {\n  .token {\n    display: inline;\n    border: none;\n    border-radius: 0;\n    padding: 0;\n    font-size: inherit;\n    line-height: inherit;\n    text-shadow: none;\n    background: transparent;\n    box-shadow: none;\n  }\n}\n\n.pane.highlight {\n  pre[class*='language-'] {\n    overflow: visible;\n\n    & > code.diff-highlight .token:not(.prefix) {\n      margin: 0 -24px;\n      padding: 0 24px;\n    }\n  }\n}\n\n.success {\n  color: var(--success-color) !important;\n}\n\n.notice,\n.warning {\n  &.with-icon,\n  .icon {\n    &:before {\n      @include margin(-2px, 2px, 0, 0);\n      @include icon;\n      width: 1em;\n    }\n  }\n\n  &.has-icon {\n    display: flex;\n    flex-wrap: nowrap;\n    align-items: flex-start;\n\n    .icon {\n      flex-shrink: 1;\n    }\n  }\n}\n\n.notice {\n  color: var(--notice-color) !important;\n  a {\n    text-decoration: underline;\n  }\n\n  &.with-icon,\n  .icon {\n    &:before {\n      content: 'lightbulb';\n    }\n  }\n}\n\n.warning {\n  color: var(--warning-color) !important;\n\n  &.with-icon,\n  .icon {\n    &:before {\n      content: 'alert';\n    }\n  }\n}\n\n.error {\n  color: var(--error-color) !important;\n}\n\n.icon.move:not(.disabled) {\n  cursor: move;\n}\n\n.icon.move:before {\n  content: 'move';\n  color: var(--custom-text-color, var(--ui-control-color));\n}\n\n.icon.move:not(.disabled):hover:before {\n  color: var(--link-color);\n}\n\n.icon.delete {\n  display: inline-block;\n  line-height: inherit;\n\n  &:before {\n    content: 'remove';\n    color: var(--ui-control-color);\n  }\n\n  &:not(.disabled) {\n    cursor: pointer;\n\n    &:hover:before {\n      color: var(--disabled-color);\n    }\n\n    &:active:before {\n      color: var(--red-800);\n    }\n  }\n}\n\n.hidden {\n  display: none !important;\n}\n\n// Visually hide without hiding from screen readers\n.visually-hidden {\n  @include visually-hidden;\n}\n\n.invisible {\n  visibility: hidden;\n}\n\n.clearafter:after {\n  @include clearafter;\n}\n\n.info {\n  vertical-align: bottom;\n  display: inline-block;\n  width: 1em;\n  height: 1.375em;\n  text-align: center;\n  cursor: pointer;\n  overflow: hidden;\n\n  &:before {\n    @include icon;\n    vertical-align: baseline;\n    width: 100%;\n    line-height: 1.375;\n    color: var(--ui-control-color);\n  }\n\n  &:not(.warning) {\n    &:before {\n      content: 'info';\n    }\n    &:hover:before {\n      color: var(--link-color);\n    }\n  }\n\n  &.warning {\n    &:before {\n      content: 'alert';\n    }\n    &:hover:before {\n      color: var(--warning-color);\n    }\n  }\n}\n\n.info-hud {\n  table {\n    max-width: 280px;\n    table-layout: auto;\n  }\n\n  td {\n    word-wrap: break-word;\n    width: 100%;\n  }\n}\n\n@media (max-width: 450px) {\n  .info-hud {\n    table {\n      table-layout: fixed;\n      width: 100%;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Content\n/* ----------------------------------------*/\n\n.content {\n  position: relative;\n}\n\n.content:after {\n  @include clearafter;\n}\n\n.customize-sources-modal {\n  @include padding-left(200px);\n  overflow: visible !important;\n\n  & > .cs-sidebar {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    margin: 0;\n    padding: 10px 0;\n    border: none;\n    width: 200px;\n    height: calc(100% - 44px);\n    box-sizing: border-box;\n    background-color: var(--gray-050);\n    overflow: auto;\n    box-shadow: inset -1px 0 0 var(--hairline-color);\n    @include border-top-left-radius(var(--large-border-radius));\n\n    & > .btn {\n      @include margin(10px, 0, 0, 14px);\n      display: block;\n      width: calc(100% - 28px);\n    }\n  }\n\n  &.sidebar-hidden {\n    @include padding-left(0);\n\n    & > .cs-sidebar {\n      display: none;\n    }\n  }\n\n  & > .source-settings {\n    position: relative;\n    height: calc(100% - 44px);\n    box-sizing: border-box;\n    padding: 24px;\n    overflow: auto;\n  }\n\n  & > .footer {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n  }\n}\n\n.customize-sources-item {\n  --selected-item-color: var(--white);\n  display: flex;\n  width: calc(100% - 1px);\n  box-sizing: border-box;\n  align-items: center;\n  position: relative;\n  margin-top: -1px;\n  background-color: var(--gray-100);\n  border: solid var(--hairline-color);\n  border-width: 1px 0;\n  user-select: none;\n  cursor: default;\n\n  & + .customize-sources-item {\n    &.heading {\n      margin-top: 10px;\n    }\n\n    &:not(.heading) {\n      border-top: 1px solid var(--hairline-color);\n    }\n  }\n\n  &.sel {\n    @include light-focus-ring;\n    --ui-control-color: var(--selected-item-color);\n    background-color: var(--dark-sel-color);\n    color: var(--selected-item-color);\n    z-index: 1;\n  }\n\n  .label {\n    flex: 1;\n  }\n\n  &.heading {\n    .label {\n      text-transform: uppercase;\n      color: var(--light-text-color);\n      font-size: 12px;\n      font-weight: bold;\n    }\n\n    &.sel .label {\n      color: var(--selected-item-color);\n    }\n  }\n}\n\n.customize-sources-item__move {\n  position: absolute;\n  top: 50%;\n  @include right(0);\n  transform: translate(-50%, -50%);\n  justify-content: center;\n  align-items: center;\n\n  &.icon {\n    display: flex;\n    text-decoration: none;\n  }\n}\n\n.customize-sources-item__btn {\n  padding: 8px 14px;\n  @include padding-right(30px);\n  margin: 3px;\n}\n\n.checkbox-select-item {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  margin-bottom: 4px;\n\n  .move {\n    margin-top: -3px;\n    @include margin-right(10px);\n    position: relative;\n    z-index: 1;\n  }\n}\n\nul.path {\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  flex-wrap: wrap;\n\n  li {\n    display: inline-flex;\n    align-items: center;\n\n    &:not(:last-child):after {\n      @include margin(0, 5px, 0, 2px);\n      @include angle(right, var(--light-text-color), calc(1rem / 16));\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Icon lists\n/* ----------------------------------------*/\n\nul.icons {\n  margin-top: 20px;\n  display: flex;\n  flex-wrap: wrap;\n\n  li {\n    margin: 0 4px 10px 0;\n\n    a {\n      display: block;\n      position: relative;\n      padding: 60px 5px 10px;\n      width: 110px;\n      text-align: center;\n      color: var(--text-color);\n      border-radius: 4px;\n      border: 1px solid var(--white);\n\n      &:before {\n        display: block;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        font-size: 40px;\n        line-height: 60px;\n      }\n\n      .icon {\n        img,\n        svg {\n          width: 40px;\n          height: 40px;\n          position: absolute;\n          top: 12px;\n          left: calc(50% - 20px);\n        }\n\n        &.icon-mask svg {\n          @include svg-mask(var(--text-color));\n        }\n      }\n\n      &:hover {\n        text-decoration: none;\n        background-color: var(--gray-050);\n        border-color: var(--gray-100);\n\n        .icon.icon-mask svg {\n          @include svg-mask(var(--link-color));\n        }\n      }\n    }\n  }\n}\n\n@media only screen and (max-width: 380px) {\n  ul.icons li a {\n    width: 96px;\n  }\n}\n\n@media only screen and (max-width: 320px) {\n  ul.icons li a {\n    width: 75px;\n  }\n}\n\n/* ----------------------------------------\n/*  Buttons\n/* ----------------------------------------*/\n\n.toolbar {\n  position: relative;\n  margin-bottom: var(--s);\n  min-height: 34px;\n\n  &.flex,\n  .flex {\n    align-items: flex-start;\n  }\n\n  .text {\n    border-radius: var(--large-border-radius) !important;\n  }\n}\n\n.flex {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  gap: var(--s);\n\n  &.flex-gap-xs {\n    gap: var(--xs);\n  }\n  &.flex-gap-m {\n    gap: var(--m);\n  }\n  &.flex-gap-l {\n    gap: var(--l);\n  }\n  &.flex-gap-xl {\n    gap: var(--xl);\n  }\n\n  &:not(.flex-nowrap) {\n    flex-wrap: wrap;\n  }\n\n  & > * {\n    &.label {\n      white-space: nowrap;\n    }\n  }\n\n  .centeralign & {\n    justify-content: center;\n  }\n}\n\n.inline-flex {\n  display: inline-flex !important;\n  align-items: center;\n  align-content: stretch;\n  gap: var(--s);\n}\n\n.gap-xs {\n  gap: var(--xs);\n}\n\n.gap-s {\n  gap: var(--s);\n}\n\n.gap-m {\n  gap: var(--m);\n}\n\n.gap-l {\n  gap: var(--l);\n}\n\n.gap-xl {\n  gap: var(--xl);\n}\n\n.flex-grow {\n  flex: 1;\n  max-width: 100%;\n}\n\n.flex-justify {\n  justify-content: space-between;\n}\n\n.flex-justify-start {\n  justify-content: flex-start;\n}\n\n.flex-justify-end {\n  justify-content: flex-end;\n}\n\n.flex-justify-center {\n  justify-content: center;\n}\n\n.flex-start {\n  align-items: flex-start;\n}\n\n.flex-end {\n  align-items: flex-end;\n}\n\n.flex-center {\n  align-items: center;\n}\n\n.flex-stretch {\n  align-items: stretch;\n}\n\n.spacer {\n  width: 14px;\n}\n\n.buttons {\n  display: flex;\n  gap: 7px;\n  position: relative;\n  margin: 24px 0;\n  align-items: center;\n\n  .hud-footer > &,\n  .footer > & {\n    margin: 0;\n  }\n}\n\n.btn {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: var(--ui-control-border-radius);\n  padding: 7px 10px;\n  border: none;\n  text-align: center;\n  white-space: nowrap;\n  user-select: none;\n  box-sizing: border-box;\n  appearance: none;\n  color: currentColor;\n  font-size: inherit;\n  background-color: var(--ui-control-bg-color);\n\n  &:not([aria-current]) {\n    cursor: pointer;\n  }\n\n  &.chromeless {\n    background-color: transparent;\n    height: auto;\n    padding: 0;\n\n    &:hover,\n    &:active,\n    &:focus {\n      background-color: transparent;\n    }\n\n    &:hover,\n    &:active {\n      text-decoration: underline;\n    }\n  }\n\n  &.hairline,\n  &.link-btn {\n    border: 1px solid var(--medium-hairline-color);\n    background-color: transparent;\n\n    &:active,\n    &[aria-expanded='true'] {\n      background-color: var(--ui-control-static-bg-color);\n    }\n  }\n\n  &.hairline {\n    &:hover,\n    &:active,\n    &[aria-expanded='true'] {\n      border-color: var(--dark-hairline-color);\n    }\n  }\n\n  &.link-btn {\n    color: var(--link-color);\n\n    &:hover,\n    &:active,\n    &[aria-expanded='true'] {\n      border-color: var(--link-color);\n    }\n  }\n\n  &.wrap {\n    height: auto;\n    min-height: 34px;\n    white-space: initial;\n    text-align: left;\n  }\n\n  &:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not(\n      [aria-current]\n    ) {\n    &:focus,\n    &.focus,\n    &:hover {\n      --ui-control-bg-color: var(--ui-control-hover-bg-color);\n    }\n\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      --ui-control-bg-color: var(--ui-control-active-bg-color);\n    }\n  }\n\n  &[type='color'] {\n    padding: 6px !important;\n    width: 36px;\n  }\n\n  &.loading {\n    cursor: default;\n  }\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:empty,\n  &.btn-empty {\n    padding-left: 12px;\n    padding-right: 12px;\n  }\n\n  &[data-icon]:not(:empty):not(.btn-empty):before,\n  &.icon:not(:empty):not(.btn-empty):before,\n  &.menubtn:not(.action-btn)[data-icon]:empty:before,\n  &.menubtn:not(.action-btn)[data-icon].btn-empty:before,\n  &.menubtn:not(.action-btn).icon:empty:before,\n  &.menubtn:not(.action-btn).icon.btn-empty:before {\n    @include margin-right(5px);\n  }\n\n  &:not(.loading) .spinner {\n    display: none;\n  }\n\n  &.loading {\n    &:before,\n    &:after,\n    .label {\n      visibility: hidden;\n    }\n  }\n\n  div.checkbox {\n    margin-top: 2px;\n  }\n\n  [data-icon] {\n    margin-top: -3px;\n    @include margin-right(5px);\n\n    &.light:before {\n      color: var(--gray-300);\n    }\n  }\n}\n\n.disabled {\n  opacity: 0.25;\n  pointer-events: none;\n  user-select: none;\n}\n\n.noteditable {\n  cursor: not-allowed;\n\n  .element,\n  .lightswitch-container,\n  & + .colorhex {\n    cursor: not-allowed;\n  }\n}\n\n.btn,\n.spinner {\n  height: var(--ui-control-height);\n}\n\n.btn[data-icon-after]:not(:empty):not(.btn-empty):after,\n.menu-toggle:not(:empty):not(.btn-empty):after,\n.menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,\n.menubtn:not(.action-btn).icon:after {\n  @include margin-left(6px);\n}\n\n.btn[data-icon]:before,\n.btn[data-icon-after]:after,\n.btn.icon:before {\n  position: relative;\n}\n\n.btn.small[data-icon]:before,\n.btn.small[data-icon-after]:after,\n.btn.icon.small:before {\n  font-size: 10px;\n}\n\n/* button groups */\n.btngroup {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  white-space: nowrap;\n  align-items: center;\n  border-radius: var(--large-border-radius);\n\n  &.fullwidth .btn {\n    flex: 1;\n  }\n\n  &.disabled .btn {\n    cursor: default;\n  }\n\n  .btn {\n    &:focus {\n      z-index: 1;\n    }\n\n    &:not(.dashed):not(:last-child):not(.btngroup-btn-last) {\n      @include margin-right(1px);\n    }\n\n    body.ltr & {\n      &:not(:first-child):not(.btngroup-btn-first) {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0;\n      }\n\n      &:not(:last-child):not(.btngroup-btn-last) {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n    }\n\n    body.rtl & {\n      &:not(:first-child):not(.btngroup-btn-first) {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n\n      &:not(:last-child):not(.btngroup-btn-last) {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0;\n      }\n    }\n  }\n}\n\n.btngroup--exclusive {\n  .btn[aria-pressed='true']:not(.disabled):not(.loading):not(.dashed):not(\n      [aria-disabled]\n    ) {\n    background-color: var(--gray-500);\n    color: var(--white);\n  }\n}\n\n.copytext {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  white-space: nowrap;\n  align-items: center;\n\n  body.ltr & {\n    .text {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n      min-width: 0;\n    }\n    .btn {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n  }\n\n  body.rtl & {\n    .text {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n    .btn {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n  }\n}\n\n.copytextbtn {\n  display: inline-flex;\n  flex-wrap: nowrap;\n  align-items: center;\n  border: 1px solid var(--hairline-color);\n  border-radius: var(--small-border-radius);\n  padding: 0 9px;\n  cursor: pointer;\n  color: var(--medium-text-color);\n\n  .copytextbtn__icon {\n    padding: 0;\n    width: 13px;\n    background: none;\n    margin-top: -3px;\n    @include margin-left(5px);\n    color: var(--light-text-color);\n  }\n\n  &:hover,\n  &:focus {\n    border-color: var(--medium-hairline-color);\n    color: var(--text-color);\n\n    .copytextbtn__value {\n      color: var(--text-color);\n    }\n  }\n\n  &.small {\n    padding: 0 5px;\n\n    .copytextbtn__value {\n      font-size: calc(11rem / 16);\n    }\n  }\n}\n\n/* menu buttons */\n.menu-toggle,\n.menubtn:not(.action-btn) {\n  display: inline-flex;\n  align-items: center;\n  user-select: none;\n\n  &:after {\n    @include angle;\n    position: relative;\n  }\n\n  &.btn {\n    &:after {\n      top: -1px;\n    }\n\n    &:not(.disabled):not(.inactive) {\n      &:active,\n      &.active {\n        &:after {\n          border-color: var(--ui-control-active-color);\n        }\n      }\n    }\n\n    &.submit {\n      &:after {\n        border-color: var(--white) !important;\n        opacity: 0.8;\n      }\n\n      &:not(.disabled):not(.inactive) {\n        &:hover,\n        &.hover,\n        &:active,\n        &.active {\n          &:after {\n            opacity: 1;\n          }\n        }\n      }\n    }\n  }\n\n  &:not(.btn):not(.icon) {\n    height: 17px;\n    &:after {\n      top: -2px;\n      border-color: var(--link-color);\n    }\n  }\n\n  &:empty,\n  &.btn-empty {\n    @include padding-left(8px);\n    @include padding-right(8px);\n  }\n}\n\n@keyframes rotator {\n  0% {\n    -webkit-transform: rotate(0);\n    transform: rotate(0);\n  }\n\n  to {\n    -webkit-transform: rotate(1turn);\n    transform: rotate(1turn);\n  }\n}\n\n/* spinner */\n.spinner {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size, 24px);\n  height: var(--size, 34px);\n\n  &:before {\n    display: block;\n    content: '';\n    font-size: 0;\n    animation: rotator 0.7s linear infinite;\n    box-sizing: border-box;\n    width: var(--size, 20px);\n    height: var(--size, 20px);\n    object-fit: scale-down;\n    border-radius: 50%;\n    border: 2px solid transparent;\n    border-right-color: currentColor;\n    border-bottom-color: currentColor;\n    opacity: 0.8;\n  }\n\n  &.small {\n    --size: 12px;\n  }\n\n  &.big {\n    --size: 48px;\n  }\n\n  &.spinner-absolute {\n    position: absolute;\n    width: var(--size, 20px);\n    height: var(--size, 20px);\n    top: var(--elements-busy-top-position);\n    left: calc(50% - var(--size, 20px) / 2);\n  }\n}\n\n.btn + .spinner {\n  @include margin-left(7px);\n}\n\n.buttons .btn + .spinner,\n.buttons .btngroup + .spinner {\n  @include margin-left(0);\n}\n\n.buttons.right .btn + .spinner {\n  @include margin-right(var(--neg-padding));\n}\n\n/* small buttons */\n.btngroup.small .btn,\n.btn.small {\n  padding: 0 var(--s) !important;\n  font-size: 12px;\n  line-height: 22px;\n}\n\n.btngroup.small,\n.btngroup.small input.btn,\n.btn.small,\n.btn.small + .spinner {\n  height: 22px;\n}\n\n/* big buttons */\n.btngroup.big .btn,\n.btn.big {\n  padding: 0 14px;\n  font-size: 14px;\n  line-height: 36px;\n}\n\n.btn.big[data-icon]:before,\n.preview-btn:before,\n.view-btn:before {\n  @include margin-left(-2px);\n}\n\n.btngroup.big,\n.btngroup.big input.btn,\n.btn.big,\n.btn.big + .spinner {\n  height: 36px;\n}\n\n/* huge buttons */\n.btn.huge {\n  padding: var(--l);\n  line-height: 48px;\n  height: 48px;\n}\n\n/* special buttons */\n.btn {\n  &.submit,\n  &.secondary {\n    color: var(--white) !important;\n    --ui-control-active-color: var(--white);\n    @include light-on-dark-text;\n  }\n\n  &.submit {\n    background-color: var(--primary-color) !important;\n\n    &:not(.disabled):not(.inactive):not(.loading) {\n      &:hover,\n      &.hover,\n      &:focus {\n        background-color: darken($primaryColor, 5%) !important;\n      }\n\n      &:active,\n      &.active,\n      &[aria-expanded='true'] {\n        background-color: darken($primaryColor, 10%) !important;\n      }\n    }\n  }\n\n  &.caution {\n    background-color: var(--red-050) !important;\n    color: var(--error-color);\n\n    &:hover,\n    &.hover,\n    &:focus {\n      background-color: darken($red050, 5%) !important;\n    }\n\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      background-color: var(--red-100) !important;\n    }\n  }\n}\n\n.secondary-buttons .btn.submit,\n.btn.secondary {\n  background-color: var(--secondary-color) !important;\n}\n\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):hover,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus {\n  background-color: darken($secondaryColor, 5%) !important;\n}\n\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):active,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading).active,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded='true'],\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,\n.btn.secondary:not(.disabled):not(.inactive):not(\n    .loading\n  )[aria-expanded='true'] {\n  background-color: darken($secondaryColor, 10%) !important;\n}\n\ndiv.btn.submit {\n  position: relative;\n  overflow: hidden;\n}\n\ndiv.btn.submit input {\n  position: absolute;\n  left: 100%;\n}\n\n/* dashed buttons */\n.btn.dashed {\n  border: 1px dashed var(--medium-hairline-color);\n  background-color: transparent;\n\n  .btngroup &:not(:last-child):not(.btngroup-btn-last) {\n    @include border-right(1px solid transparent);\n    @include margin-right(-1px);\n  }\n\n  &:focus {\n    background-color: transparentize($grey200, 0.9);\n    border-color: transparent;\n\n    .reduce-focus-visibility &:not(:focus-visible) {\n      border: 1px dashed var(--medium-hairline-color);\n    }\n  }\n\n  &:not(.disabled) {\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      background-color: transparentize($grey200, 0.75);\n    }\n  }\n}\n\n/* chevron buttons */\n.chevron-btns {\n  display: flex;\n  justify-content: flex-start;\n\n  .btn {\n    position: relative;\n    padding: 0;\n    border-radius: 0;\n    background-color: transparent;\n\n    &.current-step,\n    &.active-drop-target {\n      color: var(--white);\n      --text-color: var(--white);\n      --ui-control-color: var(--white);\n      --ui-control-bg-color: var(--gray-500);\n      --ui-control-hover-bg-color: #{darken($grey500, 5%)};\n      --ui-control-active-bg-color: #{darken($grey500, 10%)};\n    }\n\n    &.current-step {\n      @include light-on-dark-text;\n      @include light-focus-ring;\n    }\n\n    &:focus {\n      z-index: 1;\n      box-shadow: none;\n\n      .label {\n        z-index: 1;\n        box-shadow: var(--focus-ring);\n      }\n\n      .reduce-focus-visibility &:not(:focus-visible) .label {\n        box-shadow: none;\n      }\n    }\n\n    .reduce-focus-visibility &:focus-visible .label {\n      box-shadow: var(--focus-ring);\n    }\n\n    &:not(.has-action-menu) {\n      @include padding-right(calc(var(--ui-control-height) / 2));\n      @include margin-right(2.8px);\n\n      &:not(.current-step[data-disclosure-trigger]) .btn-body {\n        @include padding-right(5px);\n      }\n    }\n\n    &.current-step[data-disclosure-trigger] .btn-body {\n      @include padding-left(8px);\n\n      .label {\n        padding: 3px;\n\n        &:after {\n          @include angle;\n          position: relative;\n        }\n      }\n    }\n\n    .btn-body {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      height: var(--ui-control-height);\n      background-color: var(--ui-control-bg-color);\n\n      [data-icon] {\n        --ui-control-height: calc((13rem / 16)); // 1rem == 16px\n        text-align: center;\n        @include margin-right(0);\n      }\n    }\n\n    .label {\n      display: inline-flex;\n      align-items: center;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    &.has-action-menu .btn-body {\n      @include padding-right(1px);\n      @include margin-right(0);\n    }\n\n    .chevron-right,\n    .chevron-left {\n      position: absolute;\n      top: 0;\n      height: 100%;\n      width: calc(var(--ui-control-height) / 2);\n    }\n\n    .chevron-left {\n      @include left(0);\n      border-top: calc(var(--ui-control-height) / 2) solid\n        var(--ui-control-bg-color);\n      @include border-left(\n        calc(var(--ui-control-height) / 2) solid transparent\n      );\n\n      &:after {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        bottom: 0;\n        @include right(0);\n        border-bottom: calc(var(--ui-control-height) / 2) solid\n          var(--ui-control-bg-color);\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n    }\n\n    .chevron-right {\n      @include right(0);\n      border-top: calc(var(--ui-control-height) / 2) solid transparent;\n      border-bottom: calc(var(--ui-control-height) / 2) solid transparent;\n      @include border-left(\n        calc(var(--ui-control-height) / 2) solid var(--ui-control-bg-color)\n      );\n    }\n  }\n\n  ol {\n    position: relative;\n    @include padding-left(0);\n    list-style-type: none;\n    display: flex;\n\n    li {\n      &.first-step .btn {\n        .btn-body {\n          @include padding-left(14px);\n          @include border-radius(\n            var(--ui-control-border-radius),\n            0,\n            0,\n            var(--ui-control-border-radius)\n          );\n        }\n\n        .chevron-left {\n          display: none;\n        }\n      }\n\n      &:not(.first-step) .btn {\n        @include margin-left(calc(-1 * (var(--ui-control-height) / 2)));\n        @include padding-left(calc(var(--ui-control-height) / 2));\n\n        .btn-body {\n          @include padding-left(7px);\n        }\n      }\n    }\n  }\n}\n\n/* color inputs */\n.color-input-container {\n  position: relative;\n\n  .color-hex-indicator {\n    position: absolute;\n    top: 0;\n    @include left(7px);\n    width: 1em;\n    line-height: 34px;\n    text-align: center;\n    user-select: none;\n  }\n}\n\n.color-input {\n  @include fixed-width-font;\n  @include padding-left(calc(7px + 1em));\n}\n\n.color {\n  display: inline-block;\n  position: relative;\n  vertical-align: middle;\n  width: 34px;\n  height: 34px;\n  border-radius: 17px;\n  padding: 0;\n\n  &:not(.static):not(.noteditable) {\n    cursor: pointer;\n  }\n\n  &:not(.small) {\n    @include checkered-bg(17px);\n  }\n\n  &.small {\n    width: 16px;\n    height: 16px;\n    @include checkered-bg(8px);\n  }\n\n  .color-preview {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    width: 100%;\n    height: 100%;\n    border-radius: 17px;\n    box-shadow: inset 0 0 0 1px transparentize($black, 0.85);\n\n    &:focus-within {\n      @include input-focused-styles;\n    }\n\n    & > .color-preview-input {\n      position: absolute;\n      @include left(0);\n      width: 100%;\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      border: none;\n      opacity: 0;\n    }\n  }\n}\n\n.colorhex {\n  display: inline-block;\n  margin-left: 5px;\n  vertical-align: middle;\n  color: var(--medium-text-color);\n}\n\n/* lightswitch */\n.lightswitch-outer-container {\n  display: flex;\n\n  .lightswitch-inner-container {\n    border: 1px solid var(--hairline-color);\n    border-radius: var(--small-border-radius);\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    padding-left: 7px;\n    padding-right: 7px;\n\n    span {\n      flex-grow: 1;\n      padding: 7px 0;\n      color: var(--medium-text-color);\n      cursor: default;\n      overflow: auto;\n      overflow-wrap: break-word;\n      hyphens: auto;\n\n      &[data-toggle='on'] {\n        @include margin-left(7px);\n      }\n\n      &[data-toggle='off'] {\n        @include margin-right(7px);\n        text-align: right;\n\n        body.rtl & {\n          text-align: left;\n        }\n      }\n    }\n  }\n}\n\n.lightswitch {\n  display: block;\n  position: relative;\n  border: none !important;\n  overflow: hidden;\n  cursor: pointer;\n  user-select: none;\n  background-image: linear-gradient(to right, var(--gray-400), var(--gray-400));\n  transition: background-image linear 100ms;\n\n  &.on {\n    background-image: linear-gradient(\n      to right,\n      var(--enabled-color),\n      var(--enabled-color)\n    );\n  }\n\n  &.indeterminate {\n    background-image: linear-gradient(\n      to right,\n      var(--enabled-color),\n      var(--gray-300)\n    );\n  }\n\n  .lightswitch-container {\n    position: relative;\n    height: 100%;\n\n    .handle {\n      position: absolute;\n      top: 1px;\n      background-color: var(--white);\n    }\n  }\n\n  &:not(.small) {\n    border-radius: 11px;\n    min-width: 34px;\n    width: 34px;\n    height: 22px;\n\n    .lightswitch-container {\n      @include margin-left(-12px);\n      width: 46px;\n\n      .handle {\n        border-radius: 10px;\n        width: 20px;\n        height: 20px;\n        left: calc(50% - 10px);\n      }\n    }\n  }\n\n  &.small {\n    border-radius: 9px;\n    width: 28px;\n    height: 18px;\n\n    .lightswitch-container {\n      @include margin-left(-10px);\n      width: 38px;\n\n      .handle {\n        border-radius: 8px;\n        width: 16px;\n        height: 16px;\n        left: calc(50% - 8px);\n      }\n    }\n  }\n\n  table & {\n    display: inline-block;\n    margin-bottom: -5px;\n  }\n\n  &.on {\n    .lightswitch-container {\n      @include margin-left(0);\n    }\n  }\n\n  &.indeterminate {\n    &:not(.small) {\n      .lightswitch-container {\n        @include margin-left(0.5 * -12px);\n      }\n    }\n    &.small {\n      .lightswitch-container {\n        @include margin-left(0.5 * -10px);\n      }\n    }\n  }\n}\n\n/* pagination */\n.pagination {\n  table.data + & {\n    margin-top: 24px;\n  }\n\n  .page-link {\n    width: calc(30rem / 16);\n    height: calc(30rem / 16);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: var(--medium-border-radius);\n\n    &:after {\n      position: relative;\n      transition: border-color linear 100ms;\n    }\n\n    &.prev-page:after {\n      @include angle(left, var(--light-text-color));\n      @include right(-1px);\n    }\n\n    &.next-page:after {\n      @include angle(right, var(--light-text-color));\n      @include left(-1px);\n    }\n\n    &:not(.disabled) {\n      transition: box-shadow linear 100ms;\n      box-shadow: inset 0 0 0 1px var(--hairline-color);\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: none;\n        box-shadow: inset 0 0 0 1px var(--link-color);\n\n        &:after {\n          border-color: var(--link-color);\n        }\n      }\n\n      @include focus-styles {\n        box-shadow:\n          inset 0 0 0 1px var(--hairline-color),\n          var(--focus-ring);\n      }\n    }\n\n    &.disabled {\n      opacity: 1;\n      &:after {\n        border-color: var(--hairline-color);\n      }\n    }\n  }\n}\n\n/* action buttons */\n.actions {\n  @include floatright;\n}\n\n.actions > li {\n  @include floatleft;\n}\n\n.actions > li + li {\n  @include margin-left(10px);\n}\n\nh1 + .actions {\n  margin-top: -100px;\n}\n\nh2 + .actions {\n  margin-top: -54px;\n}\n\n/* ----------------------------------------\n/*  Tables\n/* ----------------------------------------*/\n\n.tablepane {\n  --pane-y-padding-default: calc(var(--xl) - 2px);\n  --pane-x-padding-default: calc(var(--padding) - 2px);\n  margin: calc(var(--pane-padding, var(--pane-y-padding-default)) * -1)\n    calc(var(--pane-padding, var(--pane-x-padding-default)) * -1)\n    calc(\n      var(--pane-padding, var(--padding)) * -1 + var(--pane-padding, var(--m))\n    );\n  padding: 0 !important;\n  overscroll-behavior: contain;\n  overflow-x: auto;\n\n  table.data {\n    th,\n    td {\n      &:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox) {\n        @include padding-left(\n          var(--pane-padding, var(--pane-x-padding-default))\n        );\n      }\n\n      &:last-child {\n        @include padding-right(\n          var(--pane-padding, var(--pane-x-padding-default))\n        );\n      }\n    }\n  }\n}\n\ntable {\n  &.fixed-layout {\n    table-layout: fixed;\n  }\n\n  th.thin,\n  td.thin {\n    width: 0.01% !important;\n    white-space: nowrap;\n  }\n\n  thead {\n    th {\n      font-weight: bold;\n      @include alignleft;\n      vertical-align: top;\n    }\n  }\n\n  // plain tables\n  &:not(.data) {\n    th,\n    td {\n      padding-top: 7px;\n      padding-bottom: 7px;\n\n      &:not(:first-child) {\n        padding-left: 12px;\n      }\n      &:not(:last-child) {\n        padding-right: 12px;\n      }\n    }\n  }\n\n  // data tables\n  &.data {\n    th,\n    td {\n      position: relative;\n      padding-left: 12px;\n      padding-right: 12px;\n      box-sizing: border-box;\n\n      &.checkbox-cell,\n      &.vuetable-th-slot-checkbox {\n        width: var(--checkbox-size) !important;\n        min-width: var(--checkbox-size);\n        box-sizing: content-box;\n        position: relative;\n\n        input.checkbox + label,\n        div.checkbox {\n          position: absolute;\n          top: calc(50% - 8rem / 16);\n        }\n      }\n    }\n\n    th {\n      font-weight: bold;\n    }\n\n    thead:first-child,\n    tbody:first-child,\n    tfoot:first-child,\n    caption + thead,\n    caption + tbody,\n    caption + tfoot {\n      tr:first-child {\n        th,\n        td {\n          &:first-child {\n            @include border-top-left-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n            @include border-bottom-left-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n          }\n          &:last-child {\n            @include border-top-right-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n            @include border-bottom-right-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n          }\n        }\n      }\n    }\n\n    thead {\n      th,\n      td {\n        width: auto;\n        background-color: var(--gray-050);\n        cursor: default;\n      }\n\n      th:not(.orderable),\n      td {\n        padding-top: var(--s);\n        padding-bottom: var(--s);\n      }\n\n      th {\n        white-space: nowrap;\n        vertical-align: middle;\n\n        &.orderable {\n          position: relative;\n          padding: 0 !important;\n\n          body:not(.dragging) &:not(.ordered):hover {\n            background-color: var(--gray-100);\n          }\n\n          &.ordered {\n            background-color: var(--light-sel-color);\n\n            &:not(.loading) {\n              button:after {\n                @include angle(up);\n                position: absolute;\n                @include right(var(--m));\n                top: calc(50% - 3px);\n              }\n\n              &.desc button:after {\n                transform: rotate(45deg);\n              }\n            }\n          }\n\n          button {\n            position: relative;\n            @include padding-right(35px);\n            font: inherit;\n            width: 100%;\n            padding: var(--pane-padding, var(--m)) var(--m);\n            @include alignleft;\n\n            &:focus {\n              z-index: 1;\n            }\n          }\n        }\n\n        &:not(.loading) {\n          .spinner {\n            display: none;\n          }\n        }\n\n        .spinner {\n          position: absolute;\n          top: calc(50% - 6px);\n          @include right(8px);\n          --size: 12px;\n        }\n      }\n    }\n\n    tbody {\n      tr {\n        --hover-bg-color: var(--gray-050);\n        --selected-bg-color: var(--dark-sel-color);\n\n        &:not(.disabled) {\n          &:hover {\n            th,\n            td {\n              background-color: var(--hover-bg-color);\n            }\n          }\n\n          &:focus {\n            position: relative;\n            z-index: 1;\n          }\n\n          &.sel,\n          &.active-drop-target {\n            --text-color: var(--white);\n            --medium-dark-text-color: var(--white);\n            --medium-text-color: var(--white);\n            --light-text-color: var(--white);\n            --link-color: var(--white);\n            --ui-control-color: var(--white);\n            @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n\n            th,\n            td {\n              color: var(--white);\n              background-color: var(--selected-bg-color);\n            }\n          }\n        }\n      }\n\n      th,\n      td {\n        padding-top: 7px;\n        padding-bottom: 7px;\n        background-clip: padding-box;\n        max-width: 33vw;\n      }\n\n      td {\n        &.timestamp {\n          @include alignright;\n          vertical-align: bottom;\n          white-space: nowrap;\n          color: var(--light-text-color);\n        }\n      }\n    }\n\n    thead + tbody tr,\n    tr + tr {\n      th,\n      td {\n        border-top: 1px solid transparent;\n      }\n    }\n\n    tr.sel:not(.draggee) + tr.sel:not(.draggee) {\n      th,\n      td {\n        border-top-color: var(--gray-300);\n      }\n    }\n  }\n\n  // collapsable data tables for small screens\n  // based on Aaron Gustafson's technique: http://blog.easy-designs.net/archives/2013/02/02/responsive-tables/\n  &.collapsed {\n    width: auto;\n\n    &,\n    tbody,\n    tbody tr,\n    tbody th,\n    tbody td {\n      display: block;\n      border: none;\n      padding: 0;\n      @include alignleft;\n      width: auto !important;\n      white-space: normal;\n    }\n\n    thead {\n      display: none;\n    }\n\n    tbody {\n      tr {\n        padding: 6px 0;\n        border-bottom: 1px dotted var(--hairline-color);\n\n        &:after {\n          @include clearafter;\n        }\n      }\n\n      th,\n      td {\n        padding: 2px 0 !important;\n      }\n\n      td {\n        &:empty {\n          display: none;\n        }\n      }\n\n      [data-title] {\n        @include margin-right(0);\n\n        &:before {\n          margin-right: 5px;\n          content: attr(data-title) ':';\n          font-weight: bold;\n        }\n\n        form {\n          display: inline-block;\n        }\n      }\n    }\n  }\n}\n\n.datatablesorthelper,\n.editabletablesorthelper {\n  background-color: var(--white);\n  @include shadow;\n}\n\n.datatablesorthelper,\n.datatablesorthelper .chip,\n.datatablesorthelper a {\n  cursor: move !important;\n}\n\n.datatablesorthelper tr:first-child th,\n.datatablesorthelper tr:first-child td {\n  border-top: none !important;\n}\n\n.datatablesorthelper tr:last-child th,\n.datatablesorthelper tr:last-child td {\n  border-bottom: none !important;\n}\n\n.datatablesorthelper th .toggle {\n  display: none !important;\n}\n\n.chip,\n.card {\n  color: var(--custom-text-color, var(--text-color));\n  background-color: var(--custom-bg-color, var(--gray-050));\n}\n\n/* chips */\n.chip {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  cursor: default;\n  user-select: none;\n  font-weight: normal;\n  padding: 0 var(--s);\n  max-width: 100%;\n  gap: var(--xs);\n  border-radius: var(--large-border-radius);\n\n  &.small {\n    flex-direction: row;\n    min-height: calc(26rem / 16 + 8px);\n    --thumb-size: calc(30rem / 16);\n\n    & > .thumb {\n      @include margin(0, 2px, 0, -2px);\n\n      &.cp-icon {\n        --thumb-size: 1rem; // 16px\n      }\n    }\n  }\n\n  &.large {\n    flex-direction: column;\n    --thumb-size: 120px;\n    min-width: calc(var(--s) * 2 + var(--thumb-size));\n    width: 100%;\n    padding-top: var(--xs);\n    padding-bottom: var(--xs);\n\n    .chip-content {\n      width: 100%;\n    }\n  }\n\n  .chip-content {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--s);\n    max-width: 100%;\n\n    .status,\n    .icon {\n      @include margin-right(0);\n    }\n\n    .icon {\n      margin: -4px -1px 0;\n    }\n\n    .chip-actions {\n      margin-left: auto;\n    }\n  }\n\n  &.sel,\n  li.sel &,\n  li.active-drop-target & {\n    --text-color: var(--white);\n    --custom-text-color: var(--white) !important;\n    --medium-dark-text-color: var(--white);\n    --medium-text-color: var(--white);\n    --light-text-color: var(--white);\n    --link-color: var(--white);\n    --ui-control-color: var(--white);\n    @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n    color: var(--white);\n    background-color: var(\n      --custom-sel-bg-color,\n      var(--dark-sel-color)\n    ) !important;\n\n    .cp-icon {\n      --icon-color: var(--white) !important;\n    }\n  }\n\n  &.sel,\n  .sel & {\n    cursor: default;\n\n    .thumb {\n      filter: brightness(0.85);\n\n      img {\n        box-shadow:\n          0 0 0 1px transparentize($darkSelColor, 0.9),\n          0 6px 4px -4px transparentize($darkSelColor, 0.8);\n      }\n    }\n  }\n\n  .offset-drag-helper & {\n    background-color: var(--gray-050);\n    @include shadow;\n  }\n\n  & > .thumb {\n    flex: 0 0 auto;\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--thumb-size);\n    height: var(--thumb-size);\n\n    &.rounded {\n      img,\n      svg {\n        border: var(--xs) solid transparent;\n        border-radius: 50%;\n      }\n    }\n\n    &.checkered img {\n      @include checkered-bg(8px);\n    }\n\n    img,\n    svg {\n      display: block;\n      flex-shrink: 0;\n      border-radius: var(--small-border-radius);\n      max-width: 100%;\n      max-height: 100%;\n    }\n\n    svg {\n      width: 100%;\n    }\n  }\n}\n\n.cp-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--icon-size);\n  height: var(--icon-size);\n  max-width: var(--icon-size);\n\n  svg {\n    width: var(--icon-size);\n    height: var(--icon-size);\n    max-width: var(--icon-size) !important;\n    max-height: var(--icon-size) !important;\n    @include svg-mask(var(--icon-color, var(--ui-control-color)));\n  }\n\n  &.large {\n    --icon-size: calc(20rem / 16);\n  }\n\n  &.small {\n    --icon-size: calc(14rem / 16);\n  }\n\n  &.puny {\n    --icon-size: calc(12rem / 16);\n  }\n}\n\n.chips,\n.cards {\n  display: flex;\n  --custom-bg-color: initial;\n  --custom-text-color: initial;\n  --custom-sel-bg-color: initial;\n\n  &:not(.inline-chips) {\n    flex-direction: column;\n  }\n\n  li {\n    max-width: 100%;\n  }\n}\n\n.cards {\n  gap: var(--s);\n}\n\n.chips {\n  align-items: flex-start;\n  gap: var(--xs);\n}\n\n.inline-chips {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--xs);\n\n  .chip {\n    margin: 0 !important;\n  }\n}\n\n.elements.inline-chips {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n}\n\n/** cards */\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  padding: var(--m);\n  gap: var(--m);\n  border-radius: var(--large-border-radius);\n  cursor: default;\n  user-select: none;\n  width: 100%;\n\n  &:after {\n    border-radius: var(--large-border-radius);\n  }\n\n  &.sel,\n  li.sel & {\n    --text-color: var(--white);\n    --custom-text-color: var(--white) !important;\n    --medium-dark-text-color: var(--white);\n    --medium-text-color: var(--white);\n    --light-text-color: var(--white);\n    --link-color: var(--white);\n    --ui-control-color: var(--white);\n    @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n    color: var(--white);\n    background-color: var(\n      --custom-sel-bg-color,\n      var(--dark-sel-color)\n    ) !important;\n\n    & > .thumb {\n      background-color: var(--dark-sel-color) !important;\n      filter: brightness(0.85);\n    }\n  }\n\n  & > .thumb {\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    margin: calc(var(--m) * -1);\n    @include margin-right(0);\n    width: 128px;\n    min-width: 128px; // needed for flex\n    min-height: calc(var(--m) * 2 + var(--lh) * 3 + var(--xs));\n    background-color: var(--gray-100);\n    overflow: hidden;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: 0;\n      bottom: 0;\n      @include shadow();\n      width: 10px;\n\n      body.ltr & {\n        right: -10px;\n      }\n\n      body.rtl & {\n        left: -10px;\n      }\n    }\n\n    &,\n    &:after {\n      @include border-radius(\n        var(--large-border-radius),\n        0,\n        0,\n        var(--large-border-radius)\n      );\n    }\n\n    img,\n    svg {\n      width: 100%;\n      max-height: 128px;\n      object-fit: cover;\n    }\n  }\n\n  & > .cp-icon {\n    @include margin(0, -4px, 0, -2px);\n  }\n\n  .card-content,\n  .card-content .card-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--xs);\n    flex: 1;\n  }\n\n  .card-content {\n    margin: calc((1rem - var(--lh)) / 2) 0;\n    flex: 1 0 0 !important;\n    overflow: hidden;\n    position: relative;\n    --focus-ring: var(--inner-focus-ring);\n\n    .card-heading {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      gap: 5px;\n\n      .status {\n        margin: 0;\n        flex: 0 0 10px;\n      }\n\n      .label {\n        font-weight: 600;\n      }\n    }\n\n    .card-body {\n      &:empty {\n        display: none;\n      }\n\n      & > * {\n        --max-lines: 2;\n        margin: 0;\n        max-height: calc(var(--lh) * var(--max-lines));\n        overflow: hidden;\n        text-wrap: pretty;\n      }\n\n      .checkbox-preview-label {\n        display: inline;\n        font-style: italic;\n        margin-inline-start: 5px;\n      }\n    }\n  }\n\n  & > .card-actions-container {\n    display: flex;\n    align-items: flex-start !important;\n    position: relative;\n  }\n}\n\n.card-grid {\n  display: grid !important;\n  gap: var(--s) !important;\n  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n\n  & > li {\n    border-radius: var(--large-border-radius);\n\n    & > .card {\n      margin: 0 !important;\n      height: 100%;\n    }\n  }\n}\n\n// Adjust the columns when in live preview\n.lp-editor-container .card-grid {\n  grid-template-columns: minmax(0, 1fr);\n}\n\n.context-label,\n.context-menu-container {\n  display: inline-flex;\n  align-items: center;\n  @include margin-left(var(--xs));\n  height: var(--touch-target-size);\n  padding: 0 var(--s);\n  font-size: 11px;\n  font-weight: normal;\n  text-decoration: none !important;\n  color: var(--light-text-color);\n  border-radius: calc(var(--touch-target-size) / 2);\n  border: 1px solid var(--medium-hairline-color);\n}\n\n.context-menu-container {\n  @include padding-right(0);\n\n  .menubtn:not(.action-btn) {\n    @include margin(0, -1px, 0, 0);\n    @include padding-right(2px !important);\n    @include border-left(1px solid var(--medium-hairline-color));\n    @include border-radius(\n      0,\n      calc(var(--touch-target-size) / 2),\n      calc(var(--touch-target-size) / 2),\n      0\n    );\n\n    &:hover {\n      border-color: var(--dark-hairline-color) !important;\n    }\n  }\n\n  > * {\n    display: inline-block;\n    @include padding-right(var(--s));\n  }\n}\n\n// fix for context menus that are only children\n.context-menu-container .menubtn:not(.action-btn):only-child,\n.context-menu-container\n  .visually-hidden:first-child\n  + .menubtn:not(.action-btn):last-child {\n  margin: 0 calc(var(--s) * -1);\n  border-left: none !important;\n  border-radius: calc(var(--touch-target-size) / 2) !important;\n}\n\n.chip,\n.card {\n  // prevent double focus ring (chip/card already gets it)\n  .checkbox:before {\n    box-shadow: none !important;\n  }\n\n  .label {\n    display: flex;\n    align-items: center;\n    gap: var(--xs);\n    overflow: hidden;\n\n    .label-link {\n      flex: 1 1 0;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n\n      &:focus {\n        box-shadow: var(--inner-focus-ring);\n      }\n    }\n\n    .segment:after {\n      display: inline-flex !important;\n      position: relative;\n      top: -2px;\n      @include margin(0, 5px, 0, 2px);\n      @include angle(right, var(--light-text-color), calc(1rem / 16));\n\n      .sel & {\n        @include angle(right, var(--white), calc(1rem / 16));\n      }\n    }\n  }\n\n  & > .chip-content > .chip-actions,\n  & > .card-actions-container > .card-actions {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--s);\n    min-height: 1rem;\n\n    &:empty {\n      display: none;\n    }\n\n    & > .status {\n      margin: 0;\n    }\n\n    & > .action-btn,\n    & > .move {\n      @include touch-target;\n      margin: 0 -4px;\n      &:before {\n        color: var(--custom-text-color, var(--ui-control-color));\n      }\n    }\n\n    .action-btn {\n      background-color: transparent;\n\n      &:before {\n        @include margin-right(0 !important);\n      }\n\n      &:hover,\n      &:active,\n      &[aria-expanded='true'] {\n        backdrop-filter: brightness(90%);\n      }\n    }\n\n    .move {\n      margin-top: -3px !important;\n    }\n  }\n\n  &.error .label .label-link {\n    color: var(--error-color);\n  }\n}\n\n.element-index {\n  .source-path {\n    background-color: var(--gray-050);\n    border-radius: 3px;\n    --ui-control-bg-color: var(--light-sel-color);\n    --ui-control-hover-bg-color: #{darken($lightSelColor, 5%)};\n    --ui-control-active-bg-color: #{darken($lightSelColor, 10%)};\n\n    .chevron-btns {\n      display: inline-flex;\n      position: relative;\n      background: $white;\n      --ui-control-height: calc((30rem / 16)); // 1rem == 16px\n\n      &:before {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        top: 0;\n        width: 0;\n        height: 0;\n        @include right(0);\n        border-top: calc(var(--ui-control-height) / 2) solid $grey050;\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n\n      &:after {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        top: calc(var(--ui-control-height) / 2);\n        @include right(0);\n        border-bottom: calc(var(--ui-control-height) / 2) solid $grey050;\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n\n      .btn {\n        --ui-control-border-radius: 3px;\n      }\n    }\n\n    .btn.settings {\n      box-shadow: 0 0 0 2px var(--white);\n    }\n  }\n\n  &.main {\n    .source-path {\n      margin: -22px calc(var(--padding) * -1 + 2px) 24px;\n    }\n  }\n\n  .elementselectormodal & {\n    .source-path {\n      margin-bottom: 2px;\n    }\n  }\n\n  &.pane {\n    .toolbar {\n      position: relative;\n      z-index: 2;\n      margin: calc(var(--pane-padding) * -1) calc(var(--pane-padding) * -1)\n        var(--pane-padding) !important;\n      border-radius: calc(var(--large-border-radius) - 1px)\n        calc(var(--large-border-radius) - 1px) 0 0;\n      padding: var(--pane-padding);\n      box-shadow: 0 1px 0 var(--hairline-color);\n      background-color: var(--gray-050);\n    }\n\n    .header {\n      padding-top: var(--pane-padding);\n      padding-bottom: var(--pane-padding);\n      background-color: transparent;\n      border-bottom: 1px solid var(--hairline-color);\n    }\n\n    .elements {\n      --border-radius: 0;\n\n      .tableview table.data thead {\n        th,\n        td {\n          border-bottom: 1px solid var(--hairline-color);\n          &:not(.ordered) {\n            background-color: transparent;\n          }\n        }\n      }\n    }\n\n    .footer {\n      border-radius: 0 0 calc(var(--large-border-radius) - 1px)\n        calc(var(--large-border-radius) - 1px) !important;\n      box-shadow: none;\n      border-top: 1px solid var(--hairline-color);\n      background: transparent;\n    }\n  }\n}\n\n.elements {\n  position: relative;\n\n  &:not(.busy) {\n    .update-spinner {\n      display: none;\n    }\n  }\n\n  &.busy {\n    min-height: 72px;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      z-index: 100;\n      top: 0;\n      left: calc(var(--pane-padding, 24px) * -1);\n      width: calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));\n      height: 100%;\n      background: transparentize($white, 0.25);\n      border-radius: var(--large-border-radius);\n    }\n  }\n\n  .header {\n    margin: calc(var(--xl) * -1 + 2px) calc(var(--padding) * -1 + 2px) var(--xl);\n    padding: var(--s);\n    background-color: var(--gray-050);\n    box-shadow: none;\n    border-radius: var(--border-radius, var(--small-border-radius));\n\n    &:after {\n      content: '';\n    }\n\n    .selectallcontainer {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n      cursor: default;\n    }\n  }\n\n  .tableview tr.draggee th,\n  .tableview tr.draggee td,\n  .thumbsview li.draggee {\n    opacity: 0.25;\n  }\n\n  // table views\n  .tableview {\n    th {\n      .move,\n      .toggle {\n        display: flex;\n        position: absolute;\n        justify-content: center;\n        align-items: center;\n        top: 50%;\n        transform: translateY(-50%);\n        @include margin-left(calc(var(--touch-target-size) * -1));\n        width: var(--touch-target-size);\n        height: var(--touch-target-size);\n      }\n\n      .move {\n        font-size: 11px;\n        text-decoration: none;\n      }\n\n      .toggle {\n        text-align: center;\n        padding: 4px;\n        border-radius: 50%;\n      }\n\n      .move + .toggle {\n        @include margin-left(calc(var(--touch-target-size) * -2));\n      }\n\n      .enabled-label {\n        margin-left: var(--xs);\n      }\n    }\n\n    .chip {\n      background-color: transparent;\n    }\n  }\n\n  // thumbs views\n  .thumbsview {\n    display: grid;\n    gap: var(--xs);\n    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n\n    li {\n      position: relative;\n      @include margin(0, 1px, 1px, 0);\n      max-width: 226px;\n      border-radius: var(--large-border-radius);\n\n      &:hover {\n        .chip {\n          background-color: var(--gray-050);\n        }\n      }\n\n      &.sel {\n        a {\n          cursor: pointer !important;\n\n          &:hover {\n            text-decoration: underline;\n          }\n        }\n      }\n    }\n\n    .chip.large {\n      width: 100%;\n    }\n  }\n}\n\n.export-form {\n  position: relative;\n  .spinner {\n    position: absolute;\n    bottom: 0;\n    @include right(-24px);\n  }\n}\n\n/* structures */\n.structure {\n  position: relative;\n  z-index: 1;\n\n  li {\n    @include padding-left(8px);\n\n    &.collapsed > ul {\n      display: none;\n    }\n\n    .row:hover > .icon,\n    &.draghelper > .row .move,\n    .add.active {\n      opacity: 1;\n    }\n\n    &.draghelper {\n      & > .row {\n        .add {\n          opacity: 0;\n        }\n\n        .move:before {\n          color: var(--link-color);\n        }\n      }\n    }\n\n    &.draginsertion {\n      position: relative;\n      @include margin(-1px, 0, -1px, 8px);\n      @include padding-left(0);\n      height: 2px;\n      background-color: var(--link-color) !important;\n      @include border-left(none);\n      border-radius: 1px;\n    }\n\n    .toggle {\n      position: relative;\n      z-index: 1;\n      @include floatleft;\n      @include margin(10px, -8px, 0, -12px);\n      padding: 4px;\n    }\n\n    .row:after {\n      @include clearafter;\n    }\n\n    .move,\n    .add {\n      @include margin(5px, 5px, 0, 0);\n      opacity: 0;\n      transition: opacity linear 100ms;\n    }\n\n    .add {\n      padding: 0 5px;\n\n      &:before {\n        content: 'downangle';\n        color: var(--dark-hairline-color);\n      }\n\n      &:not(.disabled):hover:before,\n      &.active:before {\n        color: var(--link-color);\n      }\n    }\n\n    .checkbox {\n      @include floatleft;\n      @include margin(7px, 0, 0, 7px);\n    }\n  }\n\n  ul {\n    @include margin-left(-3px);\n\n    li {\n      @include padding-left(38px);\n      background-repeat: no-repeat;\n      --background-position-x: 0;\n      --background-position-y: -6px;\n      background-position: var(--background-position-x)\n        var(--background-position-y);\n\n      body.ltr & {\n        background-image: url(../images/branch.png);\n      }\n\n      body.rtl & {\n        --background-position-x: 100%;\n        background-image: url(../images/branch_rtl.png);\n      }\n\n      &:not(:last-child):not(.last) {\n        @include padding-left(37px);\n        @include border-left(1px solid var(--gray-200));\n\n        body.ltr & {\n          --background-position-x: -1px;\n        }\n\n        body.rtl & {\n          --background-position-x: calc(100% + 1px);\n        }\n      }\n\n      &.draginsertion {\n        @include margin-left(38px);\n      }\n    }\n  }\n\n  .row {\n    &.draghover {\n      .chip {\n        z-index: 2;\n        border-radius: 15px;\n        box-shadow: inset 0 0 0 2px var(--link-color);\n      }\n    }\n\n    &.droptarget {\n      border-radius: 5px;\n      box-shadow: inset 0 0 0 2px var(--link-color);\n    }\n  }\n}\n\n.elementselect .elements:not(:empty),\n.componentselect .components:not(:empty) {\n  & + .flex {\n    margin-top: var(--s);\n  }\n}\n\n/* element select fields */\n.elementselect {\n  position: relative;\n  min-height: 34px;\n\n  .flex,\n  .btn {\n    clear: both;\n  }\n\n  .structure {\n    .chip {\n      margin-top: var(--xs);\n    }\n\n    & > li {\n      @include padding-left(0);\n    }\n\n    ul {\n      @include margin-left(14px);\n\n      li {\n        --background-position-y: 0;\n      }\n    }\n  }\n}\n\n/* nested element cards */\n.nested-element-cards {\n  display: flex;\n  flex-direction: column;\n  gap: var(--s);\n\n  & > .pane {\n    margin: 0;\n  }\n}\n\n/* editable tables */\ntable.editable {\n  border-radius: var(--large-border-radius);\n  border: 1px solid var(--gray-200);\n\n  th,\n  td.heading,\n  td.action {\n    color: var(--medium-text-color);\n    font-weight: normal;\n    background-color: var(--gray-050);\n  }\n\n  thead,\n  tbody {\n    tr {\n      th {\n        padding: 6px 10px;\n      }\n    }\n  }\n\n  thead {\n    tr {\n      th {\n        border-bottom: 1px solid var(--hairline-color);\n\n        &.has-info {\n          @include padding-right(calc(15px + 1em));\n        }\n\n        span.info {\n          position: absolute;\n          margin-left: 5px;\n        }\n      }\n    }\n  }\n\n  tbody {\n    tr {\n      &:not(:first-child) {\n        th,\n        td {\n          border-top: 1px solid var(--hairline-color);\n        }\n      }\n\n      &:last-child {\n        td:first-child {\n          @include border-bottom-left-radius(var(--large-border-radius));\n\n          textarea,\n          input.text {\n            @include border-bottom-left-radius(\n              calc(var(--large-border-radius) - 1px)\n            );\n          }\n        }\n      }\n\n      td:not(:first-child),\n      th ~ td:not(.hidden) ~ td {\n        @include border-left(1px solid var(--hairline-color));\n      }\n\n      th {\n        // Set a dark border-left for the first <td> that follows a <th>, if there is one.\n        // This is a ridiculous CSS hack since there's no operator/pseudo-class that mimics jQuery's next(selector) function.\n        // If there was it could have been as simple as: th ??? td:not(.hidden) { dark left border }\n        // kudos to Mark Huot for coming up with it!\n        & ~ td:not(:first-child) {\n          @include border-left(1px solid #dbdddf);\n        }\n      }\n\n      td {\n        vertical-align: top;\n        text-align: center;\n        background-color: var(--white);\n        padding: 4px 10px;\n\n        &.focus {\n          position: relative;\n          box-shadow: inset 0 0 0 1px var(--hairline-color);\n        }\n\n        &.textual {\n          padding: 0;\n\n          .editable-table-preview {\n            @include alignleft;\n            white-space: pre-wrap;\n\n            & + textarea {\n              opacity: 0;\n              height: 0;\n              min-height: 0;\n              padding-top: 0;\n              padding-bottom: 0;\n            }\n          }\n\n          textarea {\n            resize: none;\n          }\n\n          pre {\n            @include alignleft;\n            white-space: pre-wrap;\n          }\n        }\n\n        &.lightswitch-cell {\n          padding-top: 9px;\n          padding-bottom: 9px;\n\n          .lightswitch {\n            display: block;\n            margin: 0 auto;\n          }\n        }\n\n        &.checkbox-cell {\n          padding-top: 10px;\n          padding-bottom: 10px;\n\n          .checkbox-wrapper {\n            display: block;\n            margin: -2px auto 0;\n            width: 16px;\n            height: 16px;\n          }\n        }\n\n        &.error {\n          box-shadow: inset 0 0 0 1px var(--error-color);\n        }\n\n        &.disabled {\n          position: relative;\n          opacity: 1;\n\n          &:after {\n            content: '';\n            font-size: 0;\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-color: transparentize($grey050, 0.25);\n            user-select: none;\n          }\n        }\n\n        &.action {\n          padding: 4px 7px;\n\n          & + td.action {\n            @include border-left(none);\n            @include padding-left(0);\n          }\n        }\n\n        .flex > * {\n          margin-bottom: 0;\n        }\n      }\n    }\n\n    textarea,\n    textarea.text,\n    input.text,\n    pre,\n    .editable-table-preview {\n      display: block;\n      width: 100%;\n      border: none;\n      box-shadow: none;\n      border-radius: 0;\n      padding: 7px 10px;\n      line-height: 20px;\n      background-color: transparent;\n      overflow: hidden;\n      transition: none;\n      box-sizing: border-box;\n    }\n\n    .color-container {\n      display: block;\n      position: relative;\n\n      & > .color,\n      .color-input {\n        margin-bottom: 0;\n      }\n\n      & > .color {\n        position: absolute;\n        top: 10px;\n        @include left(10px);\n        z-index: 1;\n      }\n\n      .color-hex-indicator {\n        @include left(32px);\n      }\n\n      .color-input {\n        @include padding-left(calc(32px + 1em));\n      }\n    }\n\n    .datewrapper,\n    .timewrapper {\n      display: block;\n      width: calc(100% - 29px);\n\n      .text + div[data-icon] {\n        top: 6px;\n        @include left(10px);\n      }\n    }\n  }\n\n  &:not(.static) {\n    td.textual {\n      cursor: text;\n    }\n  }\n\n  & + .btn.add {\n    display: block;\n    width: 100%;\n  }\n\n  &:not(.hidden) + .btn.add {\n    border-top-width: 0;\n    border-radius: 0 0 var(--medium-border-radius) var(--medium-border-radius);\n  }\n}\n\n.border-box,\n.shadow-box {\n  & + .buttons {\n    margin-top: 7px;\n  }\n}\n\n/* ----------------------------------------\n/*  Nav\n/* ----------------------------------------*/\n\nul.tree,\n.tree ul {\n  @include margin-left(20px);\n}\n\n.tree li .toggle {\n  @include margin(7px, 0, 0, -15px);\n}\n\n/* status icons */\n.status {\n  flex: 0 0 auto;\n  display: inline-block;\n  position: relative;\n  @include margin-right(10px);\n  width: calc(12rem / 16);\n  height: calc(12rem / 16);\n  border: 1px solid transparent;\n  border-radius: 100%;\n  box-sizing: border-box;\n  background-clip: border-box;\n\n  body.use-shapes & {\n    &.all {\n      rotate: 45deg;\n      background-image: linear-gradient(30deg, #184cef, #e5422b);\n    }\n\n    &.pending {\n      background-color: transparent;\n      border-style: solid;\n      border-width: 0 5px 10px 5px;\n      border-color: transparent transparent var(--pending-color) transparent;\n      border-radius: 1px;\n    }\n\n    &.all,\n    &.off,\n    &.suspended,\n    &.expired {\n      border-radius: 2px;\n      transform: scale(90%);\n    }\n  }\n}\n\n.status:not(.on):not(.live):not(.active):not(.enabled):not(.all) {\n  &:not(.pending):not(.warning):not(.off):not(.suspended):not(.expired) {\n    &:not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow) {\n      &:not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky) {\n        &:not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia) {\n          &:not(.pink):not(.rose):not(.grey):not(.black) {\n            border-color: var(--ui-control-color);\n          }\n        }\n      }\n    }\n  }\n}\n\n.status.all {\n  background-image: linear-gradient(60deg, #184cef, #e5422b);\n  background-origin: border-box;\n}\n.status.on,\n.status.live,\n.status.active,\n.status.enabled {\n  background-color: var(--enabled-color);\n}\n.status.red,\n.bg-red,\n.status.off,\n.status.suspended,\n.status.expired {\n  background-color: var(--disabled-color);\n}\n.status.warning {\n  background-color: var(--warning-color);\n}\n.status.orange,\n.bg-orange,\n.status.pending {\n  background-color: var(--pending-color);\n}\n.status.amber,\n.bg-amber {\n  background-color: var(--amber-500);\n}\n.status.yellow,\n.bg-yellow {\n  background-color: var(--yellow-500);\n}\n.status.lime,\n.bg-lime {\n  background-color: var(--lime-500);\n}\n.status.green,\n.bg-green {\n  background-color: var(--green-600);\n}\n.status.emerald,\n.bg-emerald {\n  background-color: var(--emerald-500);\n}\n.status.teal,\n.bg-teal,\n.status.turquoise,\n.bg-turquoise {\n  background-color: var(--teal-500);\n}\n.status.cyan,\n.bg-cyan {\n  background-color: var(--cyan-500);\n}\n.status.sky,\n.bg-sky {\n  background-color: var(--sky-500);\n}\n.status.blue,\n.bg-blue {\n  background-color: var(--blue-600);\n}\n.status.indigo,\n.bg-indigo {\n  background-color: var(--indigo-500);\n}\n.status.violet,\n.bg-violet {\n  background-color: var(--violet-500);\n}\n.status.purple,\n.bg-purple {\n  background-color: var(--purple-500);\n}\n.status.fuchsia,\n.bg-fuchsia {\n  background-color: var(--fuchsia-500);\n}\n.status.pink,\n.bg-pink {\n  background-color: var(--pink-500);\n}\n.status.rose,\n.bg-rose {\n  background-color: var(--rose-500);\n}\n.status.light {\n  background-color: var(--gray-100);\n}\n.status.white,\n.bg-white {\n  background-color: var(--white);\n}\n.status.black,\n.bg-black {\n  background-color: var(--gray-800);\n}\n.status.gray,\n.bg-gray,\n.status.grey,\n.bg-grey {\n  background-color: var(--gray-300);\n}\n\n.status.white,\n.status.disabled {\n  opacity: 1;\n}\n\n.icon,\n.cp-icon,\n[data-icon],\n[data-icon-after] {\n  &.warning {\n    --icon-color: var(--warning-color);\n  }\n  &.red {\n    --icon-color: var(--disabled-color);\n  }\n  &.orange {\n    --icon-color: var(--pending-color);\n  }\n  &.amber {\n    --icon-color: var(--amber-500);\n  }\n  &.yellow {\n    --icon-color: var(--yellow-500);\n  }\n  &.lime {\n    --icon-color: var(--lime-500);\n  }\n  &.green {\n    --icon-color: var(--green-500);\n  }\n  &.emerald {\n    --icon-color: var(--emerald-500);\n  }\n  &.teal {\n    --icon-color: var(--teal-500);\n  }\n  &.cyan {\n    --icon-color: var(--cyan-500);\n  }\n  &.sky {\n    --icon-color: var(--sky-500);\n  }\n  &.blue {\n    --icon-color: var(--blue-600);\n  }\n  &.indigo {\n    --icon-color: var(--indigo-500);\n  }\n  &.violet {\n    --icon-color: var(--violet-500);\n  }\n  &.purple {\n    --icon-color: var(--purple-500);\n  }\n  &.fuchsia {\n    --icon-color: var(--fuchsia-500);\n  }\n  &.pink {\n    --icon-color: var(--pink-500);\n  }\n  &.rose {\n    --icon-color: var(--rose-500);\n  }\n  &.white {\n    --icon-color: var(--white);\n  }\n  &.black {\n    --icon-color: var(--gray-800);\n  }\n  &.gray {\n    --icon-color: var(--gray-300);\n  }\n}\n\n.warning,\n.red,\n.orange,\n.amber,\n.yellow,\n.lime,\n.green,\n.emerald,\n.teal,\n.cyan,\n.sky,\n.blue,\n.indigo,\n.violet,\n.purple,\n.fuchsia,\n.pink,\n.rose,\n.white,\n.black,\n.gray {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    color: var(--icon-color) !important;\n  }\n}\n\n/* ----------------------------------------\n/*  Condition builders\n/* ----------------------------------------*/\n\n.condition-container {\n  margin: 24px 0;\n}\n\n.condition:not(:empty) + .condition-footer .btn.add {\n}\n\n.condition-rule,\n.condition-footer {\n  padding: 7px;\n}\n\n.condition-footer {\n  border: 1px dashed var(--medium-hairline-color);\n  border-radius: var(--large-border-radius);\n\n  .condition:not(:empty) + & {\n    border-top-width: 0;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n  }\n\n  .spinner:not(.loading) {\n    display: none;\n  }\n}\n\n.condition-rule {\n  margin: 0;\n  border: 1px solid var(--hairline-color);\n  background-color: var(--gray-050);\n\n  &:first-child {\n    border-top-left-radius: var(--large-border-radius);\n    border-top-right-radius: var(--large-border-radius);\n  }\n\n  & + .condition-rule {\n    border-top-width: 0;\n  }\n\n  & > .rule-move,\n  & > .rule-actions {\n    margin-top: 5px;\n  }\n\n  & > .rule-body {\n    .lightswitch {\n      margin-top: 6px;\n      display: block;\n    }\n\n    .selectize {\n      min-width: 100px;\n    }\n\n    .text.fullwidth {\n      min-width: 100px;\n      max-width: 100%;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Progress bar\n/* ----------------------------------------*/\n\n.progressbar {\n  border-radius: 6px;\n  border: 2px solid var(--gray-700);\n  padding: 2px;\n  position: absolute;\n  left: 20%;\n  width: 60%;\n  z-index: 1000;\n}\n\n.progressbar-inner {\n  border-radius: 2px;\n  height: 4px;\n  background-color: var(--gray-700);\n}\n\n.progressbar:not(.pending) .progressbar-inner {\n  width: 0;\n  transition: width linear 100ms;\n}\n\n.progressbar.pending .progressbar-inner {\n  @include striped-bg(17.6776695297px, var(--gray-700)); // sqrt(25^2 / 2);\n  body.ltr & {\n    animation-name: pendingprogress-ltr;\n  }\n  body.rtl & {\n    animation-name: pendingprogress-rtl;\n  }\n  animation-timing-function: linear;\n  animation-duration: 250ms;\n  animation-iteration-count: infinite;\n}\n\n@keyframes pendingprogress-ltr {\n  from {\n    background-position: 0;\n  }\n  to {\n    background-position: 25px;\n  }\n}\n\n@keyframes pendingprogress-rtl {\n  from {\n    background-position: 0;\n  }\n  to {\n    background-position: -25px;\n  }\n}\n\n.elementselect .progress-shade {\n  background-color: transparentize($white, 0.2);\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  @include left(0);\n  display: none;\n}\n\n.elementselect.uploading {\n  position: relative;\n}\n\n.elementselect.uploading .progress-shade {\n  display: block;\n  z-index: 2;\n}\n\n// Plugin installers\n\n.missing-component {\n  padding: 7px 10px !important;\n  max-width: 400px;\n  background-color: var(--gray-050) !important;\n\n  .error {\n    margin: 0;\n  }\n\n  .install-plugin {\n    margin: 7px 0 -7px;\n    border-top: 1px solid var(--hairline-color);\n    position: relative;\n    @include padding(10px, 0, 10px, 40px);\n\n    .icon {\n      width: 32px;\n      height: 32px;\n      position: absolute;\n      top: calc(50% - 16px);\n      @include left(0);\n\n      img,\n      svg {\n        width: 100%;\n        height: 100%;\n      }\n    }\n\n    h3 {\n      flex: 1;\n      margin: 8px 0 !important;\n    }\n\n    .btn {\n      margin: 0;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Panes, Modals and HUDs\n/* ----------------------------------------*/\n\n.pane {\n  --pane-padding: var(--xl);\n  --border: 1px solid var(--hairline-color);\n  @include pane;\n  position: relative;\n  margin: 14px 0;\n  padding: var(--pane-padding);\n  border-radius: var(--large-border-radius);\n  word-wrap: break-word;\n  box-sizing: border-box;\n\n  .pane &,\n  #content & {\n    background-color: var(--gray-050);\n    border: 1px solid var(--hairline-color);\n    box-shadow: none;\n  }\n\n  &.dashed {\n    background-color: transparent !important;\n    box-shadow: none;\n    border: 1px dashed var(--medium-hairline-color) !important;\n  }\n\n  &.hairline {\n    background-color: transparent !important;\n    box-shadow: none;\n    border: 1px solid #{transparentize($inputColor, 0.75)} !important;\n  }\n\n  &.no-border {\n    border: none !important;\n  }\n\n  &.padding-xs {\n    --pane-padding: var(--xs);\n  }\n  &.padding-s {\n    --pane-padding: var(--s);\n  }\n  &.padding-m {\n    --pane-padding: var(--m);\n  }\n  &.padding-l {\n    --pane-padding: var(--l);\n  }\n\n  &.loading {\n    min-height: 200px;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: 0;\n      left: -24px;\n      width: calc(100% + #{24 + 24}px);\n      height: 100%;\n    }\n  }\n}\n\n.pane-header {\n  margin: calc(var(--xl) * -1) var(--neg-padding) var(--xl);\n  padding: 5px var(--xl) 6px;\n  min-height: 45px;\n  box-sizing: border-box;\n  box-shadow: inset 0 -1px 0 0 transparentize($grey300, 0.75);\n  border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n  background-color: var(--gray-050);\n\n  .header-btn {\n    margin: 2px 0;\n    @include header-btn;\n  }\n\n  .spinner {\n    margin: 0 !important;\n  }\n}\n\n.pane-tabs {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  margin: -5px calc(var(--padding) * -1) -6px;\n\n  &:first-child {\n    border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n    overflow: hidden;\n  }\n\n  [role='tablist'] {\n    flex: 1;\n    display: flex;\n    flex-direction: row;\n    overflow-x: auto;\n    scrollbar-width: none;\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n\n    &.scrollable {\n      body.ltr & {\n        mask-image: linear-gradient(\n          to left,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 24px\n        );\n      }\n      body.rtl & {\n        mask-image: linear-gradient(\n          to right,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 24px\n        );\n      }\n    }\n\n    [role='tab'] {\n      --tab-label-color: var(--light-text-color);\n\n      &.error {\n        --highlight-color: var(--error-color) !important;\n        --tab-label-color: var(--error-color) !important;\n      }\n\n      &,\n      .tab-label {\n        border-radius: 2px 2px 0 0;\n      }\n\n      .tab-label {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        position: relative;\n        padding: 0 var(--padding);\n        white-space: nowrap;\n        height: 45px;\n      }\n\n      &:hover {\n        text-decoration: none;\n      }\n\n      @include focus-styles {\n        box-shadow: none;\n\n        .tab-label {\n          box-shadow: var(--inner-focus-ring);\n        }\n      }\n\n      &:not(.sel) {\n        color: var(--custom-text-color, var(--tab-label-color));\n\n        &:hover {\n          backdrop-filter: brightness(95%);\n        }\n      }\n\n      &.sel {\n        --highlight-color: var(--gray-500);\n        --tab-label-color: var(--text-color);\n        position: relative;\n        z-index: 1;\n        cursor: default;\n        box-shadow:\n          inset 0 2px 0 var(--custom-text-color, var(--highlight-color)),\n          0 0 0 1px $hairlineColor,\n          0 2px 12px var(--custom-sel-tab-shadow-color, var(--gray-200));\n        color: var(--tab-label-color);\n        background-color: var(--white) !important;\n      }\n\n      span[data-icon] {\n        @include margin-left(4px);\n      }\n    }\n  }\n\n  &#tabs:first-child {\n    [role='tablist'] {\n      [role='tab'] {\n        &:first-child {\n          &,\n          .tab-label {\n            @include border-top-left-radius(var(--large-border-radius));\n          }\n        }\n      }\n    }\n  }\n\n  .menubtn {\n    margin: 0 var(--xl);\n\n    &.error {\n      span[data-icon] {\n        margin-right: 2px;\n      }\n    }\n  }\n}\n\n/* detail sidebars */\n.details {\n  --spacing: var(--l);\n  padding: 0 var(--padding) var(--spacing);\n\n  .meta,\n  .field,\n  hr {\n    margin-left: var(--neg-padding);\n    margin-right: var(--neg-padding);\n  }\n\n  .meta {\n    margin-bottom: var(--spacing);\n\n    &:not(.read-only) {\n      background-color: var(--gray-050) !important;\n    }\n\n    &.read-only {\n      color: var(--medium-text-color);\n\n      & > .data {\n        min-height: auto;\n\n        & > .heading,\n        & > .value {\n          padding: 6px 0;\n        }\n\n        &:first-child {\n          & > .heading,\n          & > .value {\n            padding-top: 0;\n          }\n        }\n\n        &:last-child {\n          & > .heading,\n          & > .value {\n            padding-bottom: 0;\n          }\n        }\n      }\n    }\n\n    &.warning {\n      padding-top: var(--m);\n      padding-bottom: var(--m);\n      color: var(--text-color) !important;\n      background-color: var(--yellow-050) !important;\n      box-shadow:\n        0 0 0 1px var(--yellow-300),\n        0 2px 12px transparentize($grey200, 0.5);\n\n      p {\n        margin-bottom: 5px;\n      }\n\n      .btn {\n        background-color: var(--yellow-300);\n\n        &:hover,\n        &:focus {\n          background-color: darken($yellow300, 10%);\n        }\n\n        &:active,\n        &[aria-expanded='true'] {\n          background-color: darken($yellow300, 15%);\n        }\n      }\n    }\n\n    & > .field,\n    & > .data {\n      margin: 0 var(--neg-padding) !important;\n\n      & > .heading > label,\n      & > .heading {\n        color: var(--gray-600);\n      }\n    }\n\n    & > .field > .status-badge {\n      @include left(0);\n    }\n\n    .text::placeholder,\n    .datewrapper .text + div[data-icon],\n    .timewrapper .text + div[data-icon] {\n      color: var(--gray-500);\n    }\n\n    .ui-datepicker {\n      @include margin(0, 0, 0, -8px);\n    }\n  }\n\n  hr {\n    margin: var(--spacing) 0;\n    border-top-color: var(--hairline-color);\n  }\n\n  @include placeholder-styles(var(--gray-500));\n\n  .text {\n    background-color: transparent !important;\n    resize: none;\n  }\n\n  & > .field > .heading > label,\n  & > fieldset > legend {\n    margin-top: 0;\n    font-weight: normal;\n    color: var(--gray-600);\n  }\n\n  & > fieldset {\n    margin: 0 0 var(--spacing);\n\n    & > legend {\n      margin-bottom: 5px;\n    }\n  }\n\n  & > .field {\n    margin: 0 0 var(--spacing);\n\n    & > .heading {\n      margin-top: 0;\n    }\n\n    & > .input > .text.fullwidth {\n      margin: 0 var(--neg-padding);\n      padding-left: var(--padding);\n      padding-right: var(--padding);\n      border: none;\n      background-color: var(--gray-050) !important;\n      width: calc(100% + var(--padding) + var(--padding));\n    }\n  }\n\n  & > .text {\n    border-radius: var(--large-border-radius);\n    margin-bottom: var(--spacing);\n\n    &:not(:focus) {\n      border-color: transparentize($inputColor, 0.6);\n    }\n  }\n}\n\n/* meta panes */\n$min2ColWidth: 400px;\n\n.meta {\n  padding: 0 var(--padding);\n  overflow: visible;\n\n  &,\n  & > .flex-fields {\n    & > .field,\n    & > .data {\n      display: flex;\n      min-height: 44px;\n      box-sizing: border-box;\n      flex-wrap: wrap; // for error lists\n      justify-content: space-between;\n      align-items: center;\n      margin: 0 var(--neg-padding) !important;\n      padding: 0 var(--padding);\n      transition:\n        padding-left linear 100ms,\n        padding-right linear 100ms;\n\n      &.nested {\n        @include padding-left(38px);\n      }\n\n      &.add {\n        background-color: darken($grey050, 2%);\n\n        &:before {\n          position: absolute;\n          @include left(0);\n          width: 31px;\n          @include alignright;\n          @include icon;\n          content: 'plus';\n          color: var(--light-text-color);\n        }\n\n        .input {\n          width: 100%;\n        }\n      }\n\n      & > .heading {\n        margin: 0;\n\n        @media screen and (min-width: $min2ColWidth) {\n          flex: 0 0 104px;\n          @include margin-right(var(--s));\n          line-height: 18px;\n        }\n      }\n\n      &.lightswitch-field > .heading {\n        flex: 1;\n      }\n\n      & > .input {\n        .flex {\n          flex-wrap: nowrap;\n\n          & > * {\n            margin-bottom: 0;\n          }\n        }\n      }\n    }\n\n    & > .field > .heading {\n      padding-top: var(--s);\n\n      @media screen and (min-width: $min2ColWidth) {\n        padding: 12px 0;\n      }\n\n      & > .copytextbtn {\n        display: none;\n      }\n    }\n\n    & > .data > .heading {\n      padding: var(--s) 0;\n    }\n\n    & > .field > .heading > label,\n    & > .data > .heading {\n      color: var(--medium-text-color);\n    }\n\n    & > .field > .input,\n    & > .data > .value {\n      padding: 5px 0;\n      width: 100%;\n\n      @media screen and (min-width: $min2ColWidth) {\n        width: calc(100% - 112px);\n      }\n    }\n\n    & > .data > .value {\n      display: flex;\n      align-items: center;\n\n      & > [data-icon='draft'] {\n        margin-top: -2px;\n        @include margin-right(8px);\n      }\n    }\n\n    & > .field.lightswitch-field > .input {\n      flex: 0;\n      width: auto;\n    }\n\n    & > .field {\n      &.has-errors {\n        border: 1px solid var(--error-color) !important;\n\n        &:first-child {\n          border-top-left-radius: var(--large-border-radius);\n          border-top-right-radius: var(--large-border-radius);\n        }\n\n        &:last-child {\n          border-bottom-left-radius: var(--large-border-radius);\n          border-bottom-right-radius: var(--large-border-radius);\n        }\n\n        & + .field {\n          border-top: none !important;\n        }\n      }\n\n      & > .heading {\n        & > label,\n        & > legend {\n          font-weight: normal;\n        }\n      }\n\n      & > .input {\n        &,\n        & > .flex,\n        & > .flex > .textwrapper,\n        & > .datewrapper,\n        & > .timewrapper,\n        & > .datetimewrapper > .datewrapper,\n        & > .datetimewrapper > .timewrapper {\n          & > .text {\n            display: block;\n            margin: -5px 0;\n            padding: 12px 0;\n            border-radius: 0;\n            background-color: transparent;\n            border: none !important;\n          }\n        }\n\n        & > .datewrapper,\n        & > .timewrapper,\n        & > .datetimewrapper > .datewrapper,\n        & > .datetimewrapper > .timewrapper {\n          background-color: transparent;\n          .text + div[data-icon] {\n            @include left(0);\n          }\n        }\n\n        & > .datetimewrapper {\n          gap: 0;\n\n          & > .datewrapper {\n            width: 55%;\n          }\n\n          & > .timewrapper {\n            width: 45%;\n          }\n\n          & > .clear-btn {\n            @include margin-right(-24px);\n          }\n        }\n\n        & > .datewrapper,\n        & > .timewrapper {\n          display: block;\n          width: 100%;\n        }\n      }\n\n      & > ul.errors {\n        margin: 0;\n        padding: 0 0 6px;\n        width: 100%;\n        list-style-type: none;\n      }\n\n      & > .clear-btn {\n        @include margin-right(var(--neg-padding));\n      }\n    }\n  }\n\n  & > .field:not(:first-child):not(.first-child),\n  & > .flex-fields + .field:not(.first-child) {\n    border-top: 1px solid var(--hairline-color);\n  }\n\n  & > .flex-fields {\n    h2,\n    blockquote.note {\n      margin: 0 -24px !important;\n      padding: 14px 24px;\n      background-color: darken($grey050, 2%);\n    }\n\n    blockquote.note {\n      border-radius: 0;\n      border: none;\n    }\n\n    hr {\n      margin: 0 -24px;\n    }\n  }\n}\n\n.meta > .field > .input > .select {\n  display: block;\n  margin: calc(var(--s) * -1) 0;\n  width: 100%;\n  border-radius: 0;\n  box-shadow: none;\n  background-color: transparent;\n\n  &:after {\n    @include right(0);\n  }\n\n  & + .spinner {\n    position: absolute;\n    top: calc(50% - 17px);\n    @include right(-24px);\n  }\n\n  select {\n    @include padding(var(--s), 12px, var(--s), 0);\n    width: 100%;\n    background-color: transparent;\n  }\n}\n\n.meta > .field > .input > .custom-select {\n  display: block;\n  margin: calc(var(--s) * -1) 0;\n  width: 100%;\n  border-radius: 0;\n  box-shadow: none;\n  background-color: transparent;\n\n  .menubtn:not(.action-btn) {\n    @include padding-left(0);\n    justify-content: start;\n    width: 100%;\n    background-color: transparent;\n\n    &:after {\n      position: absolute;\n      top: calc(50% - 5px);\n      @include right(0);\n    }\n  }\n\n  .label {\n    max-width: 100%;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n}\n\n.body {\n  position: relative;\n}\n\n.slideout-container,\n.slideout,\n.modal,\n.hud {\n  z-index: 100;\n  box-sizing: border-box;\n}\n\n.modal,\n.hud {\n  @include modal;\n}\n\n.slideout-shade {\n  opacity: 0;\n  transition: opacity linear 250ms;\n\n  &.so-visible {\n    opacity: 1;\n  }\n}\n\n.slideout-container {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  height: -webkit-fill-available; // h/t https://twitter.com/AllThingsSmitty/status/1254151507412496384\n  pointer-events: none;\n\n  &.so-lp {\n    position: absolute;\n    top: var(--m);\n    left: var(--m);\n    width: calc(100% - var(--m) * 2);\n    height: calc(100vh - var(--m) * 2);\n  }\n\n  body.has-debug-toolbar & {\n    height: calc(100vh - 42px);\n  }\n}\n\n.slideout {\n  position: absolute;\n  background-color: var(--white);\n  box-shadow:\n    0 0 0 1px transparentize($grey400, 0.75),\n    0 25px 100px transparentize($grey900, 0.5) !important;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  padding: 24px var(--padding);\n  pointer-events: all;\n  container-type: inline-size;\n\n  &.so-mobile,\n  &.so-lp {\n    width: 100% !important;\n    height: 100% !important;\n    left: 0;\n    transition: top linear 250ms;\n    will-change: top;\n  }\n\n  &.so-mobile {\n    --padding: 14px;\n    --neg-padding: -14px;\n  }\n\n  &:not(.so-mobile) {\n    @include border-radius(\n      var(--large-border-radius),\n      0,\n      0,\n      var(--large-border-radius)\n    );\n  }\n\n  &:not(.so-mobile):not(.so-lp) {\n    top: 0;\n    width: 55%;\n    height: 100%;\n\n    @media screen and (prefers-reduced-motion: no-preference) {\n      body.ltr & {\n        transition: left linear 250ms;\n        will-change: left;\n      }\n\n      body.rtl & {\n        transition: right linear 250ms;\n        will-change: right;\n      }\n    }\n  }\n\n  & > .pane-header {\n    padding-left: var(--padding);\n    padding-right: var(--padding);\n    z-index: 2;\n\n    & > .so-toolbar {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      gap: var(--xs);\n      min-height: calc(44px - 16px);\n\n      & > .pane-tabs {\n        width: 1px; // give other elements in the header plenty of room before the tabs take up whatever's left\n        flex: 1;\n        @include margin-right(0);\n      }\n    }\n  }\n\n  & > .so-body {\n    flex: 1;\n    margin: -24px var(--neg-padding);\n    overflow: hidden auto;\n    position: relative;\n\n    &:not(:last-child) {\n      margin-bottom: 0;\n    }\n\n    & > h1:not(:last-child) {\n      padding-bottom: var(--s);\n      border-bottom: 1px solid var(--hairline-color);\n    }\n\n    &.so-full-details,\n    & > .so-sidebar {\n      background-color: var(--gray-100) !important;\n    }\n\n    &:not(.so-full-details) {\n      padding: 24px var(--padding);\n    }\n\n    & > .so-sidebar,\n    &.so-full-details > .so-content > .details {\n      box-sizing: border-box;\n      padding: 0 var(--padding) var(--spacing);\n\n      & > .preview-thumb-container {\n        margin: 0 var(--neg-padding);\n        height: auto;\n        min-height: 54px; // make room for the Preview / Edit buttons\n\n        & + .pane-header {\n          border-radius: 0;\n        }\n      }\n\n      .image-actions {\n        &.is-mobile {\n          margin: calc(var(--spacing) / 2) 0 var(--spacing);\n        }\n      }\n\n      & > .meta.read-only:first-child {\n        margin-top: var(--padding);\n      }\n\n      & > .meta.warning {\n        box-shadow: none;\n        border-bottom: 1px solid var(--yellow-300);\n      }\n\n      & > .field {\n        & > .input > .text.fullwidth {\n          border-radius: 0;\n        }\n      }\n\n      .notes {\n        padding-top: var(--m);\n        padding-bottom: var(--m);\n      }\n    }\n\n    & > .so-sidebar {\n      position: absolute;\n      top: 0;\n      @include pane();\n      width: 350px;\n      height: 100%;\n      max-width: 100%;\n      overflow: hidden auto;\n      z-index: 1;\n\n      body.ltr & {\n        transition: right linear 250ms;\n      }\n      body.rtl & {\n        transition: left linear 250ms;\n      }\n    }\n  }\n\n  & > .so-footer {\n    position: relative;\n    display: flex;\n    gap: var(--s);\n    justify-content: space-between;\n    flex-wrap: wrap;\n    margin: 0 var(--neg-padding) -24px;\n    padding: 5px var(--padding);\n    @include pane;\n    background-color: var(--gray-050);\n    z-index: 3;\n\n    & > .so-extra {\n      flex: 0 0 100%;\n      margin: 0 var(--neg-padding);\n      padding: 0 var(--padding) 8px;\n      border-bottom: 1px solid var(--hairline-color);\n    }\n  }\n}\n\n@container (width > 700px) {\n  .slideout {\n    &.showing-sidebar {\n      .so-body {\n        display: flex;\n        flex-direction: row;\n        padding: 0;\n        overflow: hidden;\n\n        & > .so-content {\n          position: relative;\n          z-index: 2;\n          padding: 24px;\n          width: calc(100% - 350px);\n          height: 100%;\n          box-sizing: border-box;\n          @include border-right(1px solid var(--gray-200));\n          overflow: hidden auto;\n        }\n\n        & > .so-sidebar {\n          position: relative;\n          display: block !important;\n          top: auto;\n          right: auto !important;\n          left: auto !important;\n          height: 100%;\n          box-shadow: none;\n        }\n      }\n    }\n\n    & > .so-footer {\n      & > .so-extra {\n        margin: 0;\n        padding: 0;\n        border: none;\n        flex: auto 0 1;\n      }\n    }\n  }\n}\n\n.header,\n.hud-header,\n.footer,\n.hud-footer {\n  position: relative;\n  z-index: 1;\n  box-sizing: border-box;\n}\n\n.header,\n.hud-header,\n.footer,\n.hud-footer {\n  background-color: var(--gray-100);\n}\n\n.header,\n.hud-header {\n  border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n  padding: 24px;\n  box-shadow: inset 0 -1px 0 var(--hairline-color);\n\n  h1 {\n    margin: 0;\n  }\n}\n\n.footer,\n.hud-footer {\n  border-radius: 0 0 var(--large-border-radius) var(--large-border-radius);\n  padding: 5px var(--pane-padding, var(--xl));\n  box-shadow: inset 0 1px 0 var(--hairline-color);\n\n  &.flex {\n    & > * {\n      margin-bottom: 0;\n    }\n  }\n}\n\n.modal .body,\n.hud .main {\n  padding: 24px;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n\n.pane,\n.modal .body {\n  .header {\n    margin: calc(var(--pane-padding, 24px) * -1)\n      calc(var(--pane-padding, 24px) * -1) var(--pane-padding, 24px);\n  }\n\n  .footer {\n    margin: var(--pane-padding, 24px) calc(var(--pane-padding, 24px) * -1)\n      calc(var(--pane-padding, 24px) * -1);\n  }\n}\n\n.slideout-shade,\n.modal-shade,\n.hud-shade {\n  z-index: 100;\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: none;\n}\n\n.slideout-shade,\n.modal-shade {\n  &:not(.dark) {\n    background-color: transparentize($grey400, 0.65) !important;\n  }\n\n  &.dark {\n    background-color: transparentize($grey900, 0.5) !important;\n  }\n\n  &.blurred {\n    backdrop-filter: blur(10px);\n  }\n}\n\n.modal {\n  position: fixed;\n  overflow: hidden;\n\n  &:not(.fitted):not(.fullscreen) {\n    width: 66%;\n    height: 66%;\n    min-width: 600px;\n    min-height: 400px;\n  }\n\n  &.fitted {\n    width: auto;\n    height: auto;\n    min-width: 0;\n    min-height: 0;\n  }\n\n  &.fullscreen {\n    width: 100%;\n    height: 100%;\n    border-radius: 0;\n  }\n\n  &.alert .body {\n    @include padding-left(76px);\n\n    &:before {\n      @include icon;\n      @include margin(-6px, 0, 0, -58px);\n      @include floatleft;\n      content: 'alert';\n      font-size: 40px;\n      color: var(--light-text-color);\n    }\n  }\n\n  &.secure .body {\n    @include padding-left(76px);\n\n    &:before {\n      @include icon;\n      @include margin(-14px, 0, 0, -56px);\n      @include floatleft;\n      content: 'secure';\n      font-size: 58px;\n      color: var(--light-text-color);\n    }\n  }\n\n  .resizehandle {\n    position: absolute;\n    z-index: 1;\n    bottom: 0;\n    @include right(0);\n    width: 24px;\n    height: 24px;\n    cursor: nwse-resize;\n    padding: var(--xs);\n\n    path {\n      fill: var(--ui-control-color);\n    }\n\n    body.rtl & {\n      .ltr {\n        display: none;\n      }\n    }\n\n    body.ltr & {\n      .rtl {\n        display: none;\n      }\n    }\n  }\n}\n\n.hud {\n  position: absolute;\n  display: none;\n  top: 0;\n\n  &.tooltip-hud {\n    display: block;\n  }\n\n  &.has-footer .tip-bottom {\n    background-image: url(../images/hudtip_bottom_gray.png);\n  }\n\n  .tip {\n    position: absolute;\n    z-index: 101;\n    background: no-repeat 0 0;\n  }\n\n  .tip-left {\n    left: -15px;\n    width: 15px;\n    height: 30px;\n    background-image: url(../images/hudtip_left.png);\n  }\n\n  .tip-top {\n    top: -15px;\n    width: 30px;\n    height: 15px;\n    background-image: url(../images/hudtip_top.png);\n  }\n\n  .tip-right {\n    right: -15px;\n    width: 15px;\n    height: 30px;\n    background-image: url(../images/hudtip_right.png);\n  }\n\n  .tip-bottom {\n    bottom: -15px;\n    width: 30px;\n    height: 15px;\n    background-image: url(../images/hudtip_bottom.png);\n  }\n}\n\n.hud .hud-header,\n.hud .hud-footer {\n  padding: var(--s) var(--xl);\n}\n\n.hud .body {\n  overflow: hidden;\n\n  ::-webkit-scrollbar {\n    appearance: none;\n\n    &:vertical {\n      width: 11px;\n    }\n\n    &:horizontal {\n      height: 11px;\n    }\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 8px;\n    border: 2px solid transparent;\n    background-color: transparentize($black, 0.5);\n  }\n\n  ::-webkit-scrollbar-track {\n    background-color: var(--gray-050);\n  }\n}\n\n/* inline asset previews */\n\n.preview-thumb-container {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  height: 190px;\n  background-color: var(--gray-900);\n  margin: 0 var(--neg-padding) var(--spacing);\n\n  &.checkered img {\n    background-color: var(--white);\n    @include checkered-bg(17px);\n  }\n\n  &.editable {\n    cursor: pointer;\n  }\n\n  &.loading {\n    &:after {\n      content: '';\n      font-size: 0;\n      display: block;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      left: 0;\n      top: 0;\n      background-color: transparentize($grey900, 0.2);\n    }\n\n    .spinner {\n      color: var(--white);\n      z-index: 1;\n    }\n  }\n\n  #details & {\n    border-radius: var(--large-border-radius);\n    overflow: hidden;\n  }\n\n  .preview-thumb {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n\n    img {\n      display: block;\n      max-width: 100%;\n      max-height: 190px;\n    }\n  }\n}\n\n.image-actions {\n  &.is-mobile {\n    margin: calc((var(--spacing) / 2) * -1) var(--neg-padding) var(--spacing);\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n.button-fade {\n  .buttons {\n    opacity: 0;\n    position: absolute;\n    top: 10px;\n    @include right(10px);\n    margin: 0;\n    transition: opacity linear 100ms;\n\n    .btn {\n      --ui-control-color: var(--white);\n      --ui-control-hover-color: var(--white);\n      --ui-control-active-color: var(--white);\n      --interaction-background-color: var(--gray-700);\n      background-color: var(--gray-600);\n      color: var(--white);\n      @include light-on-dark-text;\n      @include two-color-focus-ring($light-button: false);\n\n      &:hover {\n        background-color: var(--interaction-background-color) !important;\n      }\n\n      &:not(.disabled):not(.loading):not(.dashed) {\n        &:focus,\n        &.focus,\n        &:hover {\n          background-color: var(--interaction-background-color);\n        }\n      }\n    }\n  }\n\n  &:hover,\n  &:focus-within {\n    .buttons {\n      opacity: 1;\n    }\n  }\n}\n\n/* element selector modals */\n.elementselectormodal {\n  --content-padding: 24px;\n  padding-bottom: 44px;\n  user-select: none;\n\n  & > .header {\n    padding-top: 14px;\n    padding-bottom: 14px;\n    text-align: center;\n\n    & + .body {\n      height: calc(100% - 48px) !important;\n    }\n  }\n\n  .body {\n    position: relative;\n    height: 100%;\n\n    .spinner.big {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      margin: -24px 0 0 -24px;\n    }\n\n    .content {\n      height: calc(100% + 48px);\n\n      .sidebar {\n        position: absolute;\n        top: 0;\n        @include margin-left(-249px);\n        height: 100%;\n        overflow: auto;\n        padding: var(--content-padding) 0;\n      }\n\n      .main {\n        margin: -24px;\n        padding: var(--content-padding);\n        height: 100%;\n        box-sizing: border-box;\n        overflow: auto;\n        position: relative;\n\n        .elements {\n          &.busy {\n            min-height: calc(100% - 48px);\n\n            .update-spinner {\n              z-index: 101;\n            }\n          }\n\n          .header {\n            margin: 0 0 var(--m);\n          }\n\n          .tableview table {\n            tr {\n              th,\n              td {\n                cursor: default;\n              }\n\n              // prevent double focus ring (the row already gets it)\n              .checkbox:before {\n                box-shadow: none !important;\n              }\n            }\n          }\n\n          .structure .row {\n            margin-top: 1px;\n          }\n        }\n      }\n    }\n  }\n\n  .footer {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    margin: 0;\n    box-sizing: border-box;\n\n    .spinner {\n      @include floatright;\n      @include margin-right(-24px);\n    }\n  }\n}\n\n/* element selector modals & customize sources modal */\n.elementselectormodal,\n.customize-sources-modal {\n  .main-header {\n    display: flex;\n    align-items: center;\n    margin-bottom: var(--s);\n  }\n\n  .main-heading {\n    margin-bottom: 0;\n  }\n\n  .nav-toggle {\n    @include margin-left(4px);\n    @include touch-target;\n    color: var(--ui-control-color);\n\n    &:hover {\n      color: var(--gray-500);\n    }\n  }\n\n  .sidebar-header {\n    display: flex;\n    justify-content: flex-end;\n    padding: 0 var(--s);\n    margin-bottom: var(--s);\n  }\n\n  .nav-close {\n    @include touch-target;\n  }\n}\n\n/* element editing HUD */\n.element-hud-form {\n  .buttons {\n    position: relative;\n\n    .spinner {\n      position: absolute;\n      top: 0;\n      @include right(-24px);\n    }\n  }\n}\n\n/* recent activity container */\n.activity-container {\n  margin-inline: var(--s);\n\n  ul {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    gap: var(--xs);\n\n    li {\n      .activity-btn {\n        width: 30px;\n        height: 30px;\n        border-radius: 50%;\n        display: block;\n\n        .elementthumb {\n          position: relative;\n          width: 100%;\n          height: 100%;\n          border-radius: 50px;\n          background: var(--gray-050);\n          overflow: hidden;\n          border: 2px solid var(--white);\n          box-shadow: 0 1px 2px 1px transparentize($grey900, 0.9);\n\n          img,\n          svg {\n            display: block;\n            width: 100%;\n            height: 100%;\n          }\n        }\n      }\n\n      &:not(:last-child) {\n        @include margin-right(-10px);\n      }\n    }\n  }\n}\n\n/* element index view menu */\n.element-index-view-menu {\n  width: 400px;\n  max-width: calc(100% - 20px);\n  padding: 0 !important;\n\n  .meta {\n    padding-top: var(--s);\n    padding-bottom: var(--s);\n  }\n\n  .table-columns-field {\n    align-items: flex-start;\n\n    .input {\n      padding: 13px 0;\n    }\n  }\n\n  .menu-footer {\n    margin: 0 !important;\n    padding: var(--s) var(--xl) !important;\n    background-color: var(--gray-050);\n  }\n}\n\n.element-index-view-menu-table-column {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  margin-bottom: 4px;\n\n  .icon.move {\n    @include margin-right(10px);\n    position: relative;\n    z-index: 1;\n  }\n}\n\n/* sort fields */\n.sort-field {\n  .input {\n    .flex {\n      .btngroup {\n        .btn {\n          width: 42px;\n        }\n      }\n\n      .flex-grow {\n        max-width: calc(100% - 85px - var(--s));\n      }\n\n      @media screen and (max-width: 350px) {\n        flex-direction: column;\n\n        & > * {\n          width: 100%;\n        }\n\n        .flex-grow {\n          max-width: none;\n        }\n      }\n    }\n  }\n}\n\n/* element filter HUD */\n.element-filter-hud {\n  &.loading .body {\n    padding: 44px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .body,\n  .main {\n    overflow: visible;\n  }\n}\n\n/* Address Cards */\n.address-cards {\n  display: grid;\n  gap: var(--m) var(--m);\n  grid-template-columns: repeat(1, minmax(0, 1fr));\n  grid-auto-rows: minmax(0, 1fr);\n\n  .so-content & {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n}\n\n.address-cards__add-btn {\n  padding: 1rem;\n  min-height: 8rem;\n  height: auto;\n  width: 100%;\n}\n\n.address-card.error {\n  border: 1px solid #cf1124;\n}\n\n.address-card.error:hover {\n  border-color: #cf1124;\n}\n\n@media (min-width: 1024px) {\n  .address-cards {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n\n@media (min-width: 1280px) {\n  .address-cards {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n\n    .so-content & {\n      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n    }\n  }\n}\n\n@media (min-width: 1536px) {\n  .address-cards {\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n  }\n}\n\n.address-card {\n  border: 1px solid #eee;\n  border-radius: 0.375rem;\n  padding: 1rem;\n  min-height: 4rem;\n}\n\n.address-card:hover {\n  border-color: #ddd;\n  background-color: #fafafa;\n  cursor: pointer;\n}\n\n.address-card .address-card-header {\n  display: flex;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n}\n\n.address-card .address-card-header-actions {\n  display: flex;\n  justify-content: flex-end;\n}\n\n.address-card .address-card-label {\n  background: #e6f1fe;\n  color: #2563eb;\n  padding: 0.125rem 0.5rem;\n  border-radius: 0.25rem;\n  font-size: 0.75rem;\n  text-transform: uppercase;\n  font-weight: 500;\n  margin-bottom: 0.75rem;\n\n  .ltr & {\n    margin-right: 0.5rem;\n  }\n\n  .rtl & {\n    margin-left: 0.5rem;\n  }\n}\n\n/* logout warning/login/elevated session modals */\n.logoutwarningmodalshade,\n.login-modal-shade,\n#logoutwarningmodal,\n.login-modal,\n#elevatedsessionmodal,\n.prompt {\n  z-index: 1001;\n}\n\n#logoutwarningmodal,\n#elevatedsessionmodal,\n.prompt {\n  width: 500px;\n}\n\n.prompt {\n  height: auto;\n  min-height: auto;\n}\n\n.cpmodal {\n  & > .cpmodal-body {\n    padding: var(--padding);\n  }\n\n  & > .cpmodal-footer {\n    position: relative;\n    display: flex;\n    gap: 8px;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    @include pane;\n    padding: var(--s) var(--padding);\n    background-color: var(--gray-050);\n  }\n}\n\n/* delete user modal */\n.deleteusermodal {\n  .content-summary {\n    margin: -24px -24px 24px;\n    padding: 24px;\n    background-color: var(--gray-050);\n  }\n\n  .options {\n    label {\n      display: inline-block;\n      line-height: 30px;\n    }\n  }\n\n  .elementselect {\n    @include margin-left(10px);\n    display: inline-block;\n    vertical-align: middle;\n  }\n\n  .buttons {\n    .spinner {\n      @include margin-right(-20px);\n    }\n  }\n\n  div.elements {\n    list-style: none;\n  }\n}\n\n.dropdownsettingsmodal {\n  width: auto;\n  height: auto;\n  min-width: 0;\n  min-height: 0;\n  max-width: 400px;\n\n  .body {\n    max-height: 100%;\n    overflow-y: auto;\n  }\n}\n\n.previewmodal {\n  &.zilch {\n    padding: 100px 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n}\n\n/* ----------------------------------------\n/*  Alternative Text\n/* ----------------------------------------*/\n.video-transcript {\n  background-color: var(--gray-050);\n  overflow-y: scroll;\n  font-size: 1rem;\n  position: relative;\n\n  @include focus-styles {\n    // Unset default\n    box-shadow: none;\n    color: var(--white);\n    background-color: var(--gray-800);\n  }\n}\n\n.video-transcript__inner {\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 550px;\n  padding: var(--xl);\n}\n\n/* ----------------------------------------\n/*  Menus\n/* ----------------------------------------*/\n\n.menu,\n.ui-datepicker,\n.ui-timepicker-list {\n  @include menu-styles;\n}\n\n.ui-datepicker,\n.ui-timepicker-list {\n  padding: 0;\n}\n\n.menu {\n  display: none;\n  position: absolute;\n\n  &.padded {\n    padding: var(--s) calc(var(--m) + var(--s));\n\n    hr {\n      margin: var(--s) calc((var(--m) + var(--s)) * -1);\n    }\n\n    ul {\n      li {\n        margin: 0 calc(var(--m) * -1);\n        padding: 0 var(--m);\n\n        a {\n          border-radius: var(--large-border-radius);\n        }\n      }\n    }\n\n    .extralight {\n      margin-top: 2px;\n    }\n  }\n\n  h6,\n  .h6 {\n    &:first-child {\n      margin-top: 14px !important;\n    }\n  }\n\n  ul {\n    &.padded {\n      li {\n        a,\n        .menu-item,\n        .menu-option {\n          padding-inline-start: calc(var(--m) + 18rem / 16);\n\n          &.sel {\n            &:not([data-icon]):before {\n              @include floatleft;\n              @include margin(4px, 0, 0, calc(-18rem / 16 - 4px));\n              font-size: 14px;\n              width: 14px;\n              content: 'check';\n              color: currentColor;\n              margin-top: 3px !important;\n            }\n          }\n        }\n      }\n    }\n\n    li {\n      a,\n      .menu-item,\n      .menu-option {\n        margin: 0 -14px;\n        padding: 10px 14px;\n        white-space: nowrap;\n        font-size: 14px;\n        -webkit-appearance: none;\n\n        &:not(:last-child) {\n          @include margin-right(0);\n        }\n\n        &:not(.flex):not(.hidden) {\n          display: block;\n          width: calc(100% + 28px);\n          @include alignleft;\n        }\n\n        &.flex {\n          [data-icon] {\n            margin-top: -2px;\n          }\n        }\n\n        &.sel {\n          cursor: default;\n        }\n\n        .shortcut {\n          @include floatright;\n          @include margin-left(14px);\n          padding: 0 4px;\n          border-radius: var(--medium-border-radius);\n          box-shadow:\n            0 0 0 1px transparentize($grey600, 0.75),\n            0 1px 3px -1px transparentize($grey600, 0.5);\n        }\n      }\n    }\n  }\n\n  & > .flex {\n    margin-top: 10px;\n    margin-bottom: 10px;\n    position: relative;\n\n    &.padded {\n      @include margin-left(-14px);\n      @include padding-left(24px);\n\n      &.sel {\n        &:before {\n          position: absolute;\n          top: 36px;\n          @include left(7px);\n          content: 'check';\n          font-size: 14px;\n          color: var(--light-text-color);\n        }\n      }\n    }\n  }\n\n  hr {\n    margin: 5px -14px;\n  }\n\n  .go:after {\n    color: inherit;\n  }\n\n  &:not(.menu--disclosure) ul li a,\n  ul li .menu-item,\n  ul li .menu-option {\n    color: $menuOptionColor;\n    text-decoration: none;\n    cursor: default;\n  }\n}\n\n.menu li {\n  & > a,\n  & > button {\n    &[data-icon]:before,\n    [data-icon]:before,\n    span.icon:not([data-icon]) {\n      display: inline-block;\n      width: calc(14rem / 16);\n      height: calc(14rem / 16);\n      @include margin-left(-1px);\n      @include margin-right(9px);\n    }\n\n    &[data-icon]:before,\n    [data-icon]:before {\n      position: relative;\n      top: -2px;\n      text-align: center;\n      font-size: 14px;\n      color: currentColor;\n    }\n\n    span.icon:not([data-icon]) svg {\n      display: block;\n      position: relative;\n      top: 1px;\n      width: 100%;\n      height: 100%;\n      @include svg-mask(var(--icon-color, var(--ui-control-color)));\n    }\n\n    &.error {\n      &[data-icon]:before,\n      [data-icon]:before {\n        color: var(--error-color);\n      }\n\n      span.icon:not([data-icon]) svg {\n        @include svg-mask(var(--error-color));\n      }\n    }\n  }\n}\n\n/* prettier-ignore */\n.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,\n.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,\n.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,\n.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover,\n.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,\n.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover {\n  @include menu-item-active-styles;\n\n  // Pretty gnarly, but needs to override the default hover styles with this selector\n  .status:not(.on):not(.live):not(.active):not(.enabled):not(.all) {\n    &:not(.pending):not(.warning):not(.off):not(.suspended):not(.expired) {\n      &:not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow) {\n        &:not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky) {\n          &:not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia) {\n            &:not(.pink):not(.rose):not(.grey):not(.black) {\n              border-color: currentColor;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\n.menu {\n  hr.padded,\n  .h6.padded,\n  h6.padded {\n    @include margin-left(20px);\n  }\n}\n\n.menu--disclosure ul li {\n  & > a:not(.crumb-link),\n  & > .menu-item,\n  & > .menu-option {\n    &:hover {\n      @include disclosure-link-hover-styles;\n    }\n\n    @include focus-styles {\n      box-shadow: inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);\n    }\n  }\n}\n\n/* tag select fields */\n.tagselect {\n  .elements {\n    li {\n      display: inline;\n    }\n  }\n\n  .chip.small {\n    clear: none;\n    @include margin-right(7px);\n  }\n\n  .add {\n    position: relative;\n    z-index: 1;\n    @include margin(7px, 7px, 0, 0);\n    display: inline-block;\n    width: 12em;\n\n    .text {\n      @include padding-right(30px);\n    }\n\n    .spinner {\n      position: absolute;\n      top: 0;\n      @include right(5px);\n    }\n  }\n}\n\n.tagmenu {\n  ul {\n    li {\n      a {\n        @include padding-left(26px);\n\n        &:before {\n          @include floatleft;\n          @include margin(3px, 0, 0, -18px);\n        }\n      }\n    }\n  }\n}\n\n/* selectize */\n.selectize-control.single .selectize-input:not(.no-arrow)::after {\n  display: none;\n}\n\n/* ----------------------------------------\n/*  Fields\n/* ----------------------------------------*/\n\n.shadow-box {\n  border-radius: var(--large-border-radius);\n  border: 1px solid var(--gray-200);\n  @include shadow;\n}\n\ntable.shadow-box,\ntable.editable {\n  border-collapse: separate;\n  border-spacing: 0;\n\n  thead,\n  tbody:first-child,\n  caption + tbody {\n    tr:first-child {\n      th:first-child,\n      td:first-child {\n        &,\n        &.disabled:after {\n          border-top-left-radius: var(--medium-border-radius);\n        }\n      }\n      th:last-child,\n      td:last-child {\n        &,\n        &.disabled:after {\n          border-top-right-radius: var(--medium-border-radius);\n        }\n      }\n    }\n  }\n  thead:last-child,\n  tbody:last-child {\n    tr:last-child {\n      th:first-child,\n      td:first-child {\n        &,\n        &.disabled:after {\n          border-bottom-left-radius: calc(var(--large-border-radius) - 1px);\n        }\n      }\n      th:last-child,\n      td:last-child {\n        &,\n        &.disabled:after {\n          border-bottom-right-radius: calc(var(--large-border-radius) - 1px);\n        }\n      }\n    }\n  }\n}\n\n.text,\n.passwordwrapper,\n.border-box,\n.selectize.multiselect .selectize-input,\n.multiselect > select {\n  @include input-styles;\n}\n\n.text,\n.passwordwrapper,\n.border-box,\n.selectize.multiselect .selectize-input {\n  &.focus {\n    @include input-focused-styles;\n  }\n\n  @include focus-styles {\n    @include input-focused-styles;\n  }\n}\n\ninput.text,\ntextarea.text,\n.text > input,\n.text > textarea,\ntable.editable textarea,\n.selectize.multiselect .selectize-input {\n  font-size: 14px;\n  line-height: 20px;\n  color: var(--text-color);\n  min-height: 3px;\n  box-sizing: border-box;\n  appearance: none;\n}\n\n.selectize.multiselect .selectize-input {\n  line-height: 18px;\n}\n\ntextarea.text.fullwidth {\n  display: block;\n}\n\n.multitext .multitextrow {\n  &:after {\n    @include clearafter;\n  }\n\n  &:first-child .text {\n    &:first-child {\n      @include border-top-left-radius(var(--medium-border-radius));\n    }\n\n    &:last-child {\n      @include border-top-right-radius(var(--medium-border-radius));\n    }\n  }\n\n  &:last-child .text {\n    &:first-child {\n      @include border-bottom-left-radius(var(--medium-border-radius));\n    }\n\n    &:last-child {\n      @include border-bottom-right-radius(var(--medium-border-radius));\n    }\n  }\n\n  &:not(:first-child) .text {\n    margin-top: -1px;\n  }\n\n  .text {\n    border-radius: 0;\n    float: left;\n    box-sizing: border-box;\n\n    &:not(:first-child) {\n      @include margin-left(-1px);\n    }\n\n    &:first-child {\n      &:nth-last-child(1) {\n        width: 100%;\n      }\n\n      &:nth-last-child(2) {\n        width: 50%;\n      }\n\n      &:nth-last-child(2) ~ .text {\n        width: calc(50% + 1px);\n      }\n    }\n\n    &.error {\n      position: relative;\n      z-index: 1;\n    }\n  }\n\n  .text:focus,\n  .selectize.multiselect .selectize-input.focus {\n    position: relative;\n    z-index: 2;\n  }\n}\n\n.chars-left {\n  position: relative;\n  @include floatright;\n  @include margin(calc(-27rem / 16), 7px, 0, 0);\n  color: var(--light-text-color);\n\n  .input.ltr > & {\n    float: right !important;\n    margin-right: 7px !important;\n  }\n\n  .input.rtl > & {\n    float: left !important;\n    margin-left: 7px !important;\n  }\n\n  &.negative-chars-left {\n    color: var(--error-color);\n  }\n}\n\n.field,\nfieldset {\n  position: relative;\n  margin: 24px 0;\n\n  .flex > & {\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n}\n\n.field {\n  min-inline-size: initial;\n\n  & > .status-badge {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    width: 2px;\n    height: 100%;\n    border-radius: 1px;\n    content: '';\n    cursor: help;\n\n    &.modified {\n      background-color: var(--blue-600);\n      box-shadow: 0 0 5px hsl(221, 83%, 53%, 15%);\n    }\n\n    &.outdated {\n      background-color: var(--pending-color);\n      box-shadow: 0 0 5px hsl(27, 96%, 61%, 15%);\n    }\n  }\n\n  & > .heading {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    position: relative;\n    margin-top: -5px;\n    margin-bottom: 5px;\n\n    & > label,\n    & > legend {\n      font-weight: bold;\n\n      code {\n        font-size: 1em !important;\n      }\n\n      .info {\n        @include margin-left(5px);\n      }\n    }\n\n    .t9n-indicator {\n      position: relative;\n      top: calc(-1rem / 16);\n      @include margin-left(7px);\n      color: var(--light-text-color);\n    }\n\n    & + .instructions {\n      margin-top: -3px;\n    }\n\n    // BC\n    & > .instructions {\n      width: 100%;\n    }\n  }\n\n  & > .instructions {\n    margin-bottom: 5px;\n  }\n\n  & > .input {\n    position: relative;\n\n    & + .instructions {\n      margin: 5px 0 0;\n    }\n\n    input:disabled,\n    textarea:disabled {\n      cursor: not-allowed;\n    }\n  }\n\n  & > .notice,\n  & > .warning {\n    margin: 5px 0 0;\n  }\n}\n\n.field > .instructions,\n// BC\n.field > .heading > .instructions,\n.checkboxfield .instructions {\n  color: var(--custom-text-color, var(--medium-text-color));\n\n  img,\n  video,\n  embed,\n  iframe {\n    max-width: 100% !important;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n}\n\n.expand-status-btn {\n  @include margin-left(5px);\n  width: 30px;\n  height: 17px;\n  padding: 0;\n  line-height: 16px;\n  border-radius: var(--small-border-radius);\n  color: var(--text-color);\n\n  &:before {\n    margin: 0;\n  }\n}\n\n/* toggles and nested fields */\n.nested-fields {\n  margin: -24px;\n  padding: 24px 24px 0;\n\n  &.hidden {\n    display: block;\n    height: 0;\n  }\n\n  & > .field:last-child {\n    padding-bottom: 24px;\n  }\n}\n\n/* checkbox */\ninput.checkbox {\n  opacity: 0;\n  position: absolute;\n  width: var(--checkbox-size);\n  height: var(--checkbox-size);\n}\n\ninput.checkbox + label,\ndiv.checkbox {\n  display: inline-block;\n  clear: none;\n  position: relative;\n  @include padding-left(calc(1rem + 5px));\n  line-height: 1rem;\n  min-height: 1rem;\n  cursor: pointer;\n\n  &,\n  &:before {\n    // set the border radius on the container too, for (some) focus rings\n    border-radius: var(--small-border-radius);\n  }\n\n  &:before {\n    display: block;\n    position: absolute;\n    @include left(0);\n    top: 0;\n    width: var(--checkbox-size) !important;\n    height: var(--checkbox-size);\n    box-sizing: border-box;\n    content: '';\n    font-size: 0;\n    background-color: hsl(212, 50%, 99%);\n    border: 1px solid transparentize($inputColor, 0.6);\n    background-clip: padding-box;\n  }\n\n  &:empty {\n    @include padding-left(var(--checkbox-size));\n\n    &:after {\n      content: '';\n      font-size: 0;\n    }\n  }\n\n  .info {\n    height: 16px;\n  }\n}\n\ninput.checkbox:disabled + label,\n.disabled div.checkbox {\n  cursor: not-allowed;\n}\n\ninput.checkbox:checked + label:before,\ndiv.checkbox.checked:before,\n.sel div.checkbox:before,\ninput.checkbox:indeterminate + label:before,\ndiv.checkbox.indeterminate:before,\n.elementselectormodal\n  .body\n  .content\n  .main\n  .elements\n  .disabled\n  .checkbox:before {\n  @include icon;\n  line-height: var(--checkbox-size);\n  color: var(--gray-900);\n}\n\ninput.checkbox:checked:not(:indeterminate) + label:before,\ndiv.checkbox.checked:not(.indeterminate):before,\n.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,\n.sel.matrixblock > .actions div.checkbox:not(.indeterminate):before,\n.elementselectormodal\n  .body\n  .content\n  .main\n  .elements\n  .disabled\n  .checkbox:before {\n  content: 'check';\n  font-size: 14px;\n}\n\ninput.checkbox:indeterminate + label:before,\ndiv.checkbox.indeterminate:before {\n  content: 'minus';\n  font-size: 7px;\n  text-align: center;\n}\n\nbody:not(.reduce-focus-visibility) {\n  input.checkbox:focus + label:before,\n  :focus div.checkbox:before {\n    @include input-focused-styles;\n  }\n}\n\nbody.reduce-focus-visibility {\n  input.checkbox:focus-visible + label:before,\n  :focus-visible div.checkbox:before {\n    @include input-focused-styles;\n  }\n}\n\n.checkbox-icon {\n  display: inline-flex;\n  padding: 3px;\n  background-color: var(--enabled-color);\n  color: var(--white);\n  border-radius: var(--small-border-radius);\n\n  &:before {\n    --checkbox-size: 14px;\n    @include icon;\n    content: 'check';\n    line-height: var(--checkbox-size);\n    font-size: var(--checkbox-size);\n  }\n}\n\n.checkbox-preview-label {\n  display: none;\n}\n\n.monaco-mouse-cursor-text {\n  @include focus-styles {\n    box-shadow: none !important;\n  }\n}\n\nfieldset {\n  .checkboxfield {\n    margin: 5px 0;\n  }\n}\n\n.checkboxfield {\n  .instructions,\n  .notice,\n  .warning {\n    margin-top: 2px;\n    @include padding-left(calc(1rem + 5px));\n  }\n}\n\n/* radio */\ninput.radio {\n  opacity: 0;\n  position: absolute;\n  width: var(--radio-size);\n  height: var(--radio-size);\n}\n\ninput.radio + label,\ndiv.radio {\n  display: inline-block;\n  clear: none;\n  position: relative;\n  @include padding-left(calc(1rem + 5px));\n  line-height: calc(24 / 14);\n  cursor: pointer;\n}\n\ninput.radio:disabled + label,\n.disabled div.radio {\n  cursor: not-allowed;\n}\n\ninput.radio + label:empty,\ndiv.radio:empty {\n  @include padding-left(var(--radio-size));\n}\n\n/* fixes a RTL bug */\ninput.radio + label:before,\ninput.radio + label:after,\ndiv.radio:before,\ndiv.radio:after {\n  display: block;\n  position: absolute;\n  content: '';\n  box-sizing: border-box;\n  background-clip: padding-box;\n  border-radius: 100%;\n}\n\ninput.radio + label:before,\ndiv.radio:before {\n  top: 50%;\n  left: 0;\n  transform: translateY(-50%);\n  width: var(--radio-size);\n  height: var(--radio-size);\n  background-color: hsl(212, 50%, 99%);\n  border: 1px solid transparentize($inputColor, 0.6);\n}\n\ninput.radio + label:after,\ndiv.radio:after {\n  top: calc(50%);\n  left: 4px;\n  transform: translateY(-50%);\n  width: calc(var(--radio-size) - 8px);\n  height: calc(var(--radio-size) - 8px);\n}\n\ninput.radio:checked + label:after,\ndiv.radio.checked:after,\n.sel div.radio:after {\n  background: var(--gray-900);\n}\n\nbody:not(.reduce-focus-visibility) {\n  input.radio:focus + label:before,\n  :focus div.radio:before {\n    @include input-focused-styles;\n  }\n}\n\nbody.reduce-focus-visibility {\n  input.radio:focus-visible + label:before,\n  :focus-visible div.radio:before {\n    @include input-focused-styles;\n  }\n}\n\n/* multiselect */\n.multiselect > select {\n  color: var(--text-color);\n  font-size: 14px;\n  appearance: none;\n\n  @include focus-styles {\n    @include input-focused-styles;\n  }\n\n  option {\n    padding: 1px 8px;\n  }\n}\n\n.text,\n.selectize.multiselect .selectize-input {\n  padding: 6px 9px;\n}\n\n.text {\n  background-color: var(--white);\n\n  &:not(.small) {\n    box-sizing: border-box;\n    min-height: calc(34rem / 16);\n  }\n\n  &.small {\n    padding: 3px;\n  }\n\n  &.readable {\n    padding: 16px 18px;\n    font-size: 16px;\n    line-height: 22px;\n\n    & + .chars-left {\n      margin-top: -23px;\n    }\n  }\n\n  &.clearable {\n    @include padding-right(var(--touch-target-size));\n  }\n\n  input {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background-color: transparent;\n  }\n}\n\ntd.errors .text,\n.input.errors > .text,\n.input.errors > .border-box,\n.input.errors > .passwordwrapper,\n.input.errors > .autosuggest-container .text,\n.text.error {\n  border: 1px solid var(--error-color) !important;\n}\n\n.texticon {\n  position: relative;\n  cursor: text;\n  min-width: 130px;\n\n  &.icon {\n    &:before {\n      position: absolute;\n      top: calc(50% - 7rem / 16);\n      @include left(9px);\n      color: var(--ui-control-color);\n    }\n  }\n\n  .texticon-icon {\n    position: absolute;\n    top: calc((34rem / 16) / 2);\n    transform: translateY(-50%);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    @include left(9px);\n  }\n\n  .text {\n    @include padding-left(calc(26rem / 16));\n  }\n\n  .clear-btn {\n    position: absolute;\n    top: calc(\n      (var(--touch-target-size) - 34px) / -2\n    ); /* Responds to min-height of text input */\n    @include right(0);\n    width: var(--touch-target-size);\n    height: var(--touch-target-size);\n  }\n\n  &.has-filter-btn {\n    .text {\n      @include padding-right(26px);\n    }\n\n    .filter-btn {\n      position: absolute;\n      top: calc((34rem / 16) / 2);\n      transform: translateY(-50%);\n      @include right(4px);\n      padding: 0 7px 4px;\n      font-size: 14px;\n      line-height: 22px;\n      cursor: pointer;\n      border-radius: 13px;\n\n      &:before {\n        @include icon;\n        content: 'filter';\n        color: var(--medium-text-color);\n      }\n\n      &:hover {\n        background-color: var(--gray-100);\n      }\n\n      &:active,\n      &.active,\n      &[aria-expanded='true'] {\n        background-color: var(--gray-350);\n\n        &:before {\n          color: var(--white);\n        }\n      }\n    }\n\n    .text {\n      &.clearable {\n        @include padding-right(calc(30px + var(--touch-target-size)));\n      }\n    }\n\n    .clear-btn {\n      @include right(30px);\n    }\n  }\n}\n\n.texthint-container {\n  position: relative;\n  height: 0;\n}\n\n.texthint {\n  position: absolute;\n  top: -1px;\n  width: 100%;\n  color: var(--light-text-color);\n  cursor: text;\n}\n\n.passwordwrapper {\n  position: relative;\n\n  .password {\n    border: none;\n    background: transparent;\n    padding-right: 4rem;\n    box-shadow: none;\n  }\n\n  .password-toggle {\n    color: var(--link-color);\n    position: absolute;\n    top: 0;\n    @include right(9px);\n    bottom: 0;\n    cursor: pointer;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n\n.datetimewrapper {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: row;\n  align-items: center;\n  gap: 5px;\n}\n\n.clear-btn {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 24px;\n  cursor: pointer;\n  color: var(--ui-control-color);\n  border: none;\n  padding: 0;\n  background: transparent;\n\n  &:before {\n    @include icon;\n    content: 'remove';\n  }\n\n  &:hover {\n    color: var(--ui-control-hover-color);\n  }\n\n  &:active {\n    color: var(--ui-control-active-color);\n  }\n}\n\n.close-btn {\n  position: relative;\n\n  &:before,\n  &:after {\n    position: absolute;\n    content: '';\n    top: 50%;\n    left: 50%;\n    height: 15px;\n    width: 2px;\n    background-color: var(--ui-control-color);\n  }\n\n  &:before {\n    transform: translate(-50%, -50%) rotate(-45deg);\n  }\n\n  &:after {\n    transform: translate(-50%, -50%) rotate(45deg);\n  }\n\n  &:hover {\n    &:before,\n    &:after {\n      background-color: var(--ui-control-hover-color);\n    }\n  }\n\n  &:active {\n    &:before,\n    &:after {\n      background-color: var(--ui-control-active-color);\n    }\n  }\n}\n\n.datewrapper,\n.timewrapper {\n  display: inline-block;\n  position: relative;\n\n  .text {\n    position: relative;\n    z-index: 1;\n    width: 100%;\n\n    & + div[data-icon] {\n      display: none;\n    }\n\n    &:placeholder-shown,\n    &.empty-value {\n      & + div[data-icon] {\n        display: block;\n        position: absolute;\n        top: calc(50% - 12px);\n        @include left(14px);\n        z-index: 0;\n        color: var(--light-text-color);\n\n        &,\n        &:before {\n          user-select: none;\n          pointer-events: none;\n          z-index: 1;\n        }\n      }\n    }\n  }\n}\n\n.datewrapper {\n  width: 8em;\n}\n\n.timewrapper {\n  width: 7em;\n}\n\n@include placeholder-styles(var(--gray-400));\n\n/* Kill IE's special text features */\n::-ms-reveal,\n::-ms-clear {\n  display: none;\n}\n\n/* Asset indexing related */\ntr.indexingSession td {\n  height: 34px;\n  padding: 1px 10px;\n}\n\ntr.indexingSession td.progress div.progressContainer {\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\ntr.indexingSession td.progress div.progressContainer .progressbar {\n  width: 70%;\n  position: relative;\n  left: 0;\n  height: 12px;\n  z-index: 1;\n}\n\ntr.indexingSession td.progress div.progressContainer div.progressInfo {\n  width: 20%;\n}\n\n// Selects\n.select:not(.selectize),\n.select:not(.selectize) select {\n  @include select-styles;\n}\n\n.select:not(.selectize) {\n  @include select-container-styles;\n}\n\n.select:not(.selectize):after {\n  @include select-arrow-styles;\n}\n\n.select:not(.selectize) select {\n  @include select-input-styles;\n  white-space: pre;\n}\n\n.select:not(.selectize).fullwidth select {\n  @include select-input-fullwidth-styles;\n}\n\n.select:not(.selectize) select {\n  &:hover {\n    @include select-input-focused-styles;\n  }\n\n  @include focus-styles {\n    @include select-input-focused-styles;\n  }\n}\n\n.select:not(.selectize).small:after {\n  top: 9px;\n}\n\n.select:not(.selectize).small select {\n  padding-top: 4px !important;\n  padding-bottom: 4px !important;\n  font-size: 11px;\n}\n\n.selectize-control .selectize-input.disabled,\n.custom-select.disabled {\n  opacity: 1;\n  cursor: not-allowed !important;\n  pointer-events: auto !important;\n\n  * {\n    cursor: not-allowed !important;\n    pointer-events: auto !important;\n  }\n}\n\n.selectize .selectize-input {\n  display: block;\n  border-color: inherit;\n  box-shadow: none;\n  background-color: transparent;\n\n  .item {\n    max-width: 100%;\n\n    span {\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n  }\n}\n\n.selectize.select .selectize-input:after {\n  display: none;\n}\n\nbody .selectize-dropdown {\n  border: none;\n  z-index: 101;\n}\n\n/* single select styles */\n.selectize.select {\n  @include placeholder-styles(var(--gray-700));\n  height: 34px;\n\n  &:not(.fullwidth) {\n    width: 25em;\n    max-width: 100%;\n  }\n}\n\n.datetimewrapper .selectize.select:not(.fullwidth) {\n  max-width: calc(100% - 29px);\n}\n\n.selectize.select .selectize-control {\n  @include select-container-styles;\n\n  &:after {\n    @include select-arrow-styles;\n  }\n}\n\n.selectize.select .selectize-input {\n  @include select-styles;\n\n  &.focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.selectize.select .selectize-input {\n  @include select-input-styles;\n}\n\n.selectize.select .selectize-control,\n.selectize.select .selectize-input {\n  width: 100%;\n}\n\n/* multi select styles */\n.selectize.multiselect .selectize-input {\n  min-height: 34px;\n  padding-bottom: 3px;\n\n  &.focus {\n    @include input-focused-styles;\n  }\n\n  & > .item {\n    @include token-styles;\n    display: inline-flex;\n    flex-direction: row;\n    padding: 3px 7px !important;\n\n    &.active {\n      @include active-token-styles;\n    }\n\n    & > .remove {\n      position: static;\n      @include margin(-1px, -3px, 0, 3px);\n      border-left: none;\n      padding: 0;\n      font-size: 0;\n      color: var(--ui-control-color);\n\n      &:hover {\n        color: var(--ui-control-hover-color);\n        background-color: transparent;\n      }\n\n      &:before {\n        font-size: 14px;\n        @include icon;\n        content: 'remove';\n      }\n    }\n  }\n}\n\n/* menu styles */\nbody {\n  .selectize-dropdown {\n    margin-top: 1px;\n\n    [data-selectable],\n    .option,\n    .optgroup-header {\n      @include menu-item-styles;\n    }\n\n    .optgroup {\n      &:not(:first-child) {\n        border-top: 1px solid var(--hairline-color);\n      }\n      padding-top: 5px;\n\n      .option {\n        padding-left: 24px;\n      }\n    }\n\n    .optgroup-header {\n      @include h6-styles;\n      margin: 0;\n      padding: 4px 0;\n    }\n\n    .active:not(.selected),\n    .option:hover {\n      background-color: var(--gray-100);\n    }\n\n    .selected {\n      @include menu-item-active-styles;\n      cursor: default !important;\n\n      .light {\n        color: inherit !important;\n      }\n    }\n  }\n\n  .selectize-dropdown-content {\n    @include menu-styles;\n    max-height: 70vh;\n\n    .option {\n      min-height: 18px;\n    }\n\n    & > div[data-value='new'] {\n      &:before {\n        @include icon;\n        content: 'plus';\n        margin-right: 5px;\n      }\n\n      &:after {\n        content: '…';\n      }\n    }\n  }\n\n  &.no-scroll .selectize-dropdown-content {\n    max-height: 200px; // default for selectize\n  }\n}\n\n/* datepicker */\n.ui-datepicker {\n  position: fixed;\n  top: -300px;\n  @include margin-left(1px);\n  -padding: 10px;\n  width: 210px;\n  height: 242px;\n  z-index: 101 !important;\n}\n\n.ui-datepicker-header {\n  padding: 8px 8px 4px;\n}\n\n.ui-datepicker-prev {\n  @include floatleft;\n}\n\n.ui-datepicker-next {\n  @include floatright;\n}\n\n.ui-datepicker-prev span,\n.ui-datepicker-next span {\n  display: none;\n}\n\n.ui-datepicker-prev,\n.ui-datepicker-next {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  &:hover:after {\n    border-color: var(--link-color);\n  }\n}\n\n.ui-datepicker-prev:after {\n  @include angle(left);\n}\n\n.ui-datepicker-next:after {\n  @include angle(right);\n}\n\n.ui-datepicker-title {\n  text-align: center;\n}\n\n.ui-datepicker-calendar th,\n.ui-datepicker-calendar td {\n  padding: 2px !important;\n}\n\n.ui-datepicker-calendar th span,\n.ui-datepicker-calendar td a {\n  display: block;\n  width: toRem(26);\n  line-height: 26px;\n  text-align: center;\n  color: var(--text-color);\n}\n\n.ui-datepicker-calendar th span {\n  color: var(--medium-text-color);\n  font-weight: normal;\n}\n\n.ui-datepicker-calendar td a {\n  border-radius: 2px;\n}\n\n.ui-datepicker-calendar td a:hover {\n  background-color: var(--light-sel-color);\n  text-decoration: none;\n}\n\n.ui-datepicker-calendar td a.ui-state-active {\n  background-color: var(--dark-sel-color);\n  color: var(--white);\n  @include light-on-dark-text;\n  cursor: default;\n}\n\n.ui-datepicker-calendar td.ui-datepicker-today a {\n  border-radius: 13px;\n  box-shadow: inset 0 0 0 2px var(--light-sel-color);\n}\n\n/* timepicker */\n.ui-timepicker-wrapper {\n  z-index: 101;\n}\n\n.ui-timepicker-list {\n  @include margin-left(1px);\n  overflow-y: auto;\n  width: calc(14px + 6em);\n  height: 210px;\n  z-index: 100;\n}\n\n.ui-timepicker-list li {\n  @include padding(2px, 0, 2px, 14px);\n  white-space: nowrap;\n  cursor: pointer;\n}\n\n.ui-timepicker-list li:hover {\n  background-color: var(--light-sel-color);\n}\n\n.ui-timepicker-list li.ui-timepicker-selected {\n  background-color: var(--dark-sel-color);\n  color: var(--white);\n  @include light-on-dark-text;\n  cursor: default;\n}\n\n/* slide picker */\n.slide-picker {\n  display: flex;\n  height: 1rem;\n  white-space: nowrap;\n\n  a {\n    position: relative;\n    border: 1px solid var(--hairline-color);\n    @include border-left(none);\n    background-image: none;\n    width: calc(8rem / 16 - 1px);\n    height: calc(1rem - 2px);\n    margin-left: 0;\n    margin-top: 1px;\n    margin-bottom: 1px;\n    box-sizing: border-box;\n    cursor: pointer;\n\n    &:first-child {\n      width: calc(8rem / 16);\n      @include border-left(1px solid var(--gray-400) !important);\n    }\n\n    &:before {\n      content: '';\n      position: absolute;\n      top: calc(-4rem / 16 - 1px);\n      left: -1px;\n      width: calc(100% + 2px);\n      height: var(--touch-target-size);\n    }\n  }\n\n  &:not(:hover) a.active,\n  &:hover a.active-hover {\n    border-top-color: var(--gray-400);\n    border-bottom-color: var(--gray-400);\n    height: 1rem;\n    margin-top: 0;\n    margin-bottom: 0;\n\n    &:first-child {\n      @include border-left(1px solid var(--gray-400));\n      @include border-top-left-radius(var(--small-border-radius));\n      @include border-bottom-left-radius(var(--small-border-radius));\n    }\n  }\n\n  &:not(:hover) a.last-active,\n  &:hover a.last-active-hover {\n    @include border-right(1px solid var(--gray-400));\n    @include border-top-right-radius(var(--small-border-radius));\n    @include border-bottom-right-radius(var(--small-border-radius));\n  }\n\n  &:focus {\n    a.active {\n      background-color: var(--light-sel-color);\n    }\n  }\n}\n\n/* icon picker */\n.icon-picker {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  gap: var(--xs);\n}\n\n.icon-picker--icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  @include input-styles;\n  border-radius: var(--ui-control-border-radius);\n  width: var(--ui-control-height);\n  height: var(--ui-control-height);\n  background: var(--gray-050);\n\n  svg {\n    width: calc(20rem / 16);\n    height: calc(20rem / 16);\n    @include svg-mask(var(--ui-control-color));\n  }\n}\n\n.icon-picker-modal {\n  --width: calc(var(--ui-control-height) * 10 + var(--s) * 9 + var(--xl) * 2);\n  width: var(--width) !important;\n  min-width: 0 !important;\n  max-width: calc(100% - 20px) !important;\n\n  .body {\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: var(--l);\n\n    .icon-picker-modal--list {\n      flex: 1;\n      position: relative;\n      overflow: hidden;\n\n      &:not(.loading) {\n        .spinner {\n          display: none;\n        }\n      }\n\n      &.loading {\n        &:after {\n          position: absolute;\n          top: 0;\n          left: 0;\n          width: 100%;\n          height: 100%;\n          content: '';\n          background-color: rgba(255, 255, 255, 0.75);\n        }\n\n        .spinner {\n          top: calc(50% - 10px);\n          z-index: 1;\n        }\n      }\n\n      ul {\n        display: flex;\n        flex-direction: row;\n        flex-wrap: wrap;\n        justify-content: start;\n        gap: var(--s);\n        max-height: 100%;\n        overflow: auto;\n\n        .icon-picker--icon {\n          --focus-ring: var(--inner-focus-ring);\n\n          &:hover {\n            border-color: var(--link-color);\n            background-color: var(--blue-100);\n          }\n        }\n      }\n    }\n  }\n}\n\n/* errors */\nul.errors {\n  margin-top: 5px;\n  list-style-type: square;\n  @include padding-left(20px);\n}\n\nul.errors li {\n  color: var(--error-color);\n}\n\n/* message pages */\n.message-container {\n  position: absolute;\n  z-index: 100;\n  top: 0;\n  @include left(0);\n  width: 100%;\n  height: 100%;\n\n  &.no-access {\n    background-color: transparentize($grey900, 0.5);\n  }\n\n  .pane {\n    top: 50%;\n    margin-top: -33px !important;\n    margin-left: auto;\n    margin-right: auto;\n    width: 320px;\n    box-shadow: 0 25px 100px transparentize($grey900, 0.5);\n  }\n}\n\n/* 2FA setup page */\nbody.setup-2fa {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n\n  #setup-2fa {\n    display: flex;\n    flex-direction: column;\n    gap: var(--l);\n    width: 550px;\n    max-width: 100%;\n    padding: var(--padding);\n\n    #setup-2fa-intro {\n      text-align: center;\n    }\n\n    #setup-2fa-btn {\n      display: flex;\n      justify-content: center;\n    }\n  }\n}\n\n/* licensing issues page */\nbody.licensing-issues {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n  padding: var(--padding);\n\n  #licensing-issues {\n    display: flex;\n    flex-direction: row;\n    max-width: 50em;\n\n    .buttons {\n      justify-content: space-between;\n      [data-icon] {\n        margin-left: 0;\n        margin-right: 0;\n      }\n    }\n  }\n\n  #continue {\n    margin: 0;\n  }\n}\n\n/* auto-suggest */\n.autosuggest-container {\n  position: relative;\n}\n\n.autosuggest__results-container {\n  position: absolute;\n  z-index: 2;\n  width: 100%;\n  border-radius: var(--large-border-radius);\n  background-color: var(--white);\n  @include shadow;\n  box-sizing: border-box;\n  padding: 0 14px;\n  text-align: left;\n  @include sans-serif-font;\n  font-size: 1em !important;\n\n  .autosuggest__results-before {\n    @include h6-styles;\n    margin-top: 14px !important;\n  }\n\n  .autosuggest__results-item {\n    @include menu-item-styles;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    &:hover,\n    &.autosuggest__results-item--highlighted {\n      @include menu-item-active-styles;\n      cursor: pointer;\n    }\n  }\n}\n\n/* ----------------------------------------\n/* Matrix\n/* ----------------------------------------*/\n\n/* Matrix fields */\n.matrix {\n  & > .buttons {\n    margin-top: 10px;\n  }\n}\n\n.matrixblock {\n  position: relative;\n  margin-bottom: 10px;\n  padding: 0 var(--m) var(--m);\n  border-radius: var(--large-border-radius);\n  border: 2px solid var(--gray-100);\n  background-color: var(--white);\n\n  &.static {\n    .titlebar {\n      @include padding-right(0);\n      @include padding-left(14px);\n      margin-bottom: 14px;\n    }\n  }\n\n  & > .titlebar > .matrixblock-tabs .pane-tabs .menubtn:not(.action-btn),\n  & > .actions .action-btn {\n    padding: 0;\n    width: var(--touch-target-size);\n    height: var(--touch-target-size);\n    color: var(--custom-text-color, var(--ui-control-color));\n    background-color: transparent;\n\n    &:hover {\n      backdrop-filter: brightness(90%);\n    }\n\n    &:active,\n    &[aria-expanded='true'] {\n      backdrop-filter: brightness(85%);\n    }\n  }\n\n  .flex-fields {\n    --row-gap: var(--m) !important;\n  }\n\n  // no margin when a .field comes after a hidden item.\n  .hidden + .field {\n    margin-top: 0;\n  }\n\n  & > .titlebar {\n    display: grid;\n    grid-template-columns: auto 1fr;\n    align-items: center;\n    gap: var(--m);\n    margin: 0 calc(var(--m) * -1);\n    box-sizing: border-box;\n    border-radius: calc(var(--large-border-radius) - 2px)\n      calc(var(--large-border-radius) - 2px) 0 0;\n    @include padding(5px, calc(var(--m) + 70px), 5px, var(--m));\n    color: var(--custom-text-color, var(--light-text-color));\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    word-wrap: normal;\n    cursor: default;\n    user-select: none;\n    position: relative;\n    background-color: var(--gray-050);\n    min-height: calc(var(--lh) + 10px);\n\n    & > .preview {\n      flex-grow: 1;\n      min-width: 0;\n      opacity: 0;\n      transition: opacity linear 100ms;\n      overflow: hidden;\n\n      &:empty {\n        display: none;\n      }\n\n      body.ltr & {\n        mask-image: linear-gradient(\n          to left,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 12px\n        );\n      }\n      body.rtl & {\n        mask-image: linear-gradient(\n          to right,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 12px\n        );\n      }\n\n      span {\n        opacity: 0.5;\n      }\n    }\n\n    & > .matrixblock-tabs {\n      flex: 1;\n      min-width: 0;\n      margin: -5px 0;\n\n      .pane-tabs {\n        margin: 0;\n        @include padding-right(3px);\n\n        [role='tablist'] {\n          padding: 0 12px;\n\n          &.scrollable {\n            mask-image: linear-gradient(\n              to right,\n              rgba(0, 0, 0, 0),\n              rgba(0, 0, 0) 12px,\n              rgba(0, 0, 0) calc(100% - 12px),\n              rgba(0, 0, 0, 0) 100%\n            );\n          }\n\n          [role='tab'] {\n            background-color: transparent;\n\n            .tab-label {\n              height: calc(var(--lh) + 10px);\n              padding: 0 var(--m);\n            }\n          }\n        }\n\n        .menubtn:not(.action-btn) {\n          margin-left: 0;\n          margin-right: 0;\n\n          &:not(:empty):not(.btn-empty)::after {\n            @include margin-left(0px);\n          }\n        }\n      }\n    }\n\n    & > .preview:first-child:empty + .matrixblock-tabs {\n      @include margin-left(calc((var(--m) + 12px) * -1));\n\n      [role='tab']:first-child {\n        &,\n        .tab-label {\n          @include border-top-left-radius(\n            calc(var(--large-border-radius) - 2px)\n          );\n        }\n      }\n    }\n  }\n\n  &.disabled-entry {\n    & > .titlebar {\n      @include padding-right(100px);\n    }\n\n    & > .actions {\n      & > .status {\n        &.off {\n          display: block;\n        }\n      }\n    }\n  }\n\n  &.collapsed {\n    & > .titlebar {\n      border-radius: calc(var(--large-border-radius) - 2px);\n\n      & > .preview {\n        opacity: 1;\n      }\n    }\n  }\n\n  & > .actions {\n    display: flex;\n    align-items: center;\n    gap: var(--xs);\n    position: absolute;\n    top: 0;\n    @include right(var(--m));\n    cursor: default;\n    min-height: calc(var(--lh) + 10px);\n\n    & > * {\n      margin: 0 !important;\n    }\n\n    & > .status {\n      &.off {\n        display: none;\n      }\n    }\n\n    a:not([data-action]) {\n      padding: 0;\n      height: var(--touch-target-size);\n      text-align: center;\n      color: var(--dark-hairline-color);\n      transform: color linear 100ms;\n\n      &:hover {\n        color: var(--link-color);\n\n        &.settings:after {\n          border-color: var(--link-color);\n        }\n      }\n    }\n  }\n\n  &:not(.static) {\n    & > .fields {\n      padding-top: var(--l);\n    }\n  }\n\n  & > .fields > .flex-fields > .field {\n    &:before {\n      display: none;\n    }\n\n    & > .status-badge {\n      @include left(-2px);\n    }\n  }\n\n  & > .buttons {\n    margin-top: 0;\n    height: 30px;\n  }\n}\n\n/* categories */\n.add-category-form {\n  margin-top: 24px;\n}\n\n.add-category-form .texticon {\n  width: 200px;\n  @include floatleft;\n  @include margin-right(5px);\n}\n\n.add-category-form .texticon .text {\n  @include padding-right(30px);\n}\n\n.add-category-form .texticon .spinner {\n  position: absolute;\n  top: 0;\n  @include right(5px);\n}\n\n/* site pickers */\nbody.sitepicker {\n  #main-content {\n    padding: 30px;\n    justify-content: center;\n    align-items: center;\n    text-align: center;\n  }\n\n  #content-container {\n    max-width: 400px;\n  }\n}\n\n.sitepicker-group {\n  li {\n    &:not(:first-child) {\n      a {\n        margin-top: -1px;\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n\n        &:not(:hover) {\n          border-top-color: transparent;\n        }\n      }\n    }\n\n    &:not(:last-child) {\n      a {\n        border-bottom-left-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n    }\n\n    a {\n      display: block;\n      position: relative;\n      text-align: left;\n      width: 100%;\n      box-sizing: border-box;\n      border: 1px solid var(--hairline-color);\n      border-radius: var(--medium-border-radius);\n      @include padding(9px, 42px, 9px, 15px);\n      font-size: 16px;\n      line-height: 1.4;\n\n      &:after {\n        font-size: 14px;\n        position: absolute;\n        top: calc(50% - 7px);\n        @include right(12px);\n        margin: 0;\n        padding: 0;\n      }\n\n      &:hover {\n        border-color: var(--link-color);\n        text-decoration: none;\n        z-index: 1;\n      }\n    }\n  }\n}\n\n/* ----------------------------------------\n/* IE hacks\n/* ----------------------------------------*/\n\n/* Fix layout of modal element selectors for IE8 */\n.elementselectormodal .body .main {\n  float: left \\9;\n  width: 445px \\9;\n}\n\n/* ----------------------------------------\n/*  Retina graphics\n/* ----------------------------------------*/\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n  only screen and (-moz-min-device-pixel-ratio: 1.5),\n  only screen and (-o-min-device-pixel-ratio: 3/2),\n  only screen and (min-device-pixel-ratio: 1.5),\n  only screen and (min-resolution: 1.5dppx) {\n  .structure ul li {\n    background-size: 40px;\n    body.ltr & {\n      background-image: url(../images/branch_2x.png);\n    }\n    body.rtl & {\n      background-image: url(../images/branch_rtl_2x.png);\n    }\n  }\n\n  .hud .tip-left {\n    background-image: url(../images/hudtip_left_2x.png);\n    background-size: 15px 30px;\n  }\n  .hud .tip-top {\n    background-image: url(../images/hudtip_top_2x.png);\n    background-size: 30px 15px;\n  }\n  .hud .tip-right {\n    background-image: url(../images/hudtip_right_2x.png);\n    background-size: 15px 30px;\n  }\n  .hud .tip-bottom {\n    background-image: url(../images/hudtip_bottom_2x.png);\n    background-size: 30px 15px;\n  }\n  .hud.has-footer .tip-bottom {\n    background-image: url(../images/hudtip_bottom_gray_2x.png);\n  }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$red050: #fef2f2;\n$red100: #fee2e2;\n$red200: #fecaca;\n$red300: #fca5a5;\n$red400: #f87171;\n$red500: #ef4444;\n$red600: #dc2626;\n$red700: #b91c1c;\n$red800: #991b1b;\n$red900: #7f1d1d;\n\n$orange050: #fff7ed;\n$orange100: #ffedd5;\n$orange200: #fed7aa;\n$orange300: #fdba74;\n$orange400: #fb923c;\n$orange500: #f97316;\n$orange600: #ea580c;\n$orange700: #c2410c;\n$orange800: #9a3412;\n$orange900: #7c2d12;\n\n$yellow050: #fefce8;\n$yellow100: #fef9c3;\n$yellow200: #fef08a;\n$yellow300: #fde047;\n$yellow400: #facc15;\n$yellow500: #eab308;\n$yellow600: #ca8a04;\n$yellow700: #a16207;\n$yellow800: #854d0e;\n$yellow900: #713f12;\n\n$green050: #f0fdf4;\n$green100: #dcfce7;\n$green200: #bbf7d0;\n$green300: #86efac;\n$green400: #4ade80;\n$green500: #22c55e;\n$green600: #16a34a;\n$green700: #15803d;\n$green800: #166534;\n$green900: #14532d;\n\n$teal050: #f0fdfa;\n$teal100: #ccfbf1;\n$teal200: #99f6e4;\n$teal300: #5eead4;\n$teal400: #2dd4bf;\n$teal500: #14b8a6;\n$teal550: #11a697;\n$teal600: #0d9488;\n$teal700: #0f766e;\n$teal800: #115e59;\n$teal900: #134e4a;\n\n$cyan050: #ecfeff;\n$cyan100: #cffafe;\n$cyan200: #a5f3fc;\n$cyan300: #67e8f9;\n$cyan400: #22d3ee;\n$cyan500: #06b6d4;\n$cyan600: #0891b2;\n$cyan700: #0e7490;\n$cyan800: #155e75;\n$cyan900: #164e63;\n\n$blue050: #eff6ff;\n$blue100: #dbeafe;\n$blue200: #bfdbfe;\n$blue300: #93c5fd;\n$blue400: #60a5fa;\n$blue500: #3b82f6;\n$blue600: #2563eb;\n$blue700: #1d4ed8;\n$blue800: #1e40af;\n$blue900: #1e3a8a;\n\n$violet050: #f5f3ff;\n$violet100: #ede9fe;\n$violet200: #ddd6fe;\n$violet300: #c4b5fd;\n$violet400: #a78bfa;\n$violet500: #8b5cf6;\n$violet600: #7c3aed;\n$violet700: #6d28d9;\n$violet800: #5b21b6;\n$violet900: #4c1d95;\n\n$pink050: #fdf2f8;\n$pink100: #fce7f3;\n$pink200: #fbcfe8;\n$pink300: #f9a8d4;\n$pink400: #f472b6;\n$pink500: #ec4899;\n$pink600: #db2777;\n$pink700: #be185d;\n$pink800: #9d174d;\n$pink900: #831843;\n\n// submit button colors\n$primaryColor: $red600;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $textColor;\n$menuOptionActiveBackgroundColor: $grey050;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing:\n  0 0 0 1px $lightFocusColor,\n  0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing:\n  0 0 0 1px $mediumFocusColor,\n  0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing:\n  0 0 0 1px $darkFocusColor,\n  0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n\n@mixin sans-serif-font {\n  font-family:\n    system-ui,\n    BlinkMacSystemFont,\n    -apple-system,\n    'Segoe UI',\n    'Roboto',\n    'Oxygen',\n    'Ubuntu',\n    'Cantarell',\n    'Fira Sans',\n    'Droid Sans',\n    'Helvetica Neue',\n    sans-serif;\n}\n\n@mixin fixed-width-font {\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n    monospace;\n  font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n  $max: length($values);\n  $remValues: '';\n\n  @for $i from 1 through $max {\n    $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n    @if $i < $max {\n      $remValues: #{$remValues + ' '};\n    }\n  }\n\n  @return $remValues;\n}\n\n@mixin fontSize($size) {\n  font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n  body:not(.reduce-focus-visibility) &:focus,\n  body.reduce-focus-visibility &:focus-visible {\n    @content;\n  }\n}\n\n@mixin svg-mask($color) {\n  rect,\n  circle,\n  ellipse,\n  line,\n  polyline,\n  polygon,\n  path,\n  text {\n    fill: $color;\n    stroke-width: 0;\n  }\n}\n\n@mixin icon {\n  font-family: 'Craft';\n  speak: never;\n  -webkit-font-feature-settings: 'liga', 'dlig';\n  -moz-font-feature-settings: 'liga=1, dlig=1';\n  -moz-font-feature-settings: 'liga', 'dlig';\n  -ms-font-feature-settings: 'liga', 'dlig';\n  -o-font-feature-settings: 'liga', 'dlig';\n  font-feature-settings: 'liga', 'dlig';\n  text-rendering: optimizeLegibility;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  direction: ltr; // Fixes a rendering issue in Chrome/Win\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n\n  display: inline-block;\n  text-align: center;\n  font-style: normal;\n  vertical-align: middle;\n  word-wrap: normal !important;\n  user-select: none;\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: calc(2rem / 16)) {\n  display: block;\n  content: '';\n  font-size: 0;\n  width: calc(7rem / 16);\n  height: calc(7rem / 16);\n  border: solid $color;\n  border-width: 0 $width $width 0;\n  opacity: 0.8;\n  position: relative;\n\n  @if $dir == up {\n    transform: rotate(225deg);\n    top: 2px;\n  } @else if $dir == down {\n    transform: rotate(45deg);\n  } @else if $dir == left {\n    body.ltr & {\n      transform: rotate(135deg);\n    }\n    body.rtl & {\n      transform: rotate(-45deg);\n    }\n  } @else if $dir == right {\n    body.ltr & {\n      transform: rotate(-45deg);\n    }\n    body.rtl & {\n      transform: rotate(135deg);\n    }\n  }\n}\n\n@mixin clearafter {\n  content: '';\n  display: block;\n  height: 0;\n  clear: both;\n  visibility: hidden;\n}\n\n@mixin shadow {\n  box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n  background: $white;\n  box-shadow:\n    0 0 0 1px $grey200,\n    0 2px 12px transparentize($grey200, 0.5);\n\n  &:focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n@mixin modal {\n  border-radius: $largeBorderRadius;\n  background-color: $white;\n  box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n  // Make light on dark text sharp on Macs\n  // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n}\n\n@mixin light-focus-ring() {\n  --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n    0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n  @if $secondary != null {\n    --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n  } @else {\n    --focus-ring: 0 0 0 3px #{$primary};\n  }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n  // Creates a two-color focus ring, with a white\n  // If button is light, the dark box shadow is adjacent to the button\n  // Else the light box shadow is adjacent to the button\n  --light-color: var(--white);\n  --dark-color: var(--gray-800);\n\n  @if $light-button {\n    --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n  } @else {\n    --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n  }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n  body.ltr & {\n    left: $left;\n  }\n  body.rtl & {\n    right: $left;\n  }\n}\n\n@mixin right($right) {\n  body.ltr & {\n    right: $right;\n  }\n  body.rtl & {\n    left: $right;\n  }\n}\n\n@mixin alignleft {\n  body.ltr & {\n    text-align: left;\n  }\n  body.rtl & {\n    text-align: right;\n  }\n}\n\n@mixin alignright {\n  body.ltr & {\n    text-align: right;\n  }\n  body.rtl & {\n    text-align: left;\n  }\n}\n\n@mixin border-left($params...) {\n  body.ltr & {\n    border-left: $params;\n  }\n  body.rtl & {\n    border-right: $params;\n  }\n}\n\n@mixin border-right($params...) {\n  body.ltr & {\n    border-right: $params;\n  }\n  body.rtl & {\n    border-left: $params;\n  }\n}\n\n@mixin border-left-width($param) {\n  body.ltr & {\n    border-left-width: $param;\n  }\n  body.rtl & {\n    border-right-width: $param;\n  }\n}\n\n@mixin border-right-width($param) {\n  body.ltr & {\n    border-right-width: $param;\n  }\n  body.rtl & {\n    border-left-width: $param;\n  }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n  body.ltr & {\n    border-radius: $tl $tr $br $bl;\n  }\n  body.rtl & {\n    border-radius: $tr $tl $bl $br;\n  }\n}\n\n@mixin border-top-left-radius($params...) {\n  body.ltr & {\n    border-top-left-radius: $params;\n  }\n  body.rtl & {\n    border-top-right-radius: $params;\n  }\n}\n\n@mixin border-top-right-radius($params...) {\n  body.ltr & {\n    border-top-right-radius: $params;\n  }\n  body.rtl & {\n    border-top-left-radius: $params;\n  }\n}\n\n@mixin border-bottom-left-radius($params...) {\n  body.ltr & {\n    border-bottom-left-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-right-radius: $params;\n  }\n}\n\n@mixin border-bottom-right-radius($params...) {\n  body.ltr & {\n    border-bottom-right-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-left-radius: $params;\n  }\n}\n\n@mixin floatleft {\n  body.ltr & {\n    float: left;\n  }\n  body.rtl & {\n    float: right;\n  }\n}\n\n@mixin floatright {\n  body.ltr & {\n    float: right;\n  }\n  body.rtl & {\n    float: left;\n  }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    margin: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    margin: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin margin-left($margin...) {\n  body.ltr & {\n    margin-left: $margin;\n  }\n  body.rtl & {\n    margin-right: $margin;\n  }\n}\n\n@mixin margin-right($margin...) {\n  body.ltr & {\n    margin-right: $margin;\n  }\n  body.rtl & {\n    margin-left: $margin;\n  }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    padding: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    padding: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin padding-left($padding...) {\n  body.ltr & {\n    padding-left: $padding;\n  }\n  body.rtl & {\n    padding-right: $padding;\n  }\n}\n\n@mixin padding-right($padding...) {\n  body.ltr & {\n    padding-right: $padding;\n  }\n  body.rtl & {\n    padding-left: $padding;\n  }\n}\n\n// Misc\n\n@mixin dark-inputs {\n  @include placeholder-styles($grey400);\n\n  .btn,\n  .select:not(.selectize) select {\n    background-color: $grey200;\n\n    &:focus,\n    &:hover {\n      background-color: darken($grey200, 5%);\n    }\n\n    &:active,\n    &.active {\n      background-color: darken($grey200, 10%);\n    }\n  }\n\n  .text {\n    background-color: $grey200;\n\n    &:focus {\n      background-color: darken($grey200, 5%);\n    }\n  }\n}\n\n@mixin header-btn {\n  width: calc(30rem / 16);\n  height: calc(30rem / 16);\n  padding-left: 0;\n  padding-right: 0;\n\n  &:not(:hover):not(:active):not(.active) {\n    background-color: transparent;\n  }\n  &:not(:active):not(.active):hover {\n    background-color: transparentize($grey300, 0.85);\n  }\n}\n\n@mixin h6-styles {\n  margin: 14px 0 3px;\n  font-size: 11px;\n  line-height: 1.2;\n  color: $lightTextColor;\n  text-transform: uppercase;\n}\n\n@mixin token-styles {\n  display: inline-block;\n  border-radius: $smallBorderRadius;\n  padding: 3px 7px;\n  font-size: 12px;\n  line-height: 14px;\n  color: $textColor;\n  background-color: $grey100;\n}\n\n@mixin active-token-styles {\n  background-color: $grey200;\n}\n\n@mixin menu-styles {\n  z-index: 100;\n  border-radius: $menuBorderRadius;\n  padding: 0 14px;\n  overflow: auto;\n  background: $white;\n  user-select: none;\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-item-styles {\n  margin: 0 -14px;\n  padding: 10px 14px;\n  color: $menuOptionColor;\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n@mixin menu-item-active-styles {\n  color: var(--white) !important;\n  background-color: var(--dark-sel-color);\n\n  svg {\n    @include svg-mask(var(--white));\n  }\n}\n\n@mixin disclosure-link-hover-styles {\n  color: $menuOptionColor;\n  background-color: $grey050;\n}\n\n@mixin input-styles {\n  border-radius: $smallBorderRadius;\n  border: 1px solid transparentize($inputColor, 0.75);\n  background-color: hsl(212, 50%, 99%);\n  background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n  box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n  input::-webkit-input-placeholder,\n  textarea::-webkit-input-placeholder {\n    color: $color;\n  }\n\n  input:-ms-input-placeholder,\n  textarea:-ms-input-placeholder {\n    color: $color;\n  }\n\n  input::-ms-input-placeholder,\n  textarea::-ms-input-placeholder {\n    color: $color;\n  }\n\n  input:-moz-placeholder,\n  textarea:-moz-placeholder {\n    color: $color;\n  }\n\n  input::-moz-placeholder,\n  textarea::-moz-placeholder {\n    color: $color;\n  }\n\n  input::placeholder,\n  textarea::placeholder {\n    color: $color;\n  }\n}\n\n@mixin select-styles {\n  position: relative;\n  border-radius: $largeBorderRadius;\n  white-space: nowrap;\n}\n\n@mixin select-container-styles {\n  max-width: 100%;\n  position: relative;\n  :not(.flex) > & {\n    display: inline-block;\n  }\n}\n\n@mixin select-arrow-styles {\n  @include angle;\n  position: absolute;\n  z-index: 1;\n  top: calc(50% - 5px);\n  @include right(9px);\n  user-select: none;\n  pointer-events: none;\n  color: var(--ui-control-color);\n}\n\n@mixin select-input-styles {\n  display: block;\n  position: relative;\n  max-width: 100%;\n  border: none;\n  @include padding(7px, 22px, 7px, 10px);\n  font-size: 14px;\n  line-height: 20px;\n  color: $textColor;\n  background-color: hsl(212, 25%, 90%);\n  appearance: none;\n  // from https://stackoverflow.com/a/15933790/1688568\n  &::-ms-expand {\n    display: none;\n  }\n}\n\n@mixin select-input-fullwidth-styles {\n  min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n  outline-color: transparent;\n  background-color: hsl(212, 25%, 85%);\n  box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n  height: var(--touch-target-size);\n  width: var(--touch-target-size);\n}\n\n// https://tailwindcss.com/docs/screen-readers#undoing-screen-reader-only-elements\n@mixin visually-hidden {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@mixin not-visually-hidden {\n  position: static;\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n@mixin readable {\n  font-size: 16px;\n  line-height: 22px;\n\n  h1,\n  .h1,\n  h2,\n  .h2,\n  h3,\n  .h3,\n  h4,\n  .h4,\n  h5,\n  .h5,\n  h6,\n  .h6 {\n    margin: 24px 0 16px;\n    font-weight: 600;\n  }\n\n  h1,\n  .h1 {\n    font-size: 32px;\n    line-height: 40px;\n    color: #000;\n  }\n\n  h2,\n  .h2 {\n    font-size: 24px;\n    line-height: 30px;\n  }\n\n  h3,\n  .h3 {\n    font-size: 20px;\n    line-height: 24px;\n  }\n\n  h4,\n  .h4 {\n    font-size: 16px;\n    line-height: 20px;\n  }\n\n  h5,\n  .h5 {\n    font-size: 14px;\n    line-height: 18px;\n  }\n\n  h6,\n  .h6 {\n    font-size: 13.6px;\n    line-height: 17px;\n    color: $mediumTextColor;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n\n  .tip-dismiss-btn {\n    position: absolute;\n    top: 12px;\n    @include right(12px);\n\n    & + p {\n      margin-top: 0;\n    }\n  }\n\n  blockquote {\n    margin: 16px 0;\n\n    &:not(.note) {\n      padding: 0 16px;\n      color: $mediumTextColor;\n      @include border-left(4px solid $hairlineColor);\n    }\n\n    &.note {\n      position: relative;\n      border-radius: 4px;\n      padding: 1em;\n      @include padding-left(50px);\n      border: 1px solid;\n\n      &.dismissible {\n        @include padding-right(36px);\n      }\n\n      &:not(.tip):not(.warning) {\n        border-color: $errorColor;\n        color: #bf503f;\n\n        &:before {\n          content: 'alert';\n          color: $errorColor;\n        }\n      }\n\n      &.tip {\n        border-color: $linkColor;\n        color: $linkColor;\n\n        &:before {\n          content: 'lightbulb';\n          color: $linkColor;\n        }\n      }\n\n      &.warning {\n        border-color: $warningColor;\n        color: #cf783a;\n\n        &:before {\n          content: 'alert';\n          color: $warningColor;\n        }\n      }\n\n      &:before {\n        @include icon;\n        opacity: 1;\n        position: absolute;\n        top: 15px;\n        @include left(16px);\n        font-size: 24px;\n        width: 24px;\n      }\n\n      a[href] {\n        color: currentColor;\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .go:after {\n    font-size: 14px;\n  }\n}\n\n@mixin checkered-bg($size) {\n  // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n  $halfSize: $size * 0.5;\n  background-image: linear-gradient(\n      45deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      135deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      45deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    ),\n    linear-gradient(\n      135deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    );\n  background-size: $size $size;\n  background-position:\n    0 0,\n    $halfSize 0,\n    $halfSize -#{$halfSize},\n    0 $halfSize;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n$sidebarWidth: calc(226rem / 16);\n$sidebarZIndex: 100;\n$detailsWidth: 350px;\n$minFullUiWidth: calc(1200rem / 16);\n$minXlUiWidth: calc(1536rem / 16);\n$minDesktopWidth: calc(600rem / 16);\n$minHorizontalUiWidth: $minFullUiWidth - $sidebarWidth;\n\n// Colors\n$badgeBackgroundColor: var(--gray-200);\n$badgeColor: var(--gray-800);\n\n:root {\n  --xs: 4px;\n  --s: 8px;\n  --m: 14px;\n  --l: 18px;\n  --xl: 24px;\n  --padding: var(--xl);\n  --neg-padding: calc(var(--padding) * -1);\n  --sidebar-width: #{$sidebarWidth};\n  --global-sidebar-width: #{$sidebarWidth};\n  --header-height: calc(44rem / 16);\n  --details-width: #{$detailsWidth};\n}\n\nhtml {\n  -webkit-text-size-adjust: 100%;\n  min-height: 100vh;\n}\n\nbody {\n  min-height: 100vh;\n\n  &.dragging * {\n    cursor: move !important;\n    cursor: grabbing !important;\n  }\n\n  :focus {\n    outline-style: solid;\n    outline-color: transparent;\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.reduce-focus-visibility {\n  :focus:not(:focus-visible) {\n    box-shadow: none;\n  }\n\n  :focus-visible {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.skip-link {\n  position: absolute;\n  margin: 5px;\n  left: -10000px;\n  top: 0;\n  width: 1px;\n  height: 1px;\n  overflow: hidden;\n  z-index: $sidebarZIndex + 1;\n\n  &:focus {\n    left: unset;\n    @include left(0);\n    width: auto;\n    height: auto;\n    background-color: var(--gray-100) !important;\n  }\n}\n\n#global-skip-link {\n  @media only screen and (min-width: $minFullUiWidth) {\n    @include two-color-focus-ring;\n  }\n}\n\n#global-container {\n  position: relative;\n  display: flex;\n  min-height: 100vh;\n\n  @media screen and (prefers-reduced-motion: no-preference) {\n    body.ltr & {\n      transition: left 100ms cubic-bezier(0.33, 1, 0.68, 1);\n    }\n\n    body.rtl & {\n      transition: right 100ms cubic-bezier(0.33, 1, 0.68, 1);\n    }\n  }\n}\n\n#global-header {\n  display: grid;\n  grid-template-columns: 1fr min-content min-content;\n  align-items: center;\n}\n\n/* global sidebar */\n$sidebarLinkStaticColor: var(--gray-100);\n$sidebarLinkSecondaryColor: var(--gray-200);\n\n$systemInfoBgColor: darken($grey800, 5%);\n$systemInfoHoverBgColor: darken($grey800, 10%);\n\n#system-info {\n  display: grid;\n  grid-template-columns: var(--prefix-width) auto;\n  gap: 10px;\n  height: calc(45rem / 16);\n  padding: 0 var(--gutter-width);\n  position: relative;\n  flex: 0 0 calc(45rem / 16);\n  flex-direction: row;\n  align-items: center;\n  color: currentColor;\n  border-bottom: 1px solid var(--hairline-color);\n  background-clip: padding-box;\n\n  &:after {\n    display: none;\n  }\n\n  &:focus,\n  &:hover {\n    text-decoration: none;\n    background-color: var(--gray-200);\n  }\n}\n\n#site-icon {\n  --size: var(--prefix-width); // Matches .sidebar-action__prefix\n  height: var(--size);\n\n  img,\n  svg {\n    display: block;\n    width: var(--size);\n    height: var(--size);\n    border-radius: 4px;\n  }\n\n  svg {\n    @include svg-mask(var(--medium-text-color));\n  }\n}\n\n#system-name {\n  h2,\n  .h2 {\n    margin: 0;\n    width: 100%;\n    overflow: hidden;\n    max-height: 40px;\n    position: relative;\n\n    // Multi-line text overflow ellipsis\n    // (https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp)\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 2;\n  }\n}\n\n@media only screen and (min-width: $minFullUiWidth) {\n  [data-sidebar='collapsed'] {\n    #system-info:hover #system-name {\n      opacity: 1;\n      transform: translateY(-50%) translateX(0);\n    }\n\n    #system-name {\n      position: absolute;\n      left: calc(100% + (var(--s) * 2));\n      top: 50%;\n      transform: translateY(-50%) translateX(-5px);\n      opacity: 0;\n      @include pane;\n      color: var(--text-color);\n      border-radius: var(--medium-border-radius);\n      padding: var(--xs) var(--s);\n      white-space: nowrap;\n      pointer-events: none;\n\n      @media screen and (prefers-reduced-motion: no-preference) {\n        transition:\n          opacity 50ms cubic-bezier(0.33, 1, 0.68, 1),\n          transform 150ms cubic-bezier(0.33, 1, 0.68, 1);\n      }\n    }\n  }\n}\n\n#global-footer {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: var(--m) var(--m) var(--xl);\n  gap: var(--m);\n\n  body.has-debug-toolbar & {\n    padding-bottom: calc(var(--xl) + 42px);\n  }\n\n  a {\n    white-space: nowrap;\n  }\n}\n\n#app-info {\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  gap: var(--m);\n}\n\n#trial-info {\n  padding: 16px var(--xl);\n  border-radius: var(--large-border-radius);\n  background-color: var(--gray-150);\n  box-shadow:\n    inset 0 1px 0 rgba(255, 255, 255, 0.5),\n    0 0 0 1px hsl(212, 30%, 80%),\n    0 2px 12px transparentize($grey200, 0.5);\n  text-align: center;\n}\n\n#app-version {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  color: var(--gray-600);\n  text-align: center;\n  gap: var(--s);\n\n  a {\n    color: var(--gray-600);\n    text-decoration: underline;\n\n    &.go:hover:after {\n      color: var(--gray-600);\n    }\n  }\n}\n\n#edition-logo {\n  position: relative;\n  top: -1px;\n  user-select: none;\n  border: 1px solid var(--gray-600);\n  border-radius: 3px;\n  display: inline-flex;\n  box-sizing: content-box;\n  font-size: 11px;\n  padding: 6px 7px;\n  line-height: 8px;\n  font-weight: 600;\n  letter-spacing: 1.7px;\n  padding-right: 5px;\n  text-transform: uppercase;\n}\n\n#devmode {\n  margin-top: auto;\n  flex: 0 0 4px;\n  width: 100%;\n  min-height: 4px; // fixes Windows scaling bug (https://github.com/craftcms/cms/issues/3259)\n  background:\n    url(../images/dev-mode.svg) repeat-x 21px 0,\n    var(--gray-900);\n  cursor: help;\n}\n\n#page-container {\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n}\n\n#alerts {\n  position: relative; // to keep it above #global-header's shadow\n  background-color: var(--red-050);\n  border-left: 6px solid var(--error-color);\n  color: var(--error-color);\n\n  & > li {\n    padding: 10px 24px;\n    box-shadow: inset 0 -1px 0 0 var(--red-100);\n\n    .resolvable-alert-buttons {\n      margin-top: var(--m);\n    }\n\n    .btn,\n    a.go {\n      display: inline-flex;\n      align-items: center;\n      border: 1px solid transparentize($errorColor, 0.5);\n      border-radius: var(--medium-border-radius);\n      padding: 4px 5px;\n      margin: 0 2px;\n      color: var(--error-color);\n      height: calc(30rem / 16);\n\n      .flex & {\n        margin: 0;\n      }\n\n      &:hover {\n        border-color: var(--error-color);\n      }\n    }\n\n    a:not(.btn) {\n      color: var(--error-color);\n      text-decoration: underline;\n\n      &.go {\n        text-decoration: none;\n        white-space: nowrap;\n\n        &:after {\n          color: var(--error-color);\n          font-size: 15px;\n          margin-top: 1px;\n        }\n      }\n    }\n\n    .btn {\n      background-color: transparent;\n    }\n  }\n}\n\n#global-header .btn.menubtn,\nli.crumb .btn.menubtn,\n.btn.action-btn {\n  padding: 0;\n  width: var(--touch-target-size);\n  height: var(--touch-target-size);\n\n  &:not(:hover):not(:active):not([aria-expanded='true']) {\n    background-color: transparent;\n  }\n}\n\n#global-header {\n  width: 100%;\n  margin-bottom: var(--m);\n  border-bottom: 1px solid var(--hairline-color);\n\n  .flex {\n    height: var(--header-height);\n    align-items: center;\n  }\n\n  .btn {\n    --ui-control-color: var(--gray-400);\n    --ui-control-hover-color: var(--gray-800);\n    --ui-control-active-color: var(--gray-700);\n\n    &:hover {\n      color: var(--ui-control-hover-color);\n    }\n  }\n}\n\n.nav-toggle {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 44px;\n  min-width: 44px;\n  height: var(--header-height);\n  border-right: 1px solid var(--medium-hairline-color);\n  line-height: 26px;\n  color: currentColor;\n  text-align: center;\n\n  &:before {\n    @include icon;\n    content: 'menu';\n    font-size: 16px;\n    line-height: 0;\n  }\n\n  &:hover {\n    color: var(--link-color);\n  }\n}\n\n#crumbs {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  font-size: 13px;\n  margin: 0 !important;\n  max-width: 100%;\n  overflow: hidden;\n\n  &.empty {\n    display: none;\n  }\n\n  nav {\n    margin: 0;\n  }\n}\n\n#primary-nav-toggle {\n  &:focus-visible {\n    box-shadow: var(--inner-focus-ring);\n  }\n}\n\n#crumb-list {\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  flex-wrap: nowrap;\n  max-width: 100%;\n  height: var(--header-height);\n\n  --arrow-padding: 10;\n  --arrow-height: 22;\n  --arrow-angle: 35;\n  --arrow-width: 17.1111; // height/(45/angle)\n  --arrow-c: 27.871; // sqrt(height^2+width^2)\n\n  body.rtl & {\n    --arrow-angle: -35;\n    --arrow-width: -19.4444;\n  }\n\n  li.crumb {\n    position: relative;\n    @include padding-left(calc(var(--arrow-width) * 0.5rem / 16));\n    cursor: default;\n    color: var(--light-text-color);\n\n    &:not(.current) {\n      @include padding-right(calc(var(--arrow-width) * 1.125rem / 16));\n\n      &:before,\n      &:after {\n        display: block;\n        content: '';\n        width: 1px;\n        height: calc(var(--arrow-c) * 1rem / 16);\n        position: absolute;\n        @include right(calc(var(--arrow-width) * 0.5rem / 16));\n        background: var(--medium-hairline-color);\n        pointer-events: none;\n      }\n\n      &:before {\n        top: calc((var(--arrow-height) - var(--arrow-c)) / 2 * 1rem / 16);\n        transform: rotate(calc(var(--arrow-angle) * -1deg));\n      }\n\n      &:after {\n        bottom: calc((var(--arrow-height) - var(--arrow-c)) / 2 * 1rem / 16);\n        transform: rotate(calc(var(--arrow-angle) * 1deg));\n      }\n    }\n  }\n\n  & .menu--disclosure {\n    li {\n      display: block;\n\n      &::after {\n        content: none;\n      }\n    }\n  }\n}\n\n#crumb-menu-trigger {\n  min-width: var(--touch-target-size);\n\n  &:before {\n    width: 100%;\n  }\n}\n\n#crumb-menu {\n  .chip {\n    min-height: 44px;\n  }\n}\n\nli.crumb {\n  display: flex;\n  align-items: center;\n  flex-wrap: nowrap;\n  gap: var(--xs);\n\n  [data-icon] {\n    position: relative;\n    top: -1px;\n  }\n\n  .menubtn {\n    position: relative;\n    margin: 0 calc(var(--xs) * -1 / 2);\n  }\n\n  [data-icon='ellipsis']:before {\n    margin-top: 3px;\n    font-size: 17px;\n  }\n\n  .chip {\n    padding: 0;\n    background-color: transparent;\n    --custom-bg-color: initial !important;\n    --custom-text-color: initial !important;\n    --custom-sel-bg-color: initial !important;\n\n    .label-link {\n      max-width: 15em;\n\n      &:focus-visible {\n        box-shadow: var(--inner-focus-ring);\n      }\n\n      span:not(.context-label) {\n        display: block;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n      }\n    }\n  }\n\n  &:has(.menubtn) > a {\n    margin-right: 0 !important;\n    padding-right: var(--xs) !important;\n  }\n\n  & > a {\n    flex: 1;\n    display: flex !important;\n    align-items: center;\n    flex-wrap: nowrap;\n    gap: var(--xs);\n    white-space: nowrap;\n\n    .menu--disclosure & {\n      min-height: 34px;\n    }\n  }\n\n  a,\n  button {\n    display: inline-flex;\n    align-items: center;\n    min-height: var(--touch-target-size);\n\n    &:not(:hover) {\n      color: var(--text-color);\n\n      svg {\n        @include svg-mask(var(--text-color));\n      }\n    }\n\n    &:hover {\n      text-decoration: none;\n    }\n  }\n\n  a {\n    position: relative;\n  }\n\n  button {\n    cursor: pointer;\n  }\n}\n\nli.breadcrumb-toggle-wrapper {\n  &::after {\n    content: none;\n  }\n}\n\n#account-menu {\n  ul {\n    li {\n      a {\n        max-width: calc(100% + 28px) !important;\n      }\n    }\n  }\n}\n\n#announcements-btn {\n  @include header-btn;\n  width: calc(28rem / 16 + 10px);\n  position: relative;\n\n  &.unread:after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: calc(3rem / 16);\n    @include right(5px);\n    width: calc(7rem / 16);\n    height: calc(7rem / 16);\n    border-radius: 50%;\n    background-color: var(--blue-600);\n  }\n\n  svg {\n    width: 1rem;\n    height: 1rem;\n    @include svg-mask(var(--ui-control-color));\n  }\n\n  &:hover,\n  &:active,\n  &.active {\n    svg {\n      @include svg-mask(var(--ui-control-active-color));\n    }\n  }\n}\n\n#announcements {\n  max-width: 350px;\n\n  .announcement {\n    &:not(:first-child) {\n      margin-top: 20px;\n    }\n\n    .announcement-label-container {\n      margin-top: -3px;\n      display: flex;\n      align-items: center;\n      margin-bottom: 3px;\n\n      .announcement-icon svg {\n        display: block;\n        width: 15px;\n        height: 15px;\n      }\n\n      .announcement-label {\n        margin-left: 5px;\n        font-size: 12px;\n        color: var(--light-text-color);\n      }\n    }\n\n    &.unread .announcement__heading:after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 7px;\n      @include left(-13px);\n      width: 7px;\n      height: 7px;\n      border-radius: 4px;\n      background-color: var(--blue-600);\n    }\n\n    p {\n      margin: 0;\n    }\n  }\n\n  .announcement__header {\n    display: grid;\n  }\n\n  .announcement__heading {\n    position: relative;\n    margin: 0 0 3px;\n    order: 1;\n  }\n}\n\n#user-info {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  @include padding-left(var(--s));\n  @include padding-right(calc(var(--padding) + 1px));\n  padding-top: 5px;\n  padding-bottom: 5px;\n  height: 100%;\n  background-color: transparent;\n  border-radius: 0;\n\n  &:after {\n    border-color: var(--ui-control-color);\n    transition: border-color linear 100ms;\n  }\n\n  &:hover:after {\n    border-color: var(--ui-control-hover-color);\n  }\n\n  &[aria-expanded='true']:after {\n    border-color: var(--ui-control-active-color);\n  }\n}\n\n.header-photo {\n  img,\n  svg {\n    display: block;\n    width: calc(30rem / 16);\n    height: calc(30rem / 16);\n    max-width: none;\n    border-radius: 50%;\n    box-shadow:\n      0 0 0 1px transparentize($grey900, 0.95),\n      0 0 0 transparentize($grey900, 1);\n    transition: box-shadow linear 150ms;\n\n    #user-info:hover & {\n      box-shadow:\n        0 0 0 1px transparentize($grey900, 0.95),\n        0 2px 10px -2px transparentize($grey900, 0.7);\n    }\n  }\n}\n\n/* main container */\n#main-container {\n  position: relative;\n  flex-grow: 1;\n}\n\n#notifications {\n  position: fixed;\n  bottom: 8px;\n  @include left(8px);\n  width: calc(100% - 16px);\n  z-index: 101;\n\n  body.has-debug-toolbar & {\n    bottom: 50px;\n  }\n\n  @media only screen and (min-width: $minHorizontalUiWidth) {\n    width: 350px;\n  }\n\n  .notification {\n    display: flex;\n    position: relative;\n    @include pane;\n    padding: 10px 14px;\n    border-radius: var(--large-border-radius);\n    box-shadow:\n      0 0 0 1px transparentize($grey1000, 0.85),\n      0 2px 12px transparentize($grey1000, 0.85);\n    --color: var(--notice-color);\n\n    &[data-type='success'] {\n      --color: var(--success-color);\n    }\n\n    &[data-type='error'] {\n      --color: var(--error-color);\n    }\n\n    & + .notification {\n      margin-top: 12px;\n    }\n\n    .notification-icon {\n      width: 18px;\n      margin-top: -2px;\n      @include margin-right(10px);\n      font-size: 18px;\n      color: var(--color);\n    }\n\n    .notification-main {\n      overflow: hidden;\n    }\n\n    .notification-body {\n      display: grid;\n      grid-template-columns: 20px 1fr;\n      gap: var(--s);\n      width: 100%;\n\n      .notification-message {\n        font-weight: bold;\n        word-break: normal;\n        overflow-wrap: anywhere;\n      }\n\n      .notification-details {\n        margin-top: var(--xs);\n\n        .chip {\n          border: 1px solid $hairlineColor;\n        }\n      }\n    }\n\n    .notification-close-btn {\n      position: relative;\n      top: -2px;\n      @include margin-left(10px);\n    }\n  }\n}\n\n#header-container {\n  margin-bottom: var(--m);\n}\n\n@media only screen and (min-width: $minFullUiWidth) {\n  #primary-nav-toggle {\n    display: none;\n  }\n\n  #crumbs:not(.empty) #primary-nav-toggle + nav ul li:first-child,\n  #crumbs.empty + .context-menu-container {\n    @include margin-left(var(--padding));\n    @include padding-left(0);\n  }\n}\n\n#global-header,\n#header {\n  .flex {\n    max-width: 100%;\n\n    &.flex-nowrap {\n      min-width: 0;\n    }\n  }\n}\n\n#header {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  gap: var(--s);\n  padding: 5px var(--padding);\n  position: relative;\n  z-index: 2;\n  box-sizing: border-box;\n  background-color: transparentize($grey300, 1);\n  box-shadow: 0 1px 0 transparentize($grey800, 1);\n  transition:\n    background-color linear 100ms,\n    box-shadow linear 100ms;\n\n  body.fixed-header & {\n    position: fixed;\n    z-index: 12;\n    top: 0;\n    background-color: var(--gray-100);\n    box-shadow: 0 1px 0 transparentize($grey700, 0.9);\n  }\n\n  @supports (backdrop-filter: blur(10px)) {\n    & {\n      transition:\n        background-color linear 100ms,\n        box-shadow linear 100ms,\n        backdrop-filter linear 100ms;\n\n      body.fixed-header & {\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n      }\n    }\n  }\n\n  h1 {\n    line-height: 34px;\n    margin-top: 0;\n    margin-bottom: 0;\n    min-width: 0;\n  }\n\n  .buttons,\n  .btngroup {\n    margin-top: 0;\n  }\n}\n\n#page-title {\n  &.has-toolbar {\n    @media only screen and (min-width: $minHorizontalUiWidth) {\n      min-width: calc(#{$sidebarWidth} - var(--xl) - var(--s)) !important;\n    }\n  }\n}\n\n#toolbar {\n  flex: 1;\n  align-items: flex-start;\n  justify-content: space-between;\n\n  .icon:before,\n  .texticon:before,\n  .menubtn:after,\n  [data-icon]:before,\n  [data-icon-after]:after {\n    color: currentColor;\n    opacity: 0.8;\n  }\n\n  .text {\n    border-radius: var(--large-border-radius);\n\n    &::-webkit-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:-ms-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::-ms-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:-moz-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::-moz-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:not(:focus) {\n      background-clip: border-box;\n    }\n  }\n}\n\n#action-buttons {\n  @media only screen and (max-width: 400px) {\n    .btngroup .btn:first-child {\n      flex-basis: 100%;\n    }\n  }\n\n  @media only screen and (max-width: $minHorizontalUiWidth - calc(1rem/16)) {\n    flex-direction: row-reverse;\n    justify-content: start;\n    margin-top: 10px;\n  }\n}\n\n#main-content {\n  display: flex;\n  flex-direction: row;\n  align-items: flex-start;\n  padding: 0 var(--padding) 48px;\n  box-sizing: border-box;\n\n  // for the Dashboard and any other full-page grids:\n  & > .grid:only-child {\n    flex: 1;\n  }\n}\n\n#sidebar-toggle-container {\n  display: none;\n}\n\n#sidebar-container {\n  flex: 0 0 $sidebarWidth;\n  width: $sidebarWidth;\n  box-sizing: border-box;\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    @include margin-left(calc(var(--xl) * -1));\n  }\n}\n\n#sidebar {\n  position: relative;\n  box-sizing: border-box;\n  padding: 0 40px var(--m);\n  width: $sidebarWidth;\n  background-color: transparent;\n\n  &.fixed {\n    position: fixed;\n  }\n\n  nav {\n    margin-left: -31px;\n    margin-right: -31px;\n\n    li {\n      a {\n        position: relative;\n\n        &:focus {\n          z-index: 1;\n        }\n\n        &:not(.sel) {\n          &:hover {\n            background-color: var(--gray-200);\n          }\n        }\n      }\n    }\n  }\n  .skip-link {\n    margin: 0 var(--s);\n  }\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    padding: 0 31px var(--m);\n  }\n}\n\n#content-container {\n  flex: 1 1 auto;\n  /*\n  Admittedly I'm not totally sure why this is necessary, but it seems to be.\n  We have to give #content-container some kind of \"hard\" width for it to properly\n  clip the content when table cells are long.\n   */\n  width: 400px;\n}\n\n.content-pane {\n  @include pane;\n  border-radius: var(--large-border-radius);\n  position: relative;\n  background-clip: padding-box;\n  padding: var(--xl) var(--padding);\n  word-wrap: break-word;\n\n  & > hr {\n    margin-left: calc(var(--xl) * -1);\n    margin-right: calc(var(--xl) * -1);\n  }\n}\n\n#footer,\n.footer {\n  padding: 6px var(--pane-padding, var(--xl));\n  min-height: 44px;\n  line-height: calc(32rem / 16);\n\n  .buttons {\n    height: 32px;\n    display: flex;\n    align-items: center;\n  }\n\n  .btn {\n    padding-top: 4px;\n    padding-bottom: 4px;\n    height: var(--ui-control-height--small);\n  }\n}\n\n#footer {\n  position: sticky;\n  bottom: 0;\n  z-index: 1;\n  margin: calc(var(--s) + 1px) calc(var(--padding) * -1 + 2px)\n    calc(var(--xl) * -1 + 2px);\n  background-color: var(--gray-050);\n  border-radius: var(--small-border-radius);\n  box-sizing: border-box;\n  border-top: 2px solid var(--white);\n\n  &:empty {\n    display: none;\n  }\n\n  &.stuck {\n    border-radius: 0;\n\n    @supports (backdrop-filter: blur(10px)) {\n      & {\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n      }\n    }\n  }\n\n  .has-debug-toolbar & {\n    transition: padding linear 100ms;\n\n    &.stuck {\n      padding-bottom: 52px;\n    }\n  }\n\n  & > *,\n  .flex > * {\n    margin-bottom: 0;\n  }\n}\n\n#details-container[data-state='collapsed'] {\n  display: none;\n}\n\n#details-container {\n  display: block;\n  flex: 0 1 auto;\n  width: calc(var(--details-width) + var(--m));\n  @include padding-left(var(--m));\n}\n\n#details {\n  display: none;\n}\n\n#details {\n  display: block;\n  width: $detailsWidth;\n  z-index: 1;\n\n  &.fixed {\n    position: fixed;\n  }\n\n  .details {\n    padding-bottom: calc(var(--xl) + 11.5em);\n\n    .meta {\n      border-radius: var(--large-border-radius);\n\n      &:not(.read-only):not(.warning) {\n        @include pane;\n      }\n\n      &.read-only {\n        color: var(--medium-text-color);\n        background-color: transparent !important;\n      }\n\n      & > .field,\n      & > .data {\n        &:first-child {\n          &,\n          & > .status-badge {\n            border-top-left-radius: var(--large-border-radius);\n          }\n\n          border-top-right-radius: var(--large-border-radius);\n        }\n\n        &:last-child {\n          &,\n          & > .status-badge {\n            border-bottom-left-radius: var(--large-border-radius);\n          }\n\n          border-bottom-right-radius: var(--large-border-radius);\n        }\n      }\n    }\n\n    & > .field {\n      & > .input > .text.fullwidth {\n        @include pane;\n      }\n    }\n\n    .notes {\n      border-radius: var(--large-border-radius);\n      padding-top: var(--m);\n      padding-bottom: var(--m);\n    }\n  }\n}\n\n// Hide the sidebar at < 1200\n@media only screen and (max-width: $minFullUiWidth - calc(1rem/16)) {\n  #global-container {\n    @include left(-$sidebarWidth);\n    width: calc(100vw + #{$sidebarWidth});\n\n    body.ltr.showing-nav & {\n      left: 0;\n    }\n\n    body.rtl.showing-nav & {\n      right: 0;\n    }\n  }\n\n  #crumbs {\n    display: flex !important;\n  }\n\n  #header {\n    width: 100vw;\n  }\n\n  #main-content {\n    width: 100vw;\n    &.has-sidebar {\n      padding-left: 0;\n    }\n  }\n}\n\n// Rearrange #main-content to flow vertically at < 999\n@media only screen and (max-width: $minHorizontalUiWidth - calc(1rem/16)) {\n  #header {\n    display: flex;\n    flex-wrap: wrap;\n\n    .flex:not(#toolbar) {\n      margin-top: 10px;\n    }\n  }\n\n  #toolbar {\n    flex-wrap: wrap !important;\n    order: 3;\n    width: 100%;\n    flex: auto;\n\n    & > * {\n      margin-top: 10px !important;\n    }\n  }\n\n  #action-buttons {\n    order: 2;\n  }\n\n  body.fixed-header #header .flex:first-child {\n    margin-top: 0;\n  }\n\n  #main-content {\n    display: block;\n    &.has-sidebar {\n      padding: 0 var(--padding) 48px;\n    }\n  }\n\n  #sidebar {\n    nav {\n      margin-left: -40px;\n      margin-right: -40px;\n    }\n    .skip-link {\n      margin: 0;\n    }\n  }\n\n  #source-actions {\n    margin-top: var(--s);\n    margin-left: -9px;\n  }\n\n  #sidebar-toggle-container {\n    display: block;\n    margin-bottom: var(--s);\n  }\n\n  #sidebar-toggle {\n    &:after {\n      top: 0;\n      transform: rotate(45deg);\n\n      body.rtl & {\n        transform: rotate(135deg);\n      }\n    }\n  }\n\n  #content-container {\n    min-height: 0 !important;\n  }\n\n  #sidebar-container,\n  #details-container {\n    width: auto !important;\n    padding-left: 0 !important;\n    display: block;\n  }\n\n  #details-toggle {\n    display: none;\n  }\n\n  #sidebar,\n  #details {\n    position: relative !important;\n    overflow-y: visible !important;\n    max-height: none !important;\n    width: auto;\n  }\n\n  #sidebar {\n    margin-bottom: var(--m);\n\n    body.showing-sidebar & {\n      @include pane;\n      padding-block: 0.5rem;\n      border-radius: var(--large-border-radius);\n    }\n\n    body:not(.showing-sidebar) & {\n      display: none;\n    }\n  }\n\n  #details-container {\n    @include margin-right(0);\n  }\n\n  #content-container {\n    width: auto !important;\n    max-width: none !important;\n  }\n\n  #details {\n    padding: 0 !important;\n    margin-top: var(--m);\n\n    .details {\n      margin-bottom: auto;\n    }\n  }\n}\n\n// Tighten up the padding at < 768\n@media only screen and (max-width: 767px) {\n  :root {\n    --padding: var(--s);\n    --neg-padding: calc(var(--s) * -1);\n  }\n\n  #tabs ul li {\n    a {\n      padding-left: var(--m);\n      padding-right: var(--m);\n    }\n\n    & + li {\n      @include margin-left(-7px);\n    }\n  }\n\n  .card-grid {\n    display: flex !important;\n    flex-direction: column;\n  }\n}\n\n@media print {\n}\n\n#settingsmenu ul li a {\n  @include padding-left(46px);\n\n  &:before {\n    @include margin(1px, 0, 0, -22px);\n    font-size: 15px;\n  }\n\n  img {\n    width: 16px;\n    height: 16px;\n    position: absolute;\n    margin-left: -23px;\n    margin-top: 1px;\n  }\n}\n\n/* grids */\n.grid {\n  position: relative;\n  min-height: 1px; // Required for Grid.js to run\n\n  &:after {\n    @include clearafter;\n  }\n\n  & > .item {\n    display: none;\n    box-sizing: border-box;\n  }\n}\n\n/* Sidebar */\n.sidebar {\n  width: $sidebarWidth;\n  box-sizing: border-box;\n  font-size: 13px;\n\n  &:not(.drag-helper) {\n    padding: var(--m) 0;\n    background-color: var(--gray-050);\n  }\n\n  .heading {\n    position: relative;\n    margin: 0 var(--xl);\n\n    &:not(:first-child) {\n      margin-top: var(--m);\n    }\n\n    & > span {\n      display: inline-block;\n      position: relative;\n      z-index: 1;\n      padding: 0 5px;\n      margin: 0 -5px;\n      text-transform: uppercase;\n      color: var(--medium-text-color);\n      font-size: 11px;\n      font-weight: bold;\n    }\n\n    & > ul {\n      margin: 2px calc(var(--xl) * -1);\n    }\n  }\n\n  @mixin nav-level($level) {\n    & > a {\n      @include padding-left(24px + 14 * $level);\n    }\n\n    & > .toggle {\n      @include left(calc(var(--m) * #{$level}));\n    }\n  }\n\n  nav {\n    padding: 0 var(--s);\n\n    & > ul {\n      & > li:not(.heading),\n      & > li.heading > ul > li {\n        @include nav-level(0);\n\n        & > ul.nested > li {\n          @include nav-level(1);\n\n          & > ul.nested > li {\n            @include nav-level(2);\n\n            & > ul.nested > li {\n              @include nav-level(3);\n\n              & > ul.nested > li {\n                @include nav-level(4);\n              }\n            }\n          }\n        }\n      }\n    }\n\n    li {\n      position: relative;\n\n      &:not(.has-subnav) > a {\n        &:not(.sel):hover {\n          text-decoration: none;\n        }\n\n        &.sel,\n        &.active-drop-target {\n          cursor: default;\n          background-color: var(--gray-500);\n\n          &,\n          & + .toggle {\n            color: var(--white);\n          }\n        }\n\n        &.sel {\n          @include light-on-dark-text;\n        }\n      }\n\n      a {\n        position: relative;\n        margin-bottom: 1px;\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        padding: 7px var(--xl);\n        min-height: var(--xl);\n        box-sizing: border-box;\n        color: var(--text-color);\n        cursor: pointer;\n        user-select: none;\n        border-radius: var(--large-border-radius);\n        word-break: break-word;\n\n        .status {\n          flex-shrink: 1;\n        }\n\n        .icon {\n          position: relative;\n          top: 1px;\n          @include margin-right(10px);\n          flex-shrink: 1;\n          width: toRem(18);\n          height: toRem(18);\n          word-break: normal;\n          transition:\n            margin-left linear 150ms,\n            margin-right linear 150ms;\n          opacity: 0.85;\n\n          &.icon-mask {\n            svg {\n              @include svg-mask(currentColor);\n            }\n\n            span[data-icon] {\n              color: currentColor;\n            }\n          }\n\n          svg {\n            width: 1rem;\n            height: 1rem;\n          }\n\n          span[data-icon] {\n            font-size: 16px;\n\n            &::before {\n              display: block;\n            }\n          }\n        }\n\n        .label {\n          flex: 1;\n        }\n\n        .badge {\n          @include margin(0, -4px, 0, 10px);\n          flex-shrink: 1;\n          padding: 0 6px;\n          font-size: calc(11rem / 16);\n          line-height: 16px;\n          border-radius: var(--s);\n          background-color: var(--medium-text-color);\n          color: var(--white);\n        }\n      }\n\n      .toggle {\n        position: absolute;\n        z-index: 1;\n        height: 34px;\n        top: 0;\n        width: var(--xl);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      ul {\n        display: none;\n      }\n\n      &.heading,\n      &.expanded {\n        & > ul {\n          display: block;\n        }\n      }\n    }\n  }\n}\n\n.error-summary {\n  @include pane;\n  margin-bottom: var(--l);\n  padding: var(--l) var(--xl);\n  border-radius: var(--large-border-radius);\n  background-color: var(--gray-050);\n\n  .notification-icon {\n    color: var(--error-color);\n    margin: -2px 6px 0 0;\n    float: left;\n  }\n\n  h2 {\n    margin-top: 0;\n  }\n\n  & > ul.errors li,\n  & > ul.errors li a {\n    color: var(--text-color);\n\n    em {\n      font-weight: 600;\n    }\n\n    &:hover {\n      color: var(--link-color);\n    }\n  }\n}\n\n.slideout {\n  .error-summary {\n    border: 1px solid var(--error-color);\n    box-shadow: none;\n    background-color: rgba(var(--error-color-rgb), 0.03);\n    padding: var(--m);\n  }\n\n  // Slideouts with tabs need slightly different margins\n  .flex-fields .error-summary {\n    margin: 0 var(--row-gap) var(--row-gap);\n  }\n}\n\n.content.has-sidebar:not(.hiding-sidebar) {\n  @include margin-left($sidebarWidth);\n}\n\n#content-notice {\n  margin: 0 calc(var(--xl) * -1);\n  padding: 0 var(--xl);\n\n  &:not(:last-child) {\n    padding-bottom: 5px;\n    border-bottom: 1px solid var(--hairline-color);\n    margin-bottom: 5px;\n  }\n}\n\n/* flexbox field layouts */\n#content :not(.meta) > .flex-fields,\n#content > .flex-fields,\n.so-content .flex-fields,\n.draghelper .flex-fields {\n  --row-gap: var(--xl);\n  display: flex;\n  flex-wrap: wrap;\n  align-content: flex-start;\n  margin: 0 calc(var(--row-gap) * -1) calc(var(--row-gap) * -1);\n  width: calc(100% + var(--row-gap) * 2);\n\n  & > :not(.error-summary) {\n    margin: 0 0 var(--row-gap) !important;\n    padding: 0 var(--row-gap);\n    box-sizing: border-box;\n  }\n\n  & > h2 {\n    flex: 4 0 100%;\n\n    &:not(:nth-child(-n + 1 of :not(.hidden))) {\n      padding-top: var(--xl);\n      border-top: 1px solid var(--hairline-color);\n    }\n  }\n\n  & > hr,\n  & > .line-break {\n    flex: 4 0 100%;\n  }\n\n  & > .line-break:not(:first-child) {\n    margin-bottom: 0 !important;\n  }\n\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      position: relative;\n      width: 100%;\n\n      &:before {\n        position: absolute;\n        top: 0;\n        @include left(-1px);\n        width: 1px;\n        height: 100%;\n        content: '';\n        // same BG color as the hairline around the content pane’s 1px shadow\n        background-color: transparentize($grey200, 0.5);\n      }\n    }\n  }\n}\n\n#content :not(.meta) > .flex-fields,\n#content > .flex-fields,\n.draghelper.drag-in-content .flex-fields {\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      // 4 cols for >= 1536px\n      @media only screen and (min-width: $minXlUiWidth) {\n        &.width-25 {\n          width: 25%;\n        }\n        &.width-50 {\n          width: 50%;\n        }\n        &.width-75 {\n          width: 75%;\n        }\n      }\n\n      // 2 cols for 600 - 1535px\n      @media only screen and (min-width: $minDesktopWidth) and (max-width: $minXlUiWidth - calc(1rem/16)) {\n        &.width-25,\n        &.width-50 {\n          width: 50%;\n        }\n      }\n    }\n  }\n}\n\n.so-content .flex-fields,\n.draghelper.drag-in-slideout .flex-fields {\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      // 2 cols for >= 1200\n      @media only screen and (min-width: $minDesktopWidth * 2) {\n        &.width-25,\n        &.width-50 {\n          width: 50%;\n        }\n      }\n    }\n  }\n}\n",".global-sidebar {\n  --is-always-visible: true;\n  --prefix-width: calc(30rem / 16);\n  --prefix-ratio: 1;\n  --gutter-width: calc(10rem / 16); // Left and right padding\n\n  position: sticky;\n  top: 0;\n  z-index: $sidebarZIndex;\n  display: grid;\n  grid-template-columns: var(--global-sidebar-width);\n  grid-template-rows: var(--header-height) minmax(0, 1fr) auto;\n  grid-auto-flow: row;\n  height: 100vh;\n  padding: 0;\n  -webkit-overflow-scrolling: touch;\n  background-color: var(--gray-150);\n  border-inline-end: 1px solid var(--hairline-color);\n  width: var(--global-sidebar-width);\n\n  a {\n    text-decoration: none;\n  }\n\n  & > a,\n  *:not(.has-subnav) > a {\n    &:not([href]) {\n      cursor: default;\n      background-color: transparent;\n    }\n  }\n\n  @media only screen and (max-width: $minFullUiWidth - calc(1rem/16)) {\n    --is-always-visible: false;\n  }\n}\n\n.global-sidebar__nav {\n  padding: var(--s) 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n  scrollbar-width: none;\n  overscroll-behavior: contain;\n}\n\n.global-sidebar__footer {\n  margin-block-start: auto;\n  border-block-start: 1px solid var(--hairline-color);\n}\n\n.global-nav > ul {\n  display: flex;\n  flex-direction: column;\n  gap: var(--s);\n}\n\n.global-nav > ul > li {\n  position: relative;\n}\n\n.global-nav > ul > li.sel {\n}\n\n.nav-icon {\n  display: inline-flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  width: 1rem;\n  aspect-ratio: 1;\n  line-height: 0;\n\n  --thumb-size: 1rem;\n\n  > svg {\n    @include svg-mask(currentColor);\n    width: 100%;\n    height: 100%;\n  }\n}\n\n.nav-item {\n  --gutter-width: calc(10rem / 16);\n  display: grid;\n  grid-template-columns: var(--gutter-width) minmax(0, 1fr) var(--prefix-width) var(\n      --gutter-width\n    );\n  grid-template-areas: '. action trigger .' 'subnav subnav subnav subnav';\n  align-items: center;\n  width: 100%;\n\n  > .sidebar-action {\n    grid-area: action;\n  }\n}\n\n.nav-item__trigger {\n  --icon-size: 10px;\n  --trigger-size: var(--touch-target-size);\n  grid-area: trigger;\n  display: flex;\n  z-index: 1;\n\n  .menubtn {\n    padding: 0;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    width: var(--trigger-size);\n    height: var(--trigger-size);\n    border: transparent;\n\n    &:hover {\n      @include light-on-dark-text;\n      color: var(--white);\n      background-color: var(--medium-text-color);\n    }\n\n    &[aria-expanded='true']:not(:hover) {\n      background-color: transparent;\n    }\n\n    &[aria-expanded='true']:after {\n      @include angle(up);\n    }\n\n    &:after {\n      margin-inline-start: 0 !important;\n    }\n  }\n}\n\n.nav-item__subnav {\n  --prefix-ratio: 4/3;\n  display: none;\n  grid-area: subnav;\n\n  &[data-state='expanded'] {\n    display: block;\n  }\n}\n\n.badge {\n  display: inline-flex;\n  justify-content: center;\n  text-align: center;\n  font-size: 11px;\n  line-height: 1rem;\n  min-width: 1.1rem;\n  height: 1rem;\n  padding: 0 var(--xs);\n  border-radius: var(--s);\n  background-color: var(--medium-text-color);\n  color: var(--white);\n}\n\n.sidebar-actions {\n  padding: 10px var(--gutter-width); // match padding of #system-info\n}\n\n.sidebar-action {\n  --thumb-size: 0.75rem;\n  display: grid;\n  grid-template-columns: var(--prefix-width) minmax(0, 1fr) auto;\n  width: 100%;\n  align-items: center;\n  position: relative;\n  text-align: left;\n  border-radius: var(--medium-border-radius);\n  color: currentColor;\n  cursor: pointer;\n  min-height: 30px;\n  padding-inline: var(--xs);\n  font-weight: 500;\n\n  &:before {\n    content: '';\n    position: absolute;\n    inset-inline-start: calc((10rem / 16) * -1); // match #system-name\n    inset-block-start: 50%;\n    height: 80%;\n    transform: translateY(-50%);\n    width: var(--xs);\n  }\n\n  &:focus-visible,\n  &:hover {\n    @include light-on-dark-text;\n    color: var(--white);\n    background-color: var(--medium-text-color);\n  }\n\n  &.sel {\n    &:before {\n      --indicator-size: 6px;\n      color: var(--white);\n      background-color: var(--medium-text-color);\n    }\n  }\n}\n\n.sidebar-action--sub {\n  --indicator-size: 4px;\n  font-size: 0.9em;\n  min-height: 26px;\n\n  &:focus-visible,\n  &:hover {\n    &:before {\n      background-color: var(--white);\n    }\n  }\n\n  &:before {\n    @include left(calc((30px / 2) - (var(--indicator-size) / 2)));\n    width: var(--indicator-size);\n    height: var(--indicator-size);\n    border-radius: 100%;\n    top: 50%;\n    background-color: currentColor;\n  }\n}\n\n.sidebar-action--job {\n  grid-column: 2/4 !important;\n  align-items: flex-start;\n\n  .sidebar-action__label {\n    flex-wrap: wrap;\n    padding-block: var(--xs);\n    gap: var(--xs);\n  }\n\n  .label {\n    white-space: normal;\n  }\n\n  .progress-label {\n    width: 100%;\n    display: block;\n    color: var(--gray-300);\n    font-size: 11px;\n    line-height: 1.5;\n  }\n\n  .nav-icon {\n    display: block;\n    position: relative;\n    width: 16px;\n    height: 16px;\n\n    & > canvas {\n      display: block;\n      position: absolute;\n      width: 16px;\n      height: 16px;\n    }\n  }\n\n  #job-icon-hover {\n    opacity: 0;\n  }\n\n  &:hover {\n    #job-icon-hover {\n      opacity: 1;\n    }\n\n    #job-icon-static {\n      opacity: 0;\n    }\n  }\n}\n\n.sidebar-action__prefix {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--prefix-width);\n  aspect-ratio: var(--prefix-ratio);\n  line-height: 0;\n  flex-shrink: 0;\n}\n\n.sidebar-action__label {\n  display: flex;\n  gap: var(--s);\n  align-items: center;\n  padding: 0 var(--xs);\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n  margin-inline-start: 7px; // magic number to align with system name\n\n  [data-icon='external'] {\n    display: inline-flex;\n  }\n}\n\n.sidebar-action__badge {\n  flex: 0 1 auto;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  padding: 0 var(--s);\n  margin-inline-start: auto;\n}\n\n/**\nStates\n */\n@media only screen and (min-width: $minFullUiWidth) {\n  [data-sidebar='collapsed'] {\n    .global-sidebar {\n      --global-sidebar-width: calc(50rem / 16);\n    }\n\n    .nav-item {\n      grid-template-areas: '. action .' '. trigger .' 'subnav subnav subnav';\n      grid-template-columns: var(--gutter-width) var(--prefix-width) var(\n          --gutter-width\n        );\n    }\n\n    .nav-item__indicator {\n      right: -1px;\n    }\n\n    .sidebar-action {\n      width: var(--prefix-width);\n      padding-inline: 0;\n      min-height: var(--prefix-width);\n\n      &:focus-visible,\n      &:hover {\n        .sidebar-action__label {\n          opacity: 1;\n          transform: translateY(-50%) translateX(0);\n        }\n      }\n    }\n\n    .nav-item__trigger {\n      .menubtn {\n        width: 100%;\n        height: var(--touch-target-size);\n        padding-block: 2px var(--xs);\n      }\n    }\n\n    .sidebar-action__label {\n      display: none;\n      z-index: 10;\n      opacity: 0;\n    }\n\n    .sidebar-action__badge {\n      z-index: 100;\n      position: absolute;\n      right: calc(var(--xs) * -1);\n      bottom: var(--xs);\n      transform: translateY(25%);\n      padding: 0;\n    }\n\n    .sidebar-action--sub {\n      min-height: 26px;\n\n      &:before {\n        inset-inline-start: 50%;\n        inset-block-start: 50%;\n        transform: translateX(-50%) translateY(-50%);\n      }\n    }\n\n    .global-nav > ul > li + li {\n      --separator-width: calc(28rem / 16);\n\n      &:before {\n        position: absolute;\n        inset-block-start: calc(var(--s) / -2);\n        inset-inline-start: calc(\n          (var(--global-sidebar-width) - var(--separator-width)) / 2\n        );\n        content: '';\n        width: var(--separator-width);\n        height: 1px;\n        margin: 0 auto;\n        background-color: var(--hairline-color);\n      }\n    }\n  }\n\n  [data-sidebar='expanded'] {\n    #sidebar-toggle-icon {\n      transform: rotate(180deg);\n    }\n  }\n}\n\n#sidebar-trigger {\n  display: none;\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    display: flex;\n  }\n}\n","craft-tooltip {\n  position: fixed;\n  white-space: normal;\n  opacity: 0;\n  transform: translateY(-4px);\n  width: max-content;\n  max-width: 240px;\n  transition:\n    opacity 100ms ease-in-out,\n    transform 150ms ease-in-out;\n  top: 0;\n  left: 0;\n  z-index: 99;\n}\n\ncraft-tooltip > .inner {\n  position: relative;\n  display: inline-block;\n  background-color: var(--white);\n  color: var(--gray-700);\n  border: 1px solid var(--dark-hairline-color);\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n  border-radius: var(--medium-border-radius);\n  padding: var(--xs) var(--s);\n  pointer-events: none;\n  user-select: none;\n  font-weight: 400;\n}\n\ncraft-tooltip .arrow {\n  position: absolute;\n  background: var(--white);\n  width: 8px;\n  height: 8px;\n  transform: rotate(45deg);\n  border-style: solid;\n  border-width: 1px;\n  border-color: transparent;\n\n  &[data-placement^='bottom'] {\n    border-inline-color: var(--dark-hairline-color) transparent;\n    border-block-color: var(--dark-hairline-color) transparent;\n  }\n\n  &[data-placement^='top'] {\n    border-inline-color: transparent var(--dark-hairline-color);\n    border-block-color: transparent var(--dark-hairline-color);\n  }\n\n  &[data-placement^='right'] {\n    border-inline-color: var(--dark-hairline-color) transparent;\n    border-block-color: transparent var(--dark-hairline-color);\n  }\n  &[data-placement^='left'] {\n    border-inline-color: transparent var(--dark-hairline-color);\n    border-block-color: var(--dark-hairline-color) transparent;\n  }\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n.lp-editor-container,\n.lp-preview-container {\n  position: fixed;\n  top: 0;\n  height: 100%;\n  background-color: var(--white);\n  z-index: 100;\n\n  & > header {\n    padding: 5px 24px;\n    background-color: var(--gray-100);\n    box-shadow: 0 1px 0 transparentize($grey700, 0.8);\n    box-sizing: border-box;\n    position: relative;\n    z-index: 1;\n\n    @supports (backdrop-filter: blur(10px)) {\n      & {\n        position: absolute;\n        z-index: 2;\n        top: 0;\n        left: 0;\n        width: 100%;\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n\n        & + .lp-editor {\n          padding-top: #{44 + 24}px;\n        }\n      }\n    }\n\n    .btn,\n    .spinner,\n    .checkmark-icon {\n      margin-bottom: 0;\n    }\n  }\n}\n\n.lp-editor-container {\n  display: flex;\n  flex-direction: column;\n\n  .lp-editor {\n    flex: 1;\n    padding: 24px;\n    overflow: auto;\n    box-sizing: border-box;\n\n    & > .field {\n      &:last-child {\n        margin-bottom: 24px !important;\n      }\n\n      & > .status-badge {\n        @include left(-24px);\n      }\n    }\n\n    .matrixblock > .fields > .flex-fields > .field > .status-badge {\n      @include left(calc(var(--m) * -1));\n    }\n  }\n\n  .lp-draghandle {\n    position: absolute;\n    z-index: 101;\n    top: 0;\n    @include right(-2px);\n    width: 4px;\n    height: 100%;\n    cursor: col-resize;\n  }\n}\n\n.lp-preview-container {\n  display: flex;\n  flex-direction: column;\n  box-shadow: -1px 0 0 transparentize($grey700, 0.8);\n\n  &.dragging:after {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    content: '';\n    font-size: 0;\n  }\n\n  .lp-preview-header {\n    display: flex;\n\n    @supports (not (backdrop-filter: blur(10px))) {\n      background-color: transparentize($grey100, 0.25);\n    }\n\n    .buttons {\n      margin: 0;\n\n      .btn + .btn {\n        @include margin-left(7px);\n      }\n    }\n\n    & + .lp-iframe-container {\n      padding-top: 0;\n\n      @supports (backdrop-filter: blur(10px)) {\n        padding-top: 44px;\n      }\n    }\n\n    .lp-device-type {\n      .btn {\n        &::before {\n          width: 27px;\n          height: 22px;\n          display: block;\n          content: '';\n          background-size: contain;\n          background-repeat: no-repeat;\n          background-position: center;\n          transition-duration: 0.3s;\n        }\n\n        // SVGs\n        &.lp-device-type-btn--phone::before {\n          background-image: url(../images/preview/icon-phone.svg);\n        }\n        &.lp-device-type-btn--tablet::before {\n          background-image: url(../images/preview/icon-tablet.svg);\n        }\n        &.lp-device-type-btn--desktop::before {\n          background-image: url(../images/preview/icon-desktop.svg);\n        }\n      }\n    }\n  }\n\n  .lp-device-type__label {\n    &::before {\n      width: 27px;\n      height: 22px;\n      display: block;\n      content: '';\n      background-size: contain;\n      background-repeat: no-repeat;\n      background-position: center;\n      transition-duration: 0.3s;\n    }\n\n    // SVGs\n    &.lp-device-type__label--phone::before {\n      background-image: url(../images/preview/icon-phone.svg);\n    }\n    &.lp-device-type__label--tablet::before {\n      background-image: url(../images/preview/icon-tablet.svg);\n    }\n    &.lp-device-type__label--desktop::before {\n      background-image: url(../images/preview/icon-desktop.svg);\n    }\n  }\n\n  .lp-preview-container__bumper-link {\n    top: unset;\n    bottom: 0;\n  }\n\n  .lp-device-mask {\n    display: none;\n  }\n\n  .lp-iframe-container {\n    flex: 1;\n    overflow: auto;\n\n    .lp-preview {\n      display: block;\n      width: 100%;\n      min-height: 100%;\n    }\n\n    &:not(.lp-iframe-container--has-device-preview) {\n      // Preview container\n      .lp-device-preview-container {\n        width: auto !important;\n        height: 100% !important;\n        transform: none !important;\n        margin: 0 !important;\n      }\n    }\n\n    &--has-device-preview {\n      flex: none;\n      padding-top: 0 !important;\n      position: relative;\n      top: 0;\n      height: calc(100% - 44px);\n      width: 100%;\n      background-color: var(--gray-100);\n\n      @supports (backdrop-filter: blur(10px)) {\n        top: 44px;\n      }\n\n      // Preview container\n      .lp-device-preview-container {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        z-index: 2;\n        overflow: auto;\n        opacity: 1;\n        transition: opacity 0.3s;\n      }\n\n      // Device mask\n      .lp-device-mask {\n        display: block;\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        z-index: 1;\n        background-image: url(../images/preview/chrome-phone-top.svg),\n          url(../images/preview/chrome-phone-bottom.svg);\n        background-position:\n          top center,\n          bottom center;\n        background-repeat: no-repeat;\n        background-size: contain;\n        background-color: #fff;\n        box-shadow: 0 0 58px rgba(6, 67, 117, 0.3);\n        border-radius: 18px;\n      }\n\n      // Tablet\n      &.lp-iframe-container--tablet {\n        .lp-device-mask {\n          background-image: url(../images/preview/chrome-tablet-top.svg),\n            url(../images/preview/chrome-tablet-bottom.svg);\n        }\n      }\n    }\n\n    // Animate rotations\n    @media screen and (prefers-reduced-motion: no-preference) {\n      &--rotating {\n        .lp-device-mask {\n          transition-duration: 0.3s;\n          transition-property: transform;\n        }\n        .lp-device-preview-container {\n          opacity: 0;\n          transition: opacity 0s;\n        }\n      }\n    }\n  }\n}\n","@charset \"UTF-8\";\n@import '../../../../../../node_modules/@craftcms/sass/mixins';\n\n.login-container {\n  .login-form-container {\n    background-color: var(--gray-050);\n  }\n\n  .login-form {\n    input[readonly] {\n      cursor: not-allowed;\n    }\n\n    & > .field,\n    & > .btn {\n      margin-top: var(--l);\n\n      &:not(:last-child):not(.last) {\n        margin-bottom: var(--l);\n      }\n    }\n\n    .btn {\n      display: flex;\n    }\n  }\n\n  .alternative-login-methods {\n    margin-top: var(--m);\n\n    .btn {\n      width: 100%;\n    }\n  }\n\n  .login-forgot-password,\n  .login-alt-container button {\n    font-size: 11px;\n    color: var(--medium-text-color);\n    cursor: pointer !important;\n  }\n\n  .login-alt-container {\n    margin: calc(var(--s) - var(--xl)) 0;\n\n    button {\n      display: inline-flex;\n      background-color: transparent;\n      padding: 0;\n      width: auto;\n      height: auto;\n      min-height: var(--touch-target-size);\n    }\n  }\n\n  .login-forgot-password:hover,\n  .login-forgot-password:focus,\n  .login-alt-container button:hover,\n  .login-alt-container button:focus {\n    color: var(--link-color);\n  }\n\n  .login-errors {\n    text-align: center;\n    color: var(--error-color);\n    margin-top: 1em;\n  }\n}\n\n.login-alt-menu {\n  z-index: 1001;\n}\n\nbody.login {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n\n  main {\n    padding: var(--padding);\n    width: calc(300px + var(--padding) * 2);\n    max-width: 100%;\n\n    h1 {\n      text-align: center;\n      font-size: 32px;\n      line-height: 40px;\n      word-wrap: break-word;\n\n      #login-logo {\n        width: 100%;\n        height: auto;\n        max-height: 300px;\n      }\n    }\n  }\n\n  #poweredby {\n    display: block;\n    text-align: center;\n    margin-top: 70px;\n    margin-bottom: 48px;\n    opacity: 0.8;\n\n    &:hover,\n    &:focus,\n    &:active {\n      opacity: 1;\n    }\n\n    > svg {\n      display: inline-block;\n    }\n  }\n}\n\n.modal.email-sent {\n  width: 300px;\n\n  .body {\n    @include padding-left(68px);\n\n    &:before {\n      @include icon;\n      display: block;\n      position: absolute;\n      top: 24px;\n      @include left(24px);\n      content: 'mail';\n      font-size: 30px;\n      color: var(--link-color);\n    }\n  }\n}\n\n.login-modal {\n  width: calc(600px + var(--l) * 2);\n  max-width: calc(100% - 20px);\n  background: var(--gray-100);\n  border-radius: var(--large-border-radius);\n\n  .body {\n    display: flex;\n    flex-direction: row;\n    padding: var(--l);\n\n    .login-modal-intro,\n    .login-modal-form {\n      width: 300px;\n      max-width: 100%;\n    }\n\n    .login-modal-intro {\n      padding: var(--m);\n    }\n  }\n\n  @media screen and (max-width: 656px) {\n    border-radius: var(--large-border-radius);\n\n    .body {\n      padding: var(--m);\n      flex-direction: column;\n      gap: var(--m);\n      overflow: auto;\n\n      .login-modal-intro {\n        padding: var(--xs) var(--xl);\n      }\n\n      .login-modal-form {\n        border-radius: 0;\n      }\n    }\n  }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$red050: #fef2f2;\n$red100: #fee2e2;\n$red200: #fecaca;\n$red300: #fca5a5;\n$red400: #f87171;\n$red500: #ef4444;\n$red600: #dc2626;\n$red700: #b91c1c;\n$red800: #991b1b;\n$red900: #7f1d1d;\n\n$orange050: #fff7ed;\n$orange100: #ffedd5;\n$orange200: #fed7aa;\n$orange300: #fdba74;\n$orange400: #fb923c;\n$orange500: #f97316;\n$orange600: #ea580c;\n$orange700: #c2410c;\n$orange800: #9a3412;\n$orange900: #7c2d12;\n\n$yellow050: #fefce8;\n$yellow100: #fef9c3;\n$yellow200: #fef08a;\n$yellow300: #fde047;\n$yellow400: #facc15;\n$yellow500: #eab308;\n$yellow600: #ca8a04;\n$yellow700: #a16207;\n$yellow800: #854d0e;\n$yellow900: #713f12;\n\n$green050: #f0fdf4;\n$green100: #dcfce7;\n$green200: #bbf7d0;\n$green300: #86efac;\n$green400: #4ade80;\n$green500: #22c55e;\n$green600: #16a34a;\n$green700: #15803d;\n$green800: #166534;\n$green900: #14532d;\n\n$teal050: #f0fdfa;\n$teal100: #ccfbf1;\n$teal200: #99f6e4;\n$teal300: #5eead4;\n$teal400: #2dd4bf;\n$teal500: #14b8a6;\n$teal550: #11a697;\n$teal600: #0d9488;\n$teal700: #0f766e;\n$teal800: #115e59;\n$teal900: #134e4a;\n\n$cyan050: #ecfeff;\n$cyan100: #cffafe;\n$cyan200: #a5f3fc;\n$cyan300: #67e8f9;\n$cyan400: #22d3ee;\n$cyan500: #06b6d4;\n$cyan600: #0891b2;\n$cyan700: #0e7490;\n$cyan800: #155e75;\n$cyan900: #164e63;\n\n$blue050: #eff6ff;\n$blue100: #dbeafe;\n$blue200: #bfdbfe;\n$blue300: #93c5fd;\n$blue400: #60a5fa;\n$blue500: #3b82f6;\n$blue600: #2563eb;\n$blue700: #1d4ed8;\n$blue800: #1e40af;\n$blue900: #1e3a8a;\n\n$violet050: #f5f3ff;\n$violet100: #ede9fe;\n$violet200: #ddd6fe;\n$violet300: #c4b5fd;\n$violet400: #a78bfa;\n$violet500: #8b5cf6;\n$violet600: #7c3aed;\n$violet700: #6d28d9;\n$violet800: #5b21b6;\n$violet900: #4c1d95;\n\n$pink050: #fdf2f8;\n$pink100: #fce7f3;\n$pink200: #fbcfe8;\n$pink300: #f9a8d4;\n$pink400: #f472b6;\n$pink500: #ec4899;\n$pink600: #db2777;\n$pink700: #be185d;\n$pink800: #9d174d;\n$pink900: #831843;\n\n// submit button colors\n$primaryColor: $red600;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $textColor;\n$menuOptionActiveBackgroundColor: $grey050;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing:\n  0 0 0 1px $lightFocusColor,\n  0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing:\n  0 0 0 1px $mediumFocusColor,\n  0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing:\n  0 0 0 1px $darkFocusColor,\n  0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n\n@mixin sans-serif-font {\n  font-family:\n    system-ui,\n    BlinkMacSystemFont,\n    -apple-system,\n    'Segoe UI',\n    'Roboto',\n    'Oxygen',\n    'Ubuntu',\n    'Cantarell',\n    'Fira Sans',\n    'Droid Sans',\n    'Helvetica Neue',\n    sans-serif;\n}\n\n@mixin fixed-width-font {\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n    monospace;\n  font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n  $max: length($values);\n  $remValues: '';\n\n  @for $i from 1 through $max {\n    $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n    @if $i < $max {\n      $remValues: #{$remValues + ' '};\n    }\n  }\n\n  @return $remValues;\n}\n\n@mixin fontSize($size) {\n  font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n  body:not(.reduce-focus-visibility) &:focus,\n  body.reduce-focus-visibility &:focus-visible {\n    @content;\n  }\n}\n\n@mixin svg-mask($color) {\n  rect,\n  circle,\n  ellipse,\n  line,\n  polyline,\n  polygon,\n  path,\n  text {\n    fill: $color;\n    stroke-width: 0;\n  }\n}\n\n@mixin icon {\n  font-family: 'Craft';\n  speak: never;\n  -webkit-font-feature-settings: 'liga', 'dlig';\n  -moz-font-feature-settings: 'liga=1, dlig=1';\n  -moz-font-feature-settings: 'liga', 'dlig';\n  -ms-font-feature-settings: 'liga', 'dlig';\n  -o-font-feature-settings: 'liga', 'dlig';\n  font-feature-settings: 'liga', 'dlig';\n  text-rendering: optimizeLegibility;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  direction: ltr; // Fixes a rendering issue in Chrome/Win\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n\n  display: inline-block;\n  text-align: center;\n  font-style: normal;\n  vertical-align: middle;\n  word-wrap: normal !important;\n  user-select: none;\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: calc(2rem / 16)) {\n  display: block;\n  content: '';\n  font-size: 0;\n  width: calc(7rem / 16);\n  height: calc(7rem / 16);\n  border: solid $color;\n  border-width: 0 $width $width 0;\n  opacity: 0.8;\n  position: relative;\n\n  @if $dir == up {\n    transform: rotate(225deg);\n    top: 2px;\n  } @else if $dir == down {\n    transform: rotate(45deg);\n  } @else if $dir == left {\n    body.ltr & {\n      transform: rotate(135deg);\n    }\n    body.rtl & {\n      transform: rotate(-45deg);\n    }\n  } @else if $dir == right {\n    body.ltr & {\n      transform: rotate(-45deg);\n    }\n    body.rtl & {\n      transform: rotate(135deg);\n    }\n  }\n}\n\n@mixin clearafter {\n  content: '';\n  display: block;\n  height: 0;\n  clear: both;\n  visibility: hidden;\n}\n\n@mixin shadow {\n  box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n  background: $white;\n  box-shadow:\n    0 0 0 1px $grey200,\n    0 2px 12px transparentize($grey200, 0.5);\n\n  &:focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n@mixin modal {\n  border-radius: $largeBorderRadius;\n  background-color: $white;\n  box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n  // Make light on dark text sharp on Macs\n  // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n}\n\n@mixin light-focus-ring() {\n  --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n    0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n  @if $secondary != null {\n    --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n  } @else {\n    --focus-ring: 0 0 0 3px #{$primary};\n  }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n  // Creates a two-color focus ring, with a white\n  // If button is light, the dark box shadow is adjacent to the button\n  // Else the light box shadow is adjacent to the button\n  --light-color: var(--white);\n  --dark-color: var(--gray-800);\n\n  @if $light-button {\n    --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n  } @else {\n    --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n  }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n  body.ltr & {\n    left: $left;\n  }\n  body.rtl & {\n    right: $left;\n  }\n}\n\n@mixin right($right) {\n  body.ltr & {\n    right: $right;\n  }\n  body.rtl & {\n    left: $right;\n  }\n}\n\n@mixin alignleft {\n  body.ltr & {\n    text-align: left;\n  }\n  body.rtl & {\n    text-align: right;\n  }\n}\n\n@mixin alignright {\n  body.ltr & {\n    text-align: right;\n  }\n  body.rtl & {\n    text-align: left;\n  }\n}\n\n@mixin border-left($params...) {\n  body.ltr & {\n    border-left: $params;\n  }\n  body.rtl & {\n    border-right: $params;\n  }\n}\n\n@mixin border-right($params...) {\n  body.ltr & {\n    border-right: $params;\n  }\n  body.rtl & {\n    border-left: $params;\n  }\n}\n\n@mixin border-left-width($param) {\n  body.ltr & {\n    border-left-width: $param;\n  }\n  body.rtl & {\n    border-right-width: $param;\n  }\n}\n\n@mixin border-right-width($param) {\n  body.ltr & {\n    border-right-width: $param;\n  }\n  body.rtl & {\n    border-left-width: $param;\n  }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n  body.ltr & {\n    border-radius: $tl $tr $br $bl;\n  }\n  body.rtl & {\n    border-radius: $tr $tl $bl $br;\n  }\n}\n\n@mixin border-top-left-radius($params...) {\n  body.ltr & {\n    border-top-left-radius: $params;\n  }\n  body.rtl & {\n    border-top-right-radius: $params;\n  }\n}\n\n@mixin border-top-right-radius($params...) {\n  body.ltr & {\n    border-top-right-radius: $params;\n  }\n  body.rtl & {\n    border-top-left-radius: $params;\n  }\n}\n\n@mixin border-bottom-left-radius($params...) {\n  body.ltr & {\n    border-bottom-left-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-right-radius: $params;\n  }\n}\n\n@mixin border-bottom-right-radius($params...) {\n  body.ltr & {\n    border-bottom-right-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-left-radius: $params;\n  }\n}\n\n@mixin floatleft {\n  body.ltr & {\n    float: left;\n  }\n  body.rtl & {\n    float: right;\n  }\n}\n\n@mixin floatright {\n  body.ltr & {\n    float: right;\n  }\n  body.rtl & {\n    float: left;\n  }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    margin: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    margin: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin margin-left($margin...) {\n  body.ltr & {\n    margin-left: $margin;\n  }\n  body.rtl & {\n    margin-right: $margin;\n  }\n}\n\n@mixin margin-right($margin...) {\n  body.ltr & {\n    margin-right: $margin;\n  }\n  body.rtl & {\n    margin-left: $margin;\n  }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    padding: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    padding: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin padding-left($padding...) {\n  body.ltr & {\n    padding-left: $padding;\n  }\n  body.rtl & {\n    padding-right: $padding;\n  }\n}\n\n@mixin padding-right($padding...) {\n  body.ltr & {\n    padding-right: $padding;\n  }\n  body.rtl & {\n    padding-left: $padding;\n  }\n}\n\n// Misc\n\n@mixin dark-inputs {\n  @include placeholder-styles($grey400);\n\n  .btn,\n  .select:not(.selectize) select {\n    background-color: $grey200;\n\n    &:focus,\n    &:hover {\n      background-color: darken($grey200, 5%);\n    }\n\n    &:active,\n    &.active {\n      background-color: darken($grey200, 10%);\n    }\n  }\n\n  .text {\n    background-color: $grey200;\n\n    &:focus {\n      background-color: darken($grey200, 5%);\n    }\n  }\n}\n\n@mixin header-btn {\n  width: calc(30rem / 16);\n  height: calc(30rem / 16);\n  padding-left: 0;\n  padding-right: 0;\n\n  &:not(:hover):not(:active):not(.active) {\n    background-color: transparent;\n  }\n  &:not(:active):not(.active):hover {\n    background-color: transparentize($grey300, 0.85);\n  }\n}\n\n@mixin h6-styles {\n  margin: 14px 0 3px;\n  font-size: 11px;\n  line-height: 1.2;\n  color: $lightTextColor;\n  text-transform: uppercase;\n}\n\n@mixin token-styles {\n  display: inline-block;\n  border-radius: $smallBorderRadius;\n  padding: 3px 7px;\n  font-size: 12px;\n  line-height: 14px;\n  color: $textColor;\n  background-color: $grey100;\n}\n\n@mixin active-token-styles {\n  background-color: $grey200;\n}\n\n@mixin menu-styles {\n  z-index: 100;\n  border-radius: $menuBorderRadius;\n  padding: 0 14px;\n  overflow: auto;\n  background: $white;\n  user-select: none;\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-item-styles {\n  margin: 0 -14px;\n  padding: 10px 14px;\n  color: $menuOptionColor;\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n@mixin menu-item-active-styles {\n  color: var(--white) !important;\n  background-color: var(--dark-sel-color);\n\n  svg {\n    @include svg-mask(var(--white));\n  }\n}\n\n@mixin disclosure-link-hover-styles {\n  color: $menuOptionColor;\n  background-color: $grey050;\n}\n\n@mixin input-styles {\n  border-radius: $smallBorderRadius;\n  border: 1px solid transparentize($inputColor, 0.75);\n  background-color: hsl(212, 50%, 99%);\n  background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n  box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n  input::-webkit-input-placeholder,\n  textarea::-webkit-input-placeholder {\n    color: $color;\n  }\n\n  input:-ms-input-placeholder,\n  textarea:-ms-input-placeholder {\n    color: $color;\n  }\n\n  input::-ms-input-placeholder,\n  textarea::-ms-input-placeholder {\n    color: $color;\n  }\n\n  input:-moz-placeholder,\n  textarea:-moz-placeholder {\n    color: $color;\n  }\n\n  input::-moz-placeholder,\n  textarea::-moz-placeholder {\n    color: $color;\n  }\n\n  input::placeholder,\n  textarea::placeholder {\n    color: $color;\n  }\n}\n\n@mixin select-styles {\n  position: relative;\n  border-radius: $largeBorderRadius;\n  white-space: nowrap;\n}\n\n@mixin select-container-styles {\n  max-width: 100%;\n  position: relative;\n  :not(.flex) > & {\n    display: inline-block;\n  }\n}\n\n@mixin select-arrow-styles {\n  @include angle;\n  position: absolute;\n  z-index: 1;\n  top: calc(50% - 5px);\n  @include right(9px);\n  user-select: none;\n  pointer-events: none;\n  color: var(--ui-control-color);\n}\n\n@mixin select-input-styles {\n  display: block;\n  position: relative;\n  max-width: 100%;\n  border: none;\n  @include padding(7px, 22px, 7px, 10px);\n  font-size: 14px;\n  line-height: 20px;\n  color: $textColor;\n  background-color: hsl(212, 25%, 90%);\n  appearance: none;\n  // from https://stackoverflow.com/a/15933790/1688568\n  &::-ms-expand {\n    display: none;\n  }\n}\n\n@mixin select-input-fullwidth-styles {\n  min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n  outline-color: transparent;\n  background-color: hsl(212, 25%, 85%);\n  box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n  height: var(--touch-target-size);\n  width: var(--touch-target-size);\n}\n\n// https://tailwindcss.com/docs/screen-readers#undoing-screen-reader-only-elements\n@mixin visually-hidden {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@mixin not-visually-hidden {\n  position: static;\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n@mixin readable {\n  font-size: 16px;\n  line-height: 22px;\n\n  h1,\n  .h1,\n  h2,\n  .h2,\n  h3,\n  .h3,\n  h4,\n  .h4,\n  h5,\n  .h5,\n  h6,\n  .h6 {\n    margin: 24px 0 16px;\n    font-weight: 600;\n  }\n\n  h1,\n  .h1 {\n    font-size: 32px;\n    line-height: 40px;\n    color: #000;\n  }\n\n  h2,\n  .h2 {\n    font-size: 24px;\n    line-height: 30px;\n  }\n\n  h3,\n  .h3 {\n    font-size: 20px;\n    line-height: 24px;\n  }\n\n  h4,\n  .h4 {\n    font-size: 16px;\n    line-height: 20px;\n  }\n\n  h5,\n  .h5 {\n    font-size: 14px;\n    line-height: 18px;\n  }\n\n  h6,\n  .h6 {\n    font-size: 13.6px;\n    line-height: 17px;\n    color: $mediumTextColor;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n\n  .tip-dismiss-btn {\n    position: absolute;\n    top: 12px;\n    @include right(12px);\n\n    & + p {\n      margin-top: 0;\n    }\n  }\n\n  blockquote {\n    margin: 16px 0;\n\n    &:not(.note) {\n      padding: 0 16px;\n      color: $mediumTextColor;\n      @include border-left(4px solid $hairlineColor);\n    }\n\n    &.note {\n      position: relative;\n      border-radius: 4px;\n      padding: 1em;\n      @include padding-left(50px);\n      border: 1px solid;\n\n      &.dismissible {\n        @include padding-right(36px);\n      }\n\n      &:not(.tip):not(.warning) {\n        border-color: $errorColor;\n        color: #bf503f;\n\n        &:before {\n          content: 'alert';\n          color: $errorColor;\n        }\n      }\n\n      &.tip {\n        border-color: $linkColor;\n        color: $linkColor;\n\n        &:before {\n          content: 'lightbulb';\n          color: $linkColor;\n        }\n      }\n\n      &.warning {\n        border-color: $warningColor;\n        color: #cf783a;\n\n        &:before {\n          content: 'alert';\n          color: $warningColor;\n        }\n      }\n\n      &:before {\n        @include icon;\n        opacity: 1;\n        position: absolute;\n        top: 15px;\n        @include left(16px);\n        font-size: 24px;\n        width: 24px;\n      }\n\n      a[href] {\n        color: currentColor;\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .go:after {\n    font-size: 14px;\n  }\n}\n\n@mixin checkered-bg($size) {\n  // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n  $halfSize: $size * 0.5;\n  background-image: linear-gradient(\n      45deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      135deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      45deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    ),\n    linear-gradient(\n      135deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    );\n  background-size: $size $size;\n  background-position:\n    0 0,\n    $halfSize 0,\n    $halfSize -#{$halfSize},\n    0 $halfSize;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n$base: 24px;\n$tabPadding: 14px;\n$tabWidth: $base * 11;\n$gridColor: var(--gray-100);\n\n@mixin workspaceBg {\n  background-color: var(--gray-050);\n  background-image: linear-gradient(to right, $gridColor 1px, transparent 0px),\n    linear-gradient(to bottom, $gridColor 1px, transparent 1px);\n  background-size: $base $base;\n}\n\n.layoutdesigner {\n  container-type: inline-size;\n}\n\n.fld-container {\n  display: flex;\n  align-items: stretch;\n  position: relative;\n  @include input-styles;\n  overflow: hidden;\n  box-shadow: none;\n  @include padding-right($tabWidth + 1);\n  min-height: 500px;\n\n  .errors > & {\n    border: 1px solid var(--error-color) !important;\n  }\n\n  .fld-workspace {\n    flex: 1;\n    @include border-radius(\n      calc(var(--small-border-radius) - 1px),\n      0,\n      0,\n      calc(var(--small-border-radius - 1px))\n    );\n    @include padding($base, 0, $base, $base);\n    @include workspaceBg;\n    background-position: -1px -1px;\n    box-shadow: inset 0 1px 3px -1px darken($grey200, 10%);\n\n    .fld-tabs {\n      display: flex;\n      align-items: flex-start;\n      flex-wrap: wrap;\n    }\n  }\n\n  &:not(:has(.fld-library)) {\n    @include padding-right(0);\n\n    .fld-workspace {\n      @include padding-right($base);\n    }\n  }\n\n  .fld-library {\n    position: absolute;\n    top: 0;\n    @include right(0);\n    height: 100%;\n    width: $tabWidth + 1;\n    padding: $tabPadding;\n  }\n}\n\n.fld-new-tab-btn:active {\n  background-color: var(--gray-050);\n}\n\n.fld-library-menu {\n  width: $tabWidth;\n  @include margin-left($tabPadding * -1);\n  padding: $tabPadding;\n}\n\n.fld-library {\n  display: flex;\n  flex-direction: column;\n\n  .btngroup {\n    margin-bottom: $tabPadding;\n  }\n\n  .fld-field-library {\n    margin: -3px;\n    padding: 3px;\n    flex: 1;\n    min-height: 0;\n    overflow: auto;\n\n    .fld-field-group {\n      margin-top: $tabPadding;\n\n      & > *:not(:first-child) {\n        margin-top: var(--s);\n      }\n    }\n  }\n\n  .fld-ui-library > *:not(:first-child) {\n    margin-top: var(--s);\n  }\n\n  .filtered {\n    display: none;\n  }\n}\n\n.layoutdesigner .fld-library,\n.fld-tab .tabs .tab,\n.fld-tab .fld-tabcontent,\n.fld-new-tab-btn,\n.fld-new-tab-btn:hover {\n  background-color: var(--white);\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 2px 5px -2px transparentize($grey900, 0.8);\n}\n\n.fld-tab .settings:before,\n.fld-element .settings:before {\n  margin-top: -2px;\n  font-size: 16px;\n  opacity: 0.5;\n}\n\n.fld-tab .settings:hover:before,\n.fld-tab .settings.active:before,\n.fld-element .settings:hover:before,\n.fld-element .settings.active:before {\n  opacity: 1;\n}\n\n.fld-tab {\n  width: $tabWidth + $base;\n  @include padding(0, $base + 1, $base, 0);\n  box-sizing: border-box;\n\n  .tabs {\n    margin: -10px -12px 0;\n    padding: 10px 12px 0;\n    overflow: hidden;\n    display: flex;\n\n    .tab {\n      display: flex;\n      align-items: center;\n      gap: var(--xs);\n      max-width: calc(100% - 10px);\n      box-sizing: border-box;\n      padding: 8px $tabPadding;\n      border-radius: var(--medium-border-radius) var(--medium-border-radius) 0 0;\n\n      body:not(.dragging) &.draggable {\n        cursor: move;\n        cursor: grab;\n      }\n\n      span {\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n      }\n    }\n  }\n\n  .fld-tabcontent {\n    padding: $tabPadding;\n    @include border-radius(\n      0,\n      var(--medium-border-radius),\n      var(--medium-border-radius),\n      var(--medium-border-radius)\n    );\n\n    & > .fld-element,\n    & > .fld-add-btn {\n      &:not(:first-child) {\n        margin-top: var(--s);\n      }\n    }\n\n    .fld-add-btn:not([aria-expanded='true']) {\n      display: none;\n    }\n  }\n\n  &.fld-insertion {\n    .tabs .tab,\n    .fld-tabcontent {\n      margin: -2px;\n      border: 2px dashed var(--hairline-color);\n      box-shadow: none;\n      @include workspaceBg;\n    }\n    .tabs .tab {\n      background-position: -1px -1px;\n    }\n    .fld-tabcontent {\n      background-position: -1px -13px;\n    }\n  }\n}\n\n.fld-tab-caboose {\n  min-height: 24px;\n}\n\n.fld-element {\n  position: relative;\n  display: flex;\n  align-items: center;\n  padding: var(--s);\n  gap: var(--s);\n  box-shadow: inset 0 0 0 1px var(--hairline-color);\n  border-radius: var(--medium-border-radius);\n  background-color: var(--white);\n\n  body:not(.dragging) & {\n    cursor: move;\n    cursor: grab;\n  }\n\n  &.fld-insertion {\n    box-sizing: border-box;\n    border: 2px dashed var(--hairline-color);\n    border-radius: var(--medium-border-radius);\n    background: none;\n    box-shadow: none;\n  }\n\n  &.draghelper {\n    @include shadow;\n  }\n\n  &.fld-field {\n    color: var(--medium-text-color);\n    background-color: var(--gray-100);\n\n    &:not(.draghelper) {\n      box-shadow: none;\n    }\n\n    .field-name {\n      display: flex;\n      flex-direction: column;\n      gap: var(--xs);\n    }\n  }\n\n  .fld-element-icon {\n    text-align: center;\n\n    &,\n    svg {\n      width: 16px;\n      height: 16px;\n    }\n\n    svg {\n      @include svg-mask(var(--ui-control-color));\n    }\n  }\n\n  .field-name {\n    flex: 1;\n    overflow: hidden;\n\n    .fld-element-label,\n    .fld-attribute {\n      flex: 1;\n      display: flex;\n      align-items: center;\n      gap: var(--xs);\n    }\n\n    .fld-element-label h4,\n    .fld-attribute .smalltext {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .fld-element-label h4 {\n      font-weight: normal;\n      color: var(--text-color);\n      margin: 0;\n    }\n  }\n}\n\n.fld-hr,\n.fld-br {\n  position: relative;\n  flex: 1;\n  display: flex;\n  justify-content: center;\n\n  &:before {\n    position: absolute;\n    display: block;\n    top: calc(50% - 2px);\n    left: 0;\n    width: 100%;\n    height: 4px;\n    content: '';\n    font-size: 0;\n    border-radius: 2px;\n  }\n\n  .smalltext {\n    position: relative;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    background-color: var(--gray-100);\n    border-radius: var(--large-border-radius);\n    padding: 0 var(--s);\n    height: var(--touch-target-size);\n  }\n}\n\n.fld-hr:before {\n  background-color: var(--gray-100);\n}\n\n.fld-br:before {\n  background-image: repeating-linear-gradient(\n    to right,\n    var(--gray-100),\n    var(--gray-100) calc(100% / 19),\n    transparent calc(100% / 19),\n    transparent calc(100% / 9.5),\n    var(--gray-100) calc(100% / 9.5)\n  );\n}\n\n.fld-element-settings-body {\n  flex: 1;\n  margin: -24px var(--neg-padding) 0;\n  padding: 24px var(--padding);\n  overflow: hidden auto;\n  position: relative;\n}\n\n.fld-element-settings-footer {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  margin: 0 var(--neg-padding) -24px;\n  padding: 5px var(--padding);\n  @include pane;\n  background-color: var(--gray-050);\n  z-index: 3;\n\n  & > .ee-site-select {\n    flex: 1;\n  }\n\n  & > .btn {\n    @include margin-left(5px);\n  }\n\n  & > .spinner {\n    @include margin(0, var(--neg-padding), 0, 0);\n  }\n}\n\n@container (width < #{$base + $tabWidth + $base + $tabWidth + 1}) {\n  .fld-container {\n    @include padding-right(0);\n\n    .fld-workspace {\n      @include padding-right($base);\n    }\n\n    & > .fld-library {\n      display: none;\n    }\n  }\n\n  .fld-tab {\n    .fld-tabcontent {\n      .fld-add-btn {\n        display: inline-flex !important;\n      }\n    }\n  }\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n/* No Scroll */\nhtml.noscroll,\nhtml.noscroll body {\n  overflow: hidden;\n  height: 100%;\n}\n\n/* Image Editor */\n\n.modal.imageeditor {\n  background-color: var(--gray-900);\n  color: var(--white);\n  @include light-on-dark-text;\n  @include light-focus-ring;\n  opacity: 0;\n  user-select: none;\n}\n\n.modal.imageeditor.modal {\n  border-radius: 0;\n}\n\n.modal.imageeditor.modal .body:after {\n  display: none;\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder) {\n  background-color: var(--gray-600);\n  color: var(--white);\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder):hover {\n  background-color: var(--gray-700);\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder).active {\n  background-color: var(--gray-800);\n}\n\n.modal.imageeditor .icon::before {\n  width: 24px;\n  height: 24px;\n  margin-left: -3px;\n  display: inline-block;\n  content: '';\n}\n\n.modal.imageeditor .icon.rotate-left::before {\n  background-image: url(../images/image-editor/rotate-left.svg);\n}\n\n.modal.imageeditor .icon.rotate-right::before {\n  background-image: url(../images/image-editor/rotate-right.svg);\n}\n\n.modal.imageeditor .icon.flip-vertical::before {\n  background-image: url(../images/image-editor/flip-vertical.svg);\n}\n\n.modal.imageeditor .icon.flip-horizontal::before {\n  background-image: url(../images/image-editor/flip-horizontal.svg);\n}\n\n.modal.imageeditor .icon.constraint::before {\n  background-image: url(../images/image-editor/unconstrained.svg);\n}\n\n.modal.imageeditor .icon.focal-point::before {\n  background-image: url(../images/image-editor/focal-point.svg);\n}\n\n.modal.imageeditor .body {\n  display: flex;\n  padding: 0;\n}\n\n.modal.imageeditor input {\n  color: var(--text-color);\n}\n\n.modal.imageeditor .body .tabs {\n  border-right: 1px solid var(--gray-1000);\n}\n\n.modal.imageeditor .body .tabs ul {\n  width: 100px;\n  flex-direction: column;\n  align-items: stretch;\n}\n\n.modal.imageeditor .body .tabs ul li {\n  position: relative;\n  padding: 14px;\n  text-align: center;\n  border-bottom: 1px solid var(--gray-1000);\n  cursor: pointer;\n\n  &::before {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    content: '';\n    width: 0;\n    height: 100%;\n    background-color: currentColor;\n  }\n\n  &.selected {\n    background-color: darken($grey900, 5%);\n\n    &::before {\n      width: 2px;\n    }\n  }\n}\n\n.modal.imageeditor .body .tabs ul li i {\n  background-repeat: no-repeat;\n  background-position: top center;\n  display: block;\n  height: 24px;\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='rotate'] i {\n  background-image: url(../images/image-editor/rotate-left.svg);\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='crop'] i {\n  background-image: url(../images/image-editor/crop.svg);\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='filters'] i {\n  background-image: url(../images/image-editor/filters.svg);\n}\n\n.modal.imageeditor .body .tabs ul li:hover {\n  background-color: darken($grey900, 2%);\n}\n\n.modal.imageeditor .body .tabs ul li:hover {\n  cursor: pointer;\n}\n\n.modal.imageeditor .body .views {\n  padding: 24px;\n  overflow: auto;\n}\n\n.modal.imageeditor .body .views .btngroup {\n  margin-bottom: 24px;\n}\n\n.modal.imageeditor .body .views .filters ul {\n  width: 100px;\n}\n\n.modal.imageeditor .body .views .filters ul li {\n  text-align: center;\n  margin-right: 14px;\n  margin-bottom: 14px;\n}\n\n.modal.imageeditor .body .views .filters ul li:last-child {\n  margin-right: 0;\n}\n\n.modal.imageeditor .body .views .filters ul li img {\n  border: 3px solid transparent;\n  border-radius: 4px;\n}\n\n.modal.imageeditor .body .views .filters ul li span {\n  display: block;\n}\n\n.modal.imageeditor .body .views .filters ul li:hover {\n  cursor: pointer;\n}\n\n.modal.imageeditor .body .views .filters ul li.selected img {\n  border-color: var(--white);\n}\n\n.modal.imageeditor .body .image-container {\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  overflow: hidden;\n}\n\n.modal.imageeditor .body .image-container .image {\n  text-align: center;\n  flex-grow: 1;\n  position: relative;\n  margin: 14px;\n}\n\n.modal.imageeditor .body .image-container .image canvas {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\n.modal.imageeditor .body .image-container .image-tools {\n  text-align: center;\n}\n\n.modal.imageeditor .body .image-container .image-tools .straightening {\n  max-width: 400px;\n  min-height: toRem(60);\n  display: block;\n  margin: 0 auto;\n  overflow: hidden;\n}\n\n.modal.imageeditor .footer {\n  position: absolute;\n  background-color: transparent;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  border-top: 1px solid #000;\n\n  body.has-debug-toolbar & {\n    padding-bottom: calc(8px + 42px);\n  }\n}\n\n.modal.imageeditor .body .views .crop {\n  fieldset .heading {\n    display: none;\n  }\n\n  .custom-constraint-spacer {\n    padding: 0 var(--xs);\n  }\n\n  .constraint-group {\n    display: grid;\n    grid-gap: var(--xs);\n  }\n\n  .custom {\n    @include padding-left(calc(1rem + 5px));\n  }\n\n  .orientation {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    input {\n      -webkit-appearance: none;\n      -moz-appearance: none;\n      appearance: none;\n      background-position: center center;\n      background-repeat: no-repeat;\n      margin: 0 4px;\n      cursor: pointer;\n\n      &[value='landscape'] {\n        width: 30px;\n        height: 20px;\n        background-image: url(../images/image-editor/orientation-landscape-unchecked.svg);\n\n        &:checked {\n          background-image: url(../images/image-editor/orientation-landscape-checked.svg);\n        }\n      }\n\n      &[value='portrait'] {\n        width: 20px;\n        height: 30px;\n        background-image: url(../images/image-editor/orientation-portrait-unchecked.svg);\n\n        &:checked {\n          background-image: url(../images/image-editor/orientation-portrait-checked.svg);\n        }\n      }\n    }\n  }\n}\n\n.modal.imageeditor.vertical .body .views .crop {\n  & > .btngroup:first-child {\n    justify-content: center;\n  }\n}\n\n.modal.imageeditor:not(.vertical) .body .views .crop {\n  .constraint.custom {\n    margin-top: var(--xs);\n  }\n}\n\n/* Vertical */\n\n.vertical.imageeditor .body {\n  flex-direction: column;\n\n  .image-container {\n    flex-basis: 30vh;\n    flex-shrink: 0;\n  }\n\n  .constraint-group {\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n.vertical.imageeditor .body .tabs ul {\n  display: flex;\n  flex-direction: row;\n  width: 100%;\n  border-top: 1px solid #000;\n  border-bottom: 1px solid #000;\n}\n\n.vertical.imageeditor .body .tabs ul li {\n  flex-grow: 1;\n  border: 0;\n  border-right: 1px solid #000;\n  padding: 10px 7px;\n\n  &::before {\n    top: unset;\n    top: 0;\n    width: 100%;\n    height: 0;\n  }\n\n  &.selected::before {\n    width: 100%;\n    height: 2px;\n  }\n}\n\n.vertical.imageeditor .body .views {\n  width: auto;\n}\n\n.vertical.imageeditor .body .views .rotate {\n  display: flex;\n  justify-content: center;\n  flex-wrap: wrap;\n  margin-bottom: -14px;\n}\n\n.vertical.imageeditor .body .views .rotate .btngroup {\n  margin: 0 7px 14px;\n}\n\n.vertical.imageeditor .body .views .filters ul {\n  width: auto;\n  height: 109px;\n  overflow: auto;\n  white-space: nowrap;\n  margin: 0 -24px;\n  margin-bottom: -24px;\n  padding: 24px;\n  text-align: center;\n}\n\n.vertical.imageeditor .body .views .filters ul li {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n/* Slide Rule */\n\n.slide-rule {\n  position: relative;\n  padding: 10px 0;\n\n  &:focus {\n    box-shadow: none;\n  }\n\n  @include focus-styles {\n    .cursor::after {\n      box-shadow: var(--focus-ring);\n    }\n  }\n\n  .cursor {\n    &::after {\n      content: '';\n      width: toRem(20);\n      height: toRem(50);\n      position: absolute;\n      top: -15px;\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n}\n\n.slide-rule .cursor {\n  position: absolute;\n  margin-left: toRem(-4);\n  margin-top: 4px;\n  left: 50%;\n  z-index: 1;\n  width: 0;\n  height: 0;\n  border-left: toRem(5) solid transparent;\n  border-right: toRem(5) solid transparent;\n  border-top: toRem(5) solid #63a6e1;\n}\n\n.slide-rule .graduations {\n  white-space: nowrap;\n  height: 40px;\n  position: relative;\n}\n\n.slide-rule .graduations ul {\n  position: relative;\n  float: left;\n}\n\n.slide-rule .graduations ul li {\n  display: inline-block;\n  font-size: 8px;\n  position: relative;\n  width: 10px;\n}\n\n.slide-rule .graduations ul li:not(.main-graduation) {\n  left: 1px;\n}\n\n.slide-rule .graduations ul li.main-graduation:before {\n  border-left-width: 3px;\n}\n\n.slide-rule .graduations ul li.main-graduation .label {\n  display: block;\n  cursor: default;\n}\n\n.slide-rule .graduations ul li.selected:before {\n  border-left-color: #63a6e1;\n}\n\n.slide-rule .graduations ul li:before {\n  content: '';\n  position: absolute;\n  border-left: 1px solid var(--white);\n  height: 10px;\n  top: 0px;\n  left: 0;\n}\n\n.slide-rule .graduations ul li .label {\n  width: 20px;\n  position: absolute;\n  top: 10px;\n  left: -9px;\n  display: none;\n  text-align: center;\n}\n\n.slide-rule .value {\n  display: none;\n  position: absolute;\n  bottom: 0;\n  left: 50%;\n  z-index: 1;\n  box-sizing: border-box;\n  padding: 5px;\n  width: 50px;\n  margin-left: -25px;\n  background: var(--gray-600);\n}\n\n.slide-rule .overlay {\n  z-index: 2;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 1px;\n  left: 0;\n  background-image: linear-gradient(\n    to right,\n    var(--gray-900) 0%,\n    transparentize($grey900, 1) 15%,\n    transparentize($grey900, 1) 85%,\n    var(--gray-900) 100%\n  );\n}\n\n/* Misc */\n\n.menu.dark {\n  background-color: var(--gray-600);\n  @include light-on-dark-text;\n\n  ul {\n    li {\n      a {\n        color: var(--white) !important;\n\n        &:not(.sel):not(.disabled):hover {\n          background-color: var(--gray-700);\n        }\n      }\n    }\n  }\n}\n","_:-ms-lang(x),\n.elements .tableview td.checkbox-cell input.checkbox + label,\n.elements .tableview td.checkbox-cell div.checkbox {\n  top: 16px;\n}\n\n_:-ms-lang(x),\ninput.checkbox + label:empty,\ndiv:empty.checkbox {\n  display: block;\n}\n","@charset \"UTF-8\";\n\n@import '@craftcms/sass/mixins';\n\n.cp-chart {\n  margin: 0;\n  height: 100%;\n  position: relative;\n}\n\n.cp-chart svg {\n  width: 100%;\n  height: 100%;\n}\n\n.cp-chart .axis path,\n.cp-chart .axis line {\n  fill: none;\n  stroke: var(--hairline-color);\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .ticks-axis path,\n.cp-chart .ticks-axis line {\n  fill: none;\n  stroke: none;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .ticks-axis g.tick text {\n  fill: var(--black);\n  font-size: 11px;\n}\n\n.cp-chart .axis text {\n  fill: RGBA(0, 0, 0, 0.6);\n}\n\n.cp-chart .grid-line .tick {\n  stroke: RGBA(0, 0, 0, 0.08);\n  stroke-opacity: 0.7;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .grid-line .tick line {\n  stroke: RGBA(0, 0, 0, 0.08);\n  stroke-opacity: 0.7;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .grid-line path {\n  stroke-width: 0;\n}\n\n.tooltip {\n  border-radius: 3px;\n  padding: 7px 10px;\n  background: transparentize($white, 0.1);\n  position: absolute;\n  z-index: 1000000;\n  @include shadow;\n  user-select: none;\n  pointer-events: none;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"css/cp.css","mappings":"AAAA,MCGA,YACE,aACA,2BAEA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,4BACA,oCAEA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,oCACA,sCACA,kBAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,oBAEA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,oBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBAEA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,mBAEA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBAEA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,sBAEA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,sBACA,mBAEA,mBAC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","sources":["webpack:///./css/craft.scss","webpack:///./css/_color-palette.scss","webpack:///./css/_variables.scss","webpack:///./css/_main.scss","webpack:///../../../../../packages/craftcms-sass/_mixins.scss","webpack:///./css/_cp.scss","webpack:///./css/_global-sidebar.scss","webpack:///./css/_craft-tooltip.scss","webpack:///./css/_preview.scss","webpack:///./css/_login.scss","webpack:///../../../../../node_modules/@craftcms/sass/_mixins.scss","webpack:///./css/_fld.scss","webpack:///./css/_image_editor.scss","webpack:///./css/_shame.scss","webpack:///./css/charts.scss"],"sourcesContent":[":root{--white: #fff;--black: #000;--gray-050-hsl: 212, 60%, 97%;--gray-100-hsl: 212, 50%, 93%;--gray-150-hsl: 212, 40%, 89%;--gray-200-hsl: 212, 30%, 85%;--gray-300-hsl: 211, 13%, 65%;--gray-350-hsl: 211, 11%, 59%;--gray-400-hsl: 210, 10%, 53%;--gray-500-hsl: 211, 12%, 43%;--gray-550-hsl: 210, 13%, 40%;--gray-600-hsl: 209, 14%, 37%;--gray-700-hsl: 209, 18%, 30%;--gray-800-hsl: 209, 20%, 25%;--gray-900-hsl: 210, 24%, 16%;--gray-1000-hsl: 210, 24%, 10%;--gray-050: hsl(var(--gray-050-hsl));--gray-100: hsl(var(--gray-100-hsl));--gray-150: hsl(var(--gray-150-hsl));--gray-200: hsl(var(--gray-200-hsl));--gray-300: hsl(var(--gray-300-hsl));--gray-350: hsl(var(--gray-350-hsl));--gray-400: hsl(var(--gray-400-hsl));--gray-500: hsl(var(--gray-500-hsl));--gray-550: hsl(var(--gray-550-hsl));--gray-600: hsl(var(--gray-600-hsl));--gray-700: hsl(var(--gray-700-hsl));--gray-800: hsl(var(--gray-800-hsl));--gray-900: hsl(var(--gray-900-hsl));--gray-1000: hsl(var(--gray-1000-hsl));--red-050: #fef2f2;--red-100: #fee2e2;--red-200: #fecaca;--red-300: #fca5a5;--red-400: #f87171;--red-500: #ef4444;--red-600: #dc2626;--red-700: #b91c1c;--red-800: #991b1b;--red-900: #7f1d1d;--red-950: #450a0a;--orange-050: #fff7ed;--orange-100: #ffedd5;--orange-200: #fed7aa;--orange-300: #fdba74;--orange-400: #fb923c;--orange-500: #f97316;--orange-600: #ea580c;--orange-700: #c2410c;--orange-800: #9a3412;--orange-900: #7c2d12;--orange-950: #431407;--amber-050: #fffbeb;--amber-100: #fef3c7;--amber-200: #fde68a;--amber-300: #fcd34d;--amber-400: #fbbf24;--amber-500: #f59e0b;--amber-600: #d97706;--amber-700: #b45309;--amber-800: #92400e;--amber-900: #78350f;--amber-950: #451a03;--yellow-050: #fefce8;--yellow-100: #fef9c3;--yellow-200: #fef08a;--yellow-300: #fde047;--yellow-400: #facc15;--yellow-500: #eab308;--yellow-600: #ca8a04;--yellow-700: #a16207;--yellow-750: #93580b;--yellow-800: #854d0e;--yellow-900: #713f12;--yellow-950: #422006;--lime-050: #f7fee7;--lime-100: #ecfccb;--lime-200: #d9f99d;--lime-300: #bef264;--lime-400: #a3e635;--lime-500: #84cc16;--lime-600: #65a30d;--lime-700: #4d7c0f;--lime-800: #3f6212;--lime-900: #365314;--lime-950: #1a2e05;--green-050: #f0fdf4;--green-100: #dcfce7;--green-200: #bbf7d0;--green-300: #86efac;--green-400: #4ade80;--green-500: #22c55e;--green-600: #16a34a;--green-700: #15803d;--green-800: #166534;--green-900: #14532d;--green-950: #052e16;--emerald-050: #ecfdf5;--emerald-100: #d1fae5;--emerald-200: #a7f3d0;--emerald-300: #6ee7b7;--emerald-400: #34d399;--emerald-500: #10b981;--emerald-600: #059669;--emerald-700: #047857;--emerald-800: #065f46;--emerald-900: #064e3b;--emerald-950: #022c22;--teal-050: #f0fdfa;--teal-100: #ccfbf1;--teal-200: #99f6e4;--teal-300: #5eead4;--teal-400: #2dd4bf;--teal-500: #14b8a6;--teal-550: #11a697;--teal-600: #0d9488;--teal-700: #0f766e;--teal-800: #115e59;--teal-900: #134e4a;--teal-950: #042f2e;--cyan-050: #ecfeff;--cyan-100: #cffafe;--cyan-200: #a5f3fc;--cyan-300: #67e8f9;--cyan-400: #22d3ee;--cyan-500: #06b6d4;--cyan-600: #0891b2;--cyan-700: #0e7490;--cyan-800: #155e75;--cyan-900: #164e63;--cyan-950: #083344;--sky-050: #f0f9ff;--sky-100: #e0f2fe;--sky-200: #bae6fd;--sky-300: #7dd3fc;--sky-400: #38bdf8;--sky-500: #0ea5e9;--sky-600: #0284c7;--sky-700: #0369a1;--sky-800: #075985;--sky-900: #0c4a6e;--sky-950: #082f49;--blue-050: #eff6ff;--blue-100: #dbeafe;--blue-200: #bfdbfe;--blue-300: #93c5fd;--blue-400: #60a5fa;--blue-500: #3b82f6;--blue-600: #2563eb;--blue-700: #1d4ed8;--blue-800: #1e40af;--blue-900: #1e3a8a;--blue-950: #172554;--indigo-050: #eef2ff;--indigo-100: #e0e7ff;--indigo-200: #c7d2fe;--indigo-300: #a5b4fc;--indigo-400: #818cf8;--indigo-500: #6366f1;--indigo-600: #4f46e5;--indigo-700: #4338ca;--indigo-800: #3730a3;--indigo-900: #312e81;--indigo-950: #1e1b4b;--violet-050: #f5f3ff;--violet-100: #ede9fe;--violet-200: #ddd6fe;--violet-300: #c4b5fd;--violet-400: #a78bfa;--violet-500: #8b5cf6;--violet-600: #7c3aed;--violet-700: #6d28d9;--violet-800: #5b21b6;--violet-900: #4c1d95;--violet-950: #2e1065;--purple-050: #faf5ff;--purple-100: #f3e8ff;--purple-200: #e9d5ff;--purple-300: #d8b4fe;--purple-400: #c084fc;--purple-500: #a855f7;--purple-600: #9333ea;--purple-700: #7e22ce;--purple-800: #6b21a8;--purple-900: #581c87;--purple-950: #3b0764;--fuchsia-050: #fdf4ff;--fuchsia-100: #fae8ff;--fuchsia-200: #f5d0fe;--fuchsia-300: #f0abfc;--fuchsia-400: #e879f9;--fuchsia-500: #d946ef;--fuchsia-600: #c026d3;--fuchsia-700: #a21caf;--fuchsia-800: #86198f;--fuchsia-900: #701a75;--fuchsia-950: #4a044e;--pink-050: #fdf2f8;--pink-100: #fce7f3;--pink-200: #fbcfe8;--pink-300: #f9a8d4;--pink-400: #f472b6;--pink-500: #ec4899;--pink-600: #db2777;--pink-700: #be185d;--pink-800: #9d174d;--pink-900: #831843;--pink-950: #500724;--rose-050: #fff1f2;--rose-100: #ffe4e6;--rose-200: #fecdd3;--rose-300: #fda4af;--rose-400: #fb7185;--rose-500: #f43f5e;--rose-600: #e11d48;--rose-700: #be123c;--rose-800: #9f1239;--rose-900: #881337;--rose-950: #4c0519}:root{--bg-color: $grey100;--bg-color-hsl: 212deg, 50%, 93%;--primary-color: var(--red-600);--secondary-color: var(--gray-500);--input-color: hsl(212, 25%, 50%);--text-color: var(--gray-700);--medium-dark-text-color: var(--gray-550);--medium-text-color: var(--gray-550);--light-text-color: var(--gray-500);--link-color: #1f5fea;--font-weight-bold: 700;--hairline-color: rgba(51, 64, 77, 0.1);--medium-hairline-color: #cfd8e3;--dark-hairline-color: rgba(123, 135, 147, 0.5);--light-focus-color: var(--blue-300);--medium-focus-color: var(--blue-500);--dark-focus-color: #0f74b1;--light-focus-ring: 0 0 0 1px #5ed0fa, 0 0 0 3px rgba(94, 208, 250, 0.7);--medium-focus-ring: 0 0 0 1px #2bb0ed, 0 0 0 3px rgba(43, 176, 237, 0.7);--dark-focus-ring: 0 0 0 1px #0f74b1, 0 0 0 3px rgba(15, 116, 177, 0.7);--light-sel-color: var(--gray-200);--dark-sel-color: var(--gray-500);--error-color-rgb: 216, 31, 35;--error-color: rgba(var(--error-color-rgb), 1);--warning-color: var(--amber-700);--success-color: var(--teal-700);--notice-color: var(--sky-700);--enabled-color: var(--teal-550);--pending-color: var(--orange-400);--disabled-color: var(--red-600);--indicator-border-color: var(--amber-600);--indicator-icon-color: var(--amber-700);--small-border-radius: 3px;--medium-border-radius: 4px;--large-border-radius: 5px;--menu-border-radius: var(--medium-border-radius);--checkbox-size: 1rem;--radio-size: 1rem}@font-face{font-family:\"Craft\";src:url(\"../fonts/Craft.woff2\") format(\"woff2\"),url(\"../fonts/Craft.woff\") format(\"woff\"),url(\"../fonts/Craft.ttf\") format(\"truetype\"),url(\"../fonts/Craft.svg#Craft\") format(\"svg\");font-weight:normal;font-style:normal;font-display:block}:root{--ui-control-color: var(--gray-550);--ui-control-hover-color: var(--gray-600);--ui-control-active-color: var(--gray-700);--ui-control-static-bg-color: rgba(96, 125, 159, 0.25);--ui-control-bg-color: var(--ui-control-static-bg-color);--ui-control-hover-bg-color: rgba(96, 125, 159, 0.3);--ui-control-active-bg-color: rgba(96, 125, 159, 0.5);--ui-control-border-radius: var(--large-border-radius);--ui-control-height: calc(34rem / 16);--ui-control-height--small: calc(30rem / 16);--light-focus-hsl: 211.6981132075deg, 96.3636363636%, 78.431372549%;--medium-focus-hsl: 217.2192513369deg, 91.2195121951%, 59.8039215686%;--dark-focus-hsl: 202.5925925926deg, 84.375%, 37.6470588235%;--focus-ring: 0 0 0 1px hsl(var(--dark-focus-hsl)), 0 0 0 3px hsla(var(--dark-focus-hsl), 0.8);--inner-focus-ring: inset 0 0 0 1px hsl(var(--dark-focus-hsl)), inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);--touch-target-size: calc( 24rem / 16 );--thumb-size: calc(20rem / 16);--icon-size: 1rem;--elements-busy-top-position: calc(50% - var(--size, 20px) / 2);--lh: 1.42em}body,html{box-shadow:var(--light-focus-ring);background-color:var(--gray-100)}html.noscroll,html.noscroll body{overflow:hidden}body{width:100vw;overflow-x:hidden;font-size:0.875rem;line-height:var(--lh);color:var(--text-color);-webkit-font-smoothing:subpixel-antialiased}body.rtl{direction:rtl}body,input,select,textarea{font-family:system-ui,BlinkMacSystemFont,-apple-system,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif}.first,h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child,blockquote:first-child,hr:first-child,.pane:first-child,.grid:first-child,fieldset:first-child,.field:first-child,.toolbar:first-child,.buttons:first-child,.condition-container:first-child{margin-top:0 !important}.last,h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child,blockquote:last-child,.pane:last-child,.grid:last-child,.meta:last-child,fieldset:last-child,.field:last-child,.toolbar:last-child,.buttons:last-child,.condition-container:last-child{margin-bottom:0 !important}.mt-0{margin-top:0 !important}.mt-xs{margin-top:var(--xs) !important}.mt-s{margin-top:var(--s) !important}.mt-m{margin-top:var(--m) !important}.mt-l{margin-top:var(--l) !important}.mt-xl{margin-top:var(--xl) !important}.mb-0{margin-bottom:0 !important}.mb-xs{margin-bottom:var(--xs) !important}.mb-s{margin-bottom:var(--s) !important}.mb-m{margin-bottom:var(--m) !important}.mb-l{margin-bottom:var(--l) !important}.mb-xl{margin-bottom:var(--xl) !important}.ml-0{margin-left:0 !important}.ml-xs{margin-left:var(--xs) !important}.ml-s{margin-left:var(--s) !important}.ml-m{margin-left:var(--m) !important}.ml-l{margin-left:var(--l) !important}.ml-xl{margin-left:var(--xl) !important}.mr-0{margin-right:0 !important}.mr-xs{margin-right:var(--xs) !important}.mr-s{margin-right:var(--s) !important}.mr-m{margin-right:var(--m) !important}.mr-l{margin-right:var(--l) !important}.mr-xl{margin-right:var(--xl) !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.mx-xs{margin-left:var(--xs) !important;margin-right:var(--xs) !important}.mx-s{margin-left:var(--s) !important;margin-right:var(--s) !important}.mx-m{margin-left:var(--m) !important;margin-right:var(--m) !important}.mx-l{margin-left:var(--l) !important;margin-right:var(--l) !important}.mx-xl{margin-left:var(--xl) !important;margin-right:var(--xl) !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-xs{margin-top:var(--xs) !important;margin-bottom:var(--xs) !important}.my-s{margin-top:var(--s) !important;margin-bottom:var(--s) !important}.my-m{margin-top:var(--m) !important;margin-bottom:var(--m) !important}.my-l{margin-top:var(--l) !important;margin-bottom:var(--l) !important}.my-xl{margin-top:var(--xl) !important;margin-bottom:var(--xl) !important}.pointer{cursor:pointer !important}.no-scroll{overflow:hidden !important}.draghelper{box-sizing:border-box;list-style-type:none}.offset-drag-helper{transition:margin linear 200ms,padding linear 200ms}body.dragging.ltr .offset-drag-helper{margin:-50px 0 0 -50px;padding:60px 0 0 60px}body.dragging.rtl .offset-drag-helper{margin:-50px -50px 0 0;padding:60px 60px 0 0}img{max-width:100%}body.rtl .ltr .text,body.rtl .ltr table.editable textarea{text-align:left !important;direction:ltr !important}body.ltr .rtl .text,body.ltr .rtl table.editable textarea{text-align:right !important;direction:rtl !important}.icon:before,.menu ul.padded li a.sel:before,.menu ul.padded li .menu-item.sel:before,.menu ul.padded li .menu-option.sel:before,.menu .flex.padded.sel:before,.texticon:before,#help:before,.secure:before,.insecure:before,.go:after,.required:after,.preview-btn:before,.view-btn:before,.action-btn:before,[data-icon]:before,[data-icon-after]:after{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none}.badge-icon{position:relative;top:-1px;display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;box-sizing:border-box;border:1px solid var(--indicator-border-color);border-radius:var(--small-border-radius);color:var(--indicator-icon-color);font-size:9px}.secure:before,.insecure:before{margin-top:-3px;font-size:14px}[data-icon]:before{content:attr(data-icon)}[data-icon-after]:after{content:attr(data-icon-after)}[data-icon-size=large][data-icon]:before,[data-icon-size=large][data-icon-after]:after{font-size:20px}[data-icon-size=small][data-icon]:before,[data-icon-size=small][data-icon-after]:after{font-size:14px}[data-icon-size=puny][data-icon]:before,[data-icon-size=puny][data-icon-after]:after{font-size:12px}body.rtl [data-icon=list]:before,body.rtl [data-icon-after=list]:after{content:\"listrtl\"}body.rtl [data-icon=structure]:before,body.rtl [data-icon-after=structure]:after{content:\"structurertl\"}.icon.secure:before{content:\"secure\"}.icon.insecure:before{content:\"insecure\"}.icon.add:before{content:\"plus\"}.icon.edit:before{content:\"edit\"}.icon.settings:before{content:\"settings\"}.icon.search:before{content:\"search\"}.icon.expand:before{content:\"expand\"}.icon.collapse:before{content:\"collapse\"}.help:before{content:\"help\";color:var(--pink-400)}body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-right:var(--xs)}body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-left:var(--xs)}.preview-btn:before{margin-top:-2px;content:\"view\"}body.ltr .view-btn:before{content:\"share\"}body.rtl .view-btn:before{content:\"shareleft\"}.action-btn:before{content:\"ellipsis\"}h1,.h1{margin-bottom:24px;font-size:18px;font-weight:bold;line-height:1.2}h2,.h2{margin:14px 0;font-size:16px;font-weight:bold;line-height:1.2}h3,.h3{margin:14px 0;font-weight:bold;line-height:1.2}h4,.h4{margin:14px 0;font-weight:bold;line-height:1.2;color:var(--medium-text-color)}h5,.h5{margin:14px 0 3px;line-height:1.2;color:var(--medium-text-color)}h6,.h6{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase}body.ltr h1[data-icon]:before{margin:-8px 10px 0 0}body.rtl h1[data-icon]:before{margin:-8px 0 0 10px}h2[data-icon]:before{font-size:19px}body.ltr h2[data-icon]:before{margin:-4px 6px 0 0}body.rtl h2[data-icon]:before{margin:-4px 0 0 6px}hr{margin:24px 0;border:none;border-top:1px solid var(--hairline-color);height:0;color:rgba(0,0,0,0)}.pane hr{margin:24px -24px}p{margin:1em 0}h5+p{margin-top:0}sup{vertical-align:super;font-size:smaller}sub{vertical-align:sub;font-size:smaller}body.ltr .indent{margin-left:14px}body.rtl .indent{margin-right:14px}.bullets{list-style-type:square}body.ltr .bullets{padding-left:40px}body.rtl .bullets{padding-right:40px}ol{list-style-type:decimal}body.ltr ol{padding-left:40px}body.rtl ol{padding-right:40px}code,.code{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important}code.smalltext,.code.smalltext{font-size:.8em !important}.code input,.code textarea{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important;font-size:1em !important}pre code{display:block;overflow-x:auto}a{color:var(--link-color);cursor:pointer}a[aria-current]{cursor:default}body.underline-links a,a:hover{text-decoration:underline}a .cp-icon svg rect,a .cp-icon svg circle,a .cp-icon svg ellipse,a .cp-icon svg line,a .cp-icon svg polyline,a .cp-icon svg polygon,a .cp-icon svg path,a .cp-icon svg text{fill:var(--icon-color, var(--link-color));stroke-width:0}a:not([href]){color:inherit;cursor:inherit}body.underline-links a:not([href]),a:not([href]):hover{text-decoration:none}a.sel,li.sel>a{cursor:default !important;text-decoration:none}.go:after{font-size:11px;margin-top:-1px;color:var(--link-color);opacity:.9}body.ltr .go:after{padding-left:4px}body.rtl .go:after{padding-right:4px}body.ltr .go:after{content:\"circlerarr\"}body.rtl .go:after{content:\"circlelarr\"}button{cursor:pointer}.checkmark-icon,.alert-icon{padding:5px;margin-bottom:0 !important;line-height:10px;border-radius:20px;cursor:pointer}.checkmark-icon:before,.alert-icon:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none}.checkmark-icon{background-color:var(--gray-200)}p .checkmark-icon{display:inline-block}.checkmark-icon:before{content:\"check\";color:var(--success-color)}.alert-icon{background-color:var(--gray-200)}.alert-icon:before{content:\"alert\";color:var(--error-color)}.revision-status-hud{max-width:400px}.revision-status-hud .http-error{border-radius:var(--medium-border-radius);border:1px solid var(--hairline-color);color:var(--light-text-color);background-color:var(--gray-050);padding:7px 14px}.draft-notice{display:flex;align-items:center;align-content:stretch;justify-content:center;gap:var(--s);color:var(--blue-800)}#content-notice .draft-notice{display:inline-flex;justify-content:flex-start}body.ltr .so-notice>.draft-notice{margin:-5px 0 -5px calc(var(--xl)*-1)}body.rtl .so-notice>.draft-notice{margin:-5px calc(var(--xl)*-1) -5px 0}body.ltr .so-notice>.draft-notice{padding:5px 0 5px var(--xl)}body.rtl .so-notice>.draft-notice{padding:5px var(--xl) 5px 0}body.ltr .so-notice>.draft-notice{border-bottom-left-radius:var(--large-border-radius)}body.rtl .so-notice>.draft-notice{border-bottom-right-radius:var(--large-border-radius)}body.ltr .so-notice>.draft-notice{background-image:linear-gradient(to bottom right, rgba(37, 99, 235, 0.2), rgba(37, 99, 235, 0) 50%)}body.rtl .so-notice>.draft-notice{background-image:linear-gradient(to left, rgba(37, 99, 235, 0.2), rgba(37, 99, 235, 0))}.draft-notice p{flex:1;margin:0}.draft-notice .draft-icon{position:relative;flex-shrink:0;width:34px;height:34px;display:flex;justify-content:center;align-items:center;border-radius:100%;border:2px solid rgba(30,64,175,.2);box-sizing:border-box;box-shadow:0 1px 1px 1px var(--white)}.draft-notice .draft-icon:before{position:relative;left:1px;color:var(--blue-800) !important;font-size:18px}.draft-notice .draft-icon:after{content:\"\";font-size:0;position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:100%;box-shadow:inset 0 2px 0 rgba(30,58,138,.2)}.draft-notice .discard-changes-btn{background-color:rgba(0,0,0,0) !important;color:var(--blue-800) !important;border:2px solid var(--blue-600)}body.ltr .draft-notice .discard-changes-btn{margin-left:var(--xs)}body.rtl .draft-notice .discard-changes-btn{margin-right:var(--xs)}.draft-notice .discard-changes-btn:hover,.draft-notice .discard-changes-btn:focus{border-color:#1555e2}.draft-notice .discard-changes-btn:active{border-color:#134cca}.revision-notice{display:flex;align-items:center;align-content:stretch;justify-content:center;gap:var(--s);color:var(--gray-600)}#content-notice .revision-notice{display:inline-flex;justify-content:flex-start}.revision-notice p{flex:1;margin:0}.revision-notice .revision-icon{position:relative;flex-shrink:0;width:34px;height:34px;display:flex;justify-content:center;align-items:center;border-radius:100%;border:2px solid rgba(51,64,77,.2);box-sizing:border-box;box-shadow:0 1px 1px 1px var(--white)}.revision-notice .revision-icon:before{position:relative;left:1px;color:var(--grey-800) !important;font-size:18px}.revision-notice .revision-icon:after{content:\"\";font-size:0;position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:100%;box-shadow:inset 0 2px 0 rgba(30,58,138,.2)}button.toggle{appearance:none;color:inherit;background:none;border:none;padding:0}.toggle:before,a.fieldtoggle:before{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transition:transform linear 100ms}body.ltr .toggle:before,body.ltr a.fieldtoggle:before{transform:rotate(-45deg)}body.rtl .toggle:before,body.rtl a.fieldtoggle:before{transform:rotate(135deg)}.toggle.expanded:before,a.fieldtoggle.expanded:before,.sidebar nav li.expanded>.toggle:before,.structure li:not(.collapsed)>.row>.toggle:before{transform:rotate(45deg) !important}a.fieldtoggle{display:block;position:relative;margin:14px 0;color:var(--text-color);text-decoration:none}body.ltr a.fieldtoggle{padding-left:12px}body.rtl a.fieldtoggle{padding-right:12px}a.fieldtoggle:before{display:block;position:absolute;top:7px}body.ltr a.fieldtoggle:before{left:-1px}body.rtl a.fieldtoggle:before{right:-1px}em,i{font-style:italic}ul.errors em{font-style:normal}strong,b,i em{font-weight:bold}.readable{font-size:16px;line-height:22px}.readable h1,.readable .h1,.readable h2,.readable .h2,.readable h3,.readable .h3,.readable h4,.readable .h4,.readable h5,.readable .h5,.readable h6,.readable .h6{margin:24px 0 16px;font-weight:600}.readable h1,.readable .h1{font-size:32px;line-height:40px;color:#000}.readable h2,.readable .h2{font-size:24px;line-height:30px}.readable h3,.readable .h3{font-size:20px;line-height:24px}.readable h4,.readable .h4{font-size:16px;line-height:20px}.readable h5,.readable .h5{font-size:14px;line-height:18px}.readable h6,.readable .h6{font-size:13.6px;line-height:17px;color:#596673}.readable ul,.readable ol{margin:1em 0}body.ltr .readable ul,body.ltr .readable ol{padding-left:2em}body.rtl .readable ul,body.rtl .readable ol{padding-right:2em}.readable ul li{list-style-type:disc}.readable li+li{margin-top:.25em}.readable .tip-dismiss-btn{position:absolute;top:12px}body.ltr .readable .tip-dismiss-btn{right:12px}body.rtl .readable .tip-dismiss-btn{left:12px}.readable .tip-dismiss-btn+p{margin-top:0}.readable blockquote{margin:16px 0}.readable blockquote:not(.note){padding:0 16px;color:#596673}body.ltr .readable blockquote:not(.note){border-left:4px solid rgba(51,64,77,.1)}body.rtl .readable blockquote:not(.note){border-right:4px solid rgba(51,64,77,.1)}.readable blockquote.note{position:relative;border-radius:4px;padding:1em;border:1px solid}body.ltr .readable blockquote.note{padding-left:50px}body.rtl .readable blockquote.note{padding-right:50px}body.ltr .readable blockquote.note.dismissible{padding-right:36px}body.rtl .readable blockquote.note.dismissible{padding-left:36px}.readable blockquote.note:not(.tip):not(.warning){border-color:#dc2626;color:#bf503f}.readable blockquote.note:not(.tip):not(.warning):before{content:\"alert\";color:#dc2626}.readable blockquote.note.tip{border-color:#1f5fea;color:#1f5fea}.readable blockquote.note.tip:before{content:\"lightbulb\";color:#1f5fea}.readable blockquote.note.warning{border-color:#854d0e;color:#cf783a}.readable blockquote.note.warning:before{content:\"alert\";color:#854d0e}.readable blockquote.note:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;opacity:1;position:absolute;top:15px;font-size:24px;width:24px}body.ltr .readable blockquote.note:before{left:16px}body.rtl .readable blockquote.note:before{right:16px}.readable blockquote.note a[href]{color:currentColor;text-decoration:underline}.readable .go:after{font-size:14px}body.ltr .leftalign{text-align:left}body.rtl .leftalign{text-align:right}.topalign{vertical-align:top}body.ltr .rightalign{text-align:right}body.rtl .rightalign{text-align:left}.centeralign{text-align:center !important}.nowrap{white-space:nowrap}.break-word{word-wrap:break-word}.light{color:var(--medium-text-color) !important;font-weight:normal}.extralight{color:var(--light-text-color) !important}.smalltext{font-size:12px;line-height:1.2}.largetext{font-size:16px;line-height:1.2}.zilch{padding:100px 0;text-align:center;font-size:20px;line-height:24px;color:var(--light-text-color)}.zilch.small{padding:24px 0;font-size:16px}input.checkbox+label.smalltext{padding-top:2px}.required:after{content:\"asterisk\";font-size:12px;color:var(--rose-500)}body.ltr .required:after{margin:-2px 0 0 5px}body.rtl .required:after{margin:-2px 5px 0 0}.scrollpane{overflow:auto}body.ltr .left{float:left}body.rtl .left{float:right}body.ltr .right{float:right}body.rtl .right{float:left}th,td{vertical-align:middle}body.ltr th,body.ltr td{text-align:left}body.rtl th,body.rtl td{text-align:right}body.ltr table[dir=rtl] th,body.ltr table[dir=rtl] td{text-align:right}body.rtl table[dir=ltr] th,body.rtl table[dir=ltr] td{text-align:left}th.right,td.right{float:none}body.ltr th.right,body.ltr td.right{text-align:right}body.rtl th.right,body.rtl td.right{text-align:left}.clear{display:block;clear:both;height:0}.fullwidth{width:100%}.token{display:inline-block;border-radius:3px;padding:3px 7px;font-size:12px;line-height:14px;color:#3f4d5a;background-color:#e4edf6}.token[data-name=\"*\"]{position:relative;width:10px}.token[data-name=\"*\"] span{opacity:0}.token[data-name=\"*\"]:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;display:block;position:absolute;top:0;left:0;width:100%;font-size:9px;line-height:17px;content:\"asterisk\";text-indent:0}.token:focus{background-color:#cdd8e4}.highlight .token{display:inline;border:none;border-radius:0;padding:0;font-size:inherit;line-height:inherit;text-shadow:none;background:rgba(0,0,0,0);box-shadow:none}.pane.highlight pre[class*=language-]{overflow:visible}.pane.highlight pre[class*=language-]>code.diff-highlight .token:not(.prefix){margin:0 -24px;padding:0 24px}.success{color:var(--success-color) !important}.notice.with-icon:before,.notice .icon:before,.warning.with-icon:before,.warning .icon:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;width:1em}body.ltr .notice.with-icon:before,body.ltr .notice .icon:before,body.ltr .warning.with-icon:before,body.ltr .warning .icon:before{margin:-2px 2px 0 0}body.rtl .notice.with-icon:before,body.rtl .notice .icon:before,body.rtl .warning.with-icon:before,body.rtl .warning .icon:before{margin:-2px 0 0 2px}.notice.has-icon,.warning.has-icon{display:flex;flex-wrap:nowrap;align-items:flex-start}.notice.has-icon .icon,.warning.has-icon .icon{flex-shrink:1}.notice{color:var(--notice-color) !important}.notice a{text-decoration:underline}.notice.with-icon:before,.notice .icon:before{content:\"lightbulb\"}.warning{color:var(--warning-color) !important}.warning.with-icon:before,.warning .icon:before{content:\"alert\"}.error{color:var(--error-color) !important}.icon.move:not(.disabled){cursor:move}.icon.move:before{content:\"move\";color:var(--custom-text-color, var(--ui-control-color))}.icon.move:not(.disabled):hover:before{color:var(--link-color)}.icon.delete{display:inline-block;line-height:inherit}.icon.delete:before{content:\"remove\";color:var(--ui-control-color)}.icon.delete:not(.disabled){cursor:pointer}.icon.delete:not(.disabled):hover:before{color:var(--disabled-color)}.icon.delete:not(.disabled):active:before{color:var(--red-800)}.hidden{display:none !important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.invisible{visibility:hidden}.clearafter:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.info{vertical-align:bottom;display:inline-block;width:1em;height:1.375em;text-align:center;cursor:pointer;overflow:hidden}.info:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;vertical-align:baseline;width:100%;line-height:1.375;color:var(--ui-control-color)}.info:not(.warning):before{content:\"info\"}.info:not(.warning):hover:before{color:var(--link-color)}.info.warning:before{content:\"alert\"}.info.warning:hover:before{color:var(--warning-color)}.info-hud table{max-width:280px;table-layout:auto}.info-hud td{word-wrap:break-word;width:100%}@media(max-width: 450px){.info-hud table{table-layout:fixed;width:100%}}.content{position:relative}.content:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.customize-sources-modal{overflow:visible !important}body.ltr .customize-sources-modal{padding-left:200px}body.rtl .customize-sources-modal{padding-right:200px}.customize-sources-modal>.cs-sidebar{position:absolute;top:0;margin:0;padding:10px 0;border:none;width:200px;height:calc(100% - 44px);box-sizing:border-box;background-color:var(--gray-050);overflow:auto;box-shadow:inset -1px 0 0 var(--hairline-color)}body.ltr .customize-sources-modal>.cs-sidebar{left:0}body.rtl .customize-sources-modal>.cs-sidebar{right:0}body.ltr .customize-sources-modal>.cs-sidebar{border-top-left-radius:var(--large-border-radius)}body.rtl .customize-sources-modal>.cs-sidebar{border-top-right-radius:var(--large-border-radius)}.customize-sources-modal>.cs-sidebar>.btn{display:block;width:calc(100% - 28px)}body.ltr .customize-sources-modal>.cs-sidebar>.btn{margin:10px 0 0 14px}body.rtl .customize-sources-modal>.cs-sidebar>.btn{margin:10px 14px 0 0}body.ltr .customize-sources-modal.sidebar-hidden{padding-left:0}body.rtl .customize-sources-modal.sidebar-hidden{padding-right:0}.customize-sources-modal.sidebar-hidden>.cs-sidebar{display:none}.customize-sources-modal>.source-settings{position:relative;height:calc(100% - 44px);box-sizing:border-box;padding:24px;overflow:auto}.customize-sources-modal>.footer{position:absolute;bottom:0;left:0;width:100%}.customize-sources-item{--selected-item-color: var(--white);display:flex;width:calc(100% - 1px);box-sizing:border-box;align-items:center;position:relative;margin-top:-1px;background-color:var(--gray-100);border:solid var(--hairline-color);border-width:1px 0;user-select:none;cursor:default}.customize-sources-item+.customize-sources-item.heading{margin-top:10px}.customize-sources-item+.customize-sources-item:not(.heading){border-top:1px solid var(--hairline-color)}.customize-sources-item.sel{--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);--ui-control-color: var(--selected-item-color);background-color:var(--dark-sel-color);color:var(--selected-item-color);z-index:1}.customize-sources-item .label{flex:1}.customize-sources-item.heading .label{text-transform:uppercase;color:var(--light-text-color);font-size:12px;font-weight:bold}.customize-sources-item.heading.sel .label{color:var(--selected-item-color)}.customize-sources-item__move{position:absolute;top:50%;transform:translate(-50%, -50%);justify-content:center;align-items:center}body.ltr .customize-sources-item__move{right:0}body.rtl .customize-sources-item__move{left:0}.customize-sources-item__move.icon{display:flex;text-decoration:none}.customize-sources-item__btn{padding:8px 14px;margin:3px}body.ltr .customize-sources-item__btn{padding-right:30px}body.rtl .customize-sources-item__btn{padding-left:30px}.checkbox-select-item{display:flex;align-items:flex-start;align-content:stretch;margin-bottom:4px}.checkbox-select-item .move{margin-top:-3px;position:relative;z-index:1}body.ltr .checkbox-select-item .move{margin-right:10px}body.rtl .checkbox-select-item .move{margin-left:10px}ul.path{display:flex;flex-direction:row;align-items:stretch;flex-wrap:wrap}ul.path li{display:inline-flex;align-items:center}ul.path li:not(:last-child):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr ul.path li:not(:last-child):after{margin:0 5px 0 2px}body.rtl ul.path li:not(:last-child):after{margin:0 2px 0 5px}body.ltr ul.path li:not(:last-child):after{transform:rotate(-45deg)}body.rtl ul.path li:not(:last-child):after{transform:rotate(135deg)}ul.icons{margin-top:20px;display:flex;flex-wrap:wrap}ul.icons li{margin:0 4px 10px 0}ul.icons li a{display:block;position:relative;padding:60px 5px 10px;width:110px;text-align:center;color:var(--text-color);border-radius:4px;border:1px solid var(--white)}ul.icons li a:before{display:block;position:absolute;top:0;left:0;width:100%;font-size:40px;line-height:60px}ul.icons li a .icon img,ul.icons li a .icon svg{width:40px;height:40px;position:absolute;top:12px;left:calc(50% - 20px)}ul.icons li a .icon.icon-mask svg rect,ul.icons li a .icon.icon-mask svg circle,ul.icons li a .icon.icon-mask svg ellipse,ul.icons li a .icon.icon-mask svg line,ul.icons li a .icon.icon-mask svg polyline,ul.icons li a .icon.icon-mask svg polygon,ul.icons li a .icon.icon-mask svg path,ul.icons li a .icon.icon-mask svg text{fill:var(--text-color);stroke-width:0}ul.icons li a:hover{text-decoration:none;background-color:var(--gray-050);border-color:var(--gray-100)}ul.icons li a:hover .icon.icon-mask svg rect,ul.icons li a:hover .icon.icon-mask svg circle,ul.icons li a:hover .icon.icon-mask svg ellipse,ul.icons li a:hover .icon.icon-mask svg line,ul.icons li a:hover .icon.icon-mask svg polyline,ul.icons li a:hover .icon.icon-mask svg polygon,ul.icons li a:hover .icon.icon-mask svg path,ul.icons li a:hover .icon.icon-mask svg text{fill:var(--link-color);stroke-width:0}@media only screen and (max-width: 380px){ul.icons li a{width:96px}}@media only screen and (max-width: 320px){ul.icons li a{width:75px}}.toolbar{position:relative;margin-bottom:var(--s);min-height:34px}.toolbar.flex,.toolbar .flex{align-items:flex-start}.toolbar .text{border-radius:var(--large-border-radius) !important}.flex{display:flex;align-items:center;align-content:stretch;gap:var(--s)}.flex.flex-gap-xs{gap:var(--xs)}.flex.flex-gap-m{gap:var(--m)}.flex.flex-gap-l{gap:var(--l)}.flex.flex-gap-xl{gap:var(--xl)}.flex:not(.flex-nowrap){flex-wrap:wrap}.flex>*.label{white-space:nowrap}.centeralign .flex{justify-content:center}.inline-flex{display:inline-flex !important;align-items:center;align-content:stretch;gap:var(--s)}.gap-xs{gap:var(--xs)}.gap-s{gap:var(--s)}.gap-m{gap:var(--m)}.gap-l{gap:var(--l)}.gap-xl{gap:var(--xl)}.flex-grow{flex:1;max-width:100%}.flex-justify{justify-content:space-between}.flex-justify-start{justify-content:flex-start}.flex-justify-end{justify-content:flex-end}.flex-justify-center{justify-content:center}.flex-start{align-items:flex-start}.flex-end{align-items:flex-end}.flex-center{align-items:center}.flex-stretch{align-items:stretch}.spacer{width:14px}.buttons{display:flex;gap:7px;position:relative;margin:24px 0;align-items:center}.hud-footer>.buttons,.footer>.buttons{margin:0}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--ui-control-border-radius);padding:7px 10px;border:none;text-align:center;white-space:nowrap;user-select:none;box-sizing:border-box;appearance:none;color:currentColor;font-size:inherit;background-color:var(--ui-control-bg-color)}.btn:not([aria-current]){cursor:pointer}.btn.chromeless{background-color:rgba(0,0,0,0);height:auto;padding:0}.btn.chromeless:hover,.btn.chromeless:active,.btn.chromeless:focus{background-color:rgba(0,0,0,0)}.btn.chromeless:hover,.btn.chromeless:active{text-decoration:underline}.btn.hairline,.btn.link-btn{border:1px solid var(--medium-hairline-color);background-color:rgba(0,0,0,0)}.btn.hairline:active,.btn.hairline[aria-expanded=true],.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{background-color:var(--ui-control-static-bg-color)}.btn.hairline:hover,.btn.hairline:active,.btn.hairline[aria-expanded=true]{border-color:var(--dark-hairline-color)}.btn.link-btn{color:var(--link-color)}.btn.link-btn:hover,.btn.link-btn:active,.btn.link-btn[aria-expanded=true]{border-color:var(--link-color)}.btn.wrap{height:auto;min-height:34px;white-space:initial;text-align:left}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).focus,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):hover{--ui-control-bg-color: var(--ui-control-hover-bg-color)}.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]):active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current]).active,.btn:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not([aria-current])[aria-expanded=true]{--ui-control-bg-color: var(--ui-control-active-bg-color)}.btn[type=color]{padding:6px !important;width:36px}.btn.loading{cursor:default}.btn:hover{text-decoration:none}.btn:empty,.btn.btn-empty{padding-left:12px;padding-right:12px}body.ltr .btn[data-icon]:not(:empty):not(.btn-empty):before,body.ltr .btn.icon:not(:empty):not(.btn-empty):before,body.ltr .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.ltr .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.ltr .btn.menubtn:not(.action-btn).icon:empty:before,body.ltr .btn.menubtn:not(.action-btn).icon.btn-empty:before{margin-right:5px}body.rtl .btn[data-icon]:not(:empty):not(.btn-empty):before,body.rtl .btn.icon:not(:empty):not(.btn-empty):before,body.rtl .btn.menubtn:not(.action-btn)[data-icon]:empty:before,body.rtl .btn.menubtn:not(.action-btn)[data-icon].btn-empty:before,body.rtl .btn.menubtn:not(.action-btn).icon:empty:before,body.rtl .btn.menubtn:not(.action-btn).icon.btn-empty:before{margin-left:5px}.btn:not(.loading) .spinner{display:none}.btn.loading:before,.btn.loading:after,.btn.loading .label{visibility:hidden}.btn div.checkbox{margin-top:2px}.btn [data-icon]{margin-top:-3px}body.ltr .btn [data-icon]{margin-right:5px}body.rtl .btn [data-icon]{margin-left:5px}.btn [data-icon].light:before{color:var(--gray-300)}.disabled{opacity:.25;pointer-events:none;user-select:none}.noteditable{cursor:not-allowed}.noteditable .element,.noteditable .lightswitch-container,.noteditable+.colorhex{cursor:not-allowed}.btn,.spinner{height:var(--ui-control-height)}body.ltr .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.ltr .menu-toggle:not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,body.ltr .menubtn:not(.action-btn).icon:after{margin-left:6px}body.rtl .btn[data-icon-after]:not(:empty):not(.btn-empty):after,body.rtl .menu-toggle:not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,body.rtl .menubtn:not(.action-btn).icon:after{margin-right:6px}.btn[data-icon]:before,.btn[data-icon-after]:after,.btn.icon:before{position:relative}.btn.small[data-icon]:before,.btn.small[data-icon-after]:after,.btn.icon.small:before{font-size:10px}.btngroup{position:relative;z-index:1;display:flex;white-space:nowrap;align-items:center;border-radius:var(--large-border-radius)}.btngroup.fullwidth .btn{flex:1}.btngroup.disabled .btn{cursor:default}.btngroup .btn:focus{z-index:1}body.ltr .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-right:1px}body.rtl .btngroup .btn:not(.dashed):not(:last-child):not(.btngroup-btn-last){margin-left:1px}body.ltr .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-top-left-radius:0;border-bottom-left-radius:0}body.ltr .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-top-right-radius:0;border-bottom-right-radius:0}body.rtl .btngroup .btn:not(:first-child):not(.btngroup-btn-first){border-top-right-radius:0;border-bottom-right-radius:0}body.rtl .btngroup .btn:not(:last-child):not(.btngroup-btn-last){border-top-left-radius:0;border-bottom-left-radius:0}.btngroup--exclusive .btn[aria-pressed=true]:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]){background-color:var(--gray-500);color:var(--white)}.copytext{position:relative;z-index:1;display:flex;white-space:nowrap;align-items:center}body.ltr .copytext .text{border-top-right-radius:0;border-bottom-right-radius:0;min-width:0}body.ltr .copytext .btn{border-top-left-radius:0;border-bottom-left-radius:0}body.rtl .copytext .text{border-top-left-radius:0;border-bottom-left-radius:0}body.rtl .copytext .btn{border-top-right-radius:0;border-bottom-right-radius:0}.copytextbtn{display:inline-flex;flex-wrap:nowrap;align-items:center;border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);padding:0 9px;cursor:pointer;color:var(--medium-text-color)}.copytextbtn .copytextbtn__icon{padding:0;width:13px;background:none;margin-top:-3px;color:var(--light-text-color)}body.ltr .copytextbtn .copytextbtn__icon{margin-left:5px}body.rtl .copytextbtn .copytextbtn__icon{margin-right:5px}.copytextbtn:hover,.copytextbtn:focus{border-color:var(--medium-hairline-color);color:var(--text-color)}.copytextbtn:hover .copytextbtn__value,.copytextbtn:focus .copytextbtn__value{color:var(--text-color)}.copytextbtn.small{padding:0 5px}.copytextbtn.small .copytextbtn__value{font-size:.6875rem}.menu-toggle,.menubtn:not(.action-btn){display:inline-flex;align-items:center;user-select:none}.menu-toggle:after,.menubtn:not(.action-btn):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:relative}.menu-toggle.btn:after,.menubtn:not(.action-btn).btn:after{top:-1px}.menu-toggle.btn:not(.disabled):not(.inactive):active:after,.menu-toggle.btn:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn:not(.disabled):not(.inactive).active:after{border-color:var(--ui-control-active-color)}.menu-toggle.btn.submit:after,.menubtn:not(.action-btn).btn.submit:after{border-color:var(--white) !important;opacity:.8}.menu-toggle.btn.submit:not(.disabled):not(.inactive):hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).hover:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive):active:after,.menu-toggle.btn.submit:not(.disabled):not(.inactive).active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).hover:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive):active:after,.menubtn:not(.action-btn).btn.submit:not(.disabled):not(.inactive).active:after{opacity:1}.menu-toggle:not(.btn):not(.icon),.menubtn:not(.action-btn):not(.btn):not(.icon){height:17px}.menu-toggle:not(.btn):not(.icon):after,.menubtn:not(.action-btn):not(.btn):not(.icon):after{top:-2px;border-color:var(--link-color)}body.ltr .menu-toggle:empty,body.ltr .menu-toggle.btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.ltr .menubtn:not(.action-btn).btn-empty{padding-left:8px}body.rtl .menu-toggle:empty,body.rtl .menu-toggle.btn-empty,body.rtl .menubtn:not(.action-btn):empty,body.rtl .menubtn:not(.action-btn).btn-empty{padding-right:8px}body.ltr .menu-toggle:empty,body.ltr .menu-toggle.btn-empty,body.ltr .menubtn:not(.action-btn):empty,body.ltr .menubtn:not(.action-btn).btn-empty{padding-right:8px}body.rtl .menu-toggle:empty,body.rtl .menu-toggle.btn-empty,body.rtl .menubtn:not(.action-btn):empty,body.rtl .menubtn:not(.action-btn).btn-empty{padding-left:8px}@keyframes rotator{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.spinner{display:inline-flex;align-items:center;justify-content:center;width:var(--size, 24px);height:var(--size, 34px)}.spinner:before{display:block;content:\"\";font-size:0;animation:rotator .7s linear infinite;box-sizing:border-box;width:var(--size, 20px);height:var(--size, 20px);object-fit:scale-down;border-radius:50%;border:2px solid rgba(0,0,0,0);border-right-color:currentColor;border-bottom-color:currentColor;opacity:.8}.spinner.small{--size: 12px}.spinner.big{--size: 48px}.spinner.spinner-absolute{position:absolute;width:var(--size, 20px);height:var(--size, 20px);top:var(--elements-busy-top-position);left:calc(50% - var(--size, 20px)/2)}body.ltr .btn+.spinner{margin-left:7px}body.rtl .btn+.spinner{margin-right:7px}body.ltr .buttons .btn+.spinner,body.ltr .buttons .btngroup+.spinner{margin-left:0}body.rtl .buttons .btn+.spinner,body.rtl .buttons .btngroup+.spinner{margin-right:0}body.ltr .buttons.right .btn+.spinner{margin-right:var(--neg-padding)}body.rtl .buttons.right .btn+.spinner{margin-left:var(--neg-padding)}.btngroup.small .btn,.btn.small{padding:0 var(--s) !important;font-size:12px;line-height:22px}.btngroup.small,.btngroup.small input.btn,.btn.small,.btn.small+.spinner{height:22px}.btngroup.big .btn,.btn.big{padding:0 14px;font-size:14px;line-height:36px}body.ltr .btn.big[data-icon]:before,body.ltr .preview-btn:before,body.ltr .view-btn:before{margin-left:-2px}body.rtl .btn.big[data-icon]:before,body.rtl .preview-btn:before,body.rtl .view-btn:before{margin-right:-2px}.btngroup.big,.btngroup.big input.btn,.btn.big,.btn.big+.spinner{height:36px}.btn.huge{padding:var(--l);line-height:48px;height:48px}.btn.submit,.btn.secondary{color:var(--white) !important;--ui-control-active-color: var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.btn.submit{background-color:var(--primary-color) !important}.btn.submit:not(.disabled):not(.inactive):not(.loading):hover,.btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.btn.submit:not(.disabled):not(.inactive):not(.loading):focus{background-color:#c82020 !important}.btn.submit:not(.disabled):not(.inactive):not(.loading):active,.btn.submit:not(.disabled):not(.inactive):not(.loading).active,.btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#b21d1d !important}.btn.caution{background-color:var(--red-050) !important;color:var(--error-color)}.btn.caution:hover,.btn.caution.hover,.btn.caution:focus{background-color:#fcdada !important}.btn.caution:active,.btn.caution.active,.btn.caution[aria-expanded=true]{background-color:var(--red-100) !important}.secondary-buttons .btn.submit,.btn.secondary{background-color:var(--secondary-color) !important}.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus{background-color:#55616d !important}.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading):active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading).active,.secondary-buttons .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true],.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,.btn.secondary:not(.disabled):not(.inactive):not(.loading)[aria-expanded=true]{background-color:#4a545e !important}div.btn.submit{position:relative;overflow:hidden}div.btn.submit input{position:absolute;left:100%}.btn.dashed{border:1px dashed var(--medium-hairline-color);background-color:rgba(0,0,0,0)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-right:1px solid rgba(0,0,0,0)}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){border-left:1px solid rgba(0,0,0,0)}body.ltr .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-right:-1px}body.rtl .btngroup .btn.dashed:not(:last-child):not(.btngroup-btn-last){margin-left:-1px}.btn.dashed:focus{background-color:rgba(205,216,228,.1);border-color:rgba(0,0,0,0)}.reduce-focus-visibility .btn.dashed:focus:not(:focus-visible){border:1px dashed var(--medium-hairline-color)}.btn.dashed:not(.disabled):active,.btn.dashed:not(.disabled).active,.btn.dashed:not(.disabled)[aria-expanded=true]{background-color:rgba(205,216,228,.25)}.chevron-btns{display:flex;justify-content:flex-start}.chevron-btns .btn{position:relative;padding:0;border-radius:0;background-color:rgba(0,0,0,0)}.chevron-btns .btn.current-step,.chevron-btns .btn.active-drop-target{color:var(--white);--text-color: var(--white);--ui-control-color: var(--white);--ui-control-bg-color: var(--gray-500);--ui-control-hover-bg-color: #55616d;--ui-control-active-bg-color: #4a545e}.chevron-btns .btn.current-step{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7)}.chevron-btns .btn:focus{z-index:1;box-shadow:none}.chevron-btns .btn:focus .label{z-index:1;box-shadow:var(--focus-ring)}.reduce-focus-visibility .chevron-btns .btn:focus:not(:focus-visible) .label{box-shadow:none}.reduce-focus-visibility .chevron-btns .btn:focus-visible .label{box-shadow:var(--focus-ring)}body.ltr .chevron-btns .btn:not(.has-action-menu){padding-right:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns .btn:not(.has-action-menu){padding-left:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns .btn:not(.has-action-menu){margin-right:2.8px}body.rtl .chevron-btns .btn:not(.has-action-menu){margin-left:2.8px}body.ltr .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-right:5px}body.rtl .chevron-btns .btn:not(.has-action-menu):not(.current-step[data-disclosure-trigger]) .btn-body{padding-left:5px}body.ltr .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-left:8px}body.rtl .chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body{padding-right:8px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label{padding:3px}.chevron-btns .btn.current-step[data-disclosure-trigger] .btn-body .label:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:relative}.chevron-btns .btn .btn-body{display:inline-flex;align-items:center;justify-content:center;height:var(--ui-control-height);background-color:var(--ui-control-bg-color)}.chevron-btns .btn .btn-body [data-icon]{--ui-control-height: calc((13rem / 16));text-align:center}body.ltr .chevron-btns .btn .btn-body [data-icon]{margin-right:0}body.rtl .chevron-btns .btn .btn-body [data-icon]{margin-left:0}.chevron-btns .btn .label{display:inline-flex;align-items:center;overflow:hidden;text-overflow:ellipsis}body.ltr .chevron-btns .btn.has-action-menu .btn-body{padding-right:1px}body.rtl .chevron-btns .btn.has-action-menu .btn-body{padding-left:1px}body.ltr .chevron-btns .btn.has-action-menu .btn-body{margin-right:0}body.rtl .chevron-btns .btn.has-action-menu .btn-body{margin-left:0}.chevron-btns .btn .chevron-right,.chevron-btns .btn .chevron-left{position:absolute;top:0;height:100%;width:calc(var(--ui-control-height)/2)}.chevron-btns .btn .chevron-left{border-top:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left{left:0}body.rtl .chevron-btns .btn .chevron-left{right:0}body.ltr .chevron-btns .btn .chevron-left{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .chevron-btns .btn .chevron-left{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.chevron-btns .btn .chevron-left:after{display:block;content:\"\";font-size:0;position:absolute;bottom:0;border-bottom:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.ltr .chevron-btns .btn .chevron-left:after{right:0}body.rtl .chevron-btns .btn .chevron-left:after{left:0}body.ltr .chevron-btns .btn .chevron-left:after{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .chevron-btns .btn .chevron-left:after{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.chevron-btns .btn .chevron-right{border-top:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0);border-bottom:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.ltr .chevron-btns .btn .chevron-right{right:0}body.rtl .chevron-btns .btn .chevron-right{left:0}body.ltr .chevron-btns .btn .chevron-right{border-left:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}body.rtl .chevron-btns .btn .chevron-right{border-right:calc(var(--ui-control-height)/2) solid var(--ui-control-bg-color)}.chevron-btns ol{position:relative;list-style-type:none;display:flex}body.ltr .chevron-btns ol{padding-left:0}body.rtl .chevron-btns ol{padding-right:0}body.ltr .chevron-btns ol li.first-step .btn .btn-body{padding-left:14px}body.rtl .chevron-btns ol li.first-step .btn .btn-body{padding-right:14px}body.ltr .chevron-btns ol li.first-step .btn .btn-body{border-radius:var(--ui-control-border-radius) 0 0 var(--ui-control-border-radius)}body.rtl .chevron-btns ol li.first-step .btn .btn-body{border-radius:0 var(--ui-control-border-radius) var(--ui-control-border-radius) 0}.chevron-btns ol li.first-step .btn .chevron-left{display:none}body.ltr .chevron-btns ol li:not(.first-step) .btn{margin-left:calc(-1*var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{margin-right:calc(-1*var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn{padding-left:calc(var(--ui-control-height)/2)}body.rtl .chevron-btns ol li:not(.first-step) .btn{padding-right:calc(var(--ui-control-height)/2)}body.ltr .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-left:7px}body.rtl .chevron-btns ol li:not(.first-step) .btn .btn-body{padding-right:7px}.color-input-container{position:relative}.color-input-container .color-hex-indicator{position:absolute;top:0;width:1em;line-height:34px;text-align:center;user-select:none}body.ltr .color-input-container .color-hex-indicator{left:7px}body.rtl .color-input-container .color-hex-indicator{right:7px}.color-input{font-family:\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;font-size:.9em !important}body.ltr .color-input{padding-left:calc(7px + 1em)}body.rtl .color-input{padding-right:calc(7px + 1em)}.color{display:inline-block;position:relative;vertical-align:middle;width:34px;height:34px;border-radius:17px;padding:0}.color:not(.static):not(.noteditable){cursor:pointer}.color:not(.small){background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:17px 17px;background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px}.color.small{width:16px;height:16px;background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:8px 8px;background-position:0 0,4px 0,4px -4px,0 4px}.color .color-preview{position:absolute;top:0;width:100%;height:100%;border-radius:17px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}body.ltr .color .color-preview{left:0}body.rtl .color .color-preview{right:0}.color .color-preview:focus-within{box-shadow:var(--focus-ring)}.color .color-preview>.color-preview-input{position:absolute;width:100%;height:100%;margin:0;padding:0;border:none;opacity:0}body.ltr .color .color-preview>.color-preview-input{left:0}body.rtl .color .color-preview>.color-preview-input{right:0}.colorhex{display:inline-block;margin-left:5px;vertical-align:middle;color:var(--medium-text-color)}.lightswitch-outer-container{display:flex}.lightswitch-outer-container .lightswitch-inner-container{border:1px solid var(--hairline-color);border-radius:var(--small-border-radius);display:flex;align-items:center;max-width:100%;padding-left:7px;padding-right:7px}.lightswitch-outer-container .lightswitch-inner-container span{flex-grow:1;padding:7px 0;color:var(--medium-text-color);cursor:default;overflow:auto;overflow-wrap:break-word;hyphens:auto}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=on]{margin-right:7px}.lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:right}body.ltr .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-right:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{margin-left:7px}body.rtl .lightswitch-outer-container .lightswitch-inner-container span[data-toggle=off]{text-align:left}.lightswitch{display:block;position:relative;border:none !important;overflow:hidden;cursor:pointer;user-select:none;background-image:linear-gradient(to right, var(--gray-400), var(--gray-400));transition:background-image linear 100ms}.lightswitch.on{background-image:linear-gradient(to right, var(--enabled-color), var(--enabled-color))}.lightswitch.indeterminate{background-image:linear-gradient(to right, var(--enabled-color), var(--gray-300))}.lightswitch .lightswitch-container{position:relative;height:100%}.lightswitch .lightswitch-container .handle{position:absolute;top:1px;background-color:var(--white)}.lightswitch:not(.small){border-radius:11px;min-width:34px;width:34px;height:22px}.lightswitch:not(.small) .lightswitch-container{width:46px}body.ltr .lightswitch:not(.small) .lightswitch-container{margin-left:-12px}body.rtl .lightswitch:not(.small) .lightswitch-container{margin-right:-12px}.lightswitch:not(.small) .lightswitch-container .handle{border-radius:10px;width:20px;height:20px;left:calc(50% - 10px)}.lightswitch.small{border-radius:9px;width:28px;height:18px}.lightswitch.small .lightswitch-container{width:38px}body.ltr .lightswitch.small .lightswitch-container{margin-left:-10px}body.rtl .lightswitch.small .lightswitch-container{margin-right:-10px}.lightswitch.small .lightswitch-container .handle{border-radius:8px;width:16px;height:16px;left:calc(50% - 8px)}table .lightswitch{display:inline-block;margin-bottom:-5px}body.ltr .lightswitch.on .lightswitch-container{margin-left:0}body.rtl .lightswitch.on .lightswitch-container{margin-right:0}body.ltr .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-left:-6px}body.rtl .lightswitch.indeterminate:not(.small) .lightswitch-container{margin-right:-6px}body.ltr .lightswitch.indeterminate.small .lightswitch-container{margin-left:-5px}body.rtl .lightswitch.indeterminate.small .lightswitch-container{margin-right:-5px}table.data+.pagination{margin-top:24px}.pagination .page-link{width:1.875rem;height:1.875rem;display:flex;align-items:center;justify-content:center;border-radius:var(--medium-border-radius)}.pagination .page-link:after{position:relative;transition:border-color linear 100ms}.pagination .page-link.prev-page:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .pagination .page-link.prev-page:after{transform:rotate(135deg)}body.rtl .pagination .page-link.prev-page:after{transform:rotate(-45deg)}body.ltr .pagination .page-link.prev-page:after{right:-1px}body.rtl .pagination .page-link.prev-page:after{left:-1px}.pagination .page-link.next-page:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .pagination .page-link.next-page:after{transform:rotate(-45deg)}body.rtl .pagination .page-link.next-page:after{transform:rotate(135deg)}body.ltr .pagination .page-link.next-page:after{left:-1px}body.rtl .pagination .page-link.next-page:after{right:-1px}.pagination .page-link:not(.disabled){transition:box-shadow linear 100ms;box-shadow:inset 0 0 0 1px var(--hairline-color);cursor:pointer}.pagination .page-link:not(.disabled):hover{text-decoration:none;box-shadow:inset 0 0 0 1px var(--link-color)}.pagination .page-link:not(.disabled):hover:after{border-color:var(--link-color)}body:not(.reduce-focus-visibility) .pagination .page-link:not(.disabled):focus,body.reduce-focus-visibility .pagination .page-link:not(.disabled):focus-visible{box-shadow:inset 0 0 0 1px var(--hairline-color),var(--focus-ring)}.pagination .page-link.disabled{opacity:1}.pagination .page-link.disabled:after{border-color:var(--hairline-color)}body.ltr .actions{float:right}body.rtl .actions{float:left}body.ltr .actions>li{float:left}body.rtl .actions>li{float:right}body.ltr .actions>li+li{margin-left:10px}body.rtl .actions>li+li{margin-right:10px}h1+.actions{margin-top:-100px}h2+.actions{margin-top:-54px}.tablepane{--pane-y-padding-default: calc(var(--xl) - 2px);--pane-x-padding-default: calc(var(--padding) - 2px);margin:calc(var(--pane-padding, var(--pane-y-padding-default))*-1) calc(var(--pane-padding, var(--pane-x-padding-default))*-1) calc(var(--pane-padding, var(--padding))*-1 + var(--pane-padding, var(--m)));padding:0 !important;overflow-x:auto}body.ltr .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.ltr .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-left:var(--pane-padding, var(--pane-x-padding-default))}body.rtl .tablepane table.data th:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox),body.rtl .tablepane table.data td:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox){padding-right:var(--pane-padding, var(--pane-x-padding-default))}body.ltr .tablepane table.data th:last-child,body.ltr .tablepane table.data td:last-child{padding-right:var(--pane-padding, var(--pane-x-padding-default))}body.rtl .tablepane table.data th:last-child,body.rtl .tablepane table.data td:last-child{padding-left:var(--pane-padding, var(--pane-x-padding-default))}table.fixed-layout{table-layout:fixed}table th.thin,table td.thin{width:.01% !important;white-space:nowrap}table thead th{font-weight:bold;vertical-align:top}body.ltr table thead th{text-align:left}body.rtl table thead th{text-align:right}table:not(.data) th,table:not(.data) td{padding-top:7px;padding-bottom:7px}table:not(.data) th:not(:first-child),table:not(.data) td:not(:first-child){padding-left:12px}table:not(.data) th:not(:last-child),table:not(.data) td:not(:last-child){padding-right:12px}table.data th,table.data td{position:relative;padding-left:12px;padding-right:12px;box-sizing:border-box}table.data th.checkbox-cell,table.data th.vuetable-th-slot-checkbox,table.data td.checkbox-cell,table.data td.vuetable-th-slot-checkbox{width:var(--checkbox-size) !important;min-width:var(--checkbox-size);box-sizing:content-box;position:relative}table.data th.checkbox-cell input.checkbox+label,table.data th.checkbox-cell div.checkbox,table.data th.vuetable-th-slot-checkbox input.checkbox+label,table.data th.vuetable-th-slot-checkbox div.checkbox,table.data td.checkbox-cell input.checkbox+label,table.data td.checkbox-cell div.checkbox,table.data td.vuetable-th-slot-checkbox input.checkbox+label,table.data td.vuetable-th-slot-checkbox div.checkbox{position:absolute;top:calc(50% - .5rem)}table.data th{font-weight:bold}body.ltr table.data thead:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child{border-top-left-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child{border-top-right-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:first-child,body.ltr table.data thead:first-child tr:first-child td:first-child,body.ltr table.data tbody:first-child tr:first-child th:first-child,body.ltr table.data tbody:first-child tr:first-child td:first-child,body.ltr table.data tfoot:first-child tr:first-child th:first-child,body.ltr table.data tfoot:first-child tr:first-child td:first-child,body.ltr table.data caption+thead tr:first-child th:first-child,body.ltr table.data caption+thead tr:first-child td:first-child,body.ltr table.data caption+tbody tr:first-child th:first-child,body.ltr table.data caption+tbody tr:first-child td:first-child,body.ltr table.data caption+tfoot tr:first-child th:first-child,body.ltr table.data caption+tfoot tr:first-child td:first-child{border-bottom-left-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:first-child,body.rtl table.data thead:first-child tr:first-child td:first-child,body.rtl table.data tbody:first-child tr:first-child th:first-child,body.rtl table.data tbody:first-child tr:first-child td:first-child,body.rtl table.data tfoot:first-child tr:first-child th:first-child,body.rtl table.data tfoot:first-child tr:first-child td:first-child,body.rtl table.data caption+thead tr:first-child th:first-child,body.rtl table.data caption+thead tr:first-child td:first-child,body.rtl table.data caption+tbody tr:first-child th:first-child,body.rtl table.data caption+tbody tr:first-child td:first-child,body.rtl table.data caption+tfoot tr:first-child th:first-child,body.rtl table.data caption+tfoot tr:first-child td:first-child{border-bottom-right-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child{border-top-right-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child{border-top-left-radius:var(--border-radius, var(--small-border-radius))}body.ltr table.data thead:first-child tr:first-child th:last-child,body.ltr table.data thead:first-child tr:first-child td:last-child,body.ltr table.data tbody:first-child tr:first-child th:last-child,body.ltr table.data tbody:first-child tr:first-child td:last-child,body.ltr table.data tfoot:first-child tr:first-child th:last-child,body.ltr table.data tfoot:first-child tr:first-child td:last-child,body.ltr table.data caption+thead tr:first-child th:last-child,body.ltr table.data caption+thead tr:first-child td:last-child,body.ltr table.data caption+tbody tr:first-child th:last-child,body.ltr table.data caption+tbody tr:first-child td:last-child,body.ltr table.data caption+tfoot tr:first-child th:last-child,body.ltr table.data caption+tfoot tr:first-child td:last-child{border-bottom-right-radius:var(--border-radius, var(--small-border-radius))}body.rtl table.data thead:first-child tr:first-child th:last-child,body.rtl table.data thead:first-child tr:first-child td:last-child,body.rtl table.data tbody:first-child tr:first-child th:last-child,body.rtl table.data tbody:first-child tr:first-child td:last-child,body.rtl table.data tfoot:first-child tr:first-child th:last-child,body.rtl table.data tfoot:first-child tr:first-child td:last-child,body.rtl table.data caption+thead tr:first-child th:last-child,body.rtl table.data caption+thead tr:first-child td:last-child,body.rtl table.data caption+tbody tr:first-child th:last-child,body.rtl table.data caption+tbody tr:first-child td:last-child,body.rtl table.data caption+tfoot tr:first-child th:last-child,body.rtl table.data caption+tfoot tr:first-child td:last-child{border-bottom-left-radius:var(--border-radius, var(--small-border-radius))}table.data thead th,table.data thead td{width:auto;background-color:var(--gray-050);cursor:default}table.data thead th:not(.orderable),table.data thead td{padding-top:var(--s);padding-bottom:var(--s)}table.data thead th{white-space:nowrap;vertical-align:middle}table.data thead th.orderable{position:relative;padding:0 !important}body:not(.dragging) table.data thead th.orderable:not(.ordered):hover{background-color:var(--gray-100)}table.data thead th.orderable.ordered{background-color:var(--light-sel-color)}table.data thead th.orderable.ordered:not(.loading) button:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(225deg);top:2px;position:absolute;top:calc(50% - 3px)}body.ltr table.data thead th.orderable.ordered:not(.loading) button:after{right:var(--m)}body.rtl table.data thead th.orderable.ordered:not(.loading) button:after{left:var(--m)}table.data thead th.orderable.ordered:not(.loading).desc button:after{transform:rotate(45deg)}table.data thead th.orderable button{position:relative;font:inherit;width:100%;padding:var(--pane-padding, var(--m)) var(--m)}body.ltr table.data thead th.orderable button{padding-right:35px}body.rtl table.data thead th.orderable button{padding-left:35px}body.ltr table.data thead th.orderable button{text-align:left}body.rtl table.data thead th.orderable button{text-align:right}table.data thead th.orderable button:focus{z-index:1}table.data thead th:not(.loading) .spinner{display:none}table.data thead th .spinner{position:absolute;top:calc(50% - 6px);--size: 12px}body.ltr table.data thead th .spinner{right:8px}body.rtl table.data thead th .spinner{left:8px}table.data tbody tr{--hover-bg-color: var(--gray-050);--selected-bg-color: var(--dark-sel-color)}table.data tbody tr:not(.disabled):hover th,table.data tbody tr:not(.disabled):hover td{background-color:var(--hover-bg-color)}table.data tbody tr:not(.disabled):focus{position:relative;z-index:1}table.data tbody tr:not(.disabled).sel,table.data tbody tr:not(.disabled).active-drop-target{--text-color: var(--white);--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl))}table.data tbody tr:not(.disabled).sel th,table.data tbody tr:not(.disabled).sel td,table.data tbody tr:not(.disabled).active-drop-target th,table.data tbody tr:not(.disabled).active-drop-target td{color:var(--white);background-color:var(--selected-bg-color)}table.data tbody th,table.data tbody td{padding-top:7px;padding-bottom:7px;background-clip:padding-box;max-width:33vw}table.data tbody td.timestamp{vertical-align:bottom;white-space:nowrap;color:var(--light-text-color)}body.ltr table.data tbody td.timestamp{text-align:right}body.rtl table.data tbody td.timestamp{text-align:left}table.data thead+tbody tr th,table.data thead+tbody tr td,table.data tr+tr th,table.data tr+tr td{border-top:1px solid rgba(0,0,0,0)}table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) th,table.data tr.sel:not(.draggee)+tr.sel:not(.draggee) td{border-top-color:var(--gray-300)}table.collapsed{width:auto}table.collapsed,table.collapsed tbody,table.collapsed tbody tr,table.collapsed tbody th,table.collapsed tbody td{display:block;border:none;padding:0;width:auto !important;white-space:normal}body.ltr table.collapsed,body.ltr table.collapsed tbody,body.ltr table.collapsed tbody tr,body.ltr table.collapsed tbody th,body.ltr table.collapsed tbody td{text-align:left}body.rtl table.collapsed,body.rtl table.collapsed tbody,body.rtl table.collapsed tbody tr,body.rtl table.collapsed tbody th,body.rtl table.collapsed tbody td{text-align:right}table.collapsed thead{display:none}table.collapsed tbody tr{padding:6px 0;border-bottom:1px dotted var(--hairline-color)}table.collapsed tbody tr:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}table.collapsed tbody th,table.collapsed tbody td{padding:2px 0 !important}table.collapsed tbody td:empty{display:none}body.ltr table.collapsed tbody [data-title]{margin-right:0}body.rtl table.collapsed tbody [data-title]{margin-left:0}table.collapsed tbody [data-title]:before{margin-right:5px;content:attr(data-title) \":\";font-weight:bold}table.collapsed tbody [data-title] form{display:inline-block}.datatablesorthelper,.editabletablesorthelper{background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.datatablesorthelper,.datatablesorthelper .chip,.datatablesorthelper a{cursor:move !important}.datatablesorthelper tr:first-child th,.datatablesorthelper tr:first-child td{border-top:none !important}.datatablesorthelper tr:last-child th,.datatablesorthelper tr:last-child td{border-bottom:none !important}.datatablesorthelper th .toggle{display:none !important}.chip,.card{color:var(--custom-text-color, var(--text-color));background-color:var(--custom-bg-color, var(--gray-050))}.chip{position:relative;display:inline-flex;align-items:center;cursor:default;user-select:none;font-weight:normal;padding:0 var(--s);max-width:100%;gap:var(--xs);border-radius:var(--large-border-radius)}.chip.small{flex-direction:row;min-height:calc(1.625rem + 8px);--thumb-size: calc(30rem / 16)}body.ltr .chip.small>.thumb{margin:0 2px 0 -2px}body.rtl .chip.small>.thumb{margin:0 -2px 0 2px}.chip.small>.thumb.cp-icon{--thumb-size: 1rem}.chip.large{flex-direction:column;--thumb-size: 120px;min-width:calc(var(--s)*2 + var(--thumb-size));width:100%;padding-top:var(--xs);padding-bottom:var(--xs)}.chip.large .chip-content{width:100%}.chip .chip-content{display:flex;flex-direction:row;align-items:center;gap:var(--s);max-width:100%}body.ltr .chip .chip-content .status,body.ltr .chip .chip-content .icon{margin-right:0}body.rtl .chip .chip-content .status,body.rtl .chip .chip-content .icon{margin-left:0}.chip .chip-content .icon{margin:-4px -1px 0}.chip .chip-content .chip-actions{margin-left:auto}.chip.sel,li.sel .chip,li.active-drop-target .chip{--text-color: var(--white);--custom-text-color: var(--white) !important;--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl));color:var(--white);background-color:var(--custom-sel-bg-color, var(--dark-sel-color)) !important}.chip.sel .cp-icon,li.sel .chip .cp-icon,li.active-drop-target .chip .cp-icon{--icon-color: var(--white) !important}.chip.sel,.sel .chip{cursor:default}.chip.sel .thumb,.sel .chip .thumb{filter:brightness(0.85)}.chip.sel .thumb img,.sel .chip .thumb img{box-shadow:0 0 0 1px rgba(96,109,123,.1),0 6px 4px -4px rgba(96,109,123,.2)}.offset-drag-helper .chip{background-color:var(--gray-050);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.chip>.thumb{flex:0 0 auto;position:relative;display:flex;align-items:center;justify-content:center;width:var(--thumb-size);height:var(--thumb-size)}.chip>.thumb.rounded img,.chip>.thumb.rounded svg{border:var(--xs) solid rgba(0,0,0,0);border-radius:50%}.chip>.thumb.checkered img{background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:8px 8px;background-position:0 0,4px 0,4px -4px,0 4px}.chip>.thumb img,.chip>.thumb svg{display:block;flex-shrink:0;border-radius:var(--small-border-radius);max-width:100%;max-height:100%}.chip>.thumb svg{width:100%}.cp-icon{display:flex;align-items:center;justify-content:center;width:var(--icon-size);height:var(--icon-size);max-width:var(--icon-size)}.cp-icon svg{width:var(--icon-size);height:var(--icon-size);max-width:var(--icon-size) !important;max-height:var(--icon-size) !important}.cp-icon svg rect,.cp-icon svg circle,.cp-icon svg ellipse,.cp-icon svg line,.cp-icon svg polyline,.cp-icon svg polygon,.cp-icon svg path,.cp-icon svg text{fill:var(--icon-color, var(--ui-control-color));stroke-width:0}.cp-icon.large{--icon-size: calc(20rem / 16)}.cp-icon.small{--icon-size: calc(14rem / 16)}.cp-icon.puny{--icon-size: calc(12rem / 16)}.chips,.cards{display:flex;--custom-bg-color: initial;--custom-text-color: initial;--custom-sel-bg-color: initial}.chips:not(.inline-chips),.cards:not(.inline-chips){flex-direction:column}.chips li,.cards li{max-width:100%}.cards{gap:var(--s)}.chips{align-items:flex-start;gap:var(--xs)}.inline-chips{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--xs)}.inline-chips .chip{margin:0 !important}.elements.inline-chips{display:grid;grid-template-columns:repeat(auto-fill, minmax(160px, 1fr))}.card{position:relative;display:flex;flex-direction:row;align-items:stretch;padding:var(--m);gap:var(--m);border-radius:var(--large-border-radius);cursor:default;user-select:none;width:100%}.card:after{border-radius:var(--large-border-radius)}.card.sel,li.sel .card{--text-color: var(--white);--custom-text-color: var(--white) !important;--medium-dark-text-color: var(--white);--medium-text-color: var(--white);--light-text-color: var(--white);--link-color: var(--white);--ui-control-color: var(--white);--focus-ring: 0 0 0 3px hsl(var(--light-focus-hsl));color:var(--white);background-color:var(--custom-sel-bg-color, var(--dark-sel-color)) !important}.card.sel>.thumb,li.sel .card>.thumb{background-color:var(--dark-sel-color) !important;filter:brightness(0.85)}.card>.thumb{position:relative;display:flex;align-items:stretch;margin:calc(var(--m)*-1);width:128px;min-width:128px;min-height:calc(var(--m)*2 + var(--lh)*3 + var(--xs));background-color:var(--gray-100);overflow:hidden}body.ltr .card>.thumb{margin-right:0}body.rtl .card>.thumb{margin-left:0}.card>.thumb:after{display:block;content:\"\";font-size:0;position:absolute;top:0;bottom:0;box-shadow:0 1px 5px -1px rgba(31,41,51,.2);width:10px}body.ltr .card>.thumb:after{right:-10px}body.rtl .card>.thumb:after{left:-10px}body.ltr .card>.thumb,body.ltr .card>.thumb:after{border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .card>.thumb,body.rtl .card>.thumb:after{border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.card>.thumb img,.card>.thumb svg{width:100%;max-height:128px;object-fit:cover}body.ltr .card>.cp-icon{margin:0 -4px 0 -2px}body.rtl .card>.cp-icon{margin:0 -2px 0 -4px}.card .card-content,.card .card-content .card-body{display:flex;flex-direction:column;gap:var(--xs);flex:1}.card .card-content{margin:calc((1rem - var(--lh))/2) 0;flex:1 0 0 !important;overflow:hidden;position:relative;--focus-ring: var(--inner-focus-ring)}.card .card-content .card-heading{display:flex;flex-direction:row;align-items:center;gap:5px}.card .card-content .card-heading .status{margin:0;flex:0 0 10px}.card .card-content .card-heading .label{font-weight:600}.card .card-content .card-body:empty{display:none}.card .card-content .card-body>*{--max-lines: 2;margin:0;max-height:calc(var(--lh)*var(--max-lines));overflow:hidden;text-wrap:pretty}.card .card-content .card-body .checkbox-preview-label{display:inline;font-style:italic;margin-inline-start:5px}.card>.card-actions-container{display:flex;align-items:flex-start !important;position:relative}.card-grid{display:grid !important;gap:var(--s) !important;grid-template-columns:repeat(auto-fill, minmax(360px, 1fr))}.card-grid>li{border-radius:var(--large-border-radius)}.card-grid>li>.card{margin:0 !important;height:100%}.lp-editor-container .card-grid{grid-template-columns:minmax(0, 1fr)}.context-label,.context-menu-container{display:inline-flex;align-items:center;height:var(--touch-target-size);padding:0 var(--s);font-size:11px;font-weight:normal;text-decoration:none !important;color:var(--light-text-color);border-radius:calc(var(--touch-target-size)/2);border:1px solid var(--medium-hairline-color)}body.ltr .context-label,body.ltr .context-menu-container{margin-left:var(--xs)}body.rtl .context-label,body.rtl .context-menu-container{margin-right:var(--xs)}body.ltr .context-menu-container{padding-right:0}body.rtl .context-menu-container{padding-left:0}body.ltr .context-menu-container .menubtn:not(.action-btn){margin:0 -1px 0 0}body.rtl .context-menu-container .menubtn:not(.action-btn){margin:0 0 0 -1px}body.ltr .context-menu-container .menubtn:not(.action-btn){padding-right:2px !important}body.rtl .context-menu-container .menubtn:not(.action-btn){padding-left:2px !important}body.ltr .context-menu-container .menubtn:not(.action-btn){border-left:1px solid var(--medium-hairline-color)}body.rtl .context-menu-container .menubtn:not(.action-btn){border-right:1px solid var(--medium-hairline-color)}body.ltr .context-menu-container .menubtn:not(.action-btn){border-radius:0 calc(var(--touch-target-size)/2) calc(var(--touch-target-size)/2) 0}body.rtl .context-menu-container .menubtn:not(.action-btn){border-radius:calc(var(--touch-target-size)/2) 0 0 calc(var(--touch-target-size)/2)}.context-menu-container .menubtn:not(.action-btn):hover{border-color:var(--dark-hairline-color) !important}.context-menu-container>*{display:inline-block}body.ltr .context-menu-container>*{padding-right:var(--s)}body.rtl .context-menu-container>*{padding-left:var(--s)}.context-menu-container .menubtn:not(.action-btn):only-child,.context-menu-container .visually-hidden:first-child+.menubtn:not(.action-btn):last-child{margin:0 calc(var(--s)*-1);border-left:none !important;border-radius:calc(var(--touch-target-size)/2) !important}.chip .checkbox:before,.card .checkbox:before{box-shadow:none !important}.chip .label,.card .label{display:flex;align-items:center;gap:var(--xs);overflow:hidden}.chip .label .label-link,.card .label .label-link{flex:1 1 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip .label .label-link:focus,.card .label .label-link:focus{box-shadow:var(--inner-focus-ring)}.chip .label .segment:after,.card .label .segment:after{display:inline-flex !important;position:relative;top:-2px;display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--light-text-color);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr .chip .label .segment:after,body.ltr .card .label .segment:after{margin:0 5px 0 2px}body.rtl .chip .label .segment:after,body.rtl .card .label .segment:after{margin:0 2px 0 5px}body.ltr .chip .label .segment:after,body.ltr .card .label .segment:after{transform:rotate(-45deg)}body.rtl .chip .label .segment:after,body.rtl .card .label .segment:after{transform:rotate(135deg)}.sel .chip .label .segment:after,.sel .card .label .segment:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid var(--white);border-width:0 .0625rem .0625rem 0;opacity:.8;position:relative}body.ltr .sel .chip .label .segment:after,body.ltr .sel .card .label .segment:after{transform:rotate(-45deg)}body.rtl .sel .chip .label .segment:after,body.rtl .sel .card .label .segment:after{transform:rotate(135deg)}.chip>.chip-content>.chip-actions,.chip>.card-actions-container>.card-actions,.card>.chip-content>.chip-actions,.card>.card-actions-container>.card-actions{display:flex;flex-direction:row;align-items:center;gap:var(--s);min-height:1rem}.chip>.chip-content>.chip-actions:empty,.chip>.card-actions-container>.card-actions:empty,.card>.chip-content>.chip-actions:empty,.card>.card-actions-container>.card-actions:empty{display:none}.chip>.chip-content>.chip-actions>.status,.chip>.card-actions-container>.card-actions>.status,.card>.chip-content>.chip-actions>.status,.card>.card-actions-container>.card-actions>.status{margin:0}.chip>.chip-content>.chip-actions>.action-btn,.chip>.chip-content>.chip-actions>.move,.chip>.card-actions-container>.card-actions>.action-btn,.chip>.card-actions-container>.card-actions>.move,.card>.chip-content>.chip-actions>.action-btn,.card>.chip-content>.chip-actions>.move,.card>.card-actions-container>.card-actions>.action-btn,.card>.card-actions-container>.card-actions>.move{height:var(--touch-target-size);width:var(--touch-target-size);margin:0 -4px}.chip>.chip-content>.chip-actions>.action-btn:before,.chip>.chip-content>.chip-actions>.move:before,.chip>.card-actions-container>.card-actions>.action-btn:before,.chip>.card-actions-container>.card-actions>.move:before,.card>.chip-content>.chip-actions>.action-btn:before,.card>.chip-content>.chip-actions>.move:before,.card>.card-actions-container>.card-actions>.action-btn:before,.card>.card-actions-container>.card-actions>.move:before{color:var(--custom-text-color, var(--ui-control-color))}.chip>.chip-content>.chip-actions .action-btn,.chip>.card-actions-container>.card-actions .action-btn,.card>.chip-content>.chip-actions .action-btn,.card>.card-actions-container>.card-actions .action-btn{background-color:rgba(0,0,0,0)}body.ltr .chip>.chip-content>.chip-actions .action-btn:before,body.ltr .chip>.card-actions-container>.card-actions .action-btn:before,body.ltr .card>.chip-content>.chip-actions .action-btn:before,body.ltr .card>.card-actions-container>.card-actions .action-btn:before{margin-right:0 !important}body.rtl .chip>.chip-content>.chip-actions .action-btn:before,body.rtl .chip>.card-actions-container>.card-actions .action-btn:before,body.rtl .card>.chip-content>.chip-actions .action-btn:before,body.rtl .card>.card-actions-container>.card-actions .action-btn:before{margin-left:0 !important}.chip>.chip-content>.chip-actions .action-btn:hover,.chip>.chip-content>.chip-actions .action-btn:active,.chip>.chip-content>.chip-actions .action-btn[aria-expanded=true],.chip>.card-actions-container>.card-actions .action-btn:hover,.chip>.card-actions-container>.card-actions .action-btn:active,.chip>.card-actions-container>.card-actions .action-btn[aria-expanded=true],.card>.chip-content>.chip-actions .action-btn:hover,.card>.chip-content>.chip-actions .action-btn:active,.card>.chip-content>.chip-actions .action-btn[aria-expanded=true],.card>.card-actions-container>.card-actions .action-btn:hover,.card>.card-actions-container>.card-actions .action-btn:active,.card>.card-actions-container>.card-actions .action-btn[aria-expanded=true]{backdrop-filter:brightness(90%)}.chip>.chip-content>.chip-actions .move,.chip>.card-actions-container>.card-actions .move,.card>.chip-content>.chip-actions .move,.card>.card-actions-container>.card-actions .move{margin-top:-3px !important}.chip.error .label .label-link,.card.error .label .label-link{color:var(--error-color)}.element-index .source-path{background-color:var(--gray-050);border-radius:3px;--ui-control-bg-color: var(--light-sel-color);--ui-control-hover-bg-color: #bdcbdb;--ui-control-active-bg-color: #acbed2}.element-index .source-path .chevron-btns{display:inline-flex;position:relative;background:#fff;--ui-control-height: calc((30rem / 16))}.element-index .source-path .chevron-btns:before{display:block;content:\"\";font-size:0;position:absolute;top:0;width:0;height:0;border-top:calc(var(--ui-control-height)/2) solid #f3f7fc}body.ltr .element-index .source-path .chevron-btns:before{right:0}body.rtl .element-index .source-path .chevron-btns:before{left:0}body.ltr .element-index .source-path .chevron-btns:before{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .element-index .source-path .chevron-btns:before{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.element-index .source-path .chevron-btns:after{display:block;content:\"\";font-size:0;position:absolute;top:calc(var(--ui-control-height)/2);border-bottom:calc(var(--ui-control-height)/2) solid #f3f7fc}body.ltr .element-index .source-path .chevron-btns:after{right:0}body.rtl .element-index .source-path .chevron-btns:after{left:0}body.ltr .element-index .source-path .chevron-btns:after{border-left:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}body.rtl .element-index .source-path .chevron-btns:after{border-right:calc(var(--ui-control-height)/2) solid rgba(0,0,0,0)}.element-index .source-path .chevron-btns .btn{--ui-control-border-radius: 3px}.element-index .source-path .btn.settings{box-shadow:0 0 0 2px var(--white)}.element-index.main .source-path{margin:-22px calc(var(--padding)*-1 + 2px) 24px}.elementselectormodal .element-index .source-path{margin-bottom:2px}.element-index.pane .toolbar{position:relative;z-index:2;margin:calc(var(--pane-padding)*-1) calc(var(--pane-padding)*-1) var(--pane-padding) !important;border-radius:calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) 0 0;padding:var(--pane-padding);box-shadow:0 1px 0 var(--hairline-color);background-color:var(--gray-050)}.element-index.pane .header{padding-top:var(--pane-padding);padding-bottom:var(--pane-padding);background-color:rgba(0,0,0,0);border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements{--border-radius: 0}.element-index.pane .elements .tableview table.data thead th,.element-index.pane .elements .tableview table.data thead td{border-bottom:1px solid var(--hairline-color)}.element-index.pane .elements .tableview table.data thead th:not(.ordered),.element-index.pane .elements .tableview table.data thead td:not(.ordered){background-color:rgba(0,0,0,0)}.element-index.pane .footer{border-radius:0 0 calc(var(--large-border-radius) - 1px) calc(var(--large-border-radius) - 1px) !important;box-shadow:none;border-top:1px solid var(--hairline-color);background:rgba(0,0,0,0)}.element-index craft-proxy-scrollbar{position:sticky;width:calc(100% + var(--xl)*2);margin-inline:calc(var(--xl)*-1)}.elements{position:relative}.elements:not(.busy) .update-spinner{display:none}.elements.busy{min-height:72px}.elements.busy:after{display:block;content:\"\";font-size:0;position:absolute;z-index:100;top:0;left:calc(var(--pane-padding, 24px)*-1);width:calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));height:100%;background:rgba(255,255,255,.75);border-radius:var(--large-border-radius)}.elements .header{margin:calc(var(--xl)*-1 + 2px) calc(var(--padding)*-1 + 2px) var(--xl);padding:var(--s);background-color:var(--gray-050);box-shadow:none;border-radius:var(--border-radius, var(--small-border-radius))}.elements .header:after{content:\"\"}.elements .header .selectallcontainer{display:flex;align-items:center;gap:5px;cursor:default}.elements .tableview tr.draggee th,.elements .tableview tr.draggee td,.elements .thumbsview li.draggee{opacity:.25}.elements .tableview th .move,.elements .tableview th .toggle{display:flex;position:absolute;justify-content:center;align-items:center;top:50%;transform:translateY(-50%);width:var(--touch-target-size);height:var(--touch-target-size)}body.ltr .elements .tableview th .move,body.ltr .elements .tableview th .toggle{margin-left:calc(var(--touch-target-size)*-1)}body.rtl .elements .tableview th .move,body.rtl .elements .tableview th .toggle{margin-right:calc(var(--touch-target-size)*-1)}.elements .tableview th .move{font-size:11px;text-decoration:none}.elements .tableview th .toggle{text-align:center;padding:4px;border-radius:50%}body.ltr .elements .tableview th .move+.toggle{margin-left:calc(var(--touch-target-size)*-2)}body.rtl .elements .tableview th .move+.toggle{margin-right:calc(var(--touch-target-size)*-2)}.elements .tableview th .enabled-label{margin-left:var(--xs)}.elements .tableview .chip{background-color:rgba(0,0,0,0)}.elements .thumbsview{display:grid;gap:var(--xs);grid-template-columns:repeat(auto-fill, minmax(180px, 1fr))}.elements .thumbsview li{position:relative;max-width:226px;border-radius:var(--large-border-radius)}body.ltr .elements .thumbsview li{margin:0 1px 1px 0}body.rtl .elements .thumbsview li{margin:0 0 1px 1px}.elements .thumbsview li:hover .chip{background-color:var(--gray-050)}.elements .thumbsview li.sel a{cursor:pointer !important}.elements .thumbsview li.sel a:hover{text-decoration:underline}.elements .thumbsview .chip.large{width:100%}.export-form{position:relative}.export-form .spinner{position:absolute;bottom:0}body.ltr .export-form .spinner{right:-24px}body.rtl .export-form .spinner{left:-24px}.structure{position:relative;z-index:1}body.ltr .structure li{padding-left:8px}body.rtl .structure li{padding-right:8px}.structure li.collapsed>ul{display:none}.structure li .row:hover>.icon,.structure li.draghelper>.row .move,.structure li .add.active{opacity:1}.structure li.draghelper>.row .add{opacity:0}.structure li.draghelper>.row .move:before{color:var(--link-color)}.structure li.draginsertion{position:relative;height:2px;background-color:var(--link-color) !important;border-radius:1px}body.ltr .structure li.draginsertion{margin:-1px 0 -1px 8px}body.rtl .structure li.draginsertion{margin:-1px 8px -1px 0}body.ltr .structure li.draginsertion{padding-left:0}body.rtl .structure li.draginsertion{padding-right:0}body.ltr .structure li.draginsertion{border-left:none}body.rtl .structure li.draginsertion{border-right:none}.structure li .toggle{position:relative;z-index:1;padding:4px}body.ltr .structure li .toggle{float:left}body.rtl .structure li .toggle{float:right}body.ltr .structure li .toggle{margin:10px -8px 0 -12px}body.rtl .structure li .toggle{margin:10px -12px 0 -8px}.structure li .row:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.structure li .move,.structure li .add{opacity:0;transition:opacity linear 100ms}body.ltr .structure li .move,body.ltr .structure li .add{margin:5px 5px 0 0}body.rtl .structure li .move,body.rtl .structure li .add{margin:5px 0 0 5px}.structure li .add{padding:0 5px}.structure li .add:before{content:\"downangle\";color:var(--dark-hairline-color)}.structure li .add:not(.disabled):hover:before,.structure li .add.active:before{color:var(--link-color)}body.ltr .structure li .checkbox{float:left}body.rtl .structure li .checkbox{float:right}body.ltr .structure li .checkbox{margin:7px 0 0 7px}body.rtl .structure li .checkbox{margin:7px 7px 0 0}body.ltr .structure ul{margin-left:-3px}body.rtl .structure ul{margin-right:-3px}.structure ul li{background-repeat:no-repeat;--background-position-x: 0;--background-position-y: -6px;background-position:var(--background-position-x) var(--background-position-y)}body.ltr .structure ul li{padding-left:38px}body.rtl .structure ul li{padding-right:38px}body.ltr .structure ul li{background-image:url(../images/branch.png)}body.rtl .structure ul li{--background-position-x: 100%;background-image:url(../images/branch_rtl.png)}body.ltr .structure ul li:not(:last-child):not(.last){padding-left:37px}body.rtl .structure ul li:not(:last-child):not(.last){padding-right:37px}body.ltr .structure ul li:not(:last-child):not(.last){border-left:1px solid var(--gray-200)}body.rtl .structure ul li:not(:last-child):not(.last){border-right:1px solid var(--gray-200)}body.ltr .structure ul li:not(:last-child):not(.last){--background-position-x: -1px}body.rtl .structure ul li:not(:last-child):not(.last){--background-position-x: calc(100% + 1px)}body.ltr .structure ul li.draginsertion{margin-left:38px}body.rtl .structure ul li.draginsertion{margin-right:38px}.structure .row.draghover .chip{z-index:2;border-radius:15px;box-shadow:inset 0 0 0 2px var(--link-color)}.structure .row.droptarget{border-radius:5px;box-shadow:inset 0 0 0 2px var(--link-color)}.elementselect .elements:not(:empty)+.flex,.componentselect .components:not(:empty)+.flex{margin-top:var(--s)}.elementselect{position:relative;min-height:34px}.elementselect .flex,.elementselect .btn{clear:both}.elementselect .structure .chip{margin-top:var(--xs)}body.ltr .elementselect .structure>li{padding-left:0}body.rtl .elementselect .structure>li{padding-right:0}body.ltr .elementselect .structure ul{margin-left:14px}body.rtl .elementselect .structure ul{margin-right:14px}.elementselect .structure ul li{--background-position-y: 0}.nested-element-cards{display:flex;flex-direction:column;gap:var(--s)}.nested-element-cards>.pane{margin:0}table.editable{border-radius:var(--large-border-radius);border:1px solid var(--gray-200)}table.editable th,table.editable td.heading,table.editable td.action{color:var(--medium-text-color);font-weight:normal;background-color:var(--gray-050)}table.editable thead tr th,table.editable tbody tr th{padding:6px 10px}table.editable thead tr th{border-bottom:1px solid var(--hairline-color)}body.ltr table.editable thead tr th.has-info{padding-right:calc(15px + 1em)}body.rtl table.editable thead tr th.has-info{padding-left:calc(15px + 1em)}table.editable thead tr th span.info{position:absolute;margin-left:5px}table.editable tbody tr:not(:first-child) th,table.editable tbody tr:not(:first-child) td{border-top:1px solid var(--hairline-color)}body.ltr table.editable tbody tr:last-child td:first-child{border-bottom-left-radius:var(--large-border-radius)}body.rtl table.editable tbody tr:last-child td:first-child{border-bottom-right-radius:var(--large-border-radius)}body.ltr table.editable tbody tr:last-child td:first-child textarea,body.ltr table.editable tbody tr:last-child td:first-child input.text{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}body.rtl table.editable tbody tr:last-child td:first-child textarea,body.rtl table.editable tbody tr:last-child td:first-child input.text{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}body.ltr table.editable tbody tr td:not(:first-child),body.ltr table.editable tbody tr th~td:not(.hidden)~td{border-left:1px solid var(--hairline-color)}body.rtl table.editable tbody tr td:not(:first-child),body.rtl table.editable tbody tr th~td:not(.hidden)~td{border-right:1px solid var(--hairline-color)}body.ltr table.editable tbody tr th~td:not(:first-child){border-left:1px solid #dbdddf}body.rtl table.editable tbody tr th~td:not(:first-child){border-right:1px solid #dbdddf}table.editable tbody tr td{vertical-align:top;text-align:center;background-color:var(--white);padding:4px 10px}table.editable tbody tr td.focus{position:relative;box-shadow:inset 0 0 0 1px var(--hairline-color)}table.editable tbody tr td.textual{padding:0}table.editable tbody tr td.textual .editable-table-preview{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual .editable-table-preview{text-align:left}body.rtl table.editable tbody tr td.textual .editable-table-preview{text-align:right}table.editable tbody tr td.textual .editable-table-preview+textarea{opacity:0;height:0;min-height:0;padding-top:0;padding-bottom:0}table.editable tbody tr td.textual textarea{resize:none}table.editable tbody tr td.textual pre{white-space:pre-wrap}body.ltr table.editable tbody tr td.textual pre{text-align:left}body.rtl table.editable tbody tr td.textual pre{text-align:right}table.editable tbody tr td.lightswitch-cell{padding-top:9px;padding-bottom:9px}table.editable tbody tr td.lightswitch-cell .lightswitch{display:block;margin:0 auto}table.editable tbody tr td.checkbox-cell{padding-top:10px;padding-bottom:10px}table.editable tbody tr td.checkbox-cell .checkbox-wrapper{display:block;margin:-2px auto 0;width:16px;height:16px}table.editable tbody tr td.error{box-shadow:inset 0 0 0 1px var(--error-color)}table.editable tbody tr td.disabled{position:relative;opacity:1}table.editable tbody tr td.disabled:after{content:\"\";font-size:0;position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(243,247,252,.75);user-select:none}table.editable tbody tr td.action{padding:4px 7px}body.ltr table.editable tbody tr td.action+td.action{border-left:none}body.rtl table.editable tbody tr td.action+td.action{border-right:none}body.ltr table.editable tbody tr td.action+td.action{padding-left:0}body.rtl table.editable tbody tr td.action+td.action{padding-right:0}table.editable tbody tr td .flex>*{margin-bottom:0}table.editable tbody textarea,table.editable tbody textarea.text,table.editable tbody input.text,table.editable tbody pre,table.editable tbody .editable-table-preview{display:block;width:100%;border:none;box-shadow:none;border-radius:0;padding:7px 10px;line-height:20px;background-color:rgba(0,0,0,0);overflow:hidden;transition:none;box-sizing:border-box}table.editable tbody .color-container{display:block;position:relative}table.editable tbody .color-container>.color,table.editable tbody .color-container .color-input{margin-bottom:0}table.editable tbody .color-container>.color{position:absolute;top:10px;z-index:1}body.ltr table.editable tbody .color-container>.color{left:10px}body.rtl table.editable tbody .color-container>.color{right:10px}body.ltr table.editable tbody .color-container .color-hex-indicator{left:32px}body.rtl table.editable tbody .color-container .color-hex-indicator{right:32px}body.ltr table.editable tbody .color-container .color-input{padding-left:calc(32px + 1em)}body.rtl table.editable tbody .color-container .color-input{padding-right:calc(32px + 1em)}table.editable tbody .datewrapper,table.editable tbody .timewrapper{display:block;width:calc(100% - 29px)}table.editable tbody .datewrapper .text+div[data-icon],table.editable tbody .timewrapper .text+div[data-icon]{top:6px}body.ltr table.editable tbody .datewrapper .text+div[data-icon],body.ltr table.editable tbody .timewrapper .text+div[data-icon]{left:10px}body.rtl table.editable tbody .datewrapper .text+div[data-icon],body.rtl table.editable tbody .timewrapper .text+div[data-icon]{right:10px}table.editable:not(.static) td.textual{cursor:text}table.editable+.btn.add{display:block;width:100%}table.editable:not(.hidden)+.btn.add{border-top-width:0;border-radius:0 0 var(--medium-border-radius) var(--medium-border-radius)}.border-box+.buttons,.shadow-box+.buttons{margin-top:7px}body.ltr ul.tree,body.ltr .tree ul{margin-left:20px}body.rtl ul.tree,body.rtl .tree ul{margin-right:20px}body.ltr .tree li .toggle{margin:7px 0 0 -15px}body.rtl .tree li .toggle{margin:7px -15px 0 0}.status{flex:0 0 auto;display:inline-block;position:relative;width:.75rem;height:.75rem;border:1px solid rgba(0,0,0,0);border-radius:100%;box-sizing:border-box;background-clip:border-box}body.ltr .status{margin-right:10px}body.rtl .status{margin-left:10px}body.use-shapes .status.all{rotate:45deg;background-image:linear-gradient(30deg, #184cef, #e5422b)}body.use-shapes .status.pending{background-color:rgba(0,0,0,0);border-style:solid;border-width:0 5px 10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--pending-color) rgba(0,0,0,0);border-radius:1px}body.use-shapes .status.all,body.use-shapes .status.off,body.use-shapes .status.suspended,body.use-shapes .status.expired{border-radius:2px;transform:scale(90%)}.status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:var(--ui-control-color)}.status.all{background-image:linear-gradient(60deg, #184cef, #e5422b);background-origin:border-box}.status.on,.status.live,.status.active,.status.enabled{background-color:var(--enabled-color)}.status.red,.bg-red,.status.off,.status.suspended,.status.expired{background-color:var(--disabled-color)}.status.warning{background-color:var(--warning-color)}.status.orange,.bg-orange,.status.pending{background-color:var(--pending-color)}.status.amber,.bg-amber{background-color:var(--amber-500)}.status.yellow,.bg-yellow{background-color:var(--yellow-500)}.status.lime,.bg-lime{background-color:var(--lime-500)}.status.green,.bg-green{background-color:var(--green-600)}.status.emerald,.bg-emerald{background-color:var(--emerald-500)}.status.teal,.bg-teal,.status.turquoise,.bg-turquoise{background-color:var(--teal-500)}.status.cyan,.bg-cyan{background-color:var(--cyan-500)}.status.sky,.bg-sky{background-color:var(--sky-500)}.status.blue,.bg-blue{background-color:var(--blue-600)}.status.indigo,.bg-indigo{background-color:var(--indigo-500)}.status.violet,.bg-violet{background-color:var(--violet-500)}.status.purple,.bg-purple{background-color:var(--purple-500)}.status.fuchsia,.bg-fuchsia{background-color:var(--fuchsia-500)}.status.pink,.bg-pink{background-color:var(--pink-500)}.status.rose,.bg-rose{background-color:var(--rose-500)}.status.light{background-color:var(--gray-100)}.status.white,.bg-white{background-color:var(--white)}.status.black,.bg-black{background-color:var(--gray-800)}.status.gray,.bg-gray,.status.grey,.bg-grey{background-color:var(--gray-300)}.status.white,.status.disabled{opacity:1}.icon.warning,.cp-icon.warning,[data-icon].warning,[data-icon-after].warning{--icon-color: var(--warning-color)}.icon.red,.cp-icon.red,[data-icon].red,[data-icon-after].red{--icon-color: var(--disabled-color)}.icon.orange,.cp-icon.orange,[data-icon].orange,[data-icon-after].orange{--icon-color: var(--pending-color)}.icon.amber,.cp-icon.amber,[data-icon].amber,[data-icon-after].amber{--icon-color: var(--amber-500)}.icon.yellow,.cp-icon.yellow,[data-icon].yellow,[data-icon-after].yellow{--icon-color: var(--yellow-500)}.icon.lime,.cp-icon.lime,[data-icon].lime,[data-icon-after].lime{--icon-color: var(--lime-500)}.icon.green,.cp-icon.green,[data-icon].green,[data-icon-after].green{--icon-color: var(--green-500)}.icon.emerald,.cp-icon.emerald,[data-icon].emerald,[data-icon-after].emerald{--icon-color: var(--emerald-500)}.icon.teal,.cp-icon.teal,[data-icon].teal,[data-icon-after].teal{--icon-color: var(--teal-500)}.icon.cyan,.cp-icon.cyan,[data-icon].cyan,[data-icon-after].cyan{--icon-color: var(--cyan-500)}.icon.sky,.cp-icon.sky,[data-icon].sky,[data-icon-after].sky{--icon-color: var(--sky-500)}.icon.blue,.cp-icon.blue,[data-icon].blue,[data-icon-after].blue{--icon-color: var(--blue-600)}.icon.indigo,.cp-icon.indigo,[data-icon].indigo,[data-icon-after].indigo{--icon-color: var(--indigo-500)}.icon.violet,.cp-icon.violet,[data-icon].violet,[data-icon-after].violet{--icon-color: var(--violet-500)}.icon.purple,.cp-icon.purple,[data-icon].purple,[data-icon-after].purple{--icon-color: var(--purple-500)}.icon.fuchsia,.cp-icon.fuchsia,[data-icon].fuchsia,[data-icon-after].fuchsia{--icon-color: var(--fuchsia-500)}.icon.pink,.cp-icon.pink,[data-icon].pink,[data-icon-after].pink{--icon-color: var(--pink-500)}.icon.rose,.cp-icon.rose,[data-icon].rose,[data-icon-after].rose{--icon-color: var(--rose-500)}.icon.white,.cp-icon.white,[data-icon].white,[data-icon-after].white{--icon-color: var(--white)}.icon.black,.cp-icon.black,[data-icon].black,[data-icon-after].black{--icon-color: var(--gray-800)}.icon.gray,.cp-icon.gray,[data-icon].gray,[data-icon-after].gray{--icon-color: var(--gray-300)}.warning[data-icon]:before,.warning[data-icon-after]:after,.red[data-icon]:before,.red[data-icon-after]:after,.orange[data-icon]:before,.orange[data-icon-after]:after,.amber[data-icon]:before,.amber[data-icon-after]:after,.yellow[data-icon]:before,.yellow[data-icon-after]:after,.lime[data-icon]:before,.lime[data-icon-after]:after,.green[data-icon]:before,.green[data-icon-after]:after,.emerald[data-icon]:before,.emerald[data-icon-after]:after,.teal[data-icon]:before,.teal[data-icon-after]:after,.cyan[data-icon]:before,.cyan[data-icon-after]:after,.sky[data-icon]:before,.sky[data-icon-after]:after,.blue[data-icon]:before,.blue[data-icon-after]:after,.indigo[data-icon]:before,.indigo[data-icon-after]:after,.violet[data-icon]:before,.violet[data-icon-after]:after,.purple[data-icon]:before,.purple[data-icon-after]:after,.fuchsia[data-icon]:before,.fuchsia[data-icon-after]:after,.pink[data-icon]:before,.pink[data-icon-after]:after,.rose[data-icon]:before,.rose[data-icon-after]:after,.white[data-icon]:before,.white[data-icon-after]:after,.black[data-icon]:before,.black[data-icon-after]:after,.gray[data-icon]:before,.gray[data-icon-after]:after{color:var(--icon-color) !important}.condition-container{margin:24px 0}.condition-rule,.condition-footer{padding:7px}.condition-footer{border:1px dashed var(--medium-hairline-color);border-radius:var(--large-border-radius)}.condition:not(:empty)+.condition-footer{border-top-width:0;border-top-left-radius:0;border-top-right-radius:0}.condition-footer .spinner:not(.loading){display:none}.condition-rule{margin:0;border:1px solid var(--hairline-color);background-color:var(--gray-050)}.condition-rule:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.condition-rule+.condition-rule{border-top-width:0}.condition-rule>.rule-move,.condition-rule>.rule-actions{margin-top:5px}.condition-rule>.rule-body .lightswitch{margin-top:6px;display:block}.condition-rule>.rule-body .selectize{min-width:100px}.condition-rule>.rule-body .text.fullwidth{min-width:100px;max-width:100%}.progressbar{border-radius:6px;border:2px solid var(--gray-700);padding:2px;position:absolute;left:20%;width:60%;z-index:1000}.progressbar-inner{border-radius:2px;height:4px;background-color:var(--gray-700)}.progressbar:not(.pending) .progressbar-inner{width:0;transition:width linear 100ms}.progressbar.pending .progressbar-inner{animation-timing-function:linear;animation-duration:250ms;animation-iteration-count:infinite}body.ltr .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(135deg, var(--white), var(--white) 8.8388347649px, var(--gray-700) 8.8388347649px, var(--gray-700) 17.6776695297px)}body.rtl .progressbar.pending .progressbar-inner{background:repeating-linear-gradient(45deg, var(--white), var(--white) 8.8388347649px, var(--gray-700) 8.8388347649px, var(--gray-700) 17.6776695297px)}body.ltr .progressbar.pending .progressbar-inner{animation-name:pendingprogress-ltr}body.rtl .progressbar.pending .progressbar-inner{animation-name:pendingprogress-rtl}@keyframes pendingprogress-ltr{from{background-position:0}to{background-position:25px}}@keyframes pendingprogress-rtl{from{background-position:0}to{background-position:-25px}}.elementselect .progress-shade{background-color:rgba(255,255,255,.8);width:100%;height:100%;position:absolute;top:0;display:none}body.ltr .elementselect .progress-shade{left:0}body.rtl .elementselect .progress-shade{right:0}.elementselect.uploading{position:relative}.elementselect.uploading .progress-shade{display:block;z-index:2}.missing-component{padding:7px 10px !important;max-width:400px;background-color:var(--gray-050) !important}.missing-component .error{margin:0}.missing-component .install-plugin{margin:7px 0 -7px;border-top:1px solid var(--hairline-color);position:relative}body.ltr .missing-component .install-plugin{padding:10px 0 10px 40px}body.rtl .missing-component .install-plugin{padding:10px 40px 10px 0}.missing-component .install-plugin .icon{width:32px;height:32px;position:absolute;top:calc(50% - 16px)}body.ltr .missing-component .install-plugin .icon{left:0}body.rtl .missing-component .install-plugin .icon{right:0}.missing-component .install-plugin .icon img,.missing-component .install-plugin .icon svg{width:100%;height:100%}.missing-component .install-plugin h3{flex:1;margin:8px 0 !important}.missing-component .install-plugin .btn{margin:0}.pane{--pane-padding: var(--xl);--border: 1px solid var(--hairline-color);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);position:relative;margin:14px 0;padding:var(--pane-padding);border-radius:var(--large-border-radius);word-wrap:break-word;box-sizing:border-box}.pane:focus{box-shadow:var(--focus-ring)}.pane .pane,#content .pane{background-color:var(--gray-050);border:1px solid var(--hairline-color);box-shadow:none}.pane.dashed{background-color:rgba(0,0,0,0) !important;box-shadow:none;border:1px dashed var(--medium-hairline-color) !important}.pane.hairline{background-color:rgba(0,0,0,0) !important;box-shadow:none;border:1px solid rgba(96, 125, 159, 0.25) !important}.pane.no-border{border:none !important}.pane.padding-xs{--pane-padding: var(--xs)}.pane.padding-s{--pane-padding: var(--s)}.pane.padding-m{--pane-padding: var(--m)}.pane.padding-l{--pane-padding: var(--l)}.pane.loading{min-height:200px}.pane.loading:after{display:block;content:\"\";font-size:0;position:absolute;top:0;left:-24px;width:calc(100% + 48px);height:100%}.pane-header{margin:calc(var(--xl)*-1) var(--neg-padding) var(--xl);padding:5px var(--xl) 6px;min-height:45px;box-sizing:border-box;box-shadow:inset 0 -1px 0 0 rgba(154,165,177,.25);border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;background-color:var(--gray-050)}.pane-header .header-btn{margin:2px 0;width:1.875rem;height:1.875rem;padding-left:0;padding-right:0}.pane-header .header-btn:not(:hover):not(:active):not(.active){background-color:rgba(0,0,0,0)}.pane-header .header-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}.pane-header .spinner{margin:0 !important}.pane-tabs{display:flex;flex-direction:row;align-items:center;margin:-5px calc(var(--padding)*-1) -6px}.pane-tabs:first-child{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;overflow:hidden}.pane-tabs [role=tablist]{flex:1;display:flex;flex-direction:row;overflow-x:auto;scrollbar-width:none}.pane-tabs [role=tablist]::-webkit-scrollbar{display:none}body.ltr .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to left, rgba(0, 0, 0, 0), rgb(0, 0, 0) 24px)}body.rtl .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 24px)}.pane-tabs [role=tablist] [role=tab]{--tab-label-color: var(--light-text-color)}.pane-tabs [role=tablist] [role=tab].error{--highlight-color: var(--error-color) !important;--tab-label-color: var(--error-color) !important}.pane-tabs [role=tablist] [role=tab],.pane-tabs [role=tablist] [role=tab] .tab-label{border-radius:2px 2px 0 0}.pane-tabs [role=tablist] [role=tab] .tab-label{display:flex;flex-direction:row;align-items:center;position:relative;padding:0 var(--padding);white-space:nowrap;height:45px}.pane-tabs [role=tablist] [role=tab]:hover{text-decoration:none}body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus,body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible{box-shadow:none}body:not(.reduce-focus-visibility) .pane-tabs [role=tablist] [role=tab]:focus .tab-label,body.reduce-focus-visibility .pane-tabs [role=tablist] [role=tab]:focus-visible .tab-label{box-shadow:var(--inner-focus-ring)}.pane-tabs [role=tablist] [role=tab]:not(.sel){color:var(--custom-text-color, var(--tab-label-color))}.pane-tabs [role=tablist] [role=tab]:not(.sel):hover{backdrop-filter:brightness(95%)}.pane-tabs [role=tablist] [role=tab].sel{--highlight-color: var(--gray-500);--tab-label-color: var(--text-color);position:relative;z-index:1;cursor:default;box-shadow:inset 0 2px 0 var(--custom-text-color, var(--highlight-color)),0 0 0 1px rgba(51,64,77,.1),0 2px 12px var(--custom-sel-tab-shadow-color, var(--gray-200));color:var(--tab-label-color);background-color:var(--white) !important}body.ltr .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-left:4px}body.rtl .pane-tabs [role=tablist] [role=tab] span[data-icon]{margin-right:4px}body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.ltr .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-left-radius:var(--large-border-radius)}body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child,body.rtl .pane-tabs#tabs:first-child [role=tablist] [role=tab]:first-child .tab-label{border-top-right-radius:var(--large-border-radius)}.pane-tabs .menubtn{margin:0 var(--xl)}.pane-tabs .menubtn.error span[data-icon]{margin-right:2px}.details{--spacing: var(--l);padding:0 var(--padding) var(--spacing)}.details .meta,.details .field,.details hr{margin-left:var(--neg-padding);margin-right:var(--neg-padding)}.details .meta{margin-bottom:var(--spacing)}.details .meta:not(.read-only){background-color:var(--gray-050) !important}.details .meta.read-only{color:var(--medium-text-color)}.details .meta.read-only>.data{min-height:auto}.details .meta.read-only>.data>.heading,.details .meta.read-only>.data>.value{padding:6px 0}.details .meta.read-only>.data:first-child>.heading,.details .meta.read-only>.data:first-child>.value{padding-top:0}.details .meta.read-only>.data:last-child>.heading,.details .meta.read-only>.data:last-child>.value{padding-bottom:0}.details .meta.warning{padding-top:var(--m);padding-bottom:var(--m);color:var(--text-color) !important;background-color:var(--yellow-050) !important;box-shadow:0 0 0 1px var(--yellow-300),0 2px 12px rgba(205,216,228,.5)}.details .meta.warning p{margin-bottom:5px}.details .meta.warning .btn{background-color:var(--yellow-300)}.details .meta.warning .btn:hover,.details .meta.warning .btn:focus{background-color:#fcd815}.details .meta.warning .btn:active,.details .meta.warning .btn[aria-expanded=true]{background-color:#f5ce03}.details .meta>.field,.details .meta>.data{margin:0 var(--neg-padding) !important}.details .meta>.field>.heading>label,.details .meta>.field>.heading,.details .meta>.data>.heading>label,.details .meta>.data>.heading{color:var(--gray-600)}body.ltr .details .meta>.field>.status-badge{left:0}body.rtl .details .meta>.field>.status-badge{right:0}.details .meta .text::placeholder,.details .meta .datewrapper .text+div[data-icon],.details .meta .timewrapper .text+div[data-icon]{color:var(--gray-500)}body.ltr .details .meta .ui-datepicker{margin:0 0 0 -8px}body.rtl .details .meta .ui-datepicker{margin:0 -8px 0 0}.details hr{margin:var(--spacing) 0;border-top-color:var(--hairline-color)}.details input::-webkit-input-placeholder,.details textarea::-webkit-input-placeholder{color:var(--gray-500)}.details input:-ms-input-placeholder,.details textarea:-ms-input-placeholder{color:var(--gray-500)}.details input::-ms-input-placeholder,.details textarea::-ms-input-placeholder{color:var(--gray-500)}.details input:-moz-placeholder,.details textarea:-moz-placeholder{color:var(--gray-500)}.details input::-moz-placeholder,.details textarea::-moz-placeholder{color:var(--gray-500)}.details input::placeholder,.details textarea::placeholder{color:var(--gray-500)}.details .text{background-color:rgba(0,0,0,0) !important;resize:none}.details>.field>.heading>label,.details>fieldset>legend{margin-top:0;font-weight:normal;color:var(--gray-600)}.details>fieldset{margin:0 0 var(--spacing)}.details>fieldset>legend{margin-bottom:5px}.details>.field{margin:0 0 var(--spacing)}.details>.field>.heading{margin-top:0}.details>.field>.input>.text.fullwidth{margin:0 var(--neg-padding);padding-left:var(--padding);padding-right:var(--padding);border:none;background-color:var(--gray-050) !important;width:calc(100% + var(--padding) + var(--padding))}.details>.text{border-radius:var(--large-border-radius);margin-bottom:var(--spacing)}.details>.text:not(:focus){border-color:rgba(96,125,159,.4)}.meta{padding:0 var(--padding);overflow:visible}.meta>.field,.meta>.data,.meta>.flex-fields>.field,.meta>.flex-fields>.data{display:flex;min-height:44px;box-sizing:border-box;flex-wrap:wrap;justify-content:space-between;align-items:center;margin:0 var(--neg-padding) !important;padding:0 var(--padding);transition:padding-left linear 100ms,padding-right linear 100ms}body.ltr .meta>.field.nested,body.ltr .meta>.data.nested,body.ltr .meta>.flex-fields>.field.nested,body.ltr .meta>.flex-fields>.data.nested{padding-left:38px}body.rtl .meta>.field.nested,body.rtl .meta>.data.nested,body.rtl .meta>.flex-fields>.field.nested,body.rtl .meta>.flex-fields>.data.nested{padding-right:38px}.meta>.field.add,.meta>.data.add,.meta>.flex-fields>.field.add,.meta>.flex-fields>.data.add{background-color:#ebf2fa}.meta>.field.add:before,.meta>.data.add:before,.meta>.flex-fields>.field.add:before,.meta>.flex-fields>.data.add:before{position:absolute;width:31px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"plus\";color:var(--light-text-color)}body.ltr .meta>.field.add:before,body.ltr .meta>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before{left:0}body.rtl .meta>.field.add:before,body.rtl .meta>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before{right:0}body.ltr .meta>.field.add:before,body.ltr .meta>.data.add:before,body.ltr .meta>.flex-fields>.field.add:before,body.ltr .meta>.flex-fields>.data.add:before{text-align:right}body.rtl .meta>.field.add:before,body.rtl .meta>.data.add:before,body.rtl .meta>.flex-fields>.field.add:before,body.rtl .meta>.flex-fields>.data.add:before{text-align:left}.meta>.field.add .input,.meta>.data.add .input,.meta>.flex-fields>.field.add .input,.meta>.flex-fields>.data.add .input{width:100%}.meta>.field>.heading,.meta>.data>.heading,.meta>.flex-fields>.field>.heading,.meta>.flex-fields>.data>.heading{margin:0}@media screen and (min-width: 400px){.meta>.field>.heading,.meta>.data>.heading,.meta>.flex-fields>.field>.heading,.meta>.flex-fields>.data>.heading{flex:0 0 104px;line-height:18px}body.ltr .meta>.field>.heading,body.ltr .meta>.data>.heading,body.ltr .meta>.flex-fields>.field>.heading,body.ltr .meta>.flex-fields>.data>.heading{margin-right:var(--s)}body.rtl .meta>.field>.heading,body.rtl .meta>.data>.heading,body.rtl .meta>.flex-fields>.field>.heading,body.rtl .meta>.flex-fields>.data>.heading{margin-left:var(--s)}}.meta>.field.lightswitch-field>.heading,.meta>.data.lightswitch-field>.heading,.meta>.flex-fields>.field.lightswitch-field>.heading,.meta>.flex-fields>.data.lightswitch-field>.heading{flex:1}.meta>.field>.input .flex,.meta>.data>.input .flex,.meta>.flex-fields>.field>.input .flex,.meta>.flex-fields>.data>.input .flex{flex-wrap:nowrap}.meta>.field>.input .flex>*,.meta>.data>.input .flex>*,.meta>.flex-fields>.field>.input .flex>*,.meta>.flex-fields>.data>.input .flex>*{margin-bottom:0}.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding-top:var(--s)}@media screen and (min-width: 400px){.meta>.field>.heading,.meta>.flex-fields>.field>.heading{padding:12px 0}}.meta>.field>.heading>.copytextbtn,.meta>.flex-fields>.field>.heading>.copytextbtn{display:none}.meta>.data>.heading,.meta>.flex-fields>.data>.heading{padding:var(--s) 0}.meta>.field>.heading>label,.meta>.data>.heading,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.data>.heading{color:var(--medium-text-color)}.meta>.field>.input,.meta>.data>.value,.meta>.flex-fields>.field>.input,.meta>.flex-fields>.data>.value{padding:5px 0;width:100%}@media screen and (min-width: 400px){.meta>.field>.input,.meta>.data>.value,.meta>.flex-fields>.field>.input,.meta>.flex-fields>.data>.value{width:calc(100% - 112px)}}.meta>.data>.value,.meta>.flex-fields>.data>.value{display:flex;align-items:center}.meta>.data>.value>[data-icon=draft],.meta>.flex-fields>.data>.value>[data-icon=draft]{margin-top:-2px}body.ltr .meta>.data>.value>[data-icon=draft],body.ltr .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-right:8px}body.rtl .meta>.data>.value>[data-icon=draft],body.rtl .meta>.flex-fields>.data>.value>[data-icon=draft]{margin-left:8px}.meta>.field.lightswitch-field>.input,.meta>.flex-fields>.field.lightswitch-field>.input{flex:0;width:auto}.meta>.field.has-errors,.meta>.flex-fields>.field.has-errors{border:1px solid var(--error-color) !important}.meta>.field.has-errors:first-child,.meta>.flex-fields>.field.has-errors:first-child{border-top-left-radius:var(--large-border-radius);border-top-right-radius:var(--large-border-radius)}.meta>.field.has-errors:last-child,.meta>.flex-fields>.field.has-errors:last-child{border-bottom-left-radius:var(--large-border-radius);border-bottom-right-radius:var(--large-border-radius)}.meta>.field.has-errors+.field,.meta>.flex-fields>.field.has-errors+.field{border-top:none !important}.meta>.field>.heading>label,.meta>.field>.heading>legend,.meta>.flex-fields>.field>.heading>label,.meta>.flex-fields>.field>.heading>legend{font-weight:normal}.meta>.field>.input>.text,.meta>.field>.input>.flex>.text,.meta>.field>.input>.flex>.textwrapper>.text,.meta>.field>.input>.datewrapper>.text,.meta>.field>.input>.timewrapper>.text,.meta>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.field>.input>.datetimewrapper>.timewrapper>.text,.meta>.flex-fields>.field>.input>.text,.meta>.flex-fields>.field>.input>.flex>.text,.meta>.flex-fields>.field>.input>.flex>.textwrapper>.text,.meta>.flex-fields>.field>.input>.datewrapper>.text,.meta>.flex-fields>.field>.input>.timewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper>.text,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper>.text{display:block;margin:-5px 0;padding:12px 0;border-radius:0;background-color:rgba(0,0,0,0);border:none !important}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon]{left:0}body.rtl .meta>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.timewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper .text+div[data-icon],body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper .text+div[data-icon]{right:0}.meta>.field>.input>.datetimewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper{gap:0}.meta>.field>.input>.datetimewrapper>.datewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.datewrapper{width:55%}.meta>.field>.input>.datetimewrapper>.timewrapper,.meta>.flex-fields>.field>.input>.datetimewrapper>.timewrapper{width:45%}body.ltr .meta>.field>.input>.datetimewrapper>.clear-btn,body.ltr .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-right:-24px}body.rtl .meta>.field>.input>.datetimewrapper>.clear-btn,body.rtl .meta>.flex-fields>.field>.input>.datetimewrapper>.clear-btn{margin-left:-24px}.meta>.field>.input>.datewrapper,.meta>.field>.input>.timewrapper,.meta>.flex-fields>.field>.input>.datewrapper,.meta>.flex-fields>.field>.input>.timewrapper{display:block;width:100%}.meta>.field>ul.errors,.meta>.flex-fields>.field>ul.errors{margin:0;padding:0 0 6px;width:100%;list-style-type:none}body.ltr .meta>.field>.clear-btn,body.ltr .meta>.flex-fields>.field>.clear-btn{margin-right:var(--neg-padding)}body.rtl .meta>.field>.clear-btn,body.rtl .meta>.flex-fields>.field>.clear-btn{margin-left:var(--neg-padding)}.meta>.field:not(:first-child):not(.first-child),.meta>.flex-fields+.field:not(.first-child){border-top:1px solid var(--hairline-color)}.meta>.flex-fields h2,.meta>.flex-fields blockquote.note{margin:0 -24px !important;padding:14px 24px;background-color:#ebf2fa}.meta>.flex-fields blockquote.note{border-radius:0;border:none}.meta>.flex-fields hr{margin:0 -24px}.meta>.field>.input>.select{display:block;margin:calc(var(--s)*-1) 0;width:100%;border-radius:0;box-shadow:none;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.select:after{right:0}body.rtl .meta>.field>.input>.select:after{left:0}.meta>.field>.input>.select+.spinner{position:absolute;top:calc(50% - 17px)}body.ltr .meta>.field>.input>.select+.spinner{right:-24px}body.rtl .meta>.field>.input>.select+.spinner{left:-24px}.meta>.field>.input>.select select{width:100%;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.select select{padding:var(--s) 12px var(--s) 0}body.rtl .meta>.field>.input>.select select{padding:var(--s) 0 var(--s) 12px}.meta>.field>.input>.custom-select{display:block;margin:calc(var(--s)*-1) 0;width:100%;border-radius:0;box-shadow:none;background-color:rgba(0,0,0,0)}.meta>.field>.input>.custom-select .menubtn:not(.action-btn){justify-content:start;width:100%;background-color:rgba(0,0,0,0)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-left:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn){padding-right:0}.meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{position:absolute;top:calc(50% - 5px)}body.ltr .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{right:0}body.rtl .meta>.field>.input>.custom-select .menubtn:not(.action-btn):after{left:0}.meta>.field>.input>.custom-select .label{max-width:100%;overflow:hidden;text-overflow:ellipsis}.body{position:relative}.slideout-container,.slideout,.modal,.hud{z-index:100;box-sizing:border-box}.modal,.hud{border-radius:5px;background-color:#fff;box-shadow:0 25px 100px rgba(31,41,51,.5) !important}.slideout-shade{opacity:0;transition:opacity linear 250ms}.slideout-shade.so-visible{opacity:1}.slideout-container{position:fixed;top:0;left:0;width:100vw;height:100vh;height:-webkit-fill-available;pointer-events:none}.slideout-container.so-lp{position:absolute;top:var(--m);left:var(--m);width:calc(100% - var(--m)*2);height:calc(100vh - var(--m)*2)}body.has-debug-toolbar .slideout-container{height:calc(100vh - 42px)}.slideout{position:absolute;background-color:var(--white);box-shadow:0 0 0 1px rgba(123,135,147,.25),0 25px 100px rgba(31,41,51,.5) !important;display:flex;flex-direction:column;overflow:hidden;padding:24px var(--padding);pointer-events:all;container-type:inline-size}.slideout.so-mobile,.slideout.so-lp{width:100% !important;height:100% !important;left:0;transition:top linear 250ms;will-change:top}.slideout.so-mobile{--padding: 14px;--neg-padding: -14px}body.ltr .slideout:not(.so-mobile){border-radius:var(--large-border-radius) 0 0 var(--large-border-radius)}body.rtl .slideout:not(.so-mobile){border-radius:0 var(--large-border-radius) var(--large-border-radius) 0}.slideout:not(.so-mobile):not(.so-lp){top:0;width:55%;height:100%}@media screen and (prefers-reduced-motion: no-preference){body.ltr .slideout:not(.so-mobile):not(.so-lp){transition:left linear 250ms;will-change:left}body.rtl .slideout:not(.so-mobile):not(.so-lp){transition:right linear 250ms;will-change:right}}.slideout>.pane-header{padding-left:var(--padding);padding-right:var(--padding);z-index:2}.slideout>.pane-header>.so-toolbar{display:flex;flex-direction:row;align-items:center;gap:var(--xs);min-height:28px}.slideout>.pane-header>.so-toolbar>.pane-tabs{width:1px;flex:1}body.ltr .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-right:0}body.rtl .slideout>.pane-header>.so-toolbar>.pane-tabs{margin-left:0}.slideout>.so-body{flex:1;margin:-24px var(--neg-padding);overflow:hidden auto;position:relative}.slideout>.so-body:not(:last-child){margin-bottom:0}.slideout>.so-body>h1:not(:last-child){padding-bottom:var(--s);border-bottom:1px solid var(--hairline-color)}.slideout>.so-body.so-full-details,.slideout>.so-body>.so-sidebar{background-color:var(--gray-100) !important}.slideout>.so-body:not(.so-full-details){padding:24px var(--padding)}.slideout>.so-body>.so-sidebar,.slideout>.so-body.so-full-details>.so-content>.details{box-sizing:border-box;padding:0 var(--padding) var(--spacing)}.slideout>.so-body>.so-sidebar>.preview-thumb-container,.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container{margin:0 var(--neg-padding);height:auto;min-height:54px}.slideout>.so-body>.so-sidebar>.preview-thumb-container+.pane-header,.slideout>.so-body.so-full-details>.so-content>.details>.preview-thumb-container+.pane-header{border-radius:0}.slideout>.so-body>.so-sidebar .image-actions.is-mobile,.slideout>.so-body.so-full-details>.so-content>.details .image-actions.is-mobile{margin:calc(var(--spacing)/2) 0 var(--spacing)}.slideout>.so-body>.so-sidebar>.meta.read-only:first-child,.slideout>.so-body.so-full-details>.so-content>.details>.meta.read-only:first-child{margin-top:var(--padding)}.slideout>.so-body>.so-sidebar>.meta.warning,.slideout>.so-body.so-full-details>.so-content>.details>.meta.warning{box-shadow:none;border-bottom:1px solid var(--yellow-300)}.slideout>.so-body>.so-sidebar>.field>.input>.text.fullwidth,.slideout>.so-body.so-full-details>.so-content>.details>.field>.input>.text.fullwidth{border-radius:0}.slideout>.so-body>.so-sidebar .notes,.slideout>.so-body.so-full-details>.so-content>.details .notes{padding-top:var(--m);padding-bottom:var(--m)}.slideout>.so-body>.so-sidebar{position:absolute;top:0;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);width:350px;height:100%;max-width:100%;overflow:hidden auto;z-index:1}.slideout>.so-body>.so-sidebar:focus{box-shadow:var(--focus-ring)}body.ltr .slideout>.so-body>.so-sidebar{transition:right linear 250ms}body.rtl .slideout>.so-body>.so-sidebar{transition:left linear 250ms}.slideout>.so-footer{position:relative;display:flex;gap:var(--s);justify-content:space-between;flex-wrap:wrap;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);background-color:var(--gray-050);z-index:3}.slideout>.so-footer:focus{box-shadow:var(--focus-ring)}.slideout>.so-footer>.so-extra{flex:0 0 100%;margin:0 var(--neg-padding);padding:0 var(--padding) 8px;border-bottom:1px solid var(--hairline-color)}@container (width > 700px){.slideout.showing-sidebar .so-body{display:flex;flex-direction:row;padding:0;overflow:hidden}.slideout.showing-sidebar .so-body>.so-content{position:relative;z-index:2;padding:24px;width:calc(100% - 350px);height:100%;box-sizing:border-box;overflow:hidden auto}body.ltr .slideout.showing-sidebar .so-body>.so-content{border-right:1px solid var(--gray-200)}body.rtl .slideout.showing-sidebar .so-body>.so-content{border-left:1px solid var(--gray-200)}.slideout.showing-sidebar .so-body>.so-sidebar{position:relative;display:block !important;top:auto;right:auto !important;left:auto !important;height:100%;box-shadow:none}.slideout>.so-footer>.so-extra{margin:0;padding:0;border:none;flex:auto 0 1}}.header,.hud-header,.footer,.hud-footer{position:relative;z-index:1;box-sizing:border-box}.header,.hud-header,.footer,.hud-footer{background-color:var(--gray-100)}.header,.hud-header{border-radius:var(--large-border-radius) var(--large-border-radius) 0 0;padding:24px;box-shadow:inset 0 -1px 0 var(--hairline-color)}.header h1,.hud-header h1{margin:0}.footer,.hud-footer{border-radius:0 0 var(--large-border-radius) var(--large-border-radius);padding:5px var(--pane-padding, var(--xl));box-shadow:inset 0 1px 0 var(--hairline-color)}.footer.flex>*,.hud-footer.flex>*{margin-bottom:0}.modal .body,.hud .main{padding:24px;overflow:hidden;box-sizing:border-box}.pane .header,.modal .body .header{margin:calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1) var(--pane-padding, 24px)}.pane .footer,.modal .body .footer{margin:var(--pane-padding, 24px) calc(var(--pane-padding, 24px)*-1) calc(var(--pane-padding, 24px)*-1)}.slideout-shade,.modal-shade,.hud-shade{z-index:100;position:fixed;top:0;left:0;width:100%;height:100%;display:none}.slideout-shade:not(.dark),.modal-shade:not(.dark){background-color:rgba(123,135,147,.35) !important}.slideout-shade.dark,.modal-shade.dark{background-color:rgba(31,41,51,.5) !important}.slideout-shade.blurred,.modal-shade.blurred{backdrop-filter:blur(10px)}.modal{position:fixed;overflow:hidden}.modal:not(.fitted):not(.fullscreen){width:66%;height:66%;min-width:600px;min-height:400px}.modal.fitted{width:auto;height:auto;min-width:0;min-height:0}.modal.fullscreen{width:100%;height:100%;border-radius:0}body.ltr .modal.alert .body{padding-left:76px}body.rtl .modal.alert .body{padding-right:76px}.modal.alert .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"alert\";font-size:40px;color:var(--light-text-color)}body.ltr .modal.alert .body:before{margin:-6px 0 0 -58px}body.rtl .modal.alert .body:before{margin:-6px -58px 0 0}body.ltr .modal.alert .body:before{float:left}body.rtl .modal.alert .body:before{float:right}body.ltr .modal.secure .body{padding-left:76px}body.rtl .modal.secure .body{padding-right:76px}.modal.secure .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"secure\";font-size:58px;color:var(--light-text-color)}body.ltr .modal.secure .body:before{margin:-14px 0 0 -56px}body.rtl .modal.secure .body:before{margin:-14px -56px 0 0}body.ltr .modal.secure .body:before{float:left}body.rtl .modal.secure .body:before{float:right}.modal .resizehandle{position:absolute;z-index:1;bottom:0;width:24px;height:24px;cursor:nwse-resize;padding:var(--xs)}body.ltr .modal .resizehandle{right:0}body.rtl .modal .resizehandle{left:0}.modal .resizehandle path{fill:var(--ui-control-color)}body.rtl .modal .resizehandle .ltr{display:none}body.ltr .modal .resizehandle .rtl{display:none}.hud{position:absolute;display:none;top:0}.hud.tooltip-hud{display:block}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray.png)}.hud .tip{position:absolute;z-index:101;background:no-repeat 0 0}.hud .tip-left{left:-15px;width:15px;height:30px;background-image:url(../images/hudtip_left.png)}.hud .tip-top{top:-15px;width:30px;height:15px;background-image:url(../images/hudtip_top.png)}.hud .tip-right{right:-15px;width:15px;height:30px;background-image:url(../images/hudtip_right.png)}.hud .tip-bottom{bottom:-15px;width:30px;height:15px;background-image:url(../images/hudtip_bottom.png)}.hud .hud-header,.hud .hud-footer{padding:var(--s) var(--xl)}.hud .body{overflow:hidden}.hud .body ::-webkit-scrollbar{appearance:none}.hud .body ::-webkit-scrollbar:vertical{width:11px}.hud .body ::-webkit-scrollbar:horizontal{height:11px}.hud .body ::-webkit-scrollbar-thumb{border-radius:8px;border:2px solid rgba(0,0,0,0);background-color:rgba(0,0,0,.5)}.hud .body ::-webkit-scrollbar-track{background-color:var(--gray-050)}.preview-thumb-container{position:relative;display:flex;flex-direction:row;align-items:center;height:190px;background-color:var(--gray-900);margin:0 var(--neg-padding) var(--spacing)}.preview-thumb-container.checkered img{background-color:var(--white);background-image:linear-gradient(45deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(135deg, rgba(154, 165, 177, 0.25) 25%, transparent 25%),linear-gradient(45deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%),linear-gradient(135deg, transparent 75%, rgba(154, 165, 177, 0.25) 75%);background-size:17px 17px;background-position:0 0,8.5px 0,8.5px -8.5px,0 8.5px}.preview-thumb-container.editable{cursor:pointer}.preview-thumb-container.loading:after{content:\"\";font-size:0;display:block;position:absolute;width:100%;height:100%;left:0;top:0;background-color:rgba(31,41,51,.8)}.preview-thumb-container.loading .spinner{color:var(--white);z-index:1}#details .preview-thumb-container{border-radius:var(--large-border-radius);overflow:hidden}.preview-thumb-container .preview-thumb{display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.preview-thumb-container .preview-thumb img{display:block;max-width:100%;max-height:190px}.image-actions.is-mobile{margin:calc(var(--spacing)/2*-1) var(--neg-padding) var(--spacing);display:grid;grid-template-columns:1fr 1fr}.button-fade .buttons{opacity:0;position:absolute;top:10px;margin:0;transition:opacity linear 100ms}body.ltr .button-fade .buttons{right:10px}body.rtl .button-fade .buttons{left:10px}.button-fade .buttons .btn{--ui-control-color: var(--white);--ui-control-hover-color: var(--white);--ui-control-active-color: var(--white);--interaction-background-color: var(--gray-700);background-color:var(--gray-600);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--light-color: var(--white);--dark-color: var(--gray-800);--focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color)}.button-fade .buttons .btn:hover{background-color:var(--interaction-background-color) !important}.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed).focus,.button-fade .buttons .btn:not(.disabled):not(.loading):not(.dashed):hover{background-color:var(--interaction-background-color)}.button-fade:hover .buttons,.button-fade:focus-within .buttons{opacity:1}.elementselectormodal{--content-padding: 24px;padding-bottom:44px;user-select:none}.elementselectormodal>.header{padding-top:14px;padding-bottom:14px;text-align:center}.elementselectormodal>.header+.body{height:calc(100% - 48px) !important}.elementselectormodal .body{position:relative;height:100%}.elementselectormodal .body .spinner.big{position:absolute;top:50%;left:50%;margin:-24px 0 0 -24px}.elementselectormodal .body .content{height:calc(100% + 48px)}.elementselectormodal .body .content .sidebar{position:absolute;top:0;height:100%;overflow:auto;padding:var(--content-padding) 0}body.ltr .elementselectormodal .body .content .sidebar{margin-left:-249px}body.rtl .elementselectormodal .body .content .sidebar{margin-right:-249px}.elementselectormodal .body .content .main{margin:-24px;padding:var(--content-padding);height:100%;box-sizing:border-box;overflow:auto;position:relative}.elementselectormodal .body .content .main .elements.busy{min-height:calc(100% - 48px)}.elementselectormodal .body .content .main .elements.busy .update-spinner{z-index:101}.elementselectormodal .body .content .main .elements .header{margin:0 0 var(--m)}.elementselectormodal .body .content .main .elements .tableview table tr th,.elementselectormodal .body .content .main .elements .tableview table tr td{cursor:default}.elementselectormodal .body .content .main .elements .tableview table tr .checkbox:before{box-shadow:none !important}.elementselectormodal .body .content .main .elements .structure .row{margin-top:1px}.elementselectormodal .footer{position:absolute;bottom:0;left:0;width:100%;margin:0;box-sizing:border-box}body.ltr .elementselectormodal .footer .spinner{float:right}body.rtl .elementselectormodal .footer .spinner{float:left}body.ltr .elementselectormodal .footer .spinner{margin-right:-24px}body.rtl .elementselectormodal .footer .spinner{margin-left:-24px}.elementselectormodal .main-header,.customize-sources-modal .main-header{display:flex;align-items:center;margin-bottom:var(--s)}.elementselectormodal .main-heading,.customize-sources-modal .main-heading{margin-bottom:0}.elementselectormodal .nav-toggle,.customize-sources-modal .nav-toggle{height:var(--touch-target-size);width:var(--touch-target-size);color:var(--ui-control-color)}body.ltr .elementselectormodal .nav-toggle,body.ltr .customize-sources-modal .nav-toggle{margin-left:4px}body.rtl .elementselectormodal .nav-toggle,body.rtl .customize-sources-modal .nav-toggle{margin-right:4px}.elementselectormodal .nav-toggle:hover,.customize-sources-modal .nav-toggle:hover{color:var(--gray-500)}.elementselectormodal .sidebar-header,.customize-sources-modal .sidebar-header{display:flex;justify-content:flex-end;padding:0 var(--s);margin-bottom:var(--s)}.elementselectormodal .nav-close,.customize-sources-modal .nav-close{height:var(--touch-target-size);width:var(--touch-target-size)}.element-hud-form .buttons{position:relative}.element-hud-form .buttons .spinner{position:absolute;top:0}body.ltr .element-hud-form .buttons .spinner{right:-24px}body.rtl .element-hud-form .buttons .spinner{left:-24px}.activity-container{margin-inline:var(--s)}.activity-container ul{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--xs)}.activity-container ul li .activity-btn{width:30px;height:30px;border-radius:50%;display:block}.activity-container ul li .activity-btn .elementthumb{position:relative;width:100%;height:100%;border-radius:50px;background:var(--gray-050);overflow:hidden;border:2px solid var(--white);box-shadow:0 1px 2px 1px rgba(31,41,51,.1)}.activity-container ul li .activity-btn .elementthumb img,.activity-container ul li .activity-btn .elementthumb svg{display:block;width:100%;height:100%}body.ltr .activity-container ul li:not(:last-child){margin-right:-10px}body.rtl .activity-container ul li:not(:last-child){margin-left:-10px}.element-index-view-menu{width:400px;max-width:calc(100% - 20px);padding:0 !important}.element-index-view-menu .meta{padding-top:var(--s);padding-bottom:var(--s)}.element-index-view-menu .table-columns-field{align-items:flex-start}.element-index-view-menu .table-columns-field .input{padding:13px 0}.element-index-view-menu .menu-footer{margin:0 !important;padding:var(--s) var(--xl) !important;background-color:var(--gray-050)}.element-index-view-menu-table-column{display:flex;align-items:flex-start;align-content:stretch;margin-bottom:4px}.element-index-view-menu-table-column .icon.move{position:relative;z-index:1}body.ltr .element-index-view-menu-table-column .icon.move{margin-right:10px}body.rtl .element-index-view-menu-table-column .icon.move{margin-left:10px}.sort-field .input .flex .btngroup .btn{width:42px}.sort-field .input .flex .flex-grow{max-width:calc(100% - 85px - var(--s))}@media screen and (max-width: 350px){.sort-field .input .flex{flex-direction:column}.sort-field .input .flex>*{width:100%}.sort-field .input .flex .flex-grow{max-width:none}}.element-filter-hud.loading .body{padding:44px;display:flex;align-items:center;justify-content:center}.element-filter-hud .body,.element-filter-hud .main{overflow:visible}.address-cards{display:grid;gap:var(--m) var(--m);grid-template-columns:repeat(1, minmax(0, 1fr));grid-auto-rows:minmax(0, 1fr)}.so-content .address-cards{grid-template-columns:repeat(1, minmax(0, 1fr)) !important}.address-cards__add-btn{padding:1rem;min-height:8rem;height:auto;width:100%}.address-card.error{border:1px solid #cf1124}.address-card.error:hover{border-color:#cf1124}@media(min-width: 1024px){.address-cards{grid-template-columns:repeat(2, minmax(0, 1fr))}}@media(min-width: 1280px){.address-cards{grid-template-columns:repeat(3, minmax(0, 1fr))}.so-content .address-cards{grid-template-columns:repeat(2, minmax(0, 1fr)) !important}}@media(min-width: 1536px){.address-cards{grid-template-columns:repeat(4, minmax(0, 1fr))}}.address-card{border:1px solid #eee;border-radius:.375rem;padding:1rem;min-height:4rem}.address-card:hover{border-color:#ddd;background-color:#fafafa;cursor:pointer}.address-card .address-card-header{display:flex;flex-wrap:nowrap;justify-content:space-between}.address-card .address-card-header-actions{display:flex;justify-content:flex-end}.address-card .address-card-label{background:#e6f1fe;color:#2563eb;padding:.125rem .5rem;border-radius:.25rem;font-size:.75rem;text-transform:uppercase;font-weight:500;margin-bottom:.75rem}.ltr .address-card .address-card-label{margin-right:.5rem}.rtl .address-card .address-card-label{margin-left:.5rem}.logoutwarningmodalshade,.login-modal-shade,#logoutwarningmodal,.login-modal,#elevatedsessionmodal,.prompt{z-index:1001}#logoutwarningmodal,#elevatedsessionmodal,.prompt{width:500px}.prompt{height:auto;min-height:auto}.cpmodal>.cpmodal-body{padding:var(--padding)}.cpmodal>.cpmodal-footer{position:relative;display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:var(--s) var(--padding);background-color:var(--gray-050)}.cpmodal>.cpmodal-footer:focus{box-shadow:var(--focus-ring)}.deleteusermodal .content-summary{margin:-24px -24px 24px;padding:24px;background-color:var(--gray-050)}.deleteusermodal .options label{display:inline-block;line-height:30px}.deleteusermodal .elementselect{display:inline-block;vertical-align:middle}body.ltr .deleteusermodal .elementselect{margin-left:10px}body.rtl .deleteusermodal .elementselect{margin-right:10px}body.ltr .deleteusermodal .buttons .spinner{margin-right:-20px}body.rtl .deleteusermodal .buttons .spinner{margin-left:-20px}.deleteusermodal div.elements{list-style:none}.dropdownsettingsmodal{width:auto;height:auto;min-width:0;min-height:0;max-width:400px}.dropdownsettingsmodal .body{max-height:100%;overflow-y:auto}.previewmodal.zilch{padding:100px 0;display:flex;align-items:center;justify-content:center}.video-transcript{background-color:var(--gray-050);overflow-y:scroll;font-size:1rem;position:relative}body:not(.reduce-focus-visibility) .video-transcript:focus,body.reduce-focus-visibility .video-transcript:focus-visible{box-shadow:none;color:var(--white);background-color:var(--gray-800)}.video-transcript__inner{margin-left:auto;margin-right:auto;max-width:550px;padding:var(--xl)}.menu,.ui-datepicker,.ui-timepicker-list{z-index:100;border-radius:4px;padding:0 14px;overflow:auto;background:#fff;user-select:none;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25)}.ui-datepicker,.ui-timepicker-list{padding:0}.menu{display:none;position:absolute}.menu.padded{padding:var(--s) calc(var(--m) + var(--s))}.menu.padded hr{margin:var(--s) calc((var(--m) + var(--s))*-1)}.menu.padded ul li{margin:0 calc(var(--m)*-1);padding:0 var(--m)}.menu.padded ul li a{border-radius:var(--large-border-radius)}.menu.padded .extralight{margin-top:2px}.menu h6:first-child,.menu .h6:first-child{margin-top:14px !important}.menu ul.padded li a,.menu ul.padded li .menu-item,.menu ul.padded li .menu-option{padding-inline-start:calc(var(--m) + 1.125rem)}.menu ul.padded li a.sel:not([data-icon]):before,.menu ul.padded li .menu-item.sel:not([data-icon]):before,.menu ul.padded li .menu-option.sel:not([data-icon]):before{font-size:14px;width:14px;content:\"check\";color:currentColor;margin-top:3px !important}body.ltr .menu ul.padded li a.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before{float:left}body.rtl .menu ul.padded li a.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before{float:right}body.ltr .menu ul.padded li a.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.ltr .menu ul.padded li .menu-option.sel:not([data-icon]):before{margin:4px 0 0 calc(-1.125rem - 4px)}body.rtl .menu ul.padded li a.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-item.sel:not([data-icon]):before,body.rtl .menu ul.padded li .menu-option.sel:not([data-icon]):before{margin:4px calc(-1.125rem - 4px) 0 0}.menu ul li a,.menu ul li .menu-item,.menu ul li .menu-option{margin:0 -14px;padding:10px 14px;white-space:nowrap;font-size:14px;-webkit-appearance:none}body.ltr .menu ul li a:not(:last-child),body.ltr .menu ul li .menu-item:not(:last-child),body.ltr .menu ul li .menu-option:not(:last-child){margin-right:0}body.rtl .menu ul li a:not(:last-child),body.rtl .menu ul li .menu-item:not(:last-child),body.rtl .menu ul li .menu-option:not(:last-child){margin-left:0}.menu ul li a:not(.flex):not(.hidden),.menu ul li .menu-item:not(.flex):not(.hidden),.menu ul li .menu-option:not(.flex):not(.hidden){display:block;width:calc(100% + 28px)}body.ltr .menu ul li a:not(.flex):not(.hidden),body.ltr .menu ul li .menu-item:not(.flex):not(.hidden),body.ltr .menu ul li .menu-option:not(.flex):not(.hidden){text-align:left}body.rtl .menu ul li a:not(.flex):not(.hidden),body.rtl .menu ul li .menu-item:not(.flex):not(.hidden),body.rtl .menu ul li .menu-option:not(.flex):not(.hidden){text-align:right}.menu ul li a.flex [data-icon],.menu ul li .menu-item.flex [data-icon],.menu ul li .menu-option.flex [data-icon]{margin-top:-2px}.menu ul li a.sel,.menu ul li .menu-item.sel,.menu ul li .menu-option.sel{cursor:default}.menu ul li a .shortcut,.menu ul li .menu-item .shortcut,.menu ul li .menu-option .shortcut{padding:0 4px;border-radius:var(--medium-border-radius);box-shadow:0 0 0 1px rgba(81,95,108,.25),0 1px 3px -1px rgba(81,95,108,.5)}body.ltr .menu ul li a .shortcut,body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut{float:right}body.rtl .menu ul li a .shortcut,body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut{float:left}body.ltr .menu ul li a .shortcut,body.ltr .menu ul li .menu-item .shortcut,body.ltr .menu ul li .menu-option .shortcut{margin-left:14px}body.rtl .menu ul li a .shortcut,body.rtl .menu ul li .menu-item .shortcut,body.rtl .menu ul li .menu-option .shortcut{margin-right:14px}.menu>.flex{margin-top:10px;margin-bottom:10px;position:relative}body.ltr .menu>.flex.padded{margin-left:-14px}body.rtl .menu>.flex.padded{margin-right:-14px}body.ltr .menu>.flex.padded{padding-left:24px}body.rtl .menu>.flex.padded{padding-right:24px}.menu>.flex.padded.sel:before{position:absolute;top:36px;content:\"check\";font-size:14px;color:var(--light-text-color)}body.ltr .menu>.flex.padded.sel:before{left:7px}body.rtl .menu>.flex.padded.sel:before{right:7px}.menu hr{margin:5px -14px}.menu .go:after{color:inherit}.menu:not(.menu--disclosure) ul li a,.menu ul li .menu-item,.menu ul li .menu-option{color:#3f4d5a;text-decoration:none;cursor:default}.menu li>a[data-icon]:before,.menu li>a [data-icon]:before,.menu li>a span.icon:not([data-icon]),.menu li>button[data-icon]:before,.menu li>button [data-icon]:before,.menu li>button span.icon:not([data-icon]){display:inline-block;width:.875rem;height:.875rem}body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]){margin-left:-1px}body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]){margin-right:-1px}body.ltr .menu li>a[data-icon]:before,body.ltr .menu li>a [data-icon]:before,body.ltr .menu li>a span.icon:not([data-icon]),body.ltr .menu li>button[data-icon]:before,body.ltr .menu li>button [data-icon]:before,body.ltr .menu li>button span.icon:not([data-icon]){margin-right:9px}body.rtl .menu li>a[data-icon]:before,body.rtl .menu li>a [data-icon]:before,body.rtl .menu li>a span.icon:not([data-icon]),body.rtl .menu li>button[data-icon]:before,body.rtl .menu li>button [data-icon]:before,body.rtl .menu li>button span.icon:not([data-icon]){margin-left:9px}.menu li>a[data-icon]:before,.menu li>a [data-icon]:before,.menu li>button[data-icon]:before,.menu li>button [data-icon]:before{position:relative;top:-2px;text-align:center;font-size:14px;color:currentColor}.menu li>a span.icon:not([data-icon]) svg,.menu li>button span.icon:not([data-icon]) svg{display:block;position:relative;top:1px;width:100%;height:100%}.menu li>a span.icon:not([data-icon]) svg rect,.menu li>a span.icon:not([data-icon]) svg circle,.menu li>a span.icon:not([data-icon]) svg ellipse,.menu li>a span.icon:not([data-icon]) svg line,.menu li>a span.icon:not([data-icon]) svg polyline,.menu li>a span.icon:not([data-icon]) svg polygon,.menu li>a span.icon:not([data-icon]) svg path,.menu li>a span.icon:not([data-icon]) svg text,.menu li>button span.icon:not([data-icon]) svg rect,.menu li>button span.icon:not([data-icon]) svg circle,.menu li>button span.icon:not([data-icon]) svg ellipse,.menu li>button span.icon:not([data-icon]) svg line,.menu li>button span.icon:not([data-icon]) svg polyline,.menu li>button span.icon:not([data-icon]) svg polygon,.menu li>button span.icon:not([data-icon]) svg path,.menu li>button span.icon:not([data-icon]) svg text{fill:var(--icon-color, var(--ui-control-color));stroke-width:0}.menu li>a.error[data-icon]:before,.menu li>a.error [data-icon]:before,.menu li>button.error[data-icon]:before,.menu li>button.error [data-icon]:before{color:var(--error-color)}.menu li>a.error span.icon:not([data-icon]) svg rect,.menu li>a.error span.icon:not([data-icon]) svg circle,.menu li>a.error span.icon:not([data-icon]) svg ellipse,.menu li>a.error span.icon:not([data-icon]) svg line,.menu li>a.error span.icon:not([data-icon]) svg polyline,.menu li>a.error span.icon:not([data-icon]) svg polygon,.menu li>a.error span.icon:not([data-icon]) svg path,.menu li>a.error span.icon:not([data-icon]) svg text,.menu li>button.error span.icon:not([data-icon]) svg rect,.menu li>button.error span.icon:not([data-icon]) svg circle,.menu li>button.error span.icon:not([data-icon]) svg ellipse,.menu li>button.error span.icon:not([data-icon]) svg line,.menu li>button.error span.icon:not([data-icon]) svg polyline,.menu li>button.error span.icon:not([data-icon]) svg polygon,.menu li>button.error span.icon:not([data-icon]) svg path,.menu li>button.error span.icon:not([data-icon]) svg text{fill:var(--error-color);stroke-width:0}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover{color:var(--white) !important;background-color:var(--dark-sel-color)}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li a:not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg rect,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg circle,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg ellipse,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg line,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polyline,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg polygon,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg path,.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover svg text,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg rect,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg circle,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg ellipse,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg line,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polyline,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg polygon,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg path,.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover svg text{fill:var(--white);stroke-width:0}.menu:not(.menu--disclosure) ul li a:not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black),.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover .status:not(.on):not(.live):not(.active):not(.enabled):not(.all):not(.pending):not(.warning):not(.off):not(.suspended):not(.expired):not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow):not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky):not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia):not(.pink):not(.rose):not(.grey):not(.black){border-color:currentColor}body.ltr .menu hr.padded,body.ltr .menu .h6.padded,body.ltr .menu h6.padded{margin-left:20px}body.rtl .menu hr.padded,body.rtl .menu .h6.padded,body.rtl .menu h6.padded{margin-right:20px}.menu--disclosure ul li>a:not(.crumb-link):hover,.menu--disclosure ul li>.menu-item:hover,.menu--disclosure ul li>.menu-option:hover{color:#3f4d5a;background-color:#f3f7fc}body:not(.reduce-focus-visibility) .menu--disclosure ul li>a:not(.crumb-link):focus,body.reduce-focus-visibility .menu--disclosure ul li>a:not(.crumb-link):focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-item:focus,body.reduce-focus-visibility .menu--disclosure ul li>.menu-item:focus-visible,body:not(.reduce-focus-visibility) .menu--disclosure ul li>.menu-option:focus,body.reduce-focus-visibility .menu--disclosure ul li>.menu-option:focus-visible{box-shadow:inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7)}.tagselect .elements li{display:inline}.tagselect .chip.small{clear:none}body.ltr .tagselect .chip.small{margin-right:7px}body.rtl .tagselect .chip.small{margin-left:7px}.tagselect .add{position:relative;z-index:1;display:inline-block;width:12em}body.ltr .tagselect .add{margin:7px 7px 0 0}body.rtl .tagselect .add{margin:7px 0 0 7px}body.ltr .tagselect .add .text{padding-right:30px}body.rtl .tagselect .add .text{padding-left:30px}.tagselect .add .spinner{position:absolute;top:0}body.ltr .tagselect .add .spinner{right:5px}body.rtl .tagselect .add .spinner{left:5px}body.ltr .tagmenu ul li a{padding-left:26px}body.rtl .tagmenu ul li a{padding-right:26px}body.ltr .tagmenu ul li a:before{float:left}body.rtl .tagmenu ul li a:before{float:right}body.ltr .tagmenu ul li a:before{margin:3px 0 0 -18px}body.rtl .tagmenu ul li a:before{margin:3px -18px 0 0}.selectize-control.single .selectize-input:not(.no-arrow)::after{display:none}.shadow-box{border-radius:var(--large-border-radius);border:1px solid var(--gray-200);box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}table.shadow-box,table.editable{border-collapse:separate;border-spacing:0}table.shadow-box thead tr:first-child th:first-child,table.shadow-box thead tr:first-child th:first-child.disabled:after,table.shadow-box thead tr:first-child td:first-child,table.shadow-box thead tr:first-child td:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:first-child,table.shadow-box tbody:first-child tr:first-child th:first-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:first-child,table.shadow-box tbody:first-child tr:first-child td:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:first-child,table.shadow-box caption+tbody tr:first-child th:first-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:first-child,table.shadow-box caption+tbody tr:first-child td:first-child.disabled:after,table.editable thead tr:first-child th:first-child,table.editable thead tr:first-child th:first-child.disabled:after,table.editable thead tr:first-child td:first-child,table.editable thead tr:first-child td:first-child.disabled:after,table.editable tbody:first-child tr:first-child th:first-child,table.editable tbody:first-child tr:first-child th:first-child.disabled:after,table.editable tbody:first-child tr:first-child td:first-child,table.editable tbody:first-child tr:first-child td:first-child.disabled:after,table.editable caption+tbody tr:first-child th:first-child,table.editable caption+tbody tr:first-child th:first-child.disabled:after,table.editable caption+tbody tr:first-child td:first-child,table.editable caption+tbody tr:first-child td:first-child.disabled:after{border-top-left-radius:var(--medium-border-radius)}table.shadow-box thead tr:first-child th:last-child,table.shadow-box thead tr:first-child th:last-child.disabled:after,table.shadow-box thead tr:first-child td:last-child,table.shadow-box thead tr:first-child td:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child th:last-child,table.shadow-box tbody:first-child tr:first-child th:last-child.disabled:after,table.shadow-box tbody:first-child tr:first-child td:last-child,table.shadow-box tbody:first-child tr:first-child td:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child th:last-child,table.shadow-box caption+tbody tr:first-child th:last-child.disabled:after,table.shadow-box caption+tbody tr:first-child td:last-child,table.shadow-box caption+tbody tr:first-child td:last-child.disabled:after,table.editable thead tr:first-child th:last-child,table.editable thead tr:first-child th:last-child.disabled:after,table.editable thead tr:first-child td:last-child,table.editable thead tr:first-child td:last-child.disabled:after,table.editable tbody:first-child tr:first-child th:last-child,table.editable tbody:first-child tr:first-child th:last-child.disabled:after,table.editable tbody:first-child tr:first-child td:last-child,table.editable tbody:first-child tr:first-child td:last-child.disabled:after,table.editable caption+tbody tr:first-child th:last-child,table.editable caption+tbody tr:first-child th:last-child.disabled:after,table.editable caption+tbody tr:first-child td:last-child,table.editable caption+tbody tr:first-child td:last-child.disabled:after{border-top-right-radius:var(--medium-border-radius)}table.shadow-box thead:last-child tr:last-child th:first-child,table.shadow-box thead:last-child tr:last-child th:first-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:first-child,table.shadow-box thead:last-child tr:last-child td:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:first-child,table.shadow-box tbody:last-child tr:last-child th:first-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:first-child,table.shadow-box tbody:last-child tr:last-child td:first-child.disabled:after,table.editable thead:last-child tr:last-child th:first-child,table.editable thead:last-child tr:last-child th:first-child.disabled:after,table.editable thead:last-child tr:last-child td:first-child,table.editable thead:last-child tr:last-child td:first-child.disabled:after,table.editable tbody:last-child tr:last-child th:first-child,table.editable tbody:last-child tr:last-child th:first-child.disabled:after,table.editable tbody:last-child tr:last-child td:first-child,table.editable tbody:last-child tr:last-child td:first-child.disabled:after{border-bottom-left-radius:calc(var(--large-border-radius) - 1px)}table.shadow-box thead:last-child tr:last-child th:last-child,table.shadow-box thead:last-child tr:last-child th:last-child.disabled:after,table.shadow-box thead:last-child tr:last-child td:last-child,table.shadow-box thead:last-child tr:last-child td:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child th:last-child,table.shadow-box tbody:last-child tr:last-child th:last-child.disabled:after,table.shadow-box tbody:last-child tr:last-child td:last-child,table.shadow-box tbody:last-child tr:last-child td:last-child.disabled:after,table.editable thead:last-child tr:last-child th:last-child,table.editable thead:last-child tr:last-child th:last-child.disabled:after,table.editable thead:last-child tr:last-child td:last-child,table.editable thead:last-child tr:last-child td:last-child.disabled:after,table.editable tbody:last-child tr:last-child th:last-child,table.editable tbody:last-child tr:last-child th:last-child.disabled:after,table.editable tbody:last-child tr:last-child td:last-child,table.editable tbody:last-child tr:last-child td:last-child.disabled:after{border-bottom-right-radius:calc(var(--large-border-radius) - 1px)}.text,.passwordwrapper,.border-box,.selectize.multiselect .selectize-input,.multiselect>select{border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box}.text.focus,.passwordwrapper.focus,.border-box.focus,.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}body:not(.reduce-focus-visibility) .text:focus,body.reduce-focus-visibility .text:focus-visible,body:not(.reduce-focus-visibility) .passwordwrapper:focus,body.reduce-focus-visibility .passwordwrapper:focus-visible,body:not(.reduce-focus-visibility) .border-box:focus,body.reduce-focus-visibility .border-box:focus-visible,body:not(.reduce-focus-visibility) .selectize.multiselect .selectize-input:focus,body.reduce-focus-visibility .selectize.multiselect .selectize-input:focus-visible{box-shadow:var(--focus-ring)}input.text,textarea.text,.text>input,.text>textarea,table.editable textarea,.selectize.multiselect .selectize-input{font-size:14px;line-height:20px;color:var(--text-color);min-height:3px;box-sizing:border-box;appearance:none}.selectize.multiselect .selectize-input{line-height:18px}textarea.text.fullwidth{display:block}.multitext .multitextrow:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}body.ltr .multitext .multitextrow:first-child .text:first-child{border-top-left-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:first-child{border-top-right-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:first-child .text:last-child{border-top-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:first-child .text:last-child{border-top-left-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:first-child{border-bottom-left-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:first-child{border-bottom-right-radius:var(--medium-border-radius)}body.ltr .multitext .multitextrow:last-child .text:last-child{border-bottom-right-radius:var(--medium-border-radius)}body.rtl .multitext .multitextrow:last-child .text:last-child{border-bottom-left-radius:var(--medium-border-radius)}.multitext .multitextrow:not(:first-child) .text{margin-top:-1px}.multitext .multitextrow .text{border-radius:0;float:left;box-sizing:border-box}body.ltr .multitext .multitextrow .text:not(:first-child){margin-left:-1px}body.rtl .multitext .multitextrow .text:not(:first-child){margin-right:-1px}.multitext .multitextrow .text:first-child:nth-last-child(1){width:100%}.multitext .multitextrow .text:first-child:nth-last-child(2){width:50%}.multitext .multitextrow .text:first-child:nth-last-child(2)~.text{width:calc(50% + 1px)}.multitext .multitextrow .text.error{position:relative;z-index:1}.multitext .multitextrow .text:focus,.multitext .multitextrow .selectize.multiselect .selectize-input.focus{position:relative;z-index:2}.chars-left{position:relative;color:var(--light-text-color)}body.ltr .chars-left{float:right}body.rtl .chars-left{float:left}body.ltr .chars-left{margin:-1.6875rem 7px 0 0}body.rtl .chars-left{margin:-1.6875rem 0 0 7px}.input.ltr>.chars-left{float:right !important;margin-right:7px !important}.input.rtl>.chars-left{float:left !important;margin-left:7px !important}.chars-left.negative-chars-left{color:var(--error-color)}.field,fieldset{position:relative;margin:24px 0}.flex>.field,.flex>fieldset{margin-top:0;margin-bottom:0}.field{min-inline-size:initial}.field>.status-badge{position:absolute;top:0;width:2px;height:100%;border-radius:1px;content:\"\";cursor:help}body.ltr .field>.status-badge{left:0}body.rtl .field>.status-badge{right:0}.field>.status-badge.modified{background-color:var(--blue-600);box-shadow:0 0 5px rgba(36,99,235,.15)}.field>.status-badge.outdated{background-color:var(--pending-color);box-shadow:0 0 5px rgba(251,146,60,.15)}.field>.heading{display:flex;flex-wrap:wrap;align-items:center;position:relative;margin-top:-5px;margin-bottom:5px}.field>.heading>label,.field>.heading>legend{font-weight:bold}.field>.heading>label code,.field>.heading>legend code{font-size:1em !important}body.ltr .field>.heading>label .info,body.ltr .field>.heading>legend .info{margin-left:5px}body.rtl .field>.heading>label .info,body.rtl .field>.heading>legend .info{margin-right:5px}.field>.heading .t9n-indicator{position:relative;top:-0.0625rem;color:var(--light-text-color)}body.ltr .field>.heading .t9n-indicator{margin-left:7px}body.rtl .field>.heading .t9n-indicator{margin-right:7px}.field>.heading+.instructions{margin-top:-3px}.field>.heading>.instructions{width:100%}.field>.instructions{margin-bottom:5px}.field>.input{position:relative}.field>.input+.instructions{margin:5px 0 0}.field>.input input:disabled,.field>.input textarea:disabled{cursor:not-allowed}.field>.notice,.field>.warning{margin:5px 0 0}.field>.instructions,.field>.heading>.instructions,.checkboxfield .instructions{color:var(--custom-text-color, var(--medium-text-color))}.field>.instructions img,.field>.instructions video,.field>.instructions embed,.field>.instructions iframe,.field>.heading>.instructions img,.field>.heading>.instructions video,.field>.heading>.instructions embed,.field>.heading>.instructions iframe,.checkboxfield .instructions img,.checkboxfield .instructions video,.checkboxfield .instructions embed,.checkboxfield .instructions iframe{max-width:100% !important}.field>.instructions ul,.field>.instructions ol,.field>.heading>.instructions ul,.field>.heading>.instructions ol,.checkboxfield .instructions ul,.checkboxfield .instructions ol{margin:1em 0}body.ltr .field>.instructions ul,body.ltr .field>.instructions ol,body.ltr .field>.heading>.instructions ul,body.ltr .field>.heading>.instructions ol,body.ltr .checkboxfield .instructions ul,body.ltr .checkboxfield .instructions ol{padding-left:2em}body.rtl .field>.instructions ul,body.rtl .field>.instructions ol,body.rtl .field>.heading>.instructions ul,body.rtl .field>.heading>.instructions ol,body.rtl .checkboxfield .instructions ul,body.rtl .checkboxfield .instructions ol{padding-right:2em}.field>.instructions ul li,.field>.heading>.instructions ul li,.checkboxfield .instructions ul li{list-style-type:disc}.field>.instructions li+li,.field>.heading>.instructions li+li,.checkboxfield .instructions li+li{margin-top:.25em}.expand-status-btn{width:30px;height:17px;padding:0;line-height:16px;border-radius:var(--small-border-radius);color:var(--text-color)}body.ltr .expand-status-btn{margin-left:5px}body.rtl .expand-status-btn{margin-right:5px}.expand-status-btn:before{margin:0}.nested-fields{margin:-24px;padding:24px 24px 0}.nested-fields.hidden{display:block;height:0}.nested-fields>.field:last-child{padding-bottom:24px}input.checkbox{opacity:0;position:absolute;width:var(--checkbox-size);height:var(--checkbox-size)}input.checkbox+label,div.checkbox{display:inline-block;clear:none;position:relative;line-height:1rem;min-height:1rem;cursor:pointer}body.ltr input.checkbox+label,body.ltr div.checkbox{padding-left:calc(1rem + 5px)}body.rtl input.checkbox+label,body.rtl div.checkbox{padding-right:calc(1rem + 5px)}input.checkbox+label,input.checkbox+label:before,div.checkbox,div.checkbox:before{border-radius:var(--small-border-radius)}input.checkbox+label:before,div.checkbox:before{display:block;position:absolute;top:0;width:var(--checkbox-size) !important;height:var(--checkbox-size);box-sizing:border-box;content:\"\";font-size:0;background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4);background-clip:padding-box}body.ltr input.checkbox+label:before,body.ltr div.checkbox:before{left:0}body.rtl input.checkbox+label:before,body.rtl div.checkbox:before{right:0}body.ltr input.checkbox+label:empty,body.ltr div.checkbox:empty{padding-left:var(--checkbox-size)}body.rtl input.checkbox+label:empty,body.rtl div.checkbox:empty{padding-right:var(--checkbox-size)}input.checkbox+label:empty:after,div.checkbox:empty:after{content:\"\";font-size:0}input.checkbox+label .info,div.checkbox .info{height:16px}input.checkbox:disabled+label,.disabled div.checkbox{cursor:not-allowed}input.checkbox:checked+label:before,div.checkbox.checked:before,.sel div.checkbox:before,input.checkbox:indeterminate+label:before,div.checkbox.indeterminate:before,.elementselectormodal .body .content .main .elements .disabled .checkbox:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;line-height:var(--checkbox-size);color:var(--gray-900)}input.checkbox:checked:not(:indeterminate)+label:before,div.checkbox.checked:not(.indeterminate):before,.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,.sel.matrixblock>.actions div.checkbox:not(.indeterminate):before,.elementselectormodal .body .content .main .elements .disabled .checkbox:before{content:\"check\";font-size:14px}input.checkbox:indeterminate+label:before,div.checkbox.indeterminate:before{content:\"minus\";font-size:7px;text-align:center}body:not(.reduce-focus-visibility) input.checkbox:focus+label:before,body:not(.reduce-focus-visibility) :focus div.checkbox:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility input.checkbox:focus-visible+label:before,body.reduce-focus-visibility :focus-visible div.checkbox:before{box-shadow:var(--focus-ring)}.checkbox-icon{display:inline-flex;padding:3px;background-color:var(--enabled-color);color:var(--white);border-radius:var(--small-border-radius)}.checkbox-icon:before{--checkbox-size: 14px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"check\";line-height:var(--checkbox-size);font-size:var(--checkbox-size)}.checkbox-preview-label{display:none}body:not(.reduce-focus-visibility) .monaco-mouse-cursor-text:focus,body.reduce-focus-visibility .monaco-mouse-cursor-text:focus-visible{box-shadow:none !important}fieldset .checkboxfield{margin:5px 0}.checkboxfield .instructions,.checkboxfield .notice,.checkboxfield .warning{margin-top:2px}body.ltr .checkboxfield .instructions,body.ltr .checkboxfield .notice,body.ltr .checkboxfield .warning{padding-left:calc(1rem + 5px)}body.rtl .checkboxfield .instructions,body.rtl .checkboxfield .notice,body.rtl .checkboxfield .warning{padding-right:calc(1rem + 5px)}input.radio{opacity:0;position:absolute;width:var(--radio-size);height:var(--radio-size)}input.radio+label,div.radio{display:inline-block;clear:none;position:relative;line-height:1.7142857143;cursor:pointer}body.ltr input.radio+label,body.ltr div.radio{padding-left:calc(1rem + 5px)}body.rtl input.radio+label,body.rtl div.radio{padding-right:calc(1rem + 5px)}input.radio:disabled+label,.disabled div.radio{cursor:not-allowed}body.ltr input.radio+label:empty,body.ltr div.radio:empty{padding-left:var(--radio-size)}body.rtl input.radio+label:empty,body.rtl div.radio:empty{padding-right:var(--radio-size)}input.radio+label:before,input.radio+label:after,div.radio:before,div.radio:after{display:block;position:absolute;content:\"\";box-sizing:border-box;background-clip:padding-box;border-radius:100%}input.radio+label:before,div.radio:before{top:50%;left:0;transform:translateY(-50%);width:var(--radio-size);height:var(--radio-size);background-color:#fbfcfe;border:1px solid rgba(96,125,159,.4)}input.radio+label:after,div.radio:after{top:50%;left:4px;transform:translateY(-50%);width:calc(var(--radio-size) - 8px);height:calc(var(--radio-size) - 8px)}input.radio:checked+label:after,div.radio.checked:after,.sel div.radio:after{background:var(--gray-900)}body:not(.reduce-focus-visibility) input.radio:focus+label:before,body:not(.reduce-focus-visibility) :focus div.radio:before{box-shadow:var(--focus-ring)}body.reduce-focus-visibility input.radio:focus-visible+label:before,body.reduce-focus-visibility :focus-visible div.radio:before{box-shadow:var(--focus-ring)}.multiselect>select{color:var(--text-color);font-size:14px;appearance:none}body:not(.reduce-focus-visibility) .multiselect>select:focus,body.reduce-focus-visibility .multiselect>select:focus-visible{box-shadow:var(--focus-ring)}.multiselect>select option{padding:1px 8px}.text,.selectize.multiselect .selectize-input{padding:6px 9px}.text{background-color:var(--white)}.text:not(.small){box-sizing:border-box;min-height:2.125rem}.text.small{padding:3px}.text.readable{padding:16px 18px;font-size:16px;line-height:22px}.text.readable+.chars-left{margin-top:-23px}body.ltr .text.clearable{padding-right:var(--touch-target-size)}body.rtl .text.clearable{padding-left:var(--touch-target-size)}.text input{margin:0;padding:0;border:none;background-color:rgba(0,0,0,0)}td.errors .text,.input.errors>.text,.input.errors>.border-box,.input.errors>.passwordwrapper,.input.errors>.autosuggest-container .text,.text.error{border:1px solid var(--error-color) !important}.texticon{position:relative;cursor:text;min-width:130px}.texticon.icon:before{position:absolute;top:calc(50% - .4375rem);color:var(--ui-control-color)}body.ltr .texticon.icon:before{left:9px}body.rtl .texticon.icon:before{right:9px}.texticon .texticon-icon{position:absolute;top:1.0625rem;transform:translateY(-50%);display:flex;justify-content:center;align-items:center}body.ltr .texticon .texticon-icon{left:9px}body.rtl .texticon .texticon-icon{right:9px}body.ltr .texticon .text{padding-left:1.625rem}body.rtl .texticon .text{padding-right:1.625rem}.texticon .clear-btn{position:absolute;top:calc((var(--touch-target-size) - 34px)/-2);width:var(--touch-target-size);height:var(--touch-target-size)}body.ltr .texticon .clear-btn{right:0}body.rtl .texticon .clear-btn{left:0}body.ltr .texticon.has-filter-btn .text{padding-right:26px}body.rtl .texticon.has-filter-btn .text{padding-left:26px}.texticon.has-filter-btn .filter-btn{position:absolute;top:1.0625rem;transform:translateY(-50%);padding:0 7px 4px;font-size:14px;line-height:22px;cursor:pointer;border-radius:13px}body.ltr .texticon.has-filter-btn .filter-btn{right:4px}body.rtl .texticon.has-filter-btn .filter-btn{left:4px}.texticon.has-filter-btn .filter-btn:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"filter\";color:var(--medium-text-color)}.texticon.has-filter-btn .filter-btn:hover{background-color:var(--gray-100)}.texticon.has-filter-btn .filter-btn:active,.texticon.has-filter-btn .filter-btn.active,.texticon.has-filter-btn .filter-btn[aria-expanded=true]{background-color:var(--gray-350)}.texticon.has-filter-btn .filter-btn:active:before,.texticon.has-filter-btn .filter-btn.active:before,.texticon.has-filter-btn .filter-btn[aria-expanded=true]:before{color:var(--white)}body.ltr .texticon.has-filter-btn .text.clearable{padding-right:calc(30px + var(--touch-target-size))}body.rtl .texticon.has-filter-btn .text.clearable{padding-left:calc(30px + var(--touch-target-size))}body.ltr .texticon.has-filter-btn .clear-btn{right:30px}body.rtl .texticon.has-filter-btn .clear-btn{left:30px}.texthint-container{position:relative;height:0}.texthint{position:absolute;top:-1px;width:100%;color:var(--light-text-color);cursor:text}.passwordwrapper{position:relative}.passwordwrapper .password{border:none;background:rgba(0,0,0,0);padding-right:4rem;box-shadow:none}.passwordwrapper .password-toggle{color:var(--link-color);position:absolute;top:0;bottom:0;cursor:pointer}body.ltr .passwordwrapper .password-toggle{right:9px}body.rtl .passwordwrapper .password-toggle{left:9px}.passwordwrapper .password-toggle:hover{text-decoration:underline}.datetimewrapper{display:flex;flex-wrap:nowrap;flex-direction:row;align-items:center;gap:5px}.clear-btn{display:flex;justify-content:center;align-items:center;width:24px;cursor:pointer;color:var(--ui-control-color);border:none;padding:0;background:rgba(0,0,0,0)}.clear-btn:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"remove\"}.clear-btn:hover{color:var(--ui-control-hover-color)}.clear-btn:active{color:var(--ui-control-active-color)}.close-btn{position:relative}.close-btn:before,.close-btn:after{position:absolute;content:\"\";top:50%;left:50%;height:15px;width:2px;background-color:var(--ui-control-color)}.close-btn:before{transform:translate(-50%, -50%) rotate(-45deg)}.close-btn:after{transform:translate(-50%, -50%) rotate(45deg)}.close-btn:hover:before,.close-btn:hover:after{background-color:var(--ui-control-hover-color)}.close-btn:active:before,.close-btn:active:after{background-color:var(--ui-control-active-color)}.datewrapper,.timewrapper{display:inline-block;position:relative}.datewrapper .text,.timewrapper .text{position:relative;z-index:1;width:100%}.datewrapper .text+div[data-icon],.timewrapper .text+div[data-icon]{display:none}.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text.empty-value+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text.empty-value+div[data-icon]{display:block;position:absolute;top:calc(50% - 12px);z-index:0;color:var(--light-text-color)}body.ltr .datewrapper .text:placeholder-shown+div[data-icon],body.ltr .datewrapper .text.empty-value+div[data-icon],body.ltr .timewrapper .text:placeholder-shown+div[data-icon],body.ltr .timewrapper .text.empty-value+div[data-icon]{left:14px}body.rtl .datewrapper .text:placeholder-shown+div[data-icon],body.rtl .datewrapper .text.empty-value+div[data-icon],body.rtl .timewrapper .text:placeholder-shown+div[data-icon],body.rtl .timewrapper .text.empty-value+div[data-icon]{right:14px}.datewrapper .text:placeholder-shown+div[data-icon],.datewrapper .text:placeholder-shown+div[data-icon]:before,.datewrapper .text.empty-value+div[data-icon],.datewrapper .text.empty-value+div[data-icon]:before,.timewrapper .text:placeholder-shown+div[data-icon],.timewrapper .text:placeholder-shown+div[data-icon]:before,.timewrapper .text.empty-value+div[data-icon],.timewrapper .text.empty-value+div[data-icon]:before{user-select:none;pointer-events:none;z-index:1}.datewrapper{width:8em}.timewrapper{width:7em}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:var(--gray-400)}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--gray-400)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--gray-400)}input:-moz-placeholder,textarea:-moz-placeholder{color:var(--gray-400)}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--gray-400)}input::placeholder,textarea::placeholder{color:var(--gray-400)}::-ms-reveal,::-ms-clear{display:none}tr.indexingSession td{height:34px;padding:1px 10px}tr.indexingSession td.progress div.progressContainer{width:100%;display:flex;justify-content:space-between;align-items:center}tr.indexingSession td.progress div.progressContainer .progressbar{width:70%;position:relative;left:0;height:12px;z-index:1}tr.indexingSession td.progress div.progressContainer div.progressInfo{width:20%}.select:not(.selectize),.select:not(.selectize) select{position:relative;border-radius:5px;white-space:nowrap}.select:not(.selectize){max-width:100%;position:relative}:not(.flex)>.select:not(.selectize){display:inline-block}.select:not(.selectize):after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:absolute;z-index:1;top:calc(50% - 5px);user-select:none;pointer-events:none;color:var(--ui-control-color)}body.ltr .select:not(.selectize):after{right:9px}body.rtl .select:not(.selectize):after{left:9px}.select:not(.selectize) select{display:block;position:relative;max-width:100%;border:none;font-size:14px;line-height:20px;color:#3f4d5a;background-color:#dfe5ec;appearance:none;white-space:pre}body.ltr .select:not(.selectize) select{padding:7px 22px 7px 10px}body.rtl .select:not(.selectize) select{padding:7px 10px 7px 22px}.select:not(.selectize) select::-ms-expand{display:none}.select:not(.selectize).fullwidth select{min-width:100%}.select:not(.selectize) select:hover{outline-color:rgba(0,0,0,0);background-color:#cfd8e2;box-shadow:var(--focus-ring)}body:not(.reduce-focus-visibility) .select:not(.selectize) select:focus,body.reduce-focus-visibility .select:not(.selectize) select:focus-visible{outline-color:rgba(0,0,0,0);background-color:#cfd8e2;box-shadow:var(--focus-ring)}.select:not(.selectize).small:after{top:9px}.select:not(.selectize).small select{padding-top:4px !important;padding-bottom:4px !important;font-size:11px}.selectize-control .selectize-input.disabled,.custom-select.disabled{opacity:1;cursor:not-allowed !important;pointer-events:auto !important}.selectize-control .selectize-input.disabled *,.custom-select.disabled *{cursor:not-allowed !important;pointer-events:auto !important}.selectize .selectize-input{display:block;border-color:inherit;box-shadow:none;background-color:rgba(0,0,0,0)}.selectize .selectize-input .item{max-width:100%}.selectize .selectize-input .item span{overflow:hidden;text-overflow:ellipsis}.selectize.select .selectize-input:after{display:none}body .selectize-dropdown{border:none;z-index:101}.selectize.select{height:34px}.selectize.select input::-webkit-input-placeholder,.selectize.select textarea::-webkit-input-placeholder{color:var(--gray-700)}.selectize.select input:-ms-input-placeholder,.selectize.select textarea:-ms-input-placeholder{color:var(--gray-700)}.selectize.select input::-ms-input-placeholder,.selectize.select textarea::-ms-input-placeholder{color:var(--gray-700)}.selectize.select input:-moz-placeholder,.selectize.select textarea:-moz-placeholder{color:var(--gray-700)}.selectize.select input::-moz-placeholder,.selectize.select textarea::-moz-placeholder{color:var(--gray-700)}.selectize.select input::placeholder,.selectize.select textarea::placeholder{color:var(--gray-700)}.selectize.select:not(.fullwidth){width:25em;max-width:100%}.datetimewrapper .selectize.select:not(.fullwidth){max-width:calc(100% - 29px)}.selectize.select .selectize-control{max-width:100%;position:relative}:not(.flex)>.selectize.select .selectize-control{display:inline-block}.selectize.select .selectize-control:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(45deg);position:absolute;z-index:1;top:calc(50% - 5px);user-select:none;pointer-events:none;color:var(--ui-control-color)}body.ltr .selectize.select .selectize-control:after{right:9px}body.rtl .selectize.select .selectize-control:after{left:9px}.selectize.select .selectize-input{position:relative;border-radius:5px;white-space:nowrap}.selectize.select .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.select .selectize-input{display:block;position:relative;max-width:100%;border:none;font-size:14px;line-height:20px;color:#3f4d5a;background-color:#dfe5ec;appearance:none}body.ltr .selectize.select .selectize-input{padding:7px 22px 7px 10px}body.rtl .selectize.select .selectize-input{padding:7px 10px 7px 22px}.selectize.select .selectize-input::-ms-expand{display:none}.selectize.select .selectize-control,.selectize.select .selectize-input{width:100%}.selectize.multiselect .selectize-input{min-height:34px;padding-bottom:3px}.selectize.multiselect .selectize-input.focus{box-shadow:var(--focus-ring)}.selectize.multiselect .selectize-input>.item{display:inline-block;border-radius:3px;padding:3px 7px;font-size:12px;line-height:14px;color:#3f4d5a;background-color:#e4edf6;display:inline-flex;flex-direction:row;padding:3px 7px !important}.selectize.multiselect .selectize-input>.item.active{background-color:#cdd8e4}.selectize.multiselect .selectize-input>.item>.remove{position:static;border-left:none;padding:0;font-size:0;color:var(--ui-control-color)}body.ltr .selectize.multiselect .selectize-input>.item>.remove{margin:-1px -3px 0 3px}body.rtl .selectize.multiselect .selectize-input>.item>.remove{margin:-1px 3px 0 -3px}.selectize.multiselect .selectize-input>.item>.remove:hover{color:var(--ui-control-hover-color);background-color:rgba(0,0,0,0)}.selectize.multiselect .selectize-input>.item>.remove:before{font-size:14px;font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"remove\"}body .selectize-dropdown{margin-top:1px}body .selectize-dropdown [data-selectable],body .selectize-dropdown .option,body .selectize-dropdown .optgroup-header{margin:0 -14px;padding:10px 14px;color:#3f4d5a;text-decoration:none;white-space:nowrap}body .selectize-dropdown .optgroup{padding-top:5px}body .selectize-dropdown .optgroup:not(:first-child){border-top:1px solid var(--hairline-color)}body .selectize-dropdown .optgroup .option{padding-left:24px}body .selectize-dropdown .optgroup-header{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase;margin:0;padding:4px 0}body .selectize-dropdown .active:not(.selected),body .selectize-dropdown .option:hover{background-color:var(--gray-100)}body .selectize-dropdown .selected{color:var(--white) !important;background-color:var(--dark-sel-color);cursor:default !important}body .selectize-dropdown .selected svg rect,body .selectize-dropdown .selected svg circle,body .selectize-dropdown .selected svg ellipse,body .selectize-dropdown .selected svg line,body .selectize-dropdown .selected svg polyline,body .selectize-dropdown .selected svg polygon,body .selectize-dropdown .selected svg path,body .selectize-dropdown .selected svg text{fill:var(--white);stroke-width:0}body .selectize-dropdown .selected .light{color:inherit !important}body .selectize-dropdown-content{z-index:100;border-radius:4px;padding:0 14px;overflow:auto;background:#fff;user-select:none;box-shadow:0 0 0 1px rgba(31,41,51,.1),0 5px 20px rgba(31,41,51,.25);max-height:70vh}body .selectize-dropdown-content .option{min-height:18px}body .selectize-dropdown-content>div[data-value=new]:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"plus\";margin-right:5px}body .selectize-dropdown-content>div[data-value=new]:after{content:\"…\"}body.no-scroll .selectize-dropdown-content{max-height:200px}.ui-datepicker{position:fixed;top:-300px;-padding:10px;width:210px;height:242px;z-index:101 !important}body.ltr .ui-datepicker{margin-left:1px}body.rtl .ui-datepicker{margin-right:1px}.ui-datepicker-header{padding:8px 8px 4px}body.ltr .ui-datepicker-prev{float:left}body.rtl .ui-datepicker-prev{float:right}body.ltr .ui-datepicker-next{float:right}body.rtl .ui-datepicker-next{float:left}.ui-datepicker-prev span,.ui-datepicker-next span{display:none}.ui-datepicker-prev,.ui-datepicker-next{width:20px;height:20px;display:flex;align-items:center;justify-content:center}.ui-datepicker-prev:hover:after,.ui-datepicker-next:hover:after{border-color:var(--link-color)}.ui-datepicker-prev:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .ui-datepicker-prev:after{transform:rotate(135deg)}body.rtl .ui-datepicker-prev:after{transform:rotate(-45deg)}.ui-datepicker-next:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative}body.ltr .ui-datepicker-next:after{transform:rotate(-45deg)}body.rtl .ui-datepicker-next:after{transform:rotate(135deg)}.ui-datepicker-title{text-align:center}.ui-datepicker-calendar th,.ui-datepicker-calendar td{padding:2px !important}.ui-datepicker-calendar th span,.ui-datepicker-calendar td a{display:block;width:1.625rem;line-height:26px;text-align:center;color:var(--text-color)}.ui-datepicker-calendar th span{color:var(--medium-text-color);font-weight:normal}.ui-datepicker-calendar td a{border-radius:2px}.ui-datepicker-calendar td a:hover{background-color:var(--light-sel-color);text-decoration:none}.ui-datepicker-calendar td a.ui-state-active{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.ui-datepicker-calendar td.ui-datepicker-today a{border-radius:13px;box-shadow:inset 0 0 0 2px var(--light-sel-color)}.ui-timepicker-wrapper{z-index:101}.ui-timepicker-list{overflow-y:auto;width:calc(14px + 6em);height:210px;z-index:100}body.ltr .ui-timepicker-list{margin-left:1px}body.rtl .ui-timepicker-list{margin-right:1px}.ui-timepicker-list li{white-space:nowrap;cursor:pointer}body.ltr .ui-timepicker-list li{padding:2px 0 2px 14px}body.rtl .ui-timepicker-list li{padding:2px 14px 2px 0}.ui-timepicker-list li:hover{background-color:var(--light-sel-color)}.ui-timepicker-list li.ui-timepicker-selected{background-color:var(--dark-sel-color);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:default}.slide-picker{display:flex;height:1rem;white-space:nowrap}.slide-picker a{position:relative;border:1px solid var(--hairline-color);background-image:none;width:calc(.5rem - 1px);height:calc(1rem - 2px);margin-left:0;margin-top:1px;margin-bottom:1px;box-sizing:border-box;cursor:pointer}body.ltr .slide-picker a{border-left:none}body.rtl .slide-picker a{border-right:none}.slide-picker a:first-child{width:.5rem}body.ltr .slide-picker a:first-child{border-left:1px solid var(--gray-400) !important}body.rtl .slide-picker a:first-child{border-right:1px solid var(--gray-400) !important}.slide-picker a:before{content:\"\";position:absolute;top:calc(-0.25rem - 1px);left:-1px;width:calc(100% + 2px);height:var(--touch-target-size)}.slide-picker:not(:hover) a.active,.slide-picker:hover a.active-hover{border-top-color:var(--gray-400);border-bottom-color:var(--gray-400);height:1rem;margin-top:0;margin-bottom:0}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-left:1px solid var(--gray-400)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-right:1px solid var(--gray-400)}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-top-left-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-top-right-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.active:first-child,body.ltr .slide-picker:hover a.active-hover:first-child{border-bottom-left-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.active:first-child,body.rtl .slide-picker:hover a.active-hover:first-child{border-bottom-right-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-right:1px solid var(--gray-400)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-left:1px solid var(--gray-400)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-top-right-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-top-left-radius:var(--small-border-radius)}body.ltr .slide-picker:not(:hover) a.last-active,body.ltr .slide-picker:hover a.last-active-hover{border-bottom-right-radius:var(--small-border-radius)}body.rtl .slide-picker:not(:hover) a.last-active,body.rtl .slide-picker:hover a.last-active-hover{border-bottom-left-radius:var(--small-border-radius)}.slide-picker:focus a.active{background-color:var(--light-sel-color)}.icon-picker{display:flex;flex-direction:row;align-items:center;gap:var(--xs)}.icon-picker--icon{display:flex;align-items:center;justify-content:center;border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box;border-radius:var(--ui-control-border-radius);width:var(--ui-control-height);height:var(--ui-control-height);background:var(--gray-050)}.icon-picker--icon svg{width:1.25rem;height:1.25rem}.icon-picker--icon svg rect,.icon-picker--icon svg circle,.icon-picker--icon svg ellipse,.icon-picker--icon svg line,.icon-picker--icon svg polyline,.icon-picker--icon svg polygon,.icon-picker--icon svg path,.icon-picker--icon svg text{fill:var(--ui-control-color);stroke-width:0}.icon-picker-modal{--width: calc(var(--ui-control-height) * 10 + var(--s) * 9 + var(--xl) * 2);width:var(--width) !important;min-width:0 !important;max-width:calc(100% - 20px) !important}.icon-picker-modal .body{height:100%;display:flex;flex-direction:column;gap:var(--l)}.icon-picker-modal .body .icon-picker-modal--list{flex:1;position:relative;overflow:hidden}.icon-picker-modal .body .icon-picker-modal--list:not(.loading) .spinner{display:none}.icon-picker-modal .body .icon-picker-modal--list.loading:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";background-color:rgba(255,255,255,.75)}.icon-picker-modal .body .icon-picker-modal--list.loading .spinner{top:calc(50% - 10px);z-index:1}.icon-picker-modal .body .icon-picker-modal--list ul{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:start;gap:var(--s);max-height:100%;overflow:auto}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon{--focus-ring: var(--inner-focus-ring)}.icon-picker-modal .body .icon-picker-modal--list ul .icon-picker--icon:hover{border-color:var(--link-color);background-color:var(--blue-100)}ul.errors{margin-top:5px;list-style-type:square}body.ltr ul.errors{padding-left:20px}body.rtl ul.errors{padding-right:20px}ul.errors li{color:var(--error-color)}.message-container{position:absolute;z-index:100;top:0;width:100%;height:100%}body.ltr .message-container{left:0}body.rtl .message-container{right:0}.message-container.no-access{background-color:rgba(31,41,51,.5)}.message-container .pane{top:50%;margin-top:-33px !important;margin-left:auto;margin-right:auto;width:320px;box-shadow:0 25px 100px rgba(31,41,51,.5)}body.setup-2fa{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}body.setup-2fa #setup-2fa{display:flex;flex-direction:column;gap:var(--l);width:550px;max-width:100%;padding:var(--padding)}body.setup-2fa #setup-2fa #setup-2fa-intro{text-align:center}body.setup-2fa #setup-2fa #setup-2fa-btn{display:flex;justify-content:center}body.licensing-issues{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;padding:var(--padding)}body.licensing-issues #licensing-issues{display:flex;flex-direction:row;max-width:50em}body.licensing-issues #licensing-issues .buttons{justify-content:space-between}body.licensing-issues #licensing-issues .buttons [data-icon]{margin-left:0;margin-right:0}body.licensing-issues #continue{margin:0}.autosuggest-container{position:relative}.autosuggest__results-container{position:absolute;z-index:2;width:100%;border-radius:var(--large-border-radius);background-color:var(--white);box-shadow:0 1px 5px -1px rgba(31,41,51,.2);box-sizing:border-box;padding:0 14px;text-align:left;font-family:system-ui,BlinkMacSystemFont,-apple-system,\"Segoe UI\",\"Roboto\",\"Oxygen\",\"Ubuntu\",\"Cantarell\",\"Fira Sans\",\"Droid Sans\",\"Helvetica Neue\",sans-serif;font-size:1em !important}.autosuggest__results-container .autosuggest__results-before{margin:14px 0 3px;font-size:11px;line-height:1.2;color:#606d7b;text-transform:uppercase;margin-top:14px !important}.autosuggest__results-container .autosuggest__results-item{margin:0 -14px;padding:10px 14px;color:#3f4d5a;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autosuggest__results-container .autosuggest__results-item:hover,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted{color:var(--white) !important;background-color:var(--dark-sel-color);cursor:pointer}.autosuggest__results-container .autosuggest__results-item:hover svg rect,.autosuggest__results-container .autosuggest__results-item:hover svg circle,.autosuggest__results-container .autosuggest__results-item:hover svg ellipse,.autosuggest__results-container .autosuggest__results-item:hover svg line,.autosuggest__results-container .autosuggest__results-item:hover svg polyline,.autosuggest__results-container .autosuggest__results-item:hover svg polygon,.autosuggest__results-container .autosuggest__results-item:hover svg path,.autosuggest__results-container .autosuggest__results-item:hover svg text,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg rect,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg circle,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg ellipse,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg line,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polyline,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg polygon,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg path,.autosuggest__results-container .autosuggest__results-item.autosuggest__results-item--highlighted svg text{fill:var(--white);stroke-width:0}.matrix>.buttons{margin-top:10px}.matrixblock{position:relative;margin-bottom:10px;padding:0 var(--m) var(--m);border-radius:var(--large-border-radius);border:2px solid var(--gray-100);background-color:var(--white)}.matrixblock.static .titlebar{margin-bottom:14px}body.ltr .matrixblock.static .titlebar{padding-right:0}body.rtl .matrixblock.static .titlebar{padding-left:0}body.ltr .matrixblock.static .titlebar{padding-left:14px}body.rtl .matrixblock.static .titlebar{padding-right:14px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn),.matrixblock>.actions .action-btn{padding:0;width:var(--touch-target-size);height:var(--touch-target-size);color:var(--custom-text-color, var(--ui-control-color));background-color:rgba(0,0,0,0)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):hover,.matrixblock>.actions .action-btn:hover{backdrop-filter:brightness(90%)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):active,.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn)[aria-expanded=true],.matrixblock>.actions .action-btn:active,.matrixblock>.actions .action-btn[aria-expanded=true]{backdrop-filter:brightness(85%)}.matrixblock .flex-fields{--row-gap: var(--m) !important}.matrixblock .hidden+.field{margin-top:0}.matrixblock>.titlebar{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--m);margin:0 calc(var(--m)*-1);box-sizing:border-box;border-radius:calc(var(--large-border-radius) - 2px) calc(var(--large-border-radius) - 2px) 0 0;color:var(--custom-text-color, var(--light-text-color));overflow:hidden;white-space:nowrap;text-overflow:ellipsis;word-wrap:normal;cursor:default;user-select:none;position:relative;background-color:var(--gray-050);min-height:calc(var(--lh) + 10px)}body.ltr .matrixblock>.titlebar{padding:5px calc(var(--m) + 70px) 5px var(--m)}body.rtl .matrixblock>.titlebar{padding:5px var(--m) 5px calc(var(--m) + 70px)}.matrixblock>.titlebar>.preview{flex-grow:1;min-width:0;opacity:0;transition:opacity linear 100ms;overflow:hidden}.matrixblock>.titlebar>.preview:empty{display:none}body.ltr .matrixblock>.titlebar>.preview{mask-image:linear-gradient(to left, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px)}body.rtl .matrixblock>.titlebar>.preview{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px)}.matrixblock>.titlebar>.preview span{opacity:.5}.matrixblock>.titlebar>.matrixblock-tabs{flex:1;min-width:0;margin:-5px 0}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{margin:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-right:3px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs{padding-left:3px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist]{padding:0 12px}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist].scrollable{mask-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0) 12px, rgb(0, 0, 0) calc(100% - 12px), rgba(0, 0, 0, 0) 100%)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab]{background-color:rgba(0,0,0,0)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs [role=tablist] [role=tab] .tab-label{height:calc(var(--lh) + 10px);padding:0 var(--m)}.matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn){margin-left:0;margin-right:0}body.ltr .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty)::after{margin-left:0px}body.rtl .matrixblock>.titlebar>.matrixblock-tabs .pane-tabs .menubtn:not(.action-btn):not(:empty):not(.btn-empty)::after{margin-right:0px}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-left:calc((var(--m) + 12px)*-1)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs{margin-right:calc((var(--m) + 12px)*-1)}body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.ltr .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-left-radius:calc(var(--large-border-radius) - 2px)}body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child,body.rtl .matrixblock>.titlebar>.preview:first-child:empty+.matrixblock-tabs [role=tab]:first-child .tab-label{border-top-right-radius:calc(var(--large-border-radius) - 2px)}body.ltr .matrixblock.disabled-entry>.titlebar{padding-right:100px}body.rtl .matrixblock.disabled-entry>.titlebar{padding-left:100px}.matrixblock.disabled-entry>.actions>.status.off{display:block}.matrixblock.collapsed>.titlebar{border-radius:calc(var(--large-border-radius) - 2px)}.matrixblock.collapsed>.titlebar>.preview{opacity:1}.matrixblock>.actions{display:flex;align-items:center;gap:var(--xs);position:absolute;top:0;cursor:default;min-height:calc(var(--lh) + 10px)}body.ltr .matrixblock>.actions{right:var(--m)}body.rtl .matrixblock>.actions{left:var(--m)}.matrixblock>.actions>*{margin:0 !important}.matrixblock>.actions>.status.off{display:none}.matrixblock>.actions a:not([data-action]){padding:0;height:var(--touch-target-size);text-align:center;color:var(--dark-hairline-color);transform:color linear 100ms}.matrixblock>.actions a:not([data-action]):hover{color:var(--link-color)}.matrixblock>.actions a:not([data-action]):hover.settings:after{border-color:var(--link-color)}.matrixblock:not(.static)>.fields{padding-top:var(--l)}.matrixblock>.fields>.flex-fields>.field:before{display:none}body.ltr .matrixblock>.fields>.flex-fields>.field>.status-badge{left:-2px}body.rtl .matrixblock>.fields>.flex-fields>.field>.status-badge{right:-2px}.matrixblock>.buttons{margin-top:0;height:30px}.add-category-form{margin-top:24px}.add-category-form .texticon{width:200px}body.ltr .add-category-form .texticon{float:left}body.rtl .add-category-form .texticon{float:right}body.ltr .add-category-form .texticon{margin-right:5px}body.rtl .add-category-form .texticon{margin-left:5px}body.ltr .add-category-form .texticon .text{padding-right:30px}body.rtl .add-category-form .texticon .text{padding-left:30px}.add-category-form .texticon .spinner{position:absolute;top:0}body.ltr .add-category-form .texticon .spinner{right:5px}body.rtl .add-category-form .texticon .spinner{left:5px}body.sitepicker #main-content{padding:30px;justify-content:center;align-items:center;text-align:center}body.sitepicker #content-container{max-width:400px}.sitepicker-group li:not(:first-child) a{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.sitepicker-group li:not(:first-child) a:not(:hover){border-top-color:rgba(0,0,0,0)}.sitepicker-group li:not(:last-child) a{border-bottom-left-radius:0;border-bottom-right-radius:0}.sitepicker-group li a{display:block;position:relative;text-align:left;width:100%;box-sizing:border-box;border:1px solid var(--hairline-color);border-radius:var(--medium-border-radius);font-size:16px;line-height:1.4}body.ltr .sitepicker-group li a{padding:9px 42px 9px 15px}body.rtl .sitepicker-group li a{padding:9px 15px 9px 42px}.sitepicker-group li a:after{font-size:14px;position:absolute;top:calc(50% - 7px);margin:0;padding:0}body.ltr .sitepicker-group li a:after{right:12px}body.rtl .sitepicker-group li a:after{left:12px}.sitepicker-group li a:hover{border-color:var(--link-color);text-decoration:none;z-index:1}.elementselectormodal .body .main{float:left \\9 ;width:445px \\9 }@media only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (-moz-min-device-pixel-ratio: 1.5),only screen and (-o-min-device-pixel-ratio: 3/2),only screen and (min-device-pixel-ratio: 1.5),only screen and (min-resolution: 1.5dppx){.structure ul li{background-size:40px}body.ltr .structure ul li{background-image:url(../images/branch_2x.png)}body.rtl .structure ul li{background-image:url(../images/branch_rtl_2x.png)}.hud .tip-left{background-image:url(../images/hudtip_left_2x.png);background-size:15px 30px}.hud .tip-top{background-image:url(../images/hudtip_top_2x.png);background-size:30px 15px}.hud .tip-right{background-image:url(../images/hudtip_right_2x.png);background-size:15px 30px}.hud .tip-bottom{background-image:url(../images/hudtip_bottom_2x.png);background-size:30px 15px}.hud.has-footer .tip-bottom{background-image:url(../images/hudtip_bottom_gray_2x.png)}}:root{--xs: 4px;--s: 8px;--m: 14px;--l: 18px;--xl: 24px;--padding: var(--xl);--neg-padding: calc(var(--padding) * -1);--sidebar-width: 14.125rem;--global-sidebar-width: 14.125rem;--header-height: calc(44rem / 16);--details-width: 350px}html{-webkit-text-size-adjust:100%;min-height:100vh}body{min-height:100vh}body.dragging *{cursor:move !important;cursor:grabbing !important}body :focus{outline-style:solid;outline-color:rgba(0,0,0,0);box-shadow:var(--focus-ring)}.reduce-focus-visibility :focus:not(:focus-visible){box-shadow:none}.reduce-focus-visibility :focus-visible{box-shadow:var(--focus-ring)}.skip-link{position:absolute;margin:5px;left:-10000px;top:0;width:1px;height:1px;overflow:hidden;z-index:101}.skip-link:focus{left:unset;width:auto;height:auto;background-color:var(--gray-100) !important}body.ltr .skip-link:focus{left:0}body.rtl .skip-link:focus{right:0}@media only screen and (min-width: 75rem){#global-skip-link{--light-color: var(--white);--dark-color: var(--gray-800);--focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color)}}#global-container{position:relative;display:flex;min-height:100vh}@media screen and (prefers-reduced-motion: no-preference){body.ltr #global-container{transition:left 100ms cubic-bezier(0.33, 1, 0.68, 1)}body.rtl #global-container{transition:right 100ms cubic-bezier(0.33, 1, 0.68, 1)}}#global-header{display:grid;grid-template-columns:1fr min-content min-content;align-items:center}#system-info{display:grid;grid-template-columns:var(--prefix-width) auto;gap:10px;height:2.8125rem;padding:0 var(--gutter-width);position:relative;flex:0 0 2.8125rem;flex-direction:row;align-items:center;color:currentColor;border-bottom:1px solid var(--hairline-color);background-clip:padding-box}#system-info:after{display:none}#system-info:focus,#system-info:hover{text-decoration:none;background-color:var(--gray-200)}#site-icon{--size: var(--prefix-width);height:var(--size)}#site-icon img,#site-icon svg{display:block;width:var(--size);height:var(--size);border-radius:4px}#site-icon svg rect,#site-icon svg circle,#site-icon svg ellipse,#site-icon svg line,#site-icon svg polyline,#site-icon svg polygon,#site-icon svg path,#site-icon svg text{fill:var(--medium-text-color);stroke-width:0}#system-name h2,#system-name .h2{margin:0;width:100%;overflow:hidden;max-height:40px;position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}@media only screen and (min-width: 75rem){[data-sidebar=collapsed] #system-info:hover #system-name{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] #system-name{position:absolute;left:calc(100% + var(--s)*2);top:50%;transform:translateY(-50%) translateX(-5px);opacity:0;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);color:var(--text-color);border-radius:var(--medium-border-radius);padding:var(--xs) var(--s);white-space:nowrap;pointer-events:none}[data-sidebar=collapsed] #system-name:focus{box-shadow:var(--focus-ring)}}@media only screen and (min-width: 75rem)and (prefers-reduced-motion: no-preference){[data-sidebar=collapsed] #system-name{transition:opacity 50ms cubic-bezier(0.33, 1, 0.68, 1),transform 150ms cubic-bezier(0.33, 1, 0.68, 1)}}#global-footer{display:flex;flex-direction:column;align-items:center;padding:var(--m) var(--m) var(--xl);gap:var(--m)}body.has-debug-toolbar #global-footer{padding-bottom:calc(var(--xl) + 42px)}#global-footer a{white-space:nowrap}#app-info{display:flex;flex-direction:row;justify-content:center;gap:var(--m)}#trial-info{padding:16px var(--xl);border-radius:var(--large-border-radius);background-color:var(--gray-150);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 0 0 1px #bdcbdb,0 2px 12px rgba(205,216,228,.5);text-align:center}#app-version{display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--gray-600);text-align:center;gap:var(--s)}#app-version a{color:var(--gray-600);text-decoration:underline}#app-version a.go:hover:after{color:var(--gray-600)}#edition-logo{position:relative;top:-1px;user-select:none;border:1px solid var(--gray-600);border-radius:3px;display:inline-flex;box-sizing:content-box;font-size:11px;padding:6px 7px;line-height:8px;font-weight:600;letter-spacing:1.7px;padding-right:5px;text-transform:uppercase}#devmode{margin-top:auto;flex:0 0 4px;width:100%;min-height:4px;background:url(../images/dev-mode.svg) repeat-x 21px 0,var(--gray-900);cursor:help}#page-container{display:flex;flex-direction:column;flex-grow:1}#alerts{position:relative;background-color:var(--red-050);border-left:6px solid var(--error-color);color:var(--error-color)}#alerts>li{padding:10px 24px;box-shadow:inset 0 -1px 0 0 var(--red-100)}#alerts>li .resolvable-alert-buttons{margin-top:var(--m)}#alerts>li .btn,#alerts>li a.go{display:inline-flex;align-items:center;border:1px solid rgba(220,38,38,.5);border-radius:var(--medium-border-radius);padding:4px 5px;margin:0 2px;color:var(--error-color);height:1.875rem}.flex #alerts>li .btn,.flex #alerts>li a.go{margin:0}#alerts>li .btn:hover,#alerts>li a.go:hover{border-color:var(--error-color)}#alerts>li a:not(.btn){color:var(--error-color);text-decoration:underline}#alerts>li a:not(.btn).go{text-decoration:none;white-space:nowrap}#alerts>li a:not(.btn).go:after{color:var(--error-color);font-size:15px;margin-top:1px}#alerts>li .btn{background-color:rgba(0,0,0,0)}#global-header .btn.menubtn,li.crumb .btn.menubtn,.btn.action-btn{padding:0;width:var(--touch-target-size);height:var(--touch-target-size)}#global-header .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),li.crumb .btn.menubtn:not(:hover):not(:active):not([aria-expanded=true]),.btn.action-btn:not(:hover):not(:active):not([aria-expanded=true]){background-color:rgba(0,0,0,0)}#global-header{width:100%;margin-bottom:var(--m);border-bottom:1px solid var(--hairline-color)}#global-header .flex{height:var(--header-height);align-items:center}#global-header .btn{--ui-control-color: var(--gray-400);--ui-control-hover-color: var(--gray-800);--ui-control-active-color: var(--gray-700)}#global-header .btn:hover{color:var(--ui-control-hover-color)}.nav-toggle{display:flex;align-items:center;justify-content:center;width:44px;min-width:44px;height:var(--header-height);border-right:1px solid var(--medium-hairline-color);line-height:26px;color:currentColor;text-align:center}.nav-toggle:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;content:\"menu\";font-size:16px;line-height:0}.nav-toggle:hover{color:var(--link-color)}#crumbs{display:flex;flex-direction:row;align-items:center;font-size:13px;margin:0 !important;max-width:100%;overflow:hidden}#crumbs.empty{display:none}#crumbs nav{margin:0}#primary-nav-toggle:focus-visible{box-shadow:var(--inner-focus-ring)}#crumb-list{display:flex;flex-direction:row;align-items:stretch;flex-wrap:nowrap;max-width:100%;height:var(--header-height);--arrow-padding: 10;--arrow-height: 22;--arrow-angle: 35;--arrow-width: 17.1111;--arrow-c: 27.871}body.rtl #crumb-list{--arrow-angle: -35;--arrow-width: -19.4444}#crumb-list li.crumb{position:relative;cursor:default;color:var(--light-text-color)}body.ltr #crumb-list li.crumb{padding-left:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb{padding-right:calc(var(--arrow-width)*.5rem/16)}body.ltr #crumb-list li.crumb:not(.current){padding-right:calc(var(--arrow-width)*1.125rem/16)}body.rtl #crumb-list li.crumb:not(.current){padding-left:calc(var(--arrow-width)*1.125rem/16)}#crumb-list li.crumb:not(.current):before,#crumb-list li.crumb:not(.current):after{display:block;content:\"\";width:1px;height:calc(var(--arrow-c)*1rem/16);position:absolute;background:var(--medium-hairline-color);pointer-events:none}body.ltr #crumb-list li.crumb:not(.current):before,body.ltr #crumb-list li.crumb:not(.current):after{right:calc(var(--arrow-width)*.5rem/16)}body.rtl #crumb-list li.crumb:not(.current):before,body.rtl #crumb-list li.crumb:not(.current):after{left:calc(var(--arrow-width)*.5rem/16)}#crumb-list li.crumb:not(.current):before{top:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle) * -1deg))}#crumb-list li.crumb:not(.current):after{bottom:calc((var(--arrow-height) - var(--arrow-c))/2*1rem/16);transform:rotate(calc(var(--arrow-angle) * 1deg))}#crumb-list .menu--disclosure li{display:block}#crumb-list .menu--disclosure li::after{content:none}#crumb-menu-trigger{min-width:var(--touch-target-size)}#crumb-menu-trigger:before{width:100%}#crumb-menu .chip{min-height:44px}li.crumb{display:flex;align-items:center;flex-wrap:nowrap;gap:var(--xs)}li.crumb [data-icon]{position:relative;top:-1px}li.crumb .menubtn{position:relative;margin:0 calc(var(--xs)*-1/2)}li.crumb [data-icon=ellipsis]:before{margin-top:3px;font-size:17px}li.crumb .chip{padding:0;background-color:rgba(0,0,0,0);--custom-bg-color: initial !important;--custom-text-color: initial !important;--custom-sel-bg-color: initial !important}li.crumb .chip .label-link{max-width:15em}li.crumb .chip .label-link:focus-visible{box-shadow:var(--inner-focus-ring)}li.crumb .chip .label-link span:not(.context-label){display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}li.crumb:has(.menubtn)>a{margin-right:0 !important;padding-right:var(--xs) !important}li.crumb>a{flex:1;display:flex !important;align-items:center;flex-wrap:nowrap;gap:var(--xs);white-space:nowrap}.menu--disclosure li.crumb>a{min-height:34px}li.crumb a,li.crumb button{display:inline-flex;align-items:center;min-height:var(--touch-target-size)}li.crumb a:not(:hover),li.crumb button:not(:hover){color:var(--text-color)}li.crumb a:not(:hover) svg rect,li.crumb a:not(:hover) svg circle,li.crumb a:not(:hover) svg ellipse,li.crumb a:not(:hover) svg line,li.crumb a:not(:hover) svg polyline,li.crumb a:not(:hover) svg polygon,li.crumb a:not(:hover) svg path,li.crumb a:not(:hover) svg text,li.crumb button:not(:hover) svg rect,li.crumb button:not(:hover) svg circle,li.crumb button:not(:hover) svg ellipse,li.crumb button:not(:hover) svg line,li.crumb button:not(:hover) svg polyline,li.crumb button:not(:hover) svg polygon,li.crumb button:not(:hover) svg path,li.crumb button:not(:hover) svg text{fill:var(--text-color);stroke-width:0}li.crumb a:hover,li.crumb button:hover{text-decoration:none}li.crumb a{position:relative}li.crumb button{cursor:pointer}li.breadcrumb-toggle-wrapper::after{content:none}#account-menu ul li a{max-width:calc(100% + 28px) !important}#announcements-btn{width:1.875rem;height:1.875rem;padding-left:0;padding-right:0;width:calc(1.75rem + 10px);position:relative}#announcements-btn:not(:hover):not(:active):not(.active){background-color:rgba(0,0,0,0)}#announcements-btn:not(:active):not(.active):hover{background-color:rgba(154,165,177,.15)}#announcements-btn.unread:after{content:\"\";display:block;position:absolute;top:.1875rem;width:.4375rem;height:.4375rem;border-radius:50%;background-color:var(--blue-600)}body.ltr #announcements-btn.unread:after{right:5px}body.rtl #announcements-btn.unread:after{left:5px}#announcements-btn svg{width:1rem;height:1rem}#announcements-btn svg rect,#announcements-btn svg circle,#announcements-btn svg ellipse,#announcements-btn svg line,#announcements-btn svg polyline,#announcements-btn svg polygon,#announcements-btn svg path,#announcements-btn svg text{fill:var(--ui-control-color);stroke-width:0}#announcements-btn:hover svg rect,#announcements-btn:hover svg circle,#announcements-btn:hover svg ellipse,#announcements-btn:hover svg line,#announcements-btn:hover svg polyline,#announcements-btn:hover svg polygon,#announcements-btn:hover svg path,#announcements-btn:hover svg text,#announcements-btn:active svg rect,#announcements-btn:active svg circle,#announcements-btn:active svg ellipse,#announcements-btn:active svg line,#announcements-btn:active svg polyline,#announcements-btn:active svg polygon,#announcements-btn:active svg path,#announcements-btn:active svg text,#announcements-btn.active svg rect,#announcements-btn.active svg circle,#announcements-btn.active svg ellipse,#announcements-btn.active svg line,#announcements-btn.active svg polyline,#announcements-btn.active svg polygon,#announcements-btn.active svg path,#announcements-btn.active svg text{fill:var(--ui-control-active-color);stroke-width:0}#announcements{max-width:350px}#announcements .announcement:not(:first-child){margin-top:20px}#announcements .announcement .announcement-label-container{margin-top:-3px;display:flex;align-items:center;margin-bottom:3px}#announcements .announcement .announcement-label-container .announcement-icon svg{display:block;width:15px;height:15px}#announcements .announcement .announcement-label-container .announcement-label{margin-left:5px;font-size:12px;color:var(--light-text-color)}#announcements .announcement.unread .announcement__heading:after{content:\"\";display:block;position:absolute;top:7px;width:7px;height:7px;border-radius:4px;background-color:var(--blue-600)}body.ltr #announcements .announcement.unread .announcement__heading:after{left:-13px}body.rtl #announcements .announcement.unread .announcement__heading:after{right:-13px}#announcements .announcement p{margin:0}#announcements .announcement__header{display:grid}#announcements .announcement__heading{position:relative;margin:0 0 3px;order:1}#user-info{display:flex;flex-direction:row;align-items:center;padding-top:5px;padding-bottom:5px;height:100%;background-color:rgba(0,0,0,0);border-radius:0}body.ltr #user-info{padding-left:var(--s)}body.rtl #user-info{padding-right:var(--s)}body.ltr #user-info{padding-right:calc(var(--padding) + 1px)}body.rtl #user-info{padding-left:calc(var(--padding) + 1px)}#user-info:after{border-color:var(--ui-control-color);transition:border-color linear 100ms}#user-info:hover:after{border-color:var(--ui-control-hover-color)}#user-info[aria-expanded=true]:after{border-color:var(--ui-control-active-color)}.header-photo img,.header-photo svg{display:block;width:1.875rem;height:1.875rem;max-width:none;border-radius:50%;box-shadow:0 0 0 1px rgba(31,41,51,.05),0 0 0 rgba(31,41,51,0);transition:box-shadow linear 150ms}#user-info:hover .header-photo img,#user-info:hover .header-photo svg{box-shadow:0 0 0 1px rgba(31,41,51,.05),0 2px 10px -2px rgba(31,41,51,.3)}#main-container{position:relative;flex-grow:1}#notifications{position:fixed;bottom:8px;width:calc(100% - 16px);z-index:101}body.ltr #notifications{left:8px}body.rtl #notifications{right:8px}body.has-debug-toolbar #notifications{bottom:50px}@media only screen and (min-width: 60.875rem){#notifications{width:350px}}#notifications .notification{display:flex;position:relative;background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding:10px 14px;border-radius:var(--large-border-radius);box-shadow:0 0 0 1px rgba(19,26,32,.15),0 2px 12px rgba(19,26,32,.15);--color: var(--notice-color)}#notifications .notification:focus{box-shadow:var(--focus-ring)}#notifications .notification[data-type=success]{--color: var(--success-color)}#notifications .notification[data-type=error]{--color: var(--error-color)}#notifications .notification+.notification{margin-top:12px}#notifications .notification .notification-icon{width:18px;margin-top:-2px;font-size:18px;color:var(--color)}body.ltr #notifications .notification .notification-icon{margin-right:10px}body.rtl #notifications .notification .notification-icon{margin-left:10px}#notifications .notification .notification-main{overflow:hidden}#notifications .notification .notification-body{display:grid;grid-template-columns:20px 1fr;gap:var(--s);width:100%}#notifications .notification .notification-body .notification-message{font-weight:bold;word-break:normal;overflow-wrap:anywhere}#notifications .notification .notification-body .notification-details{margin-top:var(--xs)}#notifications .notification .notification-body .notification-details .chip{border:1px solid rgba(51,64,77,.1)}#notifications .notification .notification-close-btn{position:relative;top:-2px}body.ltr #notifications .notification .notification-close-btn{margin-left:10px}body.rtl #notifications .notification .notification-close-btn{margin-right:10px}#header-container{margin-bottom:var(--m)}@media only screen and (min-width: 75rem){#primary-nav-toggle{display:none}body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.ltr #crumbs.empty+.context-menu-container{margin-left:var(--padding)}body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.rtl #crumbs.empty+.context-menu-container{margin-right:var(--padding)}body.ltr #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.ltr #crumbs.empty+.context-menu-container{padding-left:0}body.rtl #crumbs:not(.empty) #primary-nav-toggle+nav ul li:first-child,body.rtl #crumbs.empty+.context-menu-container{padding-right:0}}#global-header .flex,#header .flex{max-width:100%}#global-header .flex.flex-nowrap,#header .flex.flex-nowrap{min-width:0}#header{display:flex;align-items:flex-start;align-content:stretch;flex-wrap:nowrap;justify-content:space-between;gap:var(--s);padding:5px var(--padding);position:relative;z-index:2;box-sizing:border-box;background-color:rgba(154,165,177,0);box-shadow:0 1px 0 rgba(51,64,77,0);transition:background-color linear 100ms,box-shadow linear 100ms}body.fixed-header #header{position:fixed;z-index:12;top:0;background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.1)}@supports(backdrop-filter: blur(10px)){#header{transition:background-color linear 100ms,box-shadow linear 100ms,backdrop-filter linear 100ms}body.fixed-header #header{background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}}#header h1{line-height:34px;margin-top:0;margin-bottom:0;min-width:0}#header .buttons,#header .btngroup{margin-top:0}@media only screen and (min-width: 60.875rem){#page-title.has-toolbar{min-width:calc(14.125rem - var(--xl) - var(--s)) !important}}#toolbar{flex:1;align-items:flex-start;justify-content:space-between}#toolbar .icon:before,#toolbar .texticon:before,#toolbar .menubtn:after,#toolbar [data-icon]:before,#toolbar [data-icon-after]:after{color:currentColor;opacity:.8}#toolbar .text{border-radius:var(--large-border-radius)}#toolbar .text::-webkit-input-placeholder{color:var(--light-text-color)}#toolbar .text:-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text::-ms-input-placeholder{color:var(--light-text-color)}#toolbar .text:-moz-placeholder{color:var(--light-text-color)}#toolbar .text::-moz-placeholder{color:var(--light-text-color)}#toolbar .text::placeholder{color:var(--light-text-color)}#toolbar .text:not(:focus){background-clip:border-box}@media only screen and (max-width: 400px){#action-buttons .btngroup .btn:first-child{flex-basis:100%}}@media only screen and (max-width: 60.8125rem){#action-buttons{flex-direction:row-reverse;justify-content:start;margin-top:10px}}#main-content{display:flex;flex-direction:row;align-items:flex-start;padding:0 var(--padding) 48px;box-sizing:border-box}#main-content>.grid:only-child{flex:1}#sidebar-toggle-container{display:none}#sidebar-container{flex:0 0 14.125rem;width:14.125rem;box-sizing:border-box}@media only screen and (min-width: 75rem){body.ltr #sidebar-container{margin-left:calc(var(--xl)*-1)}body.rtl #sidebar-container{margin-right:calc(var(--xl)*-1)}}#sidebar{position:relative;box-sizing:border-box;padding:0 40px var(--m);width:14.125rem;background-color:rgba(0,0,0,0)}#sidebar.fixed{position:fixed}#sidebar nav{margin-left:-31px;margin-right:-31px}#sidebar nav li a{position:relative}#sidebar nav li a:focus{z-index:1}#sidebar nav li a:not(.sel):hover{background-color:var(--gray-200)}#sidebar .skip-link{margin:0 var(--s)}@media only screen and (min-width: 75rem){#sidebar{padding:0 31px var(--m)}}#content-container{flex:1 1 auto;width:400px}.content-pane{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);border-radius:var(--large-border-radius);position:relative;background-clip:padding-box;padding:var(--xl) var(--padding);word-wrap:break-word}.content-pane:focus{box-shadow:var(--focus-ring)}.content-pane>hr{margin-left:calc(var(--xl)*-1);margin-right:calc(var(--xl)*-1)}#footer,.footer{padding:6px var(--pane-padding, var(--xl));min-height:44px;line-height:2rem}#footer .buttons,.footer .buttons{height:32px;display:flex;align-items:center}#footer .btn,.footer .btn{padding-top:4px;padding-bottom:4px;height:var(--ui-control-height--small)}#footer{position:sticky;bottom:0;z-index:1;margin:calc(var(--s) + 1px) calc(var(--padding)*-1 + 2px) calc(var(--xl)*-1 + 2px);background-color:var(--gray-050);border-radius:var(--small-border-radius);box-sizing:border-box;border-top:2px solid var(--white)}#footer:empty{display:none}#footer.stuck{border-radius:0}@supports(backdrop-filter: blur(10px)){#footer.stuck{background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}}.has-debug-toolbar #footer{transition:padding linear 100ms}.has-debug-toolbar #footer.stuck{padding-bottom:52px}#footer>*,#footer .flex>*{margin-bottom:0}#details-container[data-state=collapsed]{display:none}#details-container{display:block;flex:0 1 auto;width:calc(var(--details-width) + var(--m))}body.ltr #details-container{padding-left:var(--m)}body.rtl #details-container{padding-right:var(--m)}#details{display:none}#details{display:block;width:350px;z-index:1}#details.fixed{position:fixed}#details .details{padding-bottom:calc(var(--xl) + 11.5em)}#details .details .meta{border-radius:var(--large-border-radius)}#details .details .meta:not(.read-only):not(.warning){background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details .meta:not(.read-only):not(.warning):focus{box-shadow:var(--focus-ring)}#details .details .meta.read-only{color:var(--medium-text-color);background-color:rgba(0,0,0,0) !important}#details .details .meta>.field:first-child,#details .details .meta>.data:first-child{border-top-right-radius:var(--large-border-radius)}#details .details .meta>.field:first-child,#details .details .meta>.field:first-child>.status-badge,#details .details .meta>.data:first-child,#details .details .meta>.data:first-child>.status-badge{border-top-left-radius:var(--large-border-radius)}#details .details .meta>.field:last-child,#details .details .meta>.data:last-child{border-bottom-right-radius:var(--large-border-radius)}#details .details .meta>.field:last-child,#details .details .meta>.field:last-child>.status-badge,#details .details .meta>.data:last-child,#details .details .meta>.data:last-child>.status-badge{border-bottom-left-radius:var(--large-border-radius)}#details .details>.field>.input>.text.fullwidth{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5)}#details .details>.field>.input>.text.fullwidth:focus{box-shadow:var(--focus-ring)}#details .details .notes{border-radius:var(--large-border-radius);padding-top:var(--m);padding-bottom:var(--m)}@media only screen and (max-width: 74.9375rem){#global-container{width:calc(100vw + 14.125rem)}body.ltr #global-container{left:-14.125rem}body.rtl #global-container{right:-14.125rem}body.ltr.showing-nav #global-container{left:0}body.rtl.showing-nav #global-container{right:0}#crumbs{display:flex !important}#header{width:100vw}#main-content{width:100vw}#main-content.has-sidebar{padding-left:0}}@media only screen and (max-width: 60.8125rem){#header{display:flex;flex-wrap:wrap}#header .flex:not(#toolbar){margin-top:10px}#toolbar{flex-wrap:wrap !important;order:3;width:100%;flex:auto}#toolbar>*{margin-top:10px !important}#action-buttons{order:2}body.fixed-header #header .flex:first-child{margin-top:0}#main-content{display:block}#main-content.has-sidebar{padding:0 var(--padding) 48px}#sidebar nav{margin-left:-40px;margin-right:-40px}#sidebar .skip-link{margin:0}#source-actions{margin-top:var(--s);margin-left:-9px}#sidebar-toggle-container{display:block;margin-bottom:var(--s)}#sidebar-toggle:after{top:0;transform:rotate(45deg)}body.rtl #sidebar-toggle:after{transform:rotate(135deg)}#content-container{min-height:0 !important}#sidebar-container,#details-container{width:auto !important;padding-left:0 !important;display:block}#details-toggle{display:none}#sidebar,#details{position:relative !important;overflow-y:visible !important;max-height:none !important;width:auto}#sidebar{margin-bottom:var(--m)}body.showing-sidebar #sidebar{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);padding-block:.5rem;border-radius:var(--large-border-radius)}body.showing-sidebar #sidebar:focus{box-shadow:var(--focus-ring)}body:not(.showing-sidebar) #sidebar{display:none}body.ltr #details-container{margin-right:0}body.rtl #details-container{margin-left:0}#content-container{width:auto !important;max-width:none !important}#details{padding:0 !important;margin-top:var(--m)}#details .details{margin-bottom:auto}}@media only screen and (max-width: 767px){:root{--padding: var(--s);--neg-padding: calc(var(--s) * -1)}#tabs ul li a{padding-left:var(--m);padding-right:var(--m)}body.ltr #tabs ul li+li{margin-left:-7px}body.rtl #tabs ul li+li{margin-right:-7px}.card-grid{display:flex !important;flex-direction:column}}body.ltr #settingsmenu ul li a{padding-left:46px}body.rtl #settingsmenu ul li a{padding-right:46px}#settingsmenu ul li a:before{font-size:15px}body.ltr #settingsmenu ul li a:before{margin:1px 0 0 -22px}body.rtl #settingsmenu ul li a:before{margin:1px -22px 0 0}#settingsmenu ul li a img{width:16px;height:16px;position:absolute;margin-left:-23px;margin-top:1px}.grid{position:relative;min-height:1px}.grid:after{content:\"\";display:block;height:0;clear:both;visibility:hidden}.grid>.item{display:none;box-sizing:border-box}.sidebar{width:14.125rem;box-sizing:border-box;font-size:13px}.sidebar:not(.drag-helper){padding:var(--m) 0;background-color:var(--gray-050)}.sidebar .heading{position:relative;margin:0 var(--xl)}.sidebar .heading:not(:first-child){margin-top:var(--m)}.sidebar .heading>span{display:inline-block;position:relative;z-index:1;padding:0 5px;margin:0 -5px;text-transform:uppercase;color:var(--medium-text-color);font-size:11px;font-weight:bold}.sidebar .heading>ul{margin:2px calc(var(--xl)*-1)}.sidebar nav{padding:0 var(--s)}body.ltr .sidebar nav>ul>li:not(.heading)>a,body.ltr .sidebar nav>ul>li.heading>ul>li>a{padding-left:24px}body.rtl .sidebar nav>ul>li:not(.heading)>a,body.rtl .sidebar nav>ul>li.heading>ul>li>a{padding-right:24px}body.ltr .sidebar nav>ul>li:not(.heading)>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>.toggle{left:calc(var(--m)*0)}body.rtl .sidebar nav>ul>li:not(.heading)>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>.toggle{right:calc(var(--m)*0)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a{padding-left:38px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>a{padding-right:38px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle{left:calc(var(--m)*1)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>.toggle{right:calc(var(--m)*1)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a{padding-left:52px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>a{padding-right:52px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*2)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*2)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:66px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:66px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*3)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*3)}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-left:80px}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>a{padding-right:80px}body.ltr .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.ltr .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{left:calc(var(--m)*4)}body.rtl .sidebar nav>ul>li:not(.heading)>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle,body.rtl .sidebar nav>ul>li.heading>ul>li>ul.nested>li>ul.nested>li>ul.nested>li>ul.nested>li>.toggle{right:calc(var(--m)*4)}.sidebar nav li{position:relative}.sidebar nav li:not(.has-subnav)>a:not(.sel):hover{text-decoration:none}.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.active-drop-target{cursor:default;background-color:var(--gray-500)}.sidebar nav li:not(.has-subnav)>a.sel,.sidebar nav li:not(.has-subnav)>a.sel+.toggle,.sidebar nav li:not(.has-subnav)>a.active-drop-target,.sidebar nav li:not(.has-subnav)>a.active-drop-target+.toggle{color:var(--white)}.sidebar nav li:not(.has-subnav)>a.sel{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.sidebar nav li a{position:relative;margin-bottom:1px;display:flex;flex-direction:row;align-items:center;padding:7px var(--xl);min-height:var(--xl);box-sizing:border-box;color:var(--text-color);cursor:pointer;user-select:none;border-radius:var(--large-border-radius);word-break:break-word}.sidebar nav li a .status{flex-shrink:1}.sidebar nav li a .icon{position:relative;top:1px;flex-shrink:1;width:1.125rem;height:1.125rem;word-break:normal;transition:margin-left linear 150ms,margin-right linear 150ms;opacity:.85}body.ltr .sidebar nav li a .icon{margin-right:10px}body.rtl .sidebar nav li a .icon{margin-left:10px}.sidebar nav li a .icon.icon-mask svg rect,.sidebar nav li a .icon.icon-mask svg circle,.sidebar nav li a .icon.icon-mask svg ellipse,.sidebar nav li a .icon.icon-mask svg line,.sidebar nav li a .icon.icon-mask svg polyline,.sidebar nav li a .icon.icon-mask svg polygon,.sidebar nav li a .icon.icon-mask svg path,.sidebar nav li a .icon.icon-mask svg text{fill:currentColor;stroke-width:0}.sidebar nav li a .icon.icon-mask span[data-icon]{color:currentColor}.sidebar nav li a .icon svg{width:1rem;height:1rem}.sidebar nav li a .icon span[data-icon]{font-size:16px}.sidebar nav li a .icon span[data-icon]::before{display:block}.sidebar nav li a .label{flex:1}.sidebar nav li a .badge{flex-shrink:1;padding:0 6px;font-size:.6875rem;line-height:16px;border-radius:var(--s);background-color:var(--medium-text-color);color:var(--white)}body.ltr .sidebar nav li a .badge{margin:0 -4px 0 10px}body.rtl .sidebar nav li a .badge{margin:0 10px 0 -4px}.sidebar nav li .toggle{position:absolute;z-index:1;height:34px;top:0;width:var(--xl);display:flex;align-items:center;justify-content:center}.sidebar nav li ul{display:none}.sidebar nav li.heading>ul,.sidebar nav li.expanded>ul{display:block}.error-summary{background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);margin-bottom:var(--l);padding:var(--l) var(--xl);border-radius:var(--large-border-radius);background-color:var(--gray-050)}.error-summary:focus{box-shadow:var(--focus-ring)}.error-summary .notification-icon{color:var(--error-color);margin:-2px 6px 0 0;float:left}.error-summary h2{margin-top:0}.error-summary>ul.errors li,.error-summary>ul.errors li a{color:var(--text-color)}.error-summary>ul.errors li em,.error-summary>ul.errors li a em{font-weight:600}.error-summary>ul.errors li:hover,.error-summary>ul.errors li a:hover{color:var(--link-color)}.slideout .error-summary{border:1px solid var(--error-color);box-shadow:none;background-color:rgba(var(--error-color-rgb), 0.03);padding:var(--m)}.slideout .flex-fields .error-summary{margin:0 var(--row-gap) var(--row-gap)}body.ltr .content.has-sidebar:not(.hiding-sidebar){margin-left:14.125rem}body.rtl .content.has-sidebar:not(.hiding-sidebar){margin-right:14.125rem}#content-notice{margin:0 calc(var(--xl)*-1);padding:0 var(--xl)}#content-notice:not(:last-child){padding-bottom:5px;border-bottom:1px solid var(--hairline-color);margin-bottom:5px}#content :not(.meta)>.flex-fields,#content>.flex-fields,.so-content .flex-fields,.draghelper .flex-fields{--row-gap: var(--xl);display:flex;flex-wrap:wrap;align-content:flex-start;margin:0 calc(var(--row-gap)*-1) calc(var(--row-gap)*-1);width:calc(100% + var(--row-gap)*2)}#content :not(.meta)>.flex-fields>:not(.error-summary),#content>.flex-fields>:not(.error-summary),.so-content .flex-fields>:not(.error-summary),.draghelper .flex-fields>:not(.error-summary){margin:0 0 var(--row-gap) !important;padding:0 var(--row-gap);box-sizing:border-box}#content :not(.meta)>.flex-fields>h2,#content>.flex-fields>h2,.so-content .flex-fields>h2,.draghelper .flex-fields>h2{flex:4 0 100%}#content :not(.meta)>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),#content>.flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.so-content .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))),.draghelper .flex-fields>h2:not(:nth-child(-n+1 of :not(.hidden))){padding-top:var(--xl);border-top:1px solid var(--hairline-color)}#content :not(.meta)>.flex-fields>hr,#content :not(.meta)>.flex-fields>.line-break,#content>.flex-fields>hr,#content>.flex-fields>.line-break,.so-content .flex-fields>hr,.so-content .flex-fields>.line-break,.draghelper .flex-fields>hr,.draghelper .flex-fields>.line-break{flex:4 0 100%}#content :not(.meta)>.flex-fields>.line-break:not(:first-child),#content>.flex-fields>.line-break:not(:first-child),.so-content .flex-fields>.line-break:not(:first-child),.draghelper .flex-fields>.line-break:not(:first-child){margin-bottom:0 !important}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break),#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,#content>.flex-fields>:not(h2):not(hr):not(.line-break),#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child,.so-content .flex-fields>:not(h2):not(hr):not(.line-break),.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break),.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child{position:relative;width:100%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):before,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,.draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{position:absolute;top:0;width:1px;height:100%;content:\"\";background-color:rgba(205,216,228,.5)}body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.ltr .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{left:-1px}body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl #content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):before,body.rtl .draghelper .flex-fields>:not(h2):not(hr):not(.line-break):last-child:before{right:-1px}@media only screen and (min-width: 96rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25{width:25%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-75,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-75,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-75{width:75%}}@media only screen and (min-width: 37.5rem)and (max-width: 95.9375rem){#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content :not(.meta)>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break).width-50,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,#content>.flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}@media only screen and (min-width: 75rem){.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.so-content .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break).width-50,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-25,.draghelper.drag-in-slideout .flex-fields>:not(h2):not(hr):not(.line-break):last-child.width-50{width:50%}}.global-sidebar{--is-always-visible: true;--prefix-width: calc(30rem / 16);--prefix-ratio: 1;--gutter-width: calc(10rem / 16);position:sticky;top:0;z-index:100;display:grid;grid-template-columns:var(--global-sidebar-width);grid-template-rows:var(--header-height) minmax(0, 1fr) auto;grid-auto-flow:row;height:100vh;padding:0;-webkit-overflow-scrolling:touch;background-color:var(--gray-150);border-inline-end:1px solid var(--hairline-color);width:var(--global-sidebar-width)}.global-sidebar a{text-decoration:none}.global-sidebar>a:not([href]),.global-sidebar *:not(.has-subnav)>a:not([href]){cursor:default;background-color:rgba(0,0,0,0)}@media only screen and (max-width: 74.9375rem){.global-sidebar{--is-always-visible: false}}.global-sidebar__nav{padding:var(--s) 0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior:contain}.global-sidebar__footer{margin-block-start:auto;border-block-start:1px solid var(--hairline-color)}.global-nav>ul{display:flex;flex-direction:column;gap:var(--s)}.global-nav>ul>li{position:relative}.nav-icon{display:inline-flex;flex-direction:column;justify-content:center;align-items:center;width:1rem;aspect-ratio:1;line-height:0;--thumb-size: 1rem}.nav-icon>svg{width:100%;height:100%}.nav-icon>svg rect,.nav-icon>svg circle,.nav-icon>svg ellipse,.nav-icon>svg line,.nav-icon>svg polyline,.nav-icon>svg polygon,.nav-icon>svg path,.nav-icon>svg text{fill:currentColor;stroke-width:0}.nav-item{--gutter-width: calc(10rem / 16);display:grid;grid-template-columns:var(--gutter-width) minmax(0, 1fr) var(--prefix-width) var(--gutter-width);grid-template-areas:\". action trigger .\" \"subnav subnav subnav subnav\";align-items:center;width:100%}.nav-item>.sidebar-action{grid-area:action}.nav-item__trigger{--icon-size: 10px;--trigger-size: var(--touch-target-size);grid-area:trigger;display:flex;z-index:1}.nav-item__trigger .menubtn{padding:0;flex-direction:column;justify-content:center;align-items:center;width:var(--trigger-size);height:var(--trigger-size);border:rgba(0,0,0,0)}.nav-item__trigger .menubtn:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--white);background-color:var(--medium-text-color)}.nav-item__trigger .menubtn[aria-expanded=true]:not(:hover){background-color:rgba(0,0,0,0)}.nav-item__trigger .menubtn[aria-expanded=true]:after{display:block;content:\"\";font-size:0;width:.4375rem;height:.4375rem;border:solid currentColor;border-width:0 .125rem .125rem 0;opacity:.8;position:relative;transform:rotate(225deg);top:2px}.nav-item__trigger .menubtn:after{margin-inline-start:0 !important}.nav-item__subnav{--prefix-ratio: 4/3;display:none;grid-area:subnav}.nav-item__subnav[data-state=expanded]{display:block}.badge{display:inline-flex;justify-content:center;text-align:center;font-size:11px;line-height:1rem;min-width:1.1rem;height:1rem;padding:0 var(--xs);border-radius:var(--s);background-color:var(--medium-text-color);color:var(--white)}.sidebar-actions{padding:10px var(--gutter-width)}.sidebar-action{--thumb-size: 0.75rem;display:grid;grid-template-columns:var(--prefix-width) minmax(0, 1fr) auto;width:100%;align-items:center;position:relative;text-align:left;border-radius:var(--medium-border-radius);color:currentColor;cursor:pointer;min-height:30px;padding-inline:var(--xs);font-weight:500}.sidebar-action:before{content:\"\";position:absolute;inset-inline-start:-0.625rem;inset-block-start:50%;height:80%;transform:translateY(-50%);width:var(--xs)}.sidebar-action:focus-visible,.sidebar-action:hover{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--white);background-color:var(--medium-text-color)}.sidebar-action.sel:before{--indicator-size: 6px;color:var(--white);background-color:var(--medium-text-color)}.sidebar-action--sub{--indicator-size: 4px;font-size:.9em;min-height:26px}.sidebar-action--sub:focus-visible:before,.sidebar-action--sub:hover:before{background-color:var(--white)}.sidebar-action--sub:before{width:var(--indicator-size);height:var(--indicator-size);border-radius:100%;top:50%;background-color:currentColor}body.ltr .sidebar-action--sub:before{left:calc(15px - var(--indicator-size)/2)}body.rtl .sidebar-action--sub:before{right:calc(15px - var(--indicator-size)/2)}.sidebar-action--job{grid-column:2/4 !important;align-items:flex-start}.sidebar-action--job .sidebar-action__label{flex-wrap:wrap;padding-block:var(--xs);gap:var(--xs)}.sidebar-action--job .label{white-space:normal}.sidebar-action--job .progress-label{width:100%;display:block;color:var(--gray-300);font-size:11px;line-height:1.5}.sidebar-action--job .nav-icon{display:block;position:relative;width:16px;height:16px}.sidebar-action--job .nav-icon>canvas{display:block;position:absolute;width:16px;height:16px}.sidebar-action--job #job-icon-hover{opacity:0}.sidebar-action--job:hover #job-icon-hover{opacity:1}.sidebar-action--job:hover #job-icon-static{opacity:0}.sidebar-action__prefix{display:flex;align-items:center;justify-content:center;width:var(--prefix-width);aspect-ratio:var(--prefix-ratio);line-height:0;flex-shrink:0}.sidebar-action__label{display:flex;gap:var(--s);align-items:center;padding:0 var(--xs);text-overflow:ellipsis;overflow:hidden;white-space:nowrap;margin-inline-start:7px}.sidebar-action__label [data-icon=external]{display:inline-flex}.sidebar-action__badge{flex:0 1 auto;display:flex;flex-direction:column;justify-content:center;padding:0 var(--s);margin-inline-start:auto}@media only screen and (min-width: 75rem){[data-sidebar=collapsed] .global-sidebar{--global-sidebar-width: calc(50rem / 16)}[data-sidebar=collapsed] .nav-item{grid-template-areas:\". action .\" \". trigger .\" \"subnav subnav subnav\";grid-template-columns:var(--gutter-width) var(--prefix-width) var(--gutter-width)}[data-sidebar=collapsed] .nav-item__indicator{right:-1px}[data-sidebar=collapsed] .sidebar-action{width:var(--prefix-width);padding-inline:0;min-height:var(--prefix-width)}[data-sidebar=collapsed] .sidebar-action:focus-visible .sidebar-action__label,[data-sidebar=collapsed] .sidebar-action:hover .sidebar-action__label{opacity:1;transform:translateY(-50%) translateX(0)}[data-sidebar=collapsed] .nav-item__trigger .menubtn{width:100%;height:var(--touch-target-size);padding-block:2px var(--xs)}[data-sidebar=collapsed] .sidebar-action__label{display:none;z-index:10;opacity:0}[data-sidebar=collapsed] .sidebar-action__badge{z-index:100;position:absolute;right:calc(var(--xs)*-1);bottom:var(--xs);transform:translateY(25%);padding:0}[data-sidebar=collapsed] .sidebar-action--sub{min-height:26px}[data-sidebar=collapsed] .sidebar-action--sub:before{inset-inline-start:50%;inset-block-start:50%;transform:translateX(-50%) translateY(-50%)}[data-sidebar=collapsed] .global-nav>ul>li+li{--separator-width: calc(28rem / 16)}[data-sidebar=collapsed] .global-nav>ul>li+li:before{position:absolute;inset-block-start:calc(var(--s)/-2);inset-inline-start:calc((var(--global-sidebar-width) - var(--separator-width))/2);content:\"\";width:var(--separator-width);height:1px;margin:0 auto;background-color:var(--hairline-color)}[data-sidebar=expanded] #sidebar-toggle-icon{transform:rotate(180deg)}}#sidebar-trigger{display:none}@media only screen and (min-width: 75rem){#sidebar-trigger{display:flex}}craft-tooltip{position:fixed;white-space:normal;opacity:0;transform:translateY(-4px);width:max-content;max-width:240px;transition:opacity 100ms ease-in-out,transform 150ms ease-in-out;top:0;left:0;z-index:99}craft-tooltip>.inner{position:relative;display:inline-block;background-color:var(--white);color:var(--gray-700);border:1px solid var(--dark-hairline-color);box-shadow:0 0 10px rgba(0,0,0,.2);border-radius:var(--medium-border-radius);padding:var(--xs) var(--s);pointer-events:none;user-select:none;font-weight:400}craft-tooltip .arrow{position:absolute;background:var(--white);width:8px;height:8px;transform:rotate(45deg);border-style:solid;border-width:1px;border-color:rgba(0,0,0,0)}craft-tooltip .arrow[data-placement^=bottom]{border-inline-color:var(--dark-hairline-color) rgba(0,0,0,0);border-block-color:var(--dark-hairline-color) rgba(0,0,0,0)}craft-tooltip .arrow[data-placement^=top]{border-inline-color:rgba(0,0,0,0) var(--dark-hairline-color);border-block-color:rgba(0,0,0,0) var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=right]{border-inline-color:var(--dark-hairline-color) rgba(0,0,0,0);border-block-color:rgba(0,0,0,0) var(--dark-hairline-color)}craft-tooltip .arrow[data-placement^=left]{border-inline-color:rgba(0,0,0,0) var(--dark-hairline-color);border-block-color:var(--dark-hairline-color) rgba(0,0,0,0)}.lp-editor-container,.lp-preview-container{position:fixed;top:0;height:100%;background-color:var(--white);z-index:100}.lp-editor-container>header,.lp-preview-container>header{padding:5px 24px;background-color:var(--gray-100);box-shadow:0 1px 0 rgba(63,77,90,.2);box-sizing:border-box;position:relative;z-index:1}@supports(backdrop-filter: blur(10px)){.lp-editor-container>header,.lp-preview-container>header{position:absolute;z-index:2;top:0;left:0;width:100%;background-color:rgba(228,237,246,.75);backdrop-filter:blur(10px)}.lp-editor-container>header+.lp-editor,.lp-preview-container>header+.lp-editor{padding-top:68px}}.lp-editor-container>header .btn,.lp-editor-container>header .spinner,.lp-editor-container>header .checkmark-icon,.lp-preview-container>header .btn,.lp-preview-container>header .spinner,.lp-preview-container>header .checkmark-icon{margin-bottom:0}.lp-editor-container{display:flex;flex-direction:column}.lp-editor-container .lp-editor{flex:1;padding:24px;overflow:auto;box-sizing:border-box}.lp-editor-container .lp-editor>.field:last-child{margin-bottom:24px !important}body.ltr .lp-editor-container .lp-editor>.field>.status-badge{left:-24px}body.rtl .lp-editor-container .lp-editor>.field>.status-badge{right:-24px}body.ltr .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{left:calc(var(--m)*-1)}body.rtl .lp-editor-container .lp-editor .matrixblock>.fields>.flex-fields>.field>.status-badge{right:calc(var(--m)*-1)}.lp-editor-container .lp-draghandle{position:absolute;z-index:101;top:0;width:4px;height:100%;cursor:col-resize}body.ltr .lp-editor-container .lp-draghandle{right:-2px}body.rtl .lp-editor-container .lp-draghandle{left:-2px}.lp-preview-container{display:flex;flex-direction:column;box-shadow:-1px 0 0 rgba(63,77,90,.2)}.lp-preview-container.dragging:after{position:absolute;top:0;left:0;width:100%;height:100%;content:\"\";font-size:0}.lp-preview-container .lp-preview-header{display:flex}@supports not (backdrop-filter: blur(10px)){.lp-preview-container .lp-preview-header{background-color:rgba(228,237,246,.75)}}.lp-preview-container .lp-preview-header .buttons{margin:0}body.ltr .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-left:7px}body.rtl .lp-preview-container .lp-preview-header .buttons .btn+.btn{margin-right:7px}.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:0}@supports(backdrop-filter: blur(10px)){.lp-preview-container .lp-preview-header+.lp-iframe-container{padding-top:44px}}.lp-preview-container .lp-preview-header .lp-device-type .btn::before{width:27px;height:22px;display:block;content:\"\";background-size:contain;background-repeat:no-repeat;background-position:center;transition-duration:.3s}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--phone::before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--tablet::before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-preview-header .lp-device-type .btn.lp-device-type-btn--desktop::before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-device-type__label::before{width:27px;height:22px;display:block;content:\"\";background-size:contain;background-repeat:no-repeat;background-position:center;transition-duration:.3s}.lp-preview-container .lp-device-type__label.lp-device-type__label--phone::before{background-image:url(../images/preview/icon-phone.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--tablet::before{background-image:url(../images/preview/icon-tablet.svg)}.lp-preview-container .lp-device-type__label.lp-device-type__label--desktop::before{background-image:url(../images/preview/icon-desktop.svg)}.lp-preview-container .lp-preview-container__bumper-link{top:unset;bottom:0}.lp-preview-container .lp-device-mask{display:none}.lp-preview-container .lp-iframe-container{flex:1;overflow:auto}.lp-preview-container .lp-iframe-container .lp-preview{display:block;width:100%;min-height:100%}.lp-preview-container .lp-iframe-container:not(.lp-iframe-container--has-device-preview) .lp-device-preview-container{width:auto !important;height:100% !important;transform:none !important;margin:0 !important}.lp-preview-container .lp-iframe-container--has-device-preview{flex:none;padding-top:0 !important;position:relative;top:0;height:calc(100% - 44px);width:100%;background-color:var(--gray-100)}@supports(backdrop-filter: blur(10px)){.lp-preview-container .lp-iframe-container--has-device-preview{top:44px}}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-preview-container{position:absolute;top:50%;left:50%;z-index:2;overflow:auto;opacity:1;transition:opacity .3s}.lp-preview-container .lp-iframe-container--has-device-preview .lp-device-mask{display:block;position:absolute;top:50%;left:50%;z-index:1;background-image:url(../images/preview/chrome-phone-top.svg),url(../images/preview/chrome-phone-bottom.svg);background-position:top center,bottom center;background-repeat:no-repeat;background-size:contain;background-color:#fff;box-shadow:0 0 58px rgba(6,67,117,.3);border-radius:18px}.lp-preview-container .lp-iframe-container--has-device-preview.lp-iframe-container--tablet .lp-device-mask{background-image:url(../images/preview/chrome-tablet-top.svg),url(../images/preview/chrome-tablet-bottom.svg)}@media screen and (prefers-reduced-motion: no-preference){.lp-preview-container .lp-iframe-container--rotating .lp-device-mask{transition-duration:.3s;transition-property:transform}.lp-preview-container .lp-iframe-container--rotating .lp-device-preview-container{opacity:0;transition:opacity 0s}}.login-container .login-form-container{background-color:var(--gray-050)}.login-container .login-form input[readonly]{cursor:not-allowed}.login-container .login-form>.field,.login-container .login-form>.btn{margin-top:var(--l)}.login-container .login-form>.field:not(:last-child):not(.last),.login-container .login-form>.btn:not(:last-child):not(.last){margin-bottom:var(--l)}.login-container .login-form .btn{display:flex}.login-container .alternative-login-methods{margin-top:var(--m)}.login-container .alternative-login-methods .btn{width:100%}.login-container .login-forgot-password,.login-container .login-alt-container button{font-size:11px;color:var(--medium-text-color);cursor:pointer !important}.login-container .login-alt-container{margin:calc(var(--s) - var(--xl)) 0}.login-container .login-alt-container button{display:inline-flex;background-color:rgba(0,0,0,0);padding:0;width:auto;height:auto;min-height:var(--touch-target-size)}.login-container .login-forgot-password:hover,.login-container .login-forgot-password:focus,.login-container .login-alt-container button:hover,.login-container .login-alt-container button:focus{color:var(--link-color)}.login-container .login-errors{text-align:center;color:var(--error-color);margin-top:1em}.login-alt-menu{z-index:1001}body.login{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%}body.login main{padding:var(--padding);width:calc(300px + var(--padding)*2);max-width:100%}body.login main h1{text-align:center;font-size:32px;line-height:40px;word-wrap:break-word}body.login main h1 #login-logo{width:100%;height:auto;max-height:300px}body.login #poweredby{display:block;text-align:center;margin-top:70px;margin-bottom:48px;opacity:.8}body.login #poweredby:hover,body.login #poweredby:focus,body.login #poweredby:active{opacity:1}body.login #poweredby>svg{display:inline-block}.modal.email-sent{width:300px}body.ltr .modal.email-sent .body{padding-left:68px}body.rtl .modal.email-sent .body{padding-right:68px}.modal.email-sent .body:before{font-family:\"Craft\";speak:never;-webkit-font-feature-settings:\"liga\",\"dlig\";-moz-font-feature-settings:\"liga=1, dlig=1\";-moz-font-feature-settings:\"liga\",\"dlig\";-ms-font-feature-settings:\"liga\",\"dlig\";-o-font-feature-settings:\"liga\",\"dlig\";font-feature-settings:\"liga\",\"dlig\";text-rendering:optimizeLegibility;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;text-align:center;font-style:normal;vertical-align:middle;word-wrap:normal !important;user-select:none;display:block;position:absolute;top:24px;content:\"mail\";font-size:30px;color:var(--link-color)}body.ltr .modal.email-sent .body:before{left:24px}body.rtl .modal.email-sent .body:before{right:24px}.login-modal{width:calc(600px + var(--l)*2);max-width:calc(100% - 20px);background:var(--gray-100);border-radius:var(--large-border-radius)}.login-modal .body{display:flex;flex-direction:row;padding:var(--l)}.login-modal .body .login-modal-intro,.login-modal .body .login-modal-form{width:300px;max-width:100%}.login-modal .body .login-modal-intro{padding:var(--m)}@media screen and (max-width: 656px){.login-modal{border-radius:var(--large-border-radius)}.login-modal .body{padding:var(--m);flex-direction:column;gap:var(--m);overflow:auto}.login-modal .body .login-modal-intro{padding:var(--xs) var(--xl)}.login-modal .body .login-modal-form{border-radius:0}}.layoutdesigner{container-type:inline-size}.fld-container{display:flex;align-items:stretch;position:relative;border-radius:3px;border:1px solid rgba(96,125,159,.25);background-color:#fbfcfe;background-clip:padding-box;overflow:hidden;box-shadow:none;min-height:500px}body.ltr .fld-container{padding-right:265px}body.rtl .fld-container{padding-left:265px}.errors>.fld-container{border:1px solid var(--error-color) !important}.fld-container .fld-workspace{flex:1;background-color:var(--gray-050);background-image:linear-gradient(to right, var(--gray-100) 1px, transparent 0px),linear-gradient(to bottom, var(--gray-100) 1px, transparent 1px);background-size:24px 24px;background-position:-1px -1px;box-shadow:inset 0 1px 3px -1px #acbed2}body.ltr .fld-container .fld-workspace{border-radius:calc(var(--small-border-radius) - 1px) 0 0 calc(var(--small-border-radius-1px))}body.rtl .fld-container .fld-workspace{border-radius:0 calc(var(--small-border-radius) - 1px) calc(var(--small-border-radius-1px)) 0}body.ltr .fld-container .fld-workspace{padding:24px 0 24px 24px}body.rtl .fld-container .fld-workspace{padding:24px 24px 24px 0}.fld-container .fld-workspace .fld-tabs{display:flex;align-items:flex-start;flex-wrap:wrap}body.ltr .fld-container:not(:has(.fld-library)){padding-right:0}body.rtl .fld-container:not(:has(.fld-library)){padding-left:0}body.ltr .fld-container:not(:has(.fld-library)) .fld-workspace{padding-right:24px}body.rtl .fld-container:not(:has(.fld-library)) .fld-workspace{padding-left:24px}.fld-container .fld-library{position:absolute;top:0;height:100%;width:265px;padding:14px}body.ltr .fld-container .fld-library{right:0}body.rtl .fld-container .fld-library{left:0}.fld-new-tab-btn:active{background-color:var(--gray-050)}.fld-library-menu{width:264px;padding:14px}body.ltr .fld-library-menu{margin-left:-14px}body.rtl .fld-library-menu{margin-right:-14px}.fld-library{display:flex;flex-direction:column}.fld-library .btngroup{margin-bottom:14px}.fld-library .fld-field-library{margin:-3px;padding:3px;flex:1;min-height:0;overflow:auto}.fld-library .fld-field-library .fld-field-group{margin-top:14px}.fld-library .fld-field-library .fld-field-group>*:not(:first-child){margin-top:var(--s)}.fld-library .fld-ui-library>*:not(:first-child){margin-top:var(--s)}.fld-library .filtered{display:none}.layoutdesigner .fld-library,.fld-tab .tabs .tab,.fld-tab .fld-tabcontent,.fld-new-tab-btn,.fld-new-tab-btn:hover{background-color:var(--white);box-shadow:0 0 0 1px rgba(31,41,51,.1),0 2px 5px -2px rgba(31,41,51,.2)}.fld-tab .settings:before,.fld-element .settings:before{margin-top:-2px;font-size:16px;opacity:.5}.fld-tab .settings:hover:before,.fld-tab .settings.active:before,.fld-element .settings:hover:before,.fld-element .settings.active:before{opacity:1}.fld-tab{width:288px;box-sizing:border-box}body.ltr .fld-tab{padding:0 25px 24px 0}body.rtl .fld-tab{padding:0 0 24px 25px}.fld-tab .tabs{margin:-10px -12px 0;padding:10px 12px 0;overflow:hidden;display:flex}.fld-tab .tabs .tab{display:flex;align-items:center;gap:var(--xs);max-width:calc(100% - 10px);box-sizing:border-box;padding:8px 14px;border-radius:var(--medium-border-radius) var(--medium-border-radius) 0 0}body:not(.dragging) .fld-tab .tabs .tab.draggable{cursor:move;cursor:grab}.fld-tab .tabs .tab span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fld-tab .fld-tabcontent{padding:14px}body.ltr .fld-tab .fld-tabcontent{border-radius:0 var(--medium-border-radius) var(--medium-border-radius) var(--medium-border-radius)}body.rtl .fld-tab .fld-tabcontent{border-radius:var(--medium-border-radius) 0 var(--medium-border-radius) var(--medium-border-radius)}.fld-tab .fld-tabcontent>.fld-element:not(:first-child),.fld-tab .fld-tabcontent>.fld-add-btn:not(:first-child){margin-top:var(--s)}.fld-tab .fld-tabcontent .fld-add-btn:not([aria-expanded=true]){display:none}.fld-tab.fld-insertion .tabs .tab,.fld-tab.fld-insertion .fld-tabcontent{margin:-2px;border:2px dashed var(--hairline-color);box-shadow:none;background-color:var(--gray-050);background-image:linear-gradient(to right, var(--gray-100) 1px, transparent 0px),linear-gradient(to bottom, var(--gray-100) 1px, transparent 1px);background-size:24px 24px}.fld-tab.fld-insertion .tabs .tab{background-position:-1px -1px}.fld-tab.fld-insertion .fld-tabcontent{background-position:-1px -13px}.fld-tab-caboose{min-height:24px}.fld-element{position:relative;display:flex;align-items:center;padding:var(--s);gap:var(--s);box-shadow:inset 0 0 0 1px var(--hairline-color);border-radius:var(--medium-border-radius);background-color:var(--white)}body:not(.dragging) .fld-element{cursor:move;cursor:grab}.fld-element.fld-insertion{box-sizing:border-box;border:2px dashed var(--hairline-color);border-radius:var(--medium-border-radius);background:none;box-shadow:none}.fld-element.draghelper{box-shadow:0 1px 5px -1px rgba(31,41,51,.2)}.fld-element.fld-field{color:var(--medium-text-color);background-color:var(--gray-100)}.fld-element.fld-field:not(.draghelper){box-shadow:none}.fld-element.fld-field .field-name{display:flex;flex-direction:column;gap:var(--xs)}.fld-element .fld-element-icon{text-align:center}.fld-element .fld-element-icon,.fld-element .fld-element-icon svg{width:16px;height:16px}.fld-element .fld-element-icon svg rect,.fld-element .fld-element-icon svg circle,.fld-element .fld-element-icon svg ellipse,.fld-element .fld-element-icon svg line,.fld-element .fld-element-icon svg polyline,.fld-element .fld-element-icon svg polygon,.fld-element .fld-element-icon svg path,.fld-element .fld-element-icon svg text{fill:var(--ui-control-color);stroke-width:0}.fld-element .field-name{flex:1;overflow:hidden}.fld-element .field-name .fld-element-label,.fld-element .field-name .fld-attribute{flex:1;display:flex;align-items:center;gap:var(--xs)}.fld-element .field-name .fld-element-label h4,.fld-element .field-name .fld-attribute .smalltext{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fld-element .field-name .fld-element-label h4{font-weight:normal;color:var(--text-color);margin:0}.fld-hr,.fld-br{position:relative;flex:1;display:flex;justify-content:center}.fld-hr:before,.fld-br:before{position:absolute;display:block;top:calc(50% - 2px);left:0;width:100%;height:4px;content:\"\";font-size:0;border-radius:2px}.fld-hr .smalltext,.fld-br .smalltext{position:relative;display:flex;justify-content:center;align-items:center;background-color:var(--gray-100);border-radius:var(--large-border-radius);padding:0 var(--s);height:var(--touch-target-size)}.fld-hr:before{background-color:var(--gray-100)}.fld-br:before{background-image:repeating-linear-gradient(to right, var(--gray-100), var(--gray-100) 5.2631578947%, transparent 5.2631578947%, transparent 10.5263157895%, var(--gray-100) 10.5263157895%)}.fld-element-settings-body{flex:1;margin:-24px var(--neg-padding) 0;padding:24px var(--padding);overflow:hidden auto;position:relative}.fld-element-settings-footer{position:relative;display:flex;flex-direction:row;margin:0 var(--neg-padding) -24px;padding:5px var(--padding);background:#fff;box-shadow:0 0 0 1px #cdd8e4,0 2px 12px rgba(205,216,228,.5);background-color:var(--gray-050);z-index:3}.fld-element-settings-footer:focus{box-shadow:var(--focus-ring)}.fld-element-settings-footer>.ee-site-select{flex:1}body.ltr .fld-element-settings-footer>.btn{margin-left:5px}body.rtl .fld-element-settings-footer>.btn{margin-right:5px}body.ltr .fld-element-settings-footer>.spinner{margin:0 var(--neg-padding) 0 0}body.rtl .fld-element-settings-footer>.spinner{margin:0 0 0 var(--neg-padding)}@container (width < 577px){body.ltr .fld-container{padding-right:0}body.rtl .fld-container{padding-left:0}body.ltr .fld-container .fld-workspace{padding-right:24px}body.rtl .fld-container .fld-workspace{padding-left:24px}.fld-container>.fld-library{display:none}.fld-tab .fld-tabcontent .fld-add-btn{display:inline-flex !important}}html.noscroll,html.noscroll body{overflow:hidden;height:100%}.modal.imageeditor{background-color:var(--gray-900);color:var(--white);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;--focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)), 0 0 0 3px hsla(var(--light-focus-hsl), 0.7);opacity:0;user-select:none}.modal.imageeditor.modal{border-radius:0}.modal.imageeditor.modal .body:after{display:none}.modal.imageeditor .btn:not(.submit):not(.noborder){background-color:var(--gray-600);color:var(--white)}.modal.imageeditor .btn:not(.submit):not(.noborder):hover{background-color:var(--gray-700)}.modal.imageeditor .btn:not(.submit):not(.noborder).active{background-color:var(--gray-800)}.modal.imageeditor .icon::before{width:24px;height:24px;margin-left:-3px;display:inline-block;content:\"\"}.modal.imageeditor .icon.rotate-left::before{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .icon.rotate-right::before{background-image:url(../images/image-editor/rotate-right.svg)}.modal.imageeditor .icon.flip-vertical::before{background-image:url(../images/image-editor/flip-vertical.svg)}.modal.imageeditor .icon.flip-horizontal::before{background-image:url(../images/image-editor/flip-horizontal.svg)}.modal.imageeditor .icon.constraint::before{background-image:url(../images/image-editor/unconstrained.svg)}.modal.imageeditor .icon.focal-point::before{background-image:url(../images/image-editor/focal-point.svg)}.modal.imageeditor .body{display:flex;padding:0}.modal.imageeditor input{color:var(--text-color)}.modal.imageeditor .body .tabs{border-right:1px solid var(--gray-1000)}.modal.imageeditor .body .tabs ul{width:100px;flex-direction:column;align-items:stretch}.modal.imageeditor .body .tabs ul li{position:relative;padding:14px;text-align:center;border-bottom:1px solid var(--gray-1000);cursor:pointer}.modal.imageeditor .body .tabs ul li::before{position:absolute;top:0;content:\"\";width:0;height:100%;background-color:currentColor}body.ltr .modal.imageeditor .body .tabs ul li::before{left:0}body.rtl .modal.imageeditor .body .tabs ul li::before{right:0}.modal.imageeditor .body .tabs ul li.selected{background-color:#151c23}.modal.imageeditor .body .tabs ul li.selected::before{width:2px}.modal.imageeditor .body .tabs ul li i{background-repeat:no-repeat;background-position:top center;display:block;height:24px}.modal.imageeditor .body .tabs ul li[data-view=rotate] i{background-image:url(../images/image-editor/rotate-left.svg)}.modal.imageeditor .body .tabs ul li[data-view=crop] i{background-image:url(../images/image-editor/crop.svg)}.modal.imageeditor .body .tabs ul li[data-view=filters] i{background-image:url(../images/image-editor/filters.svg)}.modal.imageeditor .body .tabs ul li:hover{background-color:#1b242c}.modal.imageeditor .body .tabs ul li:hover{cursor:pointer}.modal.imageeditor .body .views{padding:24px;overflow:auto}.modal.imageeditor .body .views .btngroup{margin-bottom:24px}.modal.imageeditor .body .views .filters ul{width:100px}.modal.imageeditor .body .views .filters ul li{text-align:center;margin-right:14px;margin-bottom:14px}.modal.imageeditor .body .views .filters ul li:last-child{margin-right:0}.modal.imageeditor .body .views .filters ul li img{border:3px solid rgba(0,0,0,0);border-radius:4px}.modal.imageeditor .body .views .filters ul li span{display:block}.modal.imageeditor .body .views .filters ul li:hover{cursor:pointer}.modal.imageeditor .body .views .filters ul li.selected img{border-color:var(--white)}.modal.imageeditor .body .image-container{flex-grow:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.modal.imageeditor .body .image-container .image{text-align:center;flex-grow:1;position:relative;margin:14px}.modal.imageeditor .body .image-container .image canvas{position:absolute;top:0;left:0}.modal.imageeditor .body .image-container .image-tools{text-align:center}.modal.imageeditor .body .image-container .image-tools .straightening{max-width:400px;min-height:3.75rem;display:block;margin:0 auto;overflow:hidden}.modal.imageeditor .footer{position:absolute;background-color:rgba(0,0,0,0);bottom:0;left:0;width:100%;border-top:1px solid #000}body.has-debug-toolbar .modal.imageeditor .footer{padding-bottom:50px}.modal.imageeditor .body .views .crop fieldset .heading{display:none}.modal.imageeditor .body .views .crop .custom-constraint-spacer{padding:0 var(--xs)}.modal.imageeditor .body .views .crop .constraint-group{display:grid;grid-gap:var(--xs)}body.ltr .modal.imageeditor .body .views .crop .custom{padding-left:calc(1rem + 5px)}body.rtl .modal.imageeditor .body .views .crop .custom{padding-right:calc(1rem + 5px)}.modal.imageeditor .body .views .crop .orientation{display:flex;align-items:center;justify-content:center}.modal.imageeditor .body .views .crop .orientation input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-position:center center;background-repeat:no-repeat;margin:0 4px;cursor:pointer}.modal.imageeditor .body .views .crop .orientation input[value=landscape]{width:30px;height:20px;background-image:url(../images/image-editor/orientation-landscape-unchecked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=landscape]:checked{background-image:url(../images/image-editor/orientation-landscape-checked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]{width:20px;height:30px;background-image:url(../images/image-editor/orientation-portrait-unchecked.svg)}.modal.imageeditor .body .views .crop .orientation input[value=portrait]:checked{background-image:url(../images/image-editor/orientation-portrait-checked.svg)}.modal.imageeditor.vertical .body .views .crop>.btngroup:first-child{justify-content:center}.modal.imageeditor:not(.vertical) .body .views .crop .constraint.custom{margin-top:var(--xs)}.vertical.imageeditor .body{flex-direction:column}.vertical.imageeditor .body .image-container{flex-basis:30vh;flex-shrink:0}.vertical.imageeditor .body .constraint-group{grid-template-columns:1fr 1fr}.vertical.imageeditor .body .tabs ul{display:flex;flex-direction:row;width:100%;border-top:1px solid #000;border-bottom:1px solid #000}.vertical.imageeditor .body .tabs ul li{flex-grow:1;border:0;border-right:1px solid #000;padding:10px 7px}.vertical.imageeditor .body .tabs ul li::before{top:unset;top:0;width:100%;height:0}.vertical.imageeditor .body .tabs ul li.selected::before{width:100%;height:2px}.vertical.imageeditor .body .views{width:auto}.vertical.imageeditor .body .views .rotate{display:flex;justify-content:center;flex-wrap:wrap;margin-bottom:-14px}.vertical.imageeditor .body .views .rotate .btngroup{margin:0 7px 14px}.vertical.imageeditor .body .views .filters ul{width:auto;height:109px;overflow:auto;white-space:nowrap;margin:0 -24px;margin-bottom:-24px;padding:24px;text-align:center}.vertical.imageeditor .body .views .filters ul li{display:inline-block;margin-bottom:0}.slide-rule{position:relative;padding:10px 0}.slide-rule:focus{box-shadow:none}body:not(.reduce-focus-visibility) .slide-rule:focus .cursor::after,body.reduce-focus-visibility .slide-rule:focus-visible .cursor::after{box-shadow:var(--focus-ring)}.slide-rule .cursor::after{content:\"\";width:1.25rem;height:3.125rem;position:absolute;top:-15px;left:50%;transform:translateX(-50%)}.slide-rule .cursor{position:absolute;margin-left:-0.25rem;margin-top:4px;left:50%;z-index:1;width:0;height:0;border-left:0.3125rem solid rgba(0,0,0,0);border-right:0.3125rem solid rgba(0,0,0,0);border-top:0.3125rem solid #63a6e1}.slide-rule .graduations{white-space:nowrap;height:40px;position:relative}.slide-rule .graduations ul{position:relative;float:left}.slide-rule .graduations ul li{display:inline-block;font-size:8px;position:relative;width:10px}.slide-rule .graduations ul li:not(.main-graduation){left:1px}.slide-rule .graduations ul li.main-graduation:before{border-left-width:3px}.slide-rule .graduations ul li.main-graduation .label{display:block;cursor:default}.slide-rule .graduations ul li.selected:before{border-left-color:#63a6e1}.slide-rule .graduations ul li:before{content:\"\";position:absolute;border-left:1px solid var(--white);height:10px;top:0px;left:0}.slide-rule .graduations ul li .label{width:20px;position:absolute;top:10px;left:-9px;display:none;text-align:center}.slide-rule .value{display:none;position:absolute;bottom:0;left:50%;z-index:1;box-sizing:border-box;padding:5px;width:50px;margin-left:-25px;background:var(--gray-600)}.slide-rule .overlay{z-index:2;position:absolute;top:0;right:0;bottom:1px;left:0;background-image:linear-gradient(to right, var(--gray-900) 0%, rgba(31, 41, 51, 0) 15%, rgba(31, 41, 51, 0) 85%, var(--gray-900) 100%)}.menu.dark{background-color:var(--gray-600);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}.menu.dark ul li a{color:var(--white) !important}.menu.dark ul li a:not(.sel):not(.disabled):hover{background-color:var(--gray-700)}_:-ms-lang(x),.elements .tableview td.checkbox-cell input.checkbox+label,.elements .tableview td.checkbox-cell div.checkbox{top:16px}_:-ms-lang(x),input.checkbox+label:empty,div:empty.checkbox{display:block}.yii-debug-toolbar__title a{display:block !important}","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n:root {\n  --white: #fff;\n  --black: #000;\n\n  --gray-050-hsl: 212, 60%, 97%;\n  --gray-100-hsl: 212, 50%, 93%;\n  --gray-150-hsl: 212, 40%, 89%;\n  --gray-200-hsl: 212, 30%, 85%;\n  --gray-300-hsl: 211, 13%, 65%;\n  --gray-350-hsl: 211, 11%, 59%;\n  --gray-400-hsl: 210, 10%, 53%;\n  --gray-500-hsl: 211, 12%, 43%;\n  --gray-550-hsl: 210, 13%, 40%;\n  --gray-600-hsl: 209, 14%, 37%;\n  --gray-700-hsl: 209, 18%, 30%;\n  --gray-800-hsl: 209, 20%, 25%;\n  --gray-900-hsl: 210, 24%, 16%;\n  --gray-1000-hsl: 210, 24%, 10%;\n\n  --gray-050: hsl(var(--gray-050-hsl));\n  --gray-100: hsl(var(--gray-100-hsl));\n  --gray-150: hsl(var(--gray-150-hsl));\n  --gray-200: hsl(var(--gray-200-hsl));\n  --gray-300: hsl(var(--gray-300-hsl));\n  --gray-350: hsl(var(--gray-350-hsl));\n  --gray-400: hsl(var(--gray-400-hsl));\n  --gray-500: hsl(var(--gray-500-hsl));\n  --gray-550: hsl(var(--gray-550-hsl));\n  --gray-600: hsl(var(--gray-600-hsl));\n  --gray-700: hsl(var(--gray-700-hsl));\n  --gray-800: hsl(var(--gray-800-hsl));\n  --gray-900: hsl(var(--gray-900-hsl));\n  --gray-1000: hsl(var(--gray-1000-hsl));\n\n  --red-050: #fef2f2;\n  --red-100: #fee2e2;\n  --red-200: #fecaca;\n  --red-300: #fca5a5;\n  --red-400: #f87171;\n  --red-500: #ef4444;\n  --red-600: #dc2626;\n  --red-700: #b91c1c;\n  --red-800: #991b1b;\n  --red-900: #7f1d1d;\n  --red-950: #450a0a;\n\n  --orange-050: #fff7ed;\n  --orange-100: #ffedd5;\n  --orange-200: #fed7aa;\n  --orange-300: #fdba74;\n  --orange-400: #fb923c;\n  --orange-500: #f97316;\n  --orange-600: #ea580c;\n  --orange-700: #c2410c;\n  --orange-800: #9a3412;\n  --orange-900: #7c2d12;\n  --orange-950: #431407;\n\n  --amber-050: #fffbeb;\n  --amber-100: #fef3c7;\n  --amber-200: #fde68a;\n  --amber-300: #fcd34d;\n  --amber-400: #fbbf24;\n  --amber-500: #f59e0b;\n  --amber-600: #d97706;\n  --amber-700: #b45309;\n  --amber-800: #92400e;\n  --amber-900: #78350f;\n  --amber-950: #451a03;\n\n  --yellow-050: #fefce8;\n  --yellow-100: #fef9c3;\n  --yellow-200: #fef08a;\n  --yellow-300: #fde047;\n  --yellow-400: #facc15;\n  --yellow-500: #eab308;\n  --yellow-600: #ca8a04;\n  --yellow-700: #a16207;\n  --yellow-750: #93580b;\n  --yellow-800: #854d0e;\n  --yellow-900: #713f12;\n  --yellow-950: #422006;\n\n  --lime-050: #f7fee7;\n  --lime-100: #ecfccb;\n  --lime-200: #d9f99d;\n  --lime-300: #bef264;\n  --lime-400: #a3e635;\n  --lime-500: #84cc16;\n  --lime-600: #65a30d;\n  --lime-700: #4d7c0f;\n  --lime-800: #3f6212;\n  --lime-900: #365314;\n  --lime-950: #1a2e05;\n\n  --green-050: #f0fdf4;\n  --green-100: #dcfce7;\n  --green-200: #bbf7d0;\n  --green-300: #86efac;\n  --green-400: #4ade80;\n  --green-500: #22c55e;\n  --green-600: #16a34a;\n  --green-700: #15803d;\n  --green-800: #166534;\n  --green-900: #14532d;\n  --green-950: #052e16;\n\n  --emerald-050: #ecfdf5;\n  --emerald-100: #d1fae5;\n  --emerald-200: #a7f3d0;\n  --emerald-300: #6ee7b7;\n  --emerald-400: #34d399;\n  --emerald-500: #10b981;\n  --emerald-600: #059669;\n  --emerald-700: #047857;\n  --emerald-800: #065f46;\n  --emerald-900: #064e3b;\n  --emerald-950: #022c22;\n\n  --teal-050: #f0fdfa;\n  --teal-100: #ccfbf1;\n  --teal-200: #99f6e4;\n  --teal-300: #5eead4;\n  --teal-400: #2dd4bf;\n  --teal-500: #14b8a6;\n  --teal-550: #11a697;\n  --teal-600: #0d9488;\n  --teal-700: #0f766e;\n  --teal-800: #115e59;\n  --teal-900: #134e4a;\n  --teal-950: #042f2e;\n\n  --cyan-050: #ecfeff;\n  --cyan-100: #cffafe;\n  --cyan-200: #a5f3fc;\n  --cyan-300: #67e8f9;\n  --cyan-400: #22d3ee;\n  --cyan-500: #06b6d4;\n  --cyan-600: #0891b2;\n  --cyan-700: #0e7490;\n  --cyan-800: #155e75;\n  --cyan-900: #164e63;\n  --cyan-950: #083344;\n\n  --sky-050: #f0f9ff;\n  --sky-100: #e0f2fe;\n  --sky-200: #bae6fd;\n  --sky-300: #7dd3fc;\n  --sky-400: #38bdf8;\n  --sky-500: #0ea5e9;\n  --sky-600: #0284c7;\n  --sky-700: #0369a1;\n  --sky-800: #075985;\n  --sky-900: #0c4a6e;\n  --sky-950: #082f49;\n\n  --blue-050: #eff6ff;\n  --blue-100: #dbeafe;\n  --blue-200: #bfdbfe;\n  --blue-300: #93c5fd;\n  --blue-400: #60a5fa;\n  --blue-500: #3b82f6;\n  --blue-600: #2563eb;\n  --blue-700: #1d4ed8;\n  --blue-800: #1e40af;\n  --blue-900: #1e3a8a;\n  --blue-950: #172554;\n\n  --indigo-050: #eef2ff;\n  --indigo-100: #e0e7ff;\n  --indigo-200: #c7d2fe;\n  --indigo-300: #a5b4fc;\n  --indigo-400: #818cf8;\n  --indigo-500: #6366f1;\n  --indigo-600: #4f46e5;\n  --indigo-700: #4338ca;\n  --indigo-800: #3730a3;\n  --indigo-900: #312e81;\n  --indigo-950: #1e1b4b;\n\n  --violet-050: #f5f3ff;\n  --violet-100: #ede9fe;\n  --violet-200: #ddd6fe;\n  --violet-300: #c4b5fd;\n  --violet-400: #a78bfa;\n  --violet-500: #8b5cf6;\n  --violet-600: #7c3aed;\n  --violet-700: #6d28d9;\n  --violet-800: #5b21b6;\n  --violet-900: #4c1d95;\n  --violet-950: #2e1065;\n\n  --purple-050: #faf5ff;\n  --purple-100: #f3e8ff;\n  --purple-200: #e9d5ff;\n  --purple-300: #d8b4fe;\n  --purple-400: #c084fc;\n  --purple-500: #a855f7;\n  --purple-600: #9333ea;\n  --purple-700: #7e22ce;\n  --purple-800: #6b21a8;\n  --purple-900: #581c87;\n  --purple-950: #3b0764;\n\n  --fuchsia-050: #fdf4ff;\n  --fuchsia-100: #fae8ff;\n  --fuchsia-200: #f5d0fe;\n  --fuchsia-300: #f0abfc;\n  --fuchsia-400: #e879f9;\n  --fuchsia-500: #d946ef;\n  --fuchsia-600: #c026d3;\n  --fuchsia-700: #a21caf;\n  --fuchsia-800: #86198f;\n  --fuchsia-900: #701a75;\n  --fuchsia-950: #4a044e;\n\n  --pink-050: #fdf2f8;\n  --pink-100: #fce7f3;\n  --pink-200: #fbcfe8;\n  --pink-300: #f9a8d4;\n  --pink-400: #f472b6;\n  --pink-500: #ec4899;\n  --pink-600: #db2777;\n  --pink-700: #be185d;\n  --pink-800: #9d174d;\n  --pink-900: #831843;\n  --pink-950: #500724;\n\n  --rose-050: #fff1f2;\n  --rose-100: #ffe4e6;\n  --rose-200: #fecdd3;\n  --rose-300: #fda4af;\n  --rose-400: #fb7185;\n  --rose-500: #f43f5e;\n  --rose-600: #e11d48;\n  --rose-700: #be123c;\n  --rose-800: #9f1239;\n  --rose-900: #881337;\n  --rose-950: #4c0519;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n:root {\n  --bg-color: $grey100;\n  --bg-color-hsl: #{hue($grey100)}, #{saturation($grey100)},\n    #{lightness($grey100)};\n\n  // submit button colors\n  --primary-color: var(--red-600);\n  --secondary-color: var(--gray-500);\n\n  --input-color: hsl(212, 25%, 50%);\n\n  // text colors\n  --text-color: var(--gray-700);\n  --medium-dark-text-color: var(--gray-550);\n  --medium-text-color: var(--gray-550);\n  --light-text-color: var(--gray-500);\n  --link-color: #1f5fea;\n\n  // font styles\n  --font-weight-bold: 700;\n\n  // hairline colors\n  --hairline-color: #{transparentize(hsl(209, 20%, 25%), 0.9)};\n  --medium-hairline-color: #cfd8e3; // matches shadow below global header;\n  --dark-hairline-color: #{transparentize(hsl(210, 10%, 53%), 0.5)};\n\n  // focus colors\n  --light-focus-color: var(--blue-300);\n  --medium-focus-color: var(--blue-500);\n  --dark-focus-color: #0f74b1;\n\n  // focus rings\n  --light-focus-ring: 0 0 0 1px #5ed0fa,\n    0 0 0 3px #{transparentize(#5ed0fa, 0.3)};\n  --medium-focus-ring: 0 0 0 1px #2bb0ed,\n    0 0 0 3px #{transparentize(#2bb0ed, 0.3)};\n  --dark-focus-ring: 0 0 0 1px #0f74b1,\n    0 0 0 3px #{transparentize(#0f74b1, 0.3)};\n\n  // selection colors\n  --light-sel-color: var(--gray-200);\n  --dark-sel-color: var(--gray-500);\n\n  // alert/notice colors\n  --error-color-rgb: 216, 31, 35;\n  --error-color: rgba(var(--error-color-rgb), 1);\n  --warning-color: var(--amber-700);\n  --success-color: var(--teal-700);\n  --notice-color: var(--sky-700);\n\n  // status colors\n  --enabled-color: var(--teal-550);\n  --pending-color: var(--orange-400);\n  --disabled-color: var(--red-600);\n\n  // misc colors\n  --indicator-border-color: var(--amber-600);\n  --indicator-icon-color: var(--amber-700);\n\n  // UI element styles\n  --small-border-radius: 3px;\n  --medium-border-radius: 4px;\n  --large-border-radius: 5px;\n\n  --menu-border-radius: var(--medium-border-radius);\n  --checkbox-size: 1rem;\n  --radio-size: 1rem;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n@mixin striped-bg($size, $color: $grey100) {\n  // h/t https://css-tricks.com/stripes-css/\n  $halfSize: $size * 0.5;\n  body.ltr & {\n    background: repeating-linear-gradient(\n      135deg,\n      var(--white),\n      var(--white) $halfSize,\n      $color $halfSize,\n      $color $size\n    );\n  }\n  body.rtl & {\n    background: repeating-linear-gradient(\n      45deg,\n      var(--white),\n      var(--white) $halfSize,\n      $color $halfSize,\n      $color $size\n    );\n  }\n}\n\n@font-face {\n  font-family: 'Craft';\n  src:\n    url('../fonts/Craft.woff2') format('woff2'),\n    url('../fonts/Craft.woff') format('woff'),\n    url('../fonts/Craft.ttf') format('truetype'),\n    url('../fonts/Craft.svg#Craft') format('svg');\n  font-weight: normal;\n  font-style: normal;\n  font-display: block;\n}\n\n/* ----------------------------------------\n/*  Basic stuff\n/* ----------------------------------------*/\n\n:root {\n  --ui-control-color: var(--gray-550);\n  --ui-control-hover-color: var(--gray-600);\n  --ui-control-active-color: var(--gray-700);\n  --ui-control-static-bg-color: #{transparentize($inputColor, 0.75)};\n  --ui-control-bg-color: var(--ui-control-static-bg-color);\n  --ui-control-hover-bg-color: #{transparentize($inputColor, 0.7)};\n  --ui-control-active-bg-color: #{transparentize($inputColor, 0.5)};\n  --ui-control-border-radius: var(--large-border-radius);\n  --ui-control-height: calc(34rem / 16);\n  --ui-control-height--small: calc(30rem / 16);\n  --light-focus-hsl: #{hue($lightFocusColor)}, #{saturation($lightFocusColor)},\n    #{lightness($lightFocusColor)};\n  --medium-focus-hsl: #{hue($mediumFocusColor)},\n    #{saturation($mediumFocusColor)}, #{lightness($mediumFocusColor)};\n  --dark-focus-hsl: #{hue($darkFocusColor)}, #{saturation($darkFocusColor)},\n    #{lightness($darkFocusColor)};\n  --focus-ring: 0 0 0 1px hsl(var(--dark-focus-hsl)),\n    0 0 0 3px hsla(var(--dark-focus-hsl), 0.8);\n  --inner-focus-ring: inset 0 0 0 1px hsl(var(--dark-focus-hsl)),\n    inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);\n  --touch-target-size: calc(\n    24rem / 16\n  ); /* Minimum recommended touch target size */\n  --thumb-size: calc(20rem / 16);\n  --icon-size: 1rem;\n  --elements-busy-top-position: calc(50% - var(--size, 20px) / 2);\n  --lh: 1.42em;\n}\n\nbody,\nhtml {\n  box-shadow: var(--light-focus-ring);\n  background-color: var(--gray-100);\n}\n\nhtml.noscroll,\nhtml.noscroll body {\n  overflow: hidden;\n}\n\nbody {\n  width: 100vw;\n  overflow-x: hidden;\n  @include fontSize(14);\n  line-height: var(--lh);\n  color: var(--text-color);\n  -webkit-font-smoothing: subpixel-antialiased;\n}\n\nbody.rtl {\n  direction: rtl;\n}\n\nbody,\ninput,\nselect,\ntextarea {\n  @include sans-serif-font;\n}\n\n.first,\nh1:first-child,\nh2:first-child,\nh3:first-child,\nh4:first-child,\nh5:first-child,\nh6:first-child,\np:first-child,\nblockquote:first-child,\nhr:first-child,\n.pane:first-child,\n.grid:first-child,\nfieldset:first-child,\n.field:first-child,\n.toolbar:first-child,\n.buttons:first-child,\n.condition-container:first-child {\n  margin-top: 0 !important;\n}\n\n.last,\nh1:last-child,\nh2:last-child,\nh3:last-child,\nh4:last-child,\nh5:last-child,\nh6:last-child,\np:last-child,\nblockquote:last-child,\n.pane:last-child,\n.grid:last-child,\n.meta:last-child,\nfieldset:last-child,\n.field:last-child,\n.toolbar:last-child,\n.buttons:last-child,\n.condition-container:last-child {\n  margin-bottom: 0 !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n.mt-xs {\n  margin-top: var(--xs) !important;\n}\n.mt-s {\n  margin-top: var(--s) !important;\n}\n.mt-m {\n  margin-top: var(--m) !important;\n}\n.mt-l {\n  margin-top: var(--l) !important;\n}\n.mt-xl {\n  margin-top: var(--xl) !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n.mb-xs {\n  margin-bottom: var(--xs) !important;\n}\n.mb-s {\n  margin-bottom: var(--s) !important;\n}\n.mb-m {\n  margin-bottom: var(--m) !important;\n}\n.mb-l {\n  margin-bottom: var(--l) !important;\n}\n.mb-xl {\n  margin-bottom: var(--xl) !important;\n}\n\n.ml-0 {\n  margin-left: 0 !important;\n}\n.ml-xs {\n  margin-left: var(--xs) !important;\n}\n.ml-s {\n  margin-left: var(--s) !important;\n}\n.ml-m {\n  margin-left: var(--m) !important;\n}\n.ml-l {\n  margin-left: var(--l) !important;\n}\n.ml-xl {\n  margin-left: var(--xl) !important;\n}\n\n.mr-0 {\n  margin-right: 0 !important;\n}\n.mr-xs {\n  margin-right: var(--xs) !important;\n}\n.mr-s {\n  margin-right: var(--s) !important;\n}\n.mr-m {\n  margin-right: var(--m) !important;\n}\n.mr-l {\n  margin-right: var(--l) !important;\n}\n.mr-xl {\n  margin-right: var(--xl) !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n.mx-xs {\n  margin-left: var(--xs) !important;\n  margin-right: var(--xs) !important;\n}\n.mx-s {\n  margin-left: var(--s) !important;\n  margin-right: var(--s) !important;\n}\n.mx-m {\n  margin-left: var(--m) !important;\n  margin-right: var(--m) !important;\n}\n.mx-l {\n  margin-left: var(--l) !important;\n  margin-right: var(--l) !important;\n}\n.mx-xl {\n  margin-left: var(--xl) !important;\n  margin-right: var(--xl) !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n.my-xs {\n  margin-top: var(--xs) !important;\n  margin-bottom: var(--xs) !important;\n}\n.my-s {\n  margin-top: var(--s) !important;\n  margin-bottom: var(--s) !important;\n}\n.my-m {\n  margin-top: var(--m) !important;\n  margin-bottom: var(--m) !important;\n}\n.my-l {\n  margin-top: var(--l) !important;\n  margin-bottom: var(--l) !important;\n}\n.my-xl {\n  margin-top: var(--xl) !important;\n  margin-bottom: var(--xl) !important;\n}\n\n.pointer {\n  cursor: pointer !important;\n}\n\n.no-scroll {\n  overflow: hidden !important;\n}\n\n.draghelper {\n  box-sizing: border-box;\n  list-style-type: none;\n}\n\n.offset-drag-helper {\n  transition:\n    margin linear 200ms,\n    padding linear 200ms;\n}\n\nbody.dragging.ltr .offset-drag-helper {\n  margin: -50px 0 0 -50px;\n  padding: 60px 0 0 60px;\n}\n\nbody.dragging.rtl .offset-drag-helper {\n  margin: -50px -50px 0 0;\n  padding: 60px 60px 0 0;\n}\n\nimg {\n  max-width: 100%;\n}\n\n.text,\ntable.editable textarea {\n  body.rtl .ltr & {\n    text-align: left !important;\n    direction: ltr !important;\n  }\n\n  body.ltr .rtl & {\n    text-align: right !important;\n    direction: rtl !important;\n  }\n}\n\n/* icons */\n.icon:before,\n.menu ul.padded li a.sel:before,\n.menu ul.padded li .menu-item.sel:before,\n.menu ul.padded li .menu-option.sel:before,\n.menu .flex.padded.sel:before,\n.texticon:before,\n#help:before,\n.secure:before,\n.insecure:before,\n.go:after,\n.required:after,\n.preview-btn:before,\n.view-btn:before,\n.action-btn:before,\n[data-icon]:before,\n[data-icon-after]:after {\n  @include icon;\n}\n\n.badge-icon {\n  position: relative;\n  top: -1px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: 1rem;\n  height: 1rem;\n  box-sizing: border-box;\n  border: 1px solid var(--indicator-border-color);\n  border-radius: var(--small-border-radius);\n  color: var(--indicator-icon-color);\n  font-size: 9px;\n}\n\n.secure:before,\n.insecure:before {\n  margin-top: -3px;\n  font-size: 14px;\n}\n\n[data-icon]:before {\n  content: attr(data-icon);\n}\n\n[data-icon-after]:after {\n  content: attr(data-icon-after);\n}\n\n[data-icon-size='large'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 20px;\n  }\n}\n\n[data-icon-size='small'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 14px;\n  }\n}\n\n[data-icon-size='puny'] {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    font-size: 12px;\n  }\n}\n\nbody.rtl [data-icon='list']:before,\nbody.rtl [data-icon-after='list']:after {\n  content: 'listrtl';\n}\n\nbody.rtl [data-icon='structure']:before,\nbody.rtl [data-icon-after='structure']:after {\n  content: 'structurertl';\n}\n\n.icon.secure:before {\n  content: 'secure';\n}\n\n.icon.insecure:before {\n  content: 'insecure';\n}\n\n.icon.add:before {\n  content: 'plus';\n}\n\n.icon.edit:before {\n  content: 'edit';\n}\n\n.icon.settings:before {\n  content: 'settings';\n}\n\n.icon.search:before {\n  content: 'search';\n}\n\n.icon.expand:before {\n  content: 'expand';\n}\n\n.icon.collapse:before {\n  content: 'collapse';\n}\n\n.help:before {\n  content: 'help';\n  color: var(--pink-400);\n}\n\n.preview-btn,\n.view-btn {\n  &:before {\n    @include margin-right(var(--xs));\n  }\n}\n\n.preview-btn:before {\n  margin-top: -2px;\n  content: 'view';\n}\n\n.view-btn:before {\n  body.ltr & {\n    content: 'share';\n  }\n  body.rtl & {\n    content: 'shareleft';\n  }\n}\n\n.action-btn:before {\n  content: 'ellipsis';\n}\n\n/* headings */\nh1,\n.h1 {\n  margin-bottom: 24px;\n  font-size: 18px;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh2,\n.h2 {\n  margin: 14px 0;\n  font-size: 16px;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh3,\n.h3 {\n  margin: 14px 0;\n  font-weight: bold;\n  line-height: 1.2;\n}\n\nh4,\n.h4 {\n  margin: 14px 0;\n  font-weight: bold;\n  line-height: 1.2;\n  color: var(--medium-text-color);\n}\n\nh5,\n.h5 {\n  margin: 14px 0 3px;\n  line-height: 1.2;\n  color: var(--medium-text-color);\n}\n\nh6,\n.h6 {\n  @include h6-styles;\n}\n\nh1[data-icon]:before {\n  @include margin(-8px, 10px, 0, 0);\n}\n\nh2[data-icon]:before {\n  @include margin(-4px, 6px, 0, 0);\n  font-size: 19px;\n}\n\n/* horizontal rule */\nhr {\n  margin: 24px 0;\n  border: none;\n  border-top: 1px solid var(--hairline-color);\n  height: 0;\n  color: transparent;\n}\n\n.pane hr {\n  margin: 24px -24px;\n}\n\n/* paragraphs */\np {\n  margin: 1em 0;\n}\n\nh5 + p {\n  margin-top: 0;\n}\n\nsup {\n  vertical-align: super;\n  font-size: smaller;\n}\n\nsub {\n  vertical-align: sub;\n  font-size: smaller;\n}\n\n.indent {\n  @include margin-left(14px);\n}\n\n/* lists */\n.bullets {\n  @include padding-left(40px);\n  list-style-type: square;\n}\n\nol {\n  @include padding-left(40px);\n  list-style-type: decimal;\n}\n\n/* code */\ncode,\n.code {\n  @include fixed-width-font;\n\n  &.smalltext {\n    font-size: 0.8em !important;\n  }\n}\n\n.code {\n  input,\n  textarea {\n    @include fixed-width-font;\n    font-size: 1em !important;\n  }\n}\n\npre code {\n  display: block;\n  overflow-x: auto;\n}\n\n/* links */\na {\n  color: var(--link-color);\n  cursor: pointer;\n\n  &[aria-current] {\n    cursor: default;\n  }\n\n  body.underline-links &,\n  &:hover {\n    text-decoration: underline;\n  }\n\n  .cp-icon svg {\n    @include svg-mask(var(--icon-color, var(--link-color)));\n  }\n}\n\na:not([href]) {\n  color: inherit;\n  cursor: inherit;\n\n  body.underline-links &,\n  &:hover {\n    text-decoration: none;\n  }\n}\n\na.sel,\nli.sel > a {\n  cursor: default !important;\n  text-decoration: none;\n}\n\n.go:after {\n  font-size: 11px;\n  margin-top: -1px;\n  @include padding-left(4px);\n  color: var(--link-color);\n  opacity: 0.9;\n  body.ltr & {\n    content: 'circlerarr';\n  }\n  body.rtl & {\n    content: 'circlelarr';\n  }\n}\n\nbutton {\n  cursor: pointer;\n}\n\n/* status icons */\n.checkmark-icon,\n.alert-icon {\n  padding: 5px;\n  margin-bottom: 0 !important;\n  line-height: 10px;\n  border-radius: 20px;\n  cursor: pointer;\n\n  &:before {\n    @include icon;\n  }\n}\n\n.checkmark-icon {\n  p & {\n    display: inline-block;\n  }\n\n  background-color: var(--gray-200);\n\n  &:before {\n    content: 'check';\n    color: var(--success-color);\n  }\n}\n\n.alert-icon {\n  background-color: var(--gray-200);\n\n  &:before {\n    content: 'alert';\n    color: var(--error-color);\n  }\n}\n\n.revision-status-hud {\n  max-width: 400px;\n\n  .http-error {\n    border-radius: var(--medium-border-radius);\n    border: 1px solid var(--hairline-color);\n    color: var(--light-text-color);\n    background-color: var(--gray-050);\n    padding: 7px 14px;\n  }\n}\n\n.draft-notice {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  justify-content: center;\n  gap: var(--s);\n  color: var(--blue-800);\n\n  #content-notice & {\n    display: inline-flex;\n    justify-content: flex-start;\n  }\n\n  .so-notice > & {\n    @include margin(-5px, 0, -5px, calc(var(--xl) * -1));\n    @include padding(5px, 0, 5px, var(--xl));\n    @include border-bottom-left-radius(var(--large-border-radius));\n\n    body.ltr & {\n      background-image: linear-gradient(\n        to bottom right,\n        transparentize($blue600, 0.8),\n        transparentize($blue600, 1) 50%\n      );\n    }\n    body.rtl & {\n      background-image: linear-gradient(\n        to left,\n        transparentize($blue600, 0.8),\n        transparentize($blue600, 1)\n      );\n    }\n  }\n\n  p {\n    flex: 1;\n    margin: 0;\n  }\n\n  .draft-icon {\n    position: relative;\n    flex-shrink: 0;\n    width: 34px;\n    height: 34px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    border-radius: 100%;\n    border: 2px solid transparentize($blue800, 0.8);\n    box-sizing: border-box;\n    box-shadow: 0 1px 1px 1px var(--white);\n\n    &:before {\n      position: relative;\n      left: 1px;\n      color: var(--blue-800) !important;\n      font-size: 18px;\n    }\n\n    &:after {\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: -2px;\n      left: -2px;\n      right: -2px;\n      bottom: -2px;\n      border-radius: 100%;\n      box-shadow: inset 0 2px 0 transparentize($blue900, 0.8);\n    }\n  }\n\n  .discard-changes-btn {\n    @include margin-left(var(--xs));\n    background-color: transparent !important;\n    color: var(--blue-800) !important;\n    border: 2px solid var(--blue-600);\n\n    &:hover,\n    &:focus {\n      border-color: darken($blue600, 5%);\n    }\n\n    &:active {\n      border-color: darken($blue600, 10%);\n    }\n  }\n}\n\n.revision-notice {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  justify-content: center;\n  gap: var(--s);\n  color: var(--gray-600);\n\n  #content-notice & {\n    display: inline-flex;\n    justify-content: flex-start;\n  }\n\n  p {\n    flex: 1;\n    margin: 0;\n  }\n\n  .revision-icon {\n    position: relative;\n    flex-shrink: 0;\n    width: 34px;\n    height: 34px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    border-radius: 100%;\n    border: 2px solid transparentize($grey800, 0.8);\n    box-sizing: border-box;\n    box-shadow: 0 1px 1px 1px var(--white);\n\n    &:before {\n      position: relative;\n      left: 1px;\n      color: var(--grey-800) !important;\n      font-size: 18px;\n    }\n\n    &:after {\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: -2px;\n      left: -2px;\n      right: -2px;\n      bottom: -2px;\n      border-radius: 100%;\n      box-shadow: inset 0 2px 0 transparentize($blue900, 0.8);\n    }\n  }\n}\n\n/* toggles */\nbutton.toggle {\n  appearance: none;\n  color: inherit;\n  background: none;\n  border: none;\n  padding: 0;\n}\n\n.toggle:before,\na.fieldtoggle:before {\n  @include angle(right);\n  transition: transform linear 100ms;\n}\n\n.toggle.expanded:before,\na.fieldtoggle.expanded:before,\n.sidebar nav li.expanded > .toggle:before,\n.structure li:not(.collapsed) > .row > .toggle:before {\n  transform: rotate(45deg) !important;\n}\n\na.fieldtoggle {\n  display: block;\n  position: relative;\n  margin: 14px 0;\n  @include padding-left(12px);\n  color: var(--text-color);\n  text-decoration: none;\n}\n\na.fieldtoggle:before {\n  display: block;\n  position: absolute;\n  top: 7px;\n  @include left(-1px);\n}\n\n/* emphasis */\nem,\ni {\n  font-style: italic;\n}\nul.errors em {\n  font-style: normal;\n}\n\nstrong,\nb,\ni em {\n  font-weight: bold;\n}\n\n/* readable blocks */\n.readable {\n  @include readable;\n}\n\n/* text styles */\n.leftalign {\n  @include alignleft;\n}\n\n.topalign {\n  vertical-align: top;\n}\n\n.rightalign {\n  @include alignright;\n}\n\n.centeralign {\n  text-align: center !important;\n}\n\n.nowrap {\n  white-space: nowrap;\n}\n\n.break-word {\n  word-wrap: break-word;\n}\n\n.light {\n  color: var(--medium-text-color) !important;\n  font-weight: normal;\n}\n\n.extralight {\n  color: var(--light-text-color) !important;\n}\n\n.smalltext {\n  font-size: 12px;\n  line-height: 1.2;\n}\n\n.largetext {\n  font-size: 16px;\n  line-height: 1.2;\n}\n\n.zilch {\n  padding: 100px 0;\n  text-align: center;\n  font-size: 20px;\n  line-height: 24px;\n  color: var(--light-text-color);\n\n  &.small {\n    padding: 24px 0;\n    font-size: 16px;\n  }\n}\n\ninput.checkbox + label.smalltext {\n  padding-top: 2px;\n}\n\n.required:after {\n  content: 'asterisk';\n  @include margin(-2px, 0, 0, 5px);\n  font-size: 12px;\n  color: var(--rose-500);\n}\n\n.scrollpane {\n  overflow: auto;\n}\n\n.left {\n  @include floatleft;\n}\n\n.right {\n  @include floatright;\n}\n\nth,\ntd {\n  @include alignleft;\n  vertical-align: middle;\n}\n\nbody.ltr table[dir='rtl'] {\n  th,\n  td {\n    text-align: right;\n  }\n}\nbody.rtl table[dir='ltr'] {\n  th,\n  td {\n    text-align: left;\n  }\n}\n\nth.right,\ntd.right {\n  float: none;\n  @include alignright;\n}\n\n.clear {\n  display: block;\n  clear: both;\n  height: 0;\n}\n\n.fullwidth {\n  width: 100%;\n}\n\n.token {\n  @include token-styles;\n}\n\n.token[data-name='*'] {\n  position: relative;\n  width: 10px;\n}\n\n.token[data-name='*'] span {\n  opacity: 0;\n}\n\n.token[data-name='*']:before {\n  @include icon;\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  font-size: 9px;\n  line-height: 17px;\n  content: 'asterisk';\n  text-indent: 0;\n}\n\n.token:focus {\n  @include active-token-styles;\n}\n\n// Override .token for Prism\n.highlight {\n  .token {\n    display: inline;\n    border: none;\n    border-radius: 0;\n    padding: 0;\n    font-size: inherit;\n    line-height: inherit;\n    text-shadow: none;\n    background: transparent;\n    box-shadow: none;\n  }\n}\n\n.pane.highlight {\n  pre[class*='language-'] {\n    overflow: visible;\n\n    & > code.diff-highlight .token:not(.prefix) {\n      margin: 0 -24px;\n      padding: 0 24px;\n    }\n  }\n}\n\n.success {\n  color: var(--success-color) !important;\n}\n\n.notice,\n.warning {\n  &.with-icon,\n  .icon {\n    &:before {\n      @include margin(-2px, 2px, 0, 0);\n      @include icon;\n      width: 1em;\n    }\n  }\n\n  &.has-icon {\n    display: flex;\n    flex-wrap: nowrap;\n    align-items: flex-start;\n\n    .icon {\n      flex-shrink: 1;\n    }\n  }\n}\n\n.notice {\n  color: var(--notice-color) !important;\n  a {\n    text-decoration: underline;\n  }\n\n  &.with-icon,\n  .icon {\n    &:before {\n      content: 'lightbulb';\n    }\n  }\n}\n\n.warning {\n  color: var(--warning-color) !important;\n\n  &.with-icon,\n  .icon {\n    &:before {\n      content: 'alert';\n    }\n  }\n}\n\n.error {\n  color: var(--error-color) !important;\n}\n\n.icon.move:not(.disabled) {\n  cursor: move;\n}\n\n.icon.move:before {\n  content: 'move';\n  color: var(--custom-text-color, var(--ui-control-color));\n}\n\n.icon.move:not(.disabled):hover:before {\n  color: var(--link-color);\n}\n\n.icon.delete {\n  display: inline-block;\n  line-height: inherit;\n\n  &:before {\n    content: 'remove';\n    color: var(--ui-control-color);\n  }\n\n  &:not(.disabled) {\n    cursor: pointer;\n\n    &:hover:before {\n      color: var(--disabled-color);\n    }\n\n    &:active:before {\n      color: var(--red-800);\n    }\n  }\n}\n\n.hidden {\n  display: none !important;\n}\n\n// Visually hide without hiding from screen readers\n.visually-hidden {\n  @include visually-hidden;\n}\n\n.invisible {\n  visibility: hidden;\n}\n\n.clearafter:after {\n  @include clearafter;\n}\n\n.info {\n  vertical-align: bottom;\n  display: inline-block;\n  width: 1em;\n  height: 1.375em;\n  text-align: center;\n  cursor: pointer;\n  overflow: hidden;\n\n  &:before {\n    @include icon;\n    vertical-align: baseline;\n    width: 100%;\n    line-height: 1.375;\n    color: var(--ui-control-color);\n  }\n\n  &:not(.warning) {\n    &:before {\n      content: 'info';\n    }\n    &:hover:before {\n      color: var(--link-color);\n    }\n  }\n\n  &.warning {\n    &:before {\n      content: 'alert';\n    }\n    &:hover:before {\n      color: var(--warning-color);\n    }\n  }\n}\n\n.info-hud {\n  table {\n    max-width: 280px;\n    table-layout: auto;\n  }\n\n  td {\n    word-wrap: break-word;\n    width: 100%;\n  }\n}\n\n@media (max-width: 450px) {\n  .info-hud {\n    table {\n      table-layout: fixed;\n      width: 100%;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Content\n/* ----------------------------------------*/\n\n.content {\n  position: relative;\n}\n\n.content:after {\n  @include clearafter;\n}\n\n.customize-sources-modal {\n  @include padding-left(200px);\n  overflow: visible !important;\n\n  & > .cs-sidebar {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    margin: 0;\n    padding: 10px 0;\n    border: none;\n    width: 200px;\n    height: calc(100% - 44px);\n    box-sizing: border-box;\n    background-color: var(--gray-050);\n    overflow: auto;\n    box-shadow: inset -1px 0 0 var(--hairline-color);\n    @include border-top-left-radius(var(--large-border-radius));\n\n    & > .btn {\n      @include margin(10px, 0, 0, 14px);\n      display: block;\n      width: calc(100% - 28px);\n    }\n  }\n\n  &.sidebar-hidden {\n    @include padding-left(0);\n\n    & > .cs-sidebar {\n      display: none;\n    }\n  }\n\n  & > .source-settings {\n    position: relative;\n    height: calc(100% - 44px);\n    box-sizing: border-box;\n    padding: 24px;\n    overflow: auto;\n  }\n\n  & > .footer {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n  }\n}\n\n.customize-sources-item {\n  --selected-item-color: var(--white);\n  display: flex;\n  width: calc(100% - 1px);\n  box-sizing: border-box;\n  align-items: center;\n  position: relative;\n  margin-top: -1px;\n  background-color: var(--gray-100);\n  border: solid var(--hairline-color);\n  border-width: 1px 0;\n  user-select: none;\n  cursor: default;\n\n  & + .customize-sources-item {\n    &.heading {\n      margin-top: 10px;\n    }\n\n    &:not(.heading) {\n      border-top: 1px solid var(--hairline-color);\n    }\n  }\n\n  &.sel {\n    @include light-focus-ring;\n    --ui-control-color: var(--selected-item-color);\n    background-color: var(--dark-sel-color);\n    color: var(--selected-item-color);\n    z-index: 1;\n  }\n\n  .label {\n    flex: 1;\n  }\n\n  &.heading {\n    .label {\n      text-transform: uppercase;\n      color: var(--light-text-color);\n      font-size: 12px;\n      font-weight: bold;\n    }\n\n    &.sel .label {\n      color: var(--selected-item-color);\n    }\n  }\n}\n\n.customize-sources-item__move {\n  position: absolute;\n  top: 50%;\n  @include right(0);\n  transform: translate(-50%, -50%);\n  justify-content: center;\n  align-items: center;\n\n  &.icon {\n    display: flex;\n    text-decoration: none;\n  }\n}\n\n.customize-sources-item__btn {\n  padding: 8px 14px;\n  @include padding-right(30px);\n  margin: 3px;\n}\n\n.checkbox-select-item {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  margin-bottom: 4px;\n\n  .move {\n    margin-top: -3px;\n    @include margin-right(10px);\n    position: relative;\n    z-index: 1;\n  }\n}\n\nul.path {\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  flex-wrap: wrap;\n\n  li {\n    display: inline-flex;\n    align-items: center;\n\n    &:not(:last-child):after {\n      @include margin(0, 5px, 0, 2px);\n      @include angle(right, var(--light-text-color), calc(1rem / 16));\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Icon lists\n/* ----------------------------------------*/\n\nul.icons {\n  margin-top: 20px;\n  display: flex;\n  flex-wrap: wrap;\n\n  li {\n    margin: 0 4px 10px 0;\n\n    a {\n      display: block;\n      position: relative;\n      padding: 60px 5px 10px;\n      width: 110px;\n      text-align: center;\n      color: var(--text-color);\n      border-radius: 4px;\n      border: 1px solid var(--white);\n\n      &:before {\n        display: block;\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        font-size: 40px;\n        line-height: 60px;\n      }\n\n      .icon {\n        img,\n        svg {\n          width: 40px;\n          height: 40px;\n          position: absolute;\n          top: 12px;\n          left: calc(50% - 20px);\n        }\n\n        &.icon-mask svg {\n          @include svg-mask(var(--text-color));\n        }\n      }\n\n      &:hover {\n        text-decoration: none;\n        background-color: var(--gray-050);\n        border-color: var(--gray-100);\n\n        .icon.icon-mask svg {\n          @include svg-mask(var(--link-color));\n        }\n      }\n    }\n  }\n}\n\n@media only screen and (max-width: 380px) {\n  ul.icons li a {\n    width: 96px;\n  }\n}\n\n@media only screen and (max-width: 320px) {\n  ul.icons li a {\n    width: 75px;\n  }\n}\n\n/* ----------------------------------------\n/*  Buttons\n/* ----------------------------------------*/\n\n.toolbar {\n  position: relative;\n  margin-bottom: var(--s);\n  min-height: 34px;\n\n  &.flex,\n  .flex {\n    align-items: flex-start;\n  }\n\n  .text {\n    border-radius: var(--large-border-radius) !important;\n  }\n}\n\n.flex {\n  display: flex;\n  align-items: center;\n  align-content: stretch;\n  gap: var(--s);\n\n  &.flex-gap-xs {\n    gap: var(--xs);\n  }\n  &.flex-gap-m {\n    gap: var(--m);\n  }\n  &.flex-gap-l {\n    gap: var(--l);\n  }\n  &.flex-gap-xl {\n    gap: var(--xl);\n  }\n\n  &:not(.flex-nowrap) {\n    flex-wrap: wrap;\n  }\n\n  & > * {\n    &.label {\n      white-space: nowrap;\n    }\n  }\n\n  .centeralign & {\n    justify-content: center;\n  }\n}\n\n.inline-flex {\n  display: inline-flex !important;\n  align-items: center;\n  align-content: stretch;\n  gap: var(--s);\n}\n\n.gap-xs {\n  gap: var(--xs);\n}\n\n.gap-s {\n  gap: var(--s);\n}\n\n.gap-m {\n  gap: var(--m);\n}\n\n.gap-l {\n  gap: var(--l);\n}\n\n.gap-xl {\n  gap: var(--xl);\n}\n\n.flex-grow {\n  flex: 1;\n  max-width: 100%;\n}\n\n.flex-justify {\n  justify-content: space-between;\n}\n\n.flex-justify-start {\n  justify-content: flex-start;\n}\n\n.flex-justify-end {\n  justify-content: flex-end;\n}\n\n.flex-justify-center {\n  justify-content: center;\n}\n\n.flex-start {\n  align-items: flex-start;\n}\n\n.flex-end {\n  align-items: flex-end;\n}\n\n.flex-center {\n  align-items: center;\n}\n\n.flex-stretch {\n  align-items: stretch;\n}\n\n.spacer {\n  width: 14px;\n}\n\n.buttons {\n  display: flex;\n  gap: 7px;\n  position: relative;\n  margin: 24px 0;\n  align-items: center;\n\n  .hud-footer > &,\n  .footer > & {\n    margin: 0;\n  }\n}\n\n.btn {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: var(--ui-control-border-radius);\n  padding: 7px 10px;\n  border: none;\n  text-align: center;\n  white-space: nowrap;\n  user-select: none;\n  box-sizing: border-box;\n  appearance: none;\n  color: currentColor;\n  font-size: inherit;\n  background-color: var(--ui-control-bg-color);\n\n  &:not([aria-current]) {\n    cursor: pointer;\n  }\n\n  &.chromeless {\n    background-color: transparent;\n    height: auto;\n    padding: 0;\n\n    &:hover,\n    &:active,\n    &:focus {\n      background-color: transparent;\n    }\n\n    &:hover,\n    &:active {\n      text-decoration: underline;\n    }\n  }\n\n  &.hairline,\n  &.link-btn {\n    border: 1px solid var(--medium-hairline-color);\n    background-color: transparent;\n\n    &:active,\n    &[aria-expanded='true'] {\n      background-color: var(--ui-control-static-bg-color);\n    }\n  }\n\n  &.hairline {\n    &:hover,\n    &:active,\n    &[aria-expanded='true'] {\n      border-color: var(--dark-hairline-color);\n    }\n  }\n\n  &.link-btn {\n    color: var(--link-color);\n\n    &:hover,\n    &:active,\n    &[aria-expanded='true'] {\n      border-color: var(--link-color);\n    }\n  }\n\n  &.wrap {\n    height: auto;\n    min-height: 34px;\n    white-space: initial;\n    text-align: left;\n  }\n\n  &:not(.disabled):not(.loading):not(.dashed):not([aria-disabled]):not(\n      [aria-current]\n    ) {\n    &:focus,\n    &.focus,\n    &:hover {\n      --ui-control-bg-color: var(--ui-control-hover-bg-color);\n    }\n\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      --ui-control-bg-color: var(--ui-control-active-bg-color);\n    }\n  }\n\n  &[type='color'] {\n    padding: 6px !important;\n    width: 36px;\n  }\n\n  &.loading {\n    cursor: default;\n  }\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:empty,\n  &.btn-empty {\n    padding-left: 12px;\n    padding-right: 12px;\n  }\n\n  &[data-icon]:not(:empty):not(.btn-empty):before,\n  &.icon:not(:empty):not(.btn-empty):before,\n  &.menubtn:not(.action-btn)[data-icon]:empty:before,\n  &.menubtn:not(.action-btn)[data-icon].btn-empty:before,\n  &.menubtn:not(.action-btn).icon:empty:before,\n  &.menubtn:not(.action-btn).icon.btn-empty:before {\n    @include margin-right(5px);\n  }\n\n  &:not(.loading) .spinner {\n    display: none;\n  }\n\n  &.loading {\n    &:before,\n    &:after,\n    .label {\n      visibility: hidden;\n    }\n  }\n\n  div.checkbox {\n    margin-top: 2px;\n  }\n\n  [data-icon] {\n    margin-top: -3px;\n    @include margin-right(5px);\n\n    &.light:before {\n      color: var(--gray-300);\n    }\n  }\n}\n\n.disabled {\n  opacity: 0.25;\n  pointer-events: none;\n  user-select: none;\n}\n\n.noteditable {\n  cursor: not-allowed;\n\n  .element,\n  .lightswitch-container,\n  & + .colorhex {\n    cursor: not-allowed;\n  }\n}\n\n.btn,\n.spinner {\n  height: var(--ui-control-height);\n}\n\n.btn[data-icon-after]:not(:empty):not(.btn-empty):after,\n.menu-toggle:not(:empty):not(.btn-empty):after,\n.menubtn:not(.action-btn):not(:empty):not(.btn-empty):after,\n.menubtn:not(.action-btn).icon:after {\n  @include margin-left(6px);\n}\n\n.btn[data-icon]:before,\n.btn[data-icon-after]:after,\n.btn.icon:before {\n  position: relative;\n}\n\n.btn.small[data-icon]:before,\n.btn.small[data-icon-after]:after,\n.btn.icon.small:before {\n  font-size: 10px;\n}\n\n/* button groups */\n.btngroup {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  white-space: nowrap;\n  align-items: center;\n  border-radius: var(--large-border-radius);\n\n  &.fullwidth .btn {\n    flex: 1;\n  }\n\n  &.disabled .btn {\n    cursor: default;\n  }\n\n  .btn {\n    &:focus {\n      z-index: 1;\n    }\n\n    &:not(.dashed):not(:last-child):not(.btngroup-btn-last) {\n      @include margin-right(1px);\n    }\n\n    body.ltr & {\n      &:not(:first-child):not(.btngroup-btn-first) {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0;\n      }\n\n      &:not(:last-child):not(.btngroup-btn-last) {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n    }\n\n    body.rtl & {\n      &:not(:first-child):not(.btngroup-btn-first) {\n        border-top-right-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n\n      &:not(:last-child):not(.btngroup-btn-last) {\n        border-top-left-radius: 0;\n        border-bottom-left-radius: 0;\n      }\n    }\n  }\n}\n\n.btngroup--exclusive {\n  .btn[aria-pressed='true']:not(.disabled):not(.loading):not(.dashed):not(\n      [aria-disabled]\n    ) {\n    background-color: var(--gray-500);\n    color: var(--white);\n  }\n}\n\n.copytext {\n  position: relative;\n  z-index: 1;\n  display: flex;\n  white-space: nowrap;\n  align-items: center;\n\n  body.ltr & {\n    .text {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n      min-width: 0;\n    }\n    .btn {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n  }\n\n  body.rtl & {\n    .text {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n    .btn {\n      border-top-right-radius: 0;\n      border-bottom-right-radius: 0;\n    }\n  }\n}\n\n.copytextbtn {\n  display: inline-flex;\n  flex-wrap: nowrap;\n  align-items: center;\n  border: 1px solid var(--hairline-color);\n  border-radius: var(--small-border-radius);\n  padding: 0 9px;\n  cursor: pointer;\n  color: var(--medium-text-color);\n\n  .copytextbtn__icon {\n    padding: 0;\n    width: 13px;\n    background: none;\n    margin-top: -3px;\n    @include margin-left(5px);\n    color: var(--light-text-color);\n  }\n\n  &:hover,\n  &:focus {\n    border-color: var(--medium-hairline-color);\n    color: var(--text-color);\n\n    .copytextbtn__value {\n      color: var(--text-color);\n    }\n  }\n\n  &.small {\n    padding: 0 5px;\n\n    .copytextbtn__value {\n      font-size: calc(11rem / 16);\n    }\n  }\n}\n\n/* menu buttons */\n.menu-toggle,\n.menubtn:not(.action-btn) {\n  display: inline-flex;\n  align-items: center;\n  user-select: none;\n\n  &:after {\n    @include angle;\n    position: relative;\n  }\n\n  &.btn {\n    &:after {\n      top: -1px;\n    }\n\n    &:not(.disabled):not(.inactive) {\n      &:active,\n      &.active {\n        &:after {\n          border-color: var(--ui-control-active-color);\n        }\n      }\n    }\n\n    &.submit {\n      &:after {\n        border-color: var(--white) !important;\n        opacity: 0.8;\n      }\n\n      &:not(.disabled):not(.inactive) {\n        &:hover,\n        &.hover,\n        &:active,\n        &.active {\n          &:after {\n            opacity: 1;\n          }\n        }\n      }\n    }\n  }\n\n  &:not(.btn):not(.icon) {\n    height: 17px;\n    &:after {\n      top: -2px;\n      border-color: var(--link-color);\n    }\n  }\n\n  &:empty,\n  &.btn-empty {\n    @include padding-left(8px);\n    @include padding-right(8px);\n  }\n}\n\n@keyframes rotator {\n  0% {\n    -webkit-transform: rotate(0);\n    transform: rotate(0);\n  }\n\n  to {\n    -webkit-transform: rotate(1turn);\n    transform: rotate(1turn);\n  }\n}\n\n/* spinner */\n.spinner {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--size, 24px);\n  height: var(--size, 34px);\n\n  &:before {\n    display: block;\n    content: '';\n    font-size: 0;\n    animation: rotator 0.7s linear infinite;\n    box-sizing: border-box;\n    width: var(--size, 20px);\n    height: var(--size, 20px);\n    object-fit: scale-down;\n    border-radius: 50%;\n    border: 2px solid transparent;\n    border-right-color: currentColor;\n    border-bottom-color: currentColor;\n    opacity: 0.8;\n  }\n\n  &.small {\n    --size: 12px;\n  }\n\n  &.big {\n    --size: 48px;\n  }\n\n  &.spinner-absolute {\n    position: absolute;\n    width: var(--size, 20px);\n    height: var(--size, 20px);\n    top: var(--elements-busy-top-position);\n    left: calc(50% - var(--size, 20px) / 2);\n  }\n}\n\n.btn + .spinner {\n  @include margin-left(7px);\n}\n\n.buttons .btn + .spinner,\n.buttons .btngroup + .spinner {\n  @include margin-left(0);\n}\n\n.buttons.right .btn + .spinner {\n  @include margin-right(var(--neg-padding));\n}\n\n/* small buttons */\n.btngroup.small .btn,\n.btn.small {\n  padding: 0 var(--s) !important;\n  font-size: 12px;\n  line-height: 22px;\n}\n\n.btngroup.small,\n.btngroup.small input.btn,\n.btn.small,\n.btn.small + .spinner {\n  height: 22px;\n}\n\n/* big buttons */\n.btngroup.big .btn,\n.btn.big {\n  padding: 0 14px;\n  font-size: 14px;\n  line-height: 36px;\n}\n\n.btn.big[data-icon]:before,\n.preview-btn:before,\n.view-btn:before {\n  @include margin-left(-2px);\n}\n\n.btngroup.big,\n.btngroup.big input.btn,\n.btn.big,\n.btn.big + .spinner {\n  height: 36px;\n}\n\n/* huge buttons */\n.btn.huge {\n  padding: var(--l);\n  line-height: 48px;\n  height: 48px;\n}\n\n/* special buttons */\n.btn {\n  &.submit,\n  &.secondary {\n    color: var(--white) !important;\n    --ui-control-active-color: var(--white);\n    @include light-on-dark-text;\n  }\n\n  &.submit {\n    background-color: var(--primary-color) !important;\n\n    &:not(.disabled):not(.inactive):not(.loading) {\n      &:hover,\n      &.hover,\n      &:focus {\n        background-color: darken($primaryColor, 5%) !important;\n      }\n\n      &:active,\n      &.active,\n      &[aria-expanded='true'] {\n        background-color: darken($primaryColor, 10%) !important;\n      }\n    }\n  }\n\n  &.caution {\n    background-color: var(--red-050) !important;\n    color: var(--error-color);\n\n    &:hover,\n    &.hover,\n    &:focus {\n      background-color: darken($red050, 5%) !important;\n    }\n\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      background-color: var(--red-100) !important;\n    }\n  }\n}\n\n.secondary-buttons .btn.submit,\n.btn.secondary {\n  background-color: var(--secondary-color) !important;\n}\n\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):hover,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading).hover,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):focus,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):hover,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading).hover,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):focus {\n  background-color: darken($secondaryColor, 5%) !important;\n}\n\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading):active,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading).active,\n.secondary-buttons\n  .btn.submit:not(.disabled):not(.inactive):not(.loading)[aria-expanded='true'],\n.btn.secondary:not(.disabled):not(.inactive):not(.loading):active,\n.btn.secondary:not(.disabled):not(.inactive):not(.loading).active,\n.btn.secondary:not(.disabled):not(.inactive):not(\n    .loading\n  )[aria-expanded='true'] {\n  background-color: darken($secondaryColor, 10%) !important;\n}\n\ndiv.btn.submit {\n  position: relative;\n  overflow: hidden;\n}\n\ndiv.btn.submit input {\n  position: absolute;\n  left: 100%;\n}\n\n/* dashed buttons */\n.btn.dashed {\n  border: 1px dashed var(--medium-hairline-color);\n  background-color: transparent;\n\n  .btngroup &:not(:last-child):not(.btngroup-btn-last) {\n    @include border-right(1px solid transparent);\n    @include margin-right(-1px);\n  }\n\n  &:focus {\n    background-color: transparentize($grey200, 0.9);\n    border-color: transparent;\n\n    .reduce-focus-visibility &:not(:focus-visible) {\n      border: 1px dashed var(--medium-hairline-color);\n    }\n  }\n\n  &:not(.disabled) {\n    &:active,\n    &.active,\n    &[aria-expanded='true'] {\n      background-color: transparentize($grey200, 0.75);\n    }\n  }\n}\n\n/* chevron buttons */\n.chevron-btns {\n  display: flex;\n  justify-content: flex-start;\n\n  .btn {\n    position: relative;\n    padding: 0;\n    border-radius: 0;\n    background-color: transparent;\n\n    &.current-step,\n    &.active-drop-target {\n      color: var(--white);\n      --text-color: var(--white);\n      --ui-control-color: var(--white);\n      --ui-control-bg-color: var(--gray-500);\n      --ui-control-hover-bg-color: #{darken($grey500, 5%)};\n      --ui-control-active-bg-color: #{darken($grey500, 10%)};\n    }\n\n    &.current-step {\n      @include light-on-dark-text;\n      @include light-focus-ring;\n    }\n\n    &:focus {\n      z-index: 1;\n      box-shadow: none;\n\n      .label {\n        z-index: 1;\n        box-shadow: var(--focus-ring);\n      }\n\n      .reduce-focus-visibility &:not(:focus-visible) .label {\n        box-shadow: none;\n      }\n    }\n\n    .reduce-focus-visibility &:focus-visible .label {\n      box-shadow: var(--focus-ring);\n    }\n\n    &:not(.has-action-menu) {\n      @include padding-right(calc(var(--ui-control-height) / 2));\n      @include margin-right(2.8px);\n\n      &:not(.current-step[data-disclosure-trigger]) .btn-body {\n        @include padding-right(5px);\n      }\n    }\n\n    &.current-step[data-disclosure-trigger] .btn-body {\n      @include padding-left(8px);\n\n      .label {\n        padding: 3px;\n\n        &:after {\n          @include angle;\n          position: relative;\n        }\n      }\n    }\n\n    .btn-body {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      height: var(--ui-control-height);\n      background-color: var(--ui-control-bg-color);\n\n      [data-icon] {\n        --ui-control-height: calc((13rem / 16)); // 1rem == 16px\n        text-align: center;\n        @include margin-right(0);\n      }\n    }\n\n    .label {\n      display: inline-flex;\n      align-items: center;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    &.has-action-menu .btn-body {\n      @include padding-right(1px);\n      @include margin-right(0);\n    }\n\n    .chevron-right,\n    .chevron-left {\n      position: absolute;\n      top: 0;\n      height: 100%;\n      width: calc(var(--ui-control-height) / 2);\n    }\n\n    .chevron-left {\n      @include left(0);\n      border-top: calc(var(--ui-control-height) / 2) solid\n        var(--ui-control-bg-color);\n      @include border-left(\n        calc(var(--ui-control-height) / 2) solid transparent\n      );\n\n      &:after {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        bottom: 0;\n        @include right(0);\n        border-bottom: calc(var(--ui-control-height) / 2) solid\n          var(--ui-control-bg-color);\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n    }\n\n    .chevron-right {\n      @include right(0);\n      border-top: calc(var(--ui-control-height) / 2) solid transparent;\n      border-bottom: calc(var(--ui-control-height) / 2) solid transparent;\n      @include border-left(\n        calc(var(--ui-control-height) / 2) solid var(--ui-control-bg-color)\n      );\n    }\n  }\n\n  ol {\n    position: relative;\n    @include padding-left(0);\n    list-style-type: none;\n    display: flex;\n\n    li {\n      &.first-step .btn {\n        .btn-body {\n          @include padding-left(14px);\n          @include border-radius(\n            var(--ui-control-border-radius),\n            0,\n            0,\n            var(--ui-control-border-radius)\n          );\n        }\n\n        .chevron-left {\n          display: none;\n        }\n      }\n\n      &:not(.first-step) .btn {\n        @include margin-left(calc(-1 * (var(--ui-control-height) / 2)));\n        @include padding-left(calc(var(--ui-control-height) / 2));\n\n        .btn-body {\n          @include padding-left(7px);\n        }\n      }\n    }\n  }\n}\n\n/* color inputs */\n.color-input-container {\n  position: relative;\n\n  .color-hex-indicator {\n    position: absolute;\n    top: 0;\n    @include left(7px);\n    width: 1em;\n    line-height: 34px;\n    text-align: center;\n    user-select: none;\n  }\n}\n\n.color-input {\n  @include fixed-width-font;\n  @include padding-left(calc(7px + 1em));\n}\n\n.color {\n  display: inline-block;\n  position: relative;\n  vertical-align: middle;\n  width: 34px;\n  height: 34px;\n  border-radius: 17px;\n  padding: 0;\n\n  &:not(.static):not(.noteditable) {\n    cursor: pointer;\n  }\n\n  &:not(.small) {\n    @include checkered-bg(17px);\n  }\n\n  &.small {\n    width: 16px;\n    height: 16px;\n    @include checkered-bg(8px);\n  }\n\n  .color-preview {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    width: 100%;\n    height: 100%;\n    border-radius: 17px;\n    box-shadow: inset 0 0 0 1px transparentize($black, 0.85);\n\n    &:focus-within {\n      @include input-focused-styles;\n    }\n\n    & > .color-preview-input {\n      position: absolute;\n      @include left(0);\n      width: 100%;\n      height: 100%;\n      margin: 0;\n      padding: 0;\n      border: none;\n      opacity: 0;\n    }\n  }\n}\n\n.colorhex {\n  display: inline-block;\n  margin-left: 5px;\n  vertical-align: middle;\n  color: var(--medium-text-color);\n}\n\n/* lightswitch */\n.lightswitch-outer-container {\n  display: flex;\n\n  .lightswitch-inner-container {\n    border: 1px solid var(--hairline-color);\n    border-radius: var(--small-border-radius);\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    padding-left: 7px;\n    padding-right: 7px;\n\n    span {\n      flex-grow: 1;\n      padding: 7px 0;\n      color: var(--medium-text-color);\n      cursor: default;\n      overflow: auto;\n      overflow-wrap: break-word;\n      hyphens: auto;\n\n      &[data-toggle='on'] {\n        @include margin-left(7px);\n      }\n\n      &[data-toggle='off'] {\n        @include margin-right(7px);\n        text-align: right;\n\n        body.rtl & {\n          text-align: left;\n        }\n      }\n    }\n  }\n}\n\n.lightswitch {\n  display: block;\n  position: relative;\n  border: none !important;\n  overflow: hidden;\n  cursor: pointer;\n  user-select: none;\n  background-image: linear-gradient(to right, var(--gray-400), var(--gray-400));\n  transition: background-image linear 100ms;\n\n  &.on {\n    background-image: linear-gradient(\n      to right,\n      var(--enabled-color),\n      var(--enabled-color)\n    );\n  }\n\n  &.indeterminate {\n    background-image: linear-gradient(\n      to right,\n      var(--enabled-color),\n      var(--gray-300)\n    );\n  }\n\n  .lightswitch-container {\n    position: relative;\n    height: 100%;\n\n    .handle {\n      position: absolute;\n      top: 1px;\n      background-color: var(--white);\n    }\n  }\n\n  &:not(.small) {\n    border-radius: 11px;\n    min-width: 34px;\n    width: 34px;\n    height: 22px;\n\n    .lightswitch-container {\n      @include margin-left(-12px);\n      width: 46px;\n\n      .handle {\n        border-radius: 10px;\n        width: 20px;\n        height: 20px;\n        left: calc(50% - 10px);\n      }\n    }\n  }\n\n  &.small {\n    border-radius: 9px;\n    width: 28px;\n    height: 18px;\n\n    .lightswitch-container {\n      @include margin-left(-10px);\n      width: 38px;\n\n      .handle {\n        border-radius: 8px;\n        width: 16px;\n        height: 16px;\n        left: calc(50% - 8px);\n      }\n    }\n  }\n\n  table & {\n    display: inline-block;\n    margin-bottom: -5px;\n  }\n\n  &.on {\n    .lightswitch-container {\n      @include margin-left(0);\n    }\n  }\n\n  &.indeterminate {\n    &:not(.small) {\n      .lightswitch-container {\n        @include margin-left(0.5 * -12px);\n      }\n    }\n    &.small {\n      .lightswitch-container {\n        @include margin-left(0.5 * -10px);\n      }\n    }\n  }\n}\n\n/* pagination */\n.pagination {\n  table.data + & {\n    margin-top: 24px;\n  }\n\n  .page-link {\n    width: calc(30rem / 16);\n    height: calc(30rem / 16);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: var(--medium-border-radius);\n\n    &:after {\n      position: relative;\n      transition: border-color linear 100ms;\n    }\n\n    &.prev-page:after {\n      @include angle(left, var(--light-text-color));\n      @include right(-1px);\n    }\n\n    &.next-page:after {\n      @include angle(right, var(--light-text-color));\n      @include left(-1px);\n    }\n\n    &:not(.disabled) {\n      transition: box-shadow linear 100ms;\n      box-shadow: inset 0 0 0 1px var(--hairline-color);\n      cursor: pointer;\n\n      &:hover {\n        text-decoration: none;\n        box-shadow: inset 0 0 0 1px var(--link-color);\n\n        &:after {\n          border-color: var(--link-color);\n        }\n      }\n\n      @include focus-styles {\n        box-shadow:\n          inset 0 0 0 1px var(--hairline-color),\n          var(--focus-ring);\n      }\n    }\n\n    &.disabled {\n      opacity: 1;\n      &:after {\n        border-color: var(--hairline-color);\n      }\n    }\n  }\n}\n\n/* action buttons */\n.actions {\n  @include floatright;\n}\n\n.actions > li {\n  @include floatleft;\n}\n\n.actions > li + li {\n  @include margin-left(10px);\n}\n\nh1 + .actions {\n  margin-top: -100px;\n}\n\nh2 + .actions {\n  margin-top: -54px;\n}\n\n/* ----------------------------------------\n/*  Tables\n/* ----------------------------------------*/\n\n.tablepane {\n  --pane-y-padding-default: calc(var(--xl) - 2px);\n  --pane-x-padding-default: calc(var(--padding) - 2px);\n  margin: calc(var(--pane-padding, var(--pane-y-padding-default)) * -1)\n    calc(var(--pane-padding, var(--pane-x-padding-default)) * -1)\n    calc(\n      var(--pane-padding, var(--padding)) * -1 + var(--pane-padding, var(--m))\n    );\n  padding: 0 !important;\n  overflow-x: auto;\n\n  table.data {\n    th,\n    td {\n      &:first-child:not(.checkbox-cell):not(.vuetable-th-slot-checkbox) {\n        @include padding-left(\n          var(--pane-padding, var(--pane-x-padding-default))\n        );\n      }\n\n      &:last-child {\n        @include padding-right(\n          var(--pane-padding, var(--pane-x-padding-default))\n        );\n      }\n    }\n  }\n}\n\ntable {\n  &.fixed-layout {\n    table-layout: fixed;\n  }\n\n  th.thin,\n  td.thin {\n    width: 0.01% !important;\n    white-space: nowrap;\n  }\n\n  thead {\n    th {\n      font-weight: bold;\n      @include alignleft;\n      vertical-align: top;\n    }\n  }\n\n  // plain tables\n  &:not(.data) {\n    th,\n    td {\n      padding-top: 7px;\n      padding-bottom: 7px;\n\n      &:not(:first-child) {\n        padding-left: 12px;\n      }\n      &:not(:last-child) {\n        padding-right: 12px;\n      }\n    }\n  }\n\n  // data tables\n  &.data {\n    th,\n    td {\n      position: relative;\n      padding-left: 12px;\n      padding-right: 12px;\n      box-sizing: border-box;\n\n      &.checkbox-cell,\n      &.vuetable-th-slot-checkbox {\n        width: var(--checkbox-size) !important;\n        min-width: var(--checkbox-size);\n        box-sizing: content-box;\n        position: relative;\n\n        input.checkbox + label,\n        div.checkbox {\n          position: absolute;\n          top: calc(50% - 8rem / 16);\n        }\n      }\n    }\n\n    th {\n      font-weight: bold;\n    }\n\n    thead:first-child,\n    tbody:first-child,\n    tfoot:first-child,\n    caption + thead,\n    caption + tbody,\n    caption + tfoot {\n      tr:first-child {\n        th,\n        td {\n          &:first-child {\n            @include border-top-left-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n            @include border-bottom-left-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n          }\n          &:last-child {\n            @include border-top-right-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n            @include border-bottom-right-radius(\n              var(--border-radius, var(--small-border-radius))\n            );\n          }\n        }\n      }\n    }\n\n    thead {\n      th,\n      td {\n        width: auto;\n        background-color: var(--gray-050);\n        cursor: default;\n      }\n\n      th:not(.orderable),\n      td {\n        padding-top: var(--s);\n        padding-bottom: var(--s);\n      }\n\n      th {\n        white-space: nowrap;\n        vertical-align: middle;\n\n        &.orderable {\n          position: relative;\n          padding: 0 !important;\n\n          body:not(.dragging) &:not(.ordered):hover {\n            background-color: var(--gray-100);\n          }\n\n          &.ordered {\n            background-color: var(--light-sel-color);\n\n            &:not(.loading) {\n              button:after {\n                @include angle(up);\n                position: absolute;\n                @include right(var(--m));\n                top: calc(50% - 3px);\n              }\n\n              &.desc button:after {\n                transform: rotate(45deg);\n              }\n            }\n          }\n\n          button {\n            position: relative;\n            @include padding-right(35px);\n            font: inherit;\n            width: 100%;\n            padding: var(--pane-padding, var(--m)) var(--m);\n            @include alignleft;\n\n            &:focus {\n              z-index: 1;\n            }\n          }\n        }\n\n        &:not(.loading) {\n          .spinner {\n            display: none;\n          }\n        }\n\n        .spinner {\n          position: absolute;\n          top: calc(50% - 6px);\n          @include right(8px);\n          --size: 12px;\n        }\n      }\n    }\n\n    tbody {\n      tr {\n        --hover-bg-color: var(--gray-050);\n        --selected-bg-color: var(--dark-sel-color);\n\n        &:not(.disabled) {\n          &:hover {\n            th,\n            td {\n              background-color: var(--hover-bg-color);\n            }\n          }\n\n          &:focus {\n            position: relative;\n            z-index: 1;\n          }\n\n          &.sel,\n          &.active-drop-target {\n            --text-color: var(--white);\n            --medium-dark-text-color: var(--white);\n            --medium-text-color: var(--white);\n            --light-text-color: var(--white);\n            --link-color: var(--white);\n            --ui-control-color: var(--white);\n            @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n\n            th,\n            td {\n              color: var(--white);\n              background-color: var(--selected-bg-color);\n            }\n          }\n        }\n      }\n\n      th,\n      td {\n        padding-top: 7px;\n        padding-bottom: 7px;\n        background-clip: padding-box;\n        max-width: 33vw;\n      }\n\n      td {\n        &.timestamp {\n          @include alignright;\n          vertical-align: bottom;\n          white-space: nowrap;\n          color: var(--light-text-color);\n        }\n      }\n    }\n\n    thead + tbody tr,\n    tr + tr {\n      th,\n      td {\n        border-top: 1px solid transparent;\n      }\n    }\n\n    tr.sel:not(.draggee) + tr.sel:not(.draggee) {\n      th,\n      td {\n        border-top-color: var(--gray-300);\n      }\n    }\n  }\n\n  // collapsable data tables for small screens\n  // based on Aaron Gustafson's technique: http://blog.easy-designs.net/archives/2013/02/02/responsive-tables/\n  &.collapsed {\n    width: auto;\n\n    &,\n    tbody,\n    tbody tr,\n    tbody th,\n    tbody td {\n      display: block;\n      border: none;\n      padding: 0;\n      @include alignleft;\n      width: auto !important;\n      white-space: normal;\n    }\n\n    thead {\n      display: none;\n    }\n\n    tbody {\n      tr {\n        padding: 6px 0;\n        border-bottom: 1px dotted var(--hairline-color);\n\n        &:after {\n          @include clearafter;\n        }\n      }\n\n      th,\n      td {\n        padding: 2px 0 !important;\n      }\n\n      td {\n        &:empty {\n          display: none;\n        }\n      }\n\n      [data-title] {\n        @include margin-right(0);\n\n        &:before {\n          margin-right: 5px;\n          content: attr(data-title) ':';\n          font-weight: bold;\n        }\n\n        form {\n          display: inline-block;\n        }\n      }\n    }\n  }\n}\n\n.datatablesorthelper,\n.editabletablesorthelper {\n  background-color: var(--white);\n  @include shadow;\n}\n\n.datatablesorthelper,\n.datatablesorthelper .chip,\n.datatablesorthelper a {\n  cursor: move !important;\n}\n\n.datatablesorthelper tr:first-child th,\n.datatablesorthelper tr:first-child td {\n  border-top: none !important;\n}\n\n.datatablesorthelper tr:last-child th,\n.datatablesorthelper tr:last-child td {\n  border-bottom: none !important;\n}\n\n.datatablesorthelper th .toggle {\n  display: none !important;\n}\n\n.chip,\n.card {\n  color: var(--custom-text-color, var(--text-color));\n  background-color: var(--custom-bg-color, var(--gray-050));\n}\n\n/* chips */\n.chip {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  cursor: default;\n  user-select: none;\n  font-weight: normal;\n  padding: 0 var(--s);\n  max-width: 100%;\n  gap: var(--xs);\n  border-radius: var(--large-border-radius);\n\n  &.small {\n    flex-direction: row;\n    min-height: calc(26rem / 16 + 8px);\n    --thumb-size: calc(30rem / 16);\n\n    & > .thumb {\n      @include margin(0, 2px, 0, -2px);\n\n      &.cp-icon {\n        --thumb-size: 1rem; // 16px\n      }\n    }\n  }\n\n  &.large {\n    flex-direction: column;\n    --thumb-size: 120px;\n    min-width: calc(var(--s) * 2 + var(--thumb-size));\n    width: 100%;\n    padding-top: var(--xs);\n    padding-bottom: var(--xs);\n\n    .chip-content {\n      width: 100%;\n    }\n  }\n\n  .chip-content {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--s);\n    max-width: 100%;\n\n    .status,\n    .icon {\n      @include margin-right(0);\n    }\n\n    .icon {\n      margin: -4px -1px 0;\n    }\n\n    .chip-actions {\n      margin-left: auto;\n    }\n  }\n\n  &.sel,\n  li.sel &,\n  li.active-drop-target & {\n    --text-color: var(--white);\n    --custom-text-color: var(--white) !important;\n    --medium-dark-text-color: var(--white);\n    --medium-text-color: var(--white);\n    --light-text-color: var(--white);\n    --link-color: var(--white);\n    --ui-control-color: var(--white);\n    @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n    color: var(--white);\n    background-color: var(\n      --custom-sel-bg-color,\n      var(--dark-sel-color)\n    ) !important;\n\n    .cp-icon {\n      --icon-color: var(--white) !important;\n    }\n  }\n\n  &.sel,\n  .sel & {\n    cursor: default;\n\n    .thumb {\n      filter: brightness(0.85);\n\n      img {\n        box-shadow:\n          0 0 0 1px transparentize($darkSelColor, 0.9),\n          0 6px 4px -4px transparentize($darkSelColor, 0.8);\n      }\n    }\n  }\n\n  .offset-drag-helper & {\n    background-color: var(--gray-050);\n    @include shadow;\n  }\n\n  & > .thumb {\n    flex: 0 0 auto;\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--thumb-size);\n    height: var(--thumb-size);\n\n    &.rounded {\n      img,\n      svg {\n        border: var(--xs) solid transparent;\n        border-radius: 50%;\n      }\n    }\n\n    &.checkered img {\n      @include checkered-bg(8px);\n    }\n\n    img,\n    svg {\n      display: block;\n      flex-shrink: 0;\n      border-radius: var(--small-border-radius);\n      max-width: 100%;\n      max-height: 100%;\n    }\n\n    svg {\n      width: 100%;\n    }\n  }\n}\n\n.cp-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--icon-size);\n  height: var(--icon-size);\n  max-width: var(--icon-size);\n\n  svg {\n    width: var(--icon-size);\n    height: var(--icon-size);\n    max-width: var(--icon-size) !important;\n    max-height: var(--icon-size) !important;\n    @include svg-mask(var(--icon-color, var(--ui-control-color)));\n  }\n\n  &.large {\n    --icon-size: calc(20rem / 16);\n  }\n\n  &.small {\n    --icon-size: calc(14rem / 16);\n  }\n\n  &.puny {\n    --icon-size: calc(12rem / 16);\n  }\n}\n\n.chips,\n.cards {\n  display: flex;\n  --custom-bg-color: initial;\n  --custom-text-color: initial;\n  --custom-sel-bg-color: initial;\n\n  &:not(.inline-chips) {\n    flex-direction: column;\n  }\n\n  li {\n    max-width: 100%;\n  }\n}\n\n.cards {\n  gap: var(--s);\n}\n\n.chips {\n  align-items: flex-start;\n  gap: var(--xs);\n}\n\n.inline-chips {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: var(--xs);\n\n  .chip {\n    margin: 0 !important;\n  }\n}\n\n.elements.inline-chips {\n  display: grid;\n  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));\n}\n\n/** cards */\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  padding: var(--m);\n  gap: var(--m);\n  border-radius: var(--large-border-radius);\n  cursor: default;\n  user-select: none;\n  width: 100%;\n\n  &:after {\n    border-radius: var(--large-border-radius);\n  }\n\n  &.sel,\n  li.sel & {\n    --text-color: var(--white);\n    --custom-text-color: var(--white) !important;\n    --medium-dark-text-color: var(--white);\n    --medium-text-color: var(--white);\n    --light-text-color: var(--white);\n    --link-color: var(--white);\n    --ui-control-color: var(--white);\n    @include custom-color-focus-ring(hsl(var(--light-focus-hsl)));\n    color: var(--white);\n    background-color: var(\n      --custom-sel-bg-color,\n      var(--dark-sel-color)\n    ) !important;\n\n    & > .thumb {\n      background-color: var(--dark-sel-color) !important;\n      filter: brightness(0.85);\n    }\n  }\n\n  & > .thumb {\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    margin: calc(var(--m) * -1);\n    @include margin-right(0);\n    width: 128px;\n    min-width: 128px; // needed for flex\n    min-height: calc(var(--m) * 2 + var(--lh) * 3 + var(--xs));\n    background-color: var(--gray-100);\n    overflow: hidden;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: 0;\n      bottom: 0;\n      @include shadow();\n      width: 10px;\n\n      body.ltr & {\n        right: -10px;\n      }\n\n      body.rtl & {\n        left: -10px;\n      }\n    }\n\n    &,\n    &:after {\n      @include border-radius(\n        var(--large-border-radius),\n        0,\n        0,\n        var(--large-border-radius)\n      );\n    }\n\n    img,\n    svg {\n      width: 100%;\n      max-height: 128px;\n      object-fit: cover;\n    }\n  }\n\n  & > .cp-icon {\n    @include margin(0, -4px, 0, -2px);\n  }\n\n  .card-content,\n  .card-content .card-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--xs);\n    flex: 1;\n  }\n\n  .card-content {\n    margin: calc((1rem - var(--lh)) / 2) 0;\n    flex: 1 0 0 !important;\n    overflow: hidden;\n    position: relative;\n    --focus-ring: var(--inner-focus-ring);\n\n    .card-heading {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      gap: 5px;\n\n      .status {\n        margin: 0;\n        flex: 0 0 10px;\n      }\n\n      .label {\n        font-weight: 600;\n      }\n    }\n\n    .card-body {\n      &:empty {\n        display: none;\n      }\n\n      & > * {\n        --max-lines: 2;\n        margin: 0;\n        max-height: calc(var(--lh) * var(--max-lines));\n        overflow: hidden;\n        text-wrap: pretty;\n      }\n\n      .checkbox-preview-label {\n        display: inline;\n        font-style: italic;\n        margin-inline-start: 5px;\n      }\n    }\n  }\n\n  & > .card-actions-container {\n    display: flex;\n    align-items: flex-start !important;\n    position: relative;\n  }\n}\n\n.card-grid {\n  display: grid !important;\n  gap: var(--s) !important;\n  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n\n  & > li {\n    border-radius: var(--large-border-radius);\n\n    & > .card {\n      margin: 0 !important;\n      height: 100%;\n    }\n  }\n}\n\n// Adjust the columns when in live preview\n.lp-editor-container .card-grid {\n  grid-template-columns: minmax(0, 1fr);\n}\n\n.context-label,\n.context-menu-container {\n  display: inline-flex;\n  align-items: center;\n  @include margin-left(var(--xs));\n  height: var(--touch-target-size);\n  padding: 0 var(--s);\n  font-size: 11px;\n  font-weight: normal;\n  text-decoration: none !important;\n  color: var(--light-text-color);\n  border-radius: calc(var(--touch-target-size) / 2);\n  border: 1px solid var(--medium-hairline-color);\n}\n\n.context-menu-container {\n  @include padding-right(0);\n\n  .menubtn:not(.action-btn) {\n    @include margin(0, -1px, 0, 0);\n    @include padding-right(2px !important);\n    @include border-left(1px solid var(--medium-hairline-color));\n    @include border-radius(\n      0,\n      calc(var(--touch-target-size) / 2),\n      calc(var(--touch-target-size) / 2),\n      0\n    );\n\n    &:hover {\n      border-color: var(--dark-hairline-color) !important;\n    }\n  }\n\n  > * {\n    display: inline-block;\n    @include padding-right(var(--s));\n  }\n}\n\n// fix for context menus that are only children\n.context-menu-container .menubtn:not(.action-btn):only-child,\n.context-menu-container\n  .visually-hidden:first-child\n  + .menubtn:not(.action-btn):last-child {\n  margin: 0 calc(var(--s) * -1);\n  border-left: none !important;\n  border-radius: calc(var(--touch-target-size) / 2) !important;\n}\n\n.chip,\n.card {\n  // prevent double focus ring (chip/card already gets it)\n  .checkbox:before {\n    box-shadow: none !important;\n  }\n\n  .label {\n    display: flex;\n    align-items: center;\n    gap: var(--xs);\n    overflow: hidden;\n\n    .label-link {\n      flex: 1 1 0;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n\n      &:focus {\n        box-shadow: var(--inner-focus-ring);\n      }\n    }\n\n    .segment:after {\n      display: inline-flex !important;\n      position: relative;\n      top: -2px;\n      @include margin(0, 5px, 0, 2px);\n      @include angle(right, var(--light-text-color), calc(1rem / 16));\n\n      .sel & {\n        @include angle(right, var(--white), calc(1rem / 16));\n      }\n    }\n  }\n\n  & > .chip-content > .chip-actions,\n  & > .card-actions-container > .card-actions {\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    gap: var(--s);\n    min-height: 1rem;\n\n    &:empty {\n      display: none;\n    }\n\n    & > .status {\n      margin: 0;\n    }\n\n    & > .action-btn,\n    & > .move {\n      @include touch-target;\n      margin: 0 -4px;\n      &:before {\n        color: var(--custom-text-color, var(--ui-control-color));\n      }\n    }\n\n    .action-btn {\n      background-color: transparent;\n\n      &:before {\n        @include margin-right(0 !important);\n      }\n\n      &:hover,\n      &:active,\n      &[aria-expanded='true'] {\n        backdrop-filter: brightness(90%);\n      }\n    }\n\n    .move {\n      margin-top: -3px !important;\n    }\n  }\n\n  &.error .label .label-link {\n    color: var(--error-color);\n  }\n}\n\n.element-index {\n  .source-path {\n    background-color: var(--gray-050);\n    border-radius: 3px;\n    --ui-control-bg-color: var(--light-sel-color);\n    --ui-control-hover-bg-color: #{darken($lightSelColor, 5%)};\n    --ui-control-active-bg-color: #{darken($lightSelColor, 10%)};\n\n    .chevron-btns {\n      display: inline-flex;\n      position: relative;\n      background: $white;\n      --ui-control-height: calc((30rem / 16)); // 1rem == 16px\n\n      &:before {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        top: 0;\n        width: 0;\n        height: 0;\n        @include right(0);\n        border-top: calc(var(--ui-control-height) / 2) solid $grey050;\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n\n      &:after {\n        display: block;\n        content: '';\n        font-size: 0;\n        position: absolute;\n        top: calc(var(--ui-control-height) / 2);\n        @include right(0);\n        border-bottom: calc(var(--ui-control-height) / 2) solid $grey050;\n        @include border-left(\n          calc(var(--ui-control-height) / 2) solid transparent\n        );\n      }\n\n      .btn {\n        --ui-control-border-radius: 3px;\n      }\n    }\n\n    .btn.settings {\n      box-shadow: 0 0 0 2px var(--white);\n    }\n  }\n\n  &.main {\n    .source-path {\n      margin: -22px calc(var(--padding) * -1 + 2px) 24px;\n    }\n  }\n\n  .elementselectormodal & {\n    .source-path {\n      margin-bottom: 2px;\n    }\n  }\n\n  &.pane {\n    .toolbar {\n      position: relative;\n      z-index: 2;\n      margin: calc(var(--pane-padding) * -1) calc(var(--pane-padding) * -1)\n        var(--pane-padding) !important;\n      border-radius: calc(var(--large-border-radius) - 1px)\n        calc(var(--large-border-radius) - 1px) 0 0;\n      padding: var(--pane-padding);\n      box-shadow: 0 1px 0 var(--hairline-color);\n      background-color: var(--gray-050);\n    }\n\n    .header {\n      padding-top: var(--pane-padding);\n      padding-bottom: var(--pane-padding);\n      background-color: transparent;\n      border-bottom: 1px solid var(--hairline-color);\n    }\n\n    .elements {\n      --border-radius: 0;\n\n      .tableview table.data thead {\n        th,\n        td {\n          border-bottom: 1px solid var(--hairline-color);\n          &:not(.ordered) {\n            background-color: transparent;\n          }\n        }\n      }\n    }\n\n    .footer {\n      border-radius: 0 0 calc(var(--large-border-radius) - 1px)\n        calc(var(--large-border-radius) - 1px) !important;\n      box-shadow: none;\n      border-top: 1px solid var(--hairline-color);\n      background: transparent;\n    }\n  }\n\n  craft-proxy-scrollbar {\n    position: sticky;\n    width: calc(100% + var(--xl) * 2);\n    margin-inline: calc(var(--xl) * -1);\n  }\n}\n\n.elements {\n  position: relative;\n\n  &:not(.busy) {\n    .update-spinner {\n      display: none;\n    }\n  }\n\n  &.busy {\n    min-height: 72px;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      z-index: 100;\n      top: 0;\n      left: calc(var(--pane-padding, 24px) * -1);\n      width: calc(100% + var(--pane-padding, 24px) + var(--pane-padding, 24px));\n      height: 100%;\n      background: transparentize($white, 0.25);\n      border-radius: var(--large-border-radius);\n    }\n  }\n\n  .header {\n    margin: calc(var(--xl) * -1 + 2px) calc(var(--padding) * -1 + 2px) var(--xl);\n    padding: var(--s);\n    background-color: var(--gray-050);\n    box-shadow: none;\n    border-radius: var(--border-radius, var(--small-border-radius));\n\n    &:after {\n      content: '';\n    }\n\n    .selectallcontainer {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n      cursor: default;\n    }\n  }\n\n  .tableview tr.draggee th,\n  .tableview tr.draggee td,\n  .thumbsview li.draggee {\n    opacity: 0.25;\n  }\n\n  // table views\n  .tableview {\n    th {\n      .move,\n      .toggle {\n        display: flex;\n        position: absolute;\n        justify-content: center;\n        align-items: center;\n        top: 50%;\n        transform: translateY(-50%);\n        @include margin-left(calc(var(--touch-target-size) * -1));\n        width: var(--touch-target-size);\n        height: var(--touch-target-size);\n      }\n\n      .move {\n        font-size: 11px;\n        text-decoration: none;\n      }\n\n      .toggle {\n        text-align: center;\n        padding: 4px;\n        border-radius: 50%;\n      }\n\n      .move + .toggle {\n        @include margin-left(calc(var(--touch-target-size) * -2));\n      }\n\n      .enabled-label {\n        margin-left: var(--xs);\n      }\n    }\n\n    .chip {\n      background-color: transparent;\n    }\n  }\n\n  // thumbs views\n  .thumbsview {\n    display: grid;\n    gap: var(--xs);\n    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));\n\n    li {\n      position: relative;\n      @include margin(0, 1px, 1px, 0);\n      max-width: 226px;\n      border-radius: var(--large-border-radius);\n\n      &:hover {\n        .chip {\n          background-color: var(--gray-050);\n        }\n      }\n\n      &.sel {\n        a {\n          cursor: pointer !important;\n\n          &:hover {\n            text-decoration: underline;\n          }\n        }\n      }\n    }\n\n    .chip.large {\n      width: 100%;\n    }\n  }\n}\n\n.export-form {\n  position: relative;\n  .spinner {\n    position: absolute;\n    bottom: 0;\n    @include right(-24px);\n  }\n}\n\n/* structures */\n.structure {\n  position: relative;\n  z-index: 1;\n\n  li {\n    @include padding-left(8px);\n\n    &.collapsed > ul {\n      display: none;\n    }\n\n    .row:hover > .icon,\n    &.draghelper > .row .move,\n    .add.active {\n      opacity: 1;\n    }\n\n    &.draghelper {\n      & > .row {\n        .add {\n          opacity: 0;\n        }\n\n        .move:before {\n          color: var(--link-color);\n        }\n      }\n    }\n\n    &.draginsertion {\n      position: relative;\n      @include margin(-1px, 0, -1px, 8px);\n      @include padding-left(0);\n      height: 2px;\n      background-color: var(--link-color) !important;\n      @include border-left(none);\n      border-radius: 1px;\n    }\n\n    .toggle {\n      position: relative;\n      z-index: 1;\n      @include floatleft;\n      @include margin(10px, -8px, 0, -12px);\n      padding: 4px;\n    }\n\n    .row:after {\n      @include clearafter;\n    }\n\n    .move,\n    .add {\n      @include margin(5px, 5px, 0, 0);\n      opacity: 0;\n      transition: opacity linear 100ms;\n    }\n\n    .add {\n      padding: 0 5px;\n\n      &:before {\n        content: 'downangle';\n        color: var(--dark-hairline-color);\n      }\n\n      &:not(.disabled):hover:before,\n      &.active:before {\n        color: var(--link-color);\n      }\n    }\n\n    .checkbox {\n      @include floatleft;\n      @include margin(7px, 0, 0, 7px);\n    }\n  }\n\n  ul {\n    @include margin-left(-3px);\n\n    li {\n      @include padding-left(38px);\n      background-repeat: no-repeat;\n      --background-position-x: 0;\n      --background-position-y: -6px;\n      background-position: var(--background-position-x)\n        var(--background-position-y);\n\n      body.ltr & {\n        background-image: url(../images/branch.png);\n      }\n\n      body.rtl & {\n        --background-position-x: 100%;\n        background-image: url(../images/branch_rtl.png);\n      }\n\n      &:not(:last-child):not(.last) {\n        @include padding-left(37px);\n        @include border-left(1px solid var(--gray-200));\n\n        body.ltr & {\n          --background-position-x: -1px;\n        }\n\n        body.rtl & {\n          --background-position-x: calc(100% + 1px);\n        }\n      }\n\n      &.draginsertion {\n        @include margin-left(38px);\n      }\n    }\n  }\n\n  .row {\n    &.draghover {\n      .chip {\n        z-index: 2;\n        border-radius: 15px;\n        box-shadow: inset 0 0 0 2px var(--link-color);\n      }\n    }\n\n    &.droptarget {\n      border-radius: 5px;\n      box-shadow: inset 0 0 0 2px var(--link-color);\n    }\n  }\n}\n\n.elementselect .elements:not(:empty),\n.componentselect .components:not(:empty) {\n  & + .flex {\n    margin-top: var(--s);\n  }\n}\n\n/* element select fields */\n.elementselect {\n  position: relative;\n  min-height: 34px;\n\n  .flex,\n  .btn {\n    clear: both;\n  }\n\n  .structure {\n    .chip {\n      margin-top: var(--xs);\n    }\n\n    & > li {\n      @include padding-left(0);\n    }\n\n    ul {\n      @include margin-left(14px);\n\n      li {\n        --background-position-y: 0;\n      }\n    }\n  }\n}\n\n/* nested element cards */\n.nested-element-cards {\n  display: flex;\n  flex-direction: column;\n  gap: var(--s);\n\n  & > .pane {\n    margin: 0;\n  }\n}\n\n/* editable tables */\ntable.editable {\n  border-radius: var(--large-border-radius);\n  border: 1px solid var(--gray-200);\n\n  th,\n  td.heading,\n  td.action {\n    color: var(--medium-text-color);\n    font-weight: normal;\n    background-color: var(--gray-050);\n  }\n\n  thead,\n  tbody {\n    tr {\n      th {\n        padding: 6px 10px;\n      }\n    }\n  }\n\n  thead {\n    tr {\n      th {\n        border-bottom: 1px solid var(--hairline-color);\n\n        &.has-info {\n          @include padding-right(calc(15px + 1em));\n        }\n\n        span.info {\n          position: absolute;\n          margin-left: 5px;\n        }\n      }\n    }\n  }\n\n  tbody {\n    tr {\n      &:not(:first-child) {\n        th,\n        td {\n          border-top: 1px solid var(--hairline-color);\n        }\n      }\n\n      &:last-child {\n        td:first-child {\n          @include border-bottom-left-radius(var(--large-border-radius));\n\n          textarea,\n          input.text {\n            @include border-bottom-left-radius(\n              calc(var(--large-border-radius) - 1px)\n            );\n          }\n        }\n      }\n\n      td:not(:first-child),\n      th ~ td:not(.hidden) ~ td {\n        @include border-left(1px solid var(--hairline-color));\n      }\n\n      th {\n        // Set a dark border-left for the first <td> that follows a <th>, if there is one.\n        // This is a ridiculous CSS hack since there's no operator/pseudo-class that mimics jQuery's next(selector) function.\n        // If there was it could have been as simple as: th ??? td:not(.hidden) { dark left border }\n        // kudos to Mark Huot for coming up with it!\n        & ~ td:not(:first-child) {\n          @include border-left(1px solid #dbdddf);\n        }\n      }\n\n      td {\n        vertical-align: top;\n        text-align: center;\n        background-color: var(--white);\n        padding: 4px 10px;\n\n        &.focus {\n          position: relative;\n          box-shadow: inset 0 0 0 1px var(--hairline-color);\n        }\n\n        &.textual {\n          padding: 0;\n\n          .editable-table-preview {\n            @include alignleft;\n            white-space: pre-wrap;\n\n            & + textarea {\n              opacity: 0;\n              height: 0;\n              min-height: 0;\n              padding-top: 0;\n              padding-bottom: 0;\n            }\n          }\n\n          textarea {\n            resize: none;\n          }\n\n          pre {\n            @include alignleft;\n            white-space: pre-wrap;\n          }\n        }\n\n        &.lightswitch-cell {\n          padding-top: 9px;\n          padding-bottom: 9px;\n\n          .lightswitch {\n            display: block;\n            margin: 0 auto;\n          }\n        }\n\n        &.checkbox-cell {\n          padding-top: 10px;\n          padding-bottom: 10px;\n\n          .checkbox-wrapper {\n            display: block;\n            margin: -2px auto 0;\n            width: 16px;\n            height: 16px;\n          }\n        }\n\n        &.error {\n          box-shadow: inset 0 0 0 1px var(--error-color);\n        }\n\n        &.disabled {\n          position: relative;\n          opacity: 1;\n\n          &:after {\n            content: '';\n            font-size: 0;\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background-color: transparentize($grey050, 0.25);\n            user-select: none;\n          }\n        }\n\n        &.action {\n          padding: 4px 7px;\n\n          & + td.action {\n            @include border-left(none);\n            @include padding-left(0);\n          }\n        }\n\n        .flex > * {\n          margin-bottom: 0;\n        }\n      }\n    }\n\n    textarea,\n    textarea.text,\n    input.text,\n    pre,\n    .editable-table-preview {\n      display: block;\n      width: 100%;\n      border: none;\n      box-shadow: none;\n      border-radius: 0;\n      padding: 7px 10px;\n      line-height: 20px;\n      background-color: transparent;\n      overflow: hidden;\n      transition: none;\n      box-sizing: border-box;\n    }\n\n    .color-container {\n      display: block;\n      position: relative;\n\n      & > .color,\n      .color-input {\n        margin-bottom: 0;\n      }\n\n      & > .color {\n        position: absolute;\n        top: 10px;\n        @include left(10px);\n        z-index: 1;\n      }\n\n      .color-hex-indicator {\n        @include left(32px);\n      }\n\n      .color-input {\n        @include padding-left(calc(32px + 1em));\n      }\n    }\n\n    .datewrapper,\n    .timewrapper {\n      display: block;\n      width: calc(100% - 29px);\n\n      .text + div[data-icon] {\n        top: 6px;\n        @include left(10px);\n      }\n    }\n  }\n\n  &:not(.static) {\n    td.textual {\n      cursor: text;\n    }\n  }\n\n  & + .btn.add {\n    display: block;\n    width: 100%;\n  }\n\n  &:not(.hidden) + .btn.add {\n    border-top-width: 0;\n    border-radius: 0 0 var(--medium-border-radius) var(--medium-border-radius);\n  }\n}\n\n.border-box,\n.shadow-box {\n  & + .buttons {\n    margin-top: 7px;\n  }\n}\n\n/* ----------------------------------------\n/*  Nav\n/* ----------------------------------------*/\n\nul.tree,\n.tree ul {\n  @include margin-left(20px);\n}\n\n.tree li .toggle {\n  @include margin(7px, 0, 0, -15px);\n}\n\n/* status icons */\n.status {\n  flex: 0 0 auto;\n  display: inline-block;\n  position: relative;\n  @include margin-right(10px);\n  width: calc(12rem / 16);\n  height: calc(12rem / 16);\n  border: 1px solid transparent;\n  border-radius: 100%;\n  box-sizing: border-box;\n  background-clip: border-box;\n\n  body.use-shapes & {\n    &.all {\n      rotate: 45deg;\n      background-image: linear-gradient(30deg, #184cef, #e5422b);\n    }\n\n    &.pending {\n      background-color: transparent;\n      border-style: solid;\n      border-width: 0 5px 10px 5px;\n      border-color: transparent transparent var(--pending-color) transparent;\n      border-radius: 1px;\n    }\n\n    &.all,\n    &.off,\n    &.suspended,\n    &.expired {\n      border-radius: 2px;\n      transform: scale(90%);\n    }\n  }\n}\n\n.status:not(.on):not(.live):not(.active):not(.enabled):not(.all) {\n  &:not(.pending):not(.warning):not(.off):not(.suspended):not(.expired) {\n    &:not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow) {\n      &:not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky) {\n        &:not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia) {\n          &:not(.pink):not(.rose):not(.grey):not(.black) {\n            border-color: var(--ui-control-color);\n          }\n        }\n      }\n    }\n  }\n}\n\n.status.all {\n  background-image: linear-gradient(60deg, #184cef, #e5422b);\n  background-origin: border-box;\n}\n.status.on,\n.status.live,\n.status.active,\n.status.enabled {\n  background-color: var(--enabled-color);\n}\n.status.red,\n.bg-red,\n.status.off,\n.status.suspended,\n.status.expired {\n  background-color: var(--disabled-color);\n}\n.status.warning {\n  background-color: var(--warning-color);\n}\n.status.orange,\n.bg-orange,\n.status.pending {\n  background-color: var(--pending-color);\n}\n.status.amber,\n.bg-amber {\n  background-color: var(--amber-500);\n}\n.status.yellow,\n.bg-yellow {\n  background-color: var(--yellow-500);\n}\n.status.lime,\n.bg-lime {\n  background-color: var(--lime-500);\n}\n.status.green,\n.bg-green {\n  background-color: var(--green-600);\n}\n.status.emerald,\n.bg-emerald {\n  background-color: var(--emerald-500);\n}\n.status.teal,\n.bg-teal,\n.status.turquoise,\n.bg-turquoise {\n  background-color: var(--teal-500);\n}\n.status.cyan,\n.bg-cyan {\n  background-color: var(--cyan-500);\n}\n.status.sky,\n.bg-sky {\n  background-color: var(--sky-500);\n}\n.status.blue,\n.bg-blue {\n  background-color: var(--blue-600);\n}\n.status.indigo,\n.bg-indigo {\n  background-color: var(--indigo-500);\n}\n.status.violet,\n.bg-violet {\n  background-color: var(--violet-500);\n}\n.status.purple,\n.bg-purple {\n  background-color: var(--purple-500);\n}\n.status.fuchsia,\n.bg-fuchsia {\n  background-color: var(--fuchsia-500);\n}\n.status.pink,\n.bg-pink {\n  background-color: var(--pink-500);\n}\n.status.rose,\n.bg-rose {\n  background-color: var(--rose-500);\n}\n.status.light {\n  background-color: var(--gray-100);\n}\n.status.white,\n.bg-white {\n  background-color: var(--white);\n}\n.status.black,\n.bg-black {\n  background-color: var(--gray-800);\n}\n.status.gray,\n.bg-gray,\n.status.grey,\n.bg-grey {\n  background-color: var(--gray-300);\n}\n\n.status.white,\n.status.disabled {\n  opacity: 1;\n}\n\n.icon,\n.cp-icon,\n[data-icon],\n[data-icon-after] {\n  &.warning {\n    --icon-color: var(--warning-color);\n  }\n  &.red {\n    --icon-color: var(--disabled-color);\n  }\n  &.orange {\n    --icon-color: var(--pending-color);\n  }\n  &.amber {\n    --icon-color: var(--amber-500);\n  }\n  &.yellow {\n    --icon-color: var(--yellow-500);\n  }\n  &.lime {\n    --icon-color: var(--lime-500);\n  }\n  &.green {\n    --icon-color: var(--green-500);\n  }\n  &.emerald {\n    --icon-color: var(--emerald-500);\n  }\n  &.teal {\n    --icon-color: var(--teal-500);\n  }\n  &.cyan {\n    --icon-color: var(--cyan-500);\n  }\n  &.sky {\n    --icon-color: var(--sky-500);\n  }\n  &.blue {\n    --icon-color: var(--blue-600);\n  }\n  &.indigo {\n    --icon-color: var(--indigo-500);\n  }\n  &.violet {\n    --icon-color: var(--violet-500);\n  }\n  &.purple {\n    --icon-color: var(--purple-500);\n  }\n  &.fuchsia {\n    --icon-color: var(--fuchsia-500);\n  }\n  &.pink {\n    --icon-color: var(--pink-500);\n  }\n  &.rose {\n    --icon-color: var(--rose-500);\n  }\n  &.white {\n    --icon-color: var(--white);\n  }\n  &.black {\n    --icon-color: var(--gray-800);\n  }\n  &.gray {\n    --icon-color: var(--gray-300);\n  }\n}\n\n.warning,\n.red,\n.orange,\n.amber,\n.yellow,\n.lime,\n.green,\n.emerald,\n.teal,\n.cyan,\n.sky,\n.blue,\n.indigo,\n.violet,\n.purple,\n.fuchsia,\n.pink,\n.rose,\n.white,\n.black,\n.gray {\n  &[data-icon]:before,\n  &[data-icon-after]:after {\n    color: var(--icon-color) !important;\n  }\n}\n\n/* ----------------------------------------\n/*  Condition builders\n/* ----------------------------------------*/\n\n.condition-container {\n  margin: 24px 0;\n}\n\n.condition:not(:empty) + .condition-footer .btn.add {\n}\n\n.condition-rule,\n.condition-footer {\n  padding: 7px;\n}\n\n.condition-footer {\n  border: 1px dashed var(--medium-hairline-color);\n  border-radius: var(--large-border-radius);\n\n  .condition:not(:empty) + & {\n    border-top-width: 0;\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n  }\n\n  .spinner:not(.loading) {\n    display: none;\n  }\n}\n\n.condition-rule {\n  margin: 0;\n  border: 1px solid var(--hairline-color);\n  background-color: var(--gray-050);\n\n  &:first-child {\n    border-top-left-radius: var(--large-border-radius);\n    border-top-right-radius: var(--large-border-radius);\n  }\n\n  & + .condition-rule {\n    border-top-width: 0;\n  }\n\n  & > .rule-move,\n  & > .rule-actions {\n    margin-top: 5px;\n  }\n\n  & > .rule-body {\n    .lightswitch {\n      margin-top: 6px;\n      display: block;\n    }\n\n    .selectize {\n      min-width: 100px;\n    }\n\n    .text.fullwidth {\n      min-width: 100px;\n      max-width: 100%;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Progress bar\n/* ----------------------------------------*/\n\n.progressbar {\n  border-radius: 6px;\n  border: 2px solid var(--gray-700);\n  padding: 2px;\n  position: absolute;\n  left: 20%;\n  width: 60%;\n  z-index: 1000;\n}\n\n.progressbar-inner {\n  border-radius: 2px;\n  height: 4px;\n  background-color: var(--gray-700);\n}\n\n.progressbar:not(.pending) .progressbar-inner {\n  width: 0;\n  transition: width linear 100ms;\n}\n\n.progressbar.pending .progressbar-inner {\n  @include striped-bg(17.6776695297px, var(--gray-700)); // sqrt(25^2 / 2);\n  body.ltr & {\n    animation-name: pendingprogress-ltr;\n  }\n  body.rtl & {\n    animation-name: pendingprogress-rtl;\n  }\n  animation-timing-function: linear;\n  animation-duration: 250ms;\n  animation-iteration-count: infinite;\n}\n\n@keyframes pendingprogress-ltr {\n  from {\n    background-position: 0;\n  }\n  to {\n    background-position: 25px;\n  }\n}\n\n@keyframes pendingprogress-rtl {\n  from {\n    background-position: 0;\n  }\n  to {\n    background-position: -25px;\n  }\n}\n\n.elementselect .progress-shade {\n  background-color: transparentize($white, 0.2);\n  width: 100%;\n  height: 100%;\n  position: absolute;\n  top: 0;\n  @include left(0);\n  display: none;\n}\n\n.elementselect.uploading {\n  position: relative;\n}\n\n.elementselect.uploading .progress-shade {\n  display: block;\n  z-index: 2;\n}\n\n// Plugin installers\n\n.missing-component {\n  padding: 7px 10px !important;\n  max-width: 400px;\n  background-color: var(--gray-050) !important;\n\n  .error {\n    margin: 0;\n  }\n\n  .install-plugin {\n    margin: 7px 0 -7px;\n    border-top: 1px solid var(--hairline-color);\n    position: relative;\n    @include padding(10px, 0, 10px, 40px);\n\n    .icon {\n      width: 32px;\n      height: 32px;\n      position: absolute;\n      top: calc(50% - 16px);\n      @include left(0);\n\n      img,\n      svg {\n        width: 100%;\n        height: 100%;\n      }\n    }\n\n    h3 {\n      flex: 1;\n      margin: 8px 0 !important;\n    }\n\n    .btn {\n      margin: 0;\n    }\n  }\n}\n\n/* ----------------------------------------\n/*  Panes, Modals and HUDs\n/* ----------------------------------------*/\n\n.pane {\n  --pane-padding: var(--xl);\n  --border: 1px solid var(--hairline-color);\n  @include pane;\n  position: relative;\n  margin: 14px 0;\n  padding: var(--pane-padding);\n  border-radius: var(--large-border-radius);\n  word-wrap: break-word;\n  box-sizing: border-box;\n\n  .pane &,\n  #content & {\n    background-color: var(--gray-050);\n    border: 1px solid var(--hairline-color);\n    box-shadow: none;\n  }\n\n  &.dashed {\n    background-color: transparent !important;\n    box-shadow: none;\n    border: 1px dashed var(--medium-hairline-color) !important;\n  }\n\n  &.hairline {\n    background-color: transparent !important;\n    box-shadow: none;\n    border: 1px solid #{transparentize($inputColor, 0.75)} !important;\n  }\n\n  &.no-border {\n    border: none !important;\n  }\n\n  &.padding-xs {\n    --pane-padding: var(--xs);\n  }\n  &.padding-s {\n    --pane-padding: var(--s);\n  }\n  &.padding-m {\n    --pane-padding: var(--m);\n  }\n  &.padding-l {\n    --pane-padding: var(--l);\n  }\n\n  &.loading {\n    min-height: 200px;\n\n    &:after {\n      display: block;\n      content: '';\n      font-size: 0;\n      position: absolute;\n      top: 0;\n      left: -24px;\n      width: calc(100% + #{24 + 24}px);\n      height: 100%;\n    }\n  }\n}\n\n.pane-header {\n  margin: calc(var(--xl) * -1) var(--neg-padding) var(--xl);\n  padding: 5px var(--xl) 6px;\n  min-height: 45px;\n  box-sizing: border-box;\n  box-shadow: inset 0 -1px 0 0 transparentize($grey300, 0.75);\n  border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n  background-color: var(--gray-050);\n\n  .header-btn {\n    margin: 2px 0;\n    @include header-btn;\n  }\n\n  .spinner {\n    margin: 0 !important;\n  }\n}\n\n.pane-tabs {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  margin: -5px calc(var(--padding) * -1) -6px;\n\n  &:first-child {\n    border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n    overflow: hidden;\n  }\n\n  [role='tablist'] {\n    flex: 1;\n    display: flex;\n    flex-direction: row;\n    overflow-x: auto;\n    scrollbar-width: none;\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n\n    &.scrollable {\n      body.ltr & {\n        mask-image: linear-gradient(\n          to left,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 24px\n        );\n      }\n      body.rtl & {\n        mask-image: linear-gradient(\n          to right,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 24px\n        );\n      }\n    }\n\n    [role='tab'] {\n      --tab-label-color: var(--light-text-color);\n\n      &.error {\n        --highlight-color: var(--error-color) !important;\n        --tab-label-color: var(--error-color) !important;\n      }\n\n      &,\n      .tab-label {\n        border-radius: 2px 2px 0 0;\n      }\n\n      .tab-label {\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        position: relative;\n        padding: 0 var(--padding);\n        white-space: nowrap;\n        height: 45px;\n      }\n\n      &:hover {\n        text-decoration: none;\n      }\n\n      @include focus-styles {\n        box-shadow: none;\n\n        .tab-label {\n          box-shadow: var(--inner-focus-ring);\n        }\n      }\n\n      &:not(.sel) {\n        color: var(--custom-text-color, var(--tab-label-color));\n\n        &:hover {\n          backdrop-filter: brightness(95%);\n        }\n      }\n\n      &.sel {\n        --highlight-color: var(--gray-500);\n        --tab-label-color: var(--text-color);\n        position: relative;\n        z-index: 1;\n        cursor: default;\n        box-shadow:\n          inset 0 2px 0 var(--custom-text-color, var(--highlight-color)),\n          0 0 0 1px $hairlineColor,\n          0 2px 12px var(--custom-sel-tab-shadow-color, var(--gray-200));\n        color: var(--tab-label-color);\n        background-color: var(--white) !important;\n      }\n\n      span[data-icon] {\n        @include margin-left(4px);\n      }\n    }\n  }\n\n  &#tabs:first-child {\n    [role='tablist'] {\n      [role='tab'] {\n        &:first-child {\n          &,\n          .tab-label {\n            @include border-top-left-radius(var(--large-border-radius));\n          }\n        }\n      }\n    }\n  }\n\n  .menubtn {\n    margin: 0 var(--xl);\n\n    &.error {\n      span[data-icon] {\n        margin-right: 2px;\n      }\n    }\n  }\n}\n\n/* detail sidebars */\n.details {\n  --spacing: var(--l);\n  padding: 0 var(--padding) var(--spacing);\n\n  .meta,\n  .field,\n  hr {\n    margin-left: var(--neg-padding);\n    margin-right: var(--neg-padding);\n  }\n\n  .meta {\n    margin-bottom: var(--spacing);\n\n    &:not(.read-only) {\n      background-color: var(--gray-050) !important;\n    }\n\n    &.read-only {\n      color: var(--medium-text-color);\n\n      & > .data {\n        min-height: auto;\n\n        & > .heading,\n        & > .value {\n          padding: 6px 0;\n        }\n\n        &:first-child {\n          & > .heading,\n          & > .value {\n            padding-top: 0;\n          }\n        }\n\n        &:last-child {\n          & > .heading,\n          & > .value {\n            padding-bottom: 0;\n          }\n        }\n      }\n    }\n\n    &.warning {\n      padding-top: var(--m);\n      padding-bottom: var(--m);\n      color: var(--text-color) !important;\n      background-color: var(--yellow-050) !important;\n      box-shadow:\n        0 0 0 1px var(--yellow-300),\n        0 2px 12px transparentize($grey200, 0.5);\n\n      p {\n        margin-bottom: 5px;\n      }\n\n      .btn {\n        background-color: var(--yellow-300);\n\n        &:hover,\n        &:focus {\n          background-color: darken($yellow300, 10%);\n        }\n\n        &:active,\n        &[aria-expanded='true'] {\n          background-color: darken($yellow300, 15%);\n        }\n      }\n    }\n\n    & > .field,\n    & > .data {\n      margin: 0 var(--neg-padding) !important;\n\n      & > .heading > label,\n      & > .heading {\n        color: var(--gray-600);\n      }\n    }\n\n    & > .field > .status-badge {\n      @include left(0);\n    }\n\n    .text::placeholder,\n    .datewrapper .text + div[data-icon],\n    .timewrapper .text + div[data-icon] {\n      color: var(--gray-500);\n    }\n\n    .ui-datepicker {\n      @include margin(0, 0, 0, -8px);\n    }\n  }\n\n  hr {\n    margin: var(--spacing) 0;\n    border-top-color: var(--hairline-color);\n  }\n\n  @include placeholder-styles(var(--gray-500));\n\n  .text {\n    background-color: transparent !important;\n    resize: none;\n  }\n\n  & > .field > .heading > label,\n  & > fieldset > legend {\n    margin-top: 0;\n    font-weight: normal;\n    color: var(--gray-600);\n  }\n\n  & > fieldset {\n    margin: 0 0 var(--spacing);\n\n    & > legend {\n      margin-bottom: 5px;\n    }\n  }\n\n  & > .field {\n    margin: 0 0 var(--spacing);\n\n    & > .heading {\n      margin-top: 0;\n    }\n\n    & > .input > .text.fullwidth {\n      margin: 0 var(--neg-padding);\n      padding-left: var(--padding);\n      padding-right: var(--padding);\n      border: none;\n      background-color: var(--gray-050) !important;\n      width: calc(100% + var(--padding) + var(--padding));\n    }\n  }\n\n  & > .text {\n    border-radius: var(--large-border-radius);\n    margin-bottom: var(--spacing);\n\n    &:not(:focus) {\n      border-color: transparentize($inputColor, 0.6);\n    }\n  }\n}\n\n/* meta panes */\n$min2ColWidth: 400px;\n\n.meta {\n  padding: 0 var(--padding);\n  overflow: visible;\n\n  &,\n  & > .flex-fields {\n    & > .field,\n    & > .data {\n      display: flex;\n      min-height: 44px;\n      box-sizing: border-box;\n      flex-wrap: wrap; // for error lists\n      justify-content: space-between;\n      align-items: center;\n      margin: 0 var(--neg-padding) !important;\n      padding: 0 var(--padding);\n      transition:\n        padding-left linear 100ms,\n        padding-right linear 100ms;\n\n      &.nested {\n        @include padding-left(38px);\n      }\n\n      &.add {\n        background-color: darken($grey050, 2%);\n\n        &:before {\n          position: absolute;\n          @include left(0);\n          width: 31px;\n          @include alignright;\n          @include icon;\n          content: 'plus';\n          color: var(--light-text-color);\n        }\n\n        .input {\n          width: 100%;\n        }\n      }\n\n      & > .heading {\n        margin: 0;\n\n        @media screen and (min-width: $min2ColWidth) {\n          flex: 0 0 104px;\n          @include margin-right(var(--s));\n          line-height: 18px;\n        }\n      }\n\n      &.lightswitch-field > .heading {\n        flex: 1;\n      }\n\n      & > .input {\n        .flex {\n          flex-wrap: nowrap;\n\n          & > * {\n            margin-bottom: 0;\n          }\n        }\n      }\n    }\n\n    & > .field > .heading {\n      padding-top: var(--s);\n\n      @media screen and (min-width: $min2ColWidth) {\n        padding: 12px 0;\n      }\n\n      & > .copytextbtn {\n        display: none;\n      }\n    }\n\n    & > .data > .heading {\n      padding: var(--s) 0;\n    }\n\n    & > .field > .heading > label,\n    & > .data > .heading {\n      color: var(--medium-text-color);\n    }\n\n    & > .field > .input,\n    & > .data > .value {\n      padding: 5px 0;\n      width: 100%;\n\n      @media screen and (min-width: $min2ColWidth) {\n        width: calc(100% - 112px);\n      }\n    }\n\n    & > .data > .value {\n      display: flex;\n      align-items: center;\n\n      & > [data-icon='draft'] {\n        margin-top: -2px;\n        @include margin-right(8px);\n      }\n    }\n\n    & > .field.lightswitch-field > .input {\n      flex: 0;\n      width: auto;\n    }\n\n    & > .field {\n      &.has-errors {\n        border: 1px solid var(--error-color) !important;\n\n        &:first-child {\n          border-top-left-radius: var(--large-border-radius);\n          border-top-right-radius: var(--large-border-radius);\n        }\n\n        &:last-child {\n          border-bottom-left-radius: var(--large-border-radius);\n          border-bottom-right-radius: var(--large-border-radius);\n        }\n\n        & + .field {\n          border-top: none !important;\n        }\n      }\n\n      & > .heading {\n        & > label,\n        & > legend {\n          font-weight: normal;\n        }\n      }\n\n      & > .input {\n        &,\n        & > .flex,\n        & > .flex > .textwrapper,\n        & > .datewrapper,\n        & > .timewrapper,\n        & > .datetimewrapper > .datewrapper,\n        & > .datetimewrapper > .timewrapper {\n          & > .text {\n            display: block;\n            margin: -5px 0;\n            padding: 12px 0;\n            border-radius: 0;\n            background-color: transparent;\n            border: none !important;\n          }\n        }\n\n        & > .datewrapper,\n        & > .timewrapper,\n        & > .datetimewrapper > .datewrapper,\n        & > .datetimewrapper > .timewrapper {\n          background-color: transparent;\n          .text + div[data-icon] {\n            @include left(0);\n          }\n        }\n\n        & > .datetimewrapper {\n          gap: 0;\n\n          & > .datewrapper {\n            width: 55%;\n          }\n\n          & > .timewrapper {\n            width: 45%;\n          }\n\n          & > .clear-btn {\n            @include margin-right(-24px);\n          }\n        }\n\n        & > .datewrapper,\n        & > .timewrapper {\n          display: block;\n          width: 100%;\n        }\n      }\n\n      & > ul.errors {\n        margin: 0;\n        padding: 0 0 6px;\n        width: 100%;\n        list-style-type: none;\n      }\n\n      & > .clear-btn {\n        @include margin-right(var(--neg-padding));\n      }\n    }\n  }\n\n  & > .field:not(:first-child):not(.first-child),\n  & > .flex-fields + .field:not(.first-child) {\n    border-top: 1px solid var(--hairline-color);\n  }\n\n  & > .flex-fields {\n    h2,\n    blockquote.note {\n      margin: 0 -24px !important;\n      padding: 14px 24px;\n      background-color: darken($grey050, 2%);\n    }\n\n    blockquote.note {\n      border-radius: 0;\n      border: none;\n    }\n\n    hr {\n      margin: 0 -24px;\n    }\n  }\n}\n\n.meta > .field > .input > .select {\n  display: block;\n  margin: calc(var(--s) * -1) 0;\n  width: 100%;\n  border-radius: 0;\n  box-shadow: none;\n  background-color: transparent;\n\n  &:after {\n    @include right(0);\n  }\n\n  & + .spinner {\n    position: absolute;\n    top: calc(50% - 17px);\n    @include right(-24px);\n  }\n\n  select {\n    @include padding(var(--s), 12px, var(--s), 0);\n    width: 100%;\n    background-color: transparent;\n  }\n}\n\n.meta > .field > .input > .custom-select {\n  display: block;\n  margin: calc(var(--s) * -1) 0;\n  width: 100%;\n  border-radius: 0;\n  box-shadow: none;\n  background-color: transparent;\n\n  .menubtn:not(.action-btn) {\n    @include padding-left(0);\n    justify-content: start;\n    width: 100%;\n    background-color: transparent;\n\n    &:after {\n      position: absolute;\n      top: calc(50% - 5px);\n      @include right(0);\n    }\n  }\n\n  .label {\n    max-width: 100%;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n}\n\n.body {\n  position: relative;\n}\n\n.slideout-container,\n.slideout,\n.modal,\n.hud {\n  z-index: 100;\n  box-sizing: border-box;\n}\n\n.modal,\n.hud {\n  @include modal;\n}\n\n.slideout-shade {\n  opacity: 0;\n  transition: opacity linear 250ms;\n\n  &.so-visible {\n    opacity: 1;\n  }\n}\n\n.slideout-container {\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  height: -webkit-fill-available; // h/t https://twitter.com/AllThingsSmitty/status/1254151507412496384\n  pointer-events: none;\n\n  &.so-lp {\n    position: absolute;\n    top: var(--m);\n    left: var(--m);\n    width: calc(100% - var(--m) * 2);\n    height: calc(100vh - var(--m) * 2);\n  }\n\n  body.has-debug-toolbar & {\n    height: calc(100vh - 42px);\n  }\n}\n\n.slideout {\n  position: absolute;\n  background-color: var(--white);\n  box-shadow:\n    0 0 0 1px transparentize($grey400, 0.75),\n    0 25px 100px transparentize($grey900, 0.5) !important;\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  padding: 24px var(--padding);\n  pointer-events: all;\n  container-type: inline-size;\n\n  &.so-mobile,\n  &.so-lp {\n    width: 100% !important;\n    height: 100% !important;\n    left: 0;\n    transition: top linear 250ms;\n    will-change: top;\n  }\n\n  &.so-mobile {\n    --padding: 14px;\n    --neg-padding: -14px;\n  }\n\n  &:not(.so-mobile) {\n    @include border-radius(\n      var(--large-border-radius),\n      0,\n      0,\n      var(--large-border-radius)\n    );\n  }\n\n  &:not(.so-mobile):not(.so-lp) {\n    top: 0;\n    width: 55%;\n    height: 100%;\n\n    @media screen and (prefers-reduced-motion: no-preference) {\n      body.ltr & {\n        transition: left linear 250ms;\n        will-change: left;\n      }\n\n      body.rtl & {\n        transition: right linear 250ms;\n        will-change: right;\n      }\n    }\n  }\n\n  & > .pane-header {\n    padding-left: var(--padding);\n    padding-right: var(--padding);\n    z-index: 2;\n\n    & > .so-toolbar {\n      display: flex;\n      flex-direction: row;\n      align-items: center;\n      gap: var(--xs);\n      min-height: calc(44px - 16px);\n\n      & > .pane-tabs {\n        width: 1px; // give other elements in the header plenty of room before the tabs take up whatever's left\n        flex: 1;\n        @include margin-right(0);\n      }\n    }\n  }\n\n  & > .so-body {\n    flex: 1;\n    margin: -24px var(--neg-padding);\n    overflow: hidden auto;\n    position: relative;\n\n    &:not(:last-child) {\n      margin-bottom: 0;\n    }\n\n    & > h1:not(:last-child) {\n      padding-bottom: var(--s);\n      border-bottom: 1px solid var(--hairline-color);\n    }\n\n    &.so-full-details,\n    & > .so-sidebar {\n      background-color: var(--gray-100) !important;\n    }\n\n    &:not(.so-full-details) {\n      padding: 24px var(--padding);\n    }\n\n    & > .so-sidebar,\n    &.so-full-details > .so-content > .details {\n      box-sizing: border-box;\n      padding: 0 var(--padding) var(--spacing);\n\n      & > .preview-thumb-container {\n        margin: 0 var(--neg-padding);\n        height: auto;\n        min-height: 54px; // make room for the Preview / Edit buttons\n\n        & + .pane-header {\n          border-radius: 0;\n        }\n      }\n\n      .image-actions {\n        &.is-mobile {\n          margin: calc(var(--spacing) / 2) 0 var(--spacing);\n        }\n      }\n\n      & > .meta.read-only:first-child {\n        margin-top: var(--padding);\n      }\n\n      & > .meta.warning {\n        box-shadow: none;\n        border-bottom: 1px solid var(--yellow-300);\n      }\n\n      & > .field {\n        & > .input > .text.fullwidth {\n          border-radius: 0;\n        }\n      }\n\n      .notes {\n        padding-top: var(--m);\n        padding-bottom: var(--m);\n      }\n    }\n\n    & > .so-sidebar {\n      position: absolute;\n      top: 0;\n      @include pane();\n      width: 350px;\n      height: 100%;\n      max-width: 100%;\n      overflow: hidden auto;\n      z-index: 1;\n\n      body.ltr & {\n        transition: right linear 250ms;\n      }\n      body.rtl & {\n        transition: left linear 250ms;\n      }\n    }\n  }\n\n  & > .so-footer {\n    position: relative;\n    display: flex;\n    gap: var(--s);\n    justify-content: space-between;\n    flex-wrap: wrap;\n    margin: 0 var(--neg-padding) -24px;\n    padding: 5px var(--padding);\n    @include pane;\n    background-color: var(--gray-050);\n    z-index: 3;\n\n    & > .so-extra {\n      flex: 0 0 100%;\n      margin: 0 var(--neg-padding);\n      padding: 0 var(--padding) 8px;\n      border-bottom: 1px solid var(--hairline-color);\n    }\n  }\n}\n\n@container (width > 700px) {\n  .slideout {\n    &.showing-sidebar {\n      .so-body {\n        display: flex;\n        flex-direction: row;\n        padding: 0;\n        overflow: hidden;\n\n        & > .so-content {\n          position: relative;\n          z-index: 2;\n          padding: 24px;\n          width: calc(100% - 350px);\n          height: 100%;\n          box-sizing: border-box;\n          @include border-right(1px solid var(--gray-200));\n          overflow: hidden auto;\n        }\n\n        & > .so-sidebar {\n          position: relative;\n          display: block !important;\n          top: auto;\n          right: auto !important;\n          left: auto !important;\n          height: 100%;\n          box-shadow: none;\n        }\n      }\n    }\n\n    & > .so-footer {\n      & > .so-extra {\n        margin: 0;\n        padding: 0;\n        border: none;\n        flex: auto 0 1;\n      }\n    }\n  }\n}\n\n.header,\n.hud-header,\n.footer,\n.hud-footer {\n  position: relative;\n  z-index: 1;\n  box-sizing: border-box;\n}\n\n.header,\n.hud-header,\n.footer,\n.hud-footer {\n  background-color: var(--gray-100);\n}\n\n.header,\n.hud-header {\n  border-radius: var(--large-border-radius) var(--large-border-radius) 0 0;\n  padding: 24px;\n  box-shadow: inset 0 -1px 0 var(--hairline-color);\n\n  h1 {\n    margin: 0;\n  }\n}\n\n.footer,\n.hud-footer {\n  border-radius: 0 0 var(--large-border-radius) var(--large-border-radius);\n  padding: 5px var(--pane-padding, var(--xl));\n  box-shadow: inset 0 1px 0 var(--hairline-color);\n\n  &.flex {\n    & > * {\n      margin-bottom: 0;\n    }\n  }\n}\n\n.modal .body,\n.hud .main {\n  padding: 24px;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n\n.pane,\n.modal .body {\n  .header {\n    margin: calc(var(--pane-padding, 24px) * -1)\n      calc(var(--pane-padding, 24px) * -1) var(--pane-padding, 24px);\n  }\n\n  .footer {\n    margin: var(--pane-padding, 24px) calc(var(--pane-padding, 24px) * -1)\n      calc(var(--pane-padding, 24px) * -1);\n  }\n}\n\n.slideout-shade,\n.modal-shade,\n.hud-shade {\n  z-index: 100;\n  position: fixed;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: none;\n}\n\n.slideout-shade,\n.modal-shade {\n  &:not(.dark) {\n    background-color: transparentize($grey400, 0.65) !important;\n  }\n\n  &.dark {\n    background-color: transparentize($grey900, 0.5) !important;\n  }\n\n  &.blurred {\n    backdrop-filter: blur(10px);\n  }\n}\n\n.modal {\n  position: fixed;\n  overflow: hidden;\n\n  &:not(.fitted):not(.fullscreen) {\n    width: 66%;\n    height: 66%;\n    min-width: 600px;\n    min-height: 400px;\n  }\n\n  &.fitted {\n    width: auto;\n    height: auto;\n    min-width: 0;\n    min-height: 0;\n  }\n\n  &.fullscreen {\n    width: 100%;\n    height: 100%;\n    border-radius: 0;\n  }\n\n  &.alert .body {\n    @include padding-left(76px);\n\n    &:before {\n      @include icon;\n      @include margin(-6px, 0, 0, -58px);\n      @include floatleft;\n      content: 'alert';\n      font-size: 40px;\n      color: var(--light-text-color);\n    }\n  }\n\n  &.secure .body {\n    @include padding-left(76px);\n\n    &:before {\n      @include icon;\n      @include margin(-14px, 0, 0, -56px);\n      @include floatleft;\n      content: 'secure';\n      font-size: 58px;\n      color: var(--light-text-color);\n    }\n  }\n\n  .resizehandle {\n    position: absolute;\n    z-index: 1;\n    bottom: 0;\n    @include right(0);\n    width: 24px;\n    height: 24px;\n    cursor: nwse-resize;\n    padding: var(--xs);\n\n    path {\n      fill: var(--ui-control-color);\n    }\n\n    body.rtl & {\n      .ltr {\n        display: none;\n      }\n    }\n\n    body.ltr & {\n      .rtl {\n        display: none;\n      }\n    }\n  }\n}\n\n.hud {\n  position: absolute;\n  display: none;\n  top: 0;\n\n  &.tooltip-hud {\n    display: block;\n  }\n\n  &.has-footer .tip-bottom {\n    background-image: url(../images/hudtip_bottom_gray.png);\n  }\n\n  .tip {\n    position: absolute;\n    z-index: 101;\n    background: no-repeat 0 0;\n  }\n\n  .tip-left {\n    left: -15px;\n    width: 15px;\n    height: 30px;\n    background-image: url(../images/hudtip_left.png);\n  }\n\n  .tip-top {\n    top: -15px;\n    width: 30px;\n    height: 15px;\n    background-image: url(../images/hudtip_top.png);\n  }\n\n  .tip-right {\n    right: -15px;\n    width: 15px;\n    height: 30px;\n    background-image: url(../images/hudtip_right.png);\n  }\n\n  .tip-bottom {\n    bottom: -15px;\n    width: 30px;\n    height: 15px;\n    background-image: url(../images/hudtip_bottom.png);\n  }\n}\n\n.hud .hud-header,\n.hud .hud-footer {\n  padding: var(--s) var(--xl);\n}\n\n.hud .body {\n  overflow: hidden;\n\n  ::-webkit-scrollbar {\n    appearance: none;\n\n    &:vertical {\n      width: 11px;\n    }\n\n    &:horizontal {\n      height: 11px;\n    }\n  }\n\n  ::-webkit-scrollbar-thumb {\n    border-radius: 8px;\n    border: 2px solid transparent;\n    background-color: transparentize($black, 0.5);\n  }\n\n  ::-webkit-scrollbar-track {\n    background-color: var(--gray-050);\n  }\n}\n\n/* inline asset previews */\n\n.preview-thumb-container {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  height: 190px;\n  background-color: var(--gray-900);\n  margin: 0 var(--neg-padding) var(--spacing);\n\n  &.checkered img {\n    background-color: var(--white);\n    @include checkered-bg(17px);\n  }\n\n  &.editable {\n    cursor: pointer;\n  }\n\n  &.loading {\n    &:after {\n      content: '';\n      font-size: 0;\n      display: block;\n      position: absolute;\n      width: 100%;\n      height: 100%;\n      left: 0;\n      top: 0;\n      background-color: transparentize($grey900, 0.2);\n    }\n\n    .spinner {\n      color: var(--white);\n      z-index: 1;\n    }\n  }\n\n  #details & {\n    border-radius: var(--large-border-radius);\n    overflow: hidden;\n  }\n\n  .preview-thumb {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    width: 100%;\n    height: 100%;\n\n    img {\n      display: block;\n      max-width: 100%;\n      max-height: 190px;\n    }\n  }\n}\n\n.image-actions {\n  &.is-mobile {\n    margin: calc((var(--spacing) / 2) * -1) var(--neg-padding) var(--spacing);\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n.button-fade {\n  .buttons {\n    opacity: 0;\n    position: absolute;\n    top: 10px;\n    @include right(10px);\n    margin: 0;\n    transition: opacity linear 100ms;\n\n    .btn {\n      --ui-control-color: var(--white);\n      --ui-control-hover-color: var(--white);\n      --ui-control-active-color: var(--white);\n      --interaction-background-color: var(--gray-700);\n      background-color: var(--gray-600);\n      color: var(--white);\n      @include light-on-dark-text;\n      @include two-color-focus-ring($light-button: false);\n\n      &:hover {\n        background-color: var(--interaction-background-color) !important;\n      }\n\n      &:not(.disabled):not(.loading):not(.dashed) {\n        &:focus,\n        &.focus,\n        &:hover {\n          background-color: var(--interaction-background-color);\n        }\n      }\n    }\n  }\n\n  &:hover,\n  &:focus-within {\n    .buttons {\n      opacity: 1;\n    }\n  }\n}\n\n/* element selector modals */\n.elementselectormodal {\n  --content-padding: 24px;\n  padding-bottom: 44px;\n  user-select: none;\n\n  & > .header {\n    padding-top: 14px;\n    padding-bottom: 14px;\n    text-align: center;\n\n    & + .body {\n      height: calc(100% - 48px) !important;\n    }\n  }\n\n  .body {\n    position: relative;\n    height: 100%;\n\n    .spinner.big {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      margin: -24px 0 0 -24px;\n    }\n\n    .content {\n      height: calc(100% + 48px);\n\n      .sidebar {\n        position: absolute;\n        top: 0;\n        @include margin-left(-249px);\n        height: 100%;\n        overflow: auto;\n        padding: var(--content-padding) 0;\n      }\n\n      .main {\n        margin: -24px;\n        padding: var(--content-padding);\n        height: 100%;\n        box-sizing: border-box;\n        overflow: auto;\n        position: relative;\n\n        .elements {\n          &.busy {\n            min-height: calc(100% - 48px);\n\n            .update-spinner {\n              z-index: 101;\n            }\n          }\n\n          .header {\n            margin: 0 0 var(--m);\n          }\n\n          .tableview table {\n            tr {\n              th,\n              td {\n                cursor: default;\n              }\n\n              // prevent double focus ring (the row already gets it)\n              .checkbox:before {\n                box-shadow: none !important;\n              }\n            }\n          }\n\n          .structure .row {\n            margin-top: 1px;\n          }\n        }\n      }\n    }\n  }\n\n  .footer {\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    margin: 0;\n    box-sizing: border-box;\n\n    .spinner {\n      @include floatright;\n      @include margin-right(-24px);\n    }\n  }\n}\n\n/* element selector modals & customize sources modal */\n.elementselectormodal,\n.customize-sources-modal {\n  .main-header {\n    display: flex;\n    align-items: center;\n    margin-bottom: var(--s);\n  }\n\n  .main-heading {\n    margin-bottom: 0;\n  }\n\n  .nav-toggle {\n    @include margin-left(4px);\n    @include touch-target;\n    color: var(--ui-control-color);\n\n    &:hover {\n      color: var(--gray-500);\n    }\n  }\n\n  .sidebar-header {\n    display: flex;\n    justify-content: flex-end;\n    padding: 0 var(--s);\n    margin-bottom: var(--s);\n  }\n\n  .nav-close {\n    @include touch-target;\n  }\n}\n\n/* element editing HUD */\n.element-hud-form {\n  .buttons {\n    position: relative;\n\n    .spinner {\n      position: absolute;\n      top: 0;\n      @include right(-24px);\n    }\n  }\n}\n\n/* recent activity container */\n.activity-container {\n  margin-inline: var(--s);\n\n  ul {\n    display: flex;\n    flex-direction: row;\n    flex-wrap: wrap;\n    gap: var(--xs);\n\n    li {\n      .activity-btn {\n        width: 30px;\n        height: 30px;\n        border-radius: 50%;\n        display: block;\n\n        .elementthumb {\n          position: relative;\n          width: 100%;\n          height: 100%;\n          border-radius: 50px;\n          background: var(--gray-050);\n          overflow: hidden;\n          border: 2px solid var(--white);\n          box-shadow: 0 1px 2px 1px transparentize($grey900, 0.9);\n\n          img,\n          svg {\n            display: block;\n            width: 100%;\n            height: 100%;\n          }\n        }\n      }\n\n      &:not(:last-child) {\n        @include margin-right(-10px);\n      }\n    }\n  }\n}\n\n/* element index view menu */\n.element-index-view-menu {\n  width: 400px;\n  max-width: calc(100% - 20px);\n  padding: 0 !important;\n\n  .meta {\n    padding-top: var(--s);\n    padding-bottom: var(--s);\n  }\n\n  .table-columns-field {\n    align-items: flex-start;\n\n    .input {\n      padding: 13px 0;\n    }\n  }\n\n  .menu-footer {\n    margin: 0 !important;\n    padding: var(--s) var(--xl) !important;\n    background-color: var(--gray-050);\n  }\n}\n\n.element-index-view-menu-table-column {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  margin-bottom: 4px;\n\n  .icon.move {\n    @include margin-right(10px);\n    position: relative;\n    z-index: 1;\n  }\n}\n\n/* sort fields */\n.sort-field {\n  .input {\n    .flex {\n      .btngroup {\n        .btn {\n          width: 42px;\n        }\n      }\n\n      .flex-grow {\n        max-width: calc(100% - 85px - var(--s));\n      }\n\n      @media screen and (max-width: 350px) {\n        flex-direction: column;\n\n        & > * {\n          width: 100%;\n        }\n\n        .flex-grow {\n          max-width: none;\n        }\n      }\n    }\n  }\n}\n\n/* element filter HUD */\n.element-filter-hud {\n  &.loading .body {\n    padding: 44px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .body,\n  .main {\n    overflow: visible;\n  }\n}\n\n/* Address Cards */\n.address-cards {\n  display: grid;\n  gap: var(--m) var(--m);\n  grid-template-columns: repeat(1, minmax(0, 1fr));\n  grid-auto-rows: minmax(0, 1fr);\n\n  .so-content & {\n    grid-template-columns: repeat(1, minmax(0, 1fr)) !important;\n  }\n}\n\n.address-cards__add-btn {\n  padding: 1rem;\n  min-height: 8rem;\n  height: auto;\n  width: 100%;\n}\n\n.address-card.error {\n  border: 1px solid #cf1124;\n}\n\n.address-card.error:hover {\n  border-color: #cf1124;\n}\n\n@media (min-width: 1024px) {\n  .address-cards {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n}\n\n@media (min-width: 1280px) {\n  .address-cards {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n\n    .so-content & {\n      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n    }\n  }\n}\n\n@media (min-width: 1536px) {\n  .address-cards {\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n  }\n}\n\n.address-card {\n  border: 1px solid #eee;\n  border-radius: 0.375rem;\n  padding: 1rem;\n  min-height: 4rem;\n}\n\n.address-card:hover {\n  border-color: #ddd;\n  background-color: #fafafa;\n  cursor: pointer;\n}\n\n.address-card .address-card-header {\n  display: flex;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n}\n\n.address-card .address-card-header-actions {\n  display: flex;\n  justify-content: flex-end;\n}\n\n.address-card .address-card-label {\n  background: #e6f1fe;\n  color: #2563eb;\n  padding: 0.125rem 0.5rem;\n  border-radius: 0.25rem;\n  font-size: 0.75rem;\n  text-transform: uppercase;\n  font-weight: 500;\n  margin-bottom: 0.75rem;\n\n  .ltr & {\n    margin-right: 0.5rem;\n  }\n\n  .rtl & {\n    margin-left: 0.5rem;\n  }\n}\n\n/* logout warning/login/elevated session modals */\n.logoutwarningmodalshade,\n.login-modal-shade,\n#logoutwarningmodal,\n.login-modal,\n#elevatedsessionmodal,\n.prompt {\n  z-index: 1001;\n}\n\n#logoutwarningmodal,\n#elevatedsessionmodal,\n.prompt {\n  width: 500px;\n}\n\n.prompt {\n  height: auto;\n  min-height: auto;\n}\n\n.cpmodal {\n  & > .cpmodal-body {\n    padding: var(--padding);\n  }\n\n  & > .cpmodal-footer {\n    position: relative;\n    display: flex;\n    gap: 8px;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    @include pane;\n    padding: var(--s) var(--padding);\n    background-color: var(--gray-050);\n  }\n}\n\n/* delete user modal */\n.deleteusermodal {\n  .content-summary {\n    margin: -24px -24px 24px;\n    padding: 24px;\n    background-color: var(--gray-050);\n  }\n\n  .options {\n    label {\n      display: inline-block;\n      line-height: 30px;\n    }\n  }\n\n  .elementselect {\n    @include margin-left(10px);\n    display: inline-block;\n    vertical-align: middle;\n  }\n\n  .buttons {\n    .spinner {\n      @include margin-right(-20px);\n    }\n  }\n\n  div.elements {\n    list-style: none;\n  }\n}\n\n.dropdownsettingsmodal {\n  width: auto;\n  height: auto;\n  min-width: 0;\n  min-height: 0;\n  max-width: 400px;\n\n  .body {\n    max-height: 100%;\n    overflow-y: auto;\n  }\n}\n\n.previewmodal {\n  &.zilch {\n    padding: 100px 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n  }\n}\n\n/* ----------------------------------------\n/*  Alternative Text\n/* ----------------------------------------*/\n.video-transcript {\n  background-color: var(--gray-050);\n  overflow-y: scroll;\n  font-size: 1rem;\n  position: relative;\n\n  @include focus-styles {\n    // Unset default\n    box-shadow: none;\n    color: var(--white);\n    background-color: var(--gray-800);\n  }\n}\n\n.video-transcript__inner {\n  margin-left: auto;\n  margin-right: auto;\n  max-width: 550px;\n  padding: var(--xl);\n}\n\n/* ----------------------------------------\n/*  Menus\n/* ----------------------------------------*/\n\n.menu,\n.ui-datepicker,\n.ui-timepicker-list {\n  @include menu-styles;\n}\n\n.ui-datepicker,\n.ui-timepicker-list {\n  padding: 0;\n}\n\n.menu {\n  display: none;\n  position: absolute;\n\n  &.padded {\n    padding: var(--s) calc(var(--m) + var(--s));\n\n    hr {\n      margin: var(--s) calc((var(--m) + var(--s)) * -1);\n    }\n\n    ul {\n      li {\n        margin: 0 calc(var(--m) * -1);\n        padding: 0 var(--m);\n\n        a {\n          border-radius: var(--large-border-radius);\n        }\n      }\n    }\n\n    .extralight {\n      margin-top: 2px;\n    }\n  }\n\n  h6,\n  .h6 {\n    &:first-child {\n      margin-top: 14px !important;\n    }\n  }\n\n  ul {\n    &.padded {\n      li {\n        a,\n        .menu-item,\n        .menu-option {\n          padding-inline-start: calc(var(--m) + 18rem / 16);\n\n          &.sel {\n            &:not([data-icon]):before {\n              @include floatleft;\n              @include margin(4px, 0, 0, calc(-18rem / 16 - 4px));\n              font-size: 14px;\n              width: 14px;\n              content: 'check';\n              color: currentColor;\n              margin-top: 3px !important;\n            }\n          }\n        }\n      }\n    }\n\n    li {\n      a,\n      .menu-item,\n      .menu-option {\n        margin: 0 -14px;\n        padding: 10px 14px;\n        white-space: nowrap;\n        font-size: 14px;\n        -webkit-appearance: none;\n\n        &:not(:last-child) {\n          @include margin-right(0);\n        }\n\n        &:not(.flex):not(.hidden) {\n          display: block;\n          width: calc(100% + 28px);\n          @include alignleft;\n        }\n\n        &.flex {\n          [data-icon] {\n            margin-top: -2px;\n          }\n        }\n\n        &.sel {\n          cursor: default;\n        }\n\n        .shortcut {\n          @include floatright;\n          @include margin-left(14px);\n          padding: 0 4px;\n          border-radius: var(--medium-border-radius);\n          box-shadow:\n            0 0 0 1px transparentize($grey600, 0.75),\n            0 1px 3px -1px transparentize($grey600, 0.5);\n        }\n      }\n    }\n  }\n\n  & > .flex {\n    margin-top: 10px;\n    margin-bottom: 10px;\n    position: relative;\n\n    &.padded {\n      @include margin-left(-14px);\n      @include padding-left(24px);\n\n      &.sel {\n        &:before {\n          position: absolute;\n          top: 36px;\n          @include left(7px);\n          content: 'check';\n          font-size: 14px;\n          color: var(--light-text-color);\n        }\n      }\n    }\n  }\n\n  hr {\n    margin: 5px -14px;\n  }\n\n  .go:after {\n    color: inherit;\n  }\n\n  &:not(.menu--disclosure) ul li a,\n  ul li .menu-item,\n  ul li .menu-option {\n    color: $menuOptionColor;\n    text-decoration: none;\n    cursor: default;\n  }\n}\n\n.menu li {\n  & > a,\n  & > button {\n    &[data-icon]:before,\n    [data-icon]:before,\n    span.icon:not([data-icon]) {\n      display: inline-block;\n      width: calc(14rem / 16);\n      height: calc(14rem / 16);\n      @include margin-left(-1px);\n      @include margin-right(9px);\n    }\n\n    &[data-icon]:before,\n    [data-icon]:before {\n      position: relative;\n      top: -2px;\n      text-align: center;\n      font-size: 14px;\n      color: currentColor;\n    }\n\n    span.icon:not([data-icon]) svg {\n      display: block;\n      position: relative;\n      top: 1px;\n      width: 100%;\n      height: 100%;\n      @include svg-mask(var(--icon-color, var(--ui-control-color)));\n    }\n\n    &.error {\n      &[data-icon]:before,\n      [data-icon]:before {\n        color: var(--error-color);\n      }\n\n      span.icon:not([data-icon]) svg {\n        @include svg-mask(var(--error-color));\n      }\n    }\n  }\n}\n\n/* prettier-ignore */\n.menu:not(.menu--disclosure) ul li a:not(.disabled):hover,\n.menu:not(.menu--disclosure) ul li .menu-item:not(.sel):not(.disabled):hover,\n.menu:not(.menu--disclosure) ul li .menu-option:not(.sel):not(.disabled):hover,\n.menu:not(.menu--disclosure):not(:hover) ul li a:not(.disabled).hover,\n.menu:not(.menu--disclosure):not(:hover) ul li .menu-item:not(.sel):not(.disabled).hover,\n.menu:not(.menu--disclosure):not(:hover) ul li .menu-option:not(.sel):not(.disabled).hover {\n  @include menu-item-active-styles;\n\n  // Pretty gnarly, but needs to override the default hover styles with this selector\n  .status:not(.on):not(.live):not(.active):not(.enabled):not(.all) {\n    &:not(.pending):not(.warning):not(.off):not(.suspended):not(.expired) {\n      &:not(.light):not(.gray):not(.red):not(.orange):not(.amber):not(.yellow) {\n        &:not(.lime):not(.green):not(.emerald):not(.teal):not(.cyan):not(.sky) {\n          &:not(.blue):not(.indigo):not(.violet):not(.purple):not(.fuchsia) {\n            &:not(.pink):not(.rose):not(.grey):not(.black) {\n              border-color: currentColor;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n\n.menu {\n  hr.padded,\n  .h6.padded,\n  h6.padded {\n    @include margin-left(20px);\n  }\n}\n\n.menu--disclosure ul li {\n  & > a:not(.crumb-link),\n  & > .menu-item,\n  & > .menu-option {\n    &:hover {\n      @include disclosure-link-hover-styles;\n    }\n\n    @include focus-styles {\n      box-shadow: inset 0 0 0 3px hsla(var(--dark-focus-hsl), 0.7);\n    }\n  }\n}\n\n/* tag select fields */\n.tagselect {\n  .elements {\n    li {\n      display: inline;\n    }\n  }\n\n  .chip.small {\n    clear: none;\n    @include margin-right(7px);\n  }\n\n  .add {\n    position: relative;\n    z-index: 1;\n    @include margin(7px, 7px, 0, 0);\n    display: inline-block;\n    width: 12em;\n\n    .text {\n      @include padding-right(30px);\n    }\n\n    .spinner {\n      position: absolute;\n      top: 0;\n      @include right(5px);\n    }\n  }\n}\n\n.tagmenu {\n  ul {\n    li {\n      a {\n        @include padding-left(26px);\n\n        &:before {\n          @include floatleft;\n          @include margin(3px, 0, 0, -18px);\n        }\n      }\n    }\n  }\n}\n\n/* selectize */\n.selectize-control.single .selectize-input:not(.no-arrow)::after {\n  display: none;\n}\n\n/* ----------------------------------------\n/*  Fields\n/* ----------------------------------------*/\n\n.shadow-box {\n  border-radius: var(--large-border-radius);\n  border: 1px solid var(--gray-200);\n  @include shadow;\n}\n\ntable.shadow-box,\ntable.editable {\n  border-collapse: separate;\n  border-spacing: 0;\n\n  thead,\n  tbody:first-child,\n  caption + tbody {\n    tr:first-child {\n      th:first-child,\n      td:first-child {\n        &,\n        &.disabled:after {\n          border-top-left-radius: var(--medium-border-radius);\n        }\n      }\n      th:last-child,\n      td:last-child {\n        &,\n        &.disabled:after {\n          border-top-right-radius: var(--medium-border-radius);\n        }\n      }\n    }\n  }\n  thead:last-child,\n  tbody:last-child {\n    tr:last-child {\n      th:first-child,\n      td:first-child {\n        &,\n        &.disabled:after {\n          border-bottom-left-radius: calc(var(--large-border-radius) - 1px);\n        }\n      }\n      th:last-child,\n      td:last-child {\n        &,\n        &.disabled:after {\n          border-bottom-right-radius: calc(var(--large-border-radius) - 1px);\n        }\n      }\n    }\n  }\n}\n\n.text,\n.passwordwrapper,\n.border-box,\n.selectize.multiselect .selectize-input,\n.multiselect > select {\n  @include input-styles;\n}\n\n.text,\n.passwordwrapper,\n.border-box,\n.selectize.multiselect .selectize-input {\n  &.focus {\n    @include input-focused-styles;\n  }\n\n  @include focus-styles {\n    @include input-focused-styles;\n  }\n}\n\ninput.text,\ntextarea.text,\n.text > input,\n.text > textarea,\ntable.editable textarea,\n.selectize.multiselect .selectize-input {\n  font-size: 14px;\n  line-height: 20px;\n  color: var(--text-color);\n  min-height: 3px;\n  box-sizing: border-box;\n  appearance: none;\n}\n\n.selectize.multiselect .selectize-input {\n  line-height: 18px;\n}\n\ntextarea.text.fullwidth {\n  display: block;\n}\n\n.multitext .multitextrow {\n  &:after {\n    @include clearafter;\n  }\n\n  &:first-child .text {\n    &:first-child {\n      @include border-top-left-radius(var(--medium-border-radius));\n    }\n\n    &:last-child {\n      @include border-top-right-radius(var(--medium-border-radius));\n    }\n  }\n\n  &:last-child .text {\n    &:first-child {\n      @include border-bottom-left-radius(var(--medium-border-radius));\n    }\n\n    &:last-child {\n      @include border-bottom-right-radius(var(--medium-border-radius));\n    }\n  }\n\n  &:not(:first-child) .text {\n    margin-top: -1px;\n  }\n\n  .text {\n    border-radius: 0;\n    float: left;\n    box-sizing: border-box;\n\n    &:not(:first-child) {\n      @include margin-left(-1px);\n    }\n\n    &:first-child {\n      &:nth-last-child(1) {\n        width: 100%;\n      }\n\n      &:nth-last-child(2) {\n        width: 50%;\n      }\n\n      &:nth-last-child(2) ~ .text {\n        width: calc(50% + 1px);\n      }\n    }\n\n    &.error {\n      position: relative;\n      z-index: 1;\n    }\n  }\n\n  .text:focus,\n  .selectize.multiselect .selectize-input.focus {\n    position: relative;\n    z-index: 2;\n  }\n}\n\n.chars-left {\n  position: relative;\n  @include floatright;\n  @include margin(calc(-27rem / 16), 7px, 0, 0);\n  color: var(--light-text-color);\n\n  .input.ltr > & {\n    float: right !important;\n    margin-right: 7px !important;\n  }\n\n  .input.rtl > & {\n    float: left !important;\n    margin-left: 7px !important;\n  }\n\n  &.negative-chars-left {\n    color: var(--error-color);\n  }\n}\n\n.field,\nfieldset {\n  position: relative;\n  margin: 24px 0;\n\n  .flex > & {\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n}\n\n.field {\n  min-inline-size: initial;\n\n  & > .status-badge {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    width: 2px;\n    height: 100%;\n    border-radius: 1px;\n    content: '';\n    cursor: help;\n\n    &.modified {\n      background-color: var(--blue-600);\n      box-shadow: 0 0 5px hsl(221, 83%, 53%, 15%);\n    }\n\n    &.outdated {\n      background-color: var(--pending-color);\n      box-shadow: 0 0 5px hsl(27, 96%, 61%, 15%);\n    }\n  }\n\n  & > .heading {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    position: relative;\n    margin-top: -5px;\n    margin-bottom: 5px;\n\n    & > label,\n    & > legend {\n      font-weight: bold;\n\n      code {\n        font-size: 1em !important;\n      }\n\n      .info {\n        @include margin-left(5px);\n      }\n    }\n\n    .t9n-indicator {\n      position: relative;\n      top: calc(-1rem / 16);\n      @include margin-left(7px);\n      color: var(--light-text-color);\n    }\n\n    & + .instructions {\n      margin-top: -3px;\n    }\n\n    // BC\n    & > .instructions {\n      width: 100%;\n    }\n  }\n\n  & > .instructions {\n    margin-bottom: 5px;\n  }\n\n  & > .input {\n    position: relative;\n\n    & + .instructions {\n      margin: 5px 0 0;\n    }\n\n    input:disabled,\n    textarea:disabled {\n      cursor: not-allowed;\n    }\n  }\n\n  & > .notice,\n  & > .warning {\n    margin: 5px 0 0;\n  }\n}\n\n.field > .instructions,\n// BC\n.field > .heading > .instructions,\n.checkboxfield .instructions {\n  color: var(--custom-text-color, var(--medium-text-color));\n\n  img,\n  video,\n  embed,\n  iframe {\n    max-width: 100% !important;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n}\n\n.expand-status-btn {\n  @include margin-left(5px);\n  width: 30px;\n  height: 17px;\n  padding: 0;\n  line-height: 16px;\n  border-radius: var(--small-border-radius);\n  color: var(--text-color);\n\n  &:before {\n    margin: 0;\n  }\n}\n\n/* toggles and nested fields */\n.nested-fields {\n  margin: -24px;\n  padding: 24px 24px 0;\n\n  &.hidden {\n    display: block;\n    height: 0;\n  }\n\n  & > .field:last-child {\n    padding-bottom: 24px;\n  }\n}\n\n/* checkbox */\ninput.checkbox {\n  opacity: 0;\n  position: absolute;\n  width: var(--checkbox-size);\n  height: var(--checkbox-size);\n}\n\ninput.checkbox + label,\ndiv.checkbox {\n  display: inline-block;\n  clear: none;\n  position: relative;\n  @include padding-left(calc(1rem + 5px));\n  line-height: 1rem;\n  min-height: 1rem;\n  cursor: pointer;\n\n  &,\n  &:before {\n    // set the border radius on the container too, for (some) focus rings\n    border-radius: var(--small-border-radius);\n  }\n\n  &:before {\n    display: block;\n    position: absolute;\n    @include left(0);\n    top: 0;\n    width: var(--checkbox-size) !important;\n    height: var(--checkbox-size);\n    box-sizing: border-box;\n    content: '';\n    font-size: 0;\n    background-color: hsl(212, 50%, 99%);\n    border: 1px solid transparentize($inputColor, 0.6);\n    background-clip: padding-box;\n  }\n\n  &:empty {\n    @include padding-left(var(--checkbox-size));\n\n    &:after {\n      content: '';\n      font-size: 0;\n    }\n  }\n\n  .info {\n    height: 16px;\n  }\n}\n\ninput.checkbox:disabled + label,\n.disabled div.checkbox {\n  cursor: not-allowed;\n}\n\ninput.checkbox:checked + label:before,\ndiv.checkbox.checked:before,\n.sel div.checkbox:before,\ninput.checkbox:indeterminate + label:before,\ndiv.checkbox.indeterminate:before,\n.elementselectormodal\n  .body\n  .content\n  .main\n  .elements\n  .disabled\n  .checkbox:before {\n  @include icon;\n  line-height: var(--checkbox-size);\n  color: var(--gray-900);\n}\n\ninput.checkbox:checked:not(:indeterminate) + label:before,\ndiv.checkbox.checked:not(.indeterminate):before,\n.sel:not(.matrixblock) div.checkbox:not(.indeterminate):before,\n.sel.matrixblock > .actions div.checkbox:not(.indeterminate):before,\n.elementselectormodal\n  .body\n  .content\n  .main\n  .elements\n  .disabled\n  .checkbox:before {\n  content: 'check';\n  font-size: 14px;\n}\n\ninput.checkbox:indeterminate + label:before,\ndiv.checkbox.indeterminate:before {\n  content: 'minus';\n  font-size: 7px;\n  text-align: center;\n}\n\nbody:not(.reduce-focus-visibility) {\n  input.checkbox:focus + label:before,\n  :focus div.checkbox:before {\n    @include input-focused-styles;\n  }\n}\n\nbody.reduce-focus-visibility {\n  input.checkbox:focus-visible + label:before,\n  :focus-visible div.checkbox:before {\n    @include input-focused-styles;\n  }\n}\n\n.checkbox-icon {\n  display: inline-flex;\n  padding: 3px;\n  background-color: var(--enabled-color);\n  color: var(--white);\n  border-radius: var(--small-border-radius);\n\n  &:before {\n    --checkbox-size: 14px;\n    @include icon;\n    content: 'check';\n    line-height: var(--checkbox-size);\n    font-size: var(--checkbox-size);\n  }\n}\n\n.checkbox-preview-label {\n  display: none;\n}\n\n.monaco-mouse-cursor-text {\n  @include focus-styles {\n    box-shadow: none !important;\n  }\n}\n\nfieldset {\n  .checkboxfield {\n    margin: 5px 0;\n  }\n}\n\n.checkboxfield {\n  .instructions,\n  .notice,\n  .warning {\n    margin-top: 2px;\n    @include padding-left(calc(1rem + 5px));\n  }\n}\n\n/* radio */\ninput.radio {\n  opacity: 0;\n  position: absolute;\n  width: var(--radio-size);\n  height: var(--radio-size);\n}\n\ninput.radio + label,\ndiv.radio {\n  display: inline-block;\n  clear: none;\n  position: relative;\n  @include padding-left(calc(1rem + 5px));\n  line-height: calc(24 / 14);\n  cursor: pointer;\n}\n\ninput.radio:disabled + label,\n.disabled div.radio {\n  cursor: not-allowed;\n}\n\ninput.radio + label:empty,\ndiv.radio:empty {\n  @include padding-left(var(--radio-size));\n}\n\n/* fixes a RTL bug */\ninput.radio + label:before,\ninput.radio + label:after,\ndiv.radio:before,\ndiv.radio:after {\n  display: block;\n  position: absolute;\n  content: '';\n  box-sizing: border-box;\n  background-clip: padding-box;\n  border-radius: 100%;\n}\n\ninput.radio + label:before,\ndiv.radio:before {\n  top: 50%;\n  left: 0;\n  transform: translateY(-50%);\n  width: var(--radio-size);\n  height: var(--radio-size);\n  background-color: hsl(212, 50%, 99%);\n  border: 1px solid transparentize($inputColor, 0.6);\n}\n\ninput.radio + label:after,\ndiv.radio:after {\n  top: calc(50%);\n  left: 4px;\n  transform: translateY(-50%);\n  width: calc(var(--radio-size) - 8px);\n  height: calc(var(--radio-size) - 8px);\n}\n\ninput.radio:checked + label:after,\ndiv.radio.checked:after,\n.sel div.radio:after {\n  background: var(--gray-900);\n}\n\nbody:not(.reduce-focus-visibility) {\n  input.radio:focus + label:before,\n  :focus div.radio:before {\n    @include input-focused-styles;\n  }\n}\n\nbody.reduce-focus-visibility {\n  input.radio:focus-visible + label:before,\n  :focus-visible div.radio:before {\n    @include input-focused-styles;\n  }\n}\n\n/* multiselect */\n.multiselect > select {\n  color: var(--text-color);\n  font-size: 14px;\n  appearance: none;\n\n  @include focus-styles {\n    @include input-focused-styles;\n  }\n\n  option {\n    padding: 1px 8px;\n  }\n}\n\n.text,\n.selectize.multiselect .selectize-input {\n  padding: 6px 9px;\n}\n\n.text {\n  background-color: var(--white);\n\n  &:not(.small) {\n    box-sizing: border-box;\n    min-height: calc(34rem / 16);\n  }\n\n  &.small {\n    padding: 3px;\n  }\n\n  &.readable {\n    padding: 16px 18px;\n    font-size: 16px;\n    line-height: 22px;\n\n    & + .chars-left {\n      margin-top: -23px;\n    }\n  }\n\n  &.clearable {\n    @include padding-right(var(--touch-target-size));\n  }\n\n  input {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background-color: transparent;\n  }\n}\n\ntd.errors .text,\n.input.errors > .text,\n.input.errors > .border-box,\n.input.errors > .passwordwrapper,\n.input.errors > .autosuggest-container .text,\n.text.error {\n  border: 1px solid var(--error-color) !important;\n}\n\n.texticon {\n  position: relative;\n  cursor: text;\n  min-width: 130px;\n\n  &.icon {\n    &:before {\n      position: absolute;\n      top: calc(50% - 7rem / 16);\n      @include left(9px);\n      color: var(--ui-control-color);\n    }\n  }\n\n  .texticon-icon {\n    position: absolute;\n    top: calc((34rem / 16) / 2);\n    transform: translateY(-50%);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    @include left(9px);\n  }\n\n  .text {\n    @include padding-left(calc(26rem / 16));\n  }\n\n  .clear-btn {\n    position: absolute;\n    top: calc(\n      (var(--touch-target-size) - 34px) / -2\n    ); /* Responds to min-height of text input */\n    @include right(0);\n    width: var(--touch-target-size);\n    height: var(--touch-target-size);\n  }\n\n  &.has-filter-btn {\n    .text {\n      @include padding-right(26px);\n    }\n\n    .filter-btn {\n      position: absolute;\n      top: calc((34rem / 16) / 2);\n      transform: translateY(-50%);\n      @include right(4px);\n      padding: 0 7px 4px;\n      font-size: 14px;\n      line-height: 22px;\n      cursor: pointer;\n      border-radius: 13px;\n\n      &:before {\n        @include icon;\n        content: 'filter';\n        color: var(--medium-text-color);\n      }\n\n      &:hover {\n        background-color: var(--gray-100);\n      }\n\n      &:active,\n      &.active,\n      &[aria-expanded='true'] {\n        background-color: var(--gray-350);\n\n        &:before {\n          color: var(--white);\n        }\n      }\n    }\n\n    .text {\n      &.clearable {\n        @include padding-right(calc(30px + var(--touch-target-size)));\n      }\n    }\n\n    .clear-btn {\n      @include right(30px);\n    }\n  }\n}\n\n.texthint-container {\n  position: relative;\n  height: 0;\n}\n\n.texthint {\n  position: absolute;\n  top: -1px;\n  width: 100%;\n  color: var(--light-text-color);\n  cursor: text;\n}\n\n.passwordwrapper {\n  position: relative;\n\n  .password {\n    border: none;\n    background: transparent;\n    padding-right: 4rem;\n    box-shadow: none;\n  }\n\n  .password-toggle {\n    color: var(--link-color);\n    position: absolute;\n    top: 0;\n    @include right(9px);\n    bottom: 0;\n    cursor: pointer;\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n\n.datetimewrapper {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: row;\n  align-items: center;\n  gap: 5px;\n}\n\n.clear-btn {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 24px;\n  cursor: pointer;\n  color: var(--ui-control-color);\n  border: none;\n  padding: 0;\n  background: transparent;\n\n  &:before {\n    @include icon;\n    content: 'remove';\n  }\n\n  &:hover {\n    color: var(--ui-control-hover-color);\n  }\n\n  &:active {\n    color: var(--ui-control-active-color);\n  }\n}\n\n.close-btn {\n  position: relative;\n\n  &:before,\n  &:after {\n    position: absolute;\n    content: '';\n    top: 50%;\n    left: 50%;\n    height: 15px;\n    width: 2px;\n    background-color: var(--ui-control-color);\n  }\n\n  &:before {\n    transform: translate(-50%, -50%) rotate(-45deg);\n  }\n\n  &:after {\n    transform: translate(-50%, -50%) rotate(45deg);\n  }\n\n  &:hover {\n    &:before,\n    &:after {\n      background-color: var(--ui-control-hover-color);\n    }\n  }\n\n  &:active {\n    &:before,\n    &:after {\n      background-color: var(--ui-control-active-color);\n    }\n  }\n}\n\n.datewrapper,\n.timewrapper {\n  display: inline-block;\n  position: relative;\n\n  .text {\n    position: relative;\n    z-index: 1;\n    width: 100%;\n\n    & + div[data-icon] {\n      display: none;\n    }\n\n    &:placeholder-shown,\n    &.empty-value {\n      & + div[data-icon] {\n        display: block;\n        position: absolute;\n        top: calc(50% - 12px);\n        @include left(14px);\n        z-index: 0;\n        color: var(--light-text-color);\n\n        &,\n        &:before {\n          user-select: none;\n          pointer-events: none;\n          z-index: 1;\n        }\n      }\n    }\n  }\n}\n\n.datewrapper {\n  width: 8em;\n}\n\n.timewrapper {\n  width: 7em;\n}\n\n@include placeholder-styles(var(--gray-400));\n\n/* Kill IE's special text features */\n::-ms-reveal,\n::-ms-clear {\n  display: none;\n}\n\n/* Asset indexing related */\ntr.indexingSession td {\n  height: 34px;\n  padding: 1px 10px;\n}\n\ntr.indexingSession td.progress div.progressContainer {\n  width: 100%;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n}\n\ntr.indexingSession td.progress div.progressContainer .progressbar {\n  width: 70%;\n  position: relative;\n  left: 0;\n  height: 12px;\n  z-index: 1;\n}\n\ntr.indexingSession td.progress div.progressContainer div.progressInfo {\n  width: 20%;\n}\n\n// Selects\n.select:not(.selectize),\n.select:not(.selectize) select {\n  @include select-styles;\n}\n\n.select:not(.selectize) {\n  @include select-container-styles;\n}\n\n.select:not(.selectize):after {\n  @include select-arrow-styles;\n}\n\n.select:not(.selectize) select {\n  @include select-input-styles;\n  white-space: pre;\n}\n\n.select:not(.selectize).fullwidth select {\n  @include select-input-fullwidth-styles;\n}\n\n.select:not(.selectize) select {\n  &:hover {\n    @include select-input-focused-styles;\n  }\n\n  @include focus-styles {\n    @include select-input-focused-styles;\n  }\n}\n\n.select:not(.selectize).small:after {\n  top: 9px;\n}\n\n.select:not(.selectize).small select {\n  padding-top: 4px !important;\n  padding-bottom: 4px !important;\n  font-size: 11px;\n}\n\n.selectize-control .selectize-input.disabled,\n.custom-select.disabled {\n  opacity: 1;\n  cursor: not-allowed !important;\n  pointer-events: auto !important;\n\n  * {\n    cursor: not-allowed !important;\n    pointer-events: auto !important;\n  }\n}\n\n.selectize .selectize-input {\n  display: block;\n  border-color: inherit;\n  box-shadow: none;\n  background-color: transparent;\n\n  .item {\n    max-width: 100%;\n\n    span {\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n  }\n}\n\n.selectize.select .selectize-input:after {\n  display: none;\n}\n\nbody .selectize-dropdown {\n  border: none;\n  z-index: 101;\n}\n\n/* single select styles */\n.selectize.select {\n  @include placeholder-styles(var(--gray-700));\n  height: 34px;\n\n  &:not(.fullwidth) {\n    width: 25em;\n    max-width: 100%;\n  }\n}\n\n.datetimewrapper .selectize.select:not(.fullwidth) {\n  max-width: calc(100% - 29px);\n}\n\n.selectize.select .selectize-control {\n  @include select-container-styles;\n\n  &:after {\n    @include select-arrow-styles;\n  }\n}\n\n.selectize.select .selectize-input {\n  @include select-styles;\n\n  &.focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.selectize.select .selectize-input {\n  @include select-input-styles;\n}\n\n.selectize.select .selectize-control,\n.selectize.select .selectize-input {\n  width: 100%;\n}\n\n/* multi select styles */\n.selectize.multiselect .selectize-input {\n  min-height: 34px;\n  padding-bottom: 3px;\n\n  &.focus {\n    @include input-focused-styles;\n  }\n\n  & > .item {\n    @include token-styles;\n    display: inline-flex;\n    flex-direction: row;\n    padding: 3px 7px !important;\n\n    &.active {\n      @include active-token-styles;\n    }\n\n    & > .remove {\n      position: static;\n      @include margin(-1px, -3px, 0, 3px);\n      border-left: none;\n      padding: 0;\n      font-size: 0;\n      color: var(--ui-control-color);\n\n      &:hover {\n        color: var(--ui-control-hover-color);\n        background-color: transparent;\n      }\n\n      &:before {\n        font-size: 14px;\n        @include icon;\n        content: 'remove';\n      }\n    }\n  }\n}\n\n/* menu styles */\nbody {\n  .selectize-dropdown {\n    margin-top: 1px;\n\n    [data-selectable],\n    .option,\n    .optgroup-header {\n      @include menu-item-styles;\n    }\n\n    .optgroup {\n      &:not(:first-child) {\n        border-top: 1px solid var(--hairline-color);\n      }\n      padding-top: 5px;\n\n      .option {\n        padding-left: 24px;\n      }\n    }\n\n    .optgroup-header {\n      @include h6-styles;\n      margin: 0;\n      padding: 4px 0;\n    }\n\n    .active:not(.selected),\n    .option:hover {\n      background-color: var(--gray-100);\n    }\n\n    .selected {\n      @include menu-item-active-styles;\n      cursor: default !important;\n\n      .light {\n        color: inherit !important;\n      }\n    }\n  }\n\n  .selectize-dropdown-content {\n    @include menu-styles;\n    max-height: 70vh;\n\n    .option {\n      min-height: 18px;\n    }\n\n    & > div[data-value='new'] {\n      &:before {\n        @include icon;\n        content: 'plus';\n        margin-right: 5px;\n      }\n\n      &:after {\n        content: '…';\n      }\n    }\n  }\n\n  &.no-scroll .selectize-dropdown-content {\n    max-height: 200px; // default for selectize\n  }\n}\n\n/* datepicker */\n.ui-datepicker {\n  position: fixed;\n  top: -300px;\n  @include margin-left(1px);\n  -padding: 10px;\n  width: 210px;\n  height: 242px;\n  z-index: 101 !important;\n}\n\n.ui-datepicker-header {\n  padding: 8px 8px 4px;\n}\n\n.ui-datepicker-prev {\n  @include floatleft;\n}\n\n.ui-datepicker-next {\n  @include floatright;\n}\n\n.ui-datepicker-prev span,\n.ui-datepicker-next span {\n  display: none;\n}\n\n.ui-datepicker-prev,\n.ui-datepicker-next {\n  width: 20px;\n  height: 20px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n\n  &:hover:after {\n    border-color: var(--link-color);\n  }\n}\n\n.ui-datepicker-prev:after {\n  @include angle(left);\n}\n\n.ui-datepicker-next:after {\n  @include angle(right);\n}\n\n.ui-datepicker-title {\n  text-align: center;\n}\n\n.ui-datepicker-calendar th,\n.ui-datepicker-calendar td {\n  padding: 2px !important;\n}\n\n.ui-datepicker-calendar th span,\n.ui-datepicker-calendar td a {\n  display: block;\n  width: toRem(26);\n  line-height: 26px;\n  text-align: center;\n  color: var(--text-color);\n}\n\n.ui-datepicker-calendar th span {\n  color: var(--medium-text-color);\n  font-weight: normal;\n}\n\n.ui-datepicker-calendar td a {\n  border-radius: 2px;\n}\n\n.ui-datepicker-calendar td a:hover {\n  background-color: var(--light-sel-color);\n  text-decoration: none;\n}\n\n.ui-datepicker-calendar td a.ui-state-active {\n  background-color: var(--dark-sel-color);\n  color: var(--white);\n  @include light-on-dark-text;\n  cursor: default;\n}\n\n.ui-datepicker-calendar td.ui-datepicker-today a {\n  border-radius: 13px;\n  box-shadow: inset 0 0 0 2px var(--light-sel-color);\n}\n\n/* timepicker */\n.ui-timepicker-wrapper {\n  z-index: 101;\n}\n\n.ui-timepicker-list {\n  @include margin-left(1px);\n  overflow-y: auto;\n  width: calc(14px + 6em);\n  height: 210px;\n  z-index: 100;\n}\n\n.ui-timepicker-list li {\n  @include padding(2px, 0, 2px, 14px);\n  white-space: nowrap;\n  cursor: pointer;\n}\n\n.ui-timepicker-list li:hover {\n  background-color: var(--light-sel-color);\n}\n\n.ui-timepicker-list li.ui-timepicker-selected {\n  background-color: var(--dark-sel-color);\n  color: var(--white);\n  @include light-on-dark-text;\n  cursor: default;\n}\n\n/* slide picker */\n.slide-picker {\n  display: flex;\n  height: 1rem;\n  white-space: nowrap;\n\n  a {\n    position: relative;\n    border: 1px solid var(--hairline-color);\n    @include border-left(none);\n    background-image: none;\n    width: calc(8rem / 16 - 1px);\n    height: calc(1rem - 2px);\n    margin-left: 0;\n    margin-top: 1px;\n    margin-bottom: 1px;\n    box-sizing: border-box;\n    cursor: pointer;\n\n    &:first-child {\n      width: calc(8rem / 16);\n      @include border-left(1px solid var(--gray-400) !important);\n    }\n\n    &:before {\n      content: '';\n      position: absolute;\n      top: calc(-4rem / 16 - 1px);\n      left: -1px;\n      width: calc(100% + 2px);\n      height: var(--touch-target-size);\n    }\n  }\n\n  &:not(:hover) a.active,\n  &:hover a.active-hover {\n    border-top-color: var(--gray-400);\n    border-bottom-color: var(--gray-400);\n    height: 1rem;\n    margin-top: 0;\n    margin-bottom: 0;\n\n    &:first-child {\n      @include border-left(1px solid var(--gray-400));\n      @include border-top-left-radius(var(--small-border-radius));\n      @include border-bottom-left-radius(var(--small-border-radius));\n    }\n  }\n\n  &:not(:hover) a.last-active,\n  &:hover a.last-active-hover {\n    @include border-right(1px solid var(--gray-400));\n    @include border-top-right-radius(var(--small-border-radius));\n    @include border-bottom-right-radius(var(--small-border-radius));\n  }\n\n  &:focus {\n    a.active {\n      background-color: var(--light-sel-color);\n    }\n  }\n}\n\n/* icon picker */\n.icon-picker {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  gap: var(--xs);\n}\n\n.icon-picker--icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  @include input-styles;\n  border-radius: var(--ui-control-border-radius);\n  width: var(--ui-control-height);\n  height: var(--ui-control-height);\n  background: var(--gray-050);\n\n  svg {\n    width: calc(20rem / 16);\n    height: calc(20rem / 16);\n    @include svg-mask(var(--ui-control-color));\n  }\n}\n\n.icon-picker-modal {\n  --width: calc(var(--ui-control-height) * 10 + var(--s) * 9 + var(--xl) * 2);\n  width: var(--width) !important;\n  min-width: 0 !important;\n  max-width: calc(100% - 20px) !important;\n\n  .body {\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    gap: var(--l);\n\n    .icon-picker-modal--list {\n      flex: 1;\n      position: relative;\n      overflow: hidden;\n\n      &:not(.loading) {\n        .spinner {\n          display: none;\n        }\n      }\n\n      &.loading {\n        &:after {\n          position: absolute;\n          top: 0;\n          left: 0;\n          width: 100%;\n          height: 100%;\n          content: '';\n          background-color: rgba(255, 255, 255, 0.75);\n        }\n\n        .spinner {\n          top: calc(50% - 10px);\n          z-index: 1;\n        }\n      }\n\n      ul {\n        display: flex;\n        flex-direction: row;\n        flex-wrap: wrap;\n        justify-content: start;\n        gap: var(--s);\n        max-height: 100%;\n        overflow: auto;\n\n        .icon-picker--icon {\n          --focus-ring: var(--inner-focus-ring);\n\n          &:hover {\n            border-color: var(--link-color);\n            background-color: var(--blue-100);\n          }\n        }\n      }\n    }\n  }\n}\n\n/* errors */\nul.errors {\n  margin-top: 5px;\n  list-style-type: square;\n  @include padding-left(20px);\n}\n\nul.errors li {\n  color: var(--error-color);\n}\n\n/* message pages */\n.message-container {\n  position: absolute;\n  z-index: 100;\n  top: 0;\n  @include left(0);\n  width: 100%;\n  height: 100%;\n\n  &.no-access {\n    background-color: transparentize($grey900, 0.5);\n  }\n\n  .pane {\n    top: 50%;\n    margin-top: -33px !important;\n    margin-left: auto;\n    margin-right: auto;\n    width: 320px;\n    box-shadow: 0 25px 100px transparentize($grey900, 0.5);\n  }\n}\n\n/* 2FA setup page */\nbody.setup-2fa {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n\n  #setup-2fa {\n    display: flex;\n    flex-direction: column;\n    gap: var(--l);\n    width: 550px;\n    max-width: 100%;\n    padding: var(--padding);\n\n    #setup-2fa-intro {\n      text-align: center;\n    }\n\n    #setup-2fa-btn {\n      display: flex;\n      justify-content: center;\n    }\n  }\n}\n\n/* licensing issues page */\nbody.licensing-issues {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n  padding: var(--padding);\n\n  #licensing-issues {\n    display: flex;\n    flex-direction: row;\n    max-width: 50em;\n\n    .buttons {\n      justify-content: space-between;\n      [data-icon] {\n        margin-left: 0;\n        margin-right: 0;\n      }\n    }\n  }\n\n  #continue {\n    margin: 0;\n  }\n}\n\n/* auto-suggest */\n.autosuggest-container {\n  position: relative;\n}\n\n.autosuggest__results-container {\n  position: absolute;\n  z-index: 2;\n  width: 100%;\n  border-radius: var(--large-border-radius);\n  background-color: var(--white);\n  @include shadow;\n  box-sizing: border-box;\n  padding: 0 14px;\n  text-align: left;\n  @include sans-serif-font;\n  font-size: 1em !important;\n\n  .autosuggest__results-before {\n    @include h6-styles;\n    margin-top: 14px !important;\n  }\n\n  .autosuggest__results-item {\n    @include menu-item-styles;\n    overflow: hidden;\n    text-overflow: ellipsis;\n\n    &:hover,\n    &.autosuggest__results-item--highlighted {\n      @include menu-item-active-styles;\n      cursor: pointer;\n    }\n  }\n}\n\n/* ----------------------------------------\n/* Matrix\n/* ----------------------------------------*/\n\n/* Matrix fields */\n.matrix {\n  & > .buttons {\n    margin-top: 10px;\n  }\n}\n\n.matrixblock {\n  position: relative;\n  margin-bottom: 10px;\n  padding: 0 var(--m) var(--m);\n  border-radius: var(--large-border-radius);\n  border: 2px solid var(--gray-100);\n  background-color: var(--white);\n\n  &.static {\n    .titlebar {\n      @include padding-right(0);\n      @include padding-left(14px);\n      margin-bottom: 14px;\n    }\n  }\n\n  & > .titlebar > .matrixblock-tabs .pane-tabs .menubtn:not(.action-btn),\n  & > .actions .action-btn {\n    padding: 0;\n    width: var(--touch-target-size);\n    height: var(--touch-target-size);\n    color: var(--custom-text-color, var(--ui-control-color));\n    background-color: transparent;\n\n    &:hover {\n      backdrop-filter: brightness(90%);\n    }\n\n    &:active,\n    &[aria-expanded='true'] {\n      backdrop-filter: brightness(85%);\n    }\n  }\n\n  .flex-fields {\n    --row-gap: var(--m) !important;\n  }\n\n  // no margin when a .field comes after a hidden item.\n  .hidden + .field {\n    margin-top: 0;\n  }\n\n  & > .titlebar {\n    display: grid;\n    grid-template-columns: auto 1fr;\n    align-items: center;\n    gap: var(--m);\n    margin: 0 calc(var(--m) * -1);\n    box-sizing: border-box;\n    border-radius: calc(var(--large-border-radius) - 2px)\n      calc(var(--large-border-radius) - 2px) 0 0;\n    @include padding(5px, calc(var(--m) + 70px), 5px, var(--m));\n    color: var(--custom-text-color, var(--light-text-color));\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n    word-wrap: normal;\n    cursor: default;\n    user-select: none;\n    position: relative;\n    background-color: var(--gray-050);\n    min-height: calc(var(--lh) + 10px);\n\n    & > .preview {\n      flex-grow: 1;\n      min-width: 0;\n      opacity: 0;\n      transition: opacity linear 100ms;\n      overflow: hidden;\n\n      &:empty {\n        display: none;\n      }\n\n      body.ltr & {\n        mask-image: linear-gradient(\n          to left,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 12px\n        );\n      }\n      body.rtl & {\n        mask-image: linear-gradient(\n          to right,\n          rgba(0, 0, 0, 0),\n          rgba(0, 0, 0, 1) 12px\n        );\n      }\n\n      span {\n        opacity: 0.5;\n      }\n    }\n\n    & > .matrixblock-tabs {\n      flex: 1;\n      min-width: 0;\n      margin: -5px 0;\n\n      .pane-tabs {\n        margin: 0;\n        @include padding-right(3px);\n\n        [role='tablist'] {\n          padding: 0 12px;\n\n          &.scrollable {\n            mask-image: linear-gradient(\n              to right,\n              rgba(0, 0, 0, 0),\n              rgba(0, 0, 0) 12px,\n              rgba(0, 0, 0) calc(100% - 12px),\n              rgba(0, 0, 0, 0) 100%\n            );\n          }\n\n          [role='tab'] {\n            background-color: transparent;\n\n            .tab-label {\n              height: calc(var(--lh) + 10px);\n              padding: 0 var(--m);\n            }\n          }\n        }\n\n        .menubtn:not(.action-btn) {\n          margin-left: 0;\n          margin-right: 0;\n\n          &:not(:empty):not(.btn-empty)::after {\n            @include margin-left(0px);\n          }\n        }\n      }\n    }\n\n    & > .preview:first-child:empty + .matrixblock-tabs {\n      @include margin-left(calc((var(--m) + 12px) * -1));\n\n      [role='tab']:first-child {\n        &,\n        .tab-label {\n          @include border-top-left-radius(\n            calc(var(--large-border-radius) - 2px)\n          );\n        }\n      }\n    }\n  }\n\n  &.disabled-entry {\n    & > .titlebar {\n      @include padding-right(100px);\n    }\n\n    & > .actions {\n      & > .status {\n        &.off {\n          display: block;\n        }\n      }\n    }\n  }\n\n  &.collapsed {\n    & > .titlebar {\n      border-radius: calc(var(--large-border-radius) - 2px);\n\n      & > .preview {\n        opacity: 1;\n      }\n    }\n  }\n\n  & > .actions {\n    display: flex;\n    align-items: center;\n    gap: var(--xs);\n    position: absolute;\n    top: 0;\n    @include right(var(--m));\n    cursor: default;\n    min-height: calc(var(--lh) + 10px);\n\n    & > * {\n      margin: 0 !important;\n    }\n\n    & > .status {\n      &.off {\n        display: none;\n      }\n    }\n\n    a:not([data-action]) {\n      padding: 0;\n      height: var(--touch-target-size);\n      text-align: center;\n      color: var(--dark-hairline-color);\n      transform: color linear 100ms;\n\n      &:hover {\n        color: var(--link-color);\n\n        &.settings:after {\n          border-color: var(--link-color);\n        }\n      }\n    }\n  }\n\n  &:not(.static) {\n    & > .fields {\n      padding-top: var(--l);\n    }\n  }\n\n  & > .fields > .flex-fields > .field {\n    &:before {\n      display: none;\n    }\n\n    & > .status-badge {\n      @include left(-2px);\n    }\n  }\n\n  & > .buttons {\n    margin-top: 0;\n    height: 30px;\n  }\n}\n\n/* categories */\n.add-category-form {\n  margin-top: 24px;\n}\n\n.add-category-form .texticon {\n  width: 200px;\n  @include floatleft;\n  @include margin-right(5px);\n}\n\n.add-category-form .texticon .text {\n  @include padding-right(30px);\n}\n\n.add-category-form .texticon .spinner {\n  position: absolute;\n  top: 0;\n  @include right(5px);\n}\n\n/* site pickers */\nbody.sitepicker {\n  #main-content {\n    padding: 30px;\n    justify-content: center;\n    align-items: center;\n    text-align: center;\n  }\n\n  #content-container {\n    max-width: 400px;\n  }\n}\n\n.sitepicker-group {\n  li {\n    &:not(:first-child) {\n      a {\n        margin-top: -1px;\n        border-top-left-radius: 0;\n        border-top-right-radius: 0;\n\n        &:not(:hover) {\n          border-top-color: transparent;\n        }\n      }\n    }\n\n    &:not(:last-child) {\n      a {\n        border-bottom-left-radius: 0;\n        border-bottom-right-radius: 0;\n      }\n    }\n\n    a {\n      display: block;\n      position: relative;\n      text-align: left;\n      width: 100%;\n      box-sizing: border-box;\n      border: 1px solid var(--hairline-color);\n      border-radius: var(--medium-border-radius);\n      @include padding(9px, 42px, 9px, 15px);\n      font-size: 16px;\n      line-height: 1.4;\n\n      &:after {\n        font-size: 14px;\n        position: absolute;\n        top: calc(50% - 7px);\n        @include right(12px);\n        margin: 0;\n        padding: 0;\n      }\n\n      &:hover {\n        border-color: var(--link-color);\n        text-decoration: none;\n        z-index: 1;\n      }\n    }\n  }\n}\n\n/* ----------------------------------------\n/* IE hacks\n/* ----------------------------------------*/\n\n/* Fix layout of modal element selectors for IE8 */\n.elementselectormodal .body .main {\n  float: left \\9;\n  width: 445px \\9;\n}\n\n/* ----------------------------------------\n/*  Retina graphics\n/* ----------------------------------------*/\n\n@media only screen and (-webkit-min-device-pixel-ratio: 1.5),\n  only screen and (-moz-min-device-pixel-ratio: 1.5),\n  only screen and (-o-min-device-pixel-ratio: 3/2),\n  only screen and (min-device-pixel-ratio: 1.5),\n  only screen and (min-resolution: 1.5dppx) {\n  .structure ul li {\n    background-size: 40px;\n    body.ltr & {\n      background-image: url(../images/branch_2x.png);\n    }\n    body.rtl & {\n      background-image: url(../images/branch_rtl_2x.png);\n    }\n  }\n\n  .hud .tip-left {\n    background-image: url(../images/hudtip_left_2x.png);\n    background-size: 15px 30px;\n  }\n  .hud .tip-top {\n    background-image: url(../images/hudtip_top_2x.png);\n    background-size: 30px 15px;\n  }\n  .hud .tip-right {\n    background-image: url(../images/hudtip_right_2x.png);\n    background-size: 15px 30px;\n  }\n  .hud .tip-bottom {\n    background-image: url(../images/hudtip_bottom_2x.png);\n    background-size: 30px 15px;\n  }\n  .hud.has-footer .tip-bottom {\n    background-image: url(../images/hudtip_bottom_gray_2x.png);\n  }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$red050: #fef2f2;\n$red100: #fee2e2;\n$red200: #fecaca;\n$red300: #fca5a5;\n$red400: #f87171;\n$red500: #ef4444;\n$red600: #dc2626;\n$red700: #b91c1c;\n$red800: #991b1b;\n$red900: #7f1d1d;\n\n$orange050: #fff7ed;\n$orange100: #ffedd5;\n$orange200: #fed7aa;\n$orange300: #fdba74;\n$orange400: #fb923c;\n$orange500: #f97316;\n$orange600: #ea580c;\n$orange700: #c2410c;\n$orange800: #9a3412;\n$orange900: #7c2d12;\n\n$yellow050: #fefce8;\n$yellow100: #fef9c3;\n$yellow200: #fef08a;\n$yellow300: #fde047;\n$yellow400: #facc15;\n$yellow500: #eab308;\n$yellow600: #ca8a04;\n$yellow700: #a16207;\n$yellow800: #854d0e;\n$yellow900: #713f12;\n\n$green050: #f0fdf4;\n$green100: #dcfce7;\n$green200: #bbf7d0;\n$green300: #86efac;\n$green400: #4ade80;\n$green500: #22c55e;\n$green600: #16a34a;\n$green700: #15803d;\n$green800: #166534;\n$green900: #14532d;\n\n$teal050: #f0fdfa;\n$teal100: #ccfbf1;\n$teal200: #99f6e4;\n$teal300: #5eead4;\n$teal400: #2dd4bf;\n$teal500: #14b8a6;\n$teal550: #11a697;\n$teal600: #0d9488;\n$teal700: #0f766e;\n$teal800: #115e59;\n$teal900: #134e4a;\n\n$cyan050: #ecfeff;\n$cyan100: #cffafe;\n$cyan200: #a5f3fc;\n$cyan300: #67e8f9;\n$cyan400: #22d3ee;\n$cyan500: #06b6d4;\n$cyan600: #0891b2;\n$cyan700: #0e7490;\n$cyan800: #155e75;\n$cyan900: #164e63;\n\n$blue050: #eff6ff;\n$blue100: #dbeafe;\n$blue200: #bfdbfe;\n$blue300: #93c5fd;\n$blue400: #60a5fa;\n$blue500: #3b82f6;\n$blue600: #2563eb;\n$blue700: #1d4ed8;\n$blue800: #1e40af;\n$blue900: #1e3a8a;\n\n$violet050: #f5f3ff;\n$violet100: #ede9fe;\n$violet200: #ddd6fe;\n$violet300: #c4b5fd;\n$violet400: #a78bfa;\n$violet500: #8b5cf6;\n$violet600: #7c3aed;\n$violet700: #6d28d9;\n$violet800: #5b21b6;\n$violet900: #4c1d95;\n\n$pink050: #fdf2f8;\n$pink100: #fce7f3;\n$pink200: #fbcfe8;\n$pink300: #f9a8d4;\n$pink400: #f472b6;\n$pink500: #ec4899;\n$pink600: #db2777;\n$pink700: #be185d;\n$pink800: #9d174d;\n$pink900: #831843;\n\n// submit button colors\n$primaryColor: $red600;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $textColor;\n$menuOptionActiveBackgroundColor: $grey050;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing:\n  0 0 0 1px $lightFocusColor,\n  0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing:\n  0 0 0 1px $mediumFocusColor,\n  0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing:\n  0 0 0 1px $darkFocusColor,\n  0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n\n@mixin sans-serif-font {\n  font-family:\n    system-ui,\n    BlinkMacSystemFont,\n    -apple-system,\n    'Segoe UI',\n    'Roboto',\n    'Oxygen',\n    'Ubuntu',\n    'Cantarell',\n    'Fira Sans',\n    'Droid Sans',\n    'Helvetica Neue',\n    sans-serif;\n}\n\n@mixin fixed-width-font {\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n    monospace;\n  font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n  $max: length($values);\n  $remValues: '';\n\n  @for $i from 1 through $max {\n    $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n    @if $i < $max {\n      $remValues: #{$remValues + ' '};\n    }\n  }\n\n  @return $remValues;\n}\n\n@mixin fontSize($size) {\n  font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n  body:not(.reduce-focus-visibility) &:focus,\n  body.reduce-focus-visibility &:focus-visible {\n    @content;\n  }\n}\n\n@mixin svg-mask($color) {\n  rect,\n  circle,\n  ellipse,\n  line,\n  polyline,\n  polygon,\n  path,\n  text {\n    fill: $color;\n    stroke-width: 0;\n  }\n}\n\n@mixin icon {\n  font-family: 'Craft';\n  speak: never;\n  -webkit-font-feature-settings: 'liga', 'dlig';\n  -moz-font-feature-settings: 'liga=1, dlig=1';\n  -moz-font-feature-settings: 'liga', 'dlig';\n  -ms-font-feature-settings: 'liga', 'dlig';\n  -o-font-feature-settings: 'liga', 'dlig';\n  font-feature-settings: 'liga', 'dlig';\n  text-rendering: optimizeLegibility;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  direction: ltr; // Fixes a rendering issue in Chrome/Win\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n\n  display: inline-block;\n  text-align: center;\n  font-style: normal;\n  vertical-align: middle;\n  word-wrap: normal !important;\n  user-select: none;\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: calc(2rem / 16)) {\n  display: block;\n  content: '';\n  font-size: 0;\n  width: calc(7rem / 16);\n  height: calc(7rem / 16);\n  border: solid $color;\n  border-width: 0 $width $width 0;\n  opacity: 0.8;\n  position: relative;\n\n  @if $dir == up {\n    transform: rotate(225deg);\n    top: 2px;\n  } @else if $dir == down {\n    transform: rotate(45deg);\n  } @else if $dir == left {\n    body.ltr & {\n      transform: rotate(135deg);\n    }\n    body.rtl & {\n      transform: rotate(-45deg);\n    }\n  } @else if $dir == right {\n    body.ltr & {\n      transform: rotate(-45deg);\n    }\n    body.rtl & {\n      transform: rotate(135deg);\n    }\n  }\n}\n\n@mixin clearafter {\n  content: '';\n  display: block;\n  height: 0;\n  clear: both;\n  visibility: hidden;\n}\n\n@mixin shadow {\n  box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n  background: $white;\n  box-shadow:\n    0 0 0 1px $grey200,\n    0 2px 12px transparentize($grey200, 0.5);\n\n  &:focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n@mixin modal {\n  border-radius: $largeBorderRadius;\n  background-color: $white;\n  box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n  // Make light on dark text sharp on Macs\n  // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n}\n\n@mixin light-focus-ring() {\n  --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n    0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n  @if $secondary != null {\n    --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n  } @else {\n    --focus-ring: 0 0 0 3px #{$primary};\n  }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n  // Creates a two-color focus ring, with a white\n  // If button is light, the dark box shadow is adjacent to the button\n  // Else the light box shadow is adjacent to the button\n  --light-color: var(--white);\n  --dark-color: var(--gray-800);\n\n  @if $light-button {\n    --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n  } @else {\n    --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n  }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n  body.ltr & {\n    left: $left;\n  }\n  body.rtl & {\n    right: $left;\n  }\n}\n\n@mixin right($right) {\n  body.ltr & {\n    right: $right;\n  }\n  body.rtl & {\n    left: $right;\n  }\n}\n\n@mixin alignleft {\n  body.ltr & {\n    text-align: left;\n  }\n  body.rtl & {\n    text-align: right;\n  }\n}\n\n@mixin alignright {\n  body.ltr & {\n    text-align: right;\n  }\n  body.rtl & {\n    text-align: left;\n  }\n}\n\n@mixin border-left($params...) {\n  body.ltr & {\n    border-left: $params;\n  }\n  body.rtl & {\n    border-right: $params;\n  }\n}\n\n@mixin border-right($params...) {\n  body.ltr & {\n    border-right: $params;\n  }\n  body.rtl & {\n    border-left: $params;\n  }\n}\n\n@mixin border-left-width($param) {\n  body.ltr & {\n    border-left-width: $param;\n  }\n  body.rtl & {\n    border-right-width: $param;\n  }\n}\n\n@mixin border-right-width($param) {\n  body.ltr & {\n    border-right-width: $param;\n  }\n  body.rtl & {\n    border-left-width: $param;\n  }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n  body.ltr & {\n    border-radius: $tl $tr $br $bl;\n  }\n  body.rtl & {\n    border-radius: $tr $tl $bl $br;\n  }\n}\n\n@mixin border-top-left-radius($params...) {\n  body.ltr & {\n    border-top-left-radius: $params;\n  }\n  body.rtl & {\n    border-top-right-radius: $params;\n  }\n}\n\n@mixin border-top-right-radius($params...) {\n  body.ltr & {\n    border-top-right-radius: $params;\n  }\n  body.rtl & {\n    border-top-left-radius: $params;\n  }\n}\n\n@mixin border-bottom-left-radius($params...) {\n  body.ltr & {\n    border-bottom-left-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-right-radius: $params;\n  }\n}\n\n@mixin border-bottom-right-radius($params...) {\n  body.ltr & {\n    border-bottom-right-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-left-radius: $params;\n  }\n}\n\n@mixin floatleft {\n  body.ltr & {\n    float: left;\n  }\n  body.rtl & {\n    float: right;\n  }\n}\n\n@mixin floatright {\n  body.ltr & {\n    float: right;\n  }\n  body.rtl & {\n    float: left;\n  }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    margin: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    margin: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin margin-left($margin...) {\n  body.ltr & {\n    margin-left: $margin;\n  }\n  body.rtl & {\n    margin-right: $margin;\n  }\n}\n\n@mixin margin-right($margin...) {\n  body.ltr & {\n    margin-right: $margin;\n  }\n  body.rtl & {\n    margin-left: $margin;\n  }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    padding: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    padding: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin padding-left($padding...) {\n  body.ltr & {\n    padding-left: $padding;\n  }\n  body.rtl & {\n    padding-right: $padding;\n  }\n}\n\n@mixin padding-right($padding...) {\n  body.ltr & {\n    padding-right: $padding;\n  }\n  body.rtl & {\n    padding-left: $padding;\n  }\n}\n\n// Misc\n\n@mixin dark-inputs {\n  @include placeholder-styles($grey400);\n\n  .btn,\n  .select:not(.selectize) select {\n    background-color: $grey200;\n\n    &:focus,\n    &:hover {\n      background-color: darken($grey200, 5%);\n    }\n\n    &:active,\n    &.active {\n      background-color: darken($grey200, 10%);\n    }\n  }\n\n  .text {\n    background-color: $grey200;\n\n    &:focus {\n      background-color: darken($grey200, 5%);\n    }\n  }\n}\n\n@mixin header-btn {\n  width: calc(30rem / 16);\n  height: calc(30rem / 16);\n  padding-left: 0;\n  padding-right: 0;\n\n  &:not(:hover):not(:active):not(.active) {\n    background-color: transparent;\n  }\n  &:not(:active):not(.active):hover {\n    background-color: transparentize($grey300, 0.85);\n  }\n}\n\n@mixin h6-styles {\n  margin: 14px 0 3px;\n  font-size: 11px;\n  line-height: 1.2;\n  color: $lightTextColor;\n  text-transform: uppercase;\n}\n\n@mixin token-styles {\n  display: inline-block;\n  border-radius: $smallBorderRadius;\n  padding: 3px 7px;\n  font-size: 12px;\n  line-height: 14px;\n  color: $textColor;\n  background-color: $grey100;\n}\n\n@mixin active-token-styles {\n  background-color: $grey200;\n}\n\n@mixin menu-styles {\n  z-index: 100;\n  border-radius: $menuBorderRadius;\n  padding: 0 14px;\n  overflow: auto;\n  background: $white;\n  user-select: none;\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-item-styles {\n  margin: 0 -14px;\n  padding: 10px 14px;\n  color: $menuOptionColor;\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n@mixin menu-item-active-styles {\n  color: var(--white) !important;\n  background-color: var(--dark-sel-color);\n\n  svg {\n    @include svg-mask(var(--white));\n  }\n}\n\n@mixin disclosure-link-hover-styles {\n  color: $menuOptionColor;\n  background-color: $grey050;\n}\n\n@mixin input-styles {\n  border-radius: $smallBorderRadius;\n  border: 1px solid transparentize($inputColor, 0.75);\n  background-color: hsl(212, 50%, 99%);\n  background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n  box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n  input::-webkit-input-placeholder,\n  textarea::-webkit-input-placeholder {\n    color: $color;\n  }\n\n  input:-ms-input-placeholder,\n  textarea:-ms-input-placeholder {\n    color: $color;\n  }\n\n  input::-ms-input-placeholder,\n  textarea::-ms-input-placeholder {\n    color: $color;\n  }\n\n  input:-moz-placeholder,\n  textarea:-moz-placeholder {\n    color: $color;\n  }\n\n  input::-moz-placeholder,\n  textarea::-moz-placeholder {\n    color: $color;\n  }\n\n  input::placeholder,\n  textarea::placeholder {\n    color: $color;\n  }\n}\n\n@mixin select-styles {\n  position: relative;\n  border-radius: $largeBorderRadius;\n  white-space: nowrap;\n}\n\n@mixin select-container-styles {\n  max-width: 100%;\n  position: relative;\n  :not(.flex) > & {\n    display: inline-block;\n  }\n}\n\n@mixin select-arrow-styles {\n  @include angle;\n  position: absolute;\n  z-index: 1;\n  top: calc(50% - 5px);\n  @include right(9px);\n  user-select: none;\n  pointer-events: none;\n  color: var(--ui-control-color);\n}\n\n@mixin select-input-styles {\n  display: block;\n  position: relative;\n  max-width: 100%;\n  border: none;\n  @include padding(7px, 22px, 7px, 10px);\n  font-size: 14px;\n  line-height: 20px;\n  color: $textColor;\n  background-color: hsl(212, 25%, 90%);\n  appearance: none;\n  // from https://stackoverflow.com/a/15933790/1688568\n  &::-ms-expand {\n    display: none;\n  }\n}\n\n@mixin select-input-fullwidth-styles {\n  min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n  outline-color: transparent;\n  background-color: hsl(212, 25%, 85%);\n  box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n  height: var(--touch-target-size);\n  width: var(--touch-target-size);\n}\n\n// https://tailwindcss.com/docs/screen-readers#undoing-screen-reader-only-elements\n@mixin visually-hidden {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@mixin not-visually-hidden {\n  position: static;\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n@mixin readable {\n  font-size: 16px;\n  line-height: 22px;\n\n  h1,\n  .h1,\n  h2,\n  .h2,\n  h3,\n  .h3,\n  h4,\n  .h4,\n  h5,\n  .h5,\n  h6,\n  .h6 {\n    margin: 24px 0 16px;\n    font-weight: 600;\n  }\n\n  h1,\n  .h1 {\n    font-size: 32px;\n    line-height: 40px;\n    color: #000;\n  }\n\n  h2,\n  .h2 {\n    font-size: 24px;\n    line-height: 30px;\n  }\n\n  h3,\n  .h3 {\n    font-size: 20px;\n    line-height: 24px;\n  }\n\n  h4,\n  .h4 {\n    font-size: 16px;\n    line-height: 20px;\n  }\n\n  h5,\n  .h5 {\n    font-size: 14px;\n    line-height: 18px;\n  }\n\n  h6,\n  .h6 {\n    font-size: 13.6px;\n    line-height: 17px;\n    color: $mediumTextColor;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n\n  .tip-dismiss-btn {\n    position: absolute;\n    top: 12px;\n    @include right(12px);\n\n    & + p {\n      margin-top: 0;\n    }\n  }\n\n  blockquote {\n    margin: 16px 0;\n\n    &:not(.note) {\n      padding: 0 16px;\n      color: $mediumTextColor;\n      @include border-left(4px solid $hairlineColor);\n    }\n\n    &.note {\n      position: relative;\n      border-radius: 4px;\n      padding: 1em;\n      @include padding-left(50px);\n      border: 1px solid;\n\n      &.dismissible {\n        @include padding-right(36px);\n      }\n\n      &:not(.tip):not(.warning) {\n        border-color: $errorColor;\n        color: #bf503f;\n\n        &:before {\n          content: 'alert';\n          color: $errorColor;\n        }\n      }\n\n      &.tip {\n        border-color: $linkColor;\n        color: $linkColor;\n\n        &:before {\n          content: 'lightbulb';\n          color: $linkColor;\n        }\n      }\n\n      &.warning {\n        border-color: $warningColor;\n        color: #cf783a;\n\n        &:before {\n          content: 'alert';\n          color: $warningColor;\n        }\n      }\n\n      &:before {\n        @include icon;\n        opacity: 1;\n        position: absolute;\n        top: 15px;\n        @include left(16px);\n        font-size: 24px;\n        width: 24px;\n      }\n\n      a[href] {\n        color: currentColor;\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .go:after {\n    font-size: 14px;\n  }\n}\n\n@mixin checkered-bg($size) {\n  // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n  $halfSize: $size * 0.5;\n  background-image: linear-gradient(\n      45deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      135deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      45deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    ),\n    linear-gradient(\n      135deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    );\n  background-size: $size $size;\n  background-position:\n    0 0,\n    $halfSize 0,\n    $halfSize -#{$halfSize},\n    0 $halfSize;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n$sidebarWidth: calc(226rem / 16);\n$sidebarZIndex: 100;\n$detailsWidth: 350px;\n$minFullUiWidth: calc(1200rem / 16);\n$minXlUiWidth: calc(1536rem / 16);\n$minDesktopWidth: calc(600rem / 16);\n$minHorizontalUiWidth: $minFullUiWidth - $sidebarWidth;\n\n// Colors\n$badgeBackgroundColor: var(--gray-200);\n$badgeColor: var(--gray-800);\n\n:root {\n  --xs: 4px;\n  --s: 8px;\n  --m: 14px;\n  --l: 18px;\n  --xl: 24px;\n  --padding: var(--xl);\n  --neg-padding: calc(var(--padding) * -1);\n  --sidebar-width: #{$sidebarWidth};\n  --global-sidebar-width: #{$sidebarWidth};\n  --header-height: calc(44rem / 16);\n  --details-width: #{$detailsWidth};\n}\n\nhtml {\n  -webkit-text-size-adjust: 100%;\n  min-height: 100vh;\n}\n\nbody {\n  min-height: 100vh;\n\n  &.dragging * {\n    cursor: move !important;\n    cursor: grabbing !important;\n  }\n\n  :focus {\n    outline-style: solid;\n    outline-color: transparent;\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.reduce-focus-visibility {\n  :focus:not(:focus-visible) {\n    box-shadow: none;\n  }\n\n  :focus-visible {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n.skip-link {\n  position: absolute;\n  margin: 5px;\n  left: -10000px;\n  top: 0;\n  width: 1px;\n  height: 1px;\n  overflow: hidden;\n  z-index: $sidebarZIndex + 1;\n\n  &:focus {\n    left: unset;\n    @include left(0);\n    width: auto;\n    height: auto;\n    background-color: var(--gray-100) !important;\n  }\n}\n\n#global-skip-link {\n  @media only screen and (min-width: $minFullUiWidth) {\n    @include two-color-focus-ring;\n  }\n}\n\n#global-container {\n  position: relative;\n  display: flex;\n  min-height: 100vh;\n\n  @media screen and (prefers-reduced-motion: no-preference) {\n    body.ltr & {\n      transition: left 100ms cubic-bezier(0.33, 1, 0.68, 1);\n    }\n\n    body.rtl & {\n      transition: right 100ms cubic-bezier(0.33, 1, 0.68, 1);\n    }\n  }\n}\n\n#global-header {\n  display: grid;\n  grid-template-columns: 1fr min-content min-content;\n  align-items: center;\n}\n\n/* global sidebar */\n$sidebarLinkStaticColor: var(--gray-100);\n$sidebarLinkSecondaryColor: var(--gray-200);\n\n$systemInfoBgColor: darken($grey800, 5%);\n$systemInfoHoverBgColor: darken($grey800, 10%);\n\n#system-info {\n  display: grid;\n  grid-template-columns: var(--prefix-width) auto;\n  gap: 10px;\n  height: calc(45rem / 16);\n  padding: 0 var(--gutter-width);\n  position: relative;\n  flex: 0 0 calc(45rem / 16);\n  flex-direction: row;\n  align-items: center;\n  color: currentColor;\n  border-bottom: 1px solid var(--hairline-color);\n  background-clip: padding-box;\n\n  &:after {\n    display: none;\n  }\n\n  &:focus,\n  &:hover {\n    text-decoration: none;\n    background-color: var(--gray-200);\n  }\n}\n\n#site-icon {\n  --size: var(--prefix-width); // Matches .sidebar-action__prefix\n  height: var(--size);\n\n  img,\n  svg {\n    display: block;\n    width: var(--size);\n    height: var(--size);\n    border-radius: 4px;\n  }\n\n  svg {\n    @include svg-mask(var(--medium-text-color));\n  }\n}\n\n#system-name {\n  h2,\n  .h2 {\n    margin: 0;\n    width: 100%;\n    overflow: hidden;\n    max-height: 40px;\n    position: relative;\n\n    // Multi-line text overflow ellipsis\n    // (https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp)\n    display: -webkit-box;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 2;\n  }\n}\n\n@media only screen and (min-width: $minFullUiWidth) {\n  [data-sidebar='collapsed'] {\n    #system-info:hover #system-name {\n      opacity: 1;\n      transform: translateY(-50%) translateX(0);\n    }\n\n    #system-name {\n      position: absolute;\n      left: calc(100% + (var(--s) * 2));\n      top: 50%;\n      transform: translateY(-50%) translateX(-5px);\n      opacity: 0;\n      @include pane;\n      color: var(--text-color);\n      border-radius: var(--medium-border-radius);\n      padding: var(--xs) var(--s);\n      white-space: nowrap;\n      pointer-events: none;\n\n      @media screen and (prefers-reduced-motion: no-preference) {\n        transition:\n          opacity 50ms cubic-bezier(0.33, 1, 0.68, 1),\n          transform 150ms cubic-bezier(0.33, 1, 0.68, 1);\n      }\n    }\n  }\n}\n\n#global-footer {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: var(--m) var(--m) var(--xl);\n  gap: var(--m);\n\n  body.has-debug-toolbar & {\n    padding-bottom: calc(var(--xl) + 42px);\n  }\n\n  a {\n    white-space: nowrap;\n  }\n}\n\n#app-info {\n  display: flex;\n  flex-direction: row;\n  justify-content: center;\n  gap: var(--m);\n}\n\n#trial-info {\n  padding: 16px var(--xl);\n  border-radius: var(--large-border-radius);\n  background-color: var(--gray-150);\n  box-shadow:\n    inset 0 1px 0 rgba(255, 255, 255, 0.5),\n    0 0 0 1px hsl(212, 30%, 80%),\n    0 2px 12px transparentize($grey200, 0.5);\n  text-align: center;\n}\n\n#app-version {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  color: var(--gray-600);\n  text-align: center;\n  gap: var(--s);\n\n  a {\n    color: var(--gray-600);\n    text-decoration: underline;\n\n    &.go:hover:after {\n      color: var(--gray-600);\n    }\n  }\n}\n\n#edition-logo {\n  position: relative;\n  top: -1px;\n  user-select: none;\n  border: 1px solid var(--gray-600);\n  border-radius: 3px;\n  display: inline-flex;\n  box-sizing: content-box;\n  font-size: 11px;\n  padding: 6px 7px;\n  line-height: 8px;\n  font-weight: 600;\n  letter-spacing: 1.7px;\n  padding-right: 5px;\n  text-transform: uppercase;\n}\n\n#devmode {\n  margin-top: auto;\n  flex: 0 0 4px;\n  width: 100%;\n  min-height: 4px; // fixes Windows scaling bug (https://github.com/craftcms/cms/issues/3259)\n  background:\n    url(../images/dev-mode.svg) repeat-x 21px 0,\n    var(--gray-900);\n  cursor: help;\n}\n\n#page-container {\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n}\n\n#alerts {\n  position: relative; // to keep it above #global-header's shadow\n  background-color: var(--red-050);\n  border-left: 6px solid var(--error-color);\n  color: var(--error-color);\n\n  & > li {\n    padding: 10px 24px;\n    box-shadow: inset 0 -1px 0 0 var(--red-100);\n\n    .resolvable-alert-buttons {\n      margin-top: var(--m);\n    }\n\n    .btn,\n    a.go {\n      display: inline-flex;\n      align-items: center;\n      border: 1px solid transparentize($errorColor, 0.5);\n      border-radius: var(--medium-border-radius);\n      padding: 4px 5px;\n      margin: 0 2px;\n      color: var(--error-color);\n      height: calc(30rem / 16);\n\n      .flex & {\n        margin: 0;\n      }\n\n      &:hover {\n        border-color: var(--error-color);\n      }\n    }\n\n    a:not(.btn) {\n      color: var(--error-color);\n      text-decoration: underline;\n\n      &.go {\n        text-decoration: none;\n        white-space: nowrap;\n\n        &:after {\n          color: var(--error-color);\n          font-size: 15px;\n          margin-top: 1px;\n        }\n      }\n    }\n\n    .btn {\n      background-color: transparent;\n    }\n  }\n}\n\n#global-header .btn.menubtn,\nli.crumb .btn.menubtn,\n.btn.action-btn {\n  padding: 0;\n  width: var(--touch-target-size);\n  height: var(--touch-target-size);\n\n  &:not(:hover):not(:active):not([aria-expanded='true']) {\n    background-color: transparent;\n  }\n}\n\n#global-header {\n  width: 100%;\n  margin-bottom: var(--m);\n  border-bottom: 1px solid var(--hairline-color);\n\n  .flex {\n    height: var(--header-height);\n    align-items: center;\n  }\n\n  .btn {\n    --ui-control-color: var(--gray-400);\n    --ui-control-hover-color: var(--gray-800);\n    --ui-control-active-color: var(--gray-700);\n\n    &:hover {\n      color: var(--ui-control-hover-color);\n    }\n  }\n}\n\n.nav-toggle {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 44px;\n  min-width: 44px;\n  height: var(--header-height);\n  border-right: 1px solid var(--medium-hairline-color);\n  line-height: 26px;\n  color: currentColor;\n  text-align: center;\n\n  &:before {\n    @include icon;\n    content: 'menu';\n    font-size: 16px;\n    line-height: 0;\n  }\n\n  &:hover {\n    color: var(--link-color);\n  }\n}\n\n#crumbs {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  font-size: 13px;\n  margin: 0 !important;\n  max-width: 100%;\n  overflow: hidden;\n\n  &.empty {\n    display: none;\n  }\n\n  nav {\n    margin: 0;\n  }\n}\n\n#primary-nav-toggle {\n  &:focus-visible {\n    box-shadow: var(--inner-focus-ring);\n  }\n}\n\n#crumb-list {\n  display: flex;\n  flex-direction: row;\n  align-items: stretch;\n  flex-wrap: nowrap;\n  max-width: 100%;\n  height: var(--header-height);\n\n  --arrow-padding: 10;\n  --arrow-height: 22;\n  --arrow-angle: 35;\n  --arrow-width: 17.1111; // height/(45/angle)\n  --arrow-c: 27.871; // sqrt(height^2+width^2)\n\n  body.rtl & {\n    --arrow-angle: -35;\n    --arrow-width: -19.4444;\n  }\n\n  li.crumb {\n    position: relative;\n    @include padding-left(calc(var(--arrow-width) * 0.5rem / 16));\n    cursor: default;\n    color: var(--light-text-color);\n\n    &:not(.current) {\n      @include padding-right(calc(var(--arrow-width) * 1.125rem / 16));\n\n      &:before,\n      &:after {\n        display: block;\n        content: '';\n        width: 1px;\n        height: calc(var(--arrow-c) * 1rem / 16);\n        position: absolute;\n        @include right(calc(var(--arrow-width) * 0.5rem / 16));\n        background: var(--medium-hairline-color);\n        pointer-events: none;\n      }\n\n      &:before {\n        top: calc((var(--arrow-height) - var(--arrow-c)) / 2 * 1rem / 16);\n        transform: rotate(calc(var(--arrow-angle) * -1deg));\n      }\n\n      &:after {\n        bottom: calc((var(--arrow-height) - var(--arrow-c)) / 2 * 1rem / 16);\n        transform: rotate(calc(var(--arrow-angle) * 1deg));\n      }\n    }\n  }\n\n  & .menu--disclosure {\n    li {\n      display: block;\n\n      &::after {\n        content: none;\n      }\n    }\n  }\n}\n\n#crumb-menu-trigger {\n  min-width: var(--touch-target-size);\n\n  &:before {\n    width: 100%;\n  }\n}\n\n#crumb-menu {\n  .chip {\n    min-height: 44px;\n  }\n}\n\nli.crumb {\n  display: flex;\n  align-items: center;\n  flex-wrap: nowrap;\n  gap: var(--xs);\n\n  [data-icon] {\n    position: relative;\n    top: -1px;\n  }\n\n  .menubtn {\n    position: relative;\n    margin: 0 calc(var(--xs) * -1 / 2);\n  }\n\n  [data-icon='ellipsis']:before {\n    margin-top: 3px;\n    font-size: 17px;\n  }\n\n  .chip {\n    padding: 0;\n    background-color: transparent;\n    --custom-bg-color: initial !important;\n    --custom-text-color: initial !important;\n    --custom-sel-bg-color: initial !important;\n\n    .label-link {\n      max-width: 15em;\n\n      &:focus-visible {\n        box-shadow: var(--inner-focus-ring);\n      }\n\n      span:not(.context-label) {\n        display: block;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n      }\n    }\n  }\n\n  &:has(.menubtn) > a {\n    margin-right: 0 !important;\n    padding-right: var(--xs) !important;\n  }\n\n  & > a {\n    flex: 1;\n    display: flex !important;\n    align-items: center;\n    flex-wrap: nowrap;\n    gap: var(--xs);\n    white-space: nowrap;\n\n    .menu--disclosure & {\n      min-height: 34px;\n    }\n  }\n\n  a,\n  button {\n    display: inline-flex;\n    align-items: center;\n    min-height: var(--touch-target-size);\n\n    &:not(:hover) {\n      color: var(--text-color);\n\n      svg {\n        @include svg-mask(var(--text-color));\n      }\n    }\n\n    &:hover {\n      text-decoration: none;\n    }\n  }\n\n  a {\n    position: relative;\n  }\n\n  button {\n    cursor: pointer;\n  }\n}\n\nli.breadcrumb-toggle-wrapper {\n  &::after {\n    content: none;\n  }\n}\n\n#account-menu {\n  ul {\n    li {\n      a {\n        max-width: calc(100% + 28px) !important;\n      }\n    }\n  }\n}\n\n#announcements-btn {\n  @include header-btn;\n  width: calc(28rem / 16 + 10px);\n  position: relative;\n\n  &.unread:after {\n    content: '';\n    display: block;\n    position: absolute;\n    top: calc(3rem / 16);\n    @include right(5px);\n    width: calc(7rem / 16);\n    height: calc(7rem / 16);\n    border-radius: 50%;\n    background-color: var(--blue-600);\n  }\n\n  svg {\n    width: 1rem;\n    height: 1rem;\n    @include svg-mask(var(--ui-control-color));\n  }\n\n  &:hover,\n  &:active,\n  &.active {\n    svg {\n      @include svg-mask(var(--ui-control-active-color));\n    }\n  }\n}\n\n#announcements {\n  max-width: 350px;\n\n  .announcement {\n    &:not(:first-child) {\n      margin-top: 20px;\n    }\n\n    .announcement-label-container {\n      margin-top: -3px;\n      display: flex;\n      align-items: center;\n      margin-bottom: 3px;\n\n      .announcement-icon svg {\n        display: block;\n        width: 15px;\n        height: 15px;\n      }\n\n      .announcement-label {\n        margin-left: 5px;\n        font-size: 12px;\n        color: var(--light-text-color);\n      }\n    }\n\n    &.unread .announcement__heading:after {\n      content: '';\n      display: block;\n      position: absolute;\n      top: 7px;\n      @include left(-13px);\n      width: 7px;\n      height: 7px;\n      border-radius: 4px;\n      background-color: var(--blue-600);\n    }\n\n    p {\n      margin: 0;\n    }\n  }\n\n  .announcement__header {\n    display: grid;\n  }\n\n  .announcement__heading {\n    position: relative;\n    margin: 0 0 3px;\n    order: 1;\n  }\n}\n\n#user-info {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  @include padding-left(var(--s));\n  @include padding-right(calc(var(--padding) + 1px));\n  padding-top: 5px;\n  padding-bottom: 5px;\n  height: 100%;\n  background-color: transparent;\n  border-radius: 0;\n\n  &:after {\n    border-color: var(--ui-control-color);\n    transition: border-color linear 100ms;\n  }\n\n  &:hover:after {\n    border-color: var(--ui-control-hover-color);\n  }\n\n  &[aria-expanded='true']:after {\n    border-color: var(--ui-control-active-color);\n  }\n}\n\n.header-photo {\n  img,\n  svg {\n    display: block;\n    width: calc(30rem / 16);\n    height: calc(30rem / 16);\n    max-width: none;\n    border-radius: 50%;\n    box-shadow:\n      0 0 0 1px transparentize($grey900, 0.95),\n      0 0 0 transparentize($grey900, 1);\n    transition: box-shadow linear 150ms;\n\n    #user-info:hover & {\n      box-shadow:\n        0 0 0 1px transparentize($grey900, 0.95),\n        0 2px 10px -2px transparentize($grey900, 0.7);\n    }\n  }\n}\n\n/* main container */\n#main-container {\n  position: relative;\n  flex-grow: 1;\n}\n\n#notifications {\n  position: fixed;\n  bottom: 8px;\n  @include left(8px);\n  width: calc(100% - 16px);\n  z-index: 101;\n\n  body.has-debug-toolbar & {\n    bottom: 50px;\n  }\n\n  @media only screen and (min-width: $minHorizontalUiWidth) {\n    width: 350px;\n  }\n\n  .notification {\n    display: flex;\n    position: relative;\n    @include pane;\n    padding: 10px 14px;\n    border-radius: var(--large-border-radius);\n    box-shadow:\n      0 0 0 1px transparentize($grey1000, 0.85),\n      0 2px 12px transparentize($grey1000, 0.85);\n    --color: var(--notice-color);\n\n    &[data-type='success'] {\n      --color: var(--success-color);\n    }\n\n    &[data-type='error'] {\n      --color: var(--error-color);\n    }\n\n    & + .notification {\n      margin-top: 12px;\n    }\n\n    .notification-icon {\n      width: 18px;\n      margin-top: -2px;\n      @include margin-right(10px);\n      font-size: 18px;\n      color: var(--color);\n    }\n\n    .notification-main {\n      overflow: hidden;\n    }\n\n    .notification-body {\n      display: grid;\n      grid-template-columns: 20px 1fr;\n      gap: var(--s);\n      width: 100%;\n\n      .notification-message {\n        font-weight: bold;\n        word-break: normal;\n        overflow-wrap: anywhere;\n      }\n\n      .notification-details {\n        margin-top: var(--xs);\n\n        .chip {\n          border: 1px solid $hairlineColor;\n        }\n      }\n    }\n\n    .notification-close-btn {\n      position: relative;\n      top: -2px;\n      @include margin-left(10px);\n    }\n  }\n}\n\n#header-container {\n  margin-bottom: var(--m);\n}\n\n@media only screen and (min-width: $minFullUiWidth) {\n  #primary-nav-toggle {\n    display: none;\n  }\n\n  #crumbs:not(.empty) #primary-nav-toggle + nav ul li:first-child,\n  #crumbs.empty + .context-menu-container {\n    @include margin-left(var(--padding));\n    @include padding-left(0);\n  }\n}\n\n#global-header,\n#header {\n  .flex {\n    max-width: 100%;\n\n    &.flex-nowrap {\n      min-width: 0;\n    }\n  }\n}\n\n#header {\n  display: flex;\n  align-items: flex-start;\n  align-content: stretch;\n  flex-wrap: nowrap;\n  justify-content: space-between;\n  gap: var(--s);\n  padding: 5px var(--padding);\n  position: relative;\n  z-index: 2;\n  box-sizing: border-box;\n  background-color: transparentize($grey300, 1);\n  box-shadow: 0 1px 0 transparentize($grey800, 1);\n  transition:\n    background-color linear 100ms,\n    box-shadow linear 100ms;\n\n  body.fixed-header & {\n    position: fixed;\n    z-index: 12;\n    top: 0;\n    background-color: var(--gray-100);\n    box-shadow: 0 1px 0 transparentize($grey700, 0.9);\n  }\n\n  @supports (backdrop-filter: blur(10px)) {\n    & {\n      transition:\n        background-color linear 100ms,\n        box-shadow linear 100ms,\n        backdrop-filter linear 100ms;\n\n      body.fixed-header & {\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n      }\n    }\n  }\n\n  h1 {\n    line-height: 34px;\n    margin-top: 0;\n    margin-bottom: 0;\n    min-width: 0;\n  }\n\n  .buttons,\n  .btngroup {\n    margin-top: 0;\n  }\n}\n\n#page-title {\n  &.has-toolbar {\n    @media only screen and (min-width: $minHorizontalUiWidth) {\n      min-width: calc(#{$sidebarWidth} - var(--xl) - var(--s)) !important;\n    }\n  }\n}\n\n#toolbar {\n  flex: 1;\n  align-items: flex-start;\n  justify-content: space-between;\n\n  .icon:before,\n  .texticon:before,\n  .menubtn:after,\n  [data-icon]:before,\n  [data-icon-after]:after {\n    color: currentColor;\n    opacity: 0.8;\n  }\n\n  .text {\n    border-radius: var(--large-border-radius);\n\n    &::-webkit-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:-ms-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::-ms-input-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:-moz-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::-moz-placeholder {\n      color: var(--light-text-color);\n    }\n\n    &::placeholder {\n      color: var(--light-text-color);\n    }\n\n    &:not(:focus) {\n      background-clip: border-box;\n    }\n  }\n}\n\n#action-buttons {\n  @media only screen and (max-width: 400px) {\n    .btngroup .btn:first-child {\n      flex-basis: 100%;\n    }\n  }\n\n  @media only screen and (max-width: $minHorizontalUiWidth - calc(1rem/16)) {\n    flex-direction: row-reverse;\n    justify-content: start;\n    margin-top: 10px;\n  }\n}\n\n#main-content {\n  display: flex;\n  flex-direction: row;\n  align-items: flex-start;\n  padding: 0 var(--padding) 48px;\n  box-sizing: border-box;\n\n  // for the Dashboard and any other full-page grids:\n  & > .grid:only-child {\n    flex: 1;\n  }\n}\n\n#sidebar-toggle-container {\n  display: none;\n}\n\n#sidebar-container {\n  flex: 0 0 $sidebarWidth;\n  width: $sidebarWidth;\n  box-sizing: border-box;\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    @include margin-left(calc(var(--xl) * -1));\n  }\n}\n\n#sidebar {\n  position: relative;\n  box-sizing: border-box;\n  padding: 0 40px var(--m);\n  width: $sidebarWidth;\n  background-color: transparent;\n\n  &.fixed {\n    position: fixed;\n  }\n\n  nav {\n    margin-left: -31px;\n    margin-right: -31px;\n\n    li {\n      a {\n        position: relative;\n\n        &:focus {\n          z-index: 1;\n        }\n\n        &:not(.sel) {\n          &:hover {\n            background-color: var(--gray-200);\n          }\n        }\n      }\n    }\n  }\n  .skip-link {\n    margin: 0 var(--s);\n  }\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    padding: 0 31px var(--m);\n  }\n}\n\n#content-container {\n  flex: 1 1 auto;\n  /*\n  Admittedly I'm not totally sure why this is necessary, but it seems to be.\n  We have to give #content-container some kind of \"hard\" width for it to properly\n  clip the content when table cells are long.\n   */\n  width: 400px;\n}\n\n.content-pane {\n  @include pane;\n  border-radius: var(--large-border-radius);\n  position: relative;\n  background-clip: padding-box;\n  padding: var(--xl) var(--padding);\n  word-wrap: break-word;\n\n  & > hr {\n    margin-left: calc(var(--xl) * -1);\n    margin-right: calc(var(--xl) * -1);\n  }\n}\n\n#footer,\n.footer {\n  padding: 6px var(--pane-padding, var(--xl));\n  min-height: 44px;\n  line-height: calc(32rem / 16);\n\n  .buttons {\n    height: 32px;\n    display: flex;\n    align-items: center;\n  }\n\n  .btn {\n    padding-top: 4px;\n    padding-bottom: 4px;\n    height: var(--ui-control-height--small);\n  }\n}\n\n#footer {\n  position: sticky;\n  bottom: 0;\n  z-index: 1;\n  margin: calc(var(--s) + 1px) calc(var(--padding) * -1 + 2px)\n    calc(var(--xl) * -1 + 2px);\n  background-color: var(--gray-050);\n  border-radius: var(--small-border-radius);\n  box-sizing: border-box;\n  border-top: 2px solid var(--white);\n\n  &:empty {\n    display: none;\n  }\n\n  &.stuck {\n    border-radius: 0;\n\n    @supports (backdrop-filter: blur(10px)) {\n      & {\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n      }\n    }\n  }\n\n  .has-debug-toolbar & {\n    transition: padding linear 100ms;\n\n    &.stuck {\n      padding-bottom: 52px;\n    }\n  }\n\n  & > *,\n  .flex > * {\n    margin-bottom: 0;\n  }\n}\n\n#details-container[data-state='collapsed'] {\n  display: none;\n}\n\n#details-container {\n  display: block;\n  flex: 0 1 auto;\n  width: calc(var(--details-width) + var(--m));\n  @include padding-left(var(--m));\n}\n\n#details {\n  display: none;\n}\n\n#details {\n  display: block;\n  width: $detailsWidth;\n  z-index: 1;\n\n  &.fixed {\n    position: fixed;\n  }\n\n  .details {\n    padding-bottom: calc(var(--xl) + 11.5em);\n\n    .meta {\n      border-radius: var(--large-border-radius);\n\n      &:not(.read-only):not(.warning) {\n        @include pane;\n      }\n\n      &.read-only {\n        color: var(--medium-text-color);\n        background-color: transparent !important;\n      }\n\n      & > .field,\n      & > .data {\n        &:first-child {\n          &,\n          & > .status-badge {\n            border-top-left-radius: var(--large-border-radius);\n          }\n\n          border-top-right-radius: var(--large-border-radius);\n        }\n\n        &:last-child {\n          &,\n          & > .status-badge {\n            border-bottom-left-radius: var(--large-border-radius);\n          }\n\n          border-bottom-right-radius: var(--large-border-radius);\n        }\n      }\n    }\n\n    & > .field {\n      & > .input > .text.fullwidth {\n        @include pane;\n      }\n    }\n\n    .notes {\n      border-radius: var(--large-border-radius);\n      padding-top: var(--m);\n      padding-bottom: var(--m);\n    }\n  }\n}\n\n// Hide the sidebar at < 1200\n@media only screen and (max-width: $minFullUiWidth - calc(1rem/16)) {\n  #global-container {\n    @include left(-$sidebarWidth);\n    width: calc(100vw + #{$sidebarWidth});\n\n    body.ltr.showing-nav & {\n      left: 0;\n    }\n\n    body.rtl.showing-nav & {\n      right: 0;\n    }\n  }\n\n  #crumbs {\n    display: flex !important;\n  }\n\n  #header {\n    width: 100vw;\n  }\n\n  #main-content {\n    width: 100vw;\n    &.has-sidebar {\n      padding-left: 0;\n    }\n  }\n}\n\n// Rearrange #main-content to flow vertically at < 999\n@media only screen and (max-width: $minHorizontalUiWidth - calc(1rem/16)) {\n  #header {\n    display: flex;\n    flex-wrap: wrap;\n\n    .flex:not(#toolbar) {\n      margin-top: 10px;\n    }\n  }\n\n  #toolbar {\n    flex-wrap: wrap !important;\n    order: 3;\n    width: 100%;\n    flex: auto;\n\n    & > * {\n      margin-top: 10px !important;\n    }\n  }\n\n  #action-buttons {\n    order: 2;\n  }\n\n  body.fixed-header #header .flex:first-child {\n    margin-top: 0;\n  }\n\n  #main-content {\n    display: block;\n    &.has-sidebar {\n      padding: 0 var(--padding) 48px;\n    }\n  }\n\n  #sidebar {\n    nav {\n      margin-left: -40px;\n      margin-right: -40px;\n    }\n    .skip-link {\n      margin: 0;\n    }\n  }\n\n  #source-actions {\n    margin-top: var(--s);\n    margin-left: -9px;\n  }\n\n  #sidebar-toggle-container {\n    display: block;\n    margin-bottom: var(--s);\n  }\n\n  #sidebar-toggle {\n    &:after {\n      top: 0;\n      transform: rotate(45deg);\n\n      body.rtl & {\n        transform: rotate(135deg);\n      }\n    }\n  }\n\n  #content-container {\n    min-height: 0 !important;\n  }\n\n  #sidebar-container,\n  #details-container {\n    width: auto !important;\n    padding-left: 0 !important;\n    display: block;\n  }\n\n  #details-toggle {\n    display: none;\n  }\n\n  #sidebar,\n  #details {\n    position: relative !important;\n    overflow-y: visible !important;\n    max-height: none !important;\n    width: auto;\n  }\n\n  #sidebar {\n    margin-bottom: var(--m);\n\n    body.showing-sidebar & {\n      @include pane;\n      padding-block: 0.5rem;\n      border-radius: var(--large-border-radius);\n    }\n\n    body:not(.showing-sidebar) & {\n      display: none;\n    }\n  }\n\n  #details-container {\n    @include margin-right(0);\n  }\n\n  #content-container {\n    width: auto !important;\n    max-width: none !important;\n  }\n\n  #details {\n    padding: 0 !important;\n    margin-top: var(--m);\n\n    .details {\n      margin-bottom: auto;\n    }\n  }\n}\n\n// Tighten up the padding at < 768\n@media only screen and (max-width: 767px) {\n  :root {\n    --padding: var(--s);\n    --neg-padding: calc(var(--s) * -1);\n  }\n\n  #tabs ul li {\n    a {\n      padding-left: var(--m);\n      padding-right: var(--m);\n    }\n\n    & + li {\n      @include margin-left(-7px);\n    }\n  }\n\n  .card-grid {\n    display: flex !important;\n    flex-direction: column;\n  }\n}\n\n@media print {\n}\n\n#settingsmenu ul li a {\n  @include padding-left(46px);\n\n  &:before {\n    @include margin(1px, 0, 0, -22px);\n    font-size: 15px;\n  }\n\n  img {\n    width: 16px;\n    height: 16px;\n    position: absolute;\n    margin-left: -23px;\n    margin-top: 1px;\n  }\n}\n\n/* grids */\n.grid {\n  position: relative;\n  min-height: 1px; // Required for Grid.js to run\n\n  &:after {\n    @include clearafter;\n  }\n\n  & > .item {\n    display: none;\n    box-sizing: border-box;\n  }\n}\n\n/* Sidebar */\n.sidebar {\n  width: $sidebarWidth;\n  box-sizing: border-box;\n  font-size: 13px;\n\n  &:not(.drag-helper) {\n    padding: var(--m) 0;\n    background-color: var(--gray-050);\n  }\n\n  .heading {\n    position: relative;\n    margin: 0 var(--xl);\n\n    &:not(:first-child) {\n      margin-top: var(--m);\n    }\n\n    & > span {\n      display: inline-block;\n      position: relative;\n      z-index: 1;\n      padding: 0 5px;\n      margin: 0 -5px;\n      text-transform: uppercase;\n      color: var(--medium-text-color);\n      font-size: 11px;\n      font-weight: bold;\n    }\n\n    & > ul {\n      margin: 2px calc(var(--xl) * -1);\n    }\n  }\n\n  @mixin nav-level($level) {\n    & > a {\n      @include padding-left(24px + 14 * $level);\n    }\n\n    & > .toggle {\n      @include left(calc(var(--m) * #{$level}));\n    }\n  }\n\n  nav {\n    padding: 0 var(--s);\n\n    & > ul {\n      & > li:not(.heading),\n      & > li.heading > ul > li {\n        @include nav-level(0);\n\n        & > ul.nested > li {\n          @include nav-level(1);\n\n          & > ul.nested > li {\n            @include nav-level(2);\n\n            & > ul.nested > li {\n              @include nav-level(3);\n\n              & > ul.nested > li {\n                @include nav-level(4);\n              }\n            }\n          }\n        }\n      }\n    }\n\n    li {\n      position: relative;\n\n      &:not(.has-subnav) > a {\n        &:not(.sel):hover {\n          text-decoration: none;\n        }\n\n        &.sel,\n        &.active-drop-target {\n          cursor: default;\n          background-color: var(--gray-500);\n\n          &,\n          & + .toggle {\n            color: var(--white);\n          }\n        }\n\n        &.sel {\n          @include light-on-dark-text;\n        }\n      }\n\n      a {\n        position: relative;\n        margin-bottom: 1px;\n        display: flex;\n        flex-direction: row;\n        align-items: center;\n        padding: 7px var(--xl);\n        min-height: var(--xl);\n        box-sizing: border-box;\n        color: var(--text-color);\n        cursor: pointer;\n        user-select: none;\n        border-radius: var(--large-border-radius);\n        word-break: break-word;\n\n        .status {\n          flex-shrink: 1;\n        }\n\n        .icon {\n          position: relative;\n          top: 1px;\n          @include margin-right(10px);\n          flex-shrink: 1;\n          width: toRem(18);\n          height: toRem(18);\n          word-break: normal;\n          transition:\n            margin-left linear 150ms,\n            margin-right linear 150ms;\n          opacity: 0.85;\n\n          &.icon-mask {\n            svg {\n              @include svg-mask(currentColor);\n            }\n\n            span[data-icon] {\n              color: currentColor;\n            }\n          }\n\n          svg {\n            width: 1rem;\n            height: 1rem;\n          }\n\n          span[data-icon] {\n            font-size: 16px;\n\n            &::before {\n              display: block;\n            }\n          }\n        }\n\n        .label {\n          flex: 1;\n        }\n\n        .badge {\n          @include margin(0, -4px, 0, 10px);\n          flex-shrink: 1;\n          padding: 0 6px;\n          font-size: calc(11rem / 16);\n          line-height: 16px;\n          border-radius: var(--s);\n          background-color: var(--medium-text-color);\n          color: var(--white);\n        }\n      }\n\n      .toggle {\n        position: absolute;\n        z-index: 1;\n        height: 34px;\n        top: 0;\n        width: var(--xl);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n      }\n\n      ul {\n        display: none;\n      }\n\n      &.heading,\n      &.expanded {\n        & > ul {\n          display: block;\n        }\n      }\n    }\n  }\n}\n\n.error-summary {\n  @include pane;\n  margin-bottom: var(--l);\n  padding: var(--l) var(--xl);\n  border-radius: var(--large-border-radius);\n  background-color: var(--gray-050);\n\n  .notification-icon {\n    color: var(--error-color);\n    margin: -2px 6px 0 0;\n    float: left;\n  }\n\n  h2 {\n    margin-top: 0;\n  }\n\n  & > ul.errors li,\n  & > ul.errors li a {\n    color: var(--text-color);\n\n    em {\n      font-weight: 600;\n    }\n\n    &:hover {\n      color: var(--link-color);\n    }\n  }\n}\n\n.slideout {\n  .error-summary {\n    border: 1px solid var(--error-color);\n    box-shadow: none;\n    background-color: rgba(var(--error-color-rgb), 0.03);\n    padding: var(--m);\n  }\n\n  // Slideouts with tabs need slightly different margins\n  .flex-fields .error-summary {\n    margin: 0 var(--row-gap) var(--row-gap);\n  }\n}\n\n.content.has-sidebar:not(.hiding-sidebar) {\n  @include margin-left($sidebarWidth);\n}\n\n#content-notice {\n  margin: 0 calc(var(--xl) * -1);\n  padding: 0 var(--xl);\n\n  &:not(:last-child) {\n    padding-bottom: 5px;\n    border-bottom: 1px solid var(--hairline-color);\n    margin-bottom: 5px;\n  }\n}\n\n/* flexbox field layouts */\n#content :not(.meta) > .flex-fields,\n#content > .flex-fields,\n.so-content .flex-fields,\n.draghelper .flex-fields {\n  --row-gap: var(--xl);\n  display: flex;\n  flex-wrap: wrap;\n  align-content: flex-start;\n  margin: 0 calc(var(--row-gap) * -1) calc(var(--row-gap) * -1);\n  width: calc(100% + var(--row-gap) * 2);\n\n  & > :not(.error-summary) {\n    margin: 0 0 var(--row-gap) !important;\n    padding: 0 var(--row-gap);\n    box-sizing: border-box;\n  }\n\n  & > h2 {\n    flex: 4 0 100%;\n\n    &:not(:nth-child(-n + 1 of :not(.hidden))) {\n      padding-top: var(--xl);\n      border-top: 1px solid var(--hairline-color);\n    }\n  }\n\n  & > hr,\n  & > .line-break {\n    flex: 4 0 100%;\n  }\n\n  & > .line-break:not(:first-child) {\n    margin-bottom: 0 !important;\n  }\n\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      position: relative;\n      width: 100%;\n\n      &:before {\n        position: absolute;\n        top: 0;\n        @include left(-1px);\n        width: 1px;\n        height: 100%;\n        content: '';\n        // same BG color as the hairline around the content pane’s 1px shadow\n        background-color: transparentize($grey200, 0.5);\n      }\n    }\n  }\n}\n\n#content :not(.meta) > .flex-fields,\n#content > .flex-fields,\n.draghelper.drag-in-content .flex-fields {\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      // 4 cols for >= 1536px\n      @media only screen and (min-width: $minXlUiWidth) {\n        &.width-25 {\n          width: 25%;\n        }\n        &.width-50 {\n          width: 50%;\n        }\n        &.width-75 {\n          width: 75%;\n        }\n      }\n\n      // 2 cols for 600 - 1535px\n      @media only screen and (min-width: $minDesktopWidth) and (max-width: $minXlUiWidth - calc(1rem/16)) {\n        &.width-25,\n        &.width-50 {\n          width: 50%;\n        }\n      }\n    }\n  }\n}\n\n.so-content .flex-fields,\n.draghelper.drag-in-slideout .flex-fields {\n  & > :not(h2):not(hr):not(.line-break) {\n    &,\n    &:last-child {\n      // 2 cols for >= 1200\n      @media only screen and (min-width: $minDesktopWidth * 2) {\n        &.width-25,\n        &.width-50 {\n          width: 50%;\n        }\n      }\n    }\n  }\n}\n",".global-sidebar {\n  --is-always-visible: true;\n  --prefix-width: calc(30rem / 16);\n  --prefix-ratio: 1;\n  --gutter-width: calc(10rem / 16); // Left and right padding\n\n  position: sticky;\n  top: 0;\n  z-index: $sidebarZIndex;\n  display: grid;\n  grid-template-columns: var(--global-sidebar-width);\n  grid-template-rows: var(--header-height) minmax(0, 1fr) auto;\n  grid-auto-flow: row;\n  height: 100vh;\n  padding: 0;\n  -webkit-overflow-scrolling: touch;\n  background-color: var(--gray-150);\n  border-inline-end: 1px solid var(--hairline-color);\n  width: var(--global-sidebar-width);\n\n  a {\n    text-decoration: none;\n  }\n\n  & > a,\n  *:not(.has-subnav) > a {\n    &:not([href]) {\n      cursor: default;\n      background-color: transparent;\n    }\n  }\n\n  @media only screen and (max-width: $minFullUiWidth - calc(1rem/16)) {\n    --is-always-visible: false;\n  }\n}\n\n.global-sidebar__nav {\n  padding: var(--s) 0;\n  overflow-x: hidden;\n  overflow-y: auto;\n  -webkit-overflow-scrolling: touch;\n  scrollbar-width: none;\n  overscroll-behavior: contain;\n}\n\n.global-sidebar__footer {\n  margin-block-start: auto;\n  border-block-start: 1px solid var(--hairline-color);\n}\n\n.global-nav > ul {\n  display: flex;\n  flex-direction: column;\n  gap: var(--s);\n}\n\n.global-nav > ul > li {\n  position: relative;\n}\n\n.global-nav > ul > li.sel {\n}\n\n.nav-icon {\n  display: inline-flex;\n  flex-direction: column;\n  justify-content: center;\n  align-items: center;\n  width: 1rem;\n  aspect-ratio: 1;\n  line-height: 0;\n\n  --thumb-size: 1rem;\n\n  > svg {\n    @include svg-mask(currentColor);\n    width: 100%;\n    height: 100%;\n  }\n}\n\n.nav-item {\n  --gutter-width: calc(10rem / 16);\n  display: grid;\n  grid-template-columns: var(--gutter-width) minmax(0, 1fr) var(--prefix-width) var(\n      --gutter-width\n    );\n  grid-template-areas: '. action trigger .' 'subnav subnav subnav subnav';\n  align-items: center;\n  width: 100%;\n\n  > .sidebar-action {\n    grid-area: action;\n  }\n}\n\n.nav-item__trigger {\n  --icon-size: 10px;\n  --trigger-size: var(--touch-target-size);\n  grid-area: trigger;\n  display: flex;\n  z-index: 1;\n\n  .menubtn {\n    padding: 0;\n    flex-direction: column;\n    justify-content: center;\n    align-items: center;\n    width: var(--trigger-size);\n    height: var(--trigger-size);\n    border: transparent;\n\n    &:hover {\n      @include light-on-dark-text;\n      color: var(--white);\n      background-color: var(--medium-text-color);\n    }\n\n    &[aria-expanded='true']:not(:hover) {\n      background-color: transparent;\n    }\n\n    &[aria-expanded='true']:after {\n      @include angle(up);\n    }\n\n    &:after {\n      margin-inline-start: 0 !important;\n    }\n  }\n}\n\n.nav-item__subnav {\n  --prefix-ratio: 4/3;\n  display: none;\n  grid-area: subnav;\n\n  &[data-state='expanded'] {\n    display: block;\n  }\n}\n\n.badge {\n  display: inline-flex;\n  justify-content: center;\n  text-align: center;\n  font-size: 11px;\n  line-height: 1rem;\n  min-width: 1.1rem;\n  height: 1rem;\n  padding: 0 var(--xs);\n  border-radius: var(--s);\n  background-color: var(--medium-text-color);\n  color: var(--white);\n}\n\n.sidebar-actions {\n  padding: 10px var(--gutter-width); // match padding of #system-info\n}\n\n.sidebar-action {\n  --thumb-size: 0.75rem;\n  display: grid;\n  grid-template-columns: var(--prefix-width) minmax(0, 1fr) auto;\n  width: 100%;\n  align-items: center;\n  position: relative;\n  text-align: left;\n  border-radius: var(--medium-border-radius);\n  color: currentColor;\n  cursor: pointer;\n  min-height: 30px;\n  padding-inline: var(--xs);\n  font-weight: 500;\n\n  &:before {\n    content: '';\n    position: absolute;\n    inset-inline-start: calc((10rem / 16) * -1); // match #system-name\n    inset-block-start: 50%;\n    height: 80%;\n    transform: translateY(-50%);\n    width: var(--xs);\n  }\n\n  &:focus-visible,\n  &:hover {\n    @include light-on-dark-text;\n    color: var(--white);\n    background-color: var(--medium-text-color);\n  }\n\n  &.sel {\n    &:before {\n      --indicator-size: 6px;\n      color: var(--white);\n      background-color: var(--medium-text-color);\n    }\n  }\n}\n\n.sidebar-action--sub {\n  --indicator-size: 4px;\n  font-size: 0.9em;\n  min-height: 26px;\n\n  &:focus-visible,\n  &:hover {\n    &:before {\n      background-color: var(--white);\n    }\n  }\n\n  &:before {\n    @include left(calc((30px / 2) - (var(--indicator-size) / 2)));\n    width: var(--indicator-size);\n    height: var(--indicator-size);\n    border-radius: 100%;\n    top: 50%;\n    background-color: currentColor;\n  }\n}\n\n.sidebar-action--job {\n  grid-column: 2/4 !important;\n  align-items: flex-start;\n\n  .sidebar-action__label {\n    flex-wrap: wrap;\n    padding-block: var(--xs);\n    gap: var(--xs);\n  }\n\n  .label {\n    white-space: normal;\n  }\n\n  .progress-label {\n    width: 100%;\n    display: block;\n    color: var(--gray-300);\n    font-size: 11px;\n    line-height: 1.5;\n  }\n\n  .nav-icon {\n    display: block;\n    position: relative;\n    width: 16px;\n    height: 16px;\n\n    & > canvas {\n      display: block;\n      position: absolute;\n      width: 16px;\n      height: 16px;\n    }\n  }\n\n  #job-icon-hover {\n    opacity: 0;\n  }\n\n  &:hover {\n    #job-icon-hover {\n      opacity: 1;\n    }\n\n    #job-icon-static {\n      opacity: 0;\n    }\n  }\n}\n\n.sidebar-action__prefix {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--prefix-width);\n  aspect-ratio: var(--prefix-ratio);\n  line-height: 0;\n  flex-shrink: 0;\n}\n\n.sidebar-action__label {\n  display: flex;\n  gap: var(--s);\n  align-items: center;\n  padding: 0 var(--xs);\n  text-overflow: ellipsis;\n  overflow: hidden;\n  white-space: nowrap;\n  margin-inline-start: 7px; // magic number to align with system name\n\n  [data-icon='external'] {\n    display: inline-flex;\n  }\n}\n\n.sidebar-action__badge {\n  flex: 0 1 auto;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  padding: 0 var(--s);\n  margin-inline-start: auto;\n}\n\n/**\nStates\n */\n@media only screen and (min-width: $minFullUiWidth) {\n  [data-sidebar='collapsed'] {\n    .global-sidebar {\n      --global-sidebar-width: calc(50rem / 16);\n    }\n\n    .nav-item {\n      grid-template-areas: '. action .' '. trigger .' 'subnav subnav subnav';\n      grid-template-columns: var(--gutter-width) var(--prefix-width) var(\n          --gutter-width\n        );\n    }\n\n    .nav-item__indicator {\n      right: -1px;\n    }\n\n    .sidebar-action {\n      width: var(--prefix-width);\n      padding-inline: 0;\n      min-height: var(--prefix-width);\n\n      &:focus-visible,\n      &:hover {\n        .sidebar-action__label {\n          opacity: 1;\n          transform: translateY(-50%) translateX(0);\n        }\n      }\n    }\n\n    .nav-item__trigger {\n      .menubtn {\n        width: 100%;\n        height: var(--touch-target-size);\n        padding-block: 2px var(--xs);\n      }\n    }\n\n    .sidebar-action__label {\n      display: none;\n      z-index: 10;\n      opacity: 0;\n    }\n\n    .sidebar-action__badge {\n      z-index: 100;\n      position: absolute;\n      right: calc(var(--xs) * -1);\n      bottom: var(--xs);\n      transform: translateY(25%);\n      padding: 0;\n    }\n\n    .sidebar-action--sub {\n      min-height: 26px;\n\n      &:before {\n        inset-inline-start: 50%;\n        inset-block-start: 50%;\n        transform: translateX(-50%) translateY(-50%);\n      }\n    }\n\n    .global-nav > ul > li + li {\n      --separator-width: calc(28rem / 16);\n\n      &:before {\n        position: absolute;\n        inset-block-start: calc(var(--s) / -2);\n        inset-inline-start: calc(\n          (var(--global-sidebar-width) - var(--separator-width)) / 2\n        );\n        content: '';\n        width: var(--separator-width);\n        height: 1px;\n        margin: 0 auto;\n        background-color: var(--hairline-color);\n      }\n    }\n  }\n\n  [data-sidebar='expanded'] {\n    #sidebar-toggle-icon {\n      transform: rotate(180deg);\n    }\n  }\n}\n\n#sidebar-trigger {\n  display: none;\n\n  @media only screen and (min-width: $minFullUiWidth) {\n    display: flex;\n  }\n}\n","craft-tooltip {\n  position: fixed;\n  white-space: normal;\n  opacity: 0;\n  transform: translateY(-4px);\n  width: max-content;\n  max-width: 240px;\n  transition:\n    opacity 100ms ease-in-out,\n    transform 150ms ease-in-out;\n  top: 0;\n  left: 0;\n  z-index: 99;\n}\n\ncraft-tooltip > .inner {\n  position: relative;\n  display: inline-block;\n  background-color: var(--white);\n  color: var(--gray-700);\n  border: 1px solid var(--dark-hairline-color);\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n  border-radius: var(--medium-border-radius);\n  padding: var(--xs) var(--s);\n  pointer-events: none;\n  user-select: none;\n  font-weight: 400;\n}\n\ncraft-tooltip .arrow {\n  position: absolute;\n  background: var(--white);\n  width: 8px;\n  height: 8px;\n  transform: rotate(45deg);\n  border-style: solid;\n  border-width: 1px;\n  border-color: transparent;\n\n  &[data-placement^='bottom'] {\n    border-inline-color: var(--dark-hairline-color) transparent;\n    border-block-color: var(--dark-hairline-color) transparent;\n  }\n\n  &[data-placement^='top'] {\n    border-inline-color: transparent var(--dark-hairline-color);\n    border-block-color: transparent var(--dark-hairline-color);\n  }\n\n  &[data-placement^='right'] {\n    border-inline-color: var(--dark-hairline-color) transparent;\n    border-block-color: transparent var(--dark-hairline-color);\n  }\n  &[data-placement^='left'] {\n    border-inline-color: transparent var(--dark-hairline-color);\n    border-block-color: var(--dark-hairline-color) transparent;\n  }\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n.lp-editor-container,\n.lp-preview-container {\n  position: fixed;\n  top: 0;\n  height: 100%;\n  background-color: var(--white);\n  z-index: 100;\n\n  & > header {\n    padding: 5px 24px;\n    background-color: var(--gray-100);\n    box-shadow: 0 1px 0 transparentize($grey700, 0.8);\n    box-sizing: border-box;\n    position: relative;\n    z-index: 1;\n\n    @supports (backdrop-filter: blur(10px)) {\n      & {\n        position: absolute;\n        z-index: 2;\n        top: 0;\n        left: 0;\n        width: 100%;\n        background-color: transparentize($grey100, 0.25);\n        backdrop-filter: blur(10px);\n\n        & + .lp-editor {\n          padding-top: #{44 + 24}px;\n        }\n      }\n    }\n\n    .btn,\n    .spinner,\n    .checkmark-icon {\n      margin-bottom: 0;\n    }\n  }\n}\n\n.lp-editor-container {\n  display: flex;\n  flex-direction: column;\n\n  .lp-editor {\n    flex: 1;\n    padding: 24px;\n    overflow: auto;\n    box-sizing: border-box;\n\n    & > .field {\n      &:last-child {\n        margin-bottom: 24px !important;\n      }\n\n      & > .status-badge {\n        @include left(-24px);\n      }\n    }\n\n    .matrixblock > .fields > .flex-fields > .field > .status-badge {\n      @include left(calc(var(--m) * -1));\n    }\n  }\n\n  .lp-draghandle {\n    position: absolute;\n    z-index: 101;\n    top: 0;\n    @include right(-2px);\n    width: 4px;\n    height: 100%;\n    cursor: col-resize;\n  }\n}\n\n.lp-preview-container {\n  display: flex;\n  flex-direction: column;\n  box-shadow: -1px 0 0 transparentize($grey700, 0.8);\n\n  &.dragging:after {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    content: '';\n    font-size: 0;\n  }\n\n  .lp-preview-header {\n    display: flex;\n\n    @supports (not (backdrop-filter: blur(10px))) {\n      background-color: transparentize($grey100, 0.25);\n    }\n\n    .buttons {\n      margin: 0;\n\n      .btn + .btn {\n        @include margin-left(7px);\n      }\n    }\n\n    & + .lp-iframe-container {\n      padding-top: 0;\n\n      @supports (backdrop-filter: blur(10px)) {\n        padding-top: 44px;\n      }\n    }\n\n    .lp-device-type {\n      .btn {\n        &::before {\n          width: 27px;\n          height: 22px;\n          display: block;\n          content: '';\n          background-size: contain;\n          background-repeat: no-repeat;\n          background-position: center;\n          transition-duration: 0.3s;\n        }\n\n        // SVGs\n        &.lp-device-type-btn--phone::before {\n          background-image: url(../images/preview/icon-phone.svg);\n        }\n        &.lp-device-type-btn--tablet::before {\n          background-image: url(../images/preview/icon-tablet.svg);\n        }\n        &.lp-device-type-btn--desktop::before {\n          background-image: url(../images/preview/icon-desktop.svg);\n        }\n      }\n    }\n  }\n\n  .lp-device-type__label {\n    &::before {\n      width: 27px;\n      height: 22px;\n      display: block;\n      content: '';\n      background-size: contain;\n      background-repeat: no-repeat;\n      background-position: center;\n      transition-duration: 0.3s;\n    }\n\n    // SVGs\n    &.lp-device-type__label--phone::before {\n      background-image: url(../images/preview/icon-phone.svg);\n    }\n    &.lp-device-type__label--tablet::before {\n      background-image: url(../images/preview/icon-tablet.svg);\n    }\n    &.lp-device-type__label--desktop::before {\n      background-image: url(../images/preview/icon-desktop.svg);\n    }\n  }\n\n  .lp-preview-container__bumper-link {\n    top: unset;\n    bottom: 0;\n  }\n\n  .lp-device-mask {\n    display: none;\n  }\n\n  .lp-iframe-container {\n    flex: 1;\n    overflow: auto;\n\n    .lp-preview {\n      display: block;\n      width: 100%;\n      min-height: 100%;\n    }\n\n    &:not(.lp-iframe-container--has-device-preview) {\n      // Preview container\n      .lp-device-preview-container {\n        width: auto !important;\n        height: 100% !important;\n        transform: none !important;\n        margin: 0 !important;\n      }\n    }\n\n    &--has-device-preview {\n      flex: none;\n      padding-top: 0 !important;\n      position: relative;\n      top: 0;\n      height: calc(100% - 44px);\n      width: 100%;\n      background-color: var(--gray-100);\n\n      @supports (backdrop-filter: blur(10px)) {\n        top: 44px;\n      }\n\n      // Preview container\n      .lp-device-preview-container {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        z-index: 2;\n        overflow: auto;\n        opacity: 1;\n        transition: opacity 0.3s;\n      }\n\n      // Device mask\n      .lp-device-mask {\n        display: block;\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        z-index: 1;\n        background-image: url(../images/preview/chrome-phone-top.svg),\n          url(../images/preview/chrome-phone-bottom.svg);\n        background-position:\n          top center,\n          bottom center;\n        background-repeat: no-repeat;\n        background-size: contain;\n        background-color: #fff;\n        box-shadow: 0 0 58px rgba(6, 67, 117, 0.3);\n        border-radius: 18px;\n      }\n\n      // Tablet\n      &.lp-iframe-container--tablet {\n        .lp-device-mask {\n          background-image: url(../images/preview/chrome-tablet-top.svg),\n            url(../images/preview/chrome-tablet-bottom.svg);\n        }\n      }\n    }\n\n    // Animate rotations\n    @media screen and (prefers-reduced-motion: no-preference) {\n      &--rotating {\n        .lp-device-mask {\n          transition-duration: 0.3s;\n          transition-property: transform;\n        }\n        .lp-device-preview-container {\n          opacity: 0;\n          transition: opacity 0s;\n        }\n      }\n    }\n  }\n}\n","@charset \"UTF-8\";\n@import '../../../../../../node_modules/@craftcms/sass/mixins';\n\n.login-container {\n  .login-form-container {\n    background-color: var(--gray-050);\n  }\n\n  .login-form {\n    input[readonly] {\n      cursor: not-allowed;\n    }\n\n    & > .field,\n    & > .btn {\n      margin-top: var(--l);\n\n      &:not(:last-child):not(.last) {\n        margin-bottom: var(--l);\n      }\n    }\n\n    .btn {\n      display: flex;\n    }\n  }\n\n  .alternative-login-methods {\n    margin-top: var(--m);\n\n    .btn {\n      width: 100%;\n    }\n  }\n\n  .login-forgot-password,\n  .login-alt-container button {\n    font-size: 11px;\n    color: var(--medium-text-color);\n    cursor: pointer !important;\n  }\n\n  .login-alt-container {\n    margin: calc(var(--s) - var(--xl)) 0;\n\n    button {\n      display: inline-flex;\n      background-color: transparent;\n      padding: 0;\n      width: auto;\n      height: auto;\n      min-height: var(--touch-target-size);\n    }\n  }\n\n  .login-forgot-password:hover,\n  .login-forgot-password:focus,\n  .login-alt-container button:hover,\n  .login-alt-container button:focus {\n    color: var(--link-color);\n  }\n\n  .login-errors {\n    text-align: center;\n    color: var(--error-color);\n    margin-top: 1em;\n  }\n}\n\n.login-alt-menu {\n  z-index: 1001;\n}\n\nbody.login {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  min-height: 100%;\n\n  main {\n    padding: var(--padding);\n    width: calc(300px + var(--padding) * 2);\n    max-width: 100%;\n\n    h1 {\n      text-align: center;\n      font-size: 32px;\n      line-height: 40px;\n      word-wrap: break-word;\n\n      #login-logo {\n        width: 100%;\n        height: auto;\n        max-height: 300px;\n      }\n    }\n  }\n\n  #poweredby {\n    display: block;\n    text-align: center;\n    margin-top: 70px;\n    margin-bottom: 48px;\n    opacity: 0.8;\n\n    &:hover,\n    &:focus,\n    &:active {\n      opacity: 1;\n    }\n\n    > svg {\n      display: inline-block;\n    }\n  }\n}\n\n.modal.email-sent {\n  width: 300px;\n\n  .body {\n    @include padding-left(68px);\n\n    &:before {\n      @include icon;\n      display: block;\n      position: absolute;\n      top: 24px;\n      @include left(24px);\n      content: 'mail';\n      font-size: 30px;\n      color: var(--link-color);\n    }\n  }\n}\n\n.login-modal {\n  width: calc(600px + var(--l) * 2);\n  max-width: calc(100% - 20px);\n  background: var(--gray-100);\n  border-radius: var(--large-border-radius);\n\n  .body {\n    display: flex;\n    flex-direction: row;\n    padding: var(--l);\n\n    .login-modal-intro,\n    .login-modal-form {\n      width: 300px;\n      max-width: 100%;\n    }\n\n    .login-modal-intro {\n      padding: var(--m);\n    }\n  }\n\n  @media screen and (max-width: 656px) {\n    border-radius: var(--large-border-radius);\n\n    .body {\n      padding: var(--m);\n      flex-direction: column;\n      gap: var(--m);\n      overflow: auto;\n\n      .login-modal-intro {\n        padding: var(--xs) var(--xl);\n      }\n\n      .login-modal-form {\n        border-radius: 0;\n      }\n    }\n  }\n}\n","$white: #fff;\n$black: #000;\n\n$grey050: hsl(212, 60%, 97%);\n$grey100: hsl(212, 50%, 93%);\n$grey200: hsl(212, 30%, 85%);\n$grey300: hsl(211, 13%, 65%);\n$grey350: hsl(211, 11%, 59%);\n$grey400: hsl(210, 10%, 53%);\n$grey500: hsl(211, 12%, 43%);\n$grey550: hsl(210, 13%, 40%);\n$grey600: hsl(209, 14%, 37%);\n$grey700: hsl(209, 18%, 30%);\n$grey800: hsl(209, 20%, 25%);\n$grey900: hsl(210, 24%, 16%);\n$grey1000: hsl(210, 24%, 10%);\n\n$red050: #fef2f2;\n$red100: #fee2e2;\n$red200: #fecaca;\n$red300: #fca5a5;\n$red400: #f87171;\n$red500: #ef4444;\n$red600: #dc2626;\n$red700: #b91c1c;\n$red800: #991b1b;\n$red900: #7f1d1d;\n\n$orange050: #fff7ed;\n$orange100: #ffedd5;\n$orange200: #fed7aa;\n$orange300: #fdba74;\n$orange400: #fb923c;\n$orange500: #f97316;\n$orange600: #ea580c;\n$orange700: #c2410c;\n$orange800: #9a3412;\n$orange900: #7c2d12;\n\n$yellow050: #fefce8;\n$yellow100: #fef9c3;\n$yellow200: #fef08a;\n$yellow300: #fde047;\n$yellow400: #facc15;\n$yellow500: #eab308;\n$yellow600: #ca8a04;\n$yellow700: #a16207;\n$yellow800: #854d0e;\n$yellow900: #713f12;\n\n$green050: #f0fdf4;\n$green100: #dcfce7;\n$green200: #bbf7d0;\n$green300: #86efac;\n$green400: #4ade80;\n$green500: #22c55e;\n$green600: #16a34a;\n$green700: #15803d;\n$green800: #166534;\n$green900: #14532d;\n\n$teal050: #f0fdfa;\n$teal100: #ccfbf1;\n$teal200: #99f6e4;\n$teal300: #5eead4;\n$teal400: #2dd4bf;\n$teal500: #14b8a6;\n$teal550: #11a697;\n$teal600: #0d9488;\n$teal700: #0f766e;\n$teal800: #115e59;\n$teal900: #134e4a;\n\n$cyan050: #ecfeff;\n$cyan100: #cffafe;\n$cyan200: #a5f3fc;\n$cyan300: #67e8f9;\n$cyan400: #22d3ee;\n$cyan500: #06b6d4;\n$cyan600: #0891b2;\n$cyan700: #0e7490;\n$cyan800: #155e75;\n$cyan900: #164e63;\n\n$blue050: #eff6ff;\n$blue100: #dbeafe;\n$blue200: #bfdbfe;\n$blue300: #93c5fd;\n$blue400: #60a5fa;\n$blue500: #3b82f6;\n$blue600: #2563eb;\n$blue700: #1d4ed8;\n$blue800: #1e40af;\n$blue900: #1e3a8a;\n\n$violet050: #f5f3ff;\n$violet100: #ede9fe;\n$violet200: #ddd6fe;\n$violet300: #c4b5fd;\n$violet400: #a78bfa;\n$violet500: #8b5cf6;\n$violet600: #7c3aed;\n$violet700: #6d28d9;\n$violet800: #5b21b6;\n$violet900: #4c1d95;\n\n$pink050: #fdf2f8;\n$pink100: #fce7f3;\n$pink200: #fbcfe8;\n$pink300: #f9a8d4;\n$pink400: #f472b6;\n$pink500: #ec4899;\n$pink600: #db2777;\n$pink700: #be185d;\n$pink800: #9d174d;\n$pink900: #831843;\n\n// submit button colors\n$primaryColor: $red600;\n$secondaryColor: $grey500;\n\n$inputColor: hsl(212, 25%, 50%);\n\n// text colors\n$textColor: $grey700;\n$mediumDarkTextColor: $grey550;\n$mediumTextColor: $grey550;\n$lightTextColor: $grey500;\n$linkColor: #1f5fea;\n\n// menu colors\n$menuOptionColor: $textColor;\n$menuOptionActiveColor: $textColor;\n$menuOptionActiveBackgroundColor: $grey050;\n\n// hairline colors\n$hairlineColor: transparentize($grey800, 0.9);\n$mediumHairlineColor: transparentize($grey600, 0.75);\n$darkHairlineColor: transparentize($grey400, 0.5);\n\n// focus colors\n$lightFocusColor: $blue300;\n$mediumFocusColor: $blue500;\n$darkFocusColor: #0f74b1;\n\n// focus rings\n$lightFocusRing:\n  0 0 0 1px $lightFocusColor,\n  0 0 0 3px transparentize($lightFocusColor, 0.3);\n$mediumFocusRing:\n  0 0 0 1px $mediumFocusColor,\n  0 0 0 3px transparentize($mediumFocusColor, 0.3);\n$darkFocusRing:\n  0 0 0 1px $darkFocusColor,\n  0 0 0 3px transparentize($darkFocusColor, 0.3);\n\n// selection colors\n$lightSelColor: $grey200;\n$darkSelColor: $grey500;\n\n// alert/notice colors\n$errorColor: $red600;\n$warningColor: $yellow800;\n$successColor: $teal500;\n$noticeColor: $blue800;\n\n// UI element styles\n$smallBorderRadius: 3px;\n$mediumBorderRadius: 4px;\n$largeBorderRadius: 5px;\n\n$menuBorderRadius: $mediumBorderRadius;\n\n@mixin sans-serif-font {\n  font-family:\n    system-ui,\n    BlinkMacSystemFont,\n    -apple-system,\n    'Segoe UI',\n    'Roboto',\n    'Oxygen',\n    'Ubuntu',\n    'Cantarell',\n    'Fira Sans',\n    'Droid Sans',\n    'Helvetica Neue',\n    sans-serif;\n}\n\n@mixin fixed-width-font {\n  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier,\n    monospace;\n  font-size: 0.9em !important;\n}\n\n@function toRem($values...) {\n  $max: length($values);\n  $remValues: '';\n\n  @for $i from 1 through $max {\n    $remValues: #{$remValues + calc(nth($values, $i) / 16)}rem;\n\n    @if $i < $max {\n      $remValues: #{$remValues + ' '};\n    }\n  }\n\n  @return $remValues;\n}\n\n@mixin fontSize($size) {\n  font-size: toRem($size);\n}\n\n// Other\n\n@mixin focus-styles {\n  body:not(.reduce-focus-visibility) &:focus,\n  body.reduce-focus-visibility &:focus-visible {\n    @content;\n  }\n}\n\n@mixin svg-mask($color) {\n  rect,\n  circle,\n  ellipse,\n  line,\n  polyline,\n  polygon,\n  path,\n  text {\n    fill: $color;\n    stroke-width: 0;\n  }\n}\n\n@mixin icon {\n  font-family: 'Craft';\n  speak: never;\n  -webkit-font-feature-settings: 'liga', 'dlig';\n  -moz-font-feature-settings: 'liga=1, dlig=1';\n  -moz-font-feature-settings: 'liga', 'dlig';\n  -ms-font-feature-settings: 'liga', 'dlig';\n  -o-font-feature-settings: 'liga', 'dlig';\n  font-feature-settings: 'liga', 'dlig';\n  text-rendering: optimizeLegibility;\n  font-weight: normal;\n  font-variant: normal;\n  text-transform: none;\n  line-height: 1;\n  direction: ltr; // Fixes a rendering issue in Chrome/Win\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n\n  display: inline-block;\n  text-align: center;\n  font-style: normal;\n  vertical-align: middle;\n  word-wrap: normal !important;\n  user-select: none;\n}\n\n@mixin angle($dir: down, $color: currentColor, $width: calc(2rem / 16)) {\n  display: block;\n  content: '';\n  font-size: 0;\n  width: calc(7rem / 16);\n  height: calc(7rem / 16);\n  border: solid $color;\n  border-width: 0 $width $width 0;\n  opacity: 0.8;\n  position: relative;\n\n  @if $dir == up {\n    transform: rotate(225deg);\n    top: 2px;\n  } @else if $dir == down {\n    transform: rotate(45deg);\n  } @else if $dir == left {\n    body.ltr & {\n      transform: rotate(135deg);\n    }\n    body.rtl & {\n      transform: rotate(-45deg);\n    }\n  } @else if $dir == right {\n    body.ltr & {\n      transform: rotate(-45deg);\n    }\n    body.rtl & {\n      transform: rotate(135deg);\n    }\n  }\n}\n\n@mixin clearafter {\n  content: '';\n  display: block;\n  height: 0;\n  clear: both;\n  visibility: hidden;\n}\n\n@mixin shadow {\n  box-shadow: 0 1px 5px -1px transparentize($grey900, 0.8);\n}\n\n@mixin pane {\n  background: $white;\n  box-shadow:\n    0 0 0 1px $grey200,\n    0 2px 12px transparentize($grey200, 0.5);\n\n  &:focus {\n    box-shadow: var(--focus-ring);\n  }\n}\n\n@mixin modal {\n  border-radius: $largeBorderRadius;\n  background-color: $white;\n  box-shadow: 0 25px 100px transparentize($grey900, 0.5) !important;\n}\n\n@mixin light-on-dark-text() {\n  // Make light on dark text sharp on Macs\n  // (sub-pixel antialiasing looks too bold/blurry with light text on dark background)\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n}\n\n@mixin light-focus-ring() {\n  --focus-ring: 0 0 0 1px hsl(var(--light-focus-hsl)),\n    0 0 0 3px hsla(var(--light-focus-hsl), 0.7);\n}\n\n@mixin custom-color-focus-ring($primary, $secondary: null) {\n  @if $secondary != null {\n    --focus-ring: 0 0 0 1px #{$primary}, 0 0 0 3px #{$secondary};\n  } @else {\n    --focus-ring: 0 0 0 3px #{$primary};\n  }\n}\n\n@mixin two-color-focus-ring($light-button: true) {\n  // Creates a two-color focus ring, with a white\n  // If button is light, the dark box shadow is adjacent to the button\n  // Else the light box shadow is adjacent to the button\n  --light-color: var(--white);\n  --dark-color: var(--gray-800);\n\n  @if $light-button {\n    --focus-ring: 0 0 0 3px var(--dark-color), 0 0 0 6px var(--light-color);\n  } @else {\n    --focus-ring: 0 0 0 3px var(--light-color), 0 0 0 6px var(--dark-color);\n  }\n}\n\n// RTL stuff\n\n@mixin left($left) {\n  body.ltr & {\n    left: $left;\n  }\n  body.rtl & {\n    right: $left;\n  }\n}\n\n@mixin right($right) {\n  body.ltr & {\n    right: $right;\n  }\n  body.rtl & {\n    left: $right;\n  }\n}\n\n@mixin alignleft {\n  body.ltr & {\n    text-align: left;\n  }\n  body.rtl & {\n    text-align: right;\n  }\n}\n\n@mixin alignright {\n  body.ltr & {\n    text-align: right;\n  }\n  body.rtl & {\n    text-align: left;\n  }\n}\n\n@mixin border-left($params...) {\n  body.ltr & {\n    border-left: $params;\n  }\n  body.rtl & {\n    border-right: $params;\n  }\n}\n\n@mixin border-right($params...) {\n  body.ltr & {\n    border-right: $params;\n  }\n  body.rtl & {\n    border-left: $params;\n  }\n}\n\n@mixin border-left-width($param) {\n  body.ltr & {\n    border-left-width: $param;\n  }\n  body.rtl & {\n    border-right-width: $param;\n  }\n}\n\n@mixin border-right-width($param) {\n  body.ltr & {\n    border-right-width: $param;\n  }\n  body.rtl & {\n    border-left-width: $param;\n  }\n}\n\n@mixin border-radius($tl, $tr, $br, $bl) {\n  body.ltr & {\n    border-radius: $tl $tr $br $bl;\n  }\n  body.rtl & {\n    border-radius: $tr $tl $bl $br;\n  }\n}\n\n@mixin border-top-left-radius($params...) {\n  body.ltr & {\n    border-top-left-radius: $params;\n  }\n  body.rtl & {\n    border-top-right-radius: $params;\n  }\n}\n\n@mixin border-top-right-radius($params...) {\n  body.ltr & {\n    border-top-right-radius: $params;\n  }\n  body.rtl & {\n    border-top-left-radius: $params;\n  }\n}\n\n@mixin border-bottom-left-radius($params...) {\n  body.ltr & {\n    border-bottom-left-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-right-radius: $params;\n  }\n}\n\n@mixin border-bottom-right-radius($params...) {\n  body.ltr & {\n    border-bottom-right-radius: $params;\n  }\n  body.rtl & {\n    border-bottom-left-radius: $params;\n  }\n}\n\n@mixin floatleft {\n  body.ltr & {\n    float: left;\n  }\n  body.rtl & {\n    float: right;\n  }\n}\n\n@mixin floatright {\n  body.ltr & {\n    float: right;\n  }\n  body.rtl & {\n    float: left;\n  }\n}\n\n@mixin margin($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    margin: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    margin: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin margin-left($margin...) {\n  body.ltr & {\n    margin-left: $margin;\n  }\n  body.rtl & {\n    margin-right: $margin;\n  }\n}\n\n@mixin margin-right($margin...) {\n  body.ltr & {\n    margin-right: $margin;\n  }\n  body.rtl & {\n    margin-left: $margin;\n  }\n}\n\n@mixin padding($t, $r, $b, $l, $important: '') {\n  body.ltr & {\n    padding: $t $r $b $l unquote($important);\n  }\n  body.rtl & {\n    padding: $t $l $b $r unquote($important);\n  }\n}\n\n@mixin padding-left($padding...) {\n  body.ltr & {\n    padding-left: $padding;\n  }\n  body.rtl & {\n    padding-right: $padding;\n  }\n}\n\n@mixin padding-right($padding...) {\n  body.ltr & {\n    padding-right: $padding;\n  }\n  body.rtl & {\n    padding-left: $padding;\n  }\n}\n\n// Misc\n\n@mixin dark-inputs {\n  @include placeholder-styles($grey400);\n\n  .btn,\n  .select:not(.selectize) select {\n    background-color: $grey200;\n\n    &:focus,\n    &:hover {\n      background-color: darken($grey200, 5%);\n    }\n\n    &:active,\n    &.active {\n      background-color: darken($grey200, 10%);\n    }\n  }\n\n  .text {\n    background-color: $grey200;\n\n    &:focus {\n      background-color: darken($grey200, 5%);\n    }\n  }\n}\n\n@mixin header-btn {\n  width: calc(30rem / 16);\n  height: calc(30rem / 16);\n  padding-left: 0;\n  padding-right: 0;\n\n  &:not(:hover):not(:active):not(.active) {\n    background-color: transparent;\n  }\n  &:not(:active):not(.active):hover {\n    background-color: transparentize($grey300, 0.85);\n  }\n}\n\n@mixin h6-styles {\n  margin: 14px 0 3px;\n  font-size: 11px;\n  line-height: 1.2;\n  color: $lightTextColor;\n  text-transform: uppercase;\n}\n\n@mixin token-styles {\n  display: inline-block;\n  border-radius: $smallBorderRadius;\n  padding: 3px 7px;\n  font-size: 12px;\n  line-height: 14px;\n  color: $textColor;\n  background-color: $grey100;\n}\n\n@mixin active-token-styles {\n  background-color: $grey200;\n}\n\n@mixin menu-styles {\n  z-index: 100;\n  border-radius: $menuBorderRadius;\n  padding: 0 14px;\n  overflow: auto;\n  background: $white;\n  user-select: none;\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 5px 20px transparentize($grey900, 0.75);\n}\n\n@mixin menu-item-styles {\n  margin: 0 -14px;\n  padding: 10px 14px;\n  color: $menuOptionColor;\n  text-decoration: none;\n  white-space: nowrap;\n}\n\n@mixin menu-item-active-styles {\n  color: var(--white) !important;\n  background-color: var(--dark-sel-color);\n\n  svg {\n    @include svg-mask(var(--white));\n  }\n}\n\n@mixin disclosure-link-hover-styles {\n  color: $menuOptionColor;\n  background-color: $grey050;\n}\n\n@mixin input-styles {\n  border-radius: $smallBorderRadius;\n  border: 1px solid transparentize($inputColor, 0.75);\n  background-color: hsl(212, 50%, 99%);\n  background-clip: padding-box;\n}\n\n@mixin input-focused-styles {\n  box-shadow: var(--focus-ring);\n}\n\n@mixin placeholder-styles($color) {\n  input::-webkit-input-placeholder,\n  textarea::-webkit-input-placeholder {\n    color: $color;\n  }\n\n  input:-ms-input-placeholder,\n  textarea:-ms-input-placeholder {\n    color: $color;\n  }\n\n  input::-ms-input-placeholder,\n  textarea::-ms-input-placeholder {\n    color: $color;\n  }\n\n  input:-moz-placeholder,\n  textarea:-moz-placeholder {\n    color: $color;\n  }\n\n  input::-moz-placeholder,\n  textarea::-moz-placeholder {\n    color: $color;\n  }\n\n  input::placeholder,\n  textarea::placeholder {\n    color: $color;\n  }\n}\n\n@mixin select-styles {\n  position: relative;\n  border-radius: $largeBorderRadius;\n  white-space: nowrap;\n}\n\n@mixin select-container-styles {\n  max-width: 100%;\n  position: relative;\n  :not(.flex) > & {\n    display: inline-block;\n  }\n}\n\n@mixin select-arrow-styles {\n  @include angle;\n  position: absolute;\n  z-index: 1;\n  top: calc(50% - 5px);\n  @include right(9px);\n  user-select: none;\n  pointer-events: none;\n  color: var(--ui-control-color);\n}\n\n@mixin select-input-styles {\n  display: block;\n  position: relative;\n  max-width: 100%;\n  border: none;\n  @include padding(7px, 22px, 7px, 10px);\n  font-size: 14px;\n  line-height: 20px;\n  color: $textColor;\n  background-color: hsl(212, 25%, 90%);\n  appearance: none;\n  // from https://stackoverflow.com/a/15933790/1688568\n  &::-ms-expand {\n    display: none;\n  }\n}\n\n@mixin select-input-fullwidth-styles {\n  min-width: 100%;\n}\n\n@mixin select-input-focused-styles {\n  outline-color: transparent;\n  background-color: hsl(212, 25%, 85%);\n  box-shadow: var(--focus-ring);\n}\n\n@mixin touch-target {\n  height: var(--touch-target-size);\n  width: var(--touch-target-size);\n}\n\n// https://tailwindcss.com/docs/screen-readers#undoing-screen-reader-only-elements\n@mixin visually-hidden {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n@mixin not-visually-hidden {\n  position: static;\n  width: auto;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n@mixin readable {\n  font-size: 16px;\n  line-height: 22px;\n\n  h1,\n  .h1,\n  h2,\n  .h2,\n  h3,\n  .h3,\n  h4,\n  .h4,\n  h5,\n  .h5,\n  h6,\n  .h6 {\n    margin: 24px 0 16px;\n    font-weight: 600;\n  }\n\n  h1,\n  .h1 {\n    font-size: 32px;\n    line-height: 40px;\n    color: #000;\n  }\n\n  h2,\n  .h2 {\n    font-size: 24px;\n    line-height: 30px;\n  }\n\n  h3,\n  .h3 {\n    font-size: 20px;\n    line-height: 24px;\n  }\n\n  h4,\n  .h4 {\n    font-size: 16px;\n    line-height: 20px;\n  }\n\n  h5,\n  .h5 {\n    font-size: 14px;\n    line-height: 18px;\n  }\n\n  h6,\n  .h6 {\n    font-size: 13.6px;\n    line-height: 17px;\n    color: $mediumTextColor;\n  }\n\n  ul,\n  ol {\n    margin: 1em 0;\n    @include padding-left(2em);\n  }\n\n  ul li {\n    list-style-type: disc;\n  }\n\n  li + li {\n    margin-top: 0.25em;\n  }\n\n  .tip-dismiss-btn {\n    position: absolute;\n    top: 12px;\n    @include right(12px);\n\n    & + p {\n      margin-top: 0;\n    }\n  }\n\n  blockquote {\n    margin: 16px 0;\n\n    &:not(.note) {\n      padding: 0 16px;\n      color: $mediumTextColor;\n      @include border-left(4px solid $hairlineColor);\n    }\n\n    &.note {\n      position: relative;\n      border-radius: 4px;\n      padding: 1em;\n      @include padding-left(50px);\n      border: 1px solid;\n\n      &.dismissible {\n        @include padding-right(36px);\n      }\n\n      &:not(.tip):not(.warning) {\n        border-color: $errorColor;\n        color: #bf503f;\n\n        &:before {\n          content: 'alert';\n          color: $errorColor;\n        }\n      }\n\n      &.tip {\n        border-color: $linkColor;\n        color: $linkColor;\n\n        &:before {\n          content: 'lightbulb';\n          color: $linkColor;\n        }\n      }\n\n      &.warning {\n        border-color: $warningColor;\n        color: #cf783a;\n\n        &:before {\n          content: 'alert';\n          color: $warningColor;\n        }\n      }\n\n      &:before {\n        @include icon;\n        opacity: 1;\n        position: absolute;\n        top: 15px;\n        @include left(16px);\n        font-size: 24px;\n        width: 24px;\n      }\n\n      a[href] {\n        color: currentColor;\n        text-decoration: underline;\n      }\n    }\n  }\n\n  .go:after {\n    font-size: 14px;\n  }\n}\n\n@mixin checkered-bg($size) {\n  // h/t https://gist.github.com/dfrankland/f6fed3e3ccc42e3de482b324126f9542\n  $halfSize: $size * 0.5;\n  background-image: linear-gradient(\n      45deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      135deg,\n      #{transparentize($grey300, 0.75)} 25%,\n      transparent 25%\n    ),\n    linear-gradient(\n      45deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    ),\n    linear-gradient(\n      135deg,\n      transparent 75%,\n      #{transparentize($grey300, 0.75)} 75%\n    );\n  background-size: $size $size;\n  background-position:\n    0 0,\n    $halfSize 0,\n    $halfSize -#{$halfSize},\n    0 $halfSize;\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n$base: 24px;\n$tabPadding: 14px;\n$tabWidth: $base * 11;\n$gridColor: var(--gray-100);\n\n@mixin workspaceBg {\n  background-color: var(--gray-050);\n  background-image: linear-gradient(to right, $gridColor 1px, transparent 0px),\n    linear-gradient(to bottom, $gridColor 1px, transparent 1px);\n  background-size: $base $base;\n}\n\n.layoutdesigner {\n  container-type: inline-size;\n}\n\n.fld-container {\n  display: flex;\n  align-items: stretch;\n  position: relative;\n  @include input-styles;\n  overflow: hidden;\n  box-shadow: none;\n  @include padding-right($tabWidth + 1);\n  min-height: 500px;\n\n  .errors > & {\n    border: 1px solid var(--error-color) !important;\n  }\n\n  .fld-workspace {\n    flex: 1;\n    @include border-radius(\n      calc(var(--small-border-radius) - 1px),\n      0,\n      0,\n      calc(var(--small-border-radius - 1px))\n    );\n    @include padding($base, 0, $base, $base);\n    @include workspaceBg;\n    background-position: -1px -1px;\n    box-shadow: inset 0 1px 3px -1px darken($grey200, 10%);\n\n    .fld-tabs {\n      display: flex;\n      align-items: flex-start;\n      flex-wrap: wrap;\n    }\n  }\n\n  &:not(:has(.fld-library)) {\n    @include padding-right(0);\n\n    .fld-workspace {\n      @include padding-right($base);\n    }\n  }\n\n  .fld-library {\n    position: absolute;\n    top: 0;\n    @include right(0);\n    height: 100%;\n    width: $tabWidth + 1;\n    padding: $tabPadding;\n  }\n}\n\n.fld-new-tab-btn:active {\n  background-color: var(--gray-050);\n}\n\n.fld-library-menu {\n  width: $tabWidth;\n  @include margin-left($tabPadding * -1);\n  padding: $tabPadding;\n}\n\n.fld-library {\n  display: flex;\n  flex-direction: column;\n\n  .btngroup {\n    margin-bottom: $tabPadding;\n  }\n\n  .fld-field-library {\n    margin: -3px;\n    padding: 3px;\n    flex: 1;\n    min-height: 0;\n    overflow: auto;\n\n    .fld-field-group {\n      margin-top: $tabPadding;\n\n      & > *:not(:first-child) {\n        margin-top: var(--s);\n      }\n    }\n  }\n\n  .fld-ui-library > *:not(:first-child) {\n    margin-top: var(--s);\n  }\n\n  .filtered {\n    display: none;\n  }\n}\n\n.layoutdesigner .fld-library,\n.fld-tab .tabs .tab,\n.fld-tab .fld-tabcontent,\n.fld-new-tab-btn,\n.fld-new-tab-btn:hover {\n  background-color: var(--white);\n  box-shadow:\n    0 0 0 1px transparentize($grey900, 0.9),\n    0 2px 5px -2px transparentize($grey900, 0.8);\n}\n\n.fld-tab .settings:before,\n.fld-element .settings:before {\n  margin-top: -2px;\n  font-size: 16px;\n  opacity: 0.5;\n}\n\n.fld-tab .settings:hover:before,\n.fld-tab .settings.active:before,\n.fld-element .settings:hover:before,\n.fld-element .settings.active:before {\n  opacity: 1;\n}\n\n.fld-tab {\n  width: $tabWidth + $base;\n  @include padding(0, $base + 1, $base, 0);\n  box-sizing: border-box;\n\n  .tabs {\n    margin: -10px -12px 0;\n    padding: 10px 12px 0;\n    overflow: hidden;\n    display: flex;\n\n    .tab {\n      display: flex;\n      align-items: center;\n      gap: var(--xs);\n      max-width: calc(100% - 10px);\n      box-sizing: border-box;\n      padding: 8px $tabPadding;\n      border-radius: var(--medium-border-radius) var(--medium-border-radius) 0 0;\n\n      body:not(.dragging) &.draggable {\n        cursor: move;\n        cursor: grab;\n      }\n\n      span {\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n      }\n    }\n  }\n\n  .fld-tabcontent {\n    padding: $tabPadding;\n    @include border-radius(\n      0,\n      var(--medium-border-radius),\n      var(--medium-border-radius),\n      var(--medium-border-radius)\n    );\n\n    & > .fld-element,\n    & > .fld-add-btn {\n      &:not(:first-child) {\n        margin-top: var(--s);\n      }\n    }\n\n    .fld-add-btn:not([aria-expanded='true']) {\n      display: none;\n    }\n  }\n\n  &.fld-insertion {\n    .tabs .tab,\n    .fld-tabcontent {\n      margin: -2px;\n      border: 2px dashed var(--hairline-color);\n      box-shadow: none;\n      @include workspaceBg;\n    }\n    .tabs .tab {\n      background-position: -1px -1px;\n    }\n    .fld-tabcontent {\n      background-position: -1px -13px;\n    }\n  }\n}\n\n.fld-tab-caboose {\n  min-height: 24px;\n}\n\n.fld-element {\n  position: relative;\n  display: flex;\n  align-items: center;\n  padding: var(--s);\n  gap: var(--s);\n  box-shadow: inset 0 0 0 1px var(--hairline-color);\n  border-radius: var(--medium-border-radius);\n  background-color: var(--white);\n\n  body:not(.dragging) & {\n    cursor: move;\n    cursor: grab;\n  }\n\n  &.fld-insertion {\n    box-sizing: border-box;\n    border: 2px dashed var(--hairline-color);\n    border-radius: var(--medium-border-radius);\n    background: none;\n    box-shadow: none;\n  }\n\n  &.draghelper {\n    @include shadow;\n  }\n\n  &.fld-field {\n    color: var(--medium-text-color);\n    background-color: var(--gray-100);\n\n    &:not(.draghelper) {\n      box-shadow: none;\n    }\n\n    .field-name {\n      display: flex;\n      flex-direction: column;\n      gap: var(--xs);\n    }\n  }\n\n  .fld-element-icon {\n    text-align: center;\n\n    &,\n    svg {\n      width: 16px;\n      height: 16px;\n    }\n\n    svg {\n      @include svg-mask(var(--ui-control-color));\n    }\n  }\n\n  .field-name {\n    flex: 1;\n    overflow: hidden;\n\n    .fld-element-label,\n    .fld-attribute {\n      flex: 1;\n      display: flex;\n      align-items: center;\n      gap: var(--xs);\n    }\n\n    .fld-element-label h4,\n    .fld-attribute .smalltext {\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .fld-element-label h4 {\n      font-weight: normal;\n      color: var(--text-color);\n      margin: 0;\n    }\n  }\n}\n\n.fld-hr,\n.fld-br {\n  position: relative;\n  flex: 1;\n  display: flex;\n  justify-content: center;\n\n  &:before {\n    position: absolute;\n    display: block;\n    top: calc(50% - 2px);\n    left: 0;\n    width: 100%;\n    height: 4px;\n    content: '';\n    font-size: 0;\n    border-radius: 2px;\n  }\n\n  .smalltext {\n    position: relative;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    background-color: var(--gray-100);\n    border-radius: var(--large-border-radius);\n    padding: 0 var(--s);\n    height: var(--touch-target-size);\n  }\n}\n\n.fld-hr:before {\n  background-color: var(--gray-100);\n}\n\n.fld-br:before {\n  background-image: repeating-linear-gradient(\n    to right,\n    var(--gray-100),\n    var(--gray-100) calc(100% / 19),\n    transparent calc(100% / 19),\n    transparent calc(100% / 9.5),\n    var(--gray-100) calc(100% / 9.5)\n  );\n}\n\n.fld-element-settings-body {\n  flex: 1;\n  margin: -24px var(--neg-padding) 0;\n  padding: 24px var(--padding);\n  overflow: hidden auto;\n  position: relative;\n}\n\n.fld-element-settings-footer {\n  position: relative;\n  display: flex;\n  flex-direction: row;\n  margin: 0 var(--neg-padding) -24px;\n  padding: 5px var(--padding);\n  @include pane;\n  background-color: var(--gray-050);\n  z-index: 3;\n\n  & > .ee-site-select {\n    flex: 1;\n  }\n\n  & > .btn {\n    @include margin-left(5px);\n  }\n\n  & > .spinner {\n    @include margin(0, var(--neg-padding), 0, 0);\n  }\n}\n\n@container (width < #{$base + $tabWidth + $base + $tabWidth + 1}) {\n  .fld-container {\n    @include padding-right(0);\n\n    .fld-workspace {\n      @include padding-right($base);\n    }\n\n    & > .fld-library {\n      display: none;\n    }\n  }\n\n  .fld-tab {\n    .fld-tabcontent {\n      .fld-add-btn {\n        display: inline-flex !important;\n      }\n    }\n  }\n}\n","@charset \"UTF-8\";\n@import '@craftcms/sass/mixins';\n\n/* No Scroll */\nhtml.noscroll,\nhtml.noscroll body {\n  overflow: hidden;\n  height: 100%;\n}\n\n/* Image Editor */\n\n.modal.imageeditor {\n  background-color: var(--gray-900);\n  color: var(--white);\n  @include light-on-dark-text;\n  @include light-focus-ring;\n  opacity: 0;\n  user-select: none;\n}\n\n.modal.imageeditor.modal {\n  border-radius: 0;\n}\n\n.modal.imageeditor.modal .body:after {\n  display: none;\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder) {\n  background-color: var(--gray-600);\n  color: var(--white);\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder):hover {\n  background-color: var(--gray-700);\n}\n\n.modal.imageeditor .btn:not(.submit):not(.noborder).active {\n  background-color: var(--gray-800);\n}\n\n.modal.imageeditor .icon::before {\n  width: 24px;\n  height: 24px;\n  margin-left: -3px;\n  display: inline-block;\n  content: '';\n}\n\n.modal.imageeditor .icon.rotate-left::before {\n  background-image: url(../images/image-editor/rotate-left.svg);\n}\n\n.modal.imageeditor .icon.rotate-right::before {\n  background-image: url(../images/image-editor/rotate-right.svg);\n}\n\n.modal.imageeditor .icon.flip-vertical::before {\n  background-image: url(../images/image-editor/flip-vertical.svg);\n}\n\n.modal.imageeditor .icon.flip-horizontal::before {\n  background-image: url(../images/image-editor/flip-horizontal.svg);\n}\n\n.modal.imageeditor .icon.constraint::before {\n  background-image: url(../images/image-editor/unconstrained.svg);\n}\n\n.modal.imageeditor .icon.focal-point::before {\n  background-image: url(../images/image-editor/focal-point.svg);\n}\n\n.modal.imageeditor .body {\n  display: flex;\n  padding: 0;\n}\n\n.modal.imageeditor input {\n  color: var(--text-color);\n}\n\n.modal.imageeditor .body .tabs {\n  border-right: 1px solid var(--gray-1000);\n}\n\n.modal.imageeditor .body .tabs ul {\n  width: 100px;\n  flex-direction: column;\n  align-items: stretch;\n}\n\n.modal.imageeditor .body .tabs ul li {\n  position: relative;\n  padding: 14px;\n  text-align: center;\n  border-bottom: 1px solid var(--gray-1000);\n  cursor: pointer;\n\n  &::before {\n    position: absolute;\n    top: 0;\n    @include left(0);\n    content: '';\n    width: 0;\n    height: 100%;\n    background-color: currentColor;\n  }\n\n  &.selected {\n    background-color: darken($grey900, 5%);\n\n    &::before {\n      width: 2px;\n    }\n  }\n}\n\n.modal.imageeditor .body .tabs ul li i {\n  background-repeat: no-repeat;\n  background-position: top center;\n  display: block;\n  height: 24px;\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='rotate'] i {\n  background-image: url(../images/image-editor/rotate-left.svg);\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='crop'] i {\n  background-image: url(../images/image-editor/crop.svg);\n}\n\n.modal.imageeditor .body .tabs ul li[data-view='filters'] i {\n  background-image: url(../images/image-editor/filters.svg);\n}\n\n.modal.imageeditor .body .tabs ul li:hover {\n  background-color: darken($grey900, 2%);\n}\n\n.modal.imageeditor .body .tabs ul li:hover {\n  cursor: pointer;\n}\n\n.modal.imageeditor .body .views {\n  padding: 24px;\n  overflow: auto;\n}\n\n.modal.imageeditor .body .views .btngroup {\n  margin-bottom: 24px;\n}\n\n.modal.imageeditor .body .views .filters ul {\n  width: 100px;\n}\n\n.modal.imageeditor .body .views .filters ul li {\n  text-align: center;\n  margin-right: 14px;\n  margin-bottom: 14px;\n}\n\n.modal.imageeditor .body .views .filters ul li:last-child {\n  margin-right: 0;\n}\n\n.modal.imageeditor .body .views .filters ul li img {\n  border: 3px solid transparent;\n  border-radius: 4px;\n}\n\n.modal.imageeditor .body .views .filters ul li span {\n  display: block;\n}\n\n.modal.imageeditor .body .views .filters ul li:hover {\n  cursor: pointer;\n}\n\n.modal.imageeditor .body .views .filters ul li.selected img {\n  border-color: var(--white);\n}\n\n.modal.imageeditor .body .image-container {\n  flex-grow: 1;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  overflow: hidden;\n}\n\n.modal.imageeditor .body .image-container .image {\n  text-align: center;\n  flex-grow: 1;\n  position: relative;\n  margin: 14px;\n}\n\n.modal.imageeditor .body .image-container .image canvas {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\n.modal.imageeditor .body .image-container .image-tools {\n  text-align: center;\n}\n\n.modal.imageeditor .body .image-container .image-tools .straightening {\n  max-width: 400px;\n  min-height: toRem(60);\n  display: block;\n  margin: 0 auto;\n  overflow: hidden;\n}\n\n.modal.imageeditor .footer {\n  position: absolute;\n  background-color: transparent;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  border-top: 1px solid #000;\n\n  body.has-debug-toolbar & {\n    padding-bottom: calc(8px + 42px);\n  }\n}\n\n.modal.imageeditor .body .views .crop {\n  fieldset .heading {\n    display: none;\n  }\n\n  .custom-constraint-spacer {\n    padding: 0 var(--xs);\n  }\n\n  .constraint-group {\n    display: grid;\n    grid-gap: var(--xs);\n  }\n\n  .custom {\n    @include padding-left(calc(1rem + 5px));\n  }\n\n  .orientation {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n\n    input {\n      -webkit-appearance: none;\n      -moz-appearance: none;\n      appearance: none;\n      background-position: center center;\n      background-repeat: no-repeat;\n      margin: 0 4px;\n      cursor: pointer;\n\n      &[value='landscape'] {\n        width: 30px;\n        height: 20px;\n        background-image: url(../images/image-editor/orientation-landscape-unchecked.svg);\n\n        &:checked {\n          background-image: url(../images/image-editor/orientation-landscape-checked.svg);\n        }\n      }\n\n      &[value='portrait'] {\n        width: 20px;\n        height: 30px;\n        background-image: url(../images/image-editor/orientation-portrait-unchecked.svg);\n\n        &:checked {\n          background-image: url(../images/image-editor/orientation-portrait-checked.svg);\n        }\n      }\n    }\n  }\n}\n\n.modal.imageeditor.vertical .body .views .crop {\n  & > .btngroup:first-child {\n    justify-content: center;\n  }\n}\n\n.modal.imageeditor:not(.vertical) .body .views .crop {\n  .constraint.custom {\n    margin-top: var(--xs);\n  }\n}\n\n/* Vertical */\n\n.vertical.imageeditor .body {\n  flex-direction: column;\n\n  .image-container {\n    flex-basis: 30vh;\n    flex-shrink: 0;\n  }\n\n  .constraint-group {\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n.vertical.imageeditor .body .tabs ul {\n  display: flex;\n  flex-direction: row;\n  width: 100%;\n  border-top: 1px solid #000;\n  border-bottom: 1px solid #000;\n}\n\n.vertical.imageeditor .body .tabs ul li {\n  flex-grow: 1;\n  border: 0;\n  border-right: 1px solid #000;\n  padding: 10px 7px;\n\n  &::before {\n    top: unset;\n    top: 0;\n    width: 100%;\n    height: 0;\n  }\n\n  &.selected::before {\n    width: 100%;\n    height: 2px;\n  }\n}\n\n.vertical.imageeditor .body .views {\n  width: auto;\n}\n\n.vertical.imageeditor .body .views .rotate {\n  display: flex;\n  justify-content: center;\n  flex-wrap: wrap;\n  margin-bottom: -14px;\n}\n\n.vertical.imageeditor .body .views .rotate .btngroup {\n  margin: 0 7px 14px;\n}\n\n.vertical.imageeditor .body .views .filters ul {\n  width: auto;\n  height: 109px;\n  overflow: auto;\n  white-space: nowrap;\n  margin: 0 -24px;\n  margin-bottom: -24px;\n  padding: 24px;\n  text-align: center;\n}\n\n.vertical.imageeditor .body .views .filters ul li {\n  display: inline-block;\n  margin-bottom: 0;\n}\n\n/* Slide Rule */\n\n.slide-rule {\n  position: relative;\n  padding: 10px 0;\n\n  &:focus {\n    box-shadow: none;\n  }\n\n  @include focus-styles {\n    .cursor::after {\n      box-shadow: var(--focus-ring);\n    }\n  }\n\n  .cursor {\n    &::after {\n      content: '';\n      width: toRem(20);\n      height: toRem(50);\n      position: absolute;\n      top: -15px;\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n}\n\n.slide-rule .cursor {\n  position: absolute;\n  margin-left: toRem(-4);\n  margin-top: 4px;\n  left: 50%;\n  z-index: 1;\n  width: 0;\n  height: 0;\n  border-left: toRem(5) solid transparent;\n  border-right: toRem(5) solid transparent;\n  border-top: toRem(5) solid #63a6e1;\n}\n\n.slide-rule .graduations {\n  white-space: nowrap;\n  height: 40px;\n  position: relative;\n}\n\n.slide-rule .graduations ul {\n  position: relative;\n  float: left;\n}\n\n.slide-rule .graduations ul li {\n  display: inline-block;\n  font-size: 8px;\n  position: relative;\n  width: 10px;\n}\n\n.slide-rule .graduations ul li:not(.main-graduation) {\n  left: 1px;\n}\n\n.slide-rule .graduations ul li.main-graduation:before {\n  border-left-width: 3px;\n}\n\n.slide-rule .graduations ul li.main-graduation .label {\n  display: block;\n  cursor: default;\n}\n\n.slide-rule .graduations ul li.selected:before {\n  border-left-color: #63a6e1;\n}\n\n.slide-rule .graduations ul li:before {\n  content: '';\n  position: absolute;\n  border-left: 1px solid var(--white);\n  height: 10px;\n  top: 0px;\n  left: 0;\n}\n\n.slide-rule .graduations ul li .label {\n  width: 20px;\n  position: absolute;\n  top: 10px;\n  left: -9px;\n  display: none;\n  text-align: center;\n}\n\n.slide-rule .value {\n  display: none;\n  position: absolute;\n  bottom: 0;\n  left: 50%;\n  z-index: 1;\n  box-sizing: border-box;\n  padding: 5px;\n  width: 50px;\n  margin-left: -25px;\n  background: var(--gray-600);\n}\n\n.slide-rule .overlay {\n  z-index: 2;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 1px;\n  left: 0;\n  background-image: linear-gradient(\n    to right,\n    var(--gray-900) 0%,\n    transparentize($grey900, 1) 15%,\n    transparentize($grey900, 1) 85%,\n    var(--gray-900) 100%\n  );\n}\n\n/* Misc */\n\n.menu.dark {\n  background-color: var(--gray-600);\n  @include light-on-dark-text;\n\n  ul {\n    li {\n      a {\n        color: var(--white) !important;\n\n        &:not(.sel):not(.disabled):hover {\n          background-color: var(--gray-700);\n        }\n      }\n    }\n  }\n}\n","_:-ms-lang(x),\n.elements .tableview td.checkbox-cell input.checkbox + label,\n.elements .tableview td.checkbox-cell div.checkbox {\n  top: 16px;\n}\n\n_:-ms-lang(x),\ninput.checkbox + label:empty,\ndiv:empty.checkbox {\n  display: block;\n}\n","@charset \"UTF-8\";\n\n@import '@craftcms/sass/mixins';\n\n.cp-chart {\n  margin: 0;\n  height: 100%;\n  position: relative;\n}\n\n.cp-chart svg {\n  width: 100%;\n  height: 100%;\n}\n\n.cp-chart .axis path,\n.cp-chart .axis line {\n  fill: none;\n  stroke: var(--hairline-color);\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .ticks-axis path,\n.cp-chart .ticks-axis line {\n  fill: none;\n  stroke: none;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .ticks-axis g.tick text {\n  fill: var(--black);\n  font-size: 11px;\n}\n\n.cp-chart .axis text {\n  fill: RGBA(0, 0, 0, 0.6);\n}\n\n.cp-chart .grid-line .tick {\n  stroke: RGBA(0, 0, 0, 0.08);\n  stroke-opacity: 0.7;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .grid-line .tick line {\n  stroke: RGBA(0, 0, 0, 0.08);\n  stroke-opacity: 0.7;\n  shape-rendering: crispEdges;\n}\n\n.cp-chart .grid-line path {\n  stroke-width: 0;\n}\n\n.tooltip {\n  border-radius: 3px;\n  padding: 7px 10px;\n  background: transparentize($white, 0.1);\n  position: absolute;\n  z-index: 1000000;\n  @include shadow;\n  user-select: none;\n  pointer-events: none;\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/src/web/assets/cp/src/Craft.js b/src/web/assets/cp/src/Craft.js
index 1b555a0f798..33b82996af6 100644
--- a/src/web/assets/cp/src/Craft.js
+++ b/src/web/assets/cp/src/Craft.js
@@ -101,3 +101,4 @@ import './js/CraftGlobalSidebar.js';
 import './js/CraftDisclosure.js';
 import './js/CraftTooltip.js';
 import './js/CraftElementLabel';
+import './js/CraftProxyScrollbar';
diff --git a/src/web/assets/cp/src/css/_main.scss b/src/web/assets/cp/src/css/_main.scss
index e9ff5c9d1db..98f24a5ddfa 100644
--- a/src/web/assets/cp/src/css/_main.scss
+++ b/src/web/assets/cp/src/css/_main.scss
@@ -2653,7 +2653,6 @@ h2 + .actions {
       var(--pane-padding, var(--padding)) * -1 + var(--pane-padding, var(--m))
     );
   padding: 0 !important;
-  overscroll-behavior: contain;
   overflow-x: auto;
 
   table.data {
@@ -3624,6 +3623,12 @@ table {
       background: transparent;
     }
   }
+
+  craft-proxy-scrollbar {
+    position: sticky;
+    width: calc(100% + var(--xl) * 2);
+    margin-inline: calc(var(--xl) * -1);
+  }
 }
 
 .elements {
diff --git a/src/web/assets/cp/src/js/CraftProxyScrollbar.js b/src/web/assets/cp/src/js/CraftProxyScrollbar.js
new file mode 100644
index 00000000000..0386389a24b
--- /dev/null
+++ b/src/web/assets/cp/src/js/CraftProxyScrollbar.js
@@ -0,0 +1,104 @@
+/**
+ * Proxy scrollbar
+ *
+ * Display a scrollbar that is synced with another element
+ *
+ * @property {string} scroller - The selector of the element that will be scrolled
+ * @property {string} content - The selector of the element within the scroller containing the overflow content
+ * @property {boolean} hidden - Whether the scrollbar should be hidden
+ * @property {HTMLElement} proxy - The element that represents the scrollbar
+ * @property {HTMLElement} scroller - The element that will be scrolled
+ * @property {HTMLElement} content - The element within the scroller containing the overflow content
+ */
+class CraftProxyScrollbar extends HTMLElement {
+  static observedAttributes = ['hidden'];
+
+  get hidden() {
+    return this.getAttribute('hidden');
+  }
+
+  get hasOverflow() {
+    return this.content?.scrollWidth > this.scroller?.clientWidth;
+  }
+
+  connectedCallback() {
+    this.ignoreScrollEvent = false;
+    this.animation = false;
+
+    this.scroller = document.querySelector(this.getAttribute('scroller'));
+    this.content = document.querySelector(this.getAttribute('content'));
+
+    if (!this.scroller || !this.content) {
+      return;
+    }
+
+    this.proxy = document.createElement('div');
+    this.proxy.style.height = '1px';
+    this.proxy.style.width = this.content.getBoundingClientRect().width + 'px';
+
+    this.appendChild(this.proxy);
+
+    this.addEventListener('scroll', this.syncScroll(this.scroller, this));
+    this.scroller.addEventListener(
+      'scroll',
+      this.syncScroll(this, this.scroller)
+    );
+    window.addEventListener('resize', this.handleResize.bind(this));
+
+    Object.assign(this.style, {
+      display: this.hasOverflow ? 'block' : 'none',
+      overflowX: 'scroll',
+    });
+  }
+
+  attributeChangedCallback(name, oldValue, newValue) {
+    if (name === 'hidden') {
+      this.style.display = newValue ? 'none' : 'block';
+    }
+  }
+
+  disconnectedCallback() {
+    this.proxy.remove();
+
+    this.scroller.removeEventListener(
+      'scroll',
+      this.syncScroll(this.scroller, this)
+    );
+    this.scroller.removeEventListener(
+      'scroll',
+      this.syncScroll(this, this.scroller)
+    );
+
+    window.removeEventListener('resize', this.handleResize.bind(this));
+  }
+
+  handleResize() {
+    this.proxy.style.width = this.content.getBoundingClientRect().width + 'px';
+
+    if (this.hasOverflow) {
+      this.removeAttribute('hidden');
+    } else {
+      this.setAttribute('hidden', 'true');
+    }
+  }
+
+  syncScroll(a, b) {
+    return () => {
+      if (this.ignoreScrollEvent) {
+        return false;
+      }
+
+      if (this.animation) {
+        cancelAnimationFrame(this.animation);
+      }
+
+      this.animation = requestAnimationFrame(() => {
+        this.ignoreScrollEvent = true;
+        a.scrollLeft = b.scrollLeft;
+        this.ignoreScrollEvent = false;
+      });
+    };
+  }
+}
+
+customElements.define('craft-proxy-scrollbar', CraftProxyScrollbar);
diff --git a/src/web/assets/cp/src/js/TableElementIndexView.js b/src/web/assets/cp/src/js/TableElementIndexView.js
index 477d1dd297a..84b550717b2 100644
--- a/src/web/assets/cp/src/js/TableElementIndexView.js
+++ b/src/web/assets/cp/src/js/TableElementIndexView.js
@@ -34,8 +34,7 @@ Craft.TableElementIndexView = Craft.BaseElementIndexView.extend({
     // Set the sort header
     this.initTableHeaders();
 
-    this.addListener(Garnish.$win, 'resize', this.setContainerHeight);
-    this.setContainerHeight();
+    this.createScrollbar();
 
     // Create the table sorter
     if (
@@ -403,25 +402,6 @@ Craft.TableElementIndexView = Craft.BaseElementIndexView.extend({
     Craft.cp.updateResponsiveTables();
   },
 
-  setContainerHeight: function (event) {
-    window.requestAnimationFrame(() => {
-      const $tablePane = this.$container.find('.tablepane');
-      if (!$tablePane.length) {
-        return;
-      }
-
-      const footerHeight = $('#content > #footer').outerHeight(true) || 0;
-      const margin = parseInt(
-        getComputedStyle($tablePane[0]).getPropertyValue('--padding'),
-        10
-      );
-      const containerHeight =
-        window.innerHeight - $tablePane.offset().top - footerHeight - margin;
-
-      $tablePane.css('max-height', containerHeight);
-    });
-  },
-
   _collapseElement: function ($toggle, force) {
     if (!force && !$toggle.hasClass('expanded')) {
       return false;
@@ -672,4 +652,31 @@ Craft.TableElementIndexView = Craft.BaseElementIndexView.extend({
 
     this.base();
   },
+
+  createScrollbar() {
+    const footer = document.querySelector('#content > #footer');
+    const stickyScrollbar = document.createElement('craft-proxy-scrollbar');
+    stickyScrollbar.setAttribute('scroller', '.tablepane');
+    stickyScrollbar.setAttribute('content', '.tablepane > table');
+
+    stickyScrollbar.style.bottom = `${
+      footer.getBoundingClientRect().height + 2
+    }px`;
+
+    let $scrollbar = $(stickyScrollbar);
+    const observer = new IntersectionObserver(
+      ([ev]) => {
+        if (ev.intersectionRatio < 1) {
+          $scrollbar.insertAfter(this.$container);
+        } else {
+          $scrollbar.remove();
+        }
+      },
+      {
+        rootMargin: '0px 0px -1px 0px',
+        threshold: [1],
+      }
+    );
+    observer.observe(footer);
+  },
 });