{"version":3,"sources":["webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:///./graphql_shared/constants.js","webpack:////build/source/node_modules/visibilityjs/index.js","webpack:///./graphql_shared/utils.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.timers.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/regions/empty_state/empty_state.js","webpack:////build/source/node_modules/visibilityjs/lib/visibility.core.js","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toaster.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/toast/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/toast/toast.js","webpack:///./projects/components/shared/delete_modal.vue","webpack:///./projects/components/shared/delete_modal.vue?6d2b","webpack:///projects/components/shared/delete_modal.vue","webpack:///./projects/components/shared/delete_modal.vue?a920"],"names":["__vue_script__","name","props","vertical","type","Boolean","required","default","__vue_component__","render","_h","this","$createElement","_self","_c","_g","class","attrs","$listeners","_t","staticRenderFns","undefined","MINIMUM_SEARCH_LENGTH","TYPENAME_BOARD","TYPENAME_CI_BUILD","TYPENAME_CI_RUNNER","TYPENAME_CI_PIPELINE","TYPENAME_CI_STAGE","TYPENAME_CI_TRIGGER","TYPENAME_CI_VARIABLE","TYPENAME_COMMIT_STATUS","TYPENAME_CONTAINER_REPOSITORY","TYPENAME_CRM_CONTACT","TYPENAME_CRM_ORGANIZATION","TYPENAME_DESIGN_VERSION","TYPENAME_DISCUSSION","TYPENAME_DISCUSSION_NOTE","TYPENAME_EPIC","TYPENAME_EPIC_BOARD","TYPENAME_FEATURE_FLAG","TYPENAME_GROUP","TYPENAME_ISSUE","TYPENAME_ITERATION","TYPENAME_ITERATIONS_CADENCE","TYPENAME_LABEL","TYPENAME_MEMBER_ROLE","TYPENAME_MERGE_REQUEST","TYPENAME_MILESTONE","TYPENAME_NOTE","TYPENAME_PACKAGES_PACKAGE","TYPENAME_PROJECT","TYPENAME_SCANNER_PROFILE","TYPENAME_SITE_PROFILE","TYPENAME_TODO","TYPENAME_USER","TYPENAME_VULNERABILITY","TYPENAME_WORK_ITEM","TYPENAME_WORK_ITEM_RELATED_BRANCH","TYPE_ORGANIZATION","TYPE_USERS_SAVED_REPLY","TYPE_WORKSPACE","TYPE_COMPLIANCE_FRAMEWORK","QUERY_PARAM_START_CURSOR","QUERY_PARAM_END_CURSOR","module","exports","isGid","id","startsWith","parseGid","gid","replace","split","getIdFromGraphQLId","rawId","parseInt","Number","isInteger","getTypeFromGraphQLId","mutationOperationMode","append","remove","convertToGraphQLId","TypeError","includes","convertToGraphQLIds","ids","map","convertNodeIdsFromGraphQLIds","nodes","_isArray","node","getNodesOrDefault","queryData","nodesField","_queryData$nodesField","toggleQueryPollingByVisibility","queryRef","interval","stopStartQuery","query","Visibility","hidden","stopPolling","startPolling","change","bind","etagQueryHeaders","featureCorrelation","etagResource","fetchOptions","method","headers","calculateGraphQLPaginationQueryParams","startCursor","endCursor","routeQuery","start_cursor","end_cursor","window","lastTimer","install","every","hiddenInterval","callback","_time","number","_timers","visible","_run","isSupported","_listen","stop","_stop","_timed","_wasHidden","_stopRun","runNow","timer","runner","last","Date","call","delay","setTimeout","setInterval","clearInterval","clearTimeout","event","isHidden","wasHidden","i","components","GlButton","title","String","svgPath","svgHeight","description","primaryButtonLink","primaryButtonText","secondaryButtonLink","secondaryButtonText","compact","invertInDarkMode","contentClass","Array","Object","computed","shouldPreventImageReflow","_vm","staticClass","height","_e","_v","contentClasses","_s","$scopedSlots","ref","global","lastId","self","onVisible","support","listener","e","state","unbind","_callbacks","afterPrerendering","_doc","webkitHidden","visibilityState","webkitVisibilityState","document","_change","_init","apply","arguments","addEventListener","attachEvent","defineProperty","value","ex","Vue","_typeof","obj","Symbol","iterator","constructor","prototype","_toConsumableArray","arr","isArray","arr2","length","_arrayWithoutHoles","iter","toString","from","_iterableToArray","_nonIterableSpread","inBrowser","pick","keys","reduce","acc","key","hasOwnProperty","transports","targets","sources","wormhole","extend","data","trackInstances","methods","open","transport","to","passengers","_transport$order","order","Infinity","item","newTransport","freeze","indexOf","set","compareFn","currentIndex","$_getTransportIndex","newTransports","slice","push","a","b","v","idx","sort","c","close","force","index","splice","registerTarget","target","vm","console","warn","concat","$set","unregisterTarget","$delete","registerSource","source","unregisterSource","hasTarget","hasSource","hasContentFor","_ref","_id","Portal","disabled","slim","slotProps","tag","Math","round","random","created","_this","$nextTick","mounted","sendUpdate","updated","clear","beforeDestroy","watch","newValue","oldValue","closer","normalizeSlots","$slots","normalizeOwnChildren","children","slotContent","h","Tag","style","display","PortalTarget","multiple","transition","Function","firstRender","ownTransports","$emit","newVal","oldVal","_this2","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","inheritAttrs","bail","mountTo","targetSlim","targetSlotProps","targetTag","el","querySelector","$props","portalTarget","mountEl","createElement","appendChild","_props","parent","$parent","propsData","error","$el","parentNode","removeChild","$destroy","manual","$attrs","on","scopedSlots","content","Vue$$1","options","component","portalName","portalTargetName","MountingPortalName","Wormhole","DefaultTransition","mixins","afterEnter","onAfterEnter","normalizeSlot","ariaAtomic","ariaLive","role","BToaster","doRender","dead","staticName","emitOnRoot","$toaster","$target","mixin","modelMixin","modelProps","prop","MODEL_PROP_NAME","MODEL_EVENT_NAME","defaultValue","linkProps","appendToast","autoHideDelay","bodyClass","headerClass","headerTag","isStatus","noAutoHide","noFade","noHoverPause","solid","static","toastClass","toaster","variant","BToast","isMounted","localShow","isTransitioning","isHiding","dismissStarted","resumeDismiss","hide","math","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","afterLeave","onAfterLeave","bvAttrs","safeId","tabindex","ensureToaster","$_dismissTimer","show","listenOnRoot","computedToaster","clearDismissTimer","showEvent","buildEvent","emitEvent","now","hideEvent","setHoverHandler","cancelable","relatedTarget","vueTarget","componentId","bvEvent","div","body","bvEventRoot","$mount","computedDuration","$refs","onPause","onUnPause","passed","startDismissTimer","hiddenEvent","slotScope","link","$headerContent","$title","$header","$body","click","onLinkClick","computedAttrs","isStatic","$toast","toastClasses","scopedStyleAttrs","transitionHandlers","makeToast","BASE_PROPS","propsToSlots","toastContent","filterOptions","memo","BVToastPlugin","plugins","plugin","BVToastPop","extends","handleDestroy","bvParent","$once","BvToast","_root","toast","forEach","ToastPlugin","DEFAULT_OPTIONS","toastsCount","renderTitle","action","onClick","text","showToast","message","$bvToast","onComplete","toastHiddenCallback","$root","$off","$on","updatedAutoHideDelay","isNaN","use","i18n","deleteProject","__","confirmText","isForkAlertTitle","isNotForkAlertTitle","isForkAlertBody","isNotForkAlertBody","isNotForkMessage","GlModal","GlAlert","GlSprintf","GlFormInput","model","confirmPhrase","isFork","confirmLoading","issuesCount","mergeRequestsCount","forksCount","starsCount","userInput","modalId","uniqueId","confirmDisabled","modalActionProps","primary","attributes","loading","cancel","isLoading","wasLoading","$event","preventDefault","_u","fn","$options","proxy","n__","$$v","expression"],"mappings":"wGAAA,gBAiBA,MAAMA,EAfO,CACXC,KAAM,gBACNC,MAAO,CAILC,SAAU,CACRC,KAAMC,QACNC,UAAU,EACVC,SAAS,KAab,MAeMC,EAvCR,MAuC4B,GACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATC,KAAgBC,eAAuC,OAAvDD,KAA0CE,MAAMC,IAAIJ,GAAa,MAAjEC,KAA2EI,GAAG,CAACC,MAA/EL,KAA0FR,SAAyB,qBAAd,YAAmCc,MAAM,CAAC,KAAO,UAAtJN,KAAoKO,YAAY,CAAhLP,KAAqLQ,GAAG,YAAY,IAoBhNC,gBAnBA,SAGEC,EAkB5BrB,OAhBuBqB,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,oCCpDf,o5CAAO,MAAMC,EAAwB,EAExBC,EAAiB,QACjBC,EAAoB,YACpBC,EAAqB,aACrBC,EAAuB,eACvBC,EAAoB,YACpBC,EAAsB,cACtBC,EAAuB,eACvBC,EAAyB,eACzBC,EAAgC,sBAChCC,EAAuB,6BACvBC,EAA4B,kCAC5BC,EAA0B,4BAC1BC,EAAsB,aACtBC,EAA2B,iBAC3BC,EAAgB,OAChBC,EAAsB,oBACtBC,EAAwB,cACxBC,EAAiB,QACjBC,EAAiB,QACjBC,EAAqB,YACrBC,EAA8B,sBAC9BC,EAAiB,QACjBC,EAAuB,aACvBC,EAAyB,eACzBC,EAAqB,YACrBC,EAAgB,OAChBC,EAA4B,oBAC5BC,EAAmB,UACnBC,EAA2B,qBAC3BC,EAAwB,kBACxBC,EAAgB,OAChBC,EAAgB,OAChBC,EAAyB,gBACzBC,EAAqB,WACrBC,EAAoC,wBACpCC,EAAoB,8BACpBC,EAAyB,oBACzBC,EAAiB,+BACjBC,EAA4B,kCAE5BC,EAA2B,eAC3BC,EAAyB,c,uBC3CtCC,EAAOC,QAAU,EAAQ,S,0gBCWlB,MAAMC,EAAQ,SAACC,GACpB,QAAkB,iBAAPA,IAAmBA,EAAGC,WAAW,mBAOjCC,EAAW,SAACC,GACvB,MAAOlE,EAAM+D,IAAM,GAAGG,GAAMC,QAAQ,oBAAqB,IAAIC,MAAM,KACnE,MAAO,CAAEpE,OAAM+D,OAWJM,EAAqB,SAACH,EAAM,IACvC,MAAMI,EAAQR,EAAMI,GAAOD,EAASC,GAAKH,GAAKG,EACxCH,EAAKQ,SAASD,EAAO,IAC3B,OAAOE,OAAOC,UAAUV,GAAMA,EAAK,MAWxBW,EAAuB,SAACR,EAAM,IACzC,IAAKJ,EAAMI,GAAM,OAAO,KAExB,MAAM,KAAElE,GAASiE,EAASC,GAC1B,OAAOlE,GAAQ,MAGJ2E,EAAwB,CACnCC,OAAQ,SACRC,OAAQ,SACRV,QAAS,WAYEW,EAAqB,SAAC9E,EAAM+D,GACvC,GAAoB,iBAAT/D,EACT,MAAM,IAAI+E,UAAU,qCAAqC/E,GAG3D,IAAK,CAAC,SAAU,UAAUgF,gBAAgBjB,GACxC,MAAM,IAAIgB,UAAU,6CAA6ChB,GAGnE,OAAID,EAAMC,GACDA,EAGF,gBAAgB/D,KAAQ+D,KAapBkB,EAAsB,SAACjF,EAAMkF,GAAG,OAAKA,EAAIC,KAAI,SAACpB,GAAE,OAAKe,EAAmB9E,EAAM+D,OA0B9EqB,EAA+B,SAACC,GAC3C,IAAKC,IAAQD,GACX,MAAM,IAAIN,UAAU,sCAAsCM,GAG5D,OAAOA,EAAMF,KAAI,SAACI,GAAI,OAAMA,EAAKxB,GAAK,IAAKwB,EAAMxB,GAAIM,EAAmBkB,EAAKxB,KAAQwB,MAW1EC,EAAoB,SAACC,EAAWC,EAAa,SAAY,IAAAC,EACpE,OAA8B,QAA9BA,EAAOF,aAAS,EAATA,EAAYC,UAAW,IAAAC,IAAI,IAGvBC,EAAiC,SAACC,EAAUC,EAAW,KAClE,MAAMC,EAAiB,SAACC,GACjBC,IAAWC,SAGdF,EAAMG,cAFNH,EAAMI,aAAaN,IAMvBC,EAAeF,GACfI,IAAWI,OAAON,EAAeO,KAAK,KAAMT,KAGjCU,EAAmB,SAACC,EAAoBC,EAAe,IAClE,MAAO,CACLC,aAAc,CACZC,OAAQ,OAEVC,QAAS,CACP,uCAAwCJ,EACxC,iCAAkCC,EAClC,mBAAoB,oBAKbI,EAAwC,UAAC,YACpDC,EAAW,UACXC,EACAC,YAAY,aAAEC,EAAY,WAAEC,KAAeF,KAE3C,OAAIF,EACK,IACFE,EACH,CAACtD,KAA2BoD,GAI5BC,EACK,IACFC,EACH,CAACrD,KAAyBoD,GAIvBC,I,sBCzLR,SAAWG,GACR,aAEA,IAAIC,GAAa,EAEbC,EAAU,SAAUpB,GAoJpB,OA3HAA,EAAWqB,MAAQ,SAAUxB,EAAUyB,EAAgBC,GACnDvB,EAAWwB,QAELD,IACFA,EAAWD,EACXA,EAAiB,MAIrB,IAAIG,EADJN,GAAa,EAab,OAVAnB,EAAW0B,QAAQD,GAAU,CACzBE,QAAU9B,EACVI,OAAUqB,EACVC,SAAUA,GAEdvB,EAAW4B,KAAKH,GAAQ,GAEnBzB,EAAW6B,eACZ7B,EAAW8B,UAERL,GAWXzB,EAAW+B,KAAO,SAASjE,GACvB,QAAMkC,EAAW0B,QAAQ5D,KAGzBkC,EAAWgC,MAAMlE,UACVkC,EAAW0B,QAAQ5D,IACnB,IAIXkC,EAAW0B,QAAU,GAGrB1B,EAAWwB,MAAQ,WACVxB,EAAWiC,SAGhBjC,EAAWiC,QAAa,EACxBjC,EAAWkC,WAAalC,EAAWC,SAEnCD,EAAWI,QAAO,WACdJ,EAAWmC,WACXnC,EAAWkC,WAAalC,EAAWC,cAU3CD,EAAW4B,KAAO,SAAU9D,EAAIsE,GAC5B,IAAIvC,EACAwC,EAAQrC,EAAW0B,QAAQ5D,GAE/B,GAAKkC,EAAWC,SAAW,CACvB,GAAK,OAASoC,EAAMpC,OAChB,OAEJJ,EAAWwC,EAAMpC,YAEjBJ,EAAWwC,EAAMV,QAGrB,IAAIW,EAAS,WACTD,EAAME,KAAO,IAAIC,KACjBH,EAAMd,SAASkB,KAAKvB,IAGxB,GAAKkB,EAAS,CACV,IACIG,EADO,IAAIC,KACEH,EAAME,KAElB1C,EAAW0C,EACZF,EAAMK,MAAQC,YAAW,WACrBN,EAAMvE,GAAK8E,YAAYN,EAAQzC,GAC/ByC,MACDzC,EAAW0C,IAEdF,EAAMvE,GAAK8E,YAAYN,EAAQzC,GAC/ByC,UAIND,EAAMvE,GAAK8E,YAAYN,EAAQzC,IAKrCG,EAAWgC,MAAQ,SAAUlE,GACzB,IAAIuE,EAAQrC,EAAW0B,QAAQ5D,GAC/B+E,cAAcR,EAAMvE,IACpBgF,aAAaT,EAAMK,cACZL,EAAMvE,UACNuE,EAAMK,OAIjB1C,EAAWmC,SAAW,SAAUY,GAC5B,IAAIC,EAAYhD,EAAWC,SACvBgD,EAAYjD,EAAWkC,WAE3B,GAAMc,IAAaC,IAAgBD,GAAYC,EAC3C,IAAM,IAAIC,KAAKlD,EAAW0B,QACtB1B,EAAWgC,MAAMkB,GACjBlD,EAAW4B,KAAKsB,GAAIF,IAKzBhD,GAG2BrC,EAAOC,QACzCD,EAAOC,QAAUwD,EAAQ,EAAQ,SAEjCA,EAAQF,EAAOlB,YA/JtB,CAkKEkB,S,kCClKH,qCAmHA,MAAMvH,EAhHO,CACXC,KAAM,eACNuJ,WAAY,CACVC,SAAA,KAEFvJ,MAAO,CAILwJ,MAAO,CACLtJ,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKXqJ,QAAS,CACPxJ,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKXsJ,UAAW,CACTzJ,KAAMwE,OACNtE,UAAU,EACVC,QAAS,KAKXuJ,YAAa,CACX1J,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKXwJ,kBAAmB,CACjB3J,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKXyJ,kBAAmB,CACjB5J,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKX0J,oBAAqB,CACnB7J,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKX2J,oBAAqB,CACnB9J,KAAMuJ,OACNrJ,UAAU,EACVC,QAAS,MAKX4J,QAAS,CACP/J,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX6J,iBAAkB,CAChBhK,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX8J,aAAc,CACZjK,KAAM,CAACkK,MAAOX,OAAQY,QACtBjK,UAAU,EACVC,QAAS,IAAM,KAGnBiK,SAAU,CACR,SACE,OAAO7J,KAAK8J,yBAA2B9J,KAAKkJ,UAAY,MAE1D,2BACE,OAAOxJ,QAAQM,KAAKkJ,YAEtB,4BACE,OAAOxJ,QAAQM,KAAKoJ,mBAAqBpJ,KAAKqJ,oBAEhD,8BACE,OAAO3J,QAAQM,KAAKsJ,qBAAuBtJ,KAAKuJ,sBAElD,iBACE,MAAO,CAACvJ,KAAKwJ,QAAU,6BAA+B,mBAAoBxJ,KAAK0J,iBAgBnF,MAeM7J,EAAoB,IACxB,CAAEC,OAvBe,WAAa,IAAIiK,EAAI/J,KAASD,EAAGgK,EAAI9J,eAAmBE,EAAG4J,EAAI7J,MAAMC,IAAIJ,EAAG,OAAOI,EAAG,UAAU,CAAC6J,YAAY,UAAU3J,MAAM,CAC9I,6CAA8C0J,EAAIP,QAClD,cAAeO,EAAIP,UAClB,CAACrJ,EAAG,MAAM,CAACE,MAAM,CAAE,gCAAiC0J,EAAIP,QAAS,iBAAkBO,EAAIP,UAAW,CAAEO,EAAW,QAAE5J,EAAG,MAAM,CAAC6J,YAAY,gBAAgB3J,MAAM,CAAE,0BAA2B0J,EAAIN,kBAAmBnJ,MAAM,CAAC,IAAMyJ,EAAId,QAAQ,IAAM,GAAG,OAASc,EAAIE,UAAUF,EAAIG,OAAOH,EAAII,GAAG,KAAKhK,EAAG,MAAM,CAAC6J,YAAY,4CAA4C3J,MAAM0J,EAAIK,eAAe9J,MAAM,CAAC,cAAc,2BAA2B,CAACyJ,EAAIvJ,GAAG,SAAQ,WAAW,MAAO,CAACL,EAAG,KAAK,CAAC6J,YAAY,uDAAuD3J,MAAM0J,EAAIP,QAAU,KAAO,MAAM,CAACO,EAAII,GAAG,aAAaJ,EAAIM,GAAGN,EAAIhB,OAAO,kBAAiBgB,EAAII,GAAG,KAAMJ,EAAIZ,aAAeY,EAAIO,aAAanB,YAAahJ,EAAG,IAAI,CAACoK,IAAI,cAAcP,YAAY,kCAAkC,CAACD,EAAIvJ,GAAG,eAAc,WAAW,MAAO,CAACuJ,EAAII,GAAG,aAAaJ,EAAIM,GAAGN,EAAIZ,aAAa,iBAAgB,GAAGY,EAAIG,KAAKH,EAAII,GAAG,KAAKhK,EAAG,MAAM,CAAC6J,YAAY,+BAA+B3J,MAAM,CAAE,qBAAsB0J,EAAIP,UAAW,CAACO,EAAIvJ,GAAG,WAAU,WAAW,MAAO,CAAEuJ,EAA6B,0BAAE5J,EAAG,YAAY,CAAC6J,YAAY,UAAU3J,MAAM0J,EAAIP,QAAU,UAAY,UAAUlJ,MAAM,CAAC,QAAU,UAAU,KAAOyJ,EAAIX,oBAAoB,CAACW,EAAII,GAAGJ,EAAIM,GAAGN,EAAIV,sBAAsBU,EAAIG,KAAKH,EAAII,GAAG,KAAMJ,EAA+B,4BAAE5J,EAAG,YAAY,CAAC6J,YAAY,kBAAkB3J,MAAM,CAAE,YAAa0J,EAAIP,SAAUlJ,MAAM,CAAC,KAAOyJ,EAAIT,sBAAsB,CAACS,EAAII,GAAGJ,EAAIM,GAAGN,EAAIR,qBAAqB,gBAAgBQ,EAAIG,UAAS,IAAI,MAoBj7CzJ,gBAnBA,SAGEC,EAkB5BrB,OAhBuBqB,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,sBCzJd,SAAW8J,GACR,aAEA,IAAIC,GAAU,EAMVC,EAAO,CAaPC,UAAW,SAAU1D,GACjB,IAAI2D,EAAUF,EAAKnD,cACnB,IAAMqD,IAAYF,EAAK/E,SAEnB,OADAsB,IACO2D,EAGX,IAAIC,EAAWH,EAAK5E,QAAO,SAAUgF,EAAGC,GAC9BL,EAAK/E,WACP+E,EAAKM,OAAOH,GACZ5D,QAGR,OAAO4D,GAiBX/E,OAAQ,SAAUmB,GACd,IAAMyD,EAAKnD,cACP,OAAO,EAGX,IAAIJ,EADJsD,GAAU,EAIV,OAFAC,EAAKO,WAAW9D,GAAUF,EAC1ByD,EAAKlD,UACEL,GASX6D,OAAQ,SAAUxH,UACPkH,EAAKO,WAAWzH,IAe3B0H,kBAAmB,SAAUjE,GACzB,IAAI2D,EAAYF,EAAKnD,cAGrB,IAAMqD,GAFU,aAEcF,EAAKK,QAE/B,OADA9D,IACO2D,EAGX,IAAIC,EAAWH,EAAK5E,QAAO,SAAUgF,EAAGC,GAPxB,aAQMA,IACdL,EAAKM,OAAOH,GACZ5D,QAGR,OAAO4D,GAUXlF,OAAQ,WACJ,SAAU+E,EAAKS,KAAKxF,SAAU+E,EAAKS,KAAKC,eAe5CL,MAAO,WACH,OAAOL,EAAKS,KAAKE,iBACVX,EAAKS,KAAKG,uBACV,WAWX/D,YAAa,WACT,SAAUmD,EAAKS,KAAKE,kBACVX,EAAKS,KAAKG,wBAIxBH,KAAMI,UAAY,GAGlBN,WAAY,GAGZO,QAAS,SAAS/C,GACd,IAAIsC,EAAQL,EAAKK,QAEjB,IAAM,IAAInC,KAAK8B,EAAKO,WAChBP,EAAKO,WAAWrC,GAAGT,KAAKuC,EAAKS,KAAM1C,EAAOsC,IAKlDvD,QAAS,WACL,IAAKkD,EAAKe,MAAV,CAIA,IAAIhD,EAAQ,mBACPiC,EAAKS,KAAKG,wBACX7C,EAAQ,SAAWA,GAGvB,IAAIoC,EAAW,WACXH,EAAKc,QAAQE,MAAMhB,EAAMiB,YAExBjB,EAAKS,KAAKS,iBACXlB,EAAKS,KAAKS,iBAAiBnD,EAAOoC,GAElCH,EAAKS,KAAKU,YAAYpD,EAAOoC,GAEjCH,EAAKe,OAAQ,KAKiBpI,EAAOC,QACzCD,EAAOC,QAAUoH,EAEjBF,EAAO9E,WAAagF,EA3L3B,CA8LE1K,O;;;;;;;;;;GChLH4J,OAAOkC,eAAexI,EAAS,aAAc,CAAEyI,OAAO,IAItD,IAF0BC,EAEtBC,GAFsBD,EAEA,EAAQ,UAF2B,iBAAPA,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAI7G,SAASE,EAAQC,GAWf,OATED,EADoB,mBAAXE,QAAoD,iBAApBA,OAAOC,SACtC,SAAUF,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,mBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAOG,UAAY,gBAAkBJ,IAI9GA,GAGjB,SAASK,EAAmBC,GAC1B,OAGF,SAA4BA,GAC1B,GAAI9C,MAAM+C,QAAQD,GAAM,CACtB,IAAK,IAAI7D,EAAI,EAAG+D,EAAO,IAAIhD,MAAM8C,EAAIG,QAAShE,EAAI6D,EAAIG,OAAQhE,IAAK+D,EAAK/D,GAAK6D,EAAI7D,GAEjF,OAAO+D,GAPFE,CAAmBJ,IAW5B,SAA0BK,GACxB,GAAIV,OAAOC,YAAYzC,OAAOkD,IAAkD,uBAAzClD,OAAO2C,UAAUQ,SAAS5E,KAAK2E,GAAgC,OAAOnD,MAAMqD,KAAKF,GAZtFG,CAAiBR,IAerD,WACE,MAAM,IAAIjI,UAAU,mDAhBuC0I,GAmB7D,IAAIC,EAA8B,oBAAXvG,OAyBvB,SAASwG,EAAKjB,EAAKkB,GACjB,OAAOA,EAAKC,QAAO,SAAUC,EAAKC,GAKhC,OAJIrB,EAAIsB,eAAeD,KACrBD,EAAIC,GAAOrB,EAAIqB,IAGVD,IACN,IAGL,IAAIG,EAAa,GACbC,EAAU,GACVC,EAAU,GAoHVC,EAAW,IAnHA5B,EAAI6B,OAAO,CACxBC,KAAM,WACJ,MAAO,CACLL,WAAYA,EACZC,QAASA,EACTC,QAASA,EACTI,eAAgBb,IAGpBc,QAAS,CACPC,KAAM,SAAcC,GAClB,GAAKhB,EAAL,CACA,IAAIiB,EAAKD,EAAUC,GACfpB,EAAOmB,EAAUnB,KACjBqB,EAAaF,EAAUE,WACvBC,EAAmBH,EAAUI,MAC7BA,OAA6B,IAArBD,EAA8BE,IAAWF,EACrD,GAAKF,GAAOpB,GAASqB,EAArB,CACA,IAvDUI,EAuDNC,EAAe,CACjBN,GAAIA,EACJpB,KAAMA,EACNqB,YA1DQI,EA0DWJ,EAzDrB1E,MAAM+C,QAAQ+B,IAA2B,WAAlBvC,EAAQuC,GAC1B7E,OAAO+E,OAAOF,GAGhBA,GAsDDF,MAAOA,IAIiB,IAFf3E,OAAOyD,KAAKrN,KAAK0N,YAEnBkB,QAAQR,IACfnC,EAAI4C,IAAI7O,KAAK0N,WAAYU,EAAI,IAG/B,IApDqBU,EAoDjBC,EAAe/O,KAAKgP,oBAAoBN,GAExCO,EAAgBjP,KAAK0N,WAAWU,GAAIc,MAAM,IAExB,IAAlBH,EACFE,EAAcE,KAAKT,GAEnBO,EAAcF,GAAgBL,EAGhC1O,KAAK0N,WAAWU,IA9DKU,EA8D2B,SAAUM,EAAGC,GAC3D,OAAOD,EAAEb,MAAQc,EAAEd,OADYU,EA7DxBrK,KAAI,SAAU0K,EAAGC,GAC5B,MAAO,CAACA,EAAKD,MACZE,MAAK,SAAUJ,EAAGC,GACnB,OAAOP,EAAUM,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,MACxCzK,KAAI,SAAU6K,GACf,OAAOA,EAAE,UA4DTC,MAAO,SAAevB,GACpB,IAAIwB,EAAQhE,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,IAAmBA,UAAU,GACvEyC,EAAKD,EAAUC,GACfpB,EAAOmB,EAAUnB,KACrB,GAAKoB,IAAOpB,IAAkB,IAAV2C,IAEf3P,KAAK0N,WAAWU,GAIrB,GAAIuB,EACF3P,KAAK0N,WAAWU,GAAM,OACjB,CACL,IAAIwB,EAAQ5P,KAAKgP,oBAAoBb,GAErC,GAAIyB,GAAS,EAAG,CAEd,IAAIX,EAAgBjP,KAAK0N,WAAWU,GAAIc,MAAM,GAC9CD,EAAcY,OAAOD,EAAO,GAC5B5P,KAAK0N,WAAWU,GAAMa,KAI5Ba,eAAgB,SAAwBC,EAAQC,EAAIL,GAC7CxC,IAEDnN,KAAKgO,iBAAmB2B,GAAS3P,KAAK2N,QAAQoC,IAChDE,QAAQC,KAAK,wBAAwBC,OAAOJ,EAAQ,oBAGtD/P,KAAKoQ,KAAKpQ,KAAK2N,QAASoC,EAAQnG,OAAO+E,OAAO,CAACqB,OAEjDK,iBAAkB,SAA0BN,GAC1C/P,KAAKsQ,QAAQtQ,KAAK2N,QAASoC,IAE7BQ,eAAgB,SAAwBC,EAAQR,EAAIL,GAC7CxC,IAEDnN,KAAKgO,iBAAmB2B,GAAS3P,KAAK4N,QAAQ4C,IAChDP,QAAQC,KAAK,wBAAwBC,OAAOK,EAAQ,oBAGtDxQ,KAAKoQ,KAAKpQ,KAAK4N,QAAS4C,EAAQ5G,OAAO+E,OAAO,CAACqB,OAEjDS,iBAAkB,SAA0BD,GAC1CxQ,KAAKsQ,QAAQtQ,KAAK4N,QAAS4C,IAE7BE,UAAW,SAAmBtC,GAC5B,SAAUpO,KAAK2N,QAAQS,KAAOpO,KAAK2N,QAAQS,GAAI,KAEjDuC,UAAW,SAAmBvC,GAC5B,SAAUpO,KAAK4N,QAAQQ,KAAOpO,KAAK4N,QAAQQ,GAAI,KAEjDwC,cAAe,SAAuBxC,GACpC,QAASpO,KAAK0N,WAAWU,MAASpO,KAAK0N,WAAWU,GAAIxB,QAGxDoC,oBAAqB,SAA6B6B,GAChD,IAAIzC,EAAKyC,EAAKzC,GACVpB,EAAO6D,EAAK7D,KAEhB,IAAK,IAAIpE,KAAK5I,KAAK0N,WAAWU,GAC5B,GAAIpO,KAAK0N,WAAWU,GAAIxF,GAAGoE,OAASA,EAClC,OAAQpE,EAIZ,OAAQ,MAIC,CAAa8E,GAExBoD,EAAM,EACNC,EAAS9E,EAAI6B,OAAO,CACtBxO,KAAM,SACNC,MAAO,CACLyR,SAAU,CACRvR,KAAMC,SAERJ,KAAM,CACJG,KAAMuJ,OACNpJ,QAAS,WACP,OAAOoJ,OAAO8H,OAGlBvC,MAAO,CACL9O,KAAMwE,OACNrE,QAAS,GAEXqR,KAAM,CACJxR,KAAMC,SAERwR,UAAW,CACTzR,KAAMmK,OACNhK,QAAS,WACP,MAAO,KAGXuR,IAAK,CACH1R,KAAMuJ,OACNpJ,QAAS,OAEXwO,GAAI,CACF3O,KAAMuJ,OACNpJ,QAAS,WACP,OAAOoJ,OAAOoI,KAAKC,MAAsB,IAAhBD,KAAKE,cAIpCC,QAAS,WACP,IAAIC,EAAQxR,KAEZA,KAAKyR,WAAU,WACb5D,EAAS0C,eAAeiB,EAAMlS,KAAMkS,OAGxCE,QAAS,WACF1R,KAAKgR,UACRhR,KAAK2R,cAGTC,QAAS,WACH5R,KAAKgR,SACPhR,KAAK6R,QAEL7R,KAAK2R,cAGTG,cAAe,WACbjE,EAAS4C,iBAAiBzQ,KAAKV,MAC/BU,KAAK6R,SAEPE,MAAO,CACL3D,GAAI,SAAY4D,EAAUC,GACxBA,GAAYA,IAAaD,GAAYhS,KAAK6R,MAAMI,GAChDjS,KAAK2R,eAGT1D,QAAS,CACP4D,MAAO,SAAe9B,GACpB,IAAImC,EAAS,CACXlF,KAAMhN,KAAKV,KACX8O,GAAI2B,GAAU/P,KAAKoO,IAErBP,EAAS6B,MAAMwC,IAEjBC,eAAgB,WACd,OAAOnS,KAAKsK,aAAa1K,QAAU,CAACI,KAAKsK,aAAa1K,SAAWI,KAAKoS,OAAOxS,SAE/EyS,qBAAsB,SAA8BC,GAClD,MAA2B,mBAAbA,EAA0BA,EAAStS,KAAKkR,WAAaoB,GAErEX,WAAY,WACV,IAAIY,EAAcvS,KAAKmS,iBAEvB,GAAII,EAAa,CACf,IAAIpE,EAAY,CACdnB,KAAMhN,KAAKV,KACX8O,GAAIpO,KAAKoO,GACTC,WAAY7B,EAAmB+F,GAC/BhE,MAAOvO,KAAKuO,OAEdV,EAASK,KAAKC,QAEdnO,KAAK6R,UAIX/R,OAAQ,SAAgB0S,GACtB,IAAIF,EAAWtS,KAAKoS,OAAOxS,SAAWI,KAAKsK,aAAa1K,SAAW,GAC/D6S,EAAMzS,KAAKmR,IAEf,OAAImB,GAAYtS,KAAKgR,SACZsB,EAAS1F,QAAU,GAAK5M,KAAKiR,KAAOjR,KAAKqS,qBAAqBC,GAAU,GAAKE,EAAEC,EAAK,CAACzS,KAAKqS,qBAAqBC,KAE/GtS,KAAKiR,KAAOuB,IAAMA,EAAEC,EAAK,CAC9BpS,MAAO,CACL,YAAY,GAEdqS,MAAO,CACLC,QAAS,QAEXnF,IAAK,4BAMToF,EAAe3G,EAAI6B,OAAO,CAC5BxO,KAAM,eACNC,MAAO,CACLsT,SAAU,CACRpT,KAAMC,QACNE,SAAS,GAEXN,KAAM,CACJG,KAAMuJ,OACNrJ,UAAU,GAEZsR,KAAM,CACJxR,KAAMC,QACNE,SAAS,GAEXsR,UAAW,CACTzR,KAAMmK,OACNhK,QAAS,WACP,MAAO,KAGXuR,IAAK,CACH1R,KAAMuJ,OACNpJ,QAAS,OAEXkT,WAAY,CACVrT,KAAM,CAACuJ,OAAQY,OAAQmJ,YAG3BhF,KAAM,WACJ,MAAO,CACLL,WAAYG,EAASH,WACrBsF,aAAa,IAGjBzB,QAAS,WACP,IAAIC,EAAQxR,KAEZA,KAAKyR,WAAU,WACb5D,EAASiC,eAAe0B,EAAMlS,KAAMkS,OAGxCO,MAAO,CACLkB,cAAe,WACbjT,KAAKkT,MAAM,SAAUlT,KAAKsS,WAAW1F,OAAS,IAEhDtN,KAAM,SAAc6T,EAAQC,GAK1BvF,EAASwC,iBAAiB+C,GAC1BvF,EAASiC,eAAeqD,EAAQnT,QAGpC0R,QAAS,WACP,IAAI2B,EAASrT,KAETA,KAAK8S,YACP9S,KAAKyR,WAAU,WAEb4B,EAAOL,aAAc,MAI3BlB,cAAe,WACbjE,EAASwC,iBAAiBrQ,KAAKV,OAEjCuK,SAAU,CACRoJ,cAAe,WACb,IAAIvF,EAAa1N,KAAK0N,WAAW1N,KAAKV,OAAS,GAE/C,OAAIU,KAAK6S,SACAnF,EAGoB,IAAtBA,EAAWd,OAAe,GAAK,CAACc,EAAWA,EAAWd,OAAS,KAExEyB,WAAY,WACV,OAtVN,SAA2BX,GACzB,IAAIwD,EAAYvF,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAAO+B,EAAWJ,QAAO,SAAUe,EAAYF,GAC7C,IAAImF,EAAOnF,EAAUE,WAAW,GAC5BkF,EAAgC,mBAATD,EAAsBA,EAAKpC,GAAa/C,EAAUE,WAC7E,OAAOA,EAAW8B,OAAOoD,KACxB,IAgVQC,CAAkBxT,KAAKiT,cAAejT,KAAKkR,aAGtDjD,QAAS,CAEPqE,SAAU,WACR,OAAkC,IAA3BtS,KAAKqO,WAAWzB,OAAe5M,KAAKqO,WAAarO,KAAKsK,aAAa1K,QAAUI,KAAKsK,aAAa1K,QAAQI,KAAKkR,WAAalR,KAAKoS,OAAOxS,SAAW,IAGzJ6T,UAAW,WACT,IAAIA,EAAYzT,KAAKiR,OAASjR,KAAK8S,WAMnC,OAJIW,GAAazT,KAAKsS,WAAW1F,OAAS,GACxCqD,QAAQC,KAAK,uFAGRuD,IAGX3T,OAAQ,SAAgB0S,GACtB,IAAIiB,EAAYzT,KAAKyT,YACjBnB,EAAWtS,KAAKsS,WAChBG,EAAMzS,KAAK8S,YAAc9S,KAAKmR,IAClC,OAAOsC,EAAYnB,EAAS,GAAKtS,KAAKiR,OAASwB,EAAMD,IAAMA,EAAEC,EAAK,CAChElT,MAAO,CAEL4R,IAAKnR,KAAK8S,YAAc9S,KAAKmR,IAAMnR,KAAKmR,SAAMzQ,GAEhDL,MAAO,CACL,qBAAqB,IAEtBiS,MAIHoB,EAAQ,EACRC,EAAc,CAAC,WAAY,OAAQ,QAAS,OAAQ,YAAa,MAAO,MACxEC,EAAc,CAAC,WAAY,cAC3BC,EAAiB5H,EAAI6B,OAAO,CAC9BxO,KAAM,iBACNwU,cAAc,EACdvU,MAAO,CACL8E,OAAQ,CACN5E,KAAM,CAACC,QAASsJ,SAElB+K,KAAM,CACJtU,KAAMC,SAERsU,QAAS,CACPvU,KAAMuJ,OACNrJ,UAAU,GAGZqR,SAAU,CACRvR,KAAMC,SAGRJ,KAAM,CACJG,KAAMuJ,OACNpJ,QAAS,WACP,MAAO,WAAaoJ,OAAO0K,OAG/BnF,MAAO,CACL9O,KAAMwE,OACNrE,QAAS,GAEXqR,KAAM,CACJxR,KAAMC,SAERwR,UAAW,CACTzR,KAAMmK,OACNhK,QAAS,WACP,MAAO,KAGXuR,IAAK,CACH1R,KAAMuJ,OACNpJ,QAAS,OAGXwO,GAAI,CACF3O,KAAMuJ,OACNpJ,QAAS,WACP,OAAOoJ,OAAOoI,KAAKC,MAAsB,IAAhBD,KAAKE,aAIlCuB,SAAU,CACRpT,KAAMC,QACNE,SAAS,GAEXqU,WAAY,CACVxU,KAAMC,SAERwU,gBAAiB,CACfzU,KAAMmK,OACNhK,QAAS,WACP,MAAO,KAGXuU,UAAW,CACT1U,KAAMuJ,OACNpJ,QAAS,OAEXkT,WAAY,CACVrT,KAAM,CAACuJ,OAAQY,OAAQmJ,YAG3BxB,QAAS,WACP,GAAwB,oBAAbhG,SAAX,CACA,IAAI6I,EAAK7I,SAAS8I,cAAcrU,KAAKgU,SAErC,GAAKI,EAAL,CAKA,IAAI7U,EAAQS,KAAKsU,OAEjB,GAAIzG,EAASF,QAAQpO,EAAMD,MACrBC,EAAMwU,KACR9D,QAAQC,KAAK,wBAAwBC,OAAO5Q,EAAMD,KAAM,uEAExDU,KAAKuU,aAAe1G,EAASF,QAAQpO,EAAMD,UAJ/C,CAUA,IAAI+E,EAAS9E,EAAM8E,OAEnB,GAAIA,EAAQ,CACV,IAAI5E,EAAyB,iBAAX4E,EAAsBA,EAAS,MAC7CmQ,EAAUjJ,SAASkJ,cAAchV,GACrC2U,EAAGM,YAAYF,GACfJ,EAAKI,EAKP,IAAIG,EAASvH,EAAKpN,KAAKsU,OAAQV,GAE/Be,EAAO1D,KAAOjR,KAAKiU,WACnBU,EAAOxD,IAAMnR,KAAKmU,UAClBQ,EAAOzD,UAAYlR,KAAKkU,gBACxBS,EAAOrV,KAAOU,KAAKoO,GACnBpO,KAAKuU,aAAe,IAAI3B,EAAa,CACnCwB,GAAIA,EACJQ,OAAQ5U,KAAK6U,SAAW7U,KACxB8U,UAAWH,UApCX1E,QAAQ8E,MAAM,8BAA8B5E,OAAOnQ,KAAKgU,QAAS,8BAuCrElC,cAAe,WACb,IAAI/B,EAAS/P,KAAKuU,aAElB,GAAIvU,KAAKqE,OAAQ,CACf,IAAI+P,EAAKrE,EAAOiF,IAChBZ,EAAGa,WAAWC,YAAYd,GAG5BrE,EAAOoF,YAETrV,OAAQ,SAAgB0S,GACtB,IAAKxS,KAAKuU,aAER,OADAtE,QAAQC,KAAK,sCACNsC,IAIT,IAAKxS,KAAKsK,aAAa8K,OAAQ,CAC7B,IAAI7V,EAAQ6N,EAAKpN,KAAKsU,OAAQX,GAC9B,OAAOnB,EAAEzB,EAAQ,CACfxR,MAAOA,EACPe,MAAON,KAAKqV,OACZC,GAAItV,KAAKO,WACTgV,YAAavV,KAAKsK,cACjBtK,KAAKoS,OAAOxS,SAIjB,IAAI4V,EAAUxV,KAAKsK,aAAa8K,OAAO,CACrChH,GAAIpO,KAAKoO,KAQX,OAJIzE,MAAM+C,QAAQ8I,KAChBA,EAAUA,EAAQ,IAGfA,GAAgBhD,OAYzB,IAAI5C,EAAQ,CACV9I,QARF,SAAiB2O,GACf,IAAIC,EAAU/J,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,GAClF8J,EAAOE,UAAUD,EAAQE,YAAc,SAAU7E,GACjD0E,EAAOE,UAAUD,EAAQG,kBAAoB,eAAgBjD,GAC7D6C,EAAOE,UAAUD,EAAQI,oBAAsB,iBAAkBjC,KAOnEvQ,EAAQ1D,QAAUgQ,EAClBtM,EAAQyN,OAASA,EACjBzN,EAAQsP,aAAeA,EACvBtP,EAAQuQ,eAAiBA,EACzBvQ,EAAQyS,SAAWlI,G,maCvlBnB,MAAMmI,EAAiC,YAAO,CAC5CC,OAAQ,CAAC,KACTlI,KAAI,KACK,CAELzO,KAAM,cAGV2O,QAAS,CACP,aAAamG,GAMX,YAAU,KACR,YAAYA,EAAOpU,KAAKV,KAAR,iBAItB,OAAOkT,GACL,OAAOA,EAAE,mBAAoB,CAC3BjT,MAAO,CACL4R,IAAK,MACL7R,KAAMU,KAAKV,MAEbgW,GAAI,CACFY,WAAYlW,KAAKmW,eAElBnW,KAAKoW,oBAMN,EAAQ,YAAsB,CAElCC,WAAY,YAAS,KACrBC,SAAU,YAAS,KACnBhX,KAAM,YAAS,SAAkBoB,GAAW,GAG5C6V,KAAM,YAAS,MACd,KAKGC,EAAwB,YAAO,CACnClX,KAAM,IACN2W,OAAQ,CAAC,KACT1W,MAAK,EACL,OACE,MAAO,CAELkX,UAAU,EACVC,MAAM,EAENC,WAAY3W,KAAKV,OAGrB,cACE,MAAM,KACJA,GACEU,KACJA,KAAK2W,WAAarX,EAGd,WAASoR,UAAUpR,IACrB,OAAA4Q,EAAA,GAAK,kCAAkC5Q,qCAAyC,KAChFU,KAAK0W,MAAO,GAEZ1W,KAAKyW,UAAW,GAGpB,gBAGMzW,KAAKyW,UACPzW,KAAK4W,WAAW,YAAiB,IAAc,KAAuB5W,KAAKV,OAG/E,YAEE,MAAM,IACJ0V,GACEhV,KAEAgV,GAAOA,EAAIC,YACbD,EAAIC,WAAWC,YAAYF,IAG/B,OAAOxC,GACL,IAAIqE,EAAWrE,EAAE,MAAO,CACtBnS,MAAO,CAAC,YAAa,CACnB,iBAAkBL,KAAK0W,SAG3B,GAAI1W,KAAKyW,SAAU,CACjB,MAAMK,EAAUtE,EAAE,eAAc,CAC9BxI,YAAa,iBACbzK,MAAO,CACLD,KAAMU,KAAK2W,WACX9D,UAAU,EACV1B,IAAK,MACLF,MAAM,EAEN6B,WAAYkD,KAGhBa,EAAWrE,EAAE,MAAO,CAClBxI,YAAa,YACb3J,MAAO,CAACL,KAAK2W,YACbrW,MAAO,CACLkD,GAAIxD,KAAK2W,WAETJ,KAAMvW,KAAKuW,MAAQ,KACnB,YAAavW,KAAKsW,SAClB,cAAetW,KAAKqW,aAErB,CAACS,IAEN,OAAOD,MC7GTE,MAAOC,EACPzX,MAAO0X,EACPC,KAAMC,EACN1O,MAAO2O,GACL,YAAe,UAAW,CAC5B3X,KAAM,IACN4X,cAAc,EACd5O,MAAO,MAMH6O,EAAY,YAAK,IAAS,CAAC,OAAQ,OACnC,EAAQ,YAAsB,YAAS,IACxC,OACAL,KACAK,EACHC,YAAa,YAAS,KAAmB,GACzCC,cAAe,YAAS,IAAyB,KACjDC,UAAW,YAAS,KACpBC,YAAa,YAAS,KACtBC,UAAW,YAAS,IAAkB,UAEtCC,SAAU,YAAS,KAAmB,GACtCC,WAAY,YAAS,KAAmB,GACxCC,OAAQ,YAAS,KAAmB,GACpCC,aAAc,YAAS,KAAmB,GAC1CC,MAAO,YAAS,KAAmB,GAEnCC,OAAQ,YAAS,KAAmB,GACpClP,MAAO,YAAS,KAChBmP,WAAY,YAAS,KACrBC,QAAS,YAAS,IAAkB,uBACpCC,QAAS,YAAS,OAChB,KAKEC,EAAsB,YAAO,CACjC/Y,KAAM,IACN2W,OAAQ,CAAC3V,EAAA,EAAY,IAAS0W,EAAY,IAAmB,IAAoB,KACjFlD,cAAc,EACdvU,MAAK,EACLwO,KAAI,KACK,CACLuK,WAAW,EACX7B,UAAU,EACV8B,WAAW,EACXC,iBAAiB,EACjBC,UAAU,EACVlK,MAAO,EACPmK,eAAgB,EAChBC,cAAe,IAGnB9O,SAAU,CACR,eACE,MAAM,YACJ0N,EAAW,QACXa,GACEpY,KACJ,MAAO,CACL,gBAAiBA,KAAKgY,MACtB,iBAAkBT,EAClB,mBAAoBA,EACpB,CAAC,WAAWa,GAAYA,IAG5B,YACE,MAAM,KACJQ,GACE5Y,KACJ,MAAO,CACL4Y,SAGJ,mBAEE,OAAO,OAAAC,EAAA,GAAQ,YAAU7Y,KAAKwX,cAAe,GAvE9B,MAyEjB,kBACE,OAAOxO,OAAOhJ,KAAKmY,UAErB,qBACE,MAAO,CACLW,YAAa9Y,KAAK+Y,cAClB7C,WAAYlW,KAAKmW,aACjB6C,YAAahZ,KAAKiZ,cAClBC,WAAYlZ,KAAKmZ,eAGrB,gBACE,MAAO,IACFnZ,KAAKoZ,QACR5V,GAAIxD,KAAKqZ,SACTC,SAAU,OAIhBvH,MAAO,CACL,CAACoF,GAAiBnF,GAChBhS,KAAKgS,EAAW,OAAS,WAE3B,UAAUA,GACJA,IAAahS,KAAKmX,IACpBnX,KAAKkT,MAAMkE,EAAkBpF,IAIjC,UAEEhS,KAAKyR,UAAUzR,KAAKuZ,gBAGtB,OAAOvH,GAGDA,GAAYhS,KAAKuY,WACnBvY,KAAKuZ,kBAIX,UAEEvZ,KAAKwZ,eAAiB,MAExB,UACExZ,KAAKsY,WAAY,EACjBtY,KAAKyR,UAAU,KACTzR,KAAKmX,IACP,YAAU,KACRnX,KAAKyZ,WAKXzZ,KAAK0Z,aAAa,YAAuB,IAAY,KAAkBlW,IACjEA,IAAOxD,KAAKqZ,UACdrZ,KAAKyZ,SAITzZ,KAAK0Z,aAAa,YAAuB,IAAY,KAAkBlW,IAChEA,GAAMA,IAAOxD,KAAKqZ,UACrBrZ,KAAK4Y,SAKT5Y,KAAK0Z,aAAa,YAAiB,IAAc,KAAuBvB,IAElEA,IAAYnY,KAAK2Z,iBACnB3Z,KAAK4Y,UAIX,gBACE5Y,KAAK4Z,qBAEP3L,QAAS,CACP,OACE,IAAKjO,KAAKuY,UAAW,CACnBvY,KAAKuZ,gBACL,MAAMM,EAAY7Z,KAAK8Z,WAAW,KAClC9Z,KAAK+Z,UAAUF,GACf7Z,KAAK0Y,eAAiB1Y,KAAK2Y,cAAgB,EAC3C3Y,KAAKuO,MAAQrG,KAAK8R,OAASha,KAAKuX,YAAc,GAAK,GACnDvX,KAAKyY,UAAW,EAChBzY,KAAKyW,UAAW,EAChBzW,KAAKyR,UAAU,KAGb,YAAU,KACRzR,KAAKuY,WAAY,QAKzB,OACE,GAAIvY,KAAKuY,UAAW,CAClB,MAAM0B,EAAYja,KAAK8Z,WAAW,KAClC9Z,KAAK+Z,UAAUE,GACfja,KAAKka,iBAAgB,GACrBla,KAAK0Y,eAAiB1Y,KAAK2Y,cAAgB,EAC3C3Y,KAAK4Z,oBACL5Z,KAAKyY,UAAW,EAChB,YAAU,KACRzY,KAAKuY,WAAY,MAIvB,WAAW9Y,GACT,IAAIiW,EAAU/J,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,GAClF,OAAO,IAAI,IAAQlM,EAAM,CACvB0a,YAAY,EACZpK,OAAQ/P,KAAKgV,KAAO,KACpBoF,cAAe,QACZ1E,EACH2E,UAAWra,KACXsa,YAAata,KAAKqZ,YAGtB,UAAUkB,GACR,MAAM,KACJ9a,GACE8a,EACJva,KAAK4W,WAAW,YAAiB,IAAYnX,GAAO8a,GACpDva,KAAKkT,MAAMzT,EAAM8a,IAEnB,gBACE,GAAIva,KAAKiY,OACP,OAEF,MAAM,gBACJ0B,GACE3Z,KACJ,IAAK,WAAS0Q,UAAUiJ,GAAkB,CACxC,MAAMa,EAAMjP,SAASkJ,cAAc,OACnClJ,SAASkP,KAAK/F,YAAY8F,GACV,YAAwBxa,KAAK0a,YAAalE,EAAU,CAClE1B,UAAW,CACTxV,KAAMqa,KAGFgB,OAAOH,KAGnB,oBACExa,KAAK4Z,oBACA5Z,KAAK6X,aACR7X,KAAKwZ,eAAiBnR,WAAWrI,KAAK4Y,KAAM5Y,KAAK2Y,eAAiB3Y,KAAK4a,kBACvE5a,KAAK0Y,eAAiBxQ,KAAK8R,MAC3Bha,KAAK2Y,cAAgB,IAGzB,oBACEnQ,aAAaxI,KAAKwZ,gBAClBxZ,KAAKwZ,eAAiB,MAExB,gBAAgBlE,GACd,MAAMlB,EAAKpU,KAAK6a,MAAM,WACtB,YAAWvF,EAAIlB,EAAI,aAAcpU,KAAK8a,QAAS,KAC/C,YAAWxF,EAAIlB,EAAI,aAAcpU,KAAK+a,UAAW,MAEnD,UAEE,GAAI/a,KAAK6X,YAAc7X,KAAK+X,eAAiB/X,KAAKwZ,gBAAkBxZ,KAAK2Y,cACvE,OAEF,MAAMqC,EAAS9S,KAAK8R,MAAQha,KAAK0Y,eAC7BsC,EAAS,IACXhb,KAAK4Z,oBACL5Z,KAAK2Y,cAAgB,OAAAE,EAAA,GAAQ7Y,KAAK4a,iBAAmBI,EArPxC,OAwPjB,YAEMhb,KAAK6X,YAAc7X,KAAK+X,eAAiB/X,KAAK2Y,cAChD3Y,KAAK2Y,cAAgB3Y,KAAK0Y,eAAiB,EAG7C1Y,KAAKib,qBAEP,cAGEjb,KAAKyR,UAAU,KACb,YAAU,KACRzR,KAAK4Y,YAIX,gBACE5Y,KAAKwY,iBAAkB,GAEzB,eACExY,KAAKwY,iBAAkB,EACvB,MAAM0C,EAAclb,KAAK8Z,WAAW,KACpC9Z,KAAK+Z,UAAUmB,GACflb,KAAKib,oBACLjb,KAAKka,iBAAgB,IAEvB,gBACEla,KAAKwY,iBAAkB,GAEzB,eACExY,KAAKwY,iBAAkB,EACvBxY,KAAKuO,MAAQ,EACbvO,KAAK2Y,cAAgB3Y,KAAK0Y,eAAiB,EAC3C,MAAMwC,EAAclb,KAAK8Z,WAAW,KACpC9Z,KAAK+Z,UAAUmB,GACflb,KAAKyW,UAAW,GAGlB,UAAUjE,GACR,MAAM,UACJ2I,GACEnb,KACEob,EAAO,YAAOpb,MACdqb,EAAiB,GACjBC,EAAStb,KAAKoW,cAAc,IAAuB+E,GACrDG,GACFD,EAAelM,KAAKmM,GAEtB,IAAIC,EAAU/I,IACV6I,EAAezO,OAAS,IAC1B2O,EAAU/I,EAAExS,KAAK2X,UAAW,CAC1B3N,YAAa,eACb3J,MAAOL,KAAK0X,aACX2D,IAEL,MAAMG,EAAQhJ,EAAE4I,EAAO,IAAQ,MAAO,CACpCpR,YAAa,aACb3J,MAAOL,KAAKyX,UACZlY,MAAO6b,EAAO,YAAW9D,EAAWtX,MAAQ,GAC5CsV,GAAI8F,EAAO,CACTK,MAAOzb,KAAK0b,aACV,IACH1b,KAAKoW,cAAc,IAAmB+E,IACzC,OAAO3I,EAAE,MAAO,CACdxI,YAAa,QACb3J,MAAOL,KAAKkY,WACZ5X,MAAON,KAAK2b,cACZnO,IAAK,SAASxN,KAAK,KACnBuK,IAAK,SACJ,CAACgR,EAASC,MAGjB,OAAOhJ,GACL,IAAKxS,KAAKyW,WAAazW,KAAKsY,UAC1B,OAAO9F,IAET,MAAM,MACJjE,EACA0J,OAAQ2D,EAAQ,SAChBnD,EAAQ,SACRb,GACE5X,KACEV,EAAO,WAAWU,KAAK,KACvB6b,EAASrJ,EAAE,MAAO,CACtBxI,YAAa,UACb3J,MAAOL,KAAK8b,aACZxb,MAAO,IAGDsb,EAAW,GAAK5b,KAAK+b,iBACzBvY,GAAIxD,KAAKqZ,OAAO,gBAChB9C,KAAMkC,EAAW,KAAOb,EAAW,SAAW,QAC9C,YAAaa,EAAW,KAAOb,EAAW,SAAW,YACrD,cAAea,EAAW,KAAO,QAEnCjL,IAAKlO,EACLiL,IAAK,WACJ,CAACiI,EAAE,IAAc,CAClBjT,MAAO,CACLuY,OAAQ9X,KAAK8X,QAEfxC,GAAItV,KAAKgc,oBACR,CAAChc,KAAKuY,UAAYvY,KAAKic,UAAUzJ,GAAKA,QACzC,OAAOA,EAAE,SAAQ,CACfjT,MAAO,CACLD,OACA8O,GAAIpO,KAAK2Z,gBACTpL,QACA0C,MAAM,EACND,SAAU4K,IAEX,CAACC,OCjXFK,EAAa,CAAC,QAAS,YAAK,YAAK,EAAO,CAAC,SAAU,cAGnDC,EAAe,CACnBC,aAAc,UACdrT,MAAO,eAMHsT,EAAgB3G,GACbwG,EAAW5O,OAAO,CAACgP,EAAM9O,KACzB,YAAYkI,EAAQlI,MACvB8O,EAAK9O,GAAOkI,EAAQlI,IAEf8O,GACN,IAsJCC,EAA6B,YAAc,CAC/CC,QAAS,CACPC,OApJWxQ,IAIb,MAAMyQ,EAAazQ,EAAI6B,OAAO,CAC5BxO,KAAM,IACNqd,QAAStE,EACTpC,OAAQ,CAAC,KACT,YAEE,MAAM,IACJjB,GACEhV,KACAgV,GAAOA,EAAIC,YACbD,EAAIC,WAAWC,YAAYF,IAG/B,UAEE,MAAM4H,EAAgB,KAEpB5c,KAAKuY,WAAY,EACjBvY,KAAKyW,UAAW,EAChBzW,KAAKyR,UAAU,KACbzR,KAAKyR,UAAU,KAGb,YAAU,KACRzR,KAAKmV,kBAMbnV,KAAK6c,SAASC,MAAM,IAA2BF,GAE/C5c,KAAK8c,MAAM,IAAmBF,GAE9B5c,KAAK0Z,aAAa,YAAiB,IAAc,KAAuBvB,IAElEA,IAAYnY,KAAKmY,SACnByE,SAuCR,MAAMG,EACJ,YAAY/M,GAEV,YAAOhQ,KAAM,CACX+J,IAAKiG,EACLgN,MAAO,YAAahN,KAGtB,YAAiBhQ,KAAM,CACrB+J,IAAK,cACLiT,MAAO,gBAOX,MAAMxH,GACJ,IAAIE,EAAU/J,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,GAC7E6J,IAAW,OAAAtF,EAAA,GA/HJ,aA4EE,EAAC3Q,EAAOqV,KACxB,GAAI,OAAA1E,EAAA,GA7EU,YA+EZ,OAGF,MAAM+M,EAAQ,YAAwBrI,EAAQ8H,EAAY,CAGxD5H,UAAW,IACNuH,EAAc,YAAmB,SAEjC,YAAK9c,EAAO,YAAK4c,IAEpBlE,QAAQ,EACR5Q,SAAS,KAIb,YAAK8U,GAAce,QAAQhG,IACzB,MAAMnL,EAAQxM,EAAM2X,GACf,YAAYnL,KACfkR,EAAM7K,OAAO+J,EAAajF,IAAS,YAAOnL,MAI9C,MAAMyO,EAAMjP,SAASkJ,cAAc,OACnClJ,SAASkP,KAAK/F,YAAY8F,GAC1ByC,EAAMtC,OAAOH,IA2BXyB,CAAU,IACLI,EAAc3G,GACjB0G,aAAc5G,GACbxV,KAAK+J,KAIV,KAAKvG,GACCA,GACFxD,KAAKgd,MAAM9J,MAAM,YAAuB,IAAY,KAAkB1P,GAK1E,OACE,IAAIA,EAAKmI,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,KAC7E3L,KAAKgd,MAAM9J,MAAM,YAAuB,IAAY,KAAkB1P,IAK1EyI,EAAI8K,MAAM,CACR,eAGE/W,KAAmB,WAAI,IAAI+c,EAAQ/c,SAMlC,YAAeiM,EAAIM,UAlKR,aAmKd,YAAeN,EAAIM,UAnKL,WAmK2B,CACvC,MAKE,OAHKvM,MAASA,KAAmB,YAC/B,OAAAkQ,EAAA,GAAK,kEAAuE,KAEvElQ,KAAmB,kBCvL5Bmd,EAA2B,YAAc,CAC7CtU,WAAY,CACVwP,SACA7B,YAGFgG,QAAS,CACPD,mB,gBCTJ,MAAMa,EAAkB,CACtB5F,cAAe,IACfU,WAAY,WACZN,UAAU,EACVO,QAAS,yBAEX,IAAIkF,EAAc,EAClB,SAASC,EAAY9K,EAAGyK,EAAOvH,GAC7B,MAAM5Q,EAAQ,CAAC0N,EAAE,IAAa,CAC5BnS,MAAO,CAAC,yBACRiV,GAAI,CACFmG,MAAOwB,EAAMrE,SAYjB,OATIlD,EAAQ6H,QACVzY,EAAM+K,OAAO,EAAG,EAAG2C,EAAE,IAAK,CACxB+D,KAAM,SACNlW,MAAO,CAAC,mBACRiV,GAAI,CACFmG,MAAO3Q,GAAK4K,EAAQ6H,OAAOC,QAAQ1S,EAAGmS,KAEvCvH,EAAQ6H,OAAOE,OAEb3Y,EAET,SAAS4Y,GAAUC,GACjB,IAAIjI,EAAU/J,UAAUiB,OAAS,QAAsBlM,IAAjBiL,UAAU,GAAmBA,UAAU,GAAK,GAElF,MAAMnI,EAAK,YAAY6Z,EACvBA,GAAe,EACf,MAAMzE,EAAO,KACX5Y,KAAK4d,SAAShF,KAAKpV,IAEfyZ,EAAQ,CACZzZ,KACAoV,QAEF,GAAI,IAAWlD,EAAQmI,YAAa,CAClC,MAAMC,EAAsBhT,IACtBA,EAAEwP,cAAgB9W,IACpBxD,KAAK+d,MAAMC,KAAK,mBAAoBF,GACpCpI,EAAQmI,WAAW/S,KAGvB9K,KAAK+d,MAAME,IAAI,mBAAoBH,GAErC,MAAMI,EAAwBja,OAAOka,MAAMzI,aAAyC,EAASA,EAAQ8B,eAEjG,KAFkH,CACpHA,cAAe9B,EAAQ8B,eAQzB,OANAxX,KAAK4d,SAASX,MAAMU,EAAS,IACxBP,KACAc,EACH1a,KACAuF,MAAOuU,EAAYtd,KAAKC,eAAgBgd,EAAOvH,KAE1CuH,EAST,IAAI,GAAQ,CACV,QAAQhR,GACNA,EAAImS,IAAIjB,GACRlR,EAAI8K,MAAM,CACR,eACM/W,KAAK6b,SAGT7b,KAAK6b,OAAS,CACZpC,KAAMiE,GAAU3X,KAAK/F,aAOhB,Q,kCCrFf,I,iFCAkS,ECKnR,CACfqe,KAAA,CACAC,cAAAC,aAAA,kBACAxV,MAAAwV,aAAA,4BACAC,YAAAD,aAAA,mCACAE,iBAAAF,aAAA,2DACAG,oBAAAH,aAAA,oDACAI,gBAAAJ,aAAA,0EACAK,mBAAAL,aACA,gIAEAM,iBAAAN,aACA,iFAGA1V,WAAA,CAAAiW,YAAAC,YAAAC,cAAAC,iBACAC,MAAA,CACAhI,KAAA,UACAzO,MAAA,UAEAlJ,MAAA,CACA8H,QAAA,CACA5H,KAAAC,QACAC,UAAA,GAEAwf,cAAA,CACA1f,KAAAuJ,OACArJ,UAAA,GAEAyf,OAAA,CACA3f,KAAAC,QACAC,UAAA,GAEA0f,eAAA,CACA5f,KAAAC,QACAC,UAAA,EACAC,SAAA,GAEA0f,YAAA,CACA7f,KAAA,CAAAwE,OAAA+E,QACArJ,UAAA,EACAC,QAAA,MAEA2f,mBAAA,CACA9f,KAAA,CAAAwE,OAAA+E,QACArJ,UAAA,EACAC,QAAA,MAEA4f,WAAA,CACA/f,KAAA,CAAAwE,OAAA+E,QACArJ,UAAA,EACAC,QAAA,MAEA6f,WAAA,CACAhgB,KAAA,CAAAwE,OAAA+E,QACArJ,UAAA,EACAC,QAAA,OAGAmO,UACA,CACA2R,UAAA,KACAC,QAAAC,IAAA,2BAGA/V,SAAA,CACAgW,kBACA,YAAAH,YAAA,KAAAP,eAEAW,mBACA,OACAC,QAAA,CACAtC,KAAAc,aAAA,uBACAyB,WAAA,CACA5H,QAAA,SACApH,SAAA,KAAA6O,gBACAI,QAAA,KAAAZ,eACA,wCAGAa,OAAA,CACAzC,KAAAc,aAAA,4BAKAxM,MAAA,CACAsN,eAAAc,EAAAC,IAEAD,GAAAC,GAEA,KAAAlN,MAAA,gB,YCzFIyC,EAAY,YACd,GHRW,WAAkB,IAAI5L,EAAI/J,KAAKG,EAAG4J,EAAI7J,MAAMC,GAAG,OAAOA,EAAG,WAAW,CAACG,MAAM,CAAC,QAAUyJ,EAAI1C,QAAQ,WAAW0C,EAAI4V,QAAQ,eAAe,uBAAuB,cAAc,kBAAkB,iBAAiB5V,EAAI+V,iBAAiBC,QAAQ,gBAAgBhW,EAAI+V,iBAAiBI,QAAQ5K,GAAG,CAAC,QAAU,SAAS+K,GAAgC,OAAxBA,EAAOC,iBAAwBvW,EAAImJ,MAAM,YAAY,OAAS,SAASmN,GAAQ,OAAOtW,EAAImJ,MAAM,SAAUmN,KAAU9K,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,cAAcgT,GAAG,WAAW,MAAO,CAACzW,EAAII,GAAGJ,EAAIM,GAAGN,EAAI0W,SAASpC,KAAKtV,UAAU2X,OAAM,MAAS,CAAC3W,EAAII,GAAG,KAAKhK,EAAG,MAAM,CAACA,EAAG,WAAW,CAAC6J,YAAY,UAAU1J,MAAM,CAAC,QAAU,SAAS,aAAc,IAAQ,CAAEyJ,EAAIqV,OAAQjf,EAAG,KAAK,CAAC6J,YAAY,kBAAkB,CAACD,EAAII,GAAG,aAAaJ,EAAIM,GAAGN,EAAI0W,SAASpC,KAAKI,kBAAkB,cAActe,EAAG,KAAK,CAAC6J,YAAY,kBAAkB,CAACD,EAAII,GAAG,aAAaJ,EAAIM,GAAGN,EAAI0W,SAASpC,KAAKK,qBAAqB,cAAc3U,EAAII,GAAG,KAAKhK,EAAG,KAAK,CAAsB,OAApB4J,EAAIuV,YAAsBnf,EAAG,KAAK,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI4W,IAAI,WAAY,YAAa5W,EAAIuV,cAAc/J,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,cAAcgT,GAAG,WAAW,MAAO,CAACzW,EAAII,GAAGJ,EAAIM,GAAGN,EAAIuV,gBAAgBoB,OAAM,IAAO,MAAK,EAAM,cAAc,GAAG3W,EAAIG,KAAKH,EAAII,GAAG,KAAiC,OAA3BJ,EAAIwV,mBAA6Bpf,EAAG,KAAK,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI4W,IAAI,oBAAqB,oBAAqB5W,EAAIwV,qBAAqBhK,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,qBAAqBgT,GAAG,WAAW,MAAO,CAACzW,EAAII,GAAGJ,EAAIM,GAAGN,EAAIwV,uBAAuBmB,OAAM,IAAO,MAAK,EAAM,eAAe,GAAG3W,EAAIG,KAAKH,EAAII,GAAG,KAAyB,OAAnBJ,EAAIyV,WAAqBrf,EAAG,KAAK,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI4W,IAAI,UAAW,WAAY5W,EAAIyV,aAAajK,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,aAAagT,GAAG,WAAW,MAAO,CAACzW,EAAII,GAAGJ,EAAIM,GAAGN,EAAIyV,eAAekB,OAAM,IAAO,MAAK,EAAM,eAAe,GAAG3W,EAAIG,KAAKH,EAAII,GAAG,KAAyB,OAAnBJ,EAAI0V,WAAqBtf,EAAG,KAAK,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI4W,IAAI,UAAW,WAAY5W,EAAI0V,aAAalK,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,aAAagT,GAAG,WAAW,MAAO,CAACzW,EAAII,GAAGJ,EAAIM,GAAGN,EAAI0V,eAAeiB,OAAM,IAAO,MAAK,EAAM,eAAe,GAAG3W,EAAIG,OAAOH,EAAII,GAAG,KAAMJ,EAAIqV,OAAQjf,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI0W,SAASpC,KAAKM,mBAAmBxe,EAAG,aAAa,CAACG,MAAM,CAAC,QAAUyJ,EAAI0W,SAASpC,KAAKO,oBAAoBrJ,YAAYxL,EAAIwW,GAAG,CAAC,CAAC/S,IAAI,SAASgT,GAAG,UAAS,QAAEhL,IAAW,MAAO,CAACrV,EAAG,SAAS,CAAC4J,EAAII,GAAGJ,EAAIM,GAAGmL,cAAoB,GAAGzL,EAAII,GAAG,KAAKhK,EAAG,IAAI,CAAC6J,YAAY,WAAW,CAACD,EAAII,GAAGJ,EAAIM,GAAGN,EAAI0W,SAASpC,KAAKG,gBAAgBzU,EAAII,GAAG,KAAKhK,EAAG,IAAI,CAACA,EAAG,OAAO,CAAC6J,YAAY,0BAA0B,CAACD,EAAII,GAAGJ,EAAIM,GAAGN,EAAIoV,oBAAoBpV,EAAII,GAAG,KAAKhK,EAAG,gBAAgB,CAACG,MAAM,CAAC,GAAK,qBAAqB,KAAO,qBAAqB,KAAO,OAAO,cAAc,sBAAsB4e,MAAM,CAACnT,MAAOhC,EAAI2V,UAAWzY,SAAS,SAAU2Z,GAAM7W,EAAI2V,UAAUkB,GAAKC,WAAW,eAAe9W,EAAII,GAAG,KAAKJ,EAAIvJ,GAAG,iBAAiB,OAEnwF,IGSpB,EACA,KACA,KACA,MAIa,IAAAmV,E","file":"commons-pages.dashboard.projects-pages.organizations.organizations.groups_and_projects-pages.organiz-c1f429cd.0cd92d0b.chunk.js","sourcesContent":["import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlButtonGroup',\n  props: {\n    /**\n     * When set, rendered the button group in vertical mode.\n     */\n    vertical: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","export const MINIMUM_SEARCH_LENGTH = 3;\n\nexport const TYPENAME_BOARD = 'Board';\nexport const TYPENAME_CI_BUILD = 'Ci::Build';\nexport const TYPENAME_CI_RUNNER = 'Ci::Runner';\nexport const TYPENAME_CI_PIPELINE = 'Ci::Pipeline';\nexport const TYPENAME_CI_STAGE = 'Ci::Stage';\nexport const TYPENAME_CI_TRIGGER = 'Ci::Trigger';\nexport const TYPENAME_CI_VARIABLE = 'Ci::Variable';\nexport const TYPENAME_COMMIT_STATUS = 'CommitStatus';\nexport const TYPENAME_CONTAINER_REPOSITORY = 'ContainerRepository';\nexport const TYPENAME_CRM_CONTACT = 'CustomerRelations::Contact';\nexport const TYPENAME_CRM_ORGANIZATION = 'CustomerRelations::Organization';\nexport const TYPENAME_DESIGN_VERSION = 'DesignManagement::Version';\nexport const TYPENAME_DISCUSSION = 'Discussion';\nexport const TYPENAME_DISCUSSION_NOTE = 'DiscussionNote';\nexport const TYPENAME_EPIC = 'Epic';\nexport const TYPENAME_EPIC_BOARD = 'Boards::EpicBoard';\nexport const TYPENAME_FEATURE_FLAG = 'FeatureFlag';\nexport const TYPENAME_GROUP = 'Group';\nexport const TYPENAME_ISSUE = 'Issue';\nexport const TYPENAME_ITERATION = 'Iteration';\nexport const TYPENAME_ITERATIONS_CADENCE = 'Iterations::Cadence';\nexport const TYPENAME_LABEL = 'Label';\nexport const TYPENAME_MEMBER_ROLE = 'MemberRole';\nexport const TYPENAME_MERGE_REQUEST = 'MergeRequest';\nexport const TYPENAME_MILESTONE = 'Milestone';\nexport const TYPENAME_NOTE = 'Note';\nexport const TYPENAME_PACKAGES_PACKAGE = 'Packages::Package';\nexport const TYPENAME_PROJECT = 'Project';\nexport const TYPENAME_SCANNER_PROFILE = 'DastScannerProfile';\nexport const TYPENAME_SITE_PROFILE = 'DastSiteProfile';\nexport const TYPENAME_TODO = 'Todo';\nexport const TYPENAME_USER = 'User';\nexport const TYPENAME_VULNERABILITY = 'Vulnerability';\nexport const TYPENAME_WORK_ITEM = 'WorkItem';\nexport const TYPENAME_WORK_ITEM_RELATED_BRANCH = 'WorkItemRelatedBranch';\nexport const TYPE_ORGANIZATION = 'Organizations::Organization';\nexport const TYPE_USERS_SAVED_REPLY = 'Users::SavedReply';\nexport const TYPE_WORKSPACE = 'RemoteDevelopment::Workspace';\nexport const TYPE_COMPLIANCE_FRAMEWORK = 'ComplianceManagement::Framework';\n\nexport const QUERY_PARAM_START_CURSOR = 'start_cursor';\nexport const QUERY_PARAM_END_CURSOR = 'end_cursor';\n","module.exports = require('./lib/visibility.timers.js')\n","import { isArray } from 'lodash';\nimport Visibility from 'visibilityjs';\nimport { QUERY_PARAM_START_CURSOR, QUERY_PARAM_END_CURSOR } from './constants';\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method checks if the passed id follows that format\n *\n * @param {String|Number} id The id value\n * @returns {Boolean}\n */\nexport const isGid = (id) => {\n  if (typeof id === 'string' && id.startsWith('gid://gitlab/')) {\n    return true;\n  }\n\n  return false;\n};\n\nexport const parseGid = (gid) => {\n  const [type, id] = `${gid}`.replace(/gid:\\/\\/gitlab\\//g, '').split('/');\n  return { type, id };\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Id number\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {Number}\n */\nexport const getIdFromGraphQLId = (gid = '') => {\n  const rawId = isGid(gid) ? parseGid(gid).id : gid;\n  const id = parseInt(rawId, 10);\n  return Number.isInteger(id) ? id : null;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Environments/123. This method extracts Type string\n * from the Id path\n *\n * @param {String} gid GraphQL global ID\n * @returns {String}\n */\nexport const getTypeFromGraphQLId = (gid = '') => {\n  if (!isGid(gid)) return null;\n\n  const { type } = parseGid(gid);\n  return type || null;\n};\n\nexport const mutationOperationMode = {\n  append: 'APPEND',\n  remove: 'REMOVE',\n  replace: 'REPLACE',\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an id\n * and interpolates the 2 values into the expected GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {String|Number} id The id value\n * @returns {String}\n */\nexport const convertToGraphQLId = (type, id) => {\n  if (typeof type !== 'string') {\n    throw new TypeError(`type must be a string; got ${typeof type}`);\n  }\n\n  if (!['number', 'string'].includes(typeof id)) {\n    throw new TypeError(`id must be a number or string; got ${typeof id}`);\n  }\n\n  if (isGid(id)) {\n    return id;\n  }\n\n  return `gid://gitlab/${type}/${id}`;\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes a type and an\n * array of ids and tranforms the array values into the expected\n * GraphQL ID format.\n *\n * @param {String} type The entity type\n * @param {Array} ids An array of id values\n * @returns {Array}\n */\nexport const convertToGraphQLIds = (type, ids) => ids.map((id) => convertToGraphQLId(type, id));\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of\n * GraphQL Ids and converts them to a number.\n *\n * @param {Array} ids An array of GraphQL IDs\n * @returns {Array}\n */\nexport const convertFromGraphQLIds = (ids) => {\n  if (!isArray(ids)) {\n    throw new TypeError(`ids must be an array; got ${typeof ids}`);\n  }\n\n  return ids.map((id) => getIdFromGraphQLId(id));\n};\n\n/**\n * Ids generated by GraphQL endpoints are usually in the format\n * gid://gitlab/Groups/123. This method takes an array of nodes\n * and converts the `id` properties from a GraphQL Id to a number.\n *\n * @param {Array} nodes An array of nodes with an `id` property\n * @returns {Array}\n */\nexport const convertNodeIdsFromGraphQLIds = (nodes) => {\n  if (!isArray(nodes)) {\n    throw new TypeError(`nodes must be an array; got ${typeof nodes}`);\n  }\n\n  return nodes.map((node) => (node.id ? { ...node, id: getIdFromGraphQLId(node.id) } : node));\n};\n\n/**\n * This function takes a GraphQL query data as a required argument and\n * the field name to resolve as an optional argument\n * and returns resolved field's data or an empty array\n * @param {Object} queryData\n * @param {String} nodesField (in most cases it will be 'nodes')\n * @returns {Array}\n */\nexport const getNodesOrDefault = (queryData, nodesField = 'nodes') => {\n  return queryData?.[nodesField] ?? [];\n};\n\nexport const toggleQueryPollingByVisibility = (queryRef, interval = 10000) => {\n  const stopStartQuery = (query) => {\n    if (!Visibility.hidden()) {\n      query.startPolling(interval);\n    } else {\n      query.stopPolling();\n    }\n  };\n\n  stopStartQuery(queryRef);\n  Visibility.change(stopStartQuery.bind(null, queryRef));\n};\n\nexport const etagQueryHeaders = (featureCorrelation, etagResource = '') => {\n  return {\n    fetchOptions: {\n      method: 'GET',\n    },\n    headers: {\n      'X-GITLAB-GRAPHQL-FEATURE-CORRELATION': featureCorrelation,\n      'X-GITLAB-GRAPHQL-RESOURCE-ETAG': etagResource,\n      'X-Requested-With': 'XMLHttpRequest',\n    },\n  };\n};\n\nexport const calculateGraphQLPaginationQueryParams = ({\n  startCursor,\n  endCursor,\n  routeQuery: { start_cursor, end_cursor, ...routeQuery },\n}) => {\n  if (startCursor) {\n    return {\n      ...routeQuery,\n      [QUERY_PARAM_START_CURSOR]: startCursor,\n    };\n  }\n\n  if (endCursor) {\n    return {\n      ...routeQuery,\n      [QUERY_PARAM_END_CURSOR]: endCursor,\n    };\n  }\n\n  return routeQuery;\n};\n",";(function (window) {\n    \"use strict\";\n\n    var lastTimer = -1;\n\n    var install = function (Visibility) {\n\n        // Run callback every `interval` milliseconds if page is visible and\n        // every `hiddenInterval` milliseconds if page is hidden.\n        //\n        //   Visibility.every(60 * 1000, 5 * 60 * 1000, function () {\n        //       checkNewMails();\n        //   });\n        //\n        // You can skip `hiddenInterval` and callback will be called only if\n        // page is visible.\n        //\n        //   Visibility.every(1000, function () {\n        //       updateCountdown();\n        //   });\n        //\n        // It is analog of `setInterval(callback, interval)` but use visibility\n        // state.\n        //\n        // It return timer ID, that you can use in `Visibility.stop(id)` to stop\n        // timer (`clearInterval` analog).\n        // Warning: timer ID is different from interval ID from `setInterval`,\n        // so don’t use it in `clearInterval`.\n        //\n        // On change state from hidden to visible timers will be execute.\n        Visibility.every = function (interval, hiddenInterval, callback) {\n            Visibility._time();\n\n            if ( !callback ) {\n                callback = hiddenInterval;\n                hiddenInterval = null;\n            }\n\n            lastTimer += 1;\n            var number = lastTimer;\n\n            Visibility._timers[number] = {\n                visible:  interval,\n                hidden:   hiddenInterval,\n                callback: callback\n            };\n            Visibility._run(number, false);\n\n            if ( Visibility.isSupported() ) {\n                Visibility._listen();\n            }\n            return number;\n        };\n\n        // Stop timer from `every` method by it ID (`every` method return it).\n        //\n        //   slideshow = Visibility.every(5 * 1000, function () {\n        //       changeSlide();\n        //   });\n        //   $('.stopSlideshow').click(function () {\n        //       Visibility.stop(slideshow);\n        //   });\n        Visibility.stop = function(id) {\n            if ( !Visibility._timers[id] ) {\n                return false;\n            }\n            Visibility._stop(id);\n            delete Visibility._timers[id];\n            return true;\n        };\n\n        // Callbacks and intervals added by `every` method.\n        Visibility._timers = { };\n\n        // Initialize variables on page loading.\n        Visibility._time = function () {\n            if ( Visibility._timed ) {\n                return;\n            }\n            Visibility._timed     = true;\n            Visibility._wasHidden = Visibility.hidden();\n\n            Visibility.change(function () {\n                Visibility._stopRun();\n                Visibility._wasHidden = Visibility.hidden();\n            });\n        };\n\n        // Try to run timer from every method by it’s ID. It will be use\n        // `interval` or `hiddenInterval` depending on visibility state.\n        // If page is hidden and `hiddenInterval` is null,\n        // it will not run timer.\n        //\n        // Argument `runNow` say, that timers must be execute now too.\n        Visibility._run = function (id, runNow) {\n            var interval,\n                timer = Visibility._timers[id];\n\n            if ( Visibility.hidden() ) {\n                if ( null === timer.hidden ) {\n                    return;\n                }\n                interval = timer.hidden;\n            } else {\n                interval = timer.visible;\n            }\n\n            var runner = function () {\n                timer.last = new Date();\n                timer.callback.call(window);\n            }\n\n            if ( runNow ) {\n                var now  = new Date();\n                var last = now - timer.last ;\n\n                if ( interval > last ) {\n                    timer.delay = setTimeout(function () {\n                        timer.id = setInterval(runner, interval);\n                        runner();\n                    }, interval - last);\n                } else {\n                    timer.id = setInterval(runner, interval);\n                    runner();\n                }\n\n            } else {\n              timer.id = setInterval(runner, interval);\n            }\n        };\n\n        // Stop timer from `every` method by it’s ID.\n        Visibility._stop = function (id) {\n            var timer = Visibility._timers[id];\n            clearInterval(timer.id);\n            clearTimeout(timer.delay);\n            delete timer.id;\n            delete timer.delay;\n        };\n\n        // Listener for `visibilitychange` event.\n        Visibility._stopRun = function (event) {\n            var isHidden  = Visibility.hidden(),\n                wasHidden = Visibility._wasHidden;\n\n            if ( (isHidden && !wasHidden) || (!isHidden && wasHidden) ) {\n                for ( var i in Visibility._timers ) {\n                    Visibility._stop(i);\n                    Visibility._run(i, !isHidden);\n                }\n            }\n        };\n\n        return Visibility;\n    }\n\n    if ( typeof(module) != 'undefined' && module.exports ) {\n        module.exports = install(require('./visibility.core'));\n    } else {\n        install(window.Visibility)\n    }\n\n})(window);\n","import GlButton from '../../base/button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlEmptyState',\n  components: {\n    GlButton\n  },\n  props: {\n    /**\n     * The title (heading) of the empty state.\n     */\n    title: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's URL.\n     */\n    svgPath: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's height used to prevent content reflow.\n     */\n    svgHeight: {\n      type: Number,\n      required: false,\n      default: 144\n    },\n    /**\n     * The desciption/body text of the empty state.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's href.\n     */\n    primaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's text. If falsey, the button is not shown.\n     */\n    primaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's href.\n     */\n    secondaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's text. If falsey, the button is not shown.\n     */\n    secondaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Determines whether to render the compact layout.\n     */\n    compact: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    invertInDarkMode: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * CSS classes to add to the content container\n     */\n    contentClass: {\n      type: [Array, String, Object],\n      required: false,\n      default: () => []\n    }\n  },\n  computed: {\n    height() {\n      return this.shouldPreventImageReflow ? this.svgHeight : null;\n    },\n    shouldPreventImageReflow() {\n      return Boolean(this.svgHeight);\n    },\n    shouldRenderPrimaryButton() {\n      return Boolean(this.primaryButtonLink && this.primaryButtonText);\n    },\n    shouldRenderSecondaryButton() {\n      return Boolean(this.secondaryButtonLink && this.secondaryButtonText);\n    },\n    contentClasses() {\n      return [this.compact ? 'gl-grow gl-basis-0 gl-px-4' : 'gl-m-auto gl-p-5', this.contentClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"gl-flex\",class:{\n    'gl-empty-state gl-flex-col gl-text-center': !_vm.compact,\n    'gl-flex-row': _vm.compact,\n  }},[_c('div',{class:{ 'gl-hidden gl-px-4 sm:gl-block': _vm.compact, 'gl-max-w-full': !_vm.compact }},[(_vm.svgPath)?_c('img',{staticClass:\"gl-max-w-full\",class:{ 'gl-dark-invert-keep-hue': _vm.invertInDarkMode },attrs:{\"src\":_vm.svgPath,\"alt\":\"\",\"height\":_vm.height}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-empty-state-content gl-mx-auto gl-my-0\",class:_vm.contentClasses,attrs:{\"data-testid\":\"gl-empty-state-content\"}},[_vm._t(\"title\",function(){return [_c('h1',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h-display gl-leading-36\",class:_vm.compact ? 'h5' : 'h4'},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")])]}),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{ref:\"description\",staticClass:\"gl-mb-0 gl-mt-4 gl-text-subtle\"},[_vm._t(\"description\",function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n      \")]})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\",class:{ 'gl-justify-center': !_vm.compact }},[_vm._t(\"actions\",function(){return [(_vm.shouldRenderPrimaryButton)?_c('gl-button',{staticClass:\"gl-mb-3\",class:_vm.compact ? 'gl-mr-3' : 'gl-mx-2',attrs:{\"variant\":\"confirm\",\"href\":_vm.primaryButtonLink}},[_vm._v(_vm._s(_vm.primaryButtonText))]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderSecondaryButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mr-3\",class:{ '!gl-mx-2': !_vm.compact },attrs:{\"href\":_vm.secondaryButtonLink}},[_vm._v(_vm._s(_vm.secondaryButtonText)+\"\\n        \")]):_vm._e()]})],2)],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n",";(function (global) {\n    \"use strict\";\n\n    var lastId = -1;\n\n    // Visibility.js allow you to know, that your web page is in the background\n    // tab and thus not visible to the user. This library is wrap under\n    // Page Visibility API. It fix problems with different vendor prefixes and\n    // add high-level useful functions.\n    var self = {\n\n        // Call callback only when page become to visible for user or\n        // call it now if page is visible now or Page Visibility API\n        // doesn’t supported.\n        //\n        // Return false if API isn’t supported, true if page is already visible\n        // or listener ID (you can use it in `unbind` method) if page isn’t\n        // visible now.\n        //\n        //   Visibility.onVisible(function () {\n        //       startIntroAnimation();\n        //   });\n        onVisible: function (callback) {\n            var support = self.isSupported();\n            if ( !support || !self.hidden() ) {\n                callback();\n                return support;\n            }\n\n            var listener = self.change(function (e, state) {\n                if ( !self.hidden() ) {\n                    self.unbind(listener);\n                    callback();\n                }\n            });\n            return listener;\n        },\n\n        // Call callback when visibility will be changed. First argument for\n        // callback will be original event object, second will be visibility\n        // state name.\n        //\n        // Return listener ID to unbind listener by `unbind` method.\n        //\n        // If Page Visibility API doesn’t supported method will be return false\n        // and callback never will be called.\n        //\n        //   Visibility.change(function(e, state) {\n        //       Statistics.visibilityChange(state);\n        //   });\n        //\n        // It is just proxy to `visibilitychange` event, but use vendor prefix.\n        change: function (callback) {\n            if ( !self.isSupported() ) {\n                return false;\n            }\n            lastId += 1;\n            var number = lastId;\n            self._callbacks[number] = callback;\n            self._listen();\n            return number;\n        },\n\n        // Remove `change` listener by it ID.\n        //\n        //   var id = Visibility.change(function(e, state) {\n        //       firstChangeCallback();\n        //       Visibility.unbind(id);\n        //   });\n        unbind: function (id) {\n            delete self._callbacks[id];\n        },\n\n        // Call `callback` in any state, expect “prerender”. If current state\n        // is “prerender” it will wait until state will be changed.\n        // If Page Visibility API doesn’t supported, it will call `callback`\n        // immediately.\n        //\n        // Return false if API isn’t supported, true if page is already after\n        // prerendering or listener ID (you can use it in `unbind` method)\n        // if page is prerended now.\n        //\n        //   Visibility.afterPrerendering(function () {\n        //       Statistics.countVisitor();\n        //   });\n        afterPrerendering: function (callback) {\n            var support   = self.isSupported();\n            var prerender = 'prerender';\n\n            if ( !support || prerender != self.state() ) {\n                callback();\n                return support;\n            }\n\n            var listener = self.change(function (e, state) {\n                if ( prerender != state ) {\n                    self.unbind(listener);\n                    callback();\n                }\n            });\n            return listener;\n        },\n\n        // Return true if page now isn’t visible to user.\n        //\n        //   if ( !Visibility.hidden() ) {\n        //       VideoPlayer.play();\n        //   }\n        //\n        // It is just proxy to `document.hidden`, but use vendor prefix.\n        hidden: function () {\n            return !!(self._doc.hidden || self._doc.webkitHidden);\n        },\n\n        // Return visibility state: 'visible', 'hidden' or 'prerender'.\n        //\n        //   if ( 'prerender' == Visibility.state() ) {\n        //       Statistics.pageIsPrerendering();\n        //   }\n        //\n        // Don’t use `Visibility.state()` to detect, is page visible, because\n        // visibility states can extend in next API versions.\n        // Use more simpler and general `Visibility.hidden()` for this cases.\n        //\n        // It is just proxy to `document.visibilityState`, but use\n        // vendor prefix.\n        state: function () {\n            return self._doc.visibilityState       ||\n                   self._doc.webkitVisibilityState ||\n                   'visible';\n        },\n\n        // Return true if browser support Page Visibility API.\n        //\n        //   if ( Visibility.isSupported() ) {\n        //       Statistics.startTrackingVisibility();\n        //       Visibility.change(function(e, state)) {\n        //           Statistics.trackVisibility(state);\n        //       });\n        //   }\n        isSupported: function () {\n            return !!(self._doc.visibilityState ||\n                      self._doc.webkitVisibilityState);\n        },\n\n        // Link to document object to change it in tests.\n        _doc: document || {},\n\n        // Callbacks from `change` method, that wait visibility changes.\n        _callbacks: { },\n\n        // Listener for `visibilitychange` event.\n        _change: function(event) {\n            var state = self.state();\n\n            for ( var i in self._callbacks ) {\n                self._callbacks[i].call(self._doc, event, state);\n            }\n        },\n\n        // Set listener for `visibilitychange` event.\n        _listen: function () {\n            if ( self._init ) {\n                return;\n            }\n\n            var event = 'visibilitychange';\n            if ( self._doc.webkitVisibilityState ) {\n                event = 'webkit' + event;\n            }\n\n            var listener = function () {\n                self._change.apply(self, arguments);\n            };\n            if ( self._doc.addEventListener ) {\n                self._doc.addEventListener(event, listener);\n            } else {\n                self._doc.attachEvent(event, listener);\n            }\n            self._init = true;\n        }\n\n    };\n\n    if ( typeof(module) != 'undefined' && module.exports ) {\n        module.exports = self;\n    } else {\n        global.Visibility = self;\n    }\n\n})(this);\n","\n /*! \n  * portal-vue © Thorsten Lünborg, 2019 \n  * \n  * Version: 2.1.7\n  * \n  * LICENCE: MIT \n  * \n  * https://github.com/linusborg/portal-vue\n  * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n  if (Array.isArray(item) || _typeof(item) === 'object') {\n    return Object.freeze(item);\n  }\n\n  return item;\n}\nfunction combinePassengers(transports) {\n  var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return transports.reduce(function (passengers, transport) {\n    var temp = transport.passengers[0];\n    var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n    return passengers.concat(newPassengers);\n  }, []);\n}\nfunction stableSort(array, compareFn) {\n  return array.map(function (v, idx) {\n    return [idx, v];\n  }).sort(function (a, b) {\n    return compareFn(a[1], b[1]) || a[0] - b[0];\n  }).map(function (c) {\n    return c[1];\n  });\n}\nfunction pick(obj, keys) {\n  return keys.reduce(function (acc, key) {\n    if (obj.hasOwnProperty(key)) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n  data: function data() {\n    return {\n      transports: transports,\n      targets: targets,\n      sources: sources,\n      trackInstances: inBrowser\n    };\n  },\n  methods: {\n    open: function open(transport) {\n      if (!inBrowser) return;\n      var to = transport.to,\n          from = transport.from,\n          passengers = transport.passengers,\n          _transport$order = transport.order,\n          order = _transport$order === void 0 ? Infinity : _transport$order;\n      if (!to || !from || !passengers) return;\n      var newTransport = {\n        to: to,\n        from: from,\n        passengers: freeze(passengers),\n        order: order\n      };\n      var keys = Object.keys(this.transports);\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, []);\n      }\n\n      var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n      var newTransports = this.transports[to].slice(0);\n\n      if (currentIndex === -1) {\n        newTransports.push(newTransport);\n      } else {\n        newTransports[currentIndex] = newTransport;\n      }\n\n      this.transports[to] = stableSort(newTransports, function (a, b) {\n        return a.order - b.order;\n      });\n    },\n    close: function close(transport) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var to = transport.to,\n          from = transport.from;\n      if (!to || !from && force === false) return;\n\n      if (!this.transports[to]) {\n        return;\n      }\n\n      if (force) {\n        this.transports[to] = [];\n      } else {\n        var index = this.$_getTransportIndex(transport);\n\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          var newTransports = this.transports[to].slice(0);\n          newTransports.splice(index, 1);\n          this.transports[to] = newTransports;\n        }\n      }\n    },\n    registerTarget: function registerTarget(target, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n      }\n\n      this.$set(this.targets, target, Object.freeze([vm]));\n    },\n    unregisterTarget: function unregisterTarget(target) {\n      this.$delete(this.targets, target);\n    },\n    registerSource: function registerSource(source, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n      }\n\n      this.$set(this.sources, source, Object.freeze([vm]));\n    },\n    unregisterSource: function unregisterSource(source) {\n      this.$delete(this.sources, source);\n    },\n    hasTarget: function hasTarget(to) {\n      return !!(this.targets[to] && this.targets[to][0]);\n    },\n    hasSource: function hasSource(to) {\n      return !!(this.sources[to] && this.sources[to][0]);\n    },\n    hasContentFor: function hasContentFor(to) {\n      return !!this.transports[to] && !!this.transports[to].length;\n    },\n    // Internal\n    $_getTransportIndex: function $_getTransportIndex(_ref) {\n      var to = _ref.to,\n          from = _ref.from;\n\n      for (var i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i;\n        }\n      }\n\n      return -1;\n    }\n  }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    name: {\n      type: String,\n      default: function _default() {\n        return String(_id++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerSource(_this.name, _this);\n    });\n  },\n  mounted: function mounted() {\n    if (!this.disabled) {\n      this.sendUpdate();\n    }\n  },\n  updated: function updated() {\n    if (this.disabled) {\n      this.clear();\n    } else {\n      this.sendUpdate();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterSource(this.name);\n    this.clear();\n  },\n  watch: {\n    to: function to(newValue, oldValue) {\n      oldValue && oldValue !== newValue && this.clear(oldValue);\n      this.sendUpdate();\n    }\n  },\n  methods: {\n    clear: function clear(target) {\n      var closer = {\n        from: this.name,\n        to: target || this.to\n      };\n      wormhole.close(closer);\n    },\n    normalizeSlots: function normalizeSlots() {\n      return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n    },\n    normalizeOwnChildren: function normalizeOwnChildren(children) {\n      return typeof children === 'function' ? children(this.slotProps) : children;\n    },\n    sendUpdate: function sendUpdate() {\n      var slotContent = this.normalizeSlots();\n\n      if (slotContent) {\n        var transport = {\n          from: this.name,\n          to: this.to,\n          passengers: _toConsumableArray(slotContent),\n          order: this.order\n        };\n        wormhole.open(transport);\n      } else {\n        this.clear();\n      }\n    }\n  },\n  render: function render(h) {\n    var children = this.$slots.default || this.$scopedSlots.default || [];\n    var Tag = this.tag;\n\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n    } else {\n      return this.slim ? h() : h(Tag, {\n        class: {\n          'v-portal': true\n        },\n        style: {\n          display: 'none'\n        },\n        key: 'v-portal-placeholder'\n      });\n    }\n  }\n});\n\nvar PortalTarget = Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  data: function data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true\n    };\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerTarget(_this.name, _this);\n    });\n  },\n  watch: {\n    ownTransports: function ownTransports() {\n      this.$emit('change', this.children().length > 0);\n    },\n    name: function name(newVal, oldVal) {\n      /**\r\n       * TODO\r\n       * This should warn as well ...\r\n       */\n      wormhole.unregisterTarget(oldVal);\n      wormhole.registerTarget(newVal, this);\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    if (this.transition) {\n      this.$nextTick(function () {\n        // only when we have a transition, because it causes a re-render\n        _this2.firstRender = false;\n      });\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterTarget(this.name);\n  },\n  computed: {\n    ownTransports: function ownTransports() {\n      var transports = this.transports[this.name] || [];\n\n      if (this.multiple) {\n        return transports;\n      }\n\n      return transports.length === 0 ? [] : [transports[transports.length - 1]];\n    },\n    passengers: function passengers() {\n      return combinePassengers(this.ownTransports, this.slotProps);\n    }\n  },\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children: function children() {\n      return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper: function noWrapper() {\n      var noWrapper = this.slim && !this.transition;\n\n      if (noWrapper && this.children().length > 1) {\n        console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n      }\n\n      return noWrapper;\n    }\n  },\n  render: function render(h) {\n    var noWrapper = this.noWrapper();\n    var children = this.children();\n    var Tag = this.transition || this.tag;\n    return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n      props: {\n        // if we have a transition component, pass the tag if it exists\n        tag: this.transition && this.tag ? this.tag : undefined\n      },\n      class: {\n        'vue-portal-target': true\n      }\n    }, children);\n  }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: {\n      type: [Boolean, String]\n    },\n    bail: {\n      type: Boolean\n    },\n    mountTo: {\n      type: String,\n      required: true\n    },\n    // Portal\n    disabled: {\n      type: Boolean\n    },\n    // name for the portal\n    name: {\n      type: String,\n      default: function _default() {\n        return 'mounted_' + String(_id$1++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    // name for the target\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    },\n    // Target\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    targetSlim: {\n      type: Boolean\n    },\n    targetSlotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    targetTag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  created: function created() {\n    if (typeof document === 'undefined') return;\n    var el = document.querySelector(this.mountTo);\n\n    if (!el) {\n      console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n      return;\n    }\n\n    var props = this.$props; // Target already exists\n\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n        Aborting because 'bail: true' is set\"));\n      } else {\n        this.portalTarget = wormhole.targets[props.name];\n      }\n\n      return;\n    }\n\n    var append = props.append;\n\n    if (append) {\n      var type = typeof append === 'string' ? append : 'DIV';\n      var mountEl = document.createElement(type);\n      el.appendChild(mountEl);\n      el = mountEl;\n    } // get props for target from $props\n    // we have to rename a few of them\n\n\n    var _props = pick(this.$props, targetProps);\n\n    _props.slim = this.targetSlim;\n    _props.tag = this.targetTag;\n    _props.slotProps = this.targetSlotProps;\n    _props.name = this.to;\n    this.portalTarget = new PortalTarget({\n      el: el,\n      parent: this.$parent || this,\n      propsData: _props\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    var target = this.portalTarget;\n\n    if (this.append) {\n      var el = target.$el;\n      el.parentNode.removeChild(el);\n    }\n\n    target.$destroy();\n  },\n  render: function render(h) {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\");\n      return h();\n    } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used <template> for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) return h();\n    return content;\n  }\n});\n\nfunction install(Vue$$1) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  Vue$$1.component(options.portalName || 'Portal', Portal);\n  Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n  Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n  install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n","import { Wormhole, PortalTarget } from 'portal-vue';\nimport { extend } from '../../vue';\nimport { NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_DESTROYED } from '../../constants/events';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { requestAF, removeClass } from '../../utils/dom';\nimport { getRootEventName } from '../../utils/events';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { warn } from '../../utils/warn';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper components ---\n\n// @vue/component\nconst DefaultTransition = /*#__PURE__*/extend({\n  mixins: [normalizeSlotMixin],\n  data() {\n    return {\n      // Transition classes base name\n      name: 'b-toaster'\n    };\n  },\n  methods: {\n    onAfterEnter(el) {\n      // Work around a Vue.js bug where `*-enter-to` class is not removed\n      // See: https://github.com/vuejs/vue/pull/7901\n      // The `*-move` class is also stuck on elements that moved,\n      // but there are no JavaScript hooks to handle after move\n      // See: https://github.com/vuejs/vue/pull/7906\n      requestAF(() => {\n        removeClass(el, `${this.name}-enter-to`);\n      });\n    }\n  },\n  render(h) {\n    return h('transition-group', {\n      props: {\n        tag: 'div',\n        name: this.name\n      },\n      on: {\n        afterEnter: this.onAfterEnter\n      }\n    }, this.normalizeSlot());\n  }\n});\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Allowed: 'true' or 'false' or `null`\n  ariaAtomic: makeProp(PROP_TYPE_STRING),\n  ariaLive: makeProp(PROP_TYPE_STRING),\n  name: makeProp(PROP_TYPE_STRING, undefined, true),\n  // Required\n  // Aria role\n  role: makeProp(PROP_TYPE_STRING)\n}, NAME_TOASTER);\n\n// --- Main component ---\n\n// @vue/component\nconst BToaster = /*#__PURE__*/extend({\n  name: NAME_TOASTER,\n  mixins: [listenOnRootMixin],\n  props,\n  data() {\n    return {\n      // We don't render on SSR or if a an existing target found\n      doRender: false,\n      dead: false,\n      // Toaster names cannot change once created\n      staticName: this.name\n    };\n  },\n  beforeMount() {\n    const {\n      name\n    } = this;\n    this.staticName = name;\n\n    /* istanbul ignore if */\n    if (Wormhole.hasTarget(name)) {\n      warn(`A \"<portal-target>\" with name \"${name}\" already exists in the document.`, NAME_TOASTER);\n      this.dead = true;\n    } else {\n      this.doRender = true;\n    }\n  },\n  beforeDestroy() {\n    // Let toasts made with `this.$bvToast.toast()` know that this toaster\n    // is being destroyed and should should also destroy/hide themselves\n    if (this.doRender) {\n      this.emitOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), this.name);\n    }\n  },\n  destroyed() {\n    // Remove from DOM if needed\n    const {\n      $el\n    } = this;\n    /* istanbul ignore next: difficult to test */\n    if ($el && $el.parentNode) {\n      $el.parentNode.removeChild($el);\n    }\n  },\n  render(h) {\n    let $toaster = h('div', {\n      class: ['gl-hidden', {\n        'b-dead-toaster': this.dead\n      }]\n    });\n    if (this.doRender) {\n      const $target = h(PortalTarget, {\n        staticClass: 'b-toaster-slot',\n        props: {\n          name: this.staticName,\n          multiple: true,\n          tag: 'div',\n          slim: false,\n          // transition: this.transition || DefaultTransition\n          transition: DefaultTransition\n        }\n      });\n      $toaster = h('div', {\n        staticClass: 'b-toaster',\n        class: [this.staticName],\n        attrs: {\n          id: this.staticName,\n          // Fallback to null to make sure attribute doesn't exist\n          role: this.role || null,\n          'aria-live': this.ariaLive,\n          'aria-atomic': this.ariaAtomic\n        }\n      }, [$target]);\n    }\n    return $toaster;\n  }\n});\n\nexport { BToaster, DefaultTransition, props };\n","import { Wormhole, Portal } from 'portal-vue';\nimport { extend, COMPONENT_UID_KEY } from '../../vue';\nimport { NAME_TOAST, NAME_TOASTER } from '../../constants/components';\nimport { EVENT_NAME_CHANGE, EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_DESTROYED, EVENT_OPTIONS_NO_CAPTURE, EVENT_NAME_SHOWN, EVENT_NAME_HIDDEN } from '../../constants/events';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../constants/props';\nimport { SLOT_NAME_TOAST_TITLE, SLOT_NAME_DEFAULT } from '../../constants/slots';\nimport { BvEvent } from '../../utils/bv-event.class';\nimport { requestAF } from '../../utils/dom';\nimport { getRootActionEventName, getRootEventName, eventOnOff } from '../../utils/events';\nimport { mathMax } from '../../utils/math';\nimport { makeModelMixin } from '../../utils/model';\nimport { toInteger } from '../../utils/number';\nimport { pick, sortKeys } from '../../utils/object';\nimport { makePropsConfigurable, makeProp, pluckProps } from '../../utils/props';\nimport { isLink } from '../../utils/router';\nimport { createNewChildComponent } from '../../utils/create-new-child-component';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { props as props$2, idMixin } from '../../mixins/id';\nimport { listenOnRootMixin } from '../../mixins/listen-on-root';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { scopedStyleMixin } from '../../mixins/scoped-style';\nimport { props as props$1, BLink } from '../link/link';\nimport { BVTransition } from '../transition/bv-transition';\nimport { BToaster } from './toaster';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('visible', {\n  type: PROP_TYPE_BOOLEAN,\n  defaultValue: false,\n  event: EVENT_NAME_CHANGE\n});\nconst MIN_DURATION = 1000;\n\n// --- Props ---\n\nconst linkProps = pick(props$1, ['href', 'to']);\nconst props = makePropsConfigurable(sortKeys({\n  ...props$2,\n  ...modelProps,\n  ...linkProps,\n  appendToast: makeProp(PROP_TYPE_BOOLEAN, false),\n  autoHideDelay: makeProp(PROP_TYPE_NUMBER_STRING, 5000),\n  bodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  headerTag: makeProp(PROP_TYPE_STRING, 'header'),\n  // Switches role to 'status' and aria-live to 'polite'\n  isStatus: makeProp(PROP_TYPE_BOOLEAN, false),\n  noAutoHide: makeProp(PROP_TYPE_BOOLEAN, false),\n  noFade: makeProp(PROP_TYPE_BOOLEAN, false),\n  noHoverPause: makeProp(PROP_TYPE_BOOLEAN, false),\n  solid: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Render the toast in place, rather than in a portal-target\n  static: makeProp(PROP_TYPE_BOOLEAN, false),\n  title: makeProp(PROP_TYPE_STRING),\n  toastClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  toaster: makeProp(PROP_TYPE_STRING, 'b-toaster-top-right'),\n  variant: makeProp(PROP_TYPE_STRING)\n}), NAME_TOAST);\n\n// --- Main component ---\n\n// @vue/component\nconst BToast = /*#__PURE__*/extend({\n  name: NAME_TOAST,\n  mixins: [attrsMixin, idMixin, modelMixin, listenOnRootMixin, normalizeSlotMixin, scopedStyleMixin],\n  inheritAttrs: false,\n  props,\n  data() {\n    return {\n      isMounted: false,\n      doRender: false,\n      localShow: false,\n      isTransitioning: false,\n      isHiding: false,\n      order: 0,\n      dismissStarted: 0,\n      resumeDismiss: 0\n    };\n  },\n  computed: {\n    toastClasses() {\n      const {\n        appendToast,\n        variant\n      } = this;\n      return {\n        'b-toast-solid': this.solid,\n        'b-toast-append': appendToast,\n        'b-toast-prepend': !appendToast,\n        [`b-toast-${variant}`]: variant\n      };\n    },\n    slotScope() {\n      const {\n        hide\n      } = this;\n      return {\n        hide\n      };\n    },\n    computedDuration() {\n      // Minimum supported duration is 1 second\n      return mathMax(toInteger(this.autoHideDelay, 0), MIN_DURATION);\n    },\n    computedToaster() {\n      return String(this.toaster);\n    },\n    transitionHandlers() {\n      return {\n        beforeEnter: this.onBeforeEnter,\n        afterEnter: this.onAfterEnter,\n        beforeLeave: this.onBeforeLeave,\n        afterLeave: this.onAfterLeave\n      };\n    },\n    computedAttrs() {\n      return {\n        ...this.bvAttrs,\n        id: this.safeId(),\n        tabindex: '0'\n      };\n    }\n  },\n  watch: {\n    [MODEL_PROP_NAME](newValue) {\n      this[newValue ? 'show' : 'hide']();\n    },\n    localShow(newValue) {\n      if (newValue !== this[MODEL_PROP_NAME]) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    /* istanbul ignore next */\n    toaster() {\n      // If toaster target changed, make sure toaster exists\n      this.$nextTick(this.ensureToaster);\n    },\n    /* istanbul ignore next */\n    static(newValue) {\n      // If static changes to true, and the toast is showing,\n      // ensure the toaster target exists\n      if (newValue && this.localShow) {\n        this.ensureToaster();\n      }\n    }\n  },\n  created() {\n    // Create private non-reactive props\n    this.$_dismissTimer = null;\n  },\n  mounted() {\n    this.isMounted = true;\n    this.$nextTick(() => {\n      if (this[MODEL_PROP_NAME]) {\n        requestAF(() => {\n          this.show();\n        });\n      }\n    });\n    // Listen for global $root show events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id => {\n      if (id === this.safeId()) {\n        this.show();\n      }\n    });\n    // Listen for global $root hide events\n    this.listenOnRoot(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id => {\n      if (!id || id === this.safeId()) {\n        this.hide();\n      }\n    });\n    // Make sure we hide when toaster is destroyed\n    /* istanbul ignore next: difficult to test */\n    this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n      /* istanbul ignore next */\n      if (toaster === this.computedToaster) {\n        this.hide();\n      }\n    });\n  },\n  beforeDestroy() {\n    this.clearDismissTimer();\n  },\n  methods: {\n    show() {\n      if (!this.localShow) {\n        this.ensureToaster();\n        const showEvent = this.buildEvent(EVENT_NAME_SHOW);\n        this.emitEvent(showEvent);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.order = Date.now() * (this.appendToast ? 1 : -1);\n        this.isHiding = false;\n        this.doRender = true;\n        this.$nextTick(() => {\n          // We show the toast after we have rendered the portal and b-toast wrapper\n          // so that screen readers will properly announce the toast\n          requestAF(() => {\n            this.localShow = true;\n          });\n        });\n      }\n    },\n    hide() {\n      if (this.localShow) {\n        const hideEvent = this.buildEvent(EVENT_NAME_HIDE);\n        this.emitEvent(hideEvent);\n        this.setHoverHandler(false);\n        this.dismissStarted = this.resumeDismiss = 0;\n        this.clearDismissTimer();\n        this.isHiding = true;\n        requestAF(() => {\n          this.localShow = false;\n        });\n      }\n    },\n    buildEvent(type) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      return new BvEvent(type, {\n        cancelable: false,\n        target: this.$el || null,\n        relatedTarget: null,\n        ...options,\n        vueTarget: this,\n        componentId: this.safeId()\n      });\n    },\n    emitEvent(bvEvent) {\n      const {\n        type\n      } = bvEvent;\n      this.emitOnRoot(getRootEventName(NAME_TOAST, type), bvEvent);\n      this.$emit(type, bvEvent);\n    },\n    ensureToaster() {\n      if (this.static) {\n        return;\n      }\n      const {\n        computedToaster\n      } = this;\n      if (!Wormhole.hasTarget(computedToaster)) {\n        const div = document.createElement('div');\n        document.body.appendChild(div);\n        const toaster = createNewChildComponent(this.bvEventRoot, BToaster, {\n          propsData: {\n            name: computedToaster\n          }\n        });\n        toaster.$mount(div);\n      }\n    },\n    startDismissTimer() {\n      this.clearDismissTimer();\n      if (!this.noAutoHide) {\n        this.$_dismissTimer = setTimeout(this.hide, this.resumeDismiss || this.computedDuration);\n        this.dismissStarted = Date.now();\n        this.resumeDismiss = 0;\n      }\n    },\n    clearDismissTimer() {\n      clearTimeout(this.$_dismissTimer);\n      this.$_dismissTimer = null;\n    },\n    setHoverHandler(on) {\n      const el = this.$refs['b-toast'];\n      eventOnOff(on, el, 'mouseenter', this.onPause, EVENT_OPTIONS_NO_CAPTURE);\n      eventOnOff(on, el, 'mouseleave', this.onUnPause, EVENT_OPTIONS_NO_CAPTURE);\n    },\n    onPause() {\n      // Determine time remaining, and then pause timer\n      if (this.noAutoHide || this.noHoverPause || !this.$_dismissTimer || this.resumeDismiss) {\n        return;\n      }\n      const passed = Date.now() - this.dismissStarted;\n      if (passed > 0) {\n        this.clearDismissTimer();\n        this.resumeDismiss = mathMax(this.computedDuration - passed, MIN_DURATION);\n      }\n    },\n    onUnPause() {\n      // Restart timer with max of time remaining or 1 second\n      if (this.noAutoHide || this.noHoverPause || !this.resumeDismiss) {\n        this.resumeDismiss = this.dismissStarted = 0;\n        return;\n      }\n      this.startDismissTimer();\n    },\n    onLinkClick() {\n      // We delay the close to allow time for the\n      // browser to process the link click\n      this.$nextTick(() => {\n        requestAF(() => {\n          this.hide();\n        });\n      });\n    },\n    onBeforeEnter() {\n      this.isTransitioning = true;\n    },\n    onAfterEnter() {\n      this.isTransitioning = false;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_SHOWN);\n      this.emitEvent(hiddenEvent);\n      this.startDismissTimer();\n      this.setHoverHandler(true);\n    },\n    onBeforeLeave() {\n      this.isTransitioning = true;\n    },\n    onAfterLeave() {\n      this.isTransitioning = false;\n      this.order = 0;\n      this.resumeDismiss = this.dismissStarted = 0;\n      const hiddenEvent = this.buildEvent(EVENT_NAME_HIDDEN);\n      this.emitEvent(hiddenEvent);\n      this.doRender = false;\n    },\n    // Render helper for generating the toast\n    makeToast(h) {\n      const {\n        slotScope\n      } = this;\n      const link = isLink(this);\n      const $headerContent = [];\n      const $title = this.normalizeSlot(SLOT_NAME_TOAST_TITLE, slotScope);\n      if ($title) {\n        $headerContent.push($title);\n      }\n      let $header = h();\n      if ($headerContent.length > 0) {\n        $header = h(this.headerTag, {\n          staticClass: 'toast-header',\n          class: this.headerClass\n        }, $headerContent);\n      }\n      const $body = h(link ? BLink : 'div', {\n        staticClass: 'toast-body',\n        class: this.bodyClass,\n        props: link ? pluckProps(linkProps, this) : {},\n        on: link ? {\n          click: this.onLinkClick\n        } : {}\n      }, this.normalizeSlot(SLOT_NAME_DEFAULT, slotScope));\n      return h('div', {\n        staticClass: 'toast',\n        class: this.toastClass,\n        attrs: this.computedAttrs,\n        key: `toast-${this[COMPONENT_UID_KEY]}`,\n        ref: 'toast'\n      }, [$header, $body]);\n    }\n  },\n  render(h) {\n    if (!this.doRender || !this.isMounted) {\n      return h();\n    }\n    const {\n      order,\n      static: isStatic,\n      isHiding,\n      isStatus\n    } = this;\n    const name = `b-toast-${this[COMPONENT_UID_KEY]}`;\n    const $toast = h('div', {\n      staticClass: 'b-toast',\n      class: this.toastClasses,\n      attrs: {\n        // If scoped styles are applied and the toast is not static,\n        // make sure the scoped style data attribute is applied\n        ...(isStatic ? {} : this.scopedStyleAttrs),\n        id: this.safeId('_toast_outer'),\n        role: isHiding ? null : isStatus ? 'status' : 'alert',\n        'aria-live': isHiding ? null : isStatus ? 'polite' : 'assertive',\n        'aria-atomic': isHiding ? null : 'true'\n      },\n      key: name,\n      ref: 'b-toast'\n    }, [h(BVTransition, {\n      props: {\n        noFade: this.noFade\n      },\n      on: this.transitionHandlers\n    }, [this.localShow ? this.makeToast(h) : h()])]);\n    return h(Portal, {\n      props: {\n        name,\n        to: this.computedToaster,\n        order,\n        slim: true,\n        disabled: isStatic\n      }\n    }, [$toast]);\n  }\n});\n\nexport { BToast, props };\n","import { NAME_TOAST_POP, NAME_TOASTER, NAME_TOAST } from '../../../constants/components';\nimport { HOOK_EVENT_NAME_DESTROYED, EVENT_NAME_HIDDEN, EVENT_NAME_DESTROYED, EVENT_NAME_SHOW, EVENT_NAME_HIDE } from '../../../constants/events';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { concat } from '../../../utils/array';\nimport { getComponentConfig } from '../../../utils/config';\nimport { requestAF } from '../../../utils/dom';\nimport { getRootEventName, getRootActionEventName } from '../../../utils/events';\nimport { isUndefined } from '../../../utils/inspect';\nimport { keys, omit, hasOwnProperty, defineProperty, assign, defineProperties, readonlyDescriptor } from '../../../utils/object';\nimport { pluginFactory } from '../../../utils/plugins';\nimport { warn, warnNotClient } from '../../../utils/warn';\nimport { createNewChildComponent } from '../../../utils/create-new-child-component';\nimport { getEventRoot } from '../../../utils/get-event-root';\nimport { props, BToast } from '../toast';\n\n/**\n * Plugin for adding `$bvToast` property to all Vue instances\n */\n\n// --- Constants ---\n\nconst PROP_NAME = '$bvToast';\nconst PROP_NAME_PRIV = '_bv__toast';\n\n// Base toast props that are allowed\n// Some may be ignored or overridden on some message boxes\n// Prop ID is allowed, but really only should be used for testing\n// We need to add it in explicitly as it comes from the `idMixin`\nconst BASE_PROPS = ['id', ...keys(omit(props, ['static', 'visible']))];\n\n// Map prop names to toast slot names\nconst propsToSlots = {\n  toastContent: 'default',\n  title: 'toast-title'\n};\n\n// --- Helper methods ---\n\n// Method to filter only recognized props that are not undefined\nconst filterOptions = options => {\n  return BASE_PROPS.reduce((memo, key) => {\n    if (!isUndefined(options[key])) {\n      memo[key] = options[key];\n    }\n    return memo;\n  }, {});\n};\n\n// Method to install `$bvToast` VM injection\nconst plugin = Vue => {\n  // Create a private sub-component constructor that\n  // extends BToast and self-destructs after hidden\n  // @vue/component\n  const BVToastPop = Vue.extend({\n    name: NAME_TOAST_POP,\n    extends: BToast,\n    mixins: [useParentMixin],\n    destroyed() {\n      // Make sure we not in document any more\n      const {\n        $el\n      } = this;\n      if ($el && $el.parentNode) {\n        $el.parentNode.removeChild($el);\n      }\n    },\n    mounted() {\n      // Self destruct handler\n      const handleDestroy = () => {\n        // Ensure the toast has been force hidden\n        this.localShow = false;\n        this.doRender = false;\n        this.$nextTick(() => {\n          this.$nextTick(() => {\n            // In a `requestAF()` to release control back to application\n            // and to allow the portal-target time to remove the content\n            requestAF(() => {\n              this.$destroy();\n            });\n          });\n        });\n      };\n      // Self destruct if parent destroyed\n      this.bvParent.$once(HOOK_EVENT_NAME_DESTROYED, handleDestroy);\n      // Self destruct after hidden\n      this.$once(EVENT_NAME_HIDDEN, handleDestroy);\n      // Self destruct when toaster is destroyed\n      this.listenOnRoot(getRootEventName(NAME_TOASTER, EVENT_NAME_DESTROYED), toaster => {\n        /* istanbul ignore next: hard to test */\n        if (toaster === this.toaster) {\n          handleDestroy();\n        }\n      });\n    }\n  });\n\n  // Private method to generate the on-demand toast\n  const makeToast = (props, parent) => {\n    if (warnNotClient(PROP_NAME)) {\n      /* istanbul ignore next */\n      return;\n    }\n    // Create an instance of `BVToastPop` component\n    const toast = createNewChildComponent(parent, BVToastPop, {\n      // We set parent as the local VM so these toasts can emit events on the\n      // app `$root`, and it ensures `BToast` is destroyed when parent is destroyed\n      propsData: {\n        ...filterOptions(getComponentConfig(NAME_TOAST)),\n        // Add in (filtered) user supplied props\n        ...omit(props, keys(propsToSlots)),\n        // Props that can't be overridden\n        static: false,\n        visible: true\n      }\n    });\n    // Convert certain props to slots\n    keys(propsToSlots).forEach(prop => {\n      const value = props[prop];\n      if (!isUndefined(value)) {\n        toast.$slots[propsToSlots[prop]] = concat(value);\n      }\n    });\n    // Create a mount point (a DIV) and mount it (which triggers the show)\n    const div = document.createElement('div');\n    document.body.appendChild(div);\n    toast.$mount(div);\n  };\n\n  // Declare BvToast instance property class\n  class BvToast {\n    constructor(vm) {\n      // Assign the new properties to this instance\n      assign(this, {\n        _vm: vm,\n        _root: getEventRoot(vm)\n      });\n      // Set these properties as read-only and non-enumerable\n      defineProperties(this, {\n        _vm: readonlyDescriptor(),\n        _root: readonlyDescriptor()\n      });\n    }\n\n    // --- Public Instance methods ---\n\n    // Opens a user defined toast and returns immediately\n    toast(content) {\n      let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!content || warnNotClient(PROP_NAME)) {\n        /* istanbul ignore next */\n        return;\n      }\n      makeToast({\n        ...filterOptions(options),\n        toastContent: content\n      }, this._vm);\n    }\n\n    // shows a `<b-toast>` component with the specified ID\n    show(id) {\n      if (id) {\n        this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_SHOW), id);\n      }\n    }\n\n    // Hide a toast with specified ID, or if not ID all toasts\n    hide() {\n      let id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n      this._root.$emit(getRootActionEventName(NAME_TOAST, EVENT_NAME_HIDE), id);\n    }\n  }\n\n  // Add our instance mixin\n  Vue.mixin({\n    beforeCreate() {\n      // Because we need access to `$root` for `$emits`, and VM for parenting,\n      // we have to create a fresh instance of `BvToast` for each VM\n      this[PROP_NAME_PRIV] = new BvToast(this);\n    }\n  });\n\n  // Define our read-only `$bvToast` instance property\n  // Placed in an if just in case in HMR mode\n  if (!hasOwnProperty(Vue.prototype, PROP_NAME)) {\n    defineProperty(Vue.prototype, PROP_NAME, {\n      get() {\n        /* istanbul ignore next */\n        if (!this || !this[PROP_NAME_PRIV]) {\n          warn(`\"${PROP_NAME}\" must be accessed from a Vue instance \"this\" context.`, NAME_TOAST);\n        }\n        return this[PROP_NAME_PRIV];\n      }\n    });\n  }\n};\nconst BVToastPlugin = /*#__PURE__*/pluginFactory({\n  plugins: {\n    plugin\n  }\n});\n\nexport { BVToastPlugin };\n","import { BVToastPlugin } from './helpers/bv-toast';\nimport { BToast } from './toast';\nexport { BToast } from './toast';\nimport { BToaster } from './toaster';\nexport { BToaster } from './toaster';\nimport { pluginFactory } from '../../utils/plugins';\n\nconst ToastPlugin = /*#__PURE__*/pluginFactory({\n  components: {\n    BToast,\n    BToaster\n  },\n  // $bvToast injection\n  plugins: {\n    BVToastPlugin\n  }\n});\n\nexport { ToastPlugin };\n","import isFunction from 'lodash/isFunction';\nimport { ToastPlugin } from '../../../vendor/bootstrap-vue/src/components/toast/index';\nimport CloseButton from '../../shared_components/close_button/close_button';\n\n/* eslint-disable import/no-default-export */\nconst DEFAULT_OPTIONS = {\n  autoHideDelay: 5000,\n  toastClass: 'gl-toast',\n  isStatus: true,\n  toaster: 'b-toaster-bottom-left'\n};\nlet toastsCount = 0;\nfunction renderTitle(h, toast, options) {\n  const nodes = [h(CloseButton, {\n    class: ['gl-toast-close-button'],\n    on: {\n      click: toast.hide\n    }\n  })];\n  if (options.action) {\n    nodes.splice(0, 0, h('a', {\n      role: 'button',\n      class: ['gl-toast-action'],\n      on: {\n        click: e => options.action.onClick(e, toast)\n      }\n    }, options.action.text));\n  }\n  return nodes;\n}\nfunction showToast(message) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  // eslint-disable-next-line @gitlab/tailwind-no-interpolation -- Not a CSS utility\n  const id = `gl-toast-${toastsCount}`;\n  toastsCount += 1;\n  const hide = () => {\n    this.$bvToast.hide(id);\n  };\n  const toast = {\n    id,\n    hide\n  };\n  if (isFunction(options.onComplete)) {\n    const toastHiddenCallback = e => {\n      if (e.componentId === id) {\n        this.$root.$off('bv::toast:hidden', toastHiddenCallback);\n        options.onComplete(e);\n      }\n    };\n    this.$root.$on('bv::toast:hidden', toastHiddenCallback);\n  }\n  const updatedAutoHideDelay = !Number.isNaN(options === null || options === void 0 ? void 0 : options.autoHideDelay) ? {\n    autoHideDelay: options.autoHideDelay\n  } : null;\n  this.$bvToast.toast(message, {\n    ...DEFAULT_OPTIONS,\n    ...updatedAutoHideDelay,\n    id,\n    title: renderTitle(this.$createElement, toast, options)\n  });\n  return toast;\n}\n\n/**\n * Note: This is not a typical Vue component and needs to be registered before instantiating a Vue app.\n * Once registered, the toast will be globally available throughout your app.\n *\n * See https://gitlab-org.gitlab.io/gitlab-ui/ for detailed documentation.\n */\nvar toast = {\n  install(Vue) {\n    Vue.use(ToastPlugin);\n    Vue.mixin({\n      beforeCreate() {\n        if (this.$toast) {\n          return;\n        }\n        this.$toast = {\n          show: showToast.bind(this)\n        };\n      }\n    });\n  }\n};\n\nexport default toast;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-modal',{attrs:{\"visible\":_vm.visible,\"modal-id\":_vm.modalId,\"footer-class\":\"gl-bg-gray-10 gl-p-5\",\"title-class\":\"gl-text-red-500\",\"action-primary\":_vm.modalActionProps.primary,\"action-cancel\":_vm.modalActionProps.cancel},on:{\"primary\":function($event){$event.preventDefault();return _vm.$emit('primary')},\"change\":function($event){return _vm.$emit('change', $event)}},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_vm._v(_vm._s(_vm.$options.i18n.title))]},proxy:true}])},[_vm._v(\" \"),_c('div',[_c('gl-alert',{staticClass:\"gl-mb-5\",attrs:{\"variant\":\"danger\",\"dismissible\":false}},[(_vm.isFork)?_c('h4',{staticClass:\"gl-alert-title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.isForkAlertTitle)+\"\\n      \")]):_c('h4',{staticClass:\"gl-alert-title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$options.i18n.isNotForkAlertTitle)+\"\\n      \")]),_vm._v(\" \"),_c('ul',[(_vm.issuesCount !== null)?_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.n__('%d issue', '%d issues', _vm.issuesCount)},scopedSlots:_vm._u([{key:\"issuesCount\",fn:function(){return [_vm._v(_vm._s(_vm.issuesCount))]},proxy:true}],null,false,974083504)})],1):_vm._e(),_vm._v(\" \"),(_vm.mergeRequestsCount !== null)?_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.n__('%d merge requests', '%d merge requests', _vm.mergeRequestsCount)},scopedSlots:_vm._u([{key:\"mergeRequestsCount\",fn:function(){return [_vm._v(_vm._s(_vm.mergeRequestsCount))]},proxy:true}],null,false,1682082960)})],1):_vm._e(),_vm._v(\" \"),(_vm.forksCount !== null)?_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.n__('%d fork', '%d forks', _vm.forksCount)},scopedSlots:_vm._u([{key:\"forksCount\",fn:function(){return [_vm._v(_vm._s(_vm.forksCount))]},proxy:true}],null,false,1205719312)})],1):_vm._e(),_vm._v(\" \"),(_vm.starsCount !== null)?_c('li',[_c('gl-sprintf',{attrs:{\"message\":_vm.n__('%d star', '%d stars', _vm.starsCount)},scopedSlots:_vm._u([{key:\"starsCount\",fn:function(){return [_vm._v(_vm._s(_vm.starsCount))]},proxy:true}],null,false,3725732496)})],1):_vm._e()]),_vm._v(\" \"),(_vm.isFork)?_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.isForkAlertBody}}):_c('gl-sprintf',{attrs:{\"message\":_vm.$options.i18n.isNotForkAlertBody},scopedSlots:_vm._u([{key:\"strong\",fn:function({ content }){return [_c('strong',[_vm._v(_vm._s(content))])]}}])})],1),_vm._v(\" \"),_c('p',{staticClass:\"gl-mb-1\"},[_vm._v(_vm._s(_vm.$options.i18n.confirmText))]),_vm._v(\" \"),_c('p',[_c('code',{staticClass:\"gl-whitespace-pre-wrap\"},[_vm._v(_vm._s(_vm.confirmPhrase))])]),_vm._v(\" \"),_c('gl-form-input',{attrs:{\"id\":\"confirm_name_input\",\"name\":\"confirm_name_input\",\"type\":\"text\",\"data-testid\":\"confirm-name-field\"},model:{value:(_vm.userInput),callback:function ($$v) {_vm.userInput=$$v},expression:\"userInput\"}}),_vm._v(\" \"),_vm._t(\"modal-footer\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./delete_modal.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./delete_modal.vue?vue&type=script&lang=js\"","<script>\nimport { GlModal, GlAlert, GlSprintf, GlFormInput } from '@gitlab/ui';\nimport uniqueId from 'lodash/uniqueId';\nimport { __ } from '~/locale';\n\nexport default {\n  i18n: {\n    deleteProject: __('Delete project'),\n    title: __('Are you absolutely sure?'),\n    confirmText: __('Enter the following to confirm:'),\n    isForkAlertTitle: __('You are about to delete this forked project containing:'),\n    isNotForkAlertTitle: __('You are about to delete this project containing:'),\n    isForkAlertBody: __('This process deletes the project repository and all related resources.'),\n    isNotForkAlertBody: __(\n      'This project is %{strongStart}NOT%{strongEnd} a fork. This process deletes the project repository and all related resources.',\n    ),\n    isNotForkMessage: __(\n      'This project is %{strongStart}NOT%{strongEnd} a fork, and has the following:',\n    ),\n  },\n  components: { GlModal, GlAlert, GlSprintf, GlFormInput },\n  model: {\n    prop: 'visible',\n    event: 'change',\n  },\n  props: {\n    visible: {\n      type: Boolean,\n      required: true,\n    },\n    confirmPhrase: {\n      type: String,\n      required: true,\n    },\n    isFork: {\n      type: Boolean,\n      required: true,\n    },\n    confirmLoading: {\n      type: Boolean,\n      required: false,\n      default: false,\n    },\n    issuesCount: {\n      type: [Number, String],\n      required: false,\n      default: null,\n    },\n    mergeRequestsCount: {\n      type: [Number, String],\n      required: false,\n      default: null,\n    },\n    forksCount: {\n      type: [Number, String],\n      required: false,\n      default: null,\n    },\n    starsCount: {\n      type: [Number, String],\n      required: false,\n      default: null,\n    },\n  },\n  data() {\n    return {\n      userInput: null,\n      modalId: uniqueId('delete-project-modal-'),\n    };\n  },\n  computed: {\n    confirmDisabled() {\n      return this.userInput !== this.confirmPhrase;\n    },\n    modalActionProps() {\n      return {\n        primary: {\n          text: __('Yes, delete project'),\n          attributes: {\n            variant: 'danger',\n            disabled: this.confirmDisabled,\n            loading: this.confirmLoading,\n            'data-testid': 'confirm-delete-button',\n          },\n        },\n        cancel: {\n          text: __('Cancel, keep project'),\n        },\n      };\n    },\n  },\n  watch: {\n    confirmLoading(isLoading, wasLoading) {\n      // If the button was loading and now no longer is\n      if (!isLoading && wasLoading) {\n        // Hide the modal\n        this.$emit('change', false);\n      }\n    },\n  },\n};\n</script>\n\n<template>\n  <gl-modal\n    :visible=\"visible\"\n    :modal-id=\"modalId\"\n    footer-class=\"gl-bg-gray-10 gl-p-5\"\n    title-class=\"gl-text-red-500\"\n    :action-primary=\"modalActionProps.primary\"\n    :action-cancel=\"modalActionProps.cancel\"\n    @primary.prevent=\"$emit('primary')\"\n    @change=\"$emit('change', $event)\"\n  >\n    <template #modal-title>{{ $options.i18n.title }}</template>\n    <div>\n      <gl-alert class=\"gl-mb-5\" variant=\"danger\" :dismissible=\"false\">\n        <h4 v-if=\"isFork\" class=\"gl-alert-title\">\n          {{ $options.i18n.isForkAlertTitle }}\n        </h4>\n        <h4 v-else class=\"gl-alert-title\">\n          {{ $options.i18n.isNotForkAlertTitle }}\n        </h4>\n        <ul>\n          <li v-if=\"issuesCount !== null\">\n            <gl-sprintf :message=\"n__('%d issue', '%d issues', issuesCount)\">\n              <template #issuesCount>{{ issuesCount }}</template>\n            </gl-sprintf>\n          </li>\n          <li v-if=\"mergeRequestsCount !== null\">\n            <gl-sprintf\n              :message=\"n__('%d merge requests', '%d merge requests', mergeRequestsCount)\"\n            >\n              <template #mergeRequestsCount>{{ mergeRequestsCount }}</template>\n            </gl-sprintf>\n          </li>\n          <li v-if=\"forksCount !== null\">\n            <gl-sprintf :message=\"n__('%d fork', '%d forks', forksCount)\">\n              <template #forksCount>{{ forksCount }}</template>\n            </gl-sprintf>\n          </li>\n          <li v-if=\"starsCount !== null\">\n            <gl-sprintf :message=\"n__('%d star', '%d stars', starsCount)\">\n              <template #starsCount>{{ starsCount }}</template>\n            </gl-sprintf>\n          </li>\n        </ul>\n        <gl-sprintf v-if=\"isFork\" :message=\"$options.i18n.isForkAlertBody\" />\n        <gl-sprintf v-else :message=\"$options.i18n.isNotForkAlertBody\">\n          <template #strong=\"{ content }\">\n            <strong>{{ content }}</strong>\n          </template>\n        </gl-sprintf>\n      </gl-alert>\n      <p class=\"gl-mb-1\">{{ $options.i18n.confirmText }}</p>\n      <p>\n        <code class=\"gl-whitespace-pre-wrap\">{{ confirmPhrase }}</code>\n      </p>\n\n      <gl-form-input\n        id=\"confirm_name_input\"\n        v-model=\"userInput\"\n        name=\"confirm_name_input\"\n        type=\"text\"\n        data-testid=\"confirm-name-field\"\n      />\n      <slot name=\"modal-footer\"></slot>\n    </div>\n  </gl-modal>\n</template>\n","import { render, staticRenderFns } from \"./delete_modal.vue?vue&type=template&id=55ed9f0e\"\nimport script from \"./delete_modal.vue?vue&type=script&lang=js\"\nexport * from \"./delete_modal.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"sourceRoot":""}