{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/modules/permission/mutation-types.ts","webpack:///./src/store/modules/permission/action-types.ts","webpack:///./src/store/modules/permission/mutations.ts","webpack:///./src/store/modules/permission/actions.ts","webpack:///./src/store/modules/permission/state.ts","webpack:///./src/store/modules/permission/index.ts","webpack:///./src/store/modules/user/state.ts","webpack:///./src/store/modules/user/mutations.ts","webpack:///./src/store/modules/user/actions.ts","webpack:///./src/store/modules/user/index.ts","webpack:///./src/store/modules/portait/state.ts","webpack:///./src/store/modules/portait/mutations.ts","webpack:///./src/store/modules/portait/index.ts","webpack:///./src/store/index.ts","webpack:///./src/App.vue?c0e4","webpack:///./src/components/header/Comheader.vue?d604","webpack:///./src/components/header/Comheader.vue?0680","webpack:///./src/components/header/Comheader.vue?4c07","webpack:///./src/components/header/Comheader.vue","webpack:///./src/utils/cookies.ts","webpack:///./src/constant/headers.ts","webpack:///./src/constant/network.ts","webpack:///./src/constant/settings.ts","webpack:///./src/config/default/setting.config.ts","webpack:///./src/config/default/net.config.ts","webpack:///./src/utils/https.ts","webpack:///./src/constant/key.ts","webpack:///./src/utils/flexible.js","webpack:///./src/store/modules/portait/mutation-types.ts","webpack:///./src/store/modules/user/mutation-types.ts","webpack:///./src/router/index.ts","webpack:///./src/styles/index.scss?d239","webpack:///./src/App.vue?2758","webpack:///./src/App.vue?3acc","webpack:///./src/App.vue","webpack:///./src/permission.ts","webpack:///./src/main.ts","webpack:///./src/store/modules/user/action-types.ts","webpack:///./src/utils/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","jsonpArray","window","oldJsonpFunction","slice","PermissionMutationType","PermissionActionType","mutations","SET_ROUTES","state","routes","concat","dynamicRoutes","hasPermission","roles","route","meta","some","role","includes","filterAsyncRoutes","res","forEach","children","actions","ACTION_SET_ROUTES","accessedRoutes","commit","token","openid","userName","userId","id","userPhone","phone","projectId","companyId","mac","remoteControl","SET_TOKEN","SET_USER_MAC","SET_USER_NAME","SET_USER_ID","SET_USER_PHONE","SET_PROJECT_ID","SET_COMPANY_ID","SET_REMOTECONTROL","ACTION_LOGIN","userInfo","ACTION_RESET_TOKEN","ACTION_GET_USER_INFO","JSON","stringify","macAdr","ACTION_CHANGE_ROLES","store","useStore","dispatch","permission","item","router","addRoute","ACTION_LOGIN_OUT","airConditioner","light","SET_AIR","SET_LIGHT","debug","plugins","user","portait","_hoisted_1","class","render","_ctx","_cache","$props","$setup","$data","$options","_component_VanIcon","style","background","color","onClick","goBack","title","title1","metaObj","showLogoOut","goLogin","props","String","default","components","VanIcon","setup","proxyData","toName","go","query","__exports__","getToken","tokenKey","getProjectId","setProjectId","set","setToken","removeToken","remove","setCookieMac","macKey","getCookieMac","getSessionUserInfo","sessionStorage","getItem","userInfoKey","parse","setSessionUserInfo","setItem","ContentType","Device","InfoShowType","Environment","RouterSource","RouterMode","TokenStorageName","settings","baseURL","copyright","keepAliveMaxNum","routerMode","Hash","routesWhiteList","loadingText","tokenName","tokenTableName","storage","LocalStorage","recordRoute","logo","errorLog","Development","loginInterception","loginRSA","routerSource","Backend","rolesControl","uniqueOpened","defaultOpeneds","debounce","templateFolder","openFirstMenu","version","_header","contentType","device","PC","networkConfig","host","loading","errorShowType","LOG","header","staticUrl","configobj","config","headers","https","httpClient","interceptors","use","comInfo","comParams","url","indexOf","post","resData","status","catch","getUrlParams","location","search","theRequest","str","substr","strs","split","Keys","win","lib","tid","doc","docEl","documentElement","metaEl","querySelector","flexibleEl","dpr","scale","flexible","match","parseFloat","parseInt","content","initialDpr","maximumDpr","toFixed","navigator","appVersion","isIPhone","devicePixelRatio","firstElementChild","wrap","write","innerHTML","refreshRem","width","getBoundingClientRect","rem","fontSize","addEventListener","persisted","readyState","body","rem2px","val","this","px2rem","PortaitMutationTypes","UserMutationTypes","Home","Envmonitor","EnvmonitorDetail","UserPortrait","EnergySavig","EnergyDetail","TodayEnergyDetail","EnergyRank","IntegralDesc","Record","MySpace","constantRoutes","path","redirect","hideHeader","component","asyncRoutes","history","resetRouter","newRouter","matcher","_component_Header","_component_router_view","fullPath","Header","transitionName","showHeader","getPadVersion","a","pad_mtime","oldTime","localStorage","reload","timerPadVersion","setInterval","touches","preventDefault","beforeEach","to","_","next","afterEach","app","App","duration","forbidClick","clear","globalProperties","$imgUrl","$fileUrl","$toast","$loadingStart","$loadinngEnd","mount","UserActionTypes","setQueryConfig","queryConfig","_str","substring","getUserInfo","paramsInfo","pubname","formatDate","date","Date","dates","year","getFullYear","month","getMonth","day","getDate","Hours","getHours","Minutes","getMinutes","formatDateStr","replace","getTomorrow","setTime","getTime","Year","Months","parseImgUrl","base","img","getAddYear","time","setFullYear","y","getPreMonth","formatType","nowdays","formatEnergyDate","months","hours","minutes","setSession","obj","getSession","setLocalStorage","getLocalStorage","setLocalNewSpaceInfo","spaceInfo","storageSpaceInfoKey","localStorageSpaceId","buildingId","floorId","spaceId","spaceMap","storageSpaceKey","getStorageSpaceId","localStorageFloor","floorMap","storageFloorKey","getLocalStorageFloor","setLocalSearchSpace","historySearch","historySearchSpaceKey","flag","map","historyItem","getLocalSearchSpace","getWeekDate","weeks","Array","week","getNowWeek","getDay","nowWeek","getTimers","timers","getNowTime","minute","index","getRelNowTime","formatTimerStr","timer","newNumber","start","end","masAddess","Math","round","random","formateTimeContinuous","startTime","endTime","that","todayDate","tomorrowData","nowDate","tomorrowDate","text","cusStartTime","cusEndTime","customSceneList","nowIndex","nowTime","startText"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAG/Be,GAAqBA,EAAoBhB,GAE5C,MAAMO,EAASC,OACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAGnBC,EAAqB,CACxB,IAAO,GAMJjB,EAAkB,CACrB,IAAO,GAGJK,EAAkB,GAGtB,SAASa,EAAe7B,GACvB,OAAOyB,EAAoBK,EAAI,cAAgB,GAAG9B,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,MAInsB,SAASyB,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAUgC,QAGnC,IAAIC,EAASL,EAAiB5B,GAAY,CACzCK,EAAGL,EACHkC,GAAG,EACHF,QAAS,IAUV,OANAlB,EAAQd,GAAUW,KAAKsB,EAAOD,QAASC,EAAQA,EAAOD,QAASN,GAG/DO,EAAOC,GAAI,EAGJD,EAAOD,QAKfN,EAAoBS,EAAI,SAAuBlC,GAC9C,IAAImC,EAAW,GAIXC,EAAY,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,GACxYR,EAAmB5B,GAAUmC,EAASvB,KAAKgB,EAAmB5B,IACzB,IAAhC4B,EAAmB5B,IAAkBoC,EAAUpC,IACtDmC,EAASvB,KAAKgB,EAAmB5B,GAAW,IAAIqC,SAAQ,SAASC,EAASC,GAIzE,IAHA,IAAIC,EAAO,eAAiB,GAAGxC,IAAUA,GAAW,IAAM,CAAC,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,WAAW,iBAAiB,YAAYA,GAAW,OAC3qByC,EAAWhB,EAAoBK,EAAIU,EACnCE,EAAmBC,SAASC,qBAAqB,QAC7CxC,EAAI,EAAGA,EAAIsC,EAAiBpC,OAAQF,IAAK,CAChD,IAAIyC,EAAMH,EAAiBtC,GACvB0C,EAAWD,EAAIE,aAAa,cAAgBF,EAAIE,aAAa,QACjE,GAAe,eAAZF,EAAIG,MAAyBF,IAAaN,GAAQM,IAAaL,GAAW,OAAOH,IAErF,IAAIW,EAAoBN,SAASC,qBAAqB,SACtD,IAAQxC,EAAI,EAAGA,EAAI6C,EAAkB3C,OAAQF,IAAK,CAC7CyC,EAAMI,EAAkB7C,GACxB0C,EAAWD,EAAIE,aAAa,aAChC,GAAGD,IAAaN,GAAQM,IAAaL,EAAU,OAAOH,IAEvD,IAAIY,EAAUP,SAASQ,cAAc,QACrCD,EAAQF,IAAM,aACdE,EAAQE,KAAO,WACfF,EAAQG,OAASf,EACjBY,EAAQI,QAAU,SAASC,GAC1B,IAAIC,EAAUD,GAASA,EAAME,QAAUF,EAAME,OAAOC,KAAOjB,EACvDkB,EAAM,IAAIC,MAAM,qBAAuB5D,EAAU,cAAgBwD,EAAU,KAC/EG,EAAIE,KAAO,wBACXF,EAAIH,QAAUA,SACP5B,EAAmB5B,GAC1BkD,EAAQY,WAAWC,YAAYb,GAC/BX,EAAOoB,IAERT,EAAQV,KAAOC,EAEf,IAAIuB,EAAOrB,SAASC,qBAAqB,QAAQ,GACjDoB,EAAKC,YAAYf,MACfgB,MAAK,WACPtC,EAAmB5B,GAAW,MAMhC,IAAImE,EAAqBxD,EAAgBX,GACzC,GAA0B,IAAvBmE,EAGF,GAAGA,EACFhC,EAASvB,KAAKuD,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAI/B,SAAQ,SAASC,EAASC,GAC3C4B,EAAqBxD,EAAgBX,GAAW,CAACsC,EAASC,MAE3DJ,EAASvB,KAAKuD,EAAmB,GAAKC,GAGtC,IACIC,EADAC,EAAS3B,SAASQ,cAAc,UAGpCmB,EAAOC,QAAU,QACjBD,EAAOE,QAAU,IACb/C,EAAoBgD,IACvBH,EAAOI,aAAa,QAASjD,EAAoBgD,IAElDH,EAAOZ,IAAM7B,EAAe7B,GAG5B,IAAI2E,EAAQ,IAAIf,MAChBS,EAAmB,SAAUd,GAE5Be,EAAOhB,QAAUgB,EAAOjB,OAAS,KACjCuB,aAAaJ,GACb,IAAIK,EAAQlE,EAAgBX,GAC5B,GAAa,IAAV6E,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYvB,IAAyB,SAAfA,EAAMH,KAAkB,UAAYG,EAAMH,MAChE2B,EAAUxB,GAASA,EAAME,QAAUF,EAAME,OAAOC,IACpDiB,EAAMK,QAAU,iBAAmBhF,EAAU,cAAgB8E,EAAY,KAAOC,EAAU,IAC1FJ,EAAMM,KAAO,iBACbN,EAAMvB,KAAO0B,EACbH,EAAMnB,QAAUuB,EAChBF,EAAM,GAAGF,GAEVhE,EAAgBX,QAAWkF,IAG7B,IAAIV,EAAUW,YAAW,WACxBd,EAAiB,CAAEjB,KAAM,UAAWK,OAAQa,MAC1C,MACHA,EAAOhB,QAAUgB,EAAOjB,OAASgB,EACjC1B,SAASqB,KAAKC,YAAYK,GAG5B,OAAOjC,QAAQ+C,IAAIjD,IAIpBV,EAAoB4D,EAAIxE,EAGxBY,EAAoB6D,EAAI3D,EAGxBF,EAAoB8D,EAAI,SAASxD,EAASkD,EAAMO,GAC3C/D,EAAoBgE,EAAE1D,EAASkD,IAClC1E,OAAOmF,eAAe3D,EAASkD,EAAM,CAAEU,YAAY,EAAMC,IAAKJ,KAKhE/D,EAAoBoE,EAAI,SAAS9D,GACX,qBAAX+D,QAA0BA,OAAOC,aAC1CxF,OAAOmF,eAAe3D,EAAS+D,OAAOC,YAAa,CAAEC,MAAO,WAE7DzF,OAAOmF,eAAe3D,EAAS,aAAc,CAAEiE,OAAO,KAQvDvE,EAAoBwE,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQvE,EAAoBuE,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,kBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAK7F,OAAO8F,OAAO,MAGvB,GAFA5E,EAAoBoE,EAAEO,GACtB7F,OAAOmF,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOvE,EAAoB8D,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIR3E,EAAoB+E,EAAI,SAASxE,GAChC,IAAIwD,EAASxD,GAAUA,EAAOmE,WAC7B,WAAwB,OAAOnE,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADAP,EAAoB8D,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR/D,EAAoBgE,EAAI,SAASgB,EAAQC,GAAY,OAAOnG,OAAOC,UAAUC,eAAeC,KAAK+F,EAAQC,IAGzGjF,EAAoBK,EAAI,WAGxBL,EAAoBkF,GAAK,SAAShD,GAA2B,MAAMA,GAEnE,IAAIiD,EAAaC,OAAO,gBAAkBA,OAAO,iBAAmB,GAChEC,EAAmBF,EAAWhG,KAAK2F,KAAKK,GAC5CA,EAAWhG,KAAOf,EAClB+G,EAAaA,EAAWG,QACxB,IAAI,IAAI3G,EAAI,EAAGA,EAAIwG,EAAWtG,OAAQF,IAAKP,EAAqB+G,EAAWxG,IAC3E,IAAIU,EAAsBgG,EAI1B9F,EAAgBJ,KAAK,CAAC,EAAE,kBAEjBM,K,qJCnQG8F,E,qCAAZ,SAAYA,GACR,8BADJ,CAAYA,MAAsB,K,ICPtBC,E,YCiBCC,EAAS,kBACnBF,EAAuBG,YADJ,SACgBC,EAAwBC,GAC1DD,EAAMC,OAAS,OAAeC,OAAOD,GACrCD,EAAMG,cAAgBF,K,iEDpB1B,SAAYJ,GACR,4CADJ,CAAYA,MAAoB,KEgBhC,I,MAAMO,EAAgB,SAACC,EAAiBC,GACtC,OAAIA,EAAMC,OAAQD,EAAMC,KAAKF,OACpBA,EAAMG,MAAK,SAAAC,GAAO,MACvB,QAA0B3C,KAAtB,UAAAwC,EAAMC,YAAN,eAAYF,OACd,OAAOC,EAAMC,KAAKF,MAAMK,SAASD,OAQ5B,EAAoB,SAApBE,EAAqBV,EAA0BI,GAC1D,IAAMO,EAAwB,GAU9B,OATAX,EAAOY,SAAQ,SAAAP,GACb,IAAM7B,EAAI,kBAAK6B,GACXF,EAAcC,EAAO5B,KACnBA,EAAEqC,WACJrC,EAAEqC,SAAWH,EAAkBlC,EAAEqC,SAAUT,IAE7CO,EAAIpH,KAAKiF,OAGNmC,GASIG,EAAO,kBACjBlB,EAAqBmB,mBADJ,WAGdX,GAAe,IACbY,EAFFC,EACe,EADfA,OAIAD,EADEZ,EAAMK,SAAS,SACA,OAEA,EAAkB,OAAaL,GAElDa,EAAOtB,EAAuBG,WAAYkB,MC3CjC,EAAyB,CACpChB,OAAQ,GACRE,cAAe,ICWJ,EAA4C,CACvDH,MAAA,EACAF,YACAiB,W,oCChBW,EAAmB,CAC9BI,MAAO,kBAAc,GACrBC,OAAQ,OAAKA,OACbC,SAAU,iBAAuB,iBAAqBxD,KAAO,GAC7DyD,OAAQ,iBAAuB,iBAAqBC,GAAK,GACzDC,UAAW,iBAAuB,iBAAqBC,MAAQ,EAC/DC,UAAW,iBAAe,iBAAe,GACzCC,UAAW,GACXC,IAAK,iBAAiB,iBAAiB,GACvCC,eAAe,G,YCNJ,GAAS,sBACnB,OAAkBC,WADC,SACU9B,EAAkBmB,GAC9CnB,EAAMmB,MAAQA,KAFI,iBAInB,OAAkBY,cAJC,SAIa/B,EAAkB4B,GACjD5B,EAAM4B,IAAMA,KALM,iBAQnB,OAAkBI,eARC,SAQchC,EAAkBqB,GAClDrB,EAAMqB,SAAWA,KATC,iBAYnB,OAAkBY,aAZC,SAYYjC,EAAkBsB,GAChDtB,EAAMsB,OAASA,KAbG,iBAenB,OAAkBY,gBAfC,SAeelC,EAAkBwB,GACnDxB,EAAMwB,UAAYA,KAhBA,iBAkBnB,OAAkBW,gBAlBC,SAkBenC,EAAkB0B,GAEnD,eAAaA,GAEb1B,EAAM0B,UAAYA,KAtBA,iBAwBnB,OAAkBU,gBAxBC,SAwBepC,EAAkB2B,GACnD3B,EAAM2B,UAAYA,KAzBA,iBA2BnB,OAAkBU,mBA3BC,SA2BkBrC,EAAkB6B,GACtD7B,EAAM6B,cAAgBA,KA5BJ,G,oCCgCT,G,UAAO,sBACX,OAAgBS,cADL,WAGhBC,GAAgD,mJAD9CrB,EAC8C,EAD9CA,OASFA,EAAO,OAAkBY,UAAW,mhBARY,gDAHhC,iBAkBjB,OAAgBU,oBAlBC,YAmBkB,IAAhCtB,EAAgC,EAAhCA,OACF,iBACAA,EAAO,OAAkBY,UAAW,OArBpB,iBAwBX,OAAgBW,sBAxBL,YAwB6D,uJAAhCvB,EAAgC,EAAhCA,OAEvCqB,EAAgB,CAEpBlB,SAAU,QAEVG,UAAW,YAEXF,OAAO,SAIT,eAAmBoB,KAAKC,UAAUJ,IAClCrB,EAAO,OAAkBc,cAAeO,EAASlB,UACjDH,EAAO,OAAkBgB,eAAgBK,EAASd,OAClDP,EAAO,OAAkBe,YAAaM,EAASjB,QAC3CsB,EAAc,iBAClB1B,EAAO,OAAkBa,aAAca,GAjBsC,gDAxB7D,iBA+DX,OAAgBC,qBA/DL,WAiEhBpC,GAAY,8JADVS,EACU,EADVA,OAGIC,EAAQV,EAAO,SACfqC,EAAQC,IACd7B,EAAO,OAAkBY,UAAWX,GACpC,eAASA,GALG,SAMN2B,EAAME,SAAS,OAAgBP,0BAAsB3E,GAN/C,OAOZgF,EAAME,SAASnD,EAAqBmB,kBAAmB,IACvD8B,EAAM9C,MAAMiD,WAAW9C,cAAcU,SAAQ,SAACqC,GAC5CC,EAAA,KAAOC,SAASF,MATN,gDAjEI,iBA8EjB,OAAgBG,kBA9EC,YA+EkB,IAAhCnC,EAAgC,EAAhCA,OAGF,iBACAA,EAAO,OAAkBY,UAAW,IAEpC,oBArFgB,GCpBP,EAAsC,CACjD9B,MAAA,EACAF,UAAA,EACAiB,QAAA,G,YC1BW,EAAsB,CACjCuC,gBAAgB,eAAW,kBAAkBA,gBAAiB,eAAW,kBAAkBA,eAC3FC,OAAO,eAAW,kBAAkBA,OAAQ,eAAW,kBAAkBA,O,YCA9D,GAAS,sBACnB,OAAqBC,SADF,SACWxD,EAAqBsD,GAClDtD,EAAMsD,eAAiBA,KAFL,iBAInB,OAAqBG,WAJF,SAIazD,EAAqBuD,GACpDvD,EAAMuD,MAAQA,KALI,GCaT,EAAyC,CACpDvD,MAAA,EACAF,UAAA,GCTI4D,GAAQ,EACRC,EAAUD,EAAQ,CAAC,eAAa,KAAO,GAIhC,EAAQ,eAAY,CAC/BC,UACAlK,QAAS,CACPwJ,WAAA,EACAW,KAAA,EACAC,QAAA,KAIE,SAAUd,IACd,OAAO,I,oCC9BT,W,oCCAA,W,oDCGMe,EAAa,CAAEC,MAAO,gBAEtB,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAMC,EAAqB,8BAAkB,WAE7C,OAAQ,yBAAc,gCAAoB,MAAO,CAC/CR,MAAO,iBACPxC,GAAI,SACJiD,MAAO,4BAAgB,CAAEC,WAAYR,EAAKS,SACzC,CACD,gCAAoB,MAAO,CACzBX,MAAO,SACPS,MAAO,4BAAgB,CAAEC,WAAYR,EAAKS,SACzC,CACD,gCAAoB,MAAO,CACzBX,MAAO,gBACPY,QAAST,EAAO,KAAOA,EAAO,GAEtC,kBAAcD,EAAKW,QAAUX,EAAKW,OAAL,MAAAX,EAAI,cACxB,CACD,yBAAaM,EAAoB,CAAE1G,KAAM,iBAE3C,gCAAoB,MAAOiG,EAAY,CACrC,gCAAoB,OAAQ,KAAM,6BAAiBG,EAAK3D,MAAMC,KAAKsE,OAAQ,GAC3E,gCAAoB,OAAQ,KAAM,6BAAiBZ,EAAK3D,MAAMC,KAAKuE,QAAS,KAE7Eb,EAAKc,QAAQC,aACT,yBAAc,gCAAoB,MAAO,CACxC9F,IAAK,EACL6E,MAAO,eACPY,QAAST,EAAO,KAAOA,EAAO,GAE1C,kBAAcD,EAAKgB,SAAWhB,EAAKgB,QAAL,MAAAhB,EAAI,cACrB,SACH,gCAAoB,IAAI,IAC3B,IACF,G,gECjCU,+BAAgB,CAC7BiB,MAAO,CACLR,MAAO,CACL1I,KAAMmJ,OACNC,QAAS,iBAAM,SAEjBL,QAAS,CACP/I,KAAM7C,OACNiM,QAAS,WACP,MAAO,MAQbC,WAAY,CACVC,QAAS,QAEXC,MApB6B,SAoBvBL,GACJ,IAAM/B,EAAS,iBACT7C,EAAa,iBACbkF,EAAY,sBAAS,CACzBlF,MAAOA,EACPsE,OAFyB,WAGnBtE,EAAMC,KAAKkF,OACbtC,EAAO3J,KAAK,CAAEqE,KAAMyC,EAAMC,KAAKkF,SAE/BtC,EAAOuC,IAAI,IAGfT,QATyB,WAUvB,IAAIrD,EAAW,iBACfuB,EAAO3J,KAAK,CACVqE,KAAM,OACN8H,MAAO,CAAE/D,IAAKA,EAAK5F,KAAM,gBAO/B,OAHA,wBAAU,eAGV,kBACK,oBAAOwJ,O,iCC3ChB,MAAMI,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAAS5B,GAAQ,CAAC,YAAY,qBAE1E,U,kCCTf,uVAMa6B,EAAW,kBAAM,IAAQrH,IAAI,OAAKsH,WAClCC,EAAe,kBAAM,IAAQvH,IAAI,OAAKkD,YACtCsE,EAAe,SAACtE,GAAD,OAAoB,IAAQuE,IAAI,OAAKvE,UAAWA,IAC/DwE,EAAW,SAAC/E,GAAD,OAAmB,IAAQ8E,IAAI,OAAKH,SAAU3E,IACzDgF,EAAc,kBAAM,IAAQC,OAAO,OAAKN,WAExCO,EAAe,SAACzE,GAAD,OAAc,IAAQqE,IAAI,OAAKK,OAAQ1E,IACtD2E,EAAe,WAC1B,OAAO,IAAQ/H,IAAI,OAAK8H,SAWbE,EAAqB,WAChC,IAAIjE,EAAgBkE,eAAeC,QAAQ,OAAKC,aAChD,OAAIpE,EACKG,KAAKkE,MAAMrE,GAEX,IAGEsE,EAAqB,SAACtE,GAAD,OAAmBkE,eAAeK,QAAQ,OAAKH,YAAapE,K,0MCjClFwE,EAKAC,ECLAC,ECAAC,EAKAC,EAKAC,EAKAC,E,yBFfZ,SAAYN,GACR,8CACA,6CAFJ,CAAYA,MAAW,KAKvB,SAAYC,GAIR,aAJJ,CAAYA,MAAM,KCLlB,SAAYC,GACP,oBAEA,wBAHL,CAAYA,MAAY,KCAxB,SAAYC,GACR,+BACA,6BAFJ,CAAYA,MAAW,KAKvB,SAAYC,GACR,yBACA,uBAFJ,CAAYA,MAAY,KAKxB,SAAYC,GACR,iBADJ,CAAYA,MAAU,KAKtB,SAAYC,GACR,iCAEA,qBAHJ,CAAYA,MAAgB,KCmC5B,I,EAAMC,EAAqB,CAEzBzC,MAAM,OAEN0C,QAAS,WAETC,UAAW,KAEXC,gBAAiB,GAEjBC,WAAYN,EAAWO,KAEvBC,gBAAiB,GAEjBC,YAAa,UAEbC,UAAW,QAEXC,eAAgB,QAEhBC,QAASX,EAAiBY,aAE1BC,aAAa,EAEbC,KAAM,GAENC,SAAUlB,EAAYmB,YAEtBC,mBAAmB,EAEnBC,UAAU,EAEVC,aAAcrB,EAAasB,QAE3BC,cAAc,EAEdC,cAAc,EAEdC,eAAgB,CAAC,QAEjBC,SAAU,CAAC,UAEXC,eAAgB,UAEhBC,eAAe,EACfC,QAAS,OAGI,ICvFTC,EAAmB,CACvB9H,MAAO,GACP+H,YAAanC,EAAYrE,KACzBsG,QAAO,UAAE,EAASA,eAAX,QAAsB,MAC7BG,OAAQnC,EAAOoC,IAYXC,EAA+B,CACnCC,KAAM,WACNlM,QAAS,IACTmM,SAAS,EACTC,cAAevC,EAAawC,IAC5BC,OAAQT,EACRU,UAAU,kCAGG,I,oCC3BF,EAAQ,WAAqC,IAApCC,EAAoC,uDAAnB,CAAExM,QAAS,IAE5CyM,EAA2B,CAC7BtC,QAAS,EAAc+B,KACvBQ,QAAS,CACP,MAAS,iBACT,YAAa,iBACb,oBAAqB,mBAGrBF,EAAUxM,UACZyM,EAAOzM,QAAUwM,EAAUxM,SAE7B,IAAM2M,EAAQ,IAAI,OAAWF,GA6B7B,OA5BAE,EAAMC,WAAWC,aAAa7N,QAAQ8N,KAAI,SAAU9N,GAClD,IAAI+N,EAAU,iBAERC,EAAoB,eAAeD,GACrCE,EAAWjO,EAAQiO,IAMvB,OALyB,GAArBA,EAAIC,QAAQ,KACdlO,EAAQiO,IAAMjO,EAAQiO,IAAM,IAAMD,EAElChO,EAAQiO,IAAMjO,EAAQiO,IAAM,IAAMD,EAE7BhO,KACN,SAAUmB,OAiBNwM,GAGI,EAAO,SAACM,EAAU3R,GAC7B,OAAO,IAAQsR,WAAWO,KAAiBF,EAAK3R,GAAMoE,MAAK,SAAA8D,GACzD,IAAM4J,EAAkB9H,KAAKkE,MAAMlE,KAAKC,UAAU/B,EAAIlI,OACtD,OAAIkI,EAAI6J,QAAU,KAAO7J,EAAI6J,OAAS,IAC7BxP,QAAQC,QAAQsP,GAEhBvP,QAAQE,OAAOqP,MAEvBE,MAPI,yDAOE,WAAMnN,GAAN,0GACAtC,QAAQE,OAAOoC,IADf,2CAPF,wDAYIoN,EAAe,WAA6B,IAA5BzL,EAA4B,uDAAjB,cAClCmL,EAAWO,SAASC,OACpBC,EAAkB,IAAI3R,OAC1B,IAAyB,GAArBkR,EAAIC,QAAQ,KAGd,IAFA,IAAIS,EAAWV,EAAIW,OAAO,GACtBC,EAAYF,EAAIG,MAAM,KACjBlS,EAAI,EAAGA,EAAIiS,EAAK/R,OAAQF,IAC/B8R,EAAWG,EAAKjS,GAAGkS,MAAM,KAAK,IAAMD,EAAKjS,GAAGkS,MAAM,KAAK,GAG3D,IAAI/J,EAAgB2J,EAAW5L,IAAQ,GACvC,OAAOiC,I,gEC9EHgK,E,oDAAAA,E,mBACsB,0C,eADtBA,E,cAEiB,qC,eAFjBA,E,UAGa,iC,eAHbA,E,WAIc,e,eAJdA,E,YAKe,a,eALfA,E,SAMY,iC,eANZA,E,aAOgB,oC,eAPhBA,E,SAQY,oC,eARZA,E,UAUa,e,eAVbA,E,WAWc,0B,eAXdA,E,kBAYqB,gB,eAZrBA,E,wBAa2B,sB,eAb3BA,E,kBAcqB,gB,eAdrBA,E,sBAeyB,oB,eAfzBA,E,cAgBiB,Y,eAhBjBA,E,SAiBY,OAGH,U,8ECpBd,SAAUC,EAAKC,GACZ,IAMIC,EANAC,EAAMH,EAAI7P,SACViQ,EAAQD,EAAIE,gBACZC,EAASH,EAAII,cAAc,yBAC3BC,EAAaL,EAAII,cAAc,yBAC/BE,EAAM,EACNC,EAAQ,EAERC,EAAWV,EAAIU,WAAaV,EAAIU,SAAW,IAE/C,GAAIL,EAAQ,CAER,IAAIM,EAAQN,EAAO/P,aAAa,WAAWqQ,MAAM,4BAC7CA,IACAF,EAAQG,WAAWD,EAAM,IACzBH,EAAMK,SAAS,EAAIJ,SAEpB,GAAIF,EAAY,CACnB,IAAIO,EAAUP,EAAWjQ,aAAa,WACtC,GAAIwQ,EAAS,CACT,IAAIC,EAAaD,EAAQH,MAAM,0BAC3BK,EAAaF,EAAQH,MAAM,0BAC3BI,IACAP,EAAMI,WAAWG,EAAW,IAC5BN,EAAQG,YAAY,EAAIJ,GAAKS,QAAQ,KAErCD,IACAR,EAAMI,WAAWI,EAAW,IAC5BP,EAAQG,YAAY,EAAIJ,GAAKS,QAAQ,MAKjD,IAAKT,IAAQC,EAAO,CACAV,EAAImB,UAAUC,WAAWR,MAAM,aAA/C,IACIS,EAAWrB,EAAImB,UAAUC,WAAWR,MAAM,YAC1CU,EAAmBtB,EAAIsB,iBAInBb,EAHJY,EAEIC,GAAoB,KAAOb,GAAOA,GAAO,GACnC,EACCa,GAAoB,KAAOb,GAAOA,GAAO,GAC1C,EAEA,EAIJ,EAEVC,EAAQ,EAAID,EAIhB,GADAL,EAAMlO,aAAa,WAAYuO,IAC1BH,EAID,GAHAA,EAASH,EAAIxP,cAAc,QAC3B2P,EAAOpO,aAAa,OAAQ,YAC5BoO,EAAOpO,aAAa,UAAW,iBAAmBwO,EAAQ,mBAAqBA,EAAQ,mBAAqBA,EAAQ,sBAChHN,EAAMmB,kBACNnB,EAAMmB,kBAAkB9P,YAAY6O,OACjC,CACH,IAAIkB,EAAOrB,EAAIxP,cAAc,OAC7B6Q,EAAK/P,YAAY6O,GACjBH,EAAIsB,MAAMD,EAAKE,WAIvB,SAASC,IACL,IAAIC,EAAQxB,EAAMyB,wBAAwBD,MACtCA,EAAQnB,EAAM,OACdmB,EAAQ,KAAOnB,GAEnB,IAAIqB,EAAMF,EAAQ,GAClBxB,EAAMhH,MAAM2I,SAAWD,EAAM,KAC7BnB,EAASmB,IAAM9B,EAAI8B,IAAMA,EAG7B9B,EAAIgC,iBAAiB,UAAU,WAC3B5P,aAAa8N,GACbA,EAAMvN,WAAWgP,EAAY,QAC9B,GACH3B,EAAIgC,iBAAiB,YAAY,SAAStS,GAClCA,EAAEuS,YACF7P,aAAa8N,GACbA,EAAMvN,WAAWgP,EAAY,SAElC,GAEoB,aAAnBxB,EAAI+B,WACJ/B,EAAIgC,KAAK/I,MAAM2I,SAAW,GAAKtB,EAAM,KAErCN,EAAI6B,iBAAiB,oBAAoB,SAAStS,GAC9CyQ,EAAIgC,KAAK/I,MAAM2I,SAAW,GAAKtB,EAAM,QACtC,GAIPkB,IAEAhB,EAASF,IAAMT,EAAIS,IAAMA,EACzBE,EAASgB,WAAaA,EACtBhB,EAASyB,OAAS,SAASrP,GACvB,IAAIsP,EAAMxB,WAAW9N,GAAKuP,KAAKR,IAI/B,MAHiB,kBAAN/O,GAAkBA,EAAE6N,MAAM,UACjCyB,GAAO,MAEJA,GAEX1B,EAAS4B,OAAS,SAASxP,GACvB,IAAIsP,EAAMxB,WAAW9N,GAAKuP,KAAKR,IAI/B,MAHiB,kBAAN/O,GAAkBA,EAAE6N,MAAM,SACjCyB,GAAO,OAEJA,GAjHd,CAoHEhO,OAAQA,OAAO,SAAWA,OAAO,OAAS,M,6DCpH7C,IAAYmO,EAAZ,2CAAYA,GACV,uBACA,2BAFF,CAAYA,MAAoB,M,kCCQhC,IAAYC,EARZ,kCAQA,SAAYA,GACV,2BACA,mCACA,+BACA,qCACA,qCACA,qCACA,2CACA,iCARF,CAAYA,MAAiB,M,kKCNvBC,EAAY,kBAAM,iDAClBC,EAAkB,kBAAM,wJACxBC,EAAwB,kBAAM,4GAC9BC,EAAoB,kBAAM,iDAC1BC,EAAmB,kBAAM,sFACzBC,EAAoB,kBAAM,iDAC1BC,EAAyB,kBAAM,iDAC/BC,EAAkB,kBAAM,iDACxBC,EAAoB,kBAAM,iDAC1BC,EAAc,kBAAM,iDACpBC,EAAe,kBAAM,4GAGdC,EAAwC,CACnD,CACEC,KAAM,IACNC,SAAU,QACVpO,KAAM,CACJsE,MAAO,KACP+J,YAAY,IAGhB,CACEF,KAAM,QACNG,UAAWf,EACXjQ,KAAM,OACN0C,KAAM,CACJsE,MAAO,KACP+J,YAAY,IAGhB,CACEF,KAAM,cACNG,UAAWd,EAEXlQ,KAAM,aACN0C,KAAM,CACJsE,MAAO,OACP+J,YAAY,IAGhB,CACEF,KAAM,qBAENG,UAAWb,EACXnQ,KAAM,mBACN0C,KAAM,CACJsE,MAAO,OACPH,MAAO,OACPkK,YAAY,IAGhB,CACEF,KAAM,iBAENG,UAAWZ,EACXpQ,KAAM,eACN0C,KAAM,CACJsE,MAAO,OACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,gBAENG,UAAWX,EACXrQ,KAAM,cACN0C,KAAM,CACJsE,MAAO,OACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,iBAENG,UAAWV,EACXtQ,KAAM,eACN0C,KAAM,CACJsE,MAAO,UACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,uBAENG,UAAWT,EACXvQ,KAAM,oBACN0C,KAAM,CACJsE,MAAO,QACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,eAENG,UAAWR,EACXxQ,KAAM,aACN0C,KAAM,CACJsE,MAAO,QACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,iBAENG,UAAWP,EACXzQ,KAAM,eACN0C,KAAM,CACJsE,MAAO,QACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,UAENG,UAAWN,EACX1Q,KAAM,SACN0C,KAAM,CACJsE,MAAO,QACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,WAENG,UAAWL,EACX3Q,KAAM,UACN0C,KAAM,CACJsE,MAAO,OACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,kBACNG,UAAW,kBAAM,sFACjBhR,KAAM,gBACN0C,KAAM,CACJsE,MAAO,WACPY,OAAQ,OACRf,MAAO,OACPkK,YAAY,EACZ5J,aAAa,IAGjB,CACE0J,KAAM,gBACNG,UAAW,kBAAM,sFACjBhR,KAAM,cACN0C,KAAM,CACJsE,MAAO,SAEPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,kBACNG,UAAW,kBAAM,iDACjBhR,KAAM,eACN0C,KAAM,CACJsE,MAAO,QACPC,OAAQ,WACRJ,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,YACNG,UAAW,kBAAM,iDACjBhR,KAAM,UACN0C,KAAM,CACJsE,MAAO,SACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,iBACNG,UAAW,kBAAM,iDACjBhR,KAAM,aACN0C,KAAM,CACJsE,MAAO,SACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,gBACNG,UAAW,kBAAM,sFACjBhR,KAAM,aACN0C,KAAM,CACJsE,MAAO,SACPH,MAAO,UACPkK,YAAY,IAGhB,CACEF,KAAM,eACNG,UAAW,kBAAM,sFACjBhR,KAAM,cACN0C,KAAM,CACJsE,MAAO,SACPH,MAAO,UACPkK,YAAY,KAKLE,EAAqC,GAG5C3L,EAAS,eAAa,CAC1B4L,QAAS,eAAiB,YAE1B9O,OAAQwO,IAGJ,SAAUO,IACd,IAAMC,EAAY9L,EACjBA,EAAe+L,QAAWD,EAAkBC,QAGhC,U,qBCvOftU,EAAOD,QAAU,CAAC,OAAS,OAAO,SAAW,UAAU,eAAiB,Y,iGCElEmJ,EAAa,CAAEC,MAAO,QAEtB,SAAUC,EAAOC,EAAUC,EAAYC,EAAYC,EAAYC,EAAWC,GAC9E,IAAM6K,EAAoB,8BAAkB,UACtCC,EAAyB,8BAAkB,eAEjD,OAAQ,yBAAc,gCAAoB,MAAOtL,EAAY,CAC1DG,EAAK3D,MAAMC,OAAS0D,EAAK3D,MAAMC,KAAKqO,YAChC,yBAAc,yBAAaO,EAAmB,CAC7CjQ,IAAK,EACLwF,MAAOT,EAAK3D,MAAMC,KAAKmE,MACvBK,QAASd,EAAK3D,MAAMC,MACnB,KAAM,EAAG,CAAC,QAAS,aACtB,gCAAoB,IAAI,GAC5B,gCAAoB,MAAO,CACzBwD,MAAO,4BAAiBE,EAAK3D,MAAMC,KAAKqO,WAA0B,GAAb,YACrDpK,MAAO,4BAAgB,CAAEC,WAAYR,EAAK3D,MAAMC,KAAKmE,SACpD,KAAM,IACR,yBAAc,yBAAa0K,EAAwB,CAClDlQ,IAAK+E,EAAK3D,MAAM+O,c,6DChBP,+BAAgB,CAC7BhK,WAAY,CACViK,OAAA,QAEF/J,MAJ6B,WAK3B,IAAMjF,EAAa,iBACbkF,EAAY,sBAAS,CACzBlF,MAAOA,EACPiP,eAAgB,cAChBC,YAAY,EACZC,cAJyB,WAKvB,EAAAC,EAAMlR,IAAN,qBAA+B1B,MAAK,SAAC8D,GACnC,IAAIlI,EAAYkI,EAAIlI,MAAQ,GACxBiX,EAAiBjX,EAAKiX,UACtBC,EAAeC,aAAanJ,QAAQ,aACpCkJ,GAAWA,IAAYD,GACzBE,aAAa/I,QAAQ,YAAa6I,GAClClQ,OAAOmL,SAASkF,UAEhBD,aAAa/I,QAAQ,YAAa6I,OAIxCI,gBAjByB,WAkBvBC,aAAY,WACVxK,EAAUiK,kBACT,QAiBP,OAdA,uBAAS,WACP,IAAMlU,EAAgBkE,OAAOlE,SAC7BA,EAAS6R,iBAAiB,cAAc,SAAUjR,GAC5CA,EAAM8T,QAAQ/W,OAAS,GACzBiD,EAAM+T,oBAGV3U,EAAS6R,iBAAiB,gBAAgB,SAAUjR,GAClDA,EAAM+T,uBAGV,wBAAU,WACR1K,EAAUuK,qBAEZ,kBACK,oBAAOvK,O,iCC3ChB,MAAMI,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAAS5B,GAAQ,CAAC,YAAY,qBAE1E,Q,wPCCfb,EAAA,KAAOgN,WAAP,yDAAkB,WAAOC,EAA6BC,EAA4BC,GAAhE,gGACVxN,EAAQ,iBACVF,EAAiB,eAAa,OAC9BA,GACF,eAAaA,GAJC,SAMVE,EAAME,SAAS,OAAgBP,0BAAsB3E,GAN3C,OAOhBwS,IAPgB,2CAAlB,2DA2CAnN,EAAA,KAAOoN,WAAU,SAACH,OC1ClB,IAAMI,EAAM,uBAAUC,GAGhB,EAAe,WAAsB,IAArBC,EAAqB,uDAAL,EACpC,OAAMnH,QAAQ,CACZmH,SAAUA,EACVC,aAAa,KAGX,EAAc,WAClB,OAAMC,SAERJ,EAAI3G,OAAOgH,iBAAiBC,QAA5B,4FACAN,EAAI3G,OAAOgH,iBAAiBE,SAA5B,2FACAP,EAAI3G,OAAOgH,iBAAiBG,OAAS,OACrCR,EAAI3G,OAAOgH,iBAAiBI,cAAgB,EAC5CT,EAAI3G,OAAOgH,iBAAiBK,aAAe,EAC3CV,EACGtG,IAAI,QAAOA,IAAI,QACfA,IAAI,QACJA,IAAI,QACJA,IAAI,QACJA,IAAI,QACJA,IAAI,QACJA,IAAI/G,EAAA,MACJgO,MAAM,S,kCCnCT,IAAYC,EAAZ,2CAAYA,GACV,iCACA,6CACA,iDACA,+CACA,yCACA,iCACA,iDAPF,CAAYA,MAAe,M,wnCCgGdC,G,UAAiB,SAAUC,GACtC,IAAIC,EAAO,GACX,IAAK,IAAMlT,KAAKiT,GACU,IAApBA,EAAYjT,KACdkT,GAAQlT,EAAI,IAAMiT,EAAYjT,GAAK,KAIvC,OADAkT,EAAOA,EAAKC,UAAU,EAAGD,EAAKrY,OAAS,GAChCqY,IAIIE,EAAc,WAEzB,IAAIlP,EAAW,OAAMvC,MAAM4D,KACrB8N,EAAkB,CACtBtQ,OAAQmB,EAASnB,OACjBE,OAAQiB,EAASjB,OACjBM,IAAKW,EAASX,IACd+P,QAAS,OAAKA,QACdjQ,UAAWa,EAASb,WAQtB,OANIa,EAASlB,WACXqQ,EAAWrQ,SAAWkB,EAASlB,UAE7BkB,EAASf,YACXkQ,EAAWlQ,UAAYe,EAASf,WAE3BkQ,GAuBIE,EAAa,WAA4D,IAAlD1G,EAAkD,uDAAlC,WAAY2G,EAAsB,uDAAV,IAAIC,KAExEC,EAAQF,GAAc,IAAIC,KAE1BE,EAAeD,EAAME,cAErBC,EAAcH,EAAMI,WAAa,EAAK,GAAK,KAAOJ,EAAMI,WAAa,GAAMJ,EAAMI,WAAa,EAE9FC,EAAWL,EAAMM,UAAY,GAAK,IAAMN,EAAMM,UAAYN,EAAMM,UAEhEC,EAAQP,EAAMQ,WAAa,GAAK,IAAMR,EAAMQ,WAAaR,EAAMQ,WAE/DC,EAAUT,EAAMU,aAAe,GAAK,IAAMV,EAAMU,aAAeV,EAAMU,aAI3E,MAAc,gBAAVvH,EACK8G,EAAO,IAAME,EAAQ,IAAME,EAAM,IACrB,YAAVlH,EACF8G,EAAO,IAAME,EACD,WAAVhH,EACF8G,EAAO,GAAKE,EACA,eAAVhH,EACF8G,EAAO,IAAME,EAAQ,IAAME,EACf,qBAAVlH,EACF8G,EAAO,IAAME,EAAQ,IAAME,EAAM,IAAME,EAAQ,IAAME,EAGrDR,EAAO,GAAKE,EAAaE,GAKvBM,EAAgB,SAAUb,GACrC,OAAIA,EACKA,EAAKc,QAAQ,0BAA2B,YAExC,IAGEC,EAAc,WAAyB,IAAf1H,EAAe,uDAAF,GAC5C6G,EAAQ,IAAID,KAChBC,EAAMc,QAAQd,EAAMe,UAAY,OAChC,IAAMC,EAAehB,EAAME,cAErBe,EAAejB,EAAMI,WAAa,EAAK,GAAK,KAAOJ,EAAMI,WAAa,GAAMJ,EAAMI,WAAa,EAE/FC,EAAWL,EAAMM,UAAY,GAAK,IAAMN,EAAMM,UAAYN,EAAMM,UAEtE,OAAOU,EAAO7H,EAAQ8H,EAAS9H,EAAQkH,GAGnC,SAAUG,IACd,OAAO,IAAIT,MAAOS,WAGd,SAAUU,EAAYC,EAAcC,GACxC,OAAIA,EACF,UAAU,WAAV,kBAAwCD,EAAxC,YAAgDC,GAEzC,GA2BL,SAAUC,IAA2B,IAAhBpB,EAAgB,uDAAD,EACpCqB,EAAO,IAAIvB,KACfuB,EAAKC,YAAYD,EAAKpB,cAAgBD,GACtC,IAAIuB,EAAIF,EAAKpB,cACThU,EAAIoV,EAAKlB,WAAa,EAC1B,OAAO,IAAIL,KAAKyB,EAAI,IAAMtV,GAOtB,SAAUuV,IAAgC,IAApBC,EAAoB,uDAAF,GACtCC,EAAU,IAAI5B,KAChBE,EAAO0B,EAAQzB,cACfC,EAAawB,EAAQvB,WAQzB,OAPc,IAAVD,IACFA,EAAQ,GACRF,GAAc,GAEZE,EAAQ,KACVA,EAAQ,IAAMA,GAEG,YAAfuB,EACKzB,EAAO,IAAME,EACI,aAAfuB,EACFzB,EAAO,IAAME,EAAQ,IAErBF,EAAO,GAAKE,EAOhB,IAAMyB,EAAmB,SAAUN,GAExC,IAAMtB,EAAQsB,EAAO,IAAIvB,KAAKuB,GAAQ,IAAIvB,KAEpC8B,EAAe7B,EAAMI,WAAa,EAAK,GAAK,KAAOJ,EAAMI,WAAa,GAAMJ,EAAMI,WAAa,EAE/FC,EAAWL,EAAMM,UAAY,GAAK,IAAMN,EAAMM,UAAYN,EAAMM,UAChEL,EAAeD,EAAME,cACrB4B,EAAQ9B,EAAMQ,WAAa,GAAK,IAAMR,EAAMQ,WAAaR,EAAMQ,WAE/DuB,EAAU/B,EAAMU,aAAe,GAAK,IAAMV,EAAMU,aAAeV,EAAMU,aAE3E,MAAO,CACLT,EAAO,IAAM4B,EAAS,IACtBA,EAAS,IAAMxB,EAAM,IACrByB,EAAQ,IAAMC,IAILC,EAAa,WAAsC,IAA5B7U,EAA4B,uDAAjB,GAAI8U,EAAa,uDAAF,GAC5D,GAAIA,EAAK,CACP,IAAIjJ,EAAMrI,KAAKC,UAAUqR,GACzBvN,eAAeK,QAAQ5H,EAAK6L,KAInBkJ,EAAa,WAAuB,IAAb/U,EAAa,uDAAF,GAC7C,GAAIA,EAAK,CACP,IAAI8U,EAAWvN,eAAeC,QAAQxH,GACtC,GAAI8U,EACF,OAAOtR,KAAKkE,MAAMoN,GAGtB,MAAO,IAQIE,EAAkB,WAAsC,IAA5BhV,EAA4B,uDAAjB,GAAI8U,EAAa,uDAAF,GACjE,GAAIA,EACF,GAAIA,aAAe7a,OAAQ,CACzB,IAAI4R,EAAMrI,KAAKC,UAAUqR,GACzBnE,aAAa/I,QAAQ5H,EAAK6L,QAE1B8E,aAAa/I,QAAQ5H,EAAK8U,IASnBG,EAAkB,SAAUjV,GACvC,GAAIA,EAAK,CACP,IAAI8U,EAAWnE,aAAanJ,QAAQxH,GACpC,OAAI8U,EACKtR,KAAKkE,MAAMoN,GAEX,GAGX,MAAO,IAOII,EAAuB,SAAUC,GAC5CH,EAAgB,OAAKI,oBAAqBD,IAc/BE,EAAsB,SAAUC,EAAiBC,EAAcC,GAC1E,IAAIC,EAAgBR,EAAgB,OAAKS,iBAAmBT,EAAgB,OAAKS,iBAAmB,GAChG1V,EAAG,UAAWsV,EAAX,YAAyBC,GAChCE,EAASzV,GAAOwV,EAChBR,EAAgB,OAAKU,gBAAiBD,IAE3BE,EAAoB,WAC/B,IAAIF,EAAgBR,EAAgB,OAAKS,iBACzC,OAAOD,GAMIG,EAAoB,SAAUN,EAAiBC,GAC1D,IAAIM,EAAgBZ,EAAgB,OAAKa,iBAAmBb,EAAgB,OAAKa,iBAAmB,GACpGD,EAASP,GAAcC,EACvBP,EAAgB,OAAKc,gBAAiBD,IAO3BE,EAAuB,WAClC,IAAIF,EAAgBZ,EAAgB,OAAKa,iBACzC,OAAOD,GAOIG,EAAsB,SAAUhS,GAC3C,IAAIiS,EAAqBhB,EAAgB,OAAKiB,uBAC1CC,GAAO,EACXF,EAAgBA,GAAgC,GAChDA,EAAcG,KAAI,SAACC,GACbA,EAAYhU,KAAO2B,EAAK3B,KAC1B8T,GAAO,MAGNA,GACHF,EAAc3b,KAAK0J,GAErBgR,EAAgB,OAAKkB,sBAAuBD,IAMjCK,EAAsB,WACjC,OAAOrB,EAAgB,OAAKiB,uBAAyBjB,EAAgB,OAAKiB,uBAAyB,IAmCxFK,EAAc,SAAUrD,GACnC,IAAIsD,EAAa,IAAIC,MACnB,KACA,KACA,KACA,KACA,KACA,KACA,MAEEC,EAAYF,EAAMtD,GACtB,OAAOwD,GAGIC,EAAa,WACxB,IAAIhE,EAAY,IAAIC,KAChBM,EAAWP,EAAKiE,SAChBC,EAAeN,EAAYrD,GAC/B,OAAO2D,GAGI1D,EAAU,SAAUR,GAC/B,OAAOA,EAAKQ,UAAY,GAAK,IAAMR,EAAKQ,UAAYR,EAAKQ,WAM9C2D,EAAY,WAEvB,IADA,IAAIC,EAAc,IAAIN,MACb3c,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC5B,IAAI+R,EAAW,KAEbA,EADE/R,EAAI,GACA,IAAMA,EAENA,EAERid,EAAOzc,KAAKuR,EAAM,OACd/R,EAAI,IACNid,EAAOzc,KAAKuR,EAAM,OAKtB,OAAOkL,GAGIC,EAAa,WACxB,IAAIrE,EAAY,IAAIC,KAChB+B,EAAahC,EAAKU,WAClB4D,EAActE,EAAKY,aACnB2D,EAAavE,EAAKU,WAQtB,OAPI4D,EAAS,IACXtC,GAAQA,MACRuC,GAAgB,IAEhBvC,GAAQA,MACRuC,EAAgB,EAARA,EAAY,GAEf,CAACvC,EAAOuC,IAIJC,EAAgB,WAC3B,IAAIxE,EAAY,IAAIC,KAChB+B,EAAahC,EAAKU,WAClB4D,EAActE,EAAKY,aAOvB,OANIoB,EAAQ,KACVA,EAAQ,IAAMA,GAEZsC,EAAS,KACXA,EAAS,IAAMA,GAEVtC,EAAQ,GAAKsC,EAAS,MAMlBG,EAAiB,SAAUC,GACtC,GAAIA,EAAO,CACT,IAAIxL,GAAYwL,EAAQ,KAAOjK,QAAQ,GAEvC,OADAvB,EAAMA,EAAI4H,QAAQ,IAAK,KAChB5H,EAEP,MAAO,IAIEyL,EAAY,SAAUC,EAAYC,EAAUC,GACvD,OAAOA,EAAY,GAAKC,KAAKC,MAAMD,KAAKE,UAAYJ,EAAMD,GAASA,IAGxDM,EAA6B,SAA7BA,IAG6B,IAHUX,EAGV,uDAHuB,EAC/DY,EAEwC,uCADxCC,EACwC,uCAAxCjb,EAAwC,uDAA5B,EAAGtD,EAAyB,uDAAb,GAAIwe,EAAS,uCACpCC,EAAiB,IAAIrF,KACrBsF,EAAe,IAAItF,KAAKqF,EAAUtE,QAAQsE,EAAUrE,UAAY,QAChEuE,EAAezF,EAAW,cAC1B0F,EAAoB1F,EAAW,aAAcwF,GACjD1e,EAAK4c,KAAI,SAACpS,GAER,IAAI2O,EAAYa,EAAcxP,EAAK2O,MAC/B+D,EAAYH,EAAY,IAAI3D,KAAKD,GAAMiE,UACvCjE,GAAQwF,EACVzB,EAAO,KACE/D,GAAQyF,IACjB1B,EAAO,MAET1S,EAAK0S,KAAOA,KAGd,IAAI2B,EAAY,GAGZC,EAAoB9e,EAAK0d,GAAOoB,aAChCC,EAAkB/e,EAAK0d,GAAOqB,WAClC,GAAa,IAATzb,EAAY,CAEd,GAAgB,WAAZib,EAAsB,SAEpBS,EAAe,oBAAQhf,EAAK0d,UAAb,aAAQ,EAAasB,uBAArB,QAAwC,GAkB3D,GAjBqB,WAAjBF,IACFD,EAAO7e,EAAK0d,GAAOR,KACnBqB,EAAUQ,GAEZC,EAAgBpC,KAAI,SAACpS,IACI,WAAnBA,EAAK8T,WAGEC,IAAY/T,EAAK8T,aAF1BO,EAAO7e,EAAK0d,GAAOR,KACnBqB,EAAU/T,EAAK+T,SAKbA,IAAYO,IACdD,EAAO7e,EAAK0d,GAAOR,KACnBqB,EAAUQ,MAGVF,EAAM,CACR,IAAII,EAAgBvB,EAAQ,EAE5B,OADAc,EAAKK,KAAOA,EACRI,EAAWjf,EAAKQ,OAAS,EACpB6d,EAAsBY,EAAUX,EAAWC,EAAS,EAAGve,EAAMwe,GAE7D,CACLK,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA,GAIb,MAAO,CACLM,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA,GAIb,MAAO,CACLM,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA,GAGR,QAEDW,EAAgB1B,IAAa,GAAIvD,QAAQ,IAAK,IAAM,KACpD,EAAe,oBAAQja,EAAK0d,UAAb,aAAQ,EAAasB,uBAArB,QAAwC,GAyC3D,GAxCA,EAAgBpC,KAAI,SAACpS,GA8BnB,GA7Bc,IAAVkT,EACEwB,EAAU1U,EAAK8T,YACZA,GAAcC,IACjBD,EAAY9T,EAAK8T,UACjBC,EAAU/T,EAAK+T,QACfM,EAAO7e,EAAK0d,GAAOR,OAIlBoB,GAAcC,EAOF,UAAXA,EACoB,UAAlB/T,EAAK8T,YACPC,EAAU/T,EAAK+T,QACfM,EAAO7e,EAAK0d,GAAOR,MAGjBqB,IAAY/T,EAAK8T,YACnBC,EAAU/T,EAAK+T,QACfM,EAAO7e,EAAK0d,GAAOR,OAdvBoB,EAAY9T,EAAK8T,UACjBC,EAAU/T,EAAK+T,QACfM,EAAO7e,EAAK0d,GAAOR,MAiBnBsB,EAAKK,KAAM,CACb,IAAIM,EAAiBX,EAAKK,KAAKrM,MAAM,KAAK,GAC1CgM,EAAKK,KAAOM,EACRN,GAAQA,GAAQM,IAClBX,EAAKK,KAAOM,EAAY,IAAMN,QAGhCL,EAAKK,KAAOA,KAGZP,GAAaC,EAAS,CACxB,GAAe,UAAXA,EAAqB,CACvB,IAAI,EAAgBb,EAAQ,EAC5B,OAAI,EAAW1d,EAAKQ,OAAS,EACpB6d,EAAsB,EAAUC,EAAWC,EAAS,EAAGve,EAAMwe,GAE7D,CACLK,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA,GAIb,MAAO,CACLM,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA,GAIb,IAAI,EAAgBb,EAAQ,EAC5B,OAAI,EAAW1d,EAAKQ,OAAS,EACpB6d,EAAsB,EAAUC,EAAWC,EAAS,EAAGve,EAAMwe,GAE7D,CACLK,KAAML,EAAKK,KACXP,UAAWA,EACXC,QAASA","file":"static/js/app.9049908c.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-016ba2f5\":\"147571af\",\"chunk-10ee235a\":\"d819c2a4\",\"chunk-2bb42bd0\":\"b5572c4d\",\"chunk-3f722bdb\":\"f1080f07\",\"chunk-4fc65864\":\"63329f74\",\"chunk-6637d5f0\":\"3b6b765b\",\"chunk-778a7e22\":\"59747439\",\"chunk-8c8fb174\":\"1d5d4292\",\"chunk-c71b77a0\":\"40b67b76\",\"chunk-390d4e2b\":\"869c5079\",\"chunk-6c149b5a\":\"76accdaa\",\"chunk-7f684f10\":\"88e144cc\",\"chunk-c761207a\":\"aa4786c0\",\"chunk-d758a428\":\"b3f2cd06\",\"chunk-095f9bd6\":\"e40df808\",\"chunk-3f89b088\":\"1a3d74f8\",\"chunk-a8bcba9c\":\"4a39a0fd\",\"chunk-bd36926a\":\"101bad5c\",\"chunk-ee9621f0\":\"a4572576\",\"chunk-3250642b\":\"4a7f75f2\",\"chunk-2e62b616\":\"365d2f32\",\"chunk-dcd3755c\":\"0153469a\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-016ba2f5\":1,\"chunk-10ee235a\":1,\"chunk-2bb42bd0\":1,\"chunk-3f722bdb\":1,\"chunk-4fc65864\":1,\"chunk-6637d5f0\":1,\"chunk-778a7e22\":1,\"chunk-8c8fb174\":1,\"chunk-390d4e2b\":1,\"chunk-7f684f10\":1,\"chunk-c761207a\":1,\"chunk-d758a428\":1,\"chunk-095f9bd6\":1,\"chunk-3f89b088\":1,\"chunk-a8bcba9c\":1,\"chunk-bd36926a\":1,\"chunk-ee9621f0\":1,\"chunk-3250642b\":1,\"chunk-2e62b616\":1,\"chunk-dcd3755c\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-016ba2f5\":\"4a73993b\",\"chunk-10ee235a\":\"9a5e75f1\",\"chunk-2bb42bd0\":\"ce7b5faf\",\"chunk-3f722bdb\":\"d1a2980e\",\"chunk-4fc65864\":\"3f811f34\",\"chunk-6637d5f0\":\"04f8821e\",\"chunk-778a7e22\":\"511b2a9b\",\"chunk-8c8fb174\":\"04ba9ab1\",\"chunk-c71b77a0\":\"31d6cfe0\",\"chunk-390d4e2b\":\"1f89dc11\",\"chunk-6c149b5a\":\"31d6cfe0\",\"chunk-7f684f10\":\"30bbd0a7\",\"chunk-c761207a\":\"bdd3dcd5\",\"chunk-d758a428\":\"08b1c5ab\",\"chunk-095f9bd6\":\"8c62f976\",\"chunk-3f89b088\":\"f033670c\",\"chunk-a8bcba9c\":\"b9e4ad4b\",\"chunk-bd36926a\":\"e080073e\",\"chunk-ee9621f0\":\"bff743c7\",\"chunk-3250642b\":\"d0a2a98e\",\"chunk-2e62b616\":\"21c73629\",\"chunk-dcd3755c\":\"e3100eed\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/sgipad/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:28:43\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-25 14:32:35\n */\nexport enum PermissionMutationType{\n SET_ROUTES = 'SET_ROUTES'\n}\n","export enum PermissionActionType{\n ACTION_SET_ROUTES = 'ACTION_SET_ROUTES'\n}\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:28:12\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-25 15:03:37\n */\nimport { MutationTree } from 'vuex'\nimport { PermissionState } from './state'\nimport { PermissionMutationType } from './mutation-types'\nimport { RouteRecordRaw } from 'vue-router'\nimport { constantRoutes } from '@/router'\n\nexport type Mutations = {\n [PermissionMutationType.SET_ROUTES](state: S, routes: RouteRecordRaw[]): void\n}\n\nexport const mutations: MutationTree & Mutations = {\n [PermissionMutationType.SET_ROUTES](state: PermissionState, routes: RouteRecordRaw[]) {\n state.routes = constantRoutes.concat(routes)\n state.dynamicRoutes = routes\n }\n\n}\n","import { ActionTree, ActionContext } from 'vuex'\nimport { RootState } from '@/store'\nimport { PermissionState } from './state'\nimport { Mutations } from './mutations'\nimport { PermissionMutationType } from './mutation-types'\nimport { PermissionActionType } from './action-types'\nimport { asyncRoutes } from '@/router'\nimport { RouteRecordRaw } from 'vue-router'\n\ntype AugmentedActionContext = {\n commit(\n key: K,\n payload: Parameters[1],\n ): ReturnType\n} & Omit, 'commit'>\n\nconst hasPermission = (roles: string[], route: RouteRecordRaw) => {\n if (route.meta && route.meta.roles) {\n return roles.some(role => {\n if (route.meta?.roles !== undefined) {\n return route.meta.roles.includes(role)\n }\n })\n } else {\n return true\n }\n}\n\nexport const filterAsyncRoutes = (routes: RouteRecordRaw[], roles: string[]) => {\n const res: RouteRecordRaw[] = []\n routes.forEach(route => {\n const r = { ...route }\n if (hasPermission(roles, r)) {\n if (r.children) {\n r.children = filterAsyncRoutes(r.children, roles)\n }\n res.push(r)\n }\n })\n return res\n}\n\nexport interface Actions {\n [PermissionActionType.ACTION_SET_ROUTES](\n { commit }: AugmentedActionContext\n , roles: string[]): void\n}\n\nexport const actions: ActionTree & Actions = {\n [PermissionActionType.ACTION_SET_ROUTES](\n { commit }: AugmentedActionContext\n , roles: string[]) {\n let accessedRoutes\n if (roles.includes('admin')) {\n accessedRoutes = asyncRoutes\n } else {\n accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)\n }\n commit(PermissionMutationType.SET_ROUTES, accessedRoutes)\n }\n}\n","/*\n * @Description:\n * @Author: ZY\n * @Date: 2020-12-25 14:15:18\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-26 13:57:51\n */\n\nimport { RouteRecordRaw } from 'vue-router'\n\nexport interface PermissionState {\n routes: RouteRecordRaw[]\n dynamicRoutes: RouteRecordRaw[]\n}\n\nexport const state: PermissionState = {\n routes: [],\n dynamicRoutes: []\n}\n","import {\n Store as VuexStore,\n CommitOptions,\n DispatchOptions,\n Module\n} from 'vuex'\nimport { RootState } from '@/store'\nimport { mutations, Mutations } from './mutations'\nimport { actions, Actions } from './actions'\nimport type { PermissionState } from './state'\nimport { state } from './state'\n\nexport { PermissionState }\n\nexport type PermissionStore = Omit, 'getters' | 'commit' | 'dispatch'>\n & {\n commit[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType\n } & {\n dispatch(\n key: K,\n payload: Parameters[1],\n options?: DispatchOptions\n ): ReturnType\n };\nexport const store: Module = {\n state,\n mutations,\n actions\n // namespaced: true,\n}\n","import Keys from '@/constant/key'\nimport { getToken, getProjectId, getCookieUserInfo, getSessionUserInfo, getCookieMac } from '@/utils/cookies'\n\nexport interface UserState {\n token: string\n openid: string\n userName: string\n userId: string\n userPhone: number\n projectId: any,\n companyId: string,\n mac: any,\n remoteControl: boolean // 当前用户是否可以远程控制设备\n}\n\nexport const state: UserState = {\n token: getToken() || '',\n openid: Keys.openid,\n userName: getSessionUserInfo() ? getSessionUserInfo().name : '',\n userId: getSessionUserInfo() ? getSessionUserInfo().id : '',\n userPhone: getSessionUserInfo() ? getSessionUserInfo().phone : 0,\n projectId: getProjectId()?getProjectId():'',\n companyId: '',\n mac: getCookieMac() ? getCookieMac() : '',\n remoteControl: false\n}\n","import { MutationTree } from 'vuex'\nimport { UserState } from './state'\nimport { UserMutationTypes } from './mutation-types'\nimport Cookies from 'js-cookie'\nimport Keys from '@/constant/key'\nimport { setProjectId } from '@/utils/cookies'\n\nexport type Mutations = {\n [UserMutationTypes.SET_TOKEN](state: S, token: string): void\n [UserMutationTypes.SET_USER_NAME](state: S, userName: string): void\n [UserMutationTypes.SET_USER_ID](state: S, userId: string): void\n [UserMutationTypes.SET_USER_PHONE](state: S, userPhone: number): void\n [UserMutationTypes.SET_PROJECT_ID](state: S, projectId: string): void\n [UserMutationTypes.SET_COMPANY_ID](state: S, companyId: string): void\n [UserMutationTypes.SET_USER_MAC](state: S, companyId: string): void,\n [UserMutationTypes.SET_REMOTECONTROL](state: S, remoteControl: boolean): void\n}\n\nexport const mutations: MutationTree & Mutations = {\n [UserMutationTypes.SET_TOKEN](state: UserState, token: string) {\n state.token = token\n },\n [UserMutationTypes.SET_USER_MAC](state: UserState, mac: string) {\n state.mac = mac\n },\n\n [UserMutationTypes.SET_USER_NAME](state: UserState, userName: string) {\n state.userName = userName\n },\n\n [UserMutationTypes.SET_USER_ID](state: UserState, userId: string) {\n state.userId = userId\n },\n [UserMutationTypes.SET_USER_PHONE](state: UserState, userPhone: number) {\n state.userPhone = userPhone\n },\n [UserMutationTypes.SET_PROJECT_ID](state: UserState, projectId: string) {\n // Cookies.set(Keys.projectId, projectId)\n setProjectId(projectId)\n // debugger\n state.projectId = projectId\n },\n [UserMutationTypes.SET_COMPANY_ID](state: UserState, companyId: string) {\n state.companyId = companyId\n },\n [UserMutationTypes.SET_REMOTECONTROL](state: UserState, remoteControl: boolean) {\n state.remoteControl = remoteControl\n }\n\n}\n","import { ActionTree, ActionContext } from 'vuex'\nimport { RootState, store, useStore } from '@/store'\nimport { UserState } from './state'\nimport { Mutations } from './mutations'\nimport { UserMutationTypes } from './mutation-types'\nimport { UserActionTypes } from './action-types'\nimport { getCookieMac, removeToken, setSessionUserInfo, setToken } from '@/utils/cookies'\nimport { PermissionActionType } from '../permission/action-types'\nimport router, { resetRouter } from '@/router'\nimport { useRoute, useRouter } from 'vue-router'\nimport { RouteRecordRaw } from 'vue-router'\nimport { getUsersInfo } from '@/apis/user'\nimport { clearAllLocalData, getLocalProjectId, setLocalProjectId } from '@/utils'\nimport { Toast } from 'vant'\nimport { queryWorkSpace } from '@/apis/envmonitor'\n\ntype AugmentedActionContext = {\n commit(\n key: K,\n payload: Parameters[1],\n ): ReturnType\n} & Omit, 'commit'>\n\nexport interface Actions {\n [UserActionTypes.ACTION_LOGIN](\n { commit }: AugmentedActionContext,\n userInfo: { username: string, password: string }\n ): void\n\n [UserActionTypes.ACTION_RESET_TOKEN](\n { commit }: AugmentedActionContext\n ): void\n\n [UserActionTypes.ACTION_GET_USER_INFO](\n { commit }: AugmentedActionContext\n ): void\n\n // [UserActionTypes.ACTION_GET_WORKSPACE](\n // { commit }: AugmentedActionContext\n // ): void\n\n [UserActionTypes.ACTION_CHANGE_ROLES](\n { commit }: AugmentedActionContext, role: string\n ): void\n\n [UserActionTypes.ACTION_LOGIN_OUT](\n { commit }: AugmentedActionContext,\n ): void\n}\n\nexport const actions: ActionTree & Actions = {\n async [UserActionTypes.ACTION_LOGIN](\n { commit }: AugmentedActionContext,\n userInfo: { username: string, password: string }\n ) {\n console.log(userInfo)\n // let { username, password } = userInfo\n // username = username.trim()\n // await loginRequest({ username, password }).then(async(res) => {\n // if (res?.code === 0 && res.data.accessToken) {\n // setToken(res.data.accessToken)\n commit(UserMutationTypes.SET_TOKEN, 'eyJhbGciOiJIUzI1NiJ9.eyJidWlsZGluZ19pZCI6ImZmZDc4OGIwOTQzNTQ4NTFiMDM0NTY2YzRkMTJkMTFjIiwidXNlcl9pZCI6IjYwMmVmNzA5YmViNjRhMWY5YTRiNmFmMjE5NmQwYWY3IiwidXNlcl9uYW1lIjpudWxsLCJvd25lcl9pZCI6IjkzNmE4ZWFlMDJmOTExZWNiNTQyMDJiNzIzZjVmYmQwIiwibXlfdGhpcmRfaWQiOiIyMGQ4Mzg0OTZjMGQ0ODk4YjFkN2MxNmRkZTc5ZGQwNiIsInRoaXJkX3BsYXRmb3JtX2lkIjoib3pUVGs1UFJSdUNIRUNqUXZKSXJyT3A1MkRuNCIsInNUaW1lIjoxNjQ2MDM1ODYzNTYwLCJleHAiOjE2NDYzOTU4NjM1NjAsInR5cGUiOiJ3ZWNoYXQiLCJhcHBfaWQiOiJ3eDNhZGQ2MzJmZDMxNDU3YzcifQ.C0khcRbjp_VuGF8gzr-cdybPhX1U1bSEk_48ypub6Y0')\n // }\n // }).catch((err) => {\n // console.log(err)\n // })\n },\n\n [UserActionTypes.ACTION_RESET_TOKEN](\n { commit }: AugmentedActionContext) {\n removeToken()\n commit(UserMutationTypes.SET_TOKEN, '')\n // commit(UserMutationTypes.SET_ROLES, [])\n },\n async [UserActionTypes.ACTION_GET_USER_INFO]({ commit }: AugmentedActionContext) {\n // let nowProjectId: any = 'Pj1101080259'\n const userInfo: any = {\n // userName: '陈珍',\n userName: 'admin',\n // userPhone: 15321277745,\n userPhone: 11111111111,\n // userId: '602ef709beb64a1f9a4b6af2196d0af7',\n userId:'admin'\n // userId: '9a1ecfbacb6b4f249bf2dd3ec7793ead'\n // userId: '1302990695845462811'\n }\n setSessionUserInfo(JSON.stringify(userInfo))\n commit(UserMutationTypes.SET_USER_NAME, userInfo.userName)\n commit(UserMutationTypes.SET_USER_PHONE, userInfo.phone)\n commit(UserMutationTypes.SET_USER_ID, userInfo.userId)\n let macAdr: any = getCookieMac()\n commit(UserMutationTypes.SET_USER_MAC, macAdr)\n // store.commit(UserMutationTypes.SET_PROJECT_ID, nowProjectId)\n },\n // async [UserActionTypes.ACTION_GET_WORKSPACE]({ commit }: AugmentedActionContext) {\n // let params: any = {\n // \"criteria\": {\n // \"macAddress\": \"DA:BF:E8:7A:61:97\"\n // },\n // \"orders\": [\n // {\n // \"column\": \"createTime\",\n // \"asc\": false\n // }\n // ],\n // \"page\": 1,\n // \"size\": 1\n // }\n // queryWorkSpace(params).then((res) => {\n // console.log(\"===\")\n // console.log(res)\n // })\n // },\n async [UserActionTypes.ACTION_CHANGE_ROLES](\n { commit }: AugmentedActionContext,\n role: string\n ) {\n const token = role + '-token'\n const store = useStore()\n commit(UserMutationTypes.SET_TOKEN, token)\n setToken(token)\n await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n store.dispatch(PermissionActionType.ACTION_SET_ROUTES, [])\n store.state.permission.dynamicRoutes.forEach((item: RouteRecordRaw) => {\n router.addRoute(item)\n })\n },\n\n [UserActionTypes.ACTION_LOGIN_OUT](\n { commit }: AugmentedActionContext\n ) {\n console.log(commit)\n removeToken()\n commit(UserMutationTypes.SET_TOKEN, '')\n // commit(UserMutationTypes.SET_ROLES, [])\n resetRouter()\n }\n}\n","import {\n Store as VuexStore,\n CommitOptions,\n DispatchOptions,\n Module\n} from 'vuex'\n\n// TODO: How to surpass cyclical dependency linting errors cleanly?\nimport { RootState } from '@/store'\nimport { state } from './state'\nimport { mutations, Mutations } from './mutations'\nimport { actions, Actions } from './actions'\nimport type { UserState } from './state'\n\nexport { UserState }\n\nexport type UserStore = Omit, 'getters' | 'commit' | 'dispatch'>\n& {\n commit[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType\n} & {\n dispatch(\n key: K,\n payload: Parameters[1],\n options?: DispatchOptions\n ): ReturnType\n};\nexport const store: Module = {\n state,\n mutations,\n actions\n // TODO: With namespaced option turned on, having problem how to use dispatch with action types...\n // But without it, a bigger store might have clashes in namings\n // namespaced: true,\n}\n","import {getSession} from \"@/utils\";\n\nexport interface PortaitState {\n airConditioner: boolean,\n light: boolean\n}\n\nexport const state: PortaitState = {\n airConditioner: getSession('portraitModule').airConditioner ? getSession('portraitModule').airConditioner : true,\n light: getSession('portraitModule').light ? getSession('portraitModule').light : true\n}\n","import {MutationTree} from 'vuex'\nimport {PortaitState} from './state'\nimport {PortaitMutationTypes} from './mutation-types'\n\nexport type Mutations = {\n [PortaitMutationTypes.SET_AIR](state: S, airConditioner: boolean): void\n [PortaitMutationTypes.SET_AIR](state: S, light: boolean): void\n}\n\nexport const mutations: MutationTree & Mutations = {\n [PortaitMutationTypes.SET_AIR](state: PortaitState, airConditioner: boolean) {\n state.airConditioner = airConditioner\n },\n [PortaitMutationTypes.SET_LIGHT](state: PortaitState, light: boolean) {\n state.light = light\n }\n}\n\n\n","import {\n Store as VuexStore,\n CommitOptions,\n Module\n} from 'vuex'\n\n// TODO: How to surpass cyclical dependency linting errors cleanly?\nimport {RootState} from '@/store'\nimport {state} from './state'\nimport {mutations, Mutations} from './mutations'\nimport type {PortaitState} from './state'\n\nexport {PortaitState}\n\nexport type PortaitStore = Omit, 'getters' | 'commit' | 'dispatch'>\n & {\n commit[1]>(\n key: K,\n payload: P,\n options?: CommitOptions\n ): ReturnType\n}\nexport const store: Module = {\n state,\n mutations\n // TODO: With namespaced option turned on, having problem how to use dispatch with action types...\n // But without it, a bigger store might have clashes in namings\n // namespaced: true,\n}\n","import {createStore, createLogger} from 'vuex'\nimport {store as permission, PermissionStore, PermissionState} from '@/store/modules/permission'\nimport {store as user, UserStore, UserState} from '@/store/modules/user'\nimport {store as portait, PortaitStore, PortaitState} from '@/store/modules/portait'\n\nexport interface RootState {\n permission: PermissionState\n user: UserState,\n portait:PortaitState\n}\n\nexport type Store = PermissionStore>\n & UserStore> & PortaitStore>\n\n// Plug in logger when in development environment\nconst debug = process.env.NODE_ENV !== 'production'\nconst plugins = debug ? [createLogger({})] : []\n// Plug in session storage based persistence\n// plugins.push(createPersistedState({ storage: window.sessionStorage }))\n\nexport const store = createStore({\n plugins,\n modules: {\n permission,\n user,\n portait\n }\n})\n\nexport function useStore(): Store {\n return store as Store\n}\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=4f0c3717&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Comheader.vue?vue&type=style&index=0&id=90cd68ae&lang=scss&scoped=true\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-90cd68ae\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"header-title\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_VanIcon = _resolveComponent(\"VanIcon\")!\n\n return (_openBlock(), _createElementBlock(\"div\", {\n class: \"ignore_com-top\",\n id: \"header\",\n style: _normalizeStyle({ background: _ctx.color })\n }, [\n _createElementVNode(\"div\", {\n class: \"header\",\n style: _normalizeStyle({ background: _ctx.color })\n }, [\n _createElementVNode(\"div\", {\n class: \"header-return\",\n onClick: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.goBack && _ctx.goBack(...args)))\n }, [\n _createVNode(_component_VanIcon, { name: \"arrow-left\" })\n ]),\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.route.meta.title), 1),\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.route.meta.title1), 1)\n ]),\n (_ctx.metaObj.showLogoOut)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"return-login\",\n onClick: _cache[1] || (_cache[1] = \n//@ts-ignore\n(...args) => (_ctx.goLogin && _ctx.goLogin(...args)))\n }, \" 退出 \"))\n : _createCommentVNode(\"\", true)\n ], 4)\n ], 4))\n}","\nimport { defineComponent, onMounted, reactive, toRefs } from \"vue\";\nimport { Icon } from \"vant\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { getCookieMac } from \"@/utils/cookies\";\n\nexport default defineComponent({\n props: {\n color: {\n type: String,\n default: () => \"#fff\",\n },\n metaObj: {\n type: Object,\n default: () => {\n return {};\n },\n },\n // title: {\n // type: String,\n // default: () => \"\",\n // },\n },\n components: {\n VanIcon: Icon,\n },\n setup(props) {\n const router = useRouter();\n const route: any = useRoute();\n const proxyData = reactive({\n route: route,\n goBack() {\n if (route.meta.toName) {\n router.push({ name: route.meta.toName });\n } else {\n router.go(-1);\n }\n },\n goLogin() {\n let mac: any = getCookieMac();\n router.push({\n name: \"home\",\n query: { mac: mac, type: \"logoOut\" },\n });\n },\n });\n onMounted(() => {\n console.log(props);\n });\n return {\n ...toRefs(proxyData),\n };\n },\n});\n","import { render } from \"./Comheader.vue?vue&type=template&id=90cd68ae&scoped=true&ts=true\"\nimport script from \"./Comheader.vue?vue&type=script&lang=ts\"\nexport * from \"./Comheader.vue?vue&type=script&lang=ts\"\n\nimport \"./Comheader.vue?vue&type=style&index=0&id=90cd68ae&lang=scss&scoped=true\"\n\nimport exportComponent from \"/Users/wangyong/shanggeyun/code/sagacloud-sagacare-ipad/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-90cd68ae\"]])\n\nexport default __exports__","import Keys from '@/constant/key'\nimport Cookies from 'js-cookie'\nimport { UserInfoModel } from '@/model/userModel'\n\nexport const setLanguage = (language: string) => Cookies.set(Keys.languageKey, language)\nexport const setSize = (size: string) => Cookies.set(Keys.sizeKey, size)\nexport const getToken = () => Cookies.get(Keys.tokenKey)\nexport const getProjectId = () => Cookies.get(Keys.projectId)\nexport const setProjectId = (projectId: any) => Cookies.set(Keys.projectId, projectId)\nexport const setToken = (token: string) => Cookies.set(Keys.tokenKey, token)\nexport const removeToken = () => Cookies.remove(Keys.tokenKey)\nexport const setCookieUserInfo = (userInfo: any) => Cookies.set(Keys.userInfoKey, userInfo)\nexport const setCookieMac = (mac: any) => Cookies.set(Keys.macKey, mac)\nexport const getCookieMac = () => {\n return Cookies.get(Keys.macKey)\n}\nexport const getCookieUserInfo = () => {\n let userInfo: any = Cookies.get(Keys.userInfoKey)\n if (userInfo) {\n return JSON.parse(userInfo)\n } else {\n return ''\n }\n}\n\nexport const getSessionUserInfo = () => {\n let userInfo: any = sessionStorage.getItem(Keys.userInfoKey)\n if (userInfo) {\n return JSON.parse(userInfo)\n } else {\n return ''\n }\n}\nexport const setSessionUserInfo = (userInfo: any) => sessionStorage.setItem(Keys.userInfoKey, userInfo)\n\n\n","export enum ContentType{\n FORM = 'application/x-www-form-urlencoded',\n JSON = 'application/json; charset=utf-8'\n}\n\nexport enum Device{\n // IOS = 'iOS',\n // ANDROID = 'Android',\n // WINDOWS = 'Windows',\n PC='PC'\n}\n","export enum InfoShowType{\n LOG,\n // NOTIFICATION,\n TOAST\n }\n","export enum Environment{\n Development = 'development',\n Production = 'production'\n}\n\nexport enum RouterSource{\n Frontend = 'frontend',\n Backend = 'backend'\n}\n\nexport enum RouterMode{\n Hash = 'hash'\n // HISTORY = 'history'\n}\n\nexport enum TokenStorageName{\n LocalStorage = 'localStorage',\n // SessionStorage = 'sessionStorage',\n Cookie = 'cookie'\n}\n","import { Environment, RouterSource, RouterMode, TokenStorageName } from '@/constant/settings'\n\nexport interface Settings{\n //项目中页面显示的名称\n title:string\n //基础url\n baseURL?: string\n // pro版本copyright可随意修改\n copyright?: string\n // 缓存路由的最大数量\n keepAliveMaxNum?: number\n // 路由模式,可选值为 history 或 hash\n routerMode?: RouterMode\n // 不经过token校验的路由\n routesWhiteList?: string[]\n // 加载时显示文字\n loadingText?: string\n // token名称\n tokenName?: string\n // token在localStorage、sessionStorage、cookie存储的key的名称\n tokenTableName?: string\n // token存储位置localStorage sessionStorage cookie\n storage?: TokenStorageName\n // token失效回退到登录页时是否记录本次的路由\n recordRoute?: true\n // 是否显示logo,不显示时设置false,显示时请填写remixIcon图标名称,暂时只支持设置remixIcon\n logo?: string\n // 在哪些环境下显示高亮错误\n errorLog?: Environment\n // 是否开启登录拦截\n loginInterception?: true\n // 是否开启登录RSA加密\n loginRSA?: false\n // fontEnd(前端导出路由)和backEnd(后端导出路由)两种方式\n routerSource?: RouterSource\n // 是否开启roles字段进行角色权限控制(如果是all模式后端完全处理角色并进行json组装,可设置false不处理路由中的roles字段)\n rolesControl?: boolean\n // vertical gallery comprehensive common布局时是否只保持一个子菜单的展开\n uniqueOpened?: boolean\n // vertical布局时默认展开的菜单path,使用逗号隔开建议只展开一个\n defaultOpeneds?: string[]\n // 需要加loading层的请求,防止重复提交\n debounce?: string[]\n // 代码生成机生成在view下的文件夹名称\n templateFolder?: string\n // 画廊布局和综合布局时,是否点击一级菜单默认开启第一个二级菜单\n openFirstMenu?: boolean,\n version: string\n}\n\nconst settings: Settings = {\n //项目中页面显示的名称\n title:'之江h5',\n //基础url\n baseURL: process.env.VUE_APP_BASE_API,\n // pro版本copyright可随意修改\n copyright: 'zy',\n // 缓存路由的最大数量\n keepAliveMaxNum: 99,\n // 路由模式,可选值为 history 或 hash\n routerMode: RouterMode.Hash,\n // 不经过token校验的路由\n routesWhiteList: [],\n // 加载时显示文字\n loadingText: 'loading',\n // token名称\n tokenName: 'token',\n // token在localStorage、sessionStorage、cookie存储的key的名称\n tokenTableName: 'token',\n // token存储位置localStorage sessionStorage cookie\n storage: TokenStorageName.LocalStorage,\n // token失效回退到登录页时是否记录本次的路由\n recordRoute: true,\n // 是否显示logo,不显示时设置false,显示时请填写remixIcon图标名称,暂时只支持设置remixIcon\n logo: '',\n // 在哪些环境下显示高亮错误\n errorLog: Environment.Development,\n // 是否开启登录拦截\n loginInterception: true,\n // 是否开启登录RSA加密\n loginRSA: false,\n // fontEnd(前端导出路由)和backEnd(后端导出路由)两种方式\n routerSource: RouterSource.Backend,\n // 是否开启roles字段进行角色权限控制(如果是all模式后端完全处理角色并进行json组装,可设置false不处理路由中的roles字段)\n rolesControl: true,\n // vertical gallery comprehensive common布局时是否只保持一个子菜单的展开\n uniqueOpened: false,\n // vertical布局时默认展开的菜单path,使用逗号隔开建议只展开一个\n defaultOpeneds: ['/vab'],\n // 需要加loading层的请求,防止重复提交\n debounce: ['doEdit'],\n // 代码生成机生成在view下的文件夹名称\n templateFolder: 'project',\n // 画廊布局和综合布局时,是否点击一级菜单默认开启第一个二级菜单\n openFirstMenu: true,\n version: '1.0'\n}\n\nexport default settings\n","\nimport { ContentType, Device } from '@/constant/headers'\nimport { InfoShowType } from '@/constant/network'\nimport settings from \"./setting.config\";\ninterface Headers{\n token: string\n contentType: string\n version: string\n device: Device\n}\n\nconst _header: Headers = {\n token: '',\n contentType: ContentType.JSON,\n version: settings.version ?? '1.0',\n device: Device.PC\n}\n\nexport interface NetworkConfig{\n host?: string\n timeout?: number\n loading?: false\n errorShowType?: InfoShowType\n header?: {},\n staticUrl?:string\n}\n\nconst networkConfig: NetworkConfig = {\n host: process.env.VUE_APP_BASE_API,\n timeout: 10000,\n loading: false,\n errorShowType: InfoShowType.LOG,\n header: _header,\n staticUrl:'https://brsg-test.tenants.link'\n}\n\nexport default networkConfig\n","import { useStore } from '@/store'\nimport HttpClient, { HttpClientConfig } from 'axios-mapper'\nimport networkConfig from '@/config/default/net.config'\nimport { getToken } from '@/utils/cookies'\nimport { Toast } from 'vant'\nimport Cookies from 'js-cookie'\nimport { request } from 'http'\nimport { getComparams, getUserInfo, setQueryConfig } from '.'\n\nexport const https = (configobj: any = { timeout: '' }) => {\n // debugger\n let config: HttpClientConfig = {\n baseURL: networkConfig.host,\n headers: {\n 'token': getToken(),\n 'sso-token': getToken(),\n 'X-Forwarded-Token': getToken()\n }\n }\n if (configobj.timeout) {\n config.timeout = configobj.timeout\n }\n const https = new HttpClient(config)\n https.httpClient.interceptors.request.use(function (request) {\n let comInfo = getUserInfo()\n // comInfo.projectId=\"Pj1101080255\"\n const comParams: string = setQueryConfig(comInfo)\n let url: any = request.url\n if (url.indexOf(\"?\") != -1) {\n request.url = request.url + \"&\" + comParams\n } else {\n request.url = request.url + \"?\" + comParams\n }\n return request\n }, function (error) {\n\n })\n // https.httpClient.interceptors.response.use(function (response) {\n // return response\n // }, function (error) {\n // // console.log('error===')\n // // console.log(error.response.status)\n // // console.log(error.status)\n // // if (error.response.status === 401) {\n // // Toast('登录失效,请退出app重新登录')\n // // sessionStorage.clear()\n // // const tokenOld: any = Cookies.get('accessToken')\n // // window.location.href = `/sgh5/home?accessToken=${tokenOld}`\n // // }\n // return Promise.reject(error)\n // })\n return https\n}\n\nexport const post = (url: any, data: any) => {\n return https().httpClient.post>(url, data).then(res => {\n const resData: string = JSON.parse(JSON.stringify(res.data))\n if (res.status >= 200 && res.status < 300) {\n return Promise.resolve(resData)\n } else {\n return Promise.reject(resData)\n }\n }).catch(async error => {\n return Promise.reject(error)\n })\n}\n\nexport const getUrlParams = (key: any = 'accessToken') => {\n let url: any = location.search //获取url中\"?\"符后的字串\n let theRequest: any = new Object()\n if (url.indexOf('?') != -1) {\n let str: any = url.substr(1)\n let strs: any = str.split('&')\n for (var i = 0; i < strs.length; i++) {\n theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1]\n }\n }\n let token: string = theRequest[key] || ''\n return token\n}\n\n\n\n","class Keys {\n static sidebarStatusKey = 'vue3-typescript-admin-sidebarStatusKey'\n static languageKey = 'vue3-typescript-admin-languageKey'\n static sizeKey = 'vue3-typescript-admin-sizeKey'\n static tokenKey = 'accessToken'\n static projectId = 'projectId'\n static aseKey = 'vue3-typescript-admin-ase-key'\n static companyKey = '245e7060643811eb934c0237aedb39a6'\n static openid = '602ef709beb64a1f9a4b6af2196d0af7'\n // static pubname = 'ipdh5'\n static pubname = 'sagacarepad'\n static pubname1 = 'sagacareAndtenantslink'\n static storageSpaceKey = 'historySpace'\n static historySearchSpaceKey = 'historySearchSpace'\n static storageFloorKey = 'historyFloor'\n static storageSpaceInfoKey = 'storageSpaceInfo'\n static userInfoKey = 'userInfo'\n static macKey = \"mac\"\n}\n\nexport default Keys\n",";(function(win, lib) {\n var doc = win.document;\n var docEl = doc.documentElement;\n var metaEl = doc.querySelector('meta[name=\"viewport\"]');\n var flexibleEl = doc.querySelector('meta[name=\"flexible\"]');\n var dpr = 0;\n var scale = 0;\n var tid;\n var flexible = lib.flexible || (lib.flexible = {});\n\n if (metaEl) {\n console.warn('将根据已有的meta标签来设置缩放比例');\n var match = metaEl.getAttribute('content').match(/initial\\-scale=([\\d\\.]+)/);\n if (match) {\n scale = parseFloat(match[1]);\n dpr = parseInt(1 / scale);\n }\n } else if (flexibleEl) {\n var content = flexibleEl.getAttribute('content');\n if (content) {\n var initialDpr = content.match(/initial\\-dpr=([\\d\\.]+)/);\n var maximumDpr = content.match(/maximum\\-dpr=([\\d\\.]+)/);\n if (initialDpr) {\n dpr = parseFloat(initialDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n if (maximumDpr) {\n dpr = parseFloat(maximumDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n }\n }\n\n if (!dpr && !scale) {\n var isAndroid = win.navigator.appVersion.match(/android/gi);\n var isIPhone = win.navigator.appVersion.match(/iphone/gi);\n var devicePixelRatio = win.devicePixelRatio;\n if (isIPhone) {\n // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案\n if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {\n dpr = 3;\n } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){\n dpr = 2;\n } else {\n dpr = 1;\n }\n } else {\n // 其他设备下,仍旧使用1倍的方案\n dpr = 1;\n }\n scale = 1 / dpr;\n }\n\n docEl.setAttribute('data-dpr', dpr);\n if (!metaEl) {\n metaEl = doc.createElement('meta');\n metaEl.setAttribute('name', 'viewport');\n metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');\n if (docEl.firstElementChild) {\n docEl.firstElementChild.appendChild(metaEl);\n } else {\n var wrap = doc.createElement('div');\n wrap.appendChild(metaEl);\n doc.write(wrap.innerHTML);\n }\n }\n\n function refreshRem(){\n var width = docEl.getBoundingClientRect().width;\n if (width / dpr > 1366) {\n width = 1366 * dpr;\n }\n var rem = width / 10;\n docEl.style.fontSize = rem + 'px';\n flexible.rem = win.rem = rem;\n }\n\n win.addEventListener('resize', function() {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }, false);\n win.addEventListener('pageshow', function(e) {\n if (e.persisted) {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }\n }, false);\n\n if (doc.readyState === 'complete') {\n doc.body.style.fontSize = 12 * dpr + 'px';\n } else {\n doc.addEventListener('DOMContentLoaded', function(e) {\n doc.body.style.fontSize = 12 * dpr + 'px';\n }, false);\n }\n\n\n refreshRem();\n\n flexible.dpr = win.dpr = dpr;\n flexible.refreshRem = refreshRem;\n flexible.rem2px = function(d) {\n var val = parseFloat(d) * this.rem;\n if (typeof d === 'string' && d.match(/rem$/)) {\n val += 'px';\n }\n return val;\n }\n flexible.px2rem = function(d) {\n var val = parseFloat(d) / this.rem;\n if (typeof d === 'string' && d.match(/px$/)) {\n val += 'rem';\n }\n return val;\n }\n\n})(window, window['lib'] || (window['lib'] = {}));\n","export enum PortaitMutationTypes {\n SET_AIR = 'SET_AIR',\n SET_LIGHT = 'SET_LIGHT',\n}\n","/*\n * @Description: user mutations type\n * @Author: ZY\n * @Date: 2020-12-23 10:25:37\n * @LastEditors: ZY\n * @LastEditTime: 2020-12-28 11:33:53\n */\n\nexport enum UserMutationTypes {\n SET_TOKEN = 'SET_TOKEN',\n SET_USER_NAME = 'SET_USER_NAME',\n SET_USER_ID = 'SET_USER_ID',\n SET_USER_PHONE = 'SET_USER_PHONE',\n SET_PROJECT_ID = 'SET_PROJECT_ID',\n SET_COMPANY_ID = 'SET_COMPANY_ID',\n SET_REMOTECONTROL = 'SET_REMOTECONTROL',\n SET_USER_MAC = 'SET_USER_MAC'\n}\n","import { createRouter, Router, createWebHashHistory, createWebHistory, RouteRecordRaw } from 'vue-router'\n\nconst Home: any = () => import('@/views/home/index.vue')\nconst Envmonitor: any = () => import('@/views/envmonitor/index.vue')\nconst EnvmonitorDetail: any = () => import('@/views/envmonitor/detail.vue')\nconst UserPortrait: any = () => import('@/views/portrait/index.vue')\nconst EnergySavig: any = () => import('@/views/portrait/energySavig.vue')\nconst EnergyDetail: any = () => import('@/views/portrait/energyDetail.vue')\nconst TodayEnergyDetail: any = () => import('@/views/portrait/todayEnergyDetail.vue')\nconst EnergyRank: any = () => import('@/views/portrait/energyRank.vue')\nconst IntegralDesc: any = () => import('@/views/portrait/integralDesc.vue')\nconst Record: any = () => import('@/views/portrait/record.vue')\nconst MySpace: any = () => import('@/views/envmonitor/mySpace/index.vue')\nconst SetMainSpace: any = () => import('@/views/choiceSpace/setMainSpace.vue')\n\nexport const constantRoutes: Array = [\n {\n path: '/',\n redirect: '/home',\n meta: {\n title: '首页',\n hideHeader: true\n }\n },\n {\n path: '/home',\n component: Home,\n name: 'home',\n meta: {\n title: '首页',\n hideHeader: true\n }\n },\n {\n path: '/envmonitor',\n component: Envmonitor,\n // component: resolve => require(['@/views/envmonitor/index.vue'], resolve),\n name: 'envmonitor',\n meta: {\n title: '环境控制',\n hideHeader: true\n }\n },\n {\n path: '/envmonitor-detail',\n // component: () => import('@/views/envmonitor/detail.vue'),\n component: EnvmonitorDetail,\n name: 'envmonitorDetail',\n meta: {\n title: '环境详情',\n color: '#fff',\n hideHeader: true\n }\n },\n {\n path: '/user-portrait',\n // component: () => import('@/views/portrait/index.vue'),\n component: UserPortrait,\n name: 'userPortrait',\n meta: {\n title: '节能评分',\n color: '#FFE823',\n hideHeader: true\n }\n },\n {\n path: '/energy-savig',\n // component: () => import('@/views/portrait/energySavig.vue'),\n component: EnergySavig,\n name: 'energySavig',\n meta: {\n title: '我的节能',\n color: '#ECEFF4',\n hideHeader: true\n }\n },\n {\n path: '/energy-detail',\n // component: () => import('@/views/portrait/energyDetail.vue'),\n component: EnergyDetail,\n name: 'energyDetail',\n meta: {\n title: '我的节能详情 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/today-energy-detail',\n // component: () => import('@/views/portrait/todayEnergyDetail.vue'),\n component: TodayEnergyDetail,\n name: 'todayEnergyDetail',\n meta: {\n title: '今天新增 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/energy-rank',\n // component: () => import('@/views/portrait/energyRank.vue'),\n component: EnergyRank,\n name: 'energyRank',\n meta: {\n title: '节能排名 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/integral-desc',\n // component: () => import('@/views/portrait/integralDesc.vue'),\n component: IntegralDesc,\n name: 'integralDesc',\n meta: {\n title: '积分说明 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/record',\n // component: () => import('@/views/portrait/record.vue'),\n component: Record,\n name: 'Record',\n meta: {\n title: '调节记录 ',\n color: '#E5E5E5',\n hideHeader: true\n }\n },\n {\n path: '/mySpace',\n // component: () => import('@/views/envmonitor/mySpace/index.vue'),\n component: MySpace,\n name: 'mySpace',\n meta: {\n title: '切换空间',\n color: '#f7f8fa',\n hideHeader: true\n }\n },\n {\n path: '/choice-project',\n component: () => import('@/views/choiceSpace/choiceProject.vue'),\n name: 'choiceProject',\n meta: {\n title: '选择所属公司名称',\n toName: \"home\",\n color: '#fff',\n hideHeader: false,\n showLogoOut: true\n }\n },\n {\n path: '/choice-space',\n component: () => import('@/views/choiceSpace/choiceSpace.vue'),\n name: 'choiceSpace',\n meta: {\n title: '选择办公空间',\n // toName: \"choiceProject\",\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/set-main-space',\n component: () => import('@/views/choiceSpace/setMainSpace.vue'),\n name: 'setMainSpace',\n meta: {\n title: '设置主空间',\n title1: '左滑动可删除空间',\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/map-data',\n component: () => import('@/views/mapData/index.vue'),\n name: 'mapData',\n meta: {\n title: '处理地图数据',\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/map-data-util',\n component: () => import('@/views/mapData/indexOld.vue'),\n name: 'mapDataold',\n meta: {\n title: '处理地图数据',\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/map-data-new',\n component: () => import('@/views/mapDataNew/index.vue'),\n name: 'mapDataNew',\n meta: {\n title: '地图数据处理',\n color: '#F5F5F5',\n hideHeader: false\n }\n },\n {\n path: '/map-sichuan',\n component: () => import('@/views/mapDataNew/sichuan.vue'),\n name: 'map-sichuan',\n meta: {\n title: '四川大厦地图',\n color: '#F5F5F5',\n hideHeader: false\n }\n }\n]\n\nexport const asyncRoutes: Array = [\n // ...permissionModules\n]\nconst router = createRouter({\n history: createWebHistory('/sgipad/'),\n // history: createWebHashHistory('/sgh5/'),\n routes: constantRoutes\n})\n\nexport function resetRouter() {\n const newRouter = router;\n (router as any).matcher = (newRouter as any).matcher // reset router\n}\n\nexport default router\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#fff\",\"menuText\":\"#162b64\",\"menuActiveText\":\"#435ebe\"};","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\"\n\nconst _withScopeId = n => (_pushScopeId(\"data-v-4f0c3717\"),n=n(),_popScopeId(),n)\nconst _hoisted_1 = { class: \"home\" }\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Header = _resolveComponent(\"Header\")!\n const _component_router_view = _resolveComponent(\"router-view\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (_ctx.route.meta && !_ctx.route.meta.hideHeader)\n ? (_openBlock(), _createBlock(_component_Header, {\n key: 0,\n color: _ctx.route.meta.color,\n metaObj: _ctx.route.meta\n }, null, 8, [\"color\", \"metaObj\"]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass(!_ctx.route.meta.hideHeader ? 'ptheader' : ''),\n style: _normalizeStyle({ background: _ctx.route.meta.color })\n }, null, 6),\n (_openBlock(), _createBlock(_component_router_view, {\n key: _ctx.route.fullPath\n }))\n ]))\n}","\nimport { defineComponent, nextTick, onMounted, reactive, toRefs } from \"vue\";\nimport Header from \"@/components/header/Comheader.vue\";\nimport { useRoute, onBeforeRouteUpdate } from \"vue-router\";\nimport axios from \"axios\";\n\nexport default defineComponent({\n components: {\n Header,\n },\n setup() {\n const route: any = useRoute();\n const proxyData = reactive({\n route: route,\n transitionName: \"slide-right\",\n showHeader: false,\n getPadVersion() {\n axios.get(`/sgipad/pad_mtime`).then((res: any) => {\n let data: any = res.data || {};\n let pad_mtime: any = data.pad_mtime;\n let oldTime: any = localStorage.getItem(\"pad_mtime\");\n if (oldTime && oldTime !== pad_mtime) {\n localStorage.setItem(\"pad_mtime\", pad_mtime);\n window.location.reload();\n } else {\n localStorage.setItem(\"pad_mtime\", pad_mtime);\n }\n });\n },\n timerPadVersion() {\n setInterval(() => {\n proxyData.getPadVersion();\n }, 5000);\n },\n });\n nextTick(() => {\n const document: any = window.document;\n document.addEventListener(\"touchstart\", function (event: any) {\n if (event.touches.length > 1) {\n event.preventDefault();\n }\n });\n document.addEventListener(\"gesturestart\", function (event: any) {\n event.preventDefault();\n });\n });\n onMounted(() => {\n proxyData.timerPadVersion();\n });\n return {\n ...toRefs(proxyData),\n };\n },\n});\n","import { render } from \"./App.vue?vue&type=template&id=4f0c3717&scoped=true&ts=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\n\nimport \"./App.vue?vue&type=style&index=0&id=4f0c3717&lang=scss&scoped=true\"\n\nimport exportComponent from \"/Users/wangyong/shanggeyun/code/sagacloud-sagacare-ipad/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4f0c3717\"]])\n\nexport default __exports__","import router from '@/router'\nimport { RouteLocationNormalized } from 'vue-router'\nimport { useStore } from './store'\nimport { UserActionTypes } from './store/modules/user/action-types'\n// import { getUrlaccessToken } from '@/utils/https'\nimport { getToken, setCookieMac, setToken } from '@/utils/cookies'\nimport { Toast } from 'vant'\nimport Cookies from 'js-cookie'\nimport { getUrlParams } from './utils/https'\n\nrouter.beforeEach(async (to: RouteLocationNormalized, _: RouteLocationNormalized, next: any) => {\n const store = useStore()\n let macAdr: string = getUrlParams('mac')\n if (macAdr) {\n setCookieMac(macAdr)\n }\n await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n next()\n // const store = useStore()\n // const accessToken: any = getUrlaccessToken()\n // if (accessToken) {\n // setToken(accessToken)\n // }\n // if (process.env.VUE_APP_BASE_API !== '/borui/') {\n // if (to.path === '/home') {\n // next()\n // } else {\n // if (getToken()) {\n // if (store.state.user.userId) {\n // next()\n // } else {\n // await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n // next()\n // }\n // } else {\n // sessionStorage.clear()\n // const tokenOld: any = Cookies.get('accessToken')\n // if (to.path !== '/home') {\n // window.location.href = `/sgh5/home?accessToken=${tokenOld}`\n // }\n // Toast('登录失效,请退出app重新登录')\n // }\n // }\n // } else {\n // if (store.state.user.userId) {\n // next()\n // } else {\n // await store.dispatch(UserActionTypes.ACTION_GET_USER_INFO, undefined)\n // next()\n // }\n // }\n})\n\nrouter.afterEach((to: RouteLocationNormalized) => {\n // console.log(to)\n // Finish progress bar\n // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939\n\n // set page title\n // document.title = getPageTitle(to.meta.title)\n})\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport { store } from './store'\n// import 'amfe-flexible' // rem 布局适配\n// import 'amfe-flexible/index.js'\nimport '@/utils/flexible.js'\nimport '@/styles/index.scss'\nimport { Toast, Icon, Tab, Tabs, Loading, Popup } from 'vant'\nimport '@/permission'\n\nconst app = createApp(App)\n\n// Toast.setDefaultOptions()\nconst loadingStart = (duration: any = 0) => {\n Toast.loading({\n duration: duration, // 持续展示 toast\n forbidClick: true\n })\n}\nconst loadinngEnd = () => {\n Toast.clear()\n}\napp.config.globalProperties.$imgUrl=`http://api.sagacloud.cn/dp-auxiliary/image-service/common/image_get?systemId=dataPlatform`\napp.config.globalProperties.$fileUrl=`http://api.sagacloud.cn/dp-auxiliary/image-service/common/file_get?systemId=dataPlatform`\napp.config.globalProperties.$toast = Toast\napp.config.globalProperties.$loadingStart = loadingStart\napp.config.globalProperties.$loadinngEnd = loadinngEnd\napp\n .use(Toast).use(Icon)\n .use(Tabs)\n .use(Tab)\n .use(Loading)\n .use(Popup)\n .use(store)\n .use(router)\n .mount('#app')\n","\nexport enum UserActionTypes {\n ACTION_LOGIN = 'ACTION_LOGIN',\n ACTION_RESET_TOKEN = 'ACTION_RESET_TOKEN',\n ACTION_GET_USER_INFO = 'ACTION_GET_USER_INFO',\n ACTION_CHANGE_ROLES = 'ACTION_CHANGE_ROLES',\n ACTION_LOGIN_OUT = 'ACTION_LOGIN_OUT',\n SET_USER_MAC = 'SET_USER_MAC',\n ACTION_GET_WORKSPACE = \"ACTION_GET_WORKSPACE\"\n}\n","// Parse the time to string\nimport { store } from '@/store'\nimport Keys from '@/constant/key'\nimport any = jasmine.any\nimport Cookies from 'js-cookie'\n\nexport const parseTime = (\n time?: object | string | number | null,\n cFormat?: string\n): string | null => {\n if (time === undefined || !time) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string') {\n if (/^[0-9]+$/.test(time)) {\n // support \"1548221490638\"\n time = parseInt(time)\n } else {\n // support safari\n // https://stackoverflow.com/questions/4310953/invalid-date-in-safari\n time = time.replace(new RegExp(/-/gm), '/')\n }\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: { [key: string]: number } = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n const timeStr = format.replace(/{([ymdhisa])+}/g, (result, key) => {\n const value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n return value.toString().padStart(2, '0')\n })\n return timeStr\n}\n\n// Format and filter json data using filterKeys array\nexport const formatJson = (filterKeys: any, jsonData: any) =>\n jsonData.map((data: any) => filterKeys.map((key: string) => {\n if (key === 'timestamp') {\n return parseTime(data[key])\n } else {\n return data[key]\n }\n }))\n\n// Check if an element has a class\nexport const hasClass = (ele: HTMLElement, className: string) => {\n return !!ele.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n// Add class to element\nexport const addClass = (ele: HTMLElement, className: string) => {\n if (!hasClass(ele, className)) ele.className += ' ' + className\n}\n\n// Remove class from element\nexport const removeClass = (ele: HTMLElement, className: string) => {\n if (hasClass(ele, className)) {\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\n ele.className = ele.className.replace(reg, ' ')\n }\n}\n\n// Toggle class for the selected element\nexport const toggleClass = (ele: HTMLElement, className: string) => {\n if (!ele || !className) {\n return\n }\n let classString = ele.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n ele.className = classString\n}\nexport const setQueryConfig = function (queryConfig: any) {\n let _str = ''\n for (const o in queryConfig) {\n if (queryConfig[o] !== -1) {\n _str += o + '=' + queryConfig[o] + '&'\n }\n }\n _str = _str.substring(0, _str.length - 1) // 末尾是&\n return _str\n}\n\n// 获取用户信息\nexport const getUserInfo = function () {\n // debugger\n let userInfo = store.state.user\n const paramsInfo: any = {\n openid: userInfo.openid,\n userId: userInfo.userId,\n mac: userInfo.mac,\n pubname: Keys.pubname,\n projectId: userInfo.projectId\n }\n if (userInfo.userName) {\n paramsInfo.userName = userInfo.userName\n }\n if (userInfo.userPhone) {\n paramsInfo.userPhone = userInfo.userPhone\n }\n return paramsInfo\n}\n\n\n// 地址通用参赛携带\nexport const getComparams = function () {\n let userInfo = store.state.user\n let paramsInfo: any = {\n openid: Keys.openid,\n userId: userInfo.userId,\n pubname: Keys.pubname,\n mac: userInfo.mac,\n projectId: userInfo.projectId\n }\n if (userInfo.userName) {\n paramsInfo.userName = userInfo.userName\n }\n if (userInfo.userPhone) {\n paramsInfo.userPhone = userInfo.userPhone\n }\n return paramsInfo\n}\n\nexport const formatDate = function (split: string = 'YYYYMMDD', date: any = new Date()) {\n //三目运算符\n const dates = date ? date : new Date()\n //年份\n const year: number = dates.getFullYear()\n //月份下标是0-11\n const month: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n // //小时\n const Hours = dates.getHours() < 10 ? '0' + dates.getHours() : dates.getHours()\n // //分钟\n const Minutes = dates.getMinutes() < 10 ? '0' + dates.getMinutes() : dates.getMinutes()\n // //秒\n // const Seconds = dates.getSeconds() < 10 ? '0' + dates.getSeconds() : dates.getSeconds()\n //返回数据格式\n if (split === 'YYYY年MM月DD日') {\n return year + '年' + month + '月' + day + '日'\n } else if (split === 'YYYY.MM') {\n return year + '.' + month\n } else if (split === 'YYYYMM') {\n return year + '' + month\n } else if (split === 'YYYY-MM-DD') {\n return year + '-' + month + '-' + day\n } else if (split === 'YYYY.MM.DD HH:mm') {\n return year + '.' + month + \".\" + day + \" \" + Hours + \":\" + Minutes\n }\n {\n return year + '' + month + '' + day\n }\n}\n\n// 把字符串 (yyyymmdd) 转换成日期格式(yyyy-mm-dd)\nexport const formatDateStr = function (date: any) {\n if (date) {\n return date.replace(/^(\\d{4})(\\d{2})(\\d{2})$/, '$1-$2-$3')\n } else {\n return ''\n }\n}\nexport const getTomorrow = function (split: any = '') {\n let dates = new Date()\n dates.setTime(dates.getTime() + 24 * 60 * 60 * 1000)\n const Year: number = dates.getFullYear()\n //月份下标是0-11\n const Months: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n //返回数据格式\n return Year + split + Months + split + day\n}\n\nexport function getHours() {\n return new Date().getHours()\n}\n\nexport function parseImgUrl(base: string, img: string) {\n if (img) {\n return `${process.env.BASE_URL}images/${base}/${img}`\n } else {\n return ''\n }\n}\n\n// 判断舒服在当前公司\nexport function isWithinLocation(companyConfig: any) {\n let targetLocationInfo, maxDistance\n // 是否有权限不限制距离 true-不限制,false-限制\n let remoteControl = store.state.user.remoteControl\n // let companyConfig = store.state.company.companyConfig\n\n if (companyConfig.sagaCare && companyConfig.sagaCareLimit) {\n maxDistance = companyConfig.sagaCareDistance\n let location = companyConfig.sagaCareCoords.split(',')\n targetLocationInfo = {\n longitude: location[0],\n latitude: location[1]\n }\n }\n maxDistance = maxDistance || 1\n let toastTip = '您好像不在公司'\n}\n\n/**\n * js 获取以前或者未来日期\n * @param year\n */\nexport function getAddYear(year: number = 0) {\n let time = new Date()\n time.setFullYear(time.getFullYear() + year)\n let y = time.getFullYear()\n let m = time.getMonth() + 1\n return new Date(y + '/' + m)\n}\n\n/**\n *\n * 获取上一个月,日期格式yyyyMM\n */\nexport function getPreMonth(formatType: any = '') {\n const nowdays = new Date()\n let year = nowdays.getFullYear()\n let month: any = nowdays.getMonth()\n if (month === 0) {\n month = 12\n year = year - 1\n }\n if (month < 10) {\n month = '0' + month\n }\n if (formatType === 'YYYY.MM') {\n return year + '.' + month\n } else if (formatType === 'YYYY年MM月') {\n return year + '年' + month + '月'\n } else {\n return year + '' + month\n }\n}\n\n/**\n * 格式化日期 3月21日\n */\nexport const formatEnergyDate = function (time: any) {\n //三目运算符\n const dates = time ? new Date(time) : new Date()\n //月份下标是0-11\n const months: any = (dates.getMonth() + 1) < 10 ? '0' + (dates.getMonth() + 1) : (dates.getMonth() + 1)\n //具体的天数\n const day: any = dates.getDate() < 10 ? '0' + dates.getDate() : dates.getDate()\n const year: number = dates.getFullYear()\n const hours = dates.getHours() < 10 ? '0' + dates.getHours() : dates.getHours()\n // //分钟\n const minutes = dates.getMinutes() < 10 ? '0' + dates.getMinutes() : dates.getMinutes()\n //返回数据格式\n return [\n year + '年' + months + '月',\n months + '月' + day + '日',\n hours + ':' + minutes\n ]\n}\n\nexport const setSession = function (key: any = '', obj: any = '') {\n if (obj) {\n let str = JSON.stringify(obj)\n sessionStorage.setItem(key, str)\n }\n}\n\nexport const getSession = function (key: any = '') {\n if (key) {\n let obj: any = sessionStorage.getItem(key)\n if (obj) {\n return JSON.parse(obj)\n }\n }\n return ''\n}\n\n/**\n * 本地存储localStorage\n * @param key\n * @param obj\n */\nexport const setLocalStorage = function (key: any = '', obj: any = '') {\n if (obj) {\n if (obj instanceof Object) {\n let str = JSON.stringify(obj)\n localStorage.setItem(key, str)\n } else {\n localStorage.setItem(key, obj)\n }\n }\n}\n\n/**\n * 获取本地存储\n * @param key\n */\nexport const getLocalStorage = function (key: any) {\n if (key) {\n let obj: any = localStorage.getItem(key)\n if (obj) {\n return JSON.parse(obj)\n } else {\n return ''\n }\n }\n return ''\n}\n\n/**\n * 存储最新的空间信息\n * @param spaceInfo\n */\nexport const setLocalNewSpaceInfo = function (spaceInfo: any) {\n setLocalStorage(Keys.storageSpaceInfoKey, spaceInfo)\n}\n\n/**\n * 获取最新的空间信息\n */\nexport const getLocalNewSpaceInfo = function () {\n let spaceInfo: any = getLocalStorage(Keys.storageSpaceInfoKey)\n return spaceInfo\n}\n\n/**\n * 本地缓存建筑,楼层,空间\n */\nexport const localStorageSpaceId = function (buildingId: any, floorId: any, spaceId: any) {\n let spaceMap: any = getLocalStorage(Keys.storageSpaceKey) ? getLocalStorage(Keys.storageSpaceKey) : {}\n let key: any = `${buildingId},${floorId}`\n spaceMap[key] = spaceId\n setLocalStorage(Keys.storageSpaceKey, spaceMap)\n}\nexport const getStorageSpaceId = function () {\n let spaceMap: any = getLocalStorage(Keys.storageSpaceKey)\n return spaceMap\n}\n\n/**\n * 本地缓存建筑对应的楼层\n */\nexport const localStorageFloor = function (buildingId: any, floorId: any) {\n let floorMap: any = getLocalStorage(Keys.storageFloorKey) ? getLocalStorage(Keys.storageFloorKey) : {}\n floorMap[buildingId] = floorId\n setLocalStorage(Keys.storageFloorKey, floorMap)\n}\n/**\n * 获取本地存储的建筑对应的关系\n * @param buildingId\n * @param floorId\n */\nexport const getLocalStorageFloor = function () {\n let floorMap: any = getLocalStorage(Keys.storageFloorKey)\n return floorMap\n}\n\n/**\n * 缓存搜索页面最近查找的数据\n * @param item\n */\nexport const setLocalSearchSpace = function (item: any) {\n let historySearch: any = getLocalStorage(Keys.historySearchSpaceKey)\n let flag = false\n historySearch = historySearch ? historySearch : []\n historySearch.map((historyItem: any) => {\n if (historyItem.id === item.id) {\n flag = true\n }\n })\n if (!flag) {\n historySearch.push(item)\n }\n setLocalStorage(Keys.historySearchSpaceKey, historySearch)\n}\n\n/**\n * 获取搜索页面最近查找的数据\n */\nexport const getLocalSearchSpace = function () {\n return getLocalStorage(Keys.historySearchSpaceKey) ? getLocalStorage(Keys.historySearchSpaceKey) : []\n}\n\n/**\n *存储当前项目id\n */\nexport const setLocalProjectId = function (projectId: any) {\n setLocalStorage(Keys.projectId, projectId)\n}\n\n/**\n * 获取当前项目id\n * @param projectId\n */\nexport const getLocalProjectId = function () {\n return localStorage.getItem(Keys.projectId)\n}\n/**\n * 清楚当前所有的存储数据\n */\nexport const clearAllLocalData = function () {\n localStorage.clear()\n Cookies.remove('userInfo')\n Cookies.remove('projectId')\n Cookies.remove('accessToken')\n}\n\nexport const doHandleMonth = function (month: any) {\n let m: any = month\n if (month.toString().length == 1) {\n m = '0' + month\n }\n return m\n}\n\nexport const getWeekDate = function (day: any) {\n let weeks: any = new Array(\n '周日',\n '周一',\n '周二',\n '周三',\n '周四',\n '周五',\n '周六'\n )\n let week: any = weeks[day]\n return week\n}\n\nexport const getNowWeek = function () {\n let date: any = new Date()\n let day: any = date.getDay()\n let nowWeek: any = getWeekDate(day)\n return nowWeek\n}\n\nexport const getDate = function (date: any) {\n return date.getDate() < 10 ? '0' + date.getDate() : date.getDate()\n}\n\n/**\n * 初始化24:00\n */\nexport const getTimers = function () {\n let timers: any = new Array()\n for (let i = 0; i <= 24; i++) {\n let str: any = '00'\n if (i < 10) {\n str = '0' + i\n } else {\n str = i\n }\n timers.push(str + ':00')\n if (i < 24) {\n timers.push(str + ':30')\n }\n }\n console.log(\"timers====\")\n console.log(timers)\n return timers\n}\n\nexport const getNowTime = function () {\n let date: any = new Date()\n let hours: any = date.getHours()\n let minute: any = date.getMinutes()\n let index: any = date.getHours()\n if (minute < 30) {\n hours = hours + ':' + '00'\n index = index * 2\n } else {\n hours = hours + ':' + '30'\n index = index * 2 + 1\n }\n return [hours, index]\n}\n\n// 获取当前真实时间\nexport const getRelNowTime = function () {\n let date: any = new Date()\n let hours: any = date.getHours()\n let minute: any = date.getMinutes()\n if (hours < 10) {\n hours = \"0\" + hours\n }\n if (minute < 10) {\n minute = \"0\" + minute\n }\n return hours + \"\" + minute + \"00\"\n}\n\n/**\n * 19000转成19:00\n */\nexport const formatTimerStr = function (timer: any) {\n if (timer) {\n let str: any = (timer / 10000).toFixed(2)\n str = str.replace(\".\", \":\")\n return str\n } else {\n return ''\n }\n}\n\nexport const newNumber = function (start: any, end: any, masAddess: any) {\n return masAddess + \"\" + Math.round(Math.random() * (end - start) + start);//生成在[start,end]范围内的随机数值,只支持不小于0的合法范围\n}\n\nexport const formateTimeContinuous: any = function (index: any = 1,\n startTime: any,\n endTime: any,\n type: any = 1, data: any = [], that: any) {\n let todayDate: any = new Date()\n let tomorrowData = new Date(todayDate.setTime(todayDate.getTime() + 24 * 60 * 60 * 1000))\n let nowDate: any = formatDate(\"YYYY-MM-DD\");\n let tomorrowDate: any = formatDate(\"YYYY-MM-DD\", tomorrowData);\n data.map((item: any) => {\n // debugger\n let date: any = formatDateStr(item.date);\n let week: any = getWeekDate(new Date(date).getDay());\n if (date == nowDate) {\n week = '今日'\n } else if (date == tomorrowDate) {\n week = '次日'\n }\n item.week = week;\n });\n // debugger\n let text: any = \"\";\n // 工作时间和第二天连续的问题\n // 工作时间连续的问题\n let cusStartTime: any = data[index].cusStartTime;\n let cusEndTime: any = data[index].cusEndTime;\n if (type === 1) {\n // debugger;\n if (endTime === \"240000\") {\n // 处理时间连续的问题\n let customSceneList: any = data[index]?.customSceneList ?? [];\n if (cusStartTime === \"000000\") {\n text = data[index].week;\n endTime = cusEndTime;\n }\n customSceneList.map((item: any) => {\n if (item.startTime === \"000000\") {\n text = data[index].week;\n endTime = item.endTime;\n } else if (endTime === item.startTime) {\n text = data[index].week;\n endTime = item.endTime;\n }\n if (endTime === cusStartTime) {\n text = data[index].week;\n endTime = cusEndTime;\n }\n });\n if (text) {\n let nowIndex: any = index + 1;\n that.text = text\n if (nowIndex < data.length - 1) {\n return formateTimeContinuous(nowIndex, startTime, endTime, 1, data, that);\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n } else {\n // 预约时候后找最近的一段预约时间\n let nowTime: any = (getNowTime()[0]).replace(\":\", \"\") + \"00\"\n let customSceneList: any = data[index]?.customSceneList ?? [];\n customSceneList.map((item: any) => {\n if (index === 0) {\n if (nowTime < item.startTime) {\n if (!startTime || !endTime) {\n startTime = item.startTime\n endTime = item.endTime\n text = data[index].week\n }\n }\n } else {\n if (!startTime || !endTime) {\n startTime = item.startTime\n endTime = item.endTime\n text = data[index].week\n } else {\n // debugger\n // debugger\n if (endTime == '240000') {\n if (item.startTime == \"000000\") {\n endTime = item.endTime\n text = data[index].week\n }\n } else {\n if (endTime === item.startTime) {\n endTime = item.endTime\n text = data[index].week\n }\n }\n }\n }\n if (that.text) {\n let startText: any = that.text.split(\"~\")[0]\n that.text = startText\n if (text && text != startText) {\n that.text = startText + \"~\" + text\n }\n } else {\n that.text = text\n }\n })\n if (startTime && endTime) {\n if (endTime == '240000') {\n let nowIndex: any = index + 1\n if (nowIndex < data.length - 1) {\n return formateTimeContinuous(nowIndex, startTime, endTime, 2, data, that);\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n } else {\n let nowIndex: any = index + 1\n if (nowIndex < data.length - 1) {\n return formateTimeContinuous(nowIndex, startTime, endTime, 2, data, that);\n } else {\n return {\n text: that.text,\n startTime: startTime,\n endTime: endTime,\n };\n }\n }\n }\n}\n"],"sourceRoot":""}