{"version":3,"sources":["fonts/VAGRounded-Light.eot","components/molecules/simulation-button/square-button-big.gif","components/molecules/visualisation/assets/simulation/main-standard/test.png","components/molecules/visualisation/assets/simulation/smartmeter_counterstatus.gif","fonts/VAGRounded-Light.ttf","fonts/VAGRounded-Light.svg","fonts/VAGRounded-Light.woff","fonts/VAGRounded-Light.woff2","fonts/VAGRounded-Light.otf","components/molecules/visualisation/assets/full1.jpg","components/molecules/visualisation/assets/overview.jpg","components/molecules/visualisation/assets/overview-pressed.jpg","components/molecules/visualisation/assets/simulation.jpg","components/molecules/visualisation/assets/simulation_pressed.jpg","components/molecules/visualisation/assets/animations/full-to-overview.mp4","components/molecules/visualisation/assets/animations/overview-to-full.mp4","components/molecules/visualisation/assets/animations/overview-to-simulation.mp4","components/molecules/visualisation/assets/animations/simulation-to-overview.mp4","components/molecules/visualisation/assets/animations/simulation-to-full.mp4","components/molecules/visualisation/assets/simulation/main/1.png","components/molecules/visualisation/assets/simulation/main/2.png","components/molecules/visualisation/assets/simulation/main/3.png","components/molecules/visualisation/assets/simulation/main/4.png","components/molecules/visualisation/assets/simulation/main-standard/1.png","components/molecules/visualisation/assets/simulation/main-standard/2.png","components/molecules/visualisation/assets/simulation/main-standard/3.png","components/molecules/visualisation/assets/simulation/main-standard/4.png","components/molecules/visualisation/assets/simulation/main-standard/5.png","components/molecules/visualisation/assets/simulation/main-standard/6.png","components/molecules/visualisation/assets/simulation/main-standard/7.png","components/molecules/visualisation/assets/simulation/main-standard/8.png","components/molecules/visualisation/assets/simulation/main-standard/11.png","components/molecules/visualisation/assets/simulation/main-standard/12.png","components/molecules/visualisation/assets/simulation/main-mid/1.png","components/molecules/visualisation/assets/simulation/main-mid/2.png","components/molecules/visualisation/assets/simulation/main-mid/3.png","components/molecules/visualisation/assets/simulation/main-mid/4.png","components/molecules/visualisation/assets/simulation/main-mid/5.png","components/molecules/visualisation/assets/simulation/main-mid/6.png","components/molecules/visualisation/assets/simulation/main-mid/7.png","components/molecules/visualisation/assets/simulation/main-mid/8.png","components/molecules/visualisation/assets/simulation/main-mid/9.png","components/molecules/visualisation/assets/simulation/main-mid/10.png","components/molecules/visualisation/assets/simulation/main-profiles/1.png","components/molecules/visualisation/assets/simulation/main-profiles/2.png","components/molecules/visualisation/assets/simulation/main-profiles/3.png","components/molecules/visualisation/assets/simulation/main-lp1/1.png","components/molecules/visualisation/assets/simulation/main-lp1/2.png","components/molecules/visualisation/assets/simulation/main-lp1/3.png","components/molecules/visualisation/assets/simulation/main-lp1/4.png","components/molecules/visualisation/assets/simulation/main-lp1/5.png","components/molecules/visualisation/assets/simulation/main-lp1/6.png","components/molecules/visualisation/assets/simulation/main-lp1/7.png","components/molecules/visualisation/assets/simulation/main-lp1/8.png","components/molecules/visualisation/assets/simulation/main-lp1/9.png","components/molecules/visualisation/assets/simulation/main-lp1/10.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/1.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/2.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/3.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/4.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/5.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/6.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/7.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/8.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/9.png","components/molecules/visualisation/assets/simulation/main-lp1-entries/last.png","components/molecules/visualisation/assets/simulation/main-lp2/1.png","components/molecules/visualisation/assets/simulation/main-lp2/2.png","components/molecules/visualisation/assets/simulation/main-lp2/3.png","components/molecules/visualisation/assets/simulation/main-lp2/4.png","components/molecules/visualisation/assets/simulation/main-lp2/5.png","components/molecules/visualisation/assets/simulation/main-lp2/6.png","components/molecules/visualisation/assets/simulation/main-lp2/7.png","components/molecules/visualisation/assets/simulation/main-lp2/8.png","components/molecules/visualisation/assets/simulation/main-lp2/9.png","components/molecules/visualisation/assets/simulation/main-lp2/10.png","components/molecules/visualisation/assets/simulation/main-lp2-entries/1.png","components/molecules/visualisation/assets/simulation/main-lp2-entries/last.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/1.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/2.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/3.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/4.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/5.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/6.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/7.png","components/molecules/visualisation/assets/simulation/main-lp2-entries-values/last.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/1.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/2.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/3.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/4.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/5.png","components/molecules/visualisation/assets/simulation/main-lp1-entries-values/last.png","styles/constants.js","styles/global.js","components/atoms/absolute-box/absolute-box.js","components/atoms/aspect-ratio-box/aspect-ratio-box.js","components/atoms/highlight-button/highlight-button.js","components/molecules/simulation-button/simulation-button.js","components/molecules/visualisation/visualisation.js","components/atoms/text/text.js","styles/breakpoints.js","styles/media-queries.js","styles/layout.js","utils/use-window-size.js","components/templates/landing-page/landing-page.js","components/atoms/title/title.js","components/atoms/subtitle/subtitle.js","components/molecules/header/header.js","components/atoms/button/button.js","components/atoms/button/link-button.js","components/pages/landing-page/landing-page.js","components/templates/general/general.js","components/molecules/nav/nav.js","components/atoms/button-sprite/button-sprite.js","components/atoms/heading/heading.js","components/molecules/button-instruction/button-instruction.js","components/organisms/button-details/button-details.js","components/atoms/chevron/chevron.js","components/molecules/exit-link/exit-link.js","components/pages/overview/overview.js","components/molecules/breadcrumbs/breadcrumbs.js","components/molecules/chevrons/chevrons.js","components/molecules/simulation-instruction/simulation-instruction.js","components/organisms/simulation-instructions/simulation-instructions.js","components/organisms/simulation-menu/simulation-menu.js","components/organisms/simulation-display/simulation-display.js","components/pages/simulation/simulation.js","App.js","serviceWorker.js","index.js","components/molecules/visualisation/assets/simulation/main-standard/9.png","components/molecules/visualisation/assets/simulation/main-standard/10.png"],"names":["module","exports","primary","Color","secondary","colors","primaryDarker","darken","hex","primaryDark","primaryLight","lighten","primaryLighter","secondaryDarker","secondaryDark","secondaryLight","secondaryLighter","letterSpacing","md","lg","lineSpacings","fontSizes","root","sm","styles","css","emotionNormalize","font1","font6","font2","font","font4","font5","styleConstants","Box","props","y","x","width","height","minHeight","minWidth","centered","forwardRef","ref","children","Outer","padding","Inner","ratio","outerProps","innerProps","Button","active","transparent","aspectRatio","onClick","onHover","special","over","show","onMouseOver","onMouseOut","Animation","onMouseDown","onMouseUp","onNext","onBack","onEnter","onExit","menuItem","useState","mouseDownTime","setMouseDownTime","mouseDownDuration","setMouseDownDuration","mouseDown","animationRef","useRef","displayState","setDisplayState","useEffect","current","src","buttonDownGif","Math","random","handle","setTimeout","Date","getTime","clearTimeout","handleMouseDown","e","preventDefault","stopPropagation","animationTimer","pathname","useLocation","click","actionSimpleClick","actionDoubleClick","delay","setClick","exit","timer","prev","useSimpleAndDoubleClick","console","log","style","display","onTouchStart","onSelect","Image","DisplayImage","Video","ElementHighlightButton","path","history","useHistory","location","push","state","placeholderRect","routeMatch","useRouteMatch","newAsset","params","mode","asset","setAsset","simulationButtonDown","setSimulationButtonDown","loading","setLoading","mainStandard9Display","standardDisplay","setStandardDisplay","beforeSimulation","setBeforeSimulation","showMenuButton","setShowMenuButton","window","listen","action","timeId","images","full","overview","overviewPressed","simulation","simulationPressed","animations","fullToOverview","overviewToFull","overviewToSimulation","simulationToOverview","simulationToFull","animationMatch","match","image","animation","simulationRouteMatch","simulationItemRouteMatch","alt","Fragment","mainStandard0Display","mainStandard10Display","className","fontSize","color","fontWeight","menu","parseInt","item","displays","main","main1Display","enter","main2Display","main3Display","main4Display","mainStandard1Display","mainStandard2Display","mainStandard3Display","mainStandard4Display","mainStandard5Display","mainStandard6Display","mainStandard7Display","mainStandard8Display","mainStandard11Display","mainStandard12Display","mainMid1Display","mainMid2Display","mainMid3Display","mainMid4Display","mainMid5Display","mainMid6Display","mainMid7Display","mainMid8Display","mainMid9Display","mainMid10Display","mainProfiles1Display","mainProfiles2Display","mainProfiles3Display","mainLP11Display","mainLP12Display","mainLP13Display","mainLP14Display","mainLP15Display","mainLP16Display","mainLP17Display","mainLP18Display","mainLP19Display","mainLP110Display","mainLP1Entries1Display","mainLP1Entries2Display","mainLP1Entries3Display","mainLP1Entries4Display","mainLP1Entries5Display","mainLP1Entries6Display","mainLP1Entries7Display","mainLP1Entries8Display","mainLP1Entries9Display","mainLP1EntriesLastDisplay","mainLP1EntriesValue1Display","mainLP1EntriesValue2Display","mainLP1EntriesValue3Display","mainLP1EntriesValue4Display","mainLP1EntriesValue5Display","mainLP1EntriesValueLastDisplay","mainLP21Display","mainLP22Display","mainLP23Display","mainLP24Display","mainLP25Display","mainLP26Display","mainLP27Display","mainLP28Display","mainLP29Display","mainLP210Display","mainLP2Entries1Display","mainLP2EntriesLastDisplay","mainLP2EntriesValue1Display","mainLP2EntriesValue2Display","mainLP2EntriesValue3Display","mainLP2EntriesValue4Display","mainLP2EntriesValue5Display","mainLP2EntriesValue6Display","mainLP2EntriesValue7Display","mainLP2EntriesValueLastDisplay","nextDisplay","length","renderRegisterDisplayHighlights","indexFieldWidth","indexFieldPositionX","dataWidth","dataPositionX","obisState","Array","from","v","i","renderSimulationElements","autoPlay","onLoadedData","onEnded","type","Wrapper","lineSpacing","align","undefined","otherProps","breakpoints","array","xl","map","breakpoint","container","mq","isClient","getSize","useCallback","innerWidth","innerHeight","windowSize","setWindowSize","handleResize","addEventListener","removeEventListener","layout","Main","Visualisation","mQ","Content","Buttons","header","text","buttons","setVisualisationPlaceholderRect","visualisationPlaceholderRef","useWindowSize","visualisationRect","getBoundingClientRect","newVisualisationRect","left","pageXOffset","top","pageYOffset","b","key","subtitle","fluid","withRouter","to","event","HeaderWrapper","ExitLinkWrapper","NavigationWrapper","DetailsWrapper","exitLink","navigation","details","visualisationPlaceholderClearPercent","mainElementRef","visualisationPlaceholderOffset","setVisualisationPlaceholderOffset","mainRect","offset","LabelWrapper","label","spriteLabel","title","description","InstructionsWrapper","InstructionWrapper","icon","faChevronRight","routeElement","element","setElement","displayedElement","button","breaker","diodes","data","registers","serial","certification","vendor","badge","plc","as","textAlign","margin","counterStatusGraphic","isArray","reduce","p","c","count","rest","chevrons","IconWrapper","heading","instructions","displayRouteMatch","routePath","setPath","activePath","createDisplayTitles","titles","createLoadProfileTitles","createLoadProfile1EntryTitles","createProfile1EntryValueTitle","createProfile2EntryValueTitle","energySupplyDescription","energyReceiptDescription","displayDetails","indexField","quadrant","tariff","headings","flat","descriptions","phase","connection","obisunit","pc","enterable","search","indexOf","elementDetails","renderDisplayDetails","RoutesWrapper","PageWrapper","transitionDuration","enterDelay","App","visualisationPlaceholderRect","Router","MemoryRouter","exact","CSSTransition","in","timeout","classNames","unmountOnExit","rect","Boolean","hostname","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"qGAAAA,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,kC,kBCA3CD,EAAOC,QAAU,8yO,oBCAjBD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,+C,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,sC,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,wC,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,8C,oBCA3CD,EAAOC,QAAU,IAA0B,oD,oBCA3CD,EAAOC,QAAU,IAA0B,oD,oBCA3CD,EAAOC,QAAU,IAA0B,gD,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,gC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,kC,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,+B,oBCA3CD,EAAOC,QAAU,IAA0B,kC,iNCErCC,EAAUC,IAAM,WAChBC,EAAYD,IAAM,WAMT,GACbE,OAAQ,CACNC,cAAeJ,EAAQK,OAPL,KAO2BC,MAC7CC,YAAaP,EAAQK,OAPL,KAOyBC,MACzCN,QAASA,EAAQM,MACjBE,aAAcR,EAAQS,QARL,KAQ2BH,MAC5CI,eAAgBV,EAAQS,QARL,KAQ6BH,MAEhDK,gBAAiBT,EAAUG,OAbT,KAa+BC,MACjDM,cAAeV,EAAUG,OAbT,KAa6BC,MAC7CJ,UAAWA,EAAUI,MACrBO,eAAgBX,EAAUO,QAdT,KAc+BH,MAChDQ,iBAAkBZ,EAAUO,QAdT,KAciCH,OAGtDS,cAAe,CACbC,GAAI,IACJC,GAAI,WAGNC,aAAc,CACZF,GAAI,OACJC,GAAI,WAGNE,UAAW,CACTC,KAAM,GACNC,GAAI,UACJL,GAAI,YACJC,GAAI,a,4GC3BO,oBACb,cAAC,SAAD,CACEK,OAAQC,cACJC,IADE,wDAKUC,IALV,eAMUA,IANV,8CAOWC,IAPX,8BAQWC,IARX,yBASWC,IATX,8BAUWC,IAVX,0BAWWC,IAXX,wCAeaC,EAAeb,aAAaF,GAfzC,oR,gCCVJgB,EAAG,6DAEP,SAAAC,GAAK,OAAIA,EAAMC,GAAN,eAAmBD,EAAMC,EAAzB,OAFF,KAGP,SAAAD,GAAK,OAAIA,EAAME,GAAN,gBAAoBF,EAAME,EAA1B,OAHF,KAIP,SAAAF,GAAK,OAAIA,EAAMG,OAAN,iBAAyBH,EAAMG,MAA/B,OAJF,KAKP,SAAAH,GAAK,OAAIA,EAAMI,QAAN,kBAA2BJ,EAAMI,OAAjC,OALF,KAMP,SAAAJ,GAAK,OAAIA,EAAMK,WAAN,sBAAkCL,EAAMK,UAAxC,OANF,KAOP,SAAAL,GAAK,OAAIA,EAAMM,UAAN,qBAAgCN,EAAMM,SAAtC,OAPF,KAQP,SAAAN,GAAK,OAAIA,EAAMO,UAAN,kDARF,IAWMC,wBAAW,WAAyBC,GAAzB,IAAGC,EAAH,EAAGA,SAAaV,EAAhB,mCACxB,cAACD,EAAD,eAASC,EAAT,CAAgBS,IAAKA,IAClBC,MCbL,IAAMC,EAAK,yEAEM,SAAAX,GAAK,OAAIA,EAAMY,UAFrB,KAKLC,EAAK,wHAQIL,wBAAW,WAAuDC,GAAvD,QAAGK,aAAH,MAAW,GAAK,EAAhB,EAAmBJ,EAAnB,EAAmBA,SAAUK,EAA7B,EAA6BA,WAAYC,EAAzC,EAAyCA,WAAzC,OACxB,cAACL,EAAD,aAAOC,QAAO,UAAM,EAAIE,EAAS,IAAnB,MAA+BC,GAC3C,cAACF,EAAD,aAAOJ,IAAKA,GAASO,GAAaN,OCVhCO,EAAM,0HAMU,SAACjB,GAAD,OACjBA,EAAMkB,OAEHlB,EAAMmB,YACN,YACArB,EAAe5B,OAAOH,QAHtB+B,EAAe5B,OAAOO,iBARlB,+BAaC,SAACuB,GAAD,OAAYA,EAAMkB,OAAS,GAAM,KAblC,kDAgBY,gBAAGA,EAAH,EAAGA,OAAQC,EAAX,EAAWA,YAAX,OACjBD,GAAWC,EAA8C,YAAhCrB,EAAe5B,OAAOH,UAjB1C,kBAsBG,cAYR,IAXLmC,EAWI,EAXJA,EACAD,EAUI,EAVJA,EACAE,EASI,EATJA,MACAC,EAQI,EARJA,OACAG,EAOI,EAPJA,SACAa,EAMI,EANJA,YAMI,IALJF,cAKI,aAJJC,mBAII,SAHJE,EAGI,EAHJA,QACAC,EAEI,EAFJA,QACAC,EACI,EADJA,QAEMC,EAAO,SAACC,GACRF,GACFD,EAAQG,IAIZ,OACE,cAAC,EAAD,CAAavB,EAAGA,EAAGD,EAAGA,EAAGE,MAAOA,EAAOC,OAAQA,EAAQG,SAAUA,GAC/D,cAACU,EAAD,CACEC,OAAQA,EACRC,YAAaA,EACbE,QAASA,EACTK,YAAa,kBAAMF,GAAK,IACxBG,WAAY,kBAAMH,GAAK,KAEtBJ,GAAe,cAAC,EAAD,CAAgBN,MAAOM,O,kBCnD/C,IAAMH,EAAM,4JAQNW,EAAS,mJ,8GASA,cAQR,IAPLC,EAOI,EAPJA,YACAC,EAMI,EANJA,UACAC,EAKI,EALJA,OACAC,EAII,EAJJA,OACAC,EAGI,EAHJA,QACAC,EAEI,EAFJA,OACAC,EACI,EADJA,SACI,EACsCC,mBAAS,GAD/C,mBACGC,EADH,KACkBC,EADlB,OAE8CF,mBAAS,GAFvD,mBAEGG,EAFH,KAEsBC,EAFtB,KAGEC,EAAYJ,EAAgB,EAC5BK,EAAeC,mBAJjB,EAKoCP,mBAAS,QAL7C,mBAKGQ,EALH,KAKiBC,EALjB,KAOJC,qBAAU,WACR,GAAKL,EAAL,CACIF,GAAqB,IACvBG,EAAaK,QAAQC,IAAM,GAC3BN,EAAaK,QAAQC,IAAMC,IAAgB,QAAUC,KAAKC,UAE5D,IAAMC,EAASC,YAAW,WACxBb,GAAqB,IAAIc,MAAOC,UAAYlB,KAC3C,KACH,OAAO,WACLmB,aAAaJ,OAEd,CAACX,EAAWJ,EAAeE,IAE9B,IAAMkB,EAAkB,SAACC,GACvBA,EAAEC,iBACFD,EAAEE,kBACFtB,GAAiB,IAAIgB,MAAOC,WAE5B,IAAMM,EAAiBR,YAAW,WAChCR,EAAgB,YACf,KAGH,OADAhB,GAAeA,IACR,kBAAM2B,aAAaK,KAUtBC,EAAWC,cAAcD,SAqDzBE,EAnD0B,SAC9BC,EACAC,GAEI,IADJC,EACG,uDADK,IACL,EACuB/B,mBAAS,GADhC,mBACI4B,EADJ,KACWI,EADX,KAoCH,OAjCAH,EAAoB,WACd1B,EAAoB,KACtBR,GAAUA,IAEG,qBAAb+B,GACAvB,GAAqB,MACrBJ,EAASkC,KAETnC,GAAUA,IACDK,EAAoB,MAC7BN,GAAWA,KAIfiC,EAAoB,WAClBlC,GAAUA,KAGZc,qBAAU,WACR,IAAMwB,EAAQjB,YAAW,WACT,IAAVW,GAAaC,IACjBG,EAAS,GAET9B,EAAiB,GACjBE,EAAqB,GACrBV,GAAaA,MACZqC,GAIH,OAFc,IAAVH,GAAaE,IAEV,kBAAMV,aAAac,MACzB,CAACN,IAEG,kBAAMI,GAAS,SAACG,GAAD,OAAUA,EAAO,MAW3BC,EARQ,WACpBC,QAAQC,IAAI,aAGc,WAC1BD,QAAQC,IAAI,aAKd,OACE,cAAC,EAAD,CACE5D,MAAO,EACPC,WAAY,CACVzB,IAAG,GAKL0B,WAAY,CACV1B,IAAG,IAKJmD,GACC,cAACb,EAAD,CACEoB,IAAKC,IACLxC,IAAKiC,EACLiC,MAAO,CAAEC,QAAShC,KAItB,cAAC,EAAD,CACEvB,QAAS2C,EACTnC,YAAa4B,EACb3B,UAxFgB,SAAC4B,GACrBA,EAAEC,iBACFD,EAAEE,kBAEFf,EAAgB,SAqFZgC,aAAcpB,EACdqB,SAAU,SAACpB,GACT,OAAO,O,4wDCrDjB,IAAMqB,GAAK,kHAMLC,GAAY,gJAQZC,GAAK,gKAYLC,GAAyB,SAAC,GAA0C,IAAxC3D,EAAuC,EAAvCA,QAASD,EAA8B,EAA9BA,QAAS6D,EAAqB,EAArBA,KAASnF,EAAY,4CACjEoF,EAAUC,cACVnE,EAASkE,EAAQE,SAASxB,WAAaqB,EAEvC3D,EAAO,SAACC,GACRF,IACFkD,QAAQC,IAAIjD,GACZH,EAAQG,KAIZ,OACE,cAAC,EAAD,eACMzB,GACEkB,GAAU,CACdG,QAAS,kBAAM+D,EAAQG,KAAKJ,KAHhC,CAKEjE,OAAQA,EACRK,SAAO,EACPD,QAAS,SAACkE,GAAD,OAAWhE,EAAKgE,Q,oHAKhB,eAA0B,IAAvBC,EAAsB,EAAtBA,gBAChB,IAAKA,EACH,OAAO,KAGT,IAAML,EAAUC,cACVK,EAAaC,YAAc,UAC3BC,EAAWF,EAAaA,EAAWG,OAAOC,KAAO,OAPjB,EASZ1D,mBAASwD,GATG,mBAS/BG,EAT+B,KASxBC,EATwB,OAUkB5D,oBAAS,GAV3B,mBAU/B6D,EAV+B,KAUTC,EAVS,OAWR9D,oBAAS,GAXD,mBAW/B+D,EAX+B,KAWtBC,EAXsB,OAYQhE,mBAASiE,MAZjB,mBAY/BC,EAZ+B,KAYdC,EAZc,OAcUnE,oBAAS,GAdnB,mBAc/BoE,EAd+B,KAcbC,EAda,OAeMrE,oBAAS,GAff,mBAe/BsE,EAf+B,KAefC,EAfe,KAgBhC7C,EAAW8C,OAAOtB,SAASxB,SAajCsB,EAAQyB,QAAO,SAACvB,EAAUwB,GACP,qBAAbhD,GACF2C,GAAoB,MAIxB3D,qBAAU,WACR,IAAMiE,EAAS1D,YAAW,WACxBsD,GAAkB,KACjB,KAEH,OAAO,WACLnD,aAAauD,MAEd,IAEH,IAAMC,EAAS,CACbC,KAAMA,IACNC,SAAUA,IACV,mBAAoBC,IACpBC,WAAYA,KACZ,qBAAsBC,MAGlBC,EAAa,CACjB,mBAAoBC,KACpB,mBAAoBC,KACpB,yBAA0BC,KAC1B,yBAA0BC,KAC1B,qBAAsBC,MAGlBC,EAAiB7B,EAAM8B,MAAM,wBAI7BC,EAAQd,EAHA,UACXY,EAAyBzB,EAAUyB,EAAe,GAAKA,EAAe,GAArD7B,GADN,OAEXE,EAAuB,WAAa,KAEjC8B,EAAYH,EAAiBN,EAAWvB,GAAS,GAEvDjD,qBAAU,WACJ8E,GAIAhC,IAAaG,IACfC,EAAS,GAAD,OAAID,EAAJ,eAAgBH,IACxBQ,GAAW,MAEZ,CAACwB,EAAgB7B,EAAOH,IAE3B,IA8LMoC,EAAuBrC,YAAc,8BACrCsC,EAA2BtC,YAC/B,oCA4yBF,OACE,cAAC,EAAD,CACEzF,EAAC,UAAKuF,EAAgBvF,EAArB,MACDD,EAAC,UAAKwF,EAAgBxF,EAArB,MACDE,MAAK,UAAKsF,EAAgBtF,MAArB,MACLC,OAAM,UAAKqF,EAAgBrF,OAArB,MACNd,IAAG,IAKH,cAACyF,GAAD,CAAO/B,IAAK8E,EAAOI,IAhmCT,sCAkmCRN,GAA4B,aAAV7B,GAx/BtB,cAAC,IAAMoC,SAAP,KACE,cAAC,EAAD,CAAahI,MAAM,MAAMC,OAAO,MAAMF,EAAE,MAAMD,EAAE,QAAQM,UAAQ,GAC9D,cAACyE,GAAD,CACEhC,IACGwD,EAEG4B,MAnEZ/E,YAAW,WACLiD,IAAoBD,KACtBE,EAAmB8B,MACV/B,IAAoB+B,MAC7B9B,EAAmBF,QAVX,KAaLC,GA8DD4B,IAAI,gCAGR,cAAC,GAAD,CACE/C,KAAK,mBACLlF,EAAE,MACFC,EAAE,QACFC,MAAM,MACNC,OAAO,MACPG,UAAQ,EACRa,YAAa,IAEf,cAAC,GAAD,CACE+D,KAAK,oBACLlF,EAAE,MACFC,EAAE,QACFC,MAAM,OACNC,OAAO,KACPG,UAAQ,EACRa,YAAa,EACbE,QAAS,SAACkE,GAAD,OAAWmB,EAAkBnB,IACtCjE,SAAO,IAET,cAAC,GAAD,CACE4D,KAAK,mBACLlF,EAAE,MACFC,EAAE,QACFC,MAAM,MACNC,OAAO,MACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,oBACLlF,EAAE,QACFC,EAAE,MACFC,MAAM,MACNC,OAAO,MACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,sBACLlF,EAAE,MACFC,EAAE,MACFC,MAAM,QACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,mBACLlF,EAAE,MACFC,EAAE,MACFC,MAAM,MACNC,OAAO,OACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,iBACLlF,EAAE,QACFC,EAAE,QACFC,MAAM,MACNC,OAAO,MACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,iBACLlF,EAAE,QACFC,EAAE,QACFC,MAAM,MACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,mBACLlF,EAAE,SACFC,EAAE,SACFC,MAAM,MACNC,OAAO,MACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,0BACLlF,EAAE,SACFC,EAAE,MACFC,MAAM,KACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,gBACLlF,EAAE,QACFC,EAAE,MACFC,MAAM,MACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,kBACLlF,EAAE,SACFC,EAAE,KACFC,MAAM,KACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,GAAD,CACE4E,KAAK,kBACLlF,EAAE,SACFC,EAAE,MACFC,MAAM,MACNC,OAAO,KACPG,UAAQ,IAGV,cAAC,GAAD,CACE4E,KAAK,iBACLlF,EAAE,QACFC,EAAE,SACFC,MAAM,KACNC,OAAO,KACPG,UAAQ,IAEV,cAAC,EAAD,CACEJ,MAAM,MACNC,OAAO,MACPF,EAAE,MACFD,EAAE,MACFM,UAAQ,EACRoE,MAAO,CACLC,QAAU4B,EAA4B,KAAT,SAG/B,qBAAK8B,UAAU,yBACb,mBACE3D,MAAO,CACL4D,SAAU,KACVC,MAAO,UACPC,WAAY,QAJhB,8DAOqD,OAIxD/B,GACC,cAAC,EAAD,CAAavG,MAAM,MAAMC,OAAO,MAAMF,EAAE,MAAMD,EAAE,MAAMM,UAAQ,GAC5D,qBAAK+H,UAAU,uBACb,mBACE3D,MAAO,CACL4D,SAAU,KACVC,MAAO,UACPC,WAAY,QAJhB,+FAQ+B,OAKrC,cAAC,EAAD,CACEtI,MAA8B,OAC9BD,EAA0B,MAC1BD,EAA0B,QAC1BX,IAAG,IAKD,cAAC,EAAD,CACEuC,YAAa,kBAAMqE,GAAwB,IAC3CpE,UAAW,kBAAMoE,GAAwB,IACzCnE,OAAQ,kBACLyE,EAEGpB,EAAQG,KAAK,sBADb,CAACH,EAAQG,KAAK,oBAAqBkB,GAAoB,UAq0BjEmB,GAA4B,eAAV7B,GAxzBS,WAAO,IAAD,EACrC,IAAKiC,EACH,OAAO,KAET,IAAMU,EAAOV,EAAqBnC,OAAO6C,KACnC9D,EAAU+D,SAASX,EAAqBnC,OAAOjB,QAAS,IAAM,EAC9DgE,EAAI,OAAGX,QAAH,IAAGA,OAAH,YAAGA,EAA0BpC,cAA7B,aAAG,EAAkC+C,KAEzCC,EAAW,CACfC,KAAM,CACJ,CAAElE,QAASmE,KAAcC,MAAO,iBAChC,CAAEpE,QAASqE,KAAcD,MAAO,YAChC,CAAEpE,QAASsE,KAAcF,MAAO,iBAChC,CAAEpE,QAASuE,OAKb,gBAAiB,CACf,CAAEvE,QAASwD,MACX,CAAExD,QAASwE,MACX,CAAExE,QAASyE,MACX,CAAEzE,QAAS0E,MACX,CAAE1E,QAAS2E,MACX,CAAE3E,QAAS4E,MACX,CAAE5E,QAAS6E,MACX,CAAE7E,QAAS8E,MACX,CAAE9E,QAAS+E,MACX,CAAE/E,QAASyB,MACX,CAAEzB,QAASyD,MACX,CAAEzD,QAASgF,MACX,CAAEhF,QAASiF,KAAuBxF,KAAM,SAE1C,WAAY,CACV,CAAEO,QAASkF,MACX,CAAElF,QAASmF,MACX,CAAEnF,QAASoF,MACX,CAAEpF,QAASqF,MACX,CAAErF,QAASsF,MACX,CAAEtF,QAASuF,MACX,CAAEvF,QAASwF,MACX,CAAExF,QAASyF,MACX,CAAEzF,QAAS0F,MACX,CAAE1F,QAAS2F,KAAkBlG,KAAM,SAGrC,gBAAiB,CACf,CAAEO,QAAS4F,KAAsBxB,MAAO,YACxC,CAAEpE,QAAS6F,KAAsBzB,MAAO,YACxC,CAAEpE,QAAS8F,KAAsBrG,KAAM,SAGzC,WAAY,CACV,CAAEO,QAAS+F,KAAiB3B,MAAO,oBACnC,CAAEpE,QAASgG,KAAiB5B,MAAO,oBACnC,CAAEpE,QAASiG,KAAiB7B,MAAO,oBACnC,CAAEpE,QAASkG,KAAiB9B,MAAO,oBACnC,CAAEpE,QAASmG,KAAiB/B,MAAO,oBACnC,CAAEpE,QAASoG,KAAiBhC,MAAO,oBACnC,CAAEpE,QAASqG,KAAiBjC,MAAO,oBACnC,CAAEpE,QAASsG,KAAiBlC,MAAO,oBACnC,CAAEpE,QAASuG,KAAiBnC,MAAO,oBACnC,CAAEpE,QAASwG,KAAkB/G,KAAM,kBAErC,mBAAoB,CAClB,CAAEO,QAASyG,KAAwBrC,MAAO,2BAC1C,CAAEpE,QAAS0G,KAAwBtC,MAAO,2BAC1C,CAAEpE,QAAS2G,KAAwBvC,MAAO,2BAC1C,CAAEpE,QAAS4G,KAAwBxC,MAAO,2BAC1C,CAAEpE,QAAS6G,KAAwBzC,MAAO,2BAC1C,CAAEpE,QAAS8G,KAAwB1C,MAAO,2BAC1C,CAAEpE,QAAS+G,KAAwB3C,MAAO,2BAC1C,CAAEpE,QAASgH,KAAwB5C,MAAO,2BAC1C,CAAEpE,QAASiH,KAAwB7C,MAAO,2BAC1C,CAAEpE,QAASkH,KAA2BzH,KAAM,aAG9C,0BAA2B,CACzB,CAAEO,QAASmH,MACX,CAAEnH,QAASoH,MACX,CAAEpH,QAASqH,MACX,CAAErH,QAASsH,MACX,CAAEtH,QAASuH,MACX,CAAEvH,QAASwH,KAAgC/H,KAAM,qBAEnD,WAAY,CACV,CAAEO,QAASyH,KAAiBrD,MAAO,oBACnC,CAAEpE,QAAS0H,KAAiBtD,MAAO,oBACnC,CAAEpE,QAAS2H,KAAiBvD,MAAO,oBACnC,CAAEpE,QAAS4H,KAAiBxD,MAAO,oBACnC,CAAEpE,QAAS6H,KAAiBzD,MAAO,oBACnC,CAAEpE,QAAS8H,KAAiB1D,MAAO,oBACnC,CAAEpE,QAAS+H,KAAiB3D,MAAO,oBACnC,CAAEpE,QAASgI,KAAiB5D,MAAO,oBACnC,CAAEpE,QAASiI,KAAiB7D,MAAO,oBACnC,CAAEpE,QAASkI,KAAkBzI,KAAM,kBAErC,mBAAoB,CAClB,CAAEO,QAASmI,KAAwB/D,MAAO,2BAC1C,CAAEpE,QAASoI,KAA2B3I,KAAM,aAG9C,0BAA2B,CACzB,CAAEO,QAASqI,MACX,CAAErI,QAASsI,MACX,CAAEtI,QAASuI,MACX,CAAEvI,QAASwI,MACX,CAAExI,QAASyI,MACX,CAAEzI,QAAS0I,MACX,CAAE1I,QAAS2I,MACX,CAAE3I,QAAS4I,KAAgCnJ,KAAM,sBAI/CoJ,GAAe7I,EAAU,GAAKiE,EAASH,GAAMgF,OAE7CC,EAAkC,SACtCjF,EACA9D,EACAgJ,EACAC,EACAC,EACAC,EACAC,GAEA,OACE,cAAC,IAAM7F,SAAP,KACE,cAAC,GAAD,CACEhD,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,eACJzE,MAAOyN,EACPxN,OAAO,KACPH,EAAE,MACFC,EAAG2N,EACH1M,aAAW,IAEb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,WACJzE,MAAM,KACNC,OAAO,KACPH,EAAE,MACFC,EAAE,QACFK,UAAQ,EACRY,aAAW,IAEb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,SACJzE,MAAO2N,EACP1N,OAAO,MACPH,EAAE,QACFC,EAAG6N,EACHxN,UAAQ,EACRY,aAAW,IAGb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,UACJzE,MAAM,MACNC,OAAO,OACPH,EAAE,SACFC,EAAE,QACFK,UAAQ,EACRY,aAAW,IAEb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,eACJzE,MAAM,KACNC,OAAO,KACPH,EAAE,QACFC,EAAE,QACFK,UAAQ,EACRY,aAAW,IAGb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,aACJzE,MAAM,MACNC,OAAO,KACPH,EAAE,QACFC,EAAE,QACFK,UAAQ,EACRY,aAAW,IAGb,cAAC,GAAD,CACEgE,KAAI,sBAAiBuD,EAAjB,YAAyB9D,EAAzB,YACJzE,MAAM,KACNC,OAAO,KACPH,EAAE,MACFC,EAAE,KACFK,UAAQ,EACRY,aAAW,MAMnB,OACE,cAAC,IAAMgH,SAAP,KACE,cAAC,EAAD,CAAahI,MAAM,QAAQC,OAAO,QAAQF,EAAE,QAAQD,EAAE,QAAQM,UAAQ,GACpE,cAACyE,GAAD,CACEhC,IAAK6F,EAASH,GAAM9D,GAASA,QAC7BsD,IAAI,gCAIN,CACEY,KAAM,GACN,gBAAiB,CACf,KACA6E,EACE,gBACA,IACA,KACA,QACA,MACA,OAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,OAEFA,EACE,gBACA,IACA,KACA,QACA,MACA,SAEFA,EACE,gBACA,KACA,MACA,SACA,MACA,OAEFA,EACE,gBACA,KACA,MACA,SACA,MACA,UAGJ,WAAY,CACVA,EACE,WACA,IACA,KACA,QACA,MACA,OAEFA,EACE,WACA,IACA,KACA,QACA,MACA,SAEFA,EACE,WACA,IACA,MACA,QACA,MACA,OAEFA,EACE,WACA,IACA,MACA,QACA,MACA,OAEF,KACAA,EACE,WACA,IACA,KACA,QACA,QACA,SAEFA,EACE,WACA,IACA,KACA,QACA,MACA,SAEFA,EACE,WACA,IACA,KACA,QACA,MACA,SAEFA,EACE,WACA,IACA,KACA,QACA,MACA,UAGJ,gBAAiB,GAwGjB,WAAY,CACVA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEFA,EACE,WACA,IACA,OACA,MACA,MACA,SAEF,MAEF,mBAAoB,CAClBA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEFA,EACE,mBACA,IACA,OACA,MACA,MACA,SAEF,MAGF,0BAA2B,CACzBA,EACE,0BACA,IACA,MACA,QACA,MACA,OAGFA,EACE,0BACA,IACA,KACA,QACA,MACA,OAEFA,EACE,0BACA,IACA,OACA,MACA,MACA,OAEFA,EACE,0BACA,IACA,OACA,MACA,MACA,OAEFA,EACE,0BACA,IACA,OACA,MACA,MACA,OAEF,MAGF,WAAYM,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,OACpCT,EACE,WACAS,EAAI,EACJ,OACA,MACA,MACA,YAGJ,mBAAoB,CAClBT,EACE,mBACA,IACA,OACA,MACA,MACA,SAEF,MAGF,0BAA2B,CACzBA,EACE,0BACA,IACA,MACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,SAEFA,EACE,0BACA,IACA,KACA,QACA,MACA,WAGJjF,GAAM9D,GAEV,cAAC,EAAD,CACEzE,MAAO8F,EAAuB,QAAU,QACxC/F,EAA0B,QAC1BD,EAA0B,SAE1B,cAAC,EAAD,aACE4B,YAAa,kBAAMqE,GAAwB,IAC3CpE,UAAW,kBAAMoE,GAAwB,IACzClE,OAAQ,WACNoD,EAAQG,KAAR,qBAEFpD,SAAU0G,EAASH,GAAM9D,GACzB7C,OAAQ,WAUF6G,EACFxD,EAAQG,KAAR,sBAA4BmD,EAA5B,YAAoC+E,EAAc,EAAlD,UAEArI,EAAQG,KAAR,sBAA4BmD,EAA5B,YAAoC+E,EAAc,MAGjD5E,EAASH,GAAM9D,GAASoE,MACzB,CACE/G,QAAS,kBACPmD,EAAQG,KAAR,sBACiBsD,EAASH,GAAM9D,GAASoE,MADzC,aAEsC,SAAlCH,EAASH,GAAM9D,GAASoE,MAAmB,QAAU,OAIpD,qBAATN,GAAwC,qBAATA,EAC/B,CACEzG,QAAS,kBACPmD,EAAQG,KAAR,sBACiBsD,EAASH,GAAM9D,GADhC,cAIJ,KAUEiE,EAASH,GAAM9D,GAASP,KACxB,CACEnC,OAAQ,kBACNkD,EAAQG,KAAR,sBACiBsD,EAASH,GAAM9D,GAASP,KADzC,aAEqC,SAAjCwE,EAASH,GAAM9D,GAASP,KAAkB,QAAU,OAI5D,SAsBkCgK,GAE7CzG,GACC,cAAC3C,GAAD,CACEqJ,UAAQ,EACRC,aAAc,kBAAMnI,GAAW,IAC/BoI,QAAS,kBAAMxI,EAAS4B,EAAe,MAEvC,wBAAQ5E,IAAK+E,EAAW0G,KAAK,iBCvuCjCC,GAAO,mDACE,SAAA1O,GAAK,OAAIF,EAAeZ,UAAUc,EAAMuI,YAD1C,iBAEI,SAAAvI,GAAK,OAAIF,EAAeb,aAAae,EAAM2O,eAF/C,KAGT,SAAA3O,GAAK,OAAIA,EAAM4O,OAAN,sBAA8B5O,EAAM4O,MAApC,OAHA,KAIT,SAAA5O,GAAK,OAAIA,EAAMwI,OAAN,iBAAyBxI,EAAMwI,MAA/B,OAJA,IAeE,uBACbD,gBADa,MACF,KADE,MAEboG,mBAFa,MAEC,KAFD,MAGbnG,aAHa,MAGL,OAHK,MAIboG,aAJa,WAILC,EAJK,EAKbnO,EALa,EAKbA,SACGoO,EANU,4EAQb,cAACJ,GAAD,aACEnG,SAAUA,EACVoG,YAAaA,EACbnG,MAAOA,EACPoG,MAAOA,GACHE,GAEHpO,IClCCqO,GAAc,CAAC,GAAI,GAAI,GAAI,IAElB,IACbC,MAAOD,GACP3P,GAAI2P,GAAY,GAChBhQ,GAAIgQ,GAAY,GAChB/P,GAAI+P,GAAY,GAChBE,GAAIF,GAAY,ICLZG,GAAM,SAAAC,GAAU,mCAA0BA,EAA1B,SAEP,IACb/P,GAAI8P,GAAIH,GAAY3P,IACpBL,GAAImQ,GAAIH,GAAYhQ,IACpBC,GAAIkQ,GAAIH,GAAY/P,IACpBiQ,GAAIC,GAAIH,GAAYE,KCLP,IACbG,UAAW9P,cAAF,iEAKL+P,GAAGtQ,GALE,mBCFI,cACb,IAAMuQ,EAA6B,kBAAX1I,OAElB2I,EAAUC,uBAAY,WAC1B,MAAO,CACLrP,MAAOmP,EAAW1I,OAAO6I,gBAAaZ,EACtCzO,OAAQkP,EAAW1I,OAAO8I,iBAAcb,KAEzC,CAACS,IARe,EAUiBlN,mBAASmN,KAV1B,mBAUZI,EAVY,KAUAC,EAVA,KAyBnB,OAbA9M,qBAAU,WACR,IAAKwM,EACH,OAAO,EAGT,SAASO,IACPD,EAAcL,KAIhB,OADA3I,OAAOkJ,iBAAiB,SAAUD,GAC3B,kBAAMjJ,OAAOmJ,oBAAoB,SAAUF,MACjD,CAACN,EAASD,IAENK,GClBT,IAAMjB,GAAO,wCACTsB,GAAOZ,UADE,wCAMPa,GAAI,0GAKJC,GAAa,oGAKfC,GAAG/Q,GALY,uCAWbgR,GAAO,iGAITD,GAAG/Q,GAJM,mEAUT+Q,GAAGpR,GAVM,yBAePsR,GAAO,uHAMPpP,GAAM,qF,gDAIG,eAAiE,IAA9DqP,EAA6D,EAA7DA,OAAQC,EAAqD,EAArDA,KAAMC,EAA+C,EAA/CA,QAASC,EAAsC,EAAtCA,gCACjCC,EAA8B/N,mBAC9BgN,EAAagB,KAgBnB,OAfA7N,qBAAU,WACR,IAAM8N,EAAoBF,EAA4B3N,QAAQ8N,wBACxDC,EAAuB,CAC3B5Q,EAAG0Q,EAAkBG,KAAOnK,OAAOoK,YACnC/Q,EAAG2Q,EAAkBK,IAAMrK,OAAOsK,YAClC/Q,MAAOyQ,EAAkBzQ,MACzBC,OAAQwQ,EAAkBxQ,QAE5BqQ,EAAgCK,KAC/B,CACDL,EACAC,EACAf,IAIA,cAAC,GAAD,KACE,yBAAMW,GACN,cAACL,GAAD,KACE,cAACC,GAAD,KACE,cAAC,EAAD,CAAgBpP,MAAO,EAAGL,IAAKiQ,KAEjC,cAACN,GAAD,KACE,cAAC,GAAD,CACE7H,SAAS,KACToG,YAAY,KACZC,MAAM,SACNtP,IAAG,IAIFiR,GAEH,cAACF,GAAD,KACGG,EAAQtB,KAAI,SAACiC,EAAG/C,GAAJ,OACX,cAAC,GAAD,CAAQgD,IAAKhD,GAAI+C,WC1FzBzC,GAAO,gDACF5O,EAAe5B,OAAOH,QADpB,0DAOE,uBAAG2C,gBAAH,MAAc,cAAd,SAAkC,cAAC,GAAD,KAAUA,ICPrDgO,GAAO,gDACF5O,EAAe5B,OAAOH,QADpB,mFAWE,mBAAG2C,EAAH,EAAGA,SAAH,OAAkB,cAAC,GAAD,KAAUA,ICV3C,IAAMgO,GAAO,wFAIE,uBAAG2C,gBAAH,MAAc,GAAd,SACb,cAAC,GAAD,KACE,cAAC,GAAD,MACA,cAAC,GAAD,KAAWA,KCRT3C,GAAO,gEACS,SAAA1O,GAAK,OACvBA,EAAMjC,QACF+B,EAAe5B,OAAOH,QACtB+B,EAAe5B,OAAOD,YAJjB,WAKF,SAAA+B,GAAK,OAAKA,EAAMjC,QAAU,OAAS+B,EAAe5B,OAAOH,UALvD,oEASO+B,EAAehB,cAAcE,GATpC,uEAcF,SAAAgB,GAAK,OAAKA,EAAMsR,MAAQ,OAAS,SAd/B,6BAiBW,SAAAtR,GAAK,OACvBA,EAAMjC,QACF+B,EAAe5B,OAAOI,YACtBwB,EAAe5B,OAAOS,gBApBnB,+BAwBW,SAAAqB,GAAK,OACvBA,EAAMjC,QACF+B,EAAe5B,OAAOC,cACtB2B,EAAe5B,OAAOQ,kBA3BnB,MA+BE,uBAAGX,eAAH,aAAoBuT,aAApB,SAAmCjQ,EAAnC,EAAmCA,QAASX,EAA5C,EAA4CA,SAA5C,OACb,cAAC,GAAD,CAAS3C,QAASA,EAASsD,QAASA,EAASiQ,MAAOA,GACjD5Q,ICjCU6Q,gBACb,oBAAGxT,eAAH,aAAoBuT,aAApB,SAAmCjQ,EAAnC,EAAmCA,QAAS+D,EAA5C,EAA4CA,QAASoM,EAArD,EAAqDA,GAAI9Q,EAAzD,EAAyDA,SAAzD,OACE,cAAC,GAAD,CACE3C,QAASA,EACTuT,MAAOA,EACPjQ,QAAS,SAAAoQ,GACPpQ,GAAWA,IACX+D,EAAQG,KAAKiM,KAGd9Q,MCTQ,eAA0C,IAAvC+P,EAAsC,EAAtCA,gCAChB,OACE,cAAC,GAAD,CACEH,OAAQ,cAAC,GAAD,MACRG,gCAAiCA,EACjCF,KACE,6OAEFC,QAAS,CACP,cAAC,GAAD,CAAYgB,GAAG,mBAAmBzT,SAAO,EAACuT,OAAK,GAA/C,6BCLR,IAAM5C,GAAO,wCACTsB,GAAOZ,UADE,wCAMPsC,GAAa,wGAKbC,GAAe,2GAKfC,GAAiB,0FAIjB3B,GAAI,0HAMJ4B,GAAc,oF,yFAIL,eAOR,IANLC,EAMI,EANJA,SACAxB,EAKI,EALJA,OACAyB,EAII,EAJJA,WACAC,EAGI,EAHJA,QACAC,EAEI,EAFJA,qCACAxB,EACI,EADJA,gCAEMyB,EAAiBvP,mBACjB+N,EAA8B/N,mBAC9BgN,EAAagB,KACbvL,EAAUC,cAJZ,EAQAjD,mBAAS,GART,mBAMF+P,EANE,KAOFC,EAPE,KAoCJ,OA1BAtP,qBAAU,WACR,IAAMuP,EAAWH,EAAenP,QAAQ8N,wBAClCD,EAAoBF,EAA4B3N,QAAQ8N,wBACxDyB,EACJD,EAASjS,OACT6R,EAAuCrB,EAAkBxQ,OAC3DkS,IAAWH,GACTC,EAAkCE,GACpC,IAAMxB,EAAuB,CAC3B5Q,EAAG0Q,EAAkBG,KAAOnK,OAAOoK,YACnC/Q,EAAGoS,EAASpB,IAAMqB,EAAS1L,OAAOsK,YAClC/Q,MAAOyQ,EAAkBzQ,MACzBC,OAAQwQ,EAAkBxQ,QAE5BqQ,GACEA,EAAgCK,KACjC,CACDoB,EACAxB,EACAD,EACAd,EACAvK,EAAQE,SAASxB,SACjBmO,EACAE,IAIA,cAAC,GAAD,KACE,cAACT,GAAD,KAAgBpB,GAChB,cAAC,GAAD,CAAM7P,IAAKyR,GACT,cAACP,GAAD,KAAkBG,GAClB,cAACF,GAAD,KAAoBG,GACpB,cAACF,GAAD,KAAiBG,GACjB,cAAC,EAAD,CACE7R,MAAM,OACNb,IAAG,GAGHmB,IAAKiQ,GAEL,cAAC,EAAD,CAAgB5P,MAAO,GACrB,cAAC,EAAD,CACEX,MAAM,OACNC,OAAO,OACPH,EAAC,UAAKkS,EAAL,MACD7S,IAAG,UCjGXoP,GAAO,8EAES5O,EAAe5B,OAAOD,UAF/B,4BAIF6B,EAAe5B,OAAOH,QAJpB,uCAME+B,EAAeZ,UAAUF,GAN3B,KASE,mBAAG0B,EAAH,EAAGA,SAAH,OACb,cAAC,GAAD,KAAUA,ICTZ,IAAMgO,GAAO,kFAGS5O,EAAe5B,OAAOH,QAH/B,2DASPwU,GAAY,kLAUH,mBAAGC,EAAH,EAAGA,MAAU1D,EAAb,gCACb,cAAC,GAAYA,EACX,cAACyD,GAAD,KACE,cAAC,GAAD,CAAMhK,SAAS,KAAKC,MAAM,QACvBgK,MCxBH9D,GAAO,+CACF5O,EAAe5B,OAAOH,QADpB,cAEE+B,EAAeZ,UAAUF,GAF3B,yBAME,mBAAG0B,EAAH,EAAGA,SAAaoO,EAAhB,mCACb,cAAC,GAAYA,EAAapO,I,sGCJb,uBAAG+R,mBAAH,MAAiB,GAAjB,EAAqBC,EAArB,EAAqBA,MAAOC,EAA5B,EAA4BA,YAA5B,OACb,cAAC,WAAD,KACE,cAAC,GAAD,CACEH,MAAOC,EACPnT,IAAG,KAIL,cAAC,GAAD,CACEA,IAAG,IAIFoT,GAEH,cAAC,GAAD,KAAOC,KCdLC,GAAmB,gEAErBzC,GAAGpR,GAFkB,kDASnB8T,GAAkB,2JAQpB1C,GAAGpR,GARiB,MAYT,qBACb,cAAC,WAAD,KACE,cAAC,GAAD,CACEO,IAAKA,cACD6Q,GAAGpR,GADJ,uCADL,ueAgBA,cAAC6T,GAAD,KACE,cAACC,GAAD,KACE,cAAC,GAAD,CACEH,MAAM,wBACNC,YACE,cAAC,WAAD,yBAEE,yBAFF,8BAON,cAACE,GAAD,KACE,cAAC,GAAD,CACEJ,YAAY,OACZC,MAAM,wCACNC,YAAY,+BAGhB,cAACE,GAAD,KACE,cAAC,GAAD,CACEJ,YAAY,KACZC,MAAM,6CACNC,YAAY,sC,6BClEP,YAAA3S,GAAK,OAAI,cAAC,KAAD,aAAiB8S,KAAMC,MAAoB/S,K,2FCGpD,mBAAGuQ,EAAH,EAAGA,KAAMiB,EAAT,EAASA,GAAT,OACb,cAAC,KAAD,CACElS,IAAKA,cAAF,8BAEQQ,EAAe5B,OAAOH,QAF9B,KAIHyT,GAAIA,GAEJ,cAAC,GAAD,CAAMhJ,MAAO1I,EAAe5B,OAAOH,SAChCwS,EACD,cAAC,GAAD,CACEjR,IAAG,Q,qBCRI,eAA0C,IAAD,EAAtCmR,EAAsC,EAAtCA,gCACV5I,EAAQlC,YAAc,sBACtBqN,EAAY,OAAGnL,QAAH,IAAGA,OAAH,YAAGA,EAAOhC,cAAV,aAAG,EAAeoN,QAFkB,EAIxB7Q,mBAAS4Q,GAJe,mBAI/CC,EAJ+C,KAItCC,EAJsC,KAKtDpQ,qBAAU,WACJkQ,GAAgBA,IAAiBC,GACnCC,EAAWF,KAEZ,CAACA,EAAcC,IAElB,IAAME,EAAmBH,GAAgBC,EAEzC,OACE,cAAC,GAAD,CACEnB,SAAU,cAAC,GAAD,CAAUvB,KAAK,UAAUiB,GAAG,MACtClB,OAAQ,cAAC,GAAD,CAAQe,SAAS,2BACzBU,WACE,cAAC,GAAD,KAEI,CACEqB,OAAQ,qBACRC,QAAS,kCACTC,OAAQ,eACRC,KAAM,mBACNC,UAAW,uBACX/E,KAAM,eACNgF,OAAQ,kBACRC,cAAe,uBACfC,OAAQ,wBACRC,MAAO,eACPd,KAAM,UACNlO,QAAS,UACTiP,IAAK,+BACLV,IAIRnB,QACE,CACEoB,OAAQ,cAAC,GAAD,MACRC,QACE,cAAC,GAAD,CAAMS,GAAG,OAAT,kSAK4C,yBAL5C,iPAWE,qBAAKnP,MAAO,CAAEoP,UAAW,SAAUC,OAAQ,OACzC,qBACEhR,IAAKiR,KACL/L,IAAI,uBACJ/H,MAAM,SAKdmT,OACE,cAAC,GAAD,2EAIFR,KACE,cAAC,GAAD,mZAUFS,KACE,cAAC,GAAD,4GAKFC,UACE,cAAC,GAAD,0RAQFI,MACE,cAAC,GAAD,+MAOFnF,KACE,cAAC,GAAD,CAAMqF,GAAG,OACP,iFACA,wBACE,qDACA,0DAINH,OAAQ,cAAC,GAAD,+CACRF,OACE,cAAC,GAAD,gIAKF7O,QACE,cAAC,GAAD,oLAG0C,IACxC,qBAAKD,MAAO,CAAEoP,UAAW,SAAUC,OAAQ,OACzC,qBACEhR,IAAKiR,KACL/L,IAAI,uBACJ/H,MAAM,QARZ,yJAgBFuT,cACE,cAAC,GAAD,yHAKFG,IACE,cAAC,GAAD,gOAMFV,GAEJ1C,gCACEuC,GAAgBvC,EAElBwB,qCAAsC,M,2DC9J7B,mBAAG9M,EAAH,EAAGA,KAAH,OACb,cAAC,IAAMgD,SAAP,KACGhD,GACC8I,MAAMiG,QAAQ/O,IACdA,EAAKgP,QAAO,SAACC,EAAGC,GAAJ,OACV,cAAC,IAAMlM,SAAP,KACGiM,EACD,cAAC,GAAD,CACE9U,IAAG,KAIJ+U,QCXX,IAAM3F,GAAO,mF,6CAIE,eAEb,IAFsC,IAAtB4F,EAAqB,EAArBA,MAAUC,EAAW,yBAC/BC,EAAW,GACRpG,EAAI,EAAGA,EAAIkG,IAASlG,EAC3BoG,EAASjP,KACP,cAAC,GAAD,aACE6L,IAAKhD,EACL9O,IAAG,IAGCiV,KAKV,OAAO,cAAC,GAAD,KAAUC,IChBb9F,GAAO,8FAITyB,GAAGpR,GAJM,yCAUP0V,GAAW,2EAGbtE,GAAGpR,GAHU,uBAQX8T,GAAkB,yEAGpB1C,GAAGpR,GAHiB,uBAQT,mBAAG2T,EAAH,EAAGA,MAAOC,EAAV,EAAUA,YAAV,OACb,cAAC,GAAD,KACE,cAAC8B,GAAD,KACE,cAAC,GAAD,KACE,cAAC,GAAD,CAAUH,MAAO,MAGrB,cAAC,GAAD,KACE,cAAC,GAAD,KAAU5B,GACV,cAAC,GAAD,CAAMnK,SAAS,MAAMoK,MCrCrBC,GAAmB,2DAErBzC,GAAG/Q,GAFkB,2BAKrB+Q,GAAGpR,GALkB,0BAUnB8T,GAAkB,uGAIpB1C,GAAG/Q,GAJiB,kCAQpB+Q,GAAGpR,GARiB,sCAcT,mBAAGwU,EAAH,EAAGA,KAAH,OACb,cAAC,GAAD,KACGA,GACCtF,MAAMiG,QAAQX,IACdA,EAAKrE,KAAI,SAACf,EAAGC,GAAJ,OACP,cAAC,GAAD,KACE,cAAC,GAAD,CAAasE,MAAOvE,EAAEuE,MAAOC,YAAaxE,EAAEwE,oBC/BvC,mBAAGA,EAAH,EAAGA,YAAH,OACb,cAAC,IAAMxK,SAAP,KACE,cAAC,GAAD,CAAMI,SAAS,KAAKoG,YAAY,MAC7BgE,GAEH,cAAC,GAAD,CACEY,KAAM,CACJ,CACEb,MAAO,+BACPC,YACE,qGAEJ,CACED,MAAO,4BACPC,YACE,sIAEJ,CACED,MAAO,mCACPC,YACE,4GCpBG,mBAAG+B,EAAH,EAAGA,QAAS/B,EAAZ,EAAYA,YAAagC,EAAzB,EAAyBA,aAAzB,OACb,cAAC,IAAMxM,SAAP,KACE,cAAC,GAAD,KAAUuM,GACV,cAAC,GAAD,aACEnM,SAAS,KACToG,YAAY,MACgB,kBAAhBgE,GAA4B,CAAEmB,GAAI,QAE7CnB,GAEFgC,ICHU,eAA0C,IAAD,QAAtClE,EAAsC,EAAtCA,gCACV/K,EAAaC,YAAc,8BAC3BiP,EAAoBjP,YACxB,uCAEIL,EAAWvB,cAEX8Q,EAAY,QAChBnP,QADgB,IAChBA,OADgB,YAChBA,EAAYG,cADI,aAChB,EAAoB6C,MACV,OAAVhD,QAAU,IAAVA,OAAA,YAAAA,EAAYG,cAAZ,eAAoBjB,UAClB+D,SAAQ,OAACjD,QAAD,IAACA,OAAD,YAACA,EAAYG,cAAb,aAAC,EAAoBjB,QAAS,IAAM,EAH9B,OAIhBgQ,QAJgB,IAIhBA,OAJgB,YAIhBA,EAAmB/O,cAJH,aAIhB,EAA2BoN,SAXyB,EAc9B7Q,mBAAS,CAAC,OAAQ,OAAGyM,IAdS,mBAc/C1J,EAd+C,KAczC2P,EAdyC,KAgBtDhS,qBAAU,YAEL+R,EAAU,IAAMA,EAAU,KAAO1P,EAAK,IACtC0P,EAAU,IAAMA,EAAU,KAAO1P,EAAK,IACtC0P,EAAU,IAAMA,EAAU,KAAO1P,EAAK,KAEvC2P,EAAQD,KAET,CAAC1P,EAAM0P,IAEV,IAAME,EAAa,CACD,MAAhBF,EAAU,GAAaA,EAAU,GAAK1P,EAAK,GAC3B,MAAhB0P,EAAU,GAAaA,EAAU,GAAK1P,EAAK,GAC3B,MAAhB0P,EAAU,GAAaA,EAAU,GAAK1P,EAAK,IA+RvC6P,EAAsB,SAACV,GAG3B,IAFA,IAAMW,EAAS,GAEN7G,EAAI,EAAGA,EAAIkG,EAAQ,IAAKlG,EAC/BA,EAAIkG,EAAQW,EAAO1P,KAAP,kBAAuB6I,EAAI,EAA3B,YAAgCkG,IAAWW,EAAO1P,KAAP,OAGzD,OAAO0P,GAGHC,EAA0B,WAG9B,IAFA,IAAMD,EAAS,GACX7G,EAAI,EACDA,EAAI,IAAKA,EACd6G,EAAO1P,KAAP,kBAAuB6I,EAAI,EAA3B,QAIF,MAFEA,EACF6G,EAAO1P,KAAP,oBACO6I,EAAI,IAAKA,EACd6G,EAAO1P,KAAP,kBAAuB,GAAS6I,EAAI,EAApC,QAKF,OAFA6G,EAAO1P,KAAP,OAEO0P,GA6CT,OACE,cAAC,GAAD,CACEnD,SACE,cAAC,GAAD,CAAUvB,KAAK,uCAA8BiB,GAAG,qBAElDlB,OAAQ,cAAC,GAAD,CAAQe,SAAS,eACzBU,WACE,cAAC,GAAD,KACE,cAAC,GAAD,CACE5M,KAAI,uBACC,CACD2D,KAAM,CAAC,kBACP,gBAAiB,CAAC,iBAAe,oBACjC,WAAY,CAAC,iBAAe,kBAC5B,gBAAiB,CAAC,iBAAe,eACjC,WAAY,CAAC,eAAa,cAAe,gBACzC,mBAAoB,CAClB,eACA,cACA,eACA,cAEF,0BAA2B,CACzB,eACA,cACA,eACA,aACA,SAEF,WAAY,CAAC,eAAa,cAAe,gBACzC,mBAAoB,CAClB,eACA,cACA,eACA,cAEF,0BAA2B,CACzB,eACA,cACA,eACA,aACA,UAEFiM,EAAW,KAlCX,CAmCF,CACEjM,KAAM,CACJ,mBACA,iBACA,cACA,OAGF,gBAAiBkM,EAAoB,IACrC,WAAYA,EAAoB,GAChC,gBAAiBA,EAAoB,GACrC,WAAYE,IACZ,mBAlGwB,WAGpC,IAFA,IAAMD,EAAS,GACX7G,EAAI,EACDA,GAAK,IAAKA,EACf6G,EAAO1P,KAAP,kBAAuB6I,EAAI,EAA3B,QAIF,IAFA6G,EAAO1P,KAAP,oBAEO6I,EAAI,IAAKA,EACd6G,EAAO1P,KAAP,kBAAuB,GAAK6I,EAAI,EAAhC,QAKF,OAFA6G,EAAO1P,KAAP,OAEO0P,EAoFyBE,GACpB,0BAlFwB,WAIpC,IAHA,IAAMF,EAAS,GACX7G,EAAI,EAEDA,EAAI,IAAKA,EACd6G,EAAO1P,KAAP,kBAAuB6I,EAAI,EAA3B,OAKF,OAFA6G,EAAO1P,KAAP,OAEO0P,EAwEgCG,GAC3B,WAAYF,IACZ,mBAAoBF,EAAoB,GACxC,0BAxEwB,WAGpC,IAFA,IAAMC,EAAS,GACX7G,EAAI,EACDA,EAAI,IAAKA,EACd6G,EAAO1P,KAAP,kBAAuB6I,EAAI,EAA3B,OAKF,OAFA6G,EAAO1P,KAAP,OAEO0P,EA+DgCI,IAC3BN,EAAW,IAAIA,EAAW,SAKpC/C,QACoB,SAAlB+C,EAAW,GACT,cAAC,GAAD,CACEpC,YACE,CACE,iJACA,0KACA,6bACAoC,EAAW,MAGG,kBAAlBA,EAAW,GACb,cAAC,GAAD,CACEpC,YACE,CACE,uJACA,6IACAoC,EAAW,MApbI,WAC3B,IAAMO,EACJ,kEACIC,EACJ,mFAEIC,EAAiB,CACrBC,WAAY,CACVf,QAAS,YACT/B,YACE,0HAEJ+C,SAAU,CACRhB,QAAS,oBACT/B,YACE,iGAEJgD,OAAQ,CACNjB,QAAS,eACT/B,YACE,kSAEJY,KAAM,CACJqC,SAAU,CACR,gBAAiB,CACf,iBACA,6BACA,oCACA,oCACA,yBACA,gCACA,gCACA,qBACA,mBACA,qDACA,qDACA,cAEF,WAAY,CACV,6BACA,yBACA,mBACA,mBACA,aACA,oCACA,oCACA,gCACA,iCAEF,gBAAiB,CACf,eACA,eACA,sDAEF,WAAY3H,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,MAAU,CAC9C,gCACCyH,OACH,mBAAoB5H,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,MAAU,CACtD,kBACCyH,OACH,WAAY5H,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,MAAU,CAC9C,kBACCyH,OACH,mBAAoB,CAAC,cAAe,MACpC,0BAA2B,CACzB,eACA,6BACA,yBACA,6BACA,0BAEF,0BAA2B,CACzB,eACA,6BACA,oCACA,oCACA,yBACA,gCACA,kCAGJC,aAAc,CACZ,gBAAiB7H,MAAMC,KAAK,CAAER,OAAQ,KAAM,SAACS,EAAGC,GAAJ,OACpC,IAANA,EACE,oGACEA,GAAK,GAAKA,GAAK,EACjBmH,EACEnH,GAAK,GAAKA,GAAK,EACjBkH,EACQ,IAANlH,GAAiB,KAANA,EACb,yBACE,8HAIA,wBACE,wBACE,8CADF,gLAMA,wBACE,gDADF,gIAKA,wBACE,gDADF,8GAOF,QAEN,WAAYH,MAAMC,KAAK,CAAER,OAAQ,KAAM,SAACS,EAAGC,GAAJ,OAC/B,IAANA,GAAiB,IAANA,GAAiB,IAANA,EAClBmH,EACM,IAANnH,GAAiB,IAANA,GAAiB,IAANA,EACtBkH,EACA,QAGN,WAAYrH,MAAMC,KAChB,CAAER,OAAQ,IACV,SAACS,EAAGC,GAAJ,MACE,iPAEJ,mBAAoBH,MAAMC,KACxB,CAAER,OAAQ,IACV,SAACS,EAAGC,GAAJ,MACE,uJAEJ,0BAA2BH,MAAMC,KAAK,CAAER,OAAQ,KAAM,SAACS,EAAGC,GAAJ,OAC9C,IAANA,EACImH,EACM,IAANnH,EACAkH,EACA,QAEN,0BAA2BrH,MAAMC,KAAK,CAAER,OAAQ,KAAM,SAACS,EAAGC,GAAJ,OACpDA,GAAK,GAAKA,GAAK,EACXmH,EACAnH,GAAK,GAAKA,GAAK,EACfkH,EACA,QAEN,WAAYrH,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,OACpCA,GAAK,EACD,2NACA,QAEN,mBAAoBH,MAAMC,KAAK,CAAER,OAAQ,IAAK,SAACS,EAAGC,GAAJ,OACtC,IAANA,EACI,oJACA,UAIV2H,MAAO,CACLrB,QAAS,gBACT/B,YACE,+NAEJqD,WAAY,CACVtB,QAAS,qBACT/B,YACE,yBACE,gGAGA,+GAONsD,SAAU,CACRvB,QAAS,kCACT/B,YAAa,2BAEfU,QAAS,CACPqB,QAAS,kBACT/B,YACE,sQAEJuD,GAAI,CACFxB,QAAS,iBACT/B,YACE,4JAIAwD,EACc,aAAlBpB,EAAW,IACO,aAAlBA,EAAW,IACO,qBAAlBA,EAAW,IACO,qBAAlBA,EAAW,GAEPJ,EACJ,cAAC,GAAD,CACEpB,KAAI,uBACEjO,EAAS8Q,OAAOC,QAAQ,mBAAqB,EAC7C,CACE,CACE3D,MAAO,0BACPC,YACE,6GAGN,IATF,aAUEwD,EACA,CACE,CACEzD,MAAO,4BACPC,YACE,uIAGN,IAlBF,aAoBoB,kBAAlBoC,EAAW,IACG,aAAlBA,EAAW,IACO,kBAAlBA,EAAW,GACP,CACE,CACErC,MAAO,+BACPC,YACE,0HAGN,IA9BF,aAgCoB,4BAAlBoC,EAAW,IACG,4BAAlBA,EAAW,GACP,CACE,CACErC,MAAO,mCACPC,YACE,8HAGN,IAzCF,CA0CF,CACED,MAAO,mCACPC,YACE,2GAMV,IAAKoC,EAAW,GACd,OAAO,cAAC,GAAD,CAAgBJ,aAAcA,IAGvC,IAAM2B,EAAiBd,EAAeT,EAAW,IAC7CL,EAAU4B,EAAe5B,QAC7B,IAAKA,EAAS,CACZ,IAAMkB,EAAWU,EAAeV,SAASb,EAAW,IACpDL,EAAUzG,MAAMiG,QAAQ0B,GAAYA,EAASb,EAAW,IAAMa,EAGhE,IAAIjD,EAAc2D,EAAe3D,YACjC,IAAKA,EAAa,CAChB,IAAMmD,EAAeQ,EAAeR,aAAaf,EAAW,IAC5DpC,EAAc1E,MAAMiG,QAAQ4B,GACxBA,EAAaf,EAAW,IACxBe,EAGN,OACE,cAAC,GAAD,YACM,CACFpB,QAASA,EACT/B,YAAaA,GAHjB,CAKEgC,aAAcA,KAiKZ4B,GAGJ9F,gCACE/K,GAAc+K,EAEhBwB,qCAAsC,OC7d5C,IAAMuE,GAAa,oFAIbC,GAAW,oHAOX,gBAAGC,EAAH,EAAGA,mBAAH,gBAA+BA,GAAsB,EAArD,QAPW,wFAcO,gBAAGC,EAAH,EAAGA,WAAH,gBAAuBA,GAAc,EAArC,QAdP,2DAqGFC,OA7Ef,WAAgB,IAAD,EAITxU,qBAJS,mBAEXyU,EAFW,KAGXpG,EAHW,KAMTqG,EAASC,IAKb,OACE,cAAC,IAAM5O,SAAP,KACE,cAAC,EAAD,MACA,cAAC2O,EAAD,KACE,cAAC,GAAD,CAAerR,gBAAiBoR,IAChC,cAACL,GAAD,KACE,cAAC,IAAD,CAAOrR,KAAK,IAAI6R,OAAK,IAClB,gBAAGnP,EAAH,EAAGA,MAAH,OACC,cAACoP,EAAA,EAAD,CACEC,KAAMrP,EACNsP,QAAS,CAAEnO,MAAO,KAAM3E,KAAM,KAC9B+S,WAAW,OACXC,eAAa,GAEb,cAACZ,GAAD,CAAaC,mBAAoB,IAAKC,WAAY,MAChD,cAAC,GAAD,CACElG,gCACE5I,EAAQ4I,EAAkC,SAAA6G,YAOtD,cAAC,IAAD,CAAOnS,KAAK,cACT,gBAAG0C,EAAH,EAAGA,MAAH,OACC,cAACoP,EAAA,EAAD,CACEC,KAAMrP,EACNsP,QAAS,CAAEnO,MAAO,KAAM3E,KAAM,KAC9B+S,WAAW,OACXC,eAAa,GAEb,cAACZ,GAAD,CAAaC,mBAAoB,IAAKC,WAAY,MAChD,cAAC,GAAD,CACElG,gCACEA,SAOZ,cAAC,IAAD,CAAOtL,KAAK,gBACT,gBAAG0C,EAAH,EAAGA,MAAH,OACC,cAACoP,EAAA,EAAD,CACEC,KAAMrP,EACNsP,QAAS,CAAEnO,MAAO,KAAM3E,KAAM,KAC9B+S,WAAW,OACXC,eAAa,GAEb,cAACZ,GAAD,CAAaC,mBAAoB,IAAKC,WAAY,KAChD,cAAC,GAAD,CACElG,gCACEA,aC5FF8G,QACW,cAA7B3Q,OAAOtB,SAASkS,UAEe,UAA7B5Q,OAAOtB,SAASkS,UAEhB5Q,OAAOtB,SAASkS,SAAS3P,MACvB,2DCVN4P,IAASC,OAAO,cAAC,GAAD,MAASC,SAASC,eAAe,SD2H3C,kBAAmBC,WACrBA,UAAUC,cAAcC,MAAMC,MAAK,SAAAC,GACjCA,EAAaC,iB,mBErInBra,EAAOC,QAAU,IAA0B,+B,mBCA3CD,EAAOC,QAAU,IAA0B,iC","file":"static/js/main.b83f7973.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.2775984f.eot\";","module.exports = __webpack_public_path__ + \"static/media/square-button-big.d60b4a0f.gif\";","module.exports = __webpack_public_path__ + \"static/media/test.c6bd52b1.png\";","module.exports = \"data:image/gif;base64,R0lGODlhIAMgA6IFAEBAQL+/vxAQEO/v7wAAAP///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJQwAFACwAAAAAIAMgAwAD/zix3P4wykmrvTjrzbv/YCiOZGmeaKqubOu+cEfMdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRKrVqvWGIgy+16v+CweEwum8/otBq7Xbvf8Lh8Tq/b7/h4O8/v+/+AgYKDhH97hYiJiouMjY6Pb4eQk5SVlpeYmX6Smp2en6ChoqM3nKSnqKmqq6xmpq2wsbKztLUEr7a5uru8vYG4vsHCw8TFVsDGycrLzM3IzdDR0tOrz9TX2Nnai9bb3t/g4Wvd4uXm5+hP5Ons7e7vNevw8/T12PL2+fr7wfj8/wADqvInsKDBg5UIIlzIsCEghQ4jSpw4jqLFixjlQMzIsf+jRyQbP4ocSbJUyZMoU/oIqbKlS4QsX8qcqS8mzZs42dnMybOnt50+gwqFBnSo0aPCiiJdypSW0qZQo6J6KrWqVU1Ur2rd6igr169gBXkNS7asnbFm06pVg3at27dg2sKdS5eK3Lp48yq5q7evXyB8/woebCMw4cN/DSNejFcx48dvHUOebFYy5ctfLWPebFUz589NPYMebVQ06dM9TaNeTVM169ctXcOeXVI27dsebePefVE3798RfQMfDpO48a3Cjyvfl3y5c3rNn0tvF326dXPVr2v/ln2793vfw8cWT/5k9/Loi51Pz97X+vbwc72PT1/W/Pr4q+XfX/A+////oPiHgwAAFGjggQgmqOCCDDbo4IMQRijhhBRWaOGFGGao4YYcdujhhyCGKOKIJJZoYoUCGEIIAAW06OKLMMYo44w01mjjjTjmqOOOPPbo449ABinkkEQWaeSRSCap5JJMNulkjwCoOAiLT1Zp5ZVYZqnlllx26eWXYIYpZotRbrLimGimqeaabLbp5ptwxrlkmX0IeAOVcuap55589unnn4CiSScfdtqAZ6CIJqrooow26miYg+ZRaA2HPmrppZhmqummgEaKx6Q0VMrpqKSWauqpqP7o6R2gziBqqrDGKuustP656lln1qrrrrz26quVt9bRKgGv/mrsscgma2yw/3QMW6yy0EYr7bSWMjuHs9Rmq+223OZprUa5divuuOSW++S3eoRr7rrstutujejCge279NZrr7jxRqLuvfz26y+v+box778EF2wwqQFXNOXBDDfssKIJs7XvwxRXbHGaEacx8MUcd+zxlRmjsfHHJJdscpAhnzHyySy37DKMKbsy8cs01+xxzGWsbPPOPDeMMxk69yz00Pf+PEbQRCetdLlGi4H00lBHPW3TYTwt9dVY+0p1XDNn7fXXtG79hdVgl232pmJ7QfbZbLe9aNpdrO323HTvCTcXctet995r3p1F3nwHLniXfrPR9eCIJ75l4VcArvjjkBfJ+DGHR2755f9DTl6F45h37rmMmttV+eeklw6zlII8a/rqpYc+Beesx46461LALvvte9Mehe249+627lDw7vvwZQOvzujEJz+38U4Ir/zzUDPfhPPQVz+09ExQb/32NmO/hPbch9+y93shL/75QpOfBPjot8+x+iCZ7/7846MeiOr0588y/Eewr////+KfEfwHwALaS4BFIKABF9guBGpBfgyMIMEcOAQFSvCC3KKgECyIwQ5OzX6AwJ8HR/guDQaBgyRM4a9MCBgIqvCF22LhD1AIwxrKSoYrcaENd5gsHPaAhjwM4qh8yAMgCvGImCLiDoyIxCY2Sok6YKITp4goKOZAilTMYp//rIgDLGrxi3LiokkWBsYy3hCEfxChGdd4KTEWRodsjGMV0egHNcrxjnM0ExnxyMdHuTEecOyjIN/0Rxp4cZCIZFIhZ3DIRDrySIu8RSAfSUkvRbKRlcykjy45SU16skqc3OMnRymmUKaOlKiEFB37YMdUulJJprzfK2eZpViGkJa4BOUq+dDKXPoSSrvMQy9/SUwc2TKNxUwmkY5ZR2U6E0jMZOUzp8mjaPKSmtg0ZjDxMMxsJtOawvSmOEG3zTt0c5y+BCc30cnOAqjTnO1E5zvtcM54vnKedainPVOJTzroc5+k7Occ/gnQTwpUDgQtqCYPGoeEKrSSDIWDQx/6/8iIvmGiFE2kRd2A0YwOcqNr6KhH+whSNYh0pHgsaRpOilI5qhQNLG0pG196hpjK1Iw0NYNNbwrGnJZhpzzVok/JANSgUnGoYyiqUZ2IVDEodalIbGoYngpVIUoVDFStKg+v+oWsatWGXPWCV78Kw7B2YaxkVaFZuYDWtJJwrVloq1s9CFcsyHWuGKzrFe6KVwnq1Qp87SsD/1qFwArWgISlgmEPC8DETmGxjNWfY6UA2cjSb7JRqKxl3YdZKGh2s+jr7BM+C1rxidYJpC0t907bhNSq1nqsZYJrXwu92C5htrRVnm2VgNvcEm+3Seitb30HXCQId7i4K+4Rjotc2f8p1wjMbS7rnluE6ErXdNQlgnWvS7rsDmG73PWcd4UA3vBibrxBKK95LYdeIKh3vZBr7w/eC1/FydcH9K3v7MpJT/0ylb/59G8T79uD/AqYbwTmgYEPrLcE72DBDKabg3UA4Qj/DsD+tPBWMTxQDe9wwjmosIfNBmIciHjEYCvxnVBcVg4jlMUvVLGhYKxWFzeUximUMaVw/FYbS5THI9RxqIBMVx9flMgdFLKrkJxXI3OUyRdUMrGg7Fcnh5TKEZTyibGcPiublMsL1DKYEevllY65gGI+8//SrOb8sbnN83sznNsn5zmfr852Dh+e87y9PfO5en7+8/MCLejkEbr/0MM7NKJ7p+hF367Rjo4dpCO9uklTunVlhumla5vpmm560J3W6ad1G+qfjtrQpSbqqX+b6qSuOtGtduqriRvrqc6a0bXG6q2Tm+uu7vrRvRbrr50b7LMOW9LFZuuxp5vsuC670s2267OxG+29ThvTejzltT9n6W03uNqA9bZ4wV1YcXeu2+a+cLZlmW72klux7Xb3um8Z7/i++7H1tve8kZlv+96bsv32976bGfD9DlyaBR8cuhOOtYUzXGoOf3j0/p1ZiSOY4p61eO4wPlqNf/vg1/S4hDmOWpGPHOThNLm669RJlfcs4i7fGcxjXrOZ0/xlNr95/VC+Tp2nmOSt//X5z3kOT6F7LedGJxnSk34zoMuW6Q13+m2hfrWlU91iVr86xbKudYdxvesM+zrYDSb2sU9Q6rw1O9HKrvZ+sb3tRUN7cOH+crkbl+48ezveS2j35e69e32H7t9rHvjqDp5mej+8uRKveHIxvvH4Krx2Ib8/yX+X8id7POa1pfnNU6vznpcW6EMPrdGTvoeWJ+/pO2b61S8r9el1/cVaL/te0b72u7o97mul+93Pqve+jxXwg5+q4RP/VMY/fqmSr/whwt69zS8Y86OvqelTP4nPn+/1/WX97fsx+/j1Pr+6L35Gkb/8EAN/gdFfr/OzP1Duf7+t1K9g+bsr/vbnE//+86+n/fM/jPT3YP+3eAFIYQPINAUYYgfoeAloYgs4Lv73gGwSgRKoJhRYgYLSgCuGgZyngTPGgdlygSAIJiI4gpbkgTtmgqKHgkOmgtFSgi6oJTAYg1gygzQILCy4ZDeILDa4g07Sgz6oSDk4ZUG4QkO4ZUUoOUeYhFqzhEwIME74hLoChFKohETXX1XIe1GYhWd0hQHGhb+3hWBYfGI4hshXhma4fGiYhs7nhRnGhqhChXC4I3I4hzlSh3Z4I3iYh/CyhnxYLX74h46yh4IYI4RYiC9yiIhIJoG4iImiiIsIiYgoiYVIiYJoiX+IiXyoiXnIiXboiXMIinAoimz/SIppaIpmiIpjqIpgyIpc6IpZCItVKItSSItPaItMiItJqItFyItB6Is+CIw7KIw3SIw0aIwxiIwuqIwqyIwm6IwjCI0gKI0cSI0YaI0ViI0SqI0PyI0L6I0HCI4DKI7/R478Z475h472p47yx47v547sB4/oJ4/lR4/iZ4/eh4/bp4/Xx4/U54/RB5DNJ5DKR5DHZ5DEh5DBp5C+x5C755C4B5G1J5GyR5GuZ5Grh5Gnp5Gkx5Gh55GeB5KbJ5KYR5KUZ5KQh5KNp5KKx5KH55KDB5N/J5N7R5N4Z5N0h5Nwp5Ntx5Nq55NmB5RjJ5RgR5RdZ5Rah5RXp5RUx5RQ/+eUTAeVSSeVRkeVQmeVPoeVOqeVN8eVNOeVMQeWLieWKkeWJmeWIoeWHqeWGseWFueWEgeXDyeXDEeXCWeXBYeXAaeX/caX+eaX9QaY8SaY7UaY6WaY5oaY4qaY3saY2+aY1waZ0yaZz0aZy2aZx4aZw6aZv8aZu+aZtwaasyaar0aaq2aap4aao6aan8aam+aalwablCabkUabjmabi4abiKabhcabguabfwacfCaceUacdmacc4accKacbcacauacZwadYyadYEadXGadWIadVKadUMadTOadSAaeRCaeQEaePGaeOIaeNKaeMMaeLOaeKAafIyafHkafGmafFv+GnxGmnwzGnwfmnwIGoP4loPpFoPVloPCFoOuloObFoOHloNwFodclodJFoc1lociFocOlob7FobnlobQFoq8loqpFoqVloqCFopulopbFopHloowFo4clo4JFo31lo3iFo3Olo27Fo2nlo2QFpF8lpFpFpFVlpFCFpEulpEbFpEHlpDwFpTclpTJFpS1lpSiFpSOlpR7FpRnlpRQFpg8lpgpFpgVlpgCFpvukpvbEpvHkpu0Ep+wkp/LUiI4If3Z6p/Pnhh2mp9/Hpy/mp4OYp4JqN4RaqN5yqIgaJ3Q6To0qTo/qTZGaTZOKTZVKTZc6TZn6TJvqTJ2qTJ/6TYr/uqiENKqk2iahWkypSkyr+kutmk6meqp9E6uyijG0Wqtj8qq5pKu4xKu05KuzBKz3dKu4qkqAemPF6ifC6krLyk/EmqwneKw/Bq3696zUujjWeq21lK3aCjLc2q26JK1HBq6M+q3k2iTNikrpGlDmeq5z0q7umiTrOkrzalDwGq+QdK/4aoUsJ0r7moHi+mT/aoH6OrAoU7AGqyoIm7DAFLBXxrCltLAQqyP16kkVu1ASO7Ha5LBfprFfcrGZBLIQlbEe24cca2YlSzgkm7LkdLJoQCAnErMyO7M0W7M2e7M4m7M6u7M827M+WyAp4rIAMrTUMCxEe7SMYLRIu7SF/6C0TPu0DwG1UhsOTju1VissV5u111C1Wtu1EuO1YKsMXBu2ZFs1ZXu2/YC2arsLY7u2bls7bxu3sdC2clu362O3eHsKdJu3fNtCffu3WAG4gnsJezu4hstIh5u4jVC4igu4jNu4ffu4kJu3kju5dlu5liu3mJu5b7u5nLu2nvu5aBu6olu2pFu6YXu6qOu1qru6Wtu6rnu1sBu7Uzu7tAu1tnu7TJu7uou0vNu7RPu7wAsgwju8/FG8xpsfyJu89bG8zBsfzvu87RG90pse1Fu95XG92Cse2ru939G93rsd4Bu+1zG+5Dsd5nu+z5G+6rsc7Nu+x/G+8Esc8ju/wEZRv/bLG/ibv7ixv/xLG/77v7ARwALMGgRcwKhxwAhMGgq8wKDRwA7MGRAcwZgxwRRMGRZ8wZCRwRrMGBzcwYjxwSBMGAkAACH5BAVDAAUALAAAAAAgAyADAAP/WLrc/jDKSau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqPyKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/AAMKHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mix/6PHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37+DDix9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7////8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUVmnllVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNZp55145qnnnnz26eefgAYq6KCEFmrooYgmquiijDbq6KOQRirppJRWaumlmGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LL/zDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPNOOes88489+zzz0AHLfTQRBdt9NFIJ6300kw37fTTUEct9dRUV2311VhnrfXWXHft9ddghy322GSXbfbZaKet9tpst+3223DHLffcdNdt991456333nz37fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnl/5hnrvnmnHfu+eeghy766KSXbvrpqKeu+uqst+7667DHLvvstNdu++2456777rz37vvvwAcv/PDEF2/88cgnr/zyzDfv/PPQRy/99NRXb/312Gev/fbcd+/99+CHL/745Jdv/vnop6/++uy37/778Mcv//z012///fjnr//+/Pfv//8ADKAAB0jAAhrwgAhMoAIXyMAGOvCBEIygBCdIwQpa8IIYzKAGN8jBDnrwgyAMoQhHSMISmvCEKEyhClfIwha68IUwjKEMZ0jDGtrwhjjMoQ53yMMe+vCHQAyiEIdIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFiS3yMUuevGLYAyjGMdIxjKa8YxoTKMa18jGNrrxjXCMoxzDlwAAOw==\"","module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.e44b942b.ttf\";","module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.41f0a7a6.svg\";","module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.d99ce0d3.woff\";","module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.514a6c41.woff2\";","module.exports = __webpack_public_path__ + \"static/media/VAGRounded-Light.374b223c.otf\";","module.exports = __webpack_public_path__ + \"static/media/full1.8e46f3b9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/overview.6918837d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/overview-pressed.747f662f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/simulation.09caa55e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/simulation_pressed.74a1744b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/full-to-overview.2fcf4d7b.mp4\";","module.exports = __webpack_public_path__ + \"static/media/overview-to-full.491b5374.mp4\";","module.exports = __webpack_public_path__ + \"static/media/overview-to-simulation.6db79a5e.mp4\";","module.exports = __webpack_public_path__ + \"static/media/simulation-to-overview.5af80147.mp4\";","module.exports = __webpack_public_path__ + \"static/media/simulation-to-full.6da3cb09.mp4\";","module.exports = __webpack_public_path__ + \"static/media/1.9a896e18.png\";","module.exports = __webpack_public_path__ + \"static/media/2.cb15d91f.png\";","module.exports = __webpack_public_path__ + \"static/media/3.87716e4c.png\";","module.exports = __webpack_public_path__ + \"static/media/4.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.ee1978ae.png\";","module.exports = __webpack_public_path__ + \"static/media/2.33666391.png\";","module.exports = __webpack_public_path__ + \"static/media/3.dd93e6ca.png\";","module.exports = __webpack_public_path__ + \"static/media/4.d6954a91.png\";","module.exports = __webpack_public_path__ + \"static/media/5.a51ce1f4.png\";","module.exports = __webpack_public_path__ + \"static/media/6.1b8950be.png\";","module.exports = __webpack_public_path__ + \"static/media/7.e2b8d3fa.png\";","module.exports = __webpack_public_path__ + \"static/media/8.800f6487.png\";","module.exports = __webpack_public_path__ + \"static/media/11.f2fb8254.png\";","module.exports = __webpack_public_path__ + \"static/media/12.cf02058b.png\";","module.exports = __webpack_public_path__ + \"static/media/1.1c932b75.png\";","module.exports = __webpack_public_path__ + \"static/media/2.3a2b7be0.png\";","module.exports = __webpack_public_path__ + \"static/media/3.4e31ba5b.png\";","module.exports = __webpack_public_path__ + \"static/media/4.ea089f8f.png\";","module.exports = __webpack_public_path__ + \"static/media/5.5898ee28.png\";","module.exports = __webpack_public_path__ + \"static/media/6.63ce25e8.png\";","module.exports = __webpack_public_path__ + \"static/media/7.31a2dec9.png\";","module.exports = __webpack_public_path__ + \"static/media/8.e202bf27.png\";","module.exports = __webpack_public_path__ + \"static/media/9.49e85d40.png\";","module.exports = __webpack_public_path__ + \"static/media/10.9b323bb7.png\";","module.exports = __webpack_public_path__ + \"static/media/1.444a3deb.png\";","module.exports = __webpack_public_path__ + \"static/media/2.79c2097b.png\";","module.exports = __webpack_public_path__ + \"static/media/3.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.fe46870f.png\";","module.exports = __webpack_public_path__ + \"static/media/2.a5934b7c.png\";","module.exports = __webpack_public_path__ + \"static/media/3.9ff4c6df.png\";","module.exports = __webpack_public_path__ + \"static/media/4.02706ca2.png\";","module.exports = __webpack_public_path__ + \"static/media/5.a3f57725.png\";","module.exports = __webpack_public_path__ + \"static/media/6.e64adecc.png\";","module.exports = __webpack_public_path__ + \"static/media/7.84d8cb24.png\";","module.exports = __webpack_public_path__ + \"static/media/8.3c2660de.png\";","module.exports = __webpack_public_path__ + \"static/media/9.fb44d01d.png\";","module.exports = __webpack_public_path__ + \"static/media/10.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.f83d0b24.png\";","module.exports = __webpack_public_path__ + \"static/media/2.a5d587d5.png\";","module.exports = __webpack_public_path__ + \"static/media/3.e45288f9.png\";","module.exports = __webpack_public_path__ + \"static/media/4.8d71fdf6.png\";","module.exports = __webpack_public_path__ + \"static/media/5.e6d8d44f.png\";","module.exports = __webpack_public_path__ + \"static/media/6.82b013a2.png\";","module.exports = __webpack_public_path__ + \"static/media/7.b2969417.png\";","module.exports = __webpack_public_path__ + \"static/media/8.c128cb42.png\";","module.exports = __webpack_public_path__ + \"static/media/9.36faad38.png\";","module.exports = __webpack_public_path__ + \"static/media/last.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.2a7b0378.png\";","module.exports = __webpack_public_path__ + \"static/media/2.86df91fd.png\";","module.exports = __webpack_public_path__ + \"static/media/3.8692b9cf.png\";","module.exports = __webpack_public_path__ + \"static/media/4.8abef3fe.png\";","module.exports = __webpack_public_path__ + \"static/media/5.3bc79add.png\";","module.exports = __webpack_public_path__ + \"static/media/6.130d06c9.png\";","module.exports = __webpack_public_path__ + \"static/media/7.3bc79add.png\";","module.exports = __webpack_public_path__ + \"static/media/8.1afe7a51.png\";","module.exports = __webpack_public_path__ + \"static/media/9.e489735e.png\";","module.exports = __webpack_public_path__ + \"static/media/10.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.cb0f8534.png\";","module.exports = __webpack_public_path__ + \"static/media/last.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.99de95e8.png\";","module.exports = __webpack_public_path__ + \"static/media/2.8995b351.png\";","module.exports = __webpack_public_path__ + \"static/media/3.223feae1.png\";","module.exports = __webpack_public_path__ + \"static/media/4.6ed067e3.png\";","module.exports = __webpack_public_path__ + \"static/media/5.de618dec.png\";","module.exports = __webpack_public_path__ + \"static/media/6.2e4452a7.png\";","module.exports = __webpack_public_path__ + \"static/media/7.4e3e7fcf.png\";","module.exports = __webpack_public_path__ + \"static/media/last.cd2a3e76.png\";","module.exports = __webpack_public_path__ + \"static/media/1.a1a89062.png\";","module.exports = __webpack_public_path__ + \"static/media/2.eea68407.png\";","module.exports = __webpack_public_path__ + \"static/media/3.31b0131a.png\";","module.exports = __webpack_public_path__ + \"static/media/4.1472e63d.png\";","module.exports = __webpack_public_path__ + \"static/media/5.c124973c.png\";","module.exports = __webpack_public_path__ + \"static/media/last.cd2a3e76.png\";","import Color from \"color\";\r\n\r\nconst primary = Color(\"#80c826\");\r\nconst secondary = Color(\"#F2F2F2\");\r\nconst darkerPercent = 0.15;\r\nconst darkPercent = 0.05;\r\nconst lightPercent = 0.05;\r\nconst lighterPercent = 0.15;\r\n\r\nexport default {\r\n colors: {\r\n primaryDarker: primary.darken(darkerPercent).hex(),\r\n primaryDark: primary.darken(darkPercent).hex(),\r\n primary: primary.hex(),\r\n primaryLight: primary.lighten(lightPercent).hex(),\r\n primaryLighter: primary.lighten(lighterPercent).hex(),\r\n\r\n secondaryDarker: secondary.darken(darkerPercent).hex(),\r\n secondaryDark: secondary.darken(darkPercent).hex(),\r\n secondary: secondary.hex(),\r\n secondaryLight: secondary.lighten(lightPercent).hex(),\r\n secondaryLighter: secondary.lighten(lighterPercent).hex()\r\n },\r\n\r\n letterSpacing: {\r\n md: \"0\",\r\n lg: \"0.025em\"\r\n },\r\n\r\n lineSpacings: {\r\n md: \"1.15\",\r\n lg: \"1.44444\"\r\n },\r\n\r\n fontSizes: {\r\n root: 16, // in px\r\n sm: \"0.75rem\",\r\n md: \"0.9375rem\",\r\n lg: \"1.125rem\"\r\n }\r\n};\r\n","import React from \"react\";\r\nimport { Global, css } from \"@emotion/core\";\r\nimport emotionNormalize from \"emotion-normalize\";\r\nimport styleConstants from \"styles/constants\";\r\nimport font from \"../fonts/VAGRounded-Light.ttf\";\r\nimport font1 from \"../fonts/VAGRounded-Light.eot\";\r\nimport font2 from \"../fonts/VAGRounded-Light.svg\";\r\nimport font4 from \"../fonts/VAGRounded-Light.woff\";\r\nimport font5 from \"../fonts/VAGRounded-Light.woff2\";\r\nimport font6 from \"../fonts/VAGRounded-Light.otf\";\r\n\r\nexport default () => (\r\n \r\n);\r\n","import React, { forwardRef } from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nconst Box = styled.div`\r\nposition: absolute;\r\n${props => props.y && `top: ${props.y};`}\r\n${props => props.x && `left: ${props.x};`}\r\n${props => props.width && `width: ${props.width};`}\r\n${props => props.height && `height: ${props.height};`}\r\n${props => props.minHeight && `min-height: ${props.minHeight};`}\r\n${props => props.minWidth && `min-width: ${props.minWidth};`}\r\n${props => props.centered && `transform: translateX(-50%) translateY(-50%);`}\r\n`;\r\n\r\nexport default forwardRef(({ children, ...props }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\n","import React, { forwardRef } from \"react\";\r\nimport styled from \"@emotion/styled\";\r\n\r\nconst Outer = styled.div`\r\n position: relative;\r\n padding-top: ${props => props.padding};\r\n`;\r\n\r\nconst Inner = styled.div`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n height: 100%;\r\n width: 100%;\r\n`;\r\n\r\nexport default forwardRef(({ ratio = 16 / 9, children, outerProps, innerProps }, ref) => (\r\n \r\n {children}\r\n \r\n));\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport AbsoluteBox from '../absolute-box/absolute-box';\r\nimport AspectRatioBox from '../aspect-ratio-box/aspect-ratio-box';\r\nimport styleConstants from 'styles/constants';\r\n\r\n// TODO: could use AbsoluteBox atom here\r\n\r\nconst Button = styled.button`\r\n padding: 0;\r\n width: 100%;\r\n height: 100%;\r\n float: right;\r\n display: block;\r\n background-color: ${(props) =>\r\n !props.active\r\n ? styleConstants.colors.primaryLighter\r\n : props.transparent\r\n ? '#00000000'\r\n : styleConstants.colors.primary};\r\n border-radius: 7px;\r\n opacity: ${(props) => (props.active ? 0.4 : 0.3)};\r\n transition: all 0.25s;\r\n :hover {\r\n background-color: ${({ active, transparent }) =>\r\n !active || !transparent ? styleConstants.colors.primary : '#00000000'};\r\n opacity: 0.4;\r\n }\r\n`;\r\n\r\nexport default ({\r\n x,\r\n y,\r\n width,\r\n height,\r\n centered,\r\n aspectRatio,\r\n active = false,\r\n transparent = false,\r\n onClick,\r\n onHover,\r\n special,\r\n}) => {\r\n const over = (show) => {\r\n if (special) {\r\n onHover(show);\r\n }\r\n };\r\n\r\n return (\r\n \r\n over(true)}\r\n onMouseOut={() => over(false)}\r\n >\r\n {aspectRatio && }\r\n \r\n \r\n );\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { css } from '@emotion/core';\r\nimport AspectRatioBox from '../../atoms/aspect-ratio-box/aspect-ratio-box';\r\nimport buttonDownGif from './square-button-big.gif';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nconst Button = styled.button`\r\n width: 100%;\r\n height: 100%;\r\n border-radius: 10%;\r\n background-color: transparent;\r\n border-width: 0;\r\n`;\r\n\r\nconst Animation = styled.img`\r\n position: absolute;\r\n width: 200%;\r\n height: 200%;\r\n left: -50%;\r\n top: -50%;\r\n pointer-events: none;\r\n`;\r\n\r\nexport default ({\r\n onMouseDown,\r\n onMouseUp,\r\n onNext,\r\n onBack,\r\n onEnter,\r\n onExit,\r\n menuItem,\r\n}) => {\r\n const [mouseDownTime, setMouseDownTime] = useState(0);\r\n const [mouseDownDuration, setMouseDownDuration] = useState(0);\r\n const mouseDown = mouseDownTime > 0;\r\n const animationRef = useRef();\r\n const [displayState, setDisplayState] = useState('none');\r\n\r\n useEffect(() => {\r\n if (!mouseDown) return;\r\n if (mouseDownDuration <= 0) {\r\n animationRef.current.src = '';\r\n animationRef.current.src = buttonDownGif + '?a=\"+' + Math.random();\r\n }\r\n const handle = setTimeout(() => {\r\n setMouseDownDuration(new Date().getTime() - mouseDownTime);\r\n }, 100);\r\n return () => {\r\n clearTimeout(handle);\r\n };\r\n }, [mouseDown, mouseDownTime, mouseDownDuration]);\r\n\r\n const handleMouseDown = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setMouseDownTime(new Date().getTime());\r\n\r\n const animationTimer = setTimeout(() => {\r\n setDisplayState('inline');\r\n }, 300);\r\n\r\n onMouseDown && onMouseDown();\r\n return () => clearTimeout(animationTimer);\r\n };\r\n\r\n const handleMouseUp = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n setDisplayState('none');\r\n };\r\n\r\n const pathname = useLocation().pathname;\r\n\r\n const useSimpleAndDoubleClick = (\r\n actionSimpleClick,\r\n actionDoubleClick,\r\n delay = 200,\r\n ) => {\r\n const [click, setClick] = useState(0);\r\n\r\n actionSimpleClick = () => {\r\n if (mouseDownDuration < 1900) {\r\n onNext && onNext();\r\n } else if (\r\n pathname !== '/overview/button' &&\r\n mouseDownDuration >= 1900 &&\r\n menuItem.exit\r\n ) {\r\n onExit && onExit();\r\n } else if (mouseDownDuration > 1900) {\r\n onEnter && onEnter();\r\n }\r\n };\r\n\r\n actionDoubleClick = () => {\r\n onBack && onBack();\r\n };\r\n\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n if (click === 1) actionSimpleClick();\r\n setClick(0);\r\n\r\n setMouseDownTime(0);\r\n setMouseDownDuration(0);\r\n onMouseUp && onMouseUp();\r\n }, delay);\r\n\r\n if (click === 2) actionDoubleClick();\r\n\r\n return () => clearTimeout(timer);\r\n }, [click]);\r\n\r\n return () => setClick((prev) => prev + 1);\r\n };\r\n\r\n const callbackClick = () => {\r\n console.log('single');\r\n };\r\n\r\n const callbackDoubleClick = () => {\r\n console.log('double');\r\n };\r\n\r\n const click = useSimpleAndDoubleClick(callbackClick, callbackDoubleClick);\r\n\r\n return (\r\n \r\n {mouseDown && (\r\n \r\n )}\r\n\r\n {\r\n return false;\r\n }}\r\n >\r\n \r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport styled from '@emotion/styled';\r\nimport { css } from '@emotion/core';\r\nimport { useHistory, useRouteMatch } from 'react-router-dom';\r\nimport AbsoluteBox from '../../atoms/absolute-box/absolute-box';\r\nimport HighlightButton from '../../atoms/highlight-button/highlight-button';\r\nimport SimulationButton from '../../molecules/simulation-button/simulation-button';\r\nimport full from './assets/full1.jpg';\r\nimport overview from './assets/overview.jpg';\r\nimport overviewPressed from './assets/overview-pressed.jpg';\r\nimport simulation from './assets/simulation.jpg';\r\nimport simulationPressed from './assets/simulation_pressed.jpg';\r\nimport fullToOverview from './assets/animations/full-to-overview.mp4';\r\nimport overviewToFull from './assets/animations/overview-to-full.mp4';\r\nimport overviewToSimulation from './assets/animations/overview-to-simulation.mp4';\r\nimport simulationToOverview from './assets/animations/simulation-to-overview.mp4';\r\nimport simulationToFull from './assets/animations/simulation-to-full.mp4';\r\n\r\nimport main1Display from './assets/simulation/main/1.png';\r\nimport main2Display from './assets/simulation/main/2.png';\r\nimport main3Display from './assets/simulation/main/3.png';\r\nimport main4Display from './assets/simulation/main/4.png';\r\n\r\nimport mainStandard0Display from './assets/simulation/main-standard/test.png';\r\nimport mainStandard1Display from './assets/simulation/main-standard/1.png';\r\nimport mainStandard2Display from './assets/simulation/main-standard/2.png';\r\nimport mainStandard3Display from './assets/simulation/main-standard/3.png';\r\nimport mainStandard4Display from './assets/simulation/main-standard/4.png';\r\nimport mainStandard5Display from './assets/simulation/main-standard/5.png';\r\nimport mainStandard6Display from './assets/simulation/main-standard/6.png';\r\nimport mainStandard7Display from './assets/simulation/main-standard/7.png';\r\nimport mainStandard8Display from './assets/simulation/main-standard/8.png';\r\nimport mainStandard9Display from './assets/simulation/main-standard/9.png';\r\nimport mainStandard10Display from './assets/simulation/main-standard/10.png';\r\nimport mainStandard11Display from './assets/simulation/main-standard/11.png';\r\nimport mainStandard12Display from './assets/simulation/main-standard/12.png';\r\nimport mainMid1Display from './assets/simulation/main-mid/1.png';\r\nimport mainMid2Display from './assets/simulation/main-mid/2.png';\r\nimport mainMid3Display from './assets/simulation/main-mid/3.png';\r\nimport mainMid4Display from './assets/simulation/main-mid/4.png';\r\nimport mainMid5Display from './assets/simulation/main-mid/5.png';\r\nimport mainMid6Display from './assets/simulation/main-mid/6.png';\r\nimport mainMid7Display from './assets/simulation/main-mid/7.png';\r\nimport mainMid8Display from './assets/simulation/main-mid/8.png';\r\nimport mainMid9Display from './assets/simulation/main-mid/9.png';\r\nimport mainMid10Display from './assets/simulation/main-mid/10.png';\r\n\r\nimport mainProfiles1Display from './assets/simulation/main-profiles/1.png';\r\nimport mainProfiles2Display from './assets/simulation/main-profiles/2.png';\r\nimport mainProfiles3Display from './assets/simulation/main-profiles/3.png';\r\n\r\nimport mainLP11Display from './assets/simulation/main-lp1/1.png';\r\nimport mainLP12Display from './assets/simulation/main-lp1/2.png';\r\nimport mainLP13Display from './assets/simulation/main-lp1/3.png';\r\nimport mainLP14Display from './assets/simulation/main-lp1/4.png';\r\nimport mainLP15Display from './assets/simulation/main-lp1/5.png';\r\nimport mainLP16Display from './assets/simulation/main-lp1/6.png';\r\nimport mainLP17Display from './assets/simulation/main-lp1/7.png';\r\nimport mainLP18Display from './assets/simulation/main-lp1/8.png';\r\nimport mainLP19Display from './assets/simulation/main-lp1/9.png';\r\nimport mainLP110Display from './assets/simulation/main-lp1/10.png';\r\n\r\nimport mainLP1Entries1Display from './assets/simulation/main-lp1-entries/1.png';\r\nimport mainLP1Entries2Display from './assets/simulation/main-lp1-entries/2.png';\r\nimport mainLP1Entries3Display from './assets/simulation/main-lp1-entries/3.png';\r\nimport mainLP1Entries4Display from './assets/simulation/main-lp1-entries/4.png';\r\nimport mainLP1Entries5Display from './assets/simulation/main-lp1-entries/5.png';\r\nimport mainLP1Entries6Display from './assets/simulation/main-lp1-entries/6.png';\r\nimport mainLP1Entries7Display from './assets/simulation/main-lp1-entries/7.png';\r\nimport mainLP1Entries8Display from './assets/simulation/main-lp1-entries/8.png';\r\nimport mainLP1Entries9Display from './assets/simulation/main-lp1-entries/9.png';\r\nimport mainLP1EntriesLastDisplay from './assets/simulation/main-lp1-entries/last.png';\r\n\r\nimport mainLP21Display from './assets/simulation/main-lp2/1.png';\r\nimport mainLP22Display from './assets/simulation/main-lp2/2.png';\r\nimport mainLP23Display from './assets/simulation/main-lp2/3.png';\r\nimport mainLP24Display from './assets/simulation/main-lp2/4.png';\r\nimport mainLP25Display from './assets/simulation/main-lp2/5.png';\r\nimport mainLP26Display from './assets/simulation/main-lp2/6.png';\r\nimport mainLP27Display from './assets/simulation/main-lp2/7.png';\r\nimport mainLP28Display from './assets/simulation/main-lp2/8.png';\r\nimport mainLP29Display from './assets/simulation/main-lp2/9.png';\r\nimport mainLP210Display from './assets/simulation/main-lp2/10.png';\r\n\r\nimport mainLP2Entries1Display from './assets/simulation/main-lp2-entries/1.png';\r\nimport mainLP2EntriesLastDisplay from './assets/simulation/main-lp2-entries/last.png';\r\nimport '../../../style.css';\r\n\r\nimport mainLP2EntriesValue1Display from './assets/simulation/main-lp2-entries-values/1.png';\r\nimport mainLP2EntriesValue2Display from './assets/simulation/main-lp2-entries-values/2.png';\r\nimport mainLP2EntriesValue3Display from './assets/simulation/main-lp2-entries-values/3.png';\r\nimport mainLP2EntriesValue4Display from './assets/simulation/main-lp2-entries-values/4.png';\r\nimport mainLP2EntriesValue5Display from './assets/simulation/main-lp2-entries-values/5.png';\r\nimport mainLP2EntriesValue6Display from './assets/simulation/main-lp2-entries-values/6.png';\r\nimport mainLP2EntriesValue7Display from './assets/simulation/main-lp2-entries-values/7.png';\r\nimport mainLP2EntriesValueLastDisplay from './assets/simulation/main-lp2-entries-values/last.png';\r\n\r\nimport mainLP1EntriesValue1Display from './assets/simulation/main-lp1-entries-values/1.png';\r\nimport mainLP1EntriesValue2Display from './assets/simulation/main-lp1-entries-values/2.png';\r\nimport mainLP1EntriesValue3Display from './assets/simulation/main-lp1-entries-values/3.png';\r\nimport mainLP1EntriesValue4Display from './assets/simulation/main-lp1-entries-values/4.png';\r\nimport mainLP1EntriesValue5Display from './assets/simulation/main-lp1-entries-values/5.png';\r\nimport mainLP1EntriesValueLastDisplay from './assets/simulation/main-lp1-entries-values/last.png';\r\n\r\nconst Image = styled.img`\r\n width: 100%;\r\n user-select: none;\r\n pointer-events: none;\r\n`;\r\n\r\nconst DisplayImage = styled.img`\r\n width: 100%;\r\n height: 100%;\r\n border-radius: 2px;\r\n user-select: none;\r\n pointer-events: none;\r\n`;\r\n\r\nconst Video = styled.video`\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n user-select: none;\r\n pointer-events: none;\r\n`;\r\n\r\nconst altText = 'Visualisation of the Smart Meter';\r\n\r\nconst ElementHighlightButton = ({ special, onHover, path, ...props }) => {\r\n const history = useHistory();\r\n const active = history.location.pathname === path;\r\n\r\n const over = (show) => {\r\n if (special) {\r\n console.log(show);\r\n onHover(show);\r\n }\r\n };\r\n\r\n return (\r\n history.push(path),\r\n })}\r\n active={active}\r\n special\r\n onHover={(state) => over(state)}\r\n />\r\n );\r\n};\r\n\r\nexport default ({ placeholderRect }) => {\r\n if (!placeholderRect) {\r\n return null; // no need to render without a placeholder to position at\r\n }\r\n\r\n const history = useHistory();\r\n const routeMatch = useRouteMatch('/:mode');\r\n const newAsset = routeMatch ? routeMatch.params.mode : 'full';\r\n\r\n const [asset, setAsset] = useState(newAsset);\r\n const [simulationButtonDown, setSimulationButtonDown] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [standardDisplay, setStandardDisplay] = useState(mainStandard9Display);\r\n const delay = 3000;\r\n const [beforeSimulation, setBeforeSimulation] = useState(false);\r\n const [showMenuButton, setShowMenuButton] = useState(true);\r\n const pathname = window.location.pathname;\r\n\r\n const handleStandardDisplay = () => {\r\n setTimeout(() => {\r\n if (standardDisplay === mainStandard9Display) {\r\n setStandardDisplay(mainStandard10Display);\r\n } else if (standardDisplay === mainStandard10Display) {\r\n setStandardDisplay(mainStandard9Display);\r\n }\r\n }, delay);\r\n return standardDisplay;\r\n };\r\n\r\n history.listen((location, action) => {\r\n if (pathname !== '/overview/button') {\r\n setBeforeSimulation(false);\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n const timeId = setTimeout(() => {\r\n setShowMenuButton(false);\r\n }, 3000);\r\n\r\n return () => {\r\n clearTimeout(timeId);\r\n };\r\n }, []);\r\n\r\n const images = {\r\n full: full,\r\n overview: overview,\r\n 'overview-pressed': overviewPressed,\r\n simulation: simulation,\r\n 'simulation-pressed': simulationPressed,\r\n };\r\n\r\n const animations = {\r\n 'full-to-overview': fullToOverview,\r\n 'overview-to-full': overviewToFull,\r\n 'overview-to-simulation': overviewToSimulation,\r\n 'simulation-to-overview': simulationToOverview,\r\n 'simulation-to-full': simulationToFull,\r\n };\r\n\r\n const animationMatch = asset.match(/([a-z]+)-to-([a-z]+)/);\r\n const imageKey = `${\r\n !animationMatch ? asset : loading ? animationMatch[1] : animationMatch[2]\r\n }${simulationButtonDown ? '-pressed' : ''}`;\r\n const image = images[imageKey];\r\n const animation = animationMatch ? animations[asset] : '';\r\n\r\n useEffect(() => {\r\n if (animationMatch) {\r\n return;\r\n }\r\n\r\n if (newAsset !== asset) {\r\n setAsset(`${asset}-to-${newAsset}`);\r\n setLoading(true);\r\n }\r\n }, [animationMatch, asset, newAsset]);\r\n\r\n const renderOverviewElements = () => (\r\n \r\n \r\n \r\n \r\n \r\n setShowMenuButton(state)}\r\n special\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n Zur Anzeige des Zählermenüs bitte nochmal drücken!{' '}\r\n

\r\n
\r\n \r\n {showMenuButton && (\r\n \r\n
\r\n \r\n Der graue Druckknopf dient zur Einschaltung nach Freigabe durch\r\n die Energienetze Steiermark.{' '}\r\n

\r\n
\r\n
\r\n )}\r\n \r\n {\r\n setSimulationButtonDown(true)}\r\n onMouseUp={() => setSimulationButtonDown(false)}\r\n onNext={() =>\r\n !beforeSimulation\r\n ? [history.push('/overview/button'), setBeforeSimulation(true)]\r\n : history.push('/simulation/main/1')\r\n }\r\n />\r\n }\r\n \r\n
\r\n );\r\n\r\n const simulationRouteMatch = useRouteMatch('/simulation/:menu/:display');\r\n const simulationItemRouteMatch = useRouteMatch(\r\n '/simulation/:menu/:display/:item',\r\n );\r\n const renderSimulationElements = () => {\r\n if (!simulationRouteMatch) {\r\n return null;\r\n }\r\n const menu = simulationRouteMatch.params.menu;\r\n const display = parseInt(simulationRouteMatch.params.display, 10) - 1;\r\n const item = simulationItemRouteMatch?.params?.item;\r\n\r\n const displays = {\r\n main: [\r\n { display: main1Display, enter: 'main-standard' },\r\n { display: main2Display, enter: 'main-mid' },\r\n { display: main3Display, enter: 'main-profiles' },\r\n { display: main4Display },\r\n /* { display: main4Display, enter: \"main-lp1\" },\r\n { display: main5Display, enter: \"main-lp2\" },\r\n { display: main6Display }, */\r\n ],\r\n 'main-standard': [\r\n { display: mainStandard0Display },\r\n { display: mainStandard1Display },\r\n { display: mainStandard2Display },\r\n { display: mainStandard3Display },\r\n { display: mainStandard4Display },\r\n { display: mainStandard5Display },\r\n { display: mainStandard6Display },\r\n { display: mainStandard7Display },\r\n { display: mainStandard8Display },\r\n { display: mainStandard9Display },\r\n { display: mainStandard10Display },\r\n { display: mainStandard11Display },\r\n { display: mainStandard12Display, exit: 'main' },\r\n ],\r\n 'main-mid': [\r\n { display: mainMid1Display },\r\n { display: mainMid2Display },\r\n { display: mainMid3Display },\r\n { display: mainMid4Display },\r\n { display: mainMid5Display },\r\n { display: mainMid6Display },\r\n { display: mainMid7Display },\r\n { display: mainMid8Display },\r\n { display: mainMid9Display },\r\n { display: mainMid10Display, exit: 'main' },\r\n ],\r\n\r\n 'main-profiles': [\r\n { display: mainProfiles1Display, enter: 'main-lp1' },\r\n { display: mainProfiles2Display, enter: 'main-lp2' },\r\n { display: mainProfiles3Display, exit: 'main' },\r\n ],\r\n\r\n 'main-lp1': [\r\n { display: mainLP11Display, enter: 'main-lp1-entries' },\r\n { display: mainLP12Display, enter: 'main-lp1-entries' },\r\n { display: mainLP13Display, enter: 'main-lp1-entries' },\r\n { display: mainLP14Display, enter: 'main-lp1-entries' },\r\n { display: mainLP15Display, enter: 'main-lp1-entries' },\r\n { display: mainLP16Display, enter: 'main-lp1-entries' },\r\n { display: mainLP17Display, enter: 'main-lp1-entries' },\r\n { display: mainLP18Display, enter: 'main-lp1-entries' },\r\n { display: mainLP19Display, enter: 'main-lp1-entries' },\r\n { display: mainLP110Display, exit: 'main-profiles' },\r\n ],\r\n 'main-lp1-entries': [\r\n { display: mainLP1Entries1Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries2Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries3Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries4Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries5Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries6Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries7Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries8Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1Entries9Display, enter: 'main-lp1-entries-values' },\r\n { display: mainLP1EntriesLastDisplay, exit: 'main-lp1' },\r\n ],\r\n\r\n 'main-lp1-entries-values': [\r\n { display: mainLP1EntriesValue1Display },\r\n { display: mainLP1EntriesValue2Display },\r\n { display: mainLP1EntriesValue3Display },\r\n { display: mainLP1EntriesValue4Display },\r\n { display: mainLP1EntriesValue5Display },\r\n { display: mainLP1EntriesValueLastDisplay, exit: 'main-lp1-entries' },\r\n ],\r\n 'main-lp2': [\r\n { display: mainLP21Display, enter: 'main-lp2-entries' },\r\n { display: mainLP22Display, enter: 'main-lp2-entries' },\r\n { display: mainLP23Display, enter: 'main-lp2-entries' },\r\n { display: mainLP24Display, enter: 'main-lp2-entries' },\r\n { display: mainLP25Display, enter: 'main-lp2-entries' },\r\n { display: mainLP26Display, enter: 'main-lp2-entries' },\r\n { display: mainLP27Display, enter: 'main-lp2-entries' },\r\n { display: mainLP28Display, enter: 'main-lp2-entries' },\r\n { display: mainLP29Display, enter: 'main-lp2-entries' },\r\n { display: mainLP210Display, exit: 'main-profiles' },\r\n ],\r\n 'main-lp2-entries': [\r\n { display: mainLP2Entries1Display, enter: 'main-lp2-entries-values' },\r\n { display: mainLP2EntriesLastDisplay, exit: 'main-lp2' },\r\n ],\r\n\r\n 'main-lp2-entries-values': [\r\n { display: mainLP2EntriesValue1Display },\r\n { display: mainLP2EntriesValue2Display },\r\n { display: mainLP2EntriesValue3Display },\r\n { display: mainLP2EntriesValue4Display },\r\n { display: mainLP2EntriesValue5Display },\r\n { display: mainLP2EntriesValue6Display },\r\n { display: mainLP2EntriesValue7Display },\r\n { display: mainLP2EntriesValueLastDisplay, exit: 'main-lp2-entries' },\r\n ],\r\n };\r\n\r\n const nextDisplay = (display + 1) % displays[menu].length;\r\n\r\n const renderRegisterDisplayHighlights = (\r\n menu,\r\n display,\r\n indexFieldWidth,\r\n indexFieldPositionX,\r\n dataWidth,\r\n dataPositionX,\r\n obisState,\r\n ) => {\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {\r\n {\r\n main: [],\r\n 'main-standard': [\r\n null,\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '2',\r\n '9%',\r\n '18.9%',\r\n '22%',\r\n '48%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '3',\r\n '9%',\r\n '18.9%',\r\n '19%',\r\n '49.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '4',\r\n '9%',\r\n '18.9%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '5',\r\n '9%',\r\n '18.3%',\r\n '19%',\r\n '49.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '6',\r\n '9%',\r\n '18.3%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '7',\r\n '9%',\r\n '18.3%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '8',\r\n '9%',\r\n '18.3%',\r\n '28%',\r\n '45%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '9',\r\n '9%',\r\n '18.3%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '10',\r\n '12%',\r\n '15.55%',\r\n '36%',\r\n '41%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-standard',\r\n '11',\r\n '12%',\r\n '15.55%',\r\n '20%',\r\n '27.2%',\r\n ),\r\n ],\r\n 'main-mid': [\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '1',\r\n '9%',\r\n '18.9%',\r\n '22%',\r\n '48%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '2',\r\n '9%',\r\n '18.3%',\r\n '19%',\r\n '49.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '3',\r\n '12%',\r\n '15.4%',\r\n '37%',\r\n '36%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '4',\r\n '12%',\r\n '15.4%',\r\n '34%',\r\n '42%',\r\n ),\r\n null,\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '6',\r\n '9%',\r\n '18.9%',\r\n '17.8%',\r\n '49.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '7',\r\n '9%',\r\n '18.9%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '8',\r\n '9%',\r\n '18.3%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-mid',\r\n '9',\r\n '9%',\r\n '18.3%',\r\n '17%',\r\n '50.5%',\r\n ),\r\n ],\r\n 'main-profiles': [\r\n /* renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '1',\r\n '26%',\r\n '50%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '2',\r\n '26%',\r\n '20%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '3',\r\n '26%',\r\n '30%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '4',\r\n '26%',\r\n '30%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '5',\r\n '26%',\r\n '25%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '6',\r\n '26%',\r\n '20%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '7',\r\n '26%',\r\n '30%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '8',\r\n '26%',\r\n '32%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '9',\r\n '26%',\r\n '31%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '10',\r\n '26%',\r\n '31%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '11',\r\n '26%',\r\n '31%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '12',\r\n '26%',\r\n '31%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '13',\r\n '26%',\r\n '32%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '14',\r\n '26%',\r\n '23%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '15',\r\n '27%',\r\n '50%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '16',\r\n '26%',\r\n '22%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-profiles',\r\n '17',\r\n '26%',\r\n '50%',\r\n ), */\r\n ],\r\n 'main-lp1': [\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '1',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '2',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '3',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '4',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '5',\r\n '9.5%',\r\n '18%',\r\n '10%',\r\n '37.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '6',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '7',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '8',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1',\r\n '9',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n null,\r\n ],\r\n 'main-lp1-entries': [\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '1',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '2',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '3',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '4',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '5',\r\n '9.5%',\r\n '18%',\r\n '10%',\r\n '37.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '9',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '7',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '8',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries',\r\n '9',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n null,\r\n ],\r\n\r\n 'main-lp1-entries-values': [\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries-values',\r\n '1',\r\n '12%',\r\n '15.5%',\r\n '12%',\r\n '53%',\r\n ),\r\n\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries-values',\r\n '2',\r\n '8%',\r\n '19.5%',\r\n '17%',\r\n '51%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries-values',\r\n '3',\r\n '9.5%',\r\n '18%',\r\n '17%',\r\n '51%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries-values',\r\n '4',\r\n '9.5%',\r\n '18%',\r\n '15%',\r\n '52%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp1-entries-values',\r\n '5',\r\n '9.5%',\r\n '18%',\r\n '17%',\r\n '51%',\r\n ),\r\n null,\r\n ],\r\n\r\n 'main-lp2': Array.from({ length: 9 }, (v, i) =>\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2',\r\n i + 1,\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n ),\r\n 'main-lp2-entries': [\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries',\r\n '1',\r\n '9.5%',\r\n '18%',\r\n '32%',\r\n '43.5%',\r\n ),\r\n null,\r\n ],\r\n\r\n 'main-lp2-entries-values': [\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '1',\r\n '12%',\r\n '15.5%',\r\n '12%',\r\n '53.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '2',\r\n '8%',\r\n '19.5%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '3',\r\n '8%',\r\n '19.5%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '4',\r\n '8%',\r\n '19.5%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '5',\r\n '9%',\r\n '18.3%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '6',\r\n '9%',\r\n '18.3%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n renderRegisterDisplayHighlights(\r\n 'main-lp2-entries-values',\r\n '7',\r\n '9%',\r\n '18.3%',\r\n '18%',\r\n '50.5%',\r\n ),\r\n ],\r\n }[menu][display]\r\n }\r\n \r\n setSimulationButtonDown(true)}\r\n onMouseUp={() => setSimulationButtonDown(false)}\r\n onBack={() => {\r\n history.push(`/overview/button`);\r\n }}\r\n menuItem={displays[menu][display]}\r\n onNext={() => {\r\n /* if (location.search.indexOf('nextIsExit=true') >= 0) {\r\n history.push(\r\n `/simulation/${displays[menu][display].exit}/1${\r\n displays[menu][display].exit !== 'main' ? '/data' : ''\r\n }`,\r\n );\r\n return;\r\n } */\r\n\r\n if (item) {\r\n history.push(`/simulation/${menu}/${nextDisplay + 1}/data`);\r\n } else {\r\n history.push(`/simulation/${menu}/${nextDisplay + 1}`);\r\n }\r\n }}\r\n {...(displays[menu][display].enter\r\n ? {\r\n onEnter: () =>\r\n history.push(\r\n `/simulation/${displays[menu][display].enter}/1${\r\n displays[menu][display].enter !== 'main' ? '/data' : ''\r\n }`,\r\n ),\r\n }\r\n : menu === 'main-lp1-entries' || menu === 'main-lp2-entries'\r\n ? {\r\n onEnter: () =>\r\n history.push(\r\n `/simulation/${displays[menu][display]}/1/data`,\r\n ),\r\n }\r\n : null)}\r\n {\r\n /*...(menu === 'main-lp1-entries' || menu === 'main-lp2-entries'\r\n ? {\r\n onExit: () =>\r\n history.push(\r\n `/simulation/${displays[menu][display].exit}/1/data?nextIsExit=true`,\r\n ), \r\n }\r\n : */\r\n ...(displays[menu][display].exit\r\n ? {\r\n onExit: () =>\r\n history.push(\r\n `/simulation/${displays[menu][display].exit}/1${\r\n displays[menu][display].exit !== 'main' ? '/data' : ''\r\n }`,\r\n ),\r\n }\r\n : null)\r\n }\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {altText}\r\n\r\n {!animationMatch && asset === 'overview' && renderOverviewElements()}\r\n {!animationMatch && asset === 'simulation' && renderSimulationElements()}\r\n\r\n {animationMatch && (\r\n setLoading(false)}\r\n onEnded={() => setAsset(animationMatch[2])}\r\n >\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.p`\r\n font-size: ${props => styleConstants.fontSizes[props.fontSize]};\r\n line-height: ${props => styleConstants.lineSpacings[props.lineSpacing]};\r\n ${props => props.align && `text-align: ${props.align};`}\r\n ${props => props.color && `color: ${props.color};`}\r\n`;\r\n\r\n/**\r\n * @param {{\r\n * fontSize: \"sm\" | \"md\" | \"lg\",\r\n * lineSpacing: \"md\" | \"lg\",\r\n * align: undefined | \"start\" | \"end\" | \"center\" | \"left\" | \"right\" | \"inherit\" | \"initial\" | \"justify\" | \"unset\",\r\n * color: string\r\n * }} Props\r\n */\r\nexport default ({\r\n fontSize = \"md\",\r\n lineSpacing = \"md\",\r\n color = \"#000\",\r\n align = undefined,\r\n children,\r\n ...otherProps\r\n}) => (\r\n \r\n {children}\r\n \r\n);\r\n","const breakpoints = [36, 50, 62, 75]; // in rem\r\n\r\nexport default {\r\n array: breakpoints,\r\n sm: breakpoints[0],\r\n md: breakpoints[1],\r\n lg: breakpoints[2],\r\n xl: breakpoints[3]\r\n};\r\n","import breakpoints from \"./breakpoints\";\r\n\r\nconst map = breakpoint => `@media (min-width: ${breakpoint}rem)`;\r\n\r\nexport default {\r\n sm: map(breakpoints.sm),\r\n md: map(breakpoints.md),\r\n lg: map(breakpoints.lg),\r\n xl: map(breakpoints.xl)\r\n};\r\n","import { css } from \"@emotion/core\";\r\nimport mq from \"./media-queries\";\r\n\r\nexport default {\r\n container: css`\r\n margin: 0 auto;\r\n padding: 0 1rem;\r\n box-sizing: border-box;\r\n width: 100%;\r\n ${mq.md} {\r\n width: 50rem;\r\n }\r\n `\r\n};\r\n","import { useState, useEffect, useCallback } from \"react\";\r\n\r\nexport default () => {\r\n const isClient = typeof window === \"object\";\r\n\r\n const getSize = useCallback(() => {\r\n return {\r\n width: isClient ? window.innerWidth : undefined,\r\n height: isClient ? window.innerHeight : undefined\r\n };\r\n }, [isClient]);\r\n\r\n const [windowSize, setWindowSize] = useState(getSize());\r\n\r\n useEffect(() => {\r\n if (!isClient) {\r\n return false;\r\n }\r\n\r\n function handleResize() {\r\n setWindowSize(getSize());\r\n }\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, [getSize, isClient]); // Empty array ensures that effect is only run on mount and unmount\r\n\r\n return windowSize;\r\n};\r\n","import React, { useRef, useEffect } from \"react\";\r\nimport { css } from \"@emotion/core\";\r\nimport styled from \"@emotion/styled\";\r\nimport AspectRatioBox from \"../../atoms/aspect-ratio-box/aspect-ratio-box\";\r\nimport Text from \"../../atoms/text/text\";\r\nimport layout from \"styles/layout\";\r\nimport mQ from \"styles/media-queries\";\r\nimport useWindowSize from \"utils/use-window-size\";\r\n\r\nconst Wrapper = styled.div`\r\n ${layout.container};\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst Main = styled.main`\r\n position: relative;\r\n margin-bottom: 2rem;\r\n`;\r\n\r\nconst Visualisation = styled.div`\r\n position: relative;\r\n width: 100%;\r\n z-index: -2;\r\n padding-left: 25%;\r\n ${mQ.sm} {\r\n position: absolute;\r\n padding-left: 0;\r\n }\r\n`;\r\n\r\nconst Content = styled.div`\r\n z-index: 5;\r\n width: 100%;\r\n transition: all 0.25s ease-in-out;\r\n ${mQ.sm} {\r\n box-sizing: border-box;\r\n width: 50%;\r\n padding: 6rem 2rem;\r\n float: right;\r\n }\r\n ${mQ.md} {\r\n padding: 10rem 2rem;\r\n }\r\n`;\r\n\r\nconst Buttons = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin: -0.5rem 0;\r\n`;\r\n\r\nconst Button = styled.div`\r\n padding: 0.5rem 0;\r\n`;\r\n\r\nexport default ({ header, text, buttons, setVisualisationPlaceholderRect }) => {\r\n const visualisationPlaceholderRef = useRef();\r\n const windowSize = useWindowSize();\r\n useEffect(() => {\r\n const visualisationRect = visualisationPlaceholderRef.current.getBoundingClientRect();\r\n const newVisualisationRect = {\r\n x: visualisationRect.left + window.pageXOffset,\r\n y: visualisationRect.top + window.pageYOffset,\r\n width: visualisationRect.width,\r\n height: visualisationRect.height,\r\n };\r\n setVisualisationPlaceholderRect(newVisualisationRect);\r\n }, [\r\n setVisualisationPlaceholderRect,\r\n visualisationPlaceholderRef,\r\n windowSize,\r\n ]);\r\n\r\n return (\r\n \r\n
{header}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {text}\r\n \r\n \r\n {buttons.map((b, i) => (\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.h1`\r\n color: ${styleConstants.colors.primary};\r\n text-align: center;\r\n font-size: 4rem;\r\n margin-bottom: 0.1em;\r\n`;\r\n\r\nexport default ({ children = \"Smart Meter\" }) => {children};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.h2`\r\n color: ${styleConstants.colors.primary};\r\n text-align: center;\r\n font-size: 2rem;\r\n :empty::after {\r\n /* normal line height when empty text */\r\n content: \".\";\r\n visibility: hidden;\r\n }\r\n`;\r\n\r\nexport default ({ children }) => {children};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport Title from \"../../atoms/title/title\";\r\nimport Subtitle from \"../../atoms/subtitle/subtitle\";\r\n\r\nconst Wrapper = styled.header`\r\n padding: 0.5rem 0;\r\n`;\r\n\r\nexport default ({ subtitle = \"\" }) => (\r\n \r\n \r\n <Subtitle>{subtitle}</Subtitle>\r\n </Wrapper>\r\n);\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.button`\r\n background-color: ${props =>\r\n props.primary\r\n ? styleConstants.colors.primary\r\n : styleConstants.colors.secondary};\r\n color: ${props => (props.primary ? \"#fff\" : styleConstants.colors.primary)};\r\n border-width: 0;\r\n border-radius: 2em;\r\n padding: 1em 2em;\r\n letter-spacing: ${styleConstants.letterSpacing.lg};\r\n text-align: center;\r\n text-transform: uppercase;\r\n font-weight: bold;\r\n\r\n width: ${props => (props.fluid ? \"100%\" : \"auto\")};\r\n\r\n :hover {\r\n background-color: ${props =>\r\n props.primary\r\n ? styleConstants.colors.primaryDark\r\n : styleConstants.colors.secondaryDark};\r\n }\r\n\r\n :active {\r\n background-color: ${props =>\r\n props.primary\r\n ? styleConstants.colors.primaryDarker\r\n : styleConstants.colors.secondaryDarker};\r\n }\r\n`;\r\n\r\nexport default ({ primary = false, fluid = false, onClick, children }) => (\r\n <Wrapper primary={primary} onClick={onClick} fluid={fluid}>\r\n {children}\r\n </Wrapper>\r\n);\r\n","import React from \"react\";\r\nimport Button from \"./button\";\r\nimport { withRouter } from \"react-router\";\r\n\r\nexport default withRouter(\r\n ({ primary = false, fluid = false, onClick, history, to, children }) => (\r\n <Button\r\n primary={primary}\r\n fluid={fluid}\r\n onClick={event => {\r\n onClick && onClick();\r\n history.push(to);\r\n }}\r\n >\r\n {children}\r\n </Button>\r\n )\r\n);\r\n","import React from \"react\";\r\nimport Template from \"../../templates/landing-page/landing-page\";\r\nimport Header from \"../../molecules/header/header\";\r\nimport LinkButton from \"../../atoms/button/link-button\";\r\n\r\nexport default ({ setVisualisationPlaceholderRect }) => {\r\n return (\r\n <Template\r\n header={<Header />}\r\n setVisualisationPlaceholderRect={setVisualisationPlaceholderRect}\r\n text={\r\n \"Der Smart Meter ist ein elektronischer Zähler, der Ihren alten Stromzähler ersetzt. Er misst, wie viel Strom Sie verbrauchen oder auch erzeugen, verschlüsselt diese Daten und sendet sie einmal täglich an den Netzbetreiber.\"\r\n }\r\n buttons={[\r\n <LinkButton to=\"/overview/button\" primary fluid>\r\n Interaktive Anleitung\r\n </LinkButton>\r\n // <LinkButton to=\"/menu\" fluid>\r\n // Zur Menü-Übersicht\r\n // </LinkButton>\r\n ]}\r\n />\r\n );\r\n};\r\n","import React, { useRef, useEffect, useState } from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { css } from \"@emotion/core\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport AbsoluteBox from \"../../atoms/absolute-box/absolute-box\";\r\nimport AspectRatioBox from \"../../atoms/aspect-ratio-box/aspect-ratio-box\";\r\nimport layout from \"styles/layout\";\r\nimport useWindowSize from \"utils/use-window-size\";\r\n\r\nconst Wrapper = styled.div`\r\n ${layout.container};\r\n display: flex;\r\n flex-direction: column;\r\n`;\r\n\r\nconst HeaderWrapper = styled.div`\r\n padding-top: 1rem;\r\n padding-bottom: 1rem;\r\n`;\r\n\r\nconst ExitLinkWrapper = styled.div`\r\n text-align: right;\r\n padding-bottom: 0.25rem;\r\n`;\r\n\r\nconst NavigationWrapper = styled.div`\r\n padding-bottom: 1.5rem;\r\n`;\r\n\r\nconst Main = styled.main`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n`;\r\n\r\nconst DetailsWrapper = styled.section`\r\n margin-top: 0;\r\n`;\r\n\r\nexport default ({\r\n exitLink,\r\n header,\r\n navigation,\r\n details,\r\n visualisationPlaceholderClearPercent,\r\n setVisualisationPlaceholderRect,\r\n}) => {\r\n const mainElementRef = useRef();\r\n const visualisationPlaceholderRef = useRef();\r\n const windowSize = useWindowSize(); // rerender when the window size changes\r\n const history = useHistory();\r\n const [\r\n visualisationPlaceholderOffset,\r\n setVisualisationPlaceholderOffset,\r\n ] = useState(0);\r\n\r\n useEffect(() => {\r\n const mainRect = mainElementRef.current.getBoundingClientRect();\r\n const visualisationRect = visualisationPlaceholderRef.current.getBoundingClientRect();\r\n const offset =\r\n mainRect.height -\r\n visualisationPlaceholderClearPercent * visualisationRect.height;\r\n offset !== visualisationPlaceholderOffset &&\r\n setVisualisationPlaceholderOffset(offset);\r\n const newVisualisationRect = {\r\n x: visualisationRect.left + window.pageXOffset,\r\n y: mainRect.top + offset + window.pageYOffset,\r\n width: visualisationRect.width,\r\n height: visualisationRect.height,\r\n };\r\n setVisualisationPlaceholderRect &&\r\n setVisualisationPlaceholderRect(newVisualisationRect);\r\n }, [\r\n mainElementRef,\r\n visualisationPlaceholderRef,\r\n setVisualisationPlaceholderRect,\r\n windowSize,\r\n history.location.pathname,\r\n visualisationPlaceholderClearPercent,\r\n visualisationPlaceholderOffset,\r\n ]);\r\n\r\n return (\r\n <Wrapper>\r\n <HeaderWrapper>{header}</HeaderWrapper>\r\n <Main ref={mainElementRef}>\r\n <ExitLinkWrapper>{exitLink}</ExitLinkWrapper>\r\n <NavigationWrapper>{navigation}</NavigationWrapper>\r\n <DetailsWrapper>{details}</DetailsWrapper>\r\n <AbsoluteBox\r\n width=\"100%\"\r\n css={css`\r\n z-index: -2;\r\n `}\r\n ref={visualisationPlaceholderRef}\r\n >\r\n <AspectRatioBox ratio={1}>\r\n <AbsoluteBox\r\n width=\"100%\"\r\n height=\"100%\"\r\n y={`${visualisationPlaceholderOffset}px`}\r\n css={css`\r\n margin-bottom: 3rem;\r\n `}\r\n />\r\n </AspectRatioBox>\r\n </AbsoluteBox>\r\n </Main>\r\n </Wrapper>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.nav`\r\n padding: 1.125rem 0;\r\n background-color: ${styleConstants.colors.secondary};\r\n text-align: center;\r\n color: ${styleConstants.colors.primary};\r\n text-transform: uppercase;\r\n font-size: ${styleConstants.fontSizes.lg};\r\n`;\r\n\r\nexport default ({ children }) => (\r\n <Wrapper>{children}</Wrapper>\r\n);\r\n","import React from 'react';\r\nimport styled from '@emotion/styled';\r\nimport Text from '../text/text';\r\nimport styleConstants from 'styles/constants';\r\n\r\nconst Wrapper = styled.div`\r\n width: 3rem;\r\n height: 3rem;\r\n background-color: ${styleConstants.colors.primary};\r\n border-radius: 50%;\r\n position: relative;\r\n text-align: center;\r\n`;\r\n\r\nconst LabelWrapper = styled.span`\r\n position: absolute;\r\n left: 0%;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 100%;\r\n text-align: center;\r\n display: inline-block;\r\n`;\r\n\r\nexport default ({ label, ...otherProps }) => (\r\n <Wrapper {...otherProps}>\r\n <LabelWrapper>\r\n <Text fontSize='lg' color='#fff'>\r\n {label}\r\n </Text>\r\n </LabelWrapper>\r\n </Wrapper>\r\n);\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nconst Wrapper = styled.h3`\r\n color: ${styleConstants.colors.primary};\r\n font-size: ${styleConstants.fontSizes.lg};\r\n margin-bottom: 0.5em;\r\n`;\r\n\r\nexport default ({ children, ...otherProps }) => (\r\n <Wrapper {...otherProps}>{children}</Wrapper>\r\n);\r\n","import React from 'react';\r\nimport { css } from '@emotion/core';\r\nimport { Fragment } from 'react';\r\nimport ButtonSprite from '../../atoms/button-sprite/button-sprite';\r\nimport Heading from '../../atoms/heading/heading';\r\nimport Text from '../../atoms/text/text';\r\n\r\nexport default ({ spriteLabel = '', title, description }) => (\r\n <Fragment>\r\n <ButtonSprite\r\n label={spriteLabel}\r\n css={css`\r\n margin: 0 auto 0.5rem;\r\n `}\r\n />\r\n <Heading\r\n css={css`\r\n text-align: center;\r\n `}\r\n >\r\n {title}\r\n </Heading>\r\n <Text>{description}</Text>\r\n </Fragment>\r\n);\r\n","import React from 'react';\r\nimport { css } from '@emotion/core';\r\nimport styled from '@emotion/styled';\r\nimport { Fragment } from 'react';\r\nimport Text from '../../atoms/text/text';\r\nimport ButtonInstruction from '../../molecules/button-instruction/button-instruction';\r\nimport mQ from 'styles/media-queries';\r\n\r\nconst InstructionsWrapper = styled.div`\r\n margin: 1rem -0.5rem 0;\r\n ${mQ.md} {\r\n width: 100%;\r\n margin: 0 -0.5rem 0 0;\r\n float: right;\r\n }\r\n`;\r\n\r\nconst InstructionWrapper = styled.div`\r\n width: 33.333%;\r\n padding: 0 0.5rem;\r\n margin-bottom: 2%;\r\n margin-top: 2%;\r\n box-sizing: border-box;\r\n float: left;\r\n text-align: center;\r\n ${mQ.md} {\r\n }\r\n`;\r\n\r\nexport default () => (\r\n <Fragment>\r\n <Text\r\n css={css`\r\n ${mQ.md} {\r\n display: inline-block;\r\n width: 100%;\r\n }\r\n `}\r\n >\r\n Mit dem grünen Druckknopf kann bspw. der Zählerstand angezeigt werden oder\r\n die aktuelle Gerätekonfiguration. Die Länge der Druckdauer bzw. der\r\n Doppeldruck bestimmt die Funktion. Sie können durch das Menü scrollen,\r\n einen Menüpunkt auswählen/bestätigen und im Untermenü des ausgewählten\r\n Punktes weiterscrollen. Ohne Knopfdruck rolliert der Zähler durch die\r\n Betriebsanzeige. Der Vertragstyp des Kunden ist entscheidend für die\r\n Anzeigen am Display!\r\n </Text>\r\n <InstructionsWrapper>\r\n <InstructionWrapper>\r\n <ButtonInstruction\r\n title='Knopf kurz drücken'\r\n description={\r\n <Fragment>\r\n - Menü-Ansicht\r\n <br />- Navigation im Menü\r\n </Fragment>\r\n }\r\n />\r\n </InstructionWrapper>\r\n <InstructionWrapper>\r\n <ButtonInstruction\r\n spriteLabel='2-5s'\r\n title='Knopf 2-5 Sekunden gedrückt halten'\r\n description='Menüpunkt auswählen'\r\n />\r\n </InstructionWrapper>\r\n <InstructionWrapper>\r\n <ButtonInstruction\r\n spriteLabel='2x'\r\n title='Knopf 2x schnell hintereinander drücken'\r\n description='Zurück zum Startbildschirm'\r\n />\r\n </InstructionWrapper>\r\n </InstructionsWrapper>\r\n </Fragment>\r\n);\r\n","import React from \"react\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faChevronRight } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nexport default props => <FontAwesomeIcon icon={faChevronRight} {...props} />;\r\n","import React from \"react\";\r\nimport { css } from \"@emotion/core\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Chevron from \"../../atoms/chevron/chevron\";\r\nimport Text from \"../../atoms/text/text\";\r\nimport styleConstants from \"styles/constants\";\r\n\r\nexport default ({ text, to }) => (\r\n <Link\r\n css={css`\r\n text-decoration: none;\r\n color: ${styleConstants.colors.primary};\r\n `}\r\n to={to}\r\n >\r\n <Text color={styleConstants.colors.primary}>\r\n {text}\r\n <Chevron\r\n css={css`\r\n padding-left: 0.5em;\r\n vertical-align: middle;\r\n font-size: 1.5em;\r\n `}\r\n />\r\n </Text>\r\n </Link>\r\n);\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useRouteMatch } from 'react-router-dom';\r\nimport Template from '../../templates/general/general';\r\nimport Header from '../../molecules/header/header';\r\nimport Navigation from '../../molecules/nav/nav';\r\nimport ButtonDetails from '../../organisms/button-details/button-details';\r\nimport Text from '../../atoms/text/text';\r\nimport ExitLink from '../../molecules/exit-link/exit-link';\r\nimport counterStatusGraphic from '../../molecules/visualisation/assets/simulation/smartmeter_counterstatus.gif';\r\n\r\nexport default ({ setVisualisationPlaceholderRect }) => {\r\n const match = useRouteMatch('/overview/:element');\r\n const routeElement = match?.params?.element;\r\n\r\n const [element, setElement] = useState(routeElement);\r\n useEffect(() => {\r\n if (routeElement && routeElement !== element) {\r\n setElement(routeElement);\r\n }\r\n }, [routeElement, element]);\r\n\r\n const displayedElement = routeElement || element;\r\n\r\n return (\r\n <Template\r\n exitLink={<ExitLink text='Beenden' to='/' />}\r\n header={<Header subtitle='Geräte-Übersicht' />}\r\n navigation={\r\n <Navigation>\r\n {\r\n {\r\n button: 'Druckknopf Menü',\r\n breaker: 'Druckknopf Einschaltung/Breaker',\r\n diodes: 'Leuchtdioden',\r\n data: 'Technische Daten',\r\n registers: 'Registerübersicht',\r\n type: 'Zählertyp',\r\n serial: 'Zählernummer',\r\n certification: 'Zählerzulassungen',\r\n vendor: 'Lieferfirma/-standort',\r\n badge: 'Eichplakette',\r\n icon: 'Breaker',\r\n display: 'Display',\r\n plc: 'Art der Datenübertragung',\r\n }[displayedElement]\r\n }\r\n </Navigation>\r\n }\r\n details={\r\n {\r\n button: <ButtonDetails />,\r\n breaker: (\r\n <Text as='div'>\r\n Der graue Druckknopf dient zur (Wieder)Einschaltung der Anlage\r\n nach Freigabe durch die Energienetze Steiermark (Breaker\r\n Schaltung). Sie werden telefonisch über den Zeitraum der\r\n Einschaltung informiert und schalten nach erfolgter Freigabe die\r\n Anlage mit einem Knopfdruck (wieder) ein. <br />\r\n Vor einer Einschaltung muss die Anlage aus der Ferne vom\r\n Netzbetreiber auf wiedereinschaltbereit gesetzt werden. Ist der\r\n Zähler bereit für den Wiederaufbau der\r\n Verbindung/Wiedereinschaltung, blinkt das Quadrat am linken\r\n Displayrand:\r\n <div style={{ textAlign: 'center', margin: '2%' }}>\r\n <img\r\n src={counterStatusGraphic}\r\n alt='counterStatusGraphic'\r\n width='6%'\r\n />\r\n </div>\r\n </Text>\r\n ),\r\n diodes: (\r\n <Text>\r\n Nur die linke Leuchtdiode ist aktiv. Sie zeigt die Wirkenergie an.\r\n </Text>\r\n ),\r\n icon: (\r\n <Text>\r\n Vor einer Einschaltung muss die Anlage aus der Ferne vom\r\n Netzbetreiber auf wiedereinschaltbereit gesetzt werden. Ist der\r\n Zähler bereit für denn Wiederaufbau der\r\n Verbindung/Wiedereinschaltung, blinkt das Quadrat am linken\r\n Displayrand: Sie werden telefonisch über den Zeitraum der\r\n Einschaltung informiert und schalten nach erfolgter Freigabe die\r\n Anlage mit einem Knopfdruck (wieder) ein.\r\n </Text>\r\n ),\r\n data: (\r\n <Text>\r\n Angabe zu den technischen Voraussetzungen und Einsatzbedingungen\r\n für die Nutzung des Zählers.\r\n </Text>\r\n ),\r\n registers: (\r\n <Text>\r\n Auf dem Zähler aufgedruckt, sind jene Register, die für den\r\n Gesetzgeber relevant sind. Es können mehr Register sein als im\r\n rollierenden Display angezeigt werden, weil der Kunde am\r\n rollierenden Display nur jene Register sieht, die für seinen Tarif\r\n relevant sind.\r\n </Text>\r\n ),\r\n badge: (\r\n <Text>\r\n Diese Plakette wird nach erfolgreicher Überprüfung der\r\n Messgenauigkeit von einer Eichstelle vergeben, die vom\r\n österreichischen Bundesamt für Mess- und Eichtechnik dazu\r\n ermächtigt ist.\r\n </Text>\r\n ),\r\n type: (\r\n <Text as='div'>\r\n <p>Gibt an, um welche Zählerart es sich handelt, z.B.:</p>\r\n <ul>\r\n <li>ZMXi3: Drehstromzähler</li>\r\n <li>ZCXi1: Wechselstromzähler</li>\r\n </ul>\r\n </Text>\r\n ),\r\n vendor: <Text>Angaben zum Hersteller des Zählers.</Text>,\r\n serial: (\r\n <Text>\r\n Eindeutige Identifikationsnummer (Seriennummer) vom Hersteller,\r\n wodurch die Zuordnung des Geräts ermöglicht wird.\r\n </Text>\r\n ),\r\n display: (\r\n <Text>\r\n Auf dem Display sind unterschiedliche Anzeigen zu Leistung, Bezug,\r\n Lieferung und der Parametrierung ersichtlich. Wenn der Zahler zum\r\n Einschalten bereit ist, wird am Display{' '}\r\n <div style={{ textAlign: 'center', margin: '2%' }}>\r\n <img\r\n src={counterStatusGraphic}\r\n alt='counterStatusGraphic'\r\n width='3%'\r\n />\r\n </div>\r\n angezeigt. Dem derzeit angezeigten Display können beispielsweise\r\n Verbraucherinformationen zum Konfigurationstypen des Zählers\r\n entnommen werden.\r\n </Text>\r\n ),\r\n certification: (\r\n <Text>\r\n Kennzeichnung, dass der Zähler den europäischen und\r\n österreichischen Richtlinien (u.a. BEV) entspricht.\r\n </Text>\r\n ),\r\n plc: (\r\n <Text>\r\n Die Art der Datenübertragung, die mit diesem Zähler möglich ist,\r\n wird am Zähler angezeigt. PLC bedeutet, dass die Daten vom Zähler\r\n via Stromleitung (Power Line) zur Trafostation übertragen werden.\r\n </Text>\r\n ),\r\n }[displayedElement]\r\n }\r\n setVisualisationPlaceholderRect={\r\n routeElement && setVisualisationPlaceholderRect\r\n }\r\n visualisationPlaceholderClearPercent={0.1}\r\n />\r\n );\r\n};\r\n","import React from \"react\";\r\nimport Chevron from \"../../atoms/chevron/chevron\";\r\nimport { css } from \"@emotion/core\";\r\n\r\nexport default ({ path }) => (\r\n <React.Fragment>\r\n {path &&\r\n Array.isArray(path) &&\r\n path.reduce((p, c) => (\r\n <React.Fragment>\r\n {p}\r\n <Chevron\r\n css={css`\r\n padding: 0 0.25em;\r\n `}\r\n />\r\n {c}\r\n </React.Fragment>\r\n ))}\r\n </React.Fragment>\r\n);\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport { css } from \"@emotion/core\";\r\nimport Chevron from \"../../atoms/chevron/chevron\";\r\n\r\nconst Wrapper = styled.span`\r\n margin: 0 0.1em;\r\n`;\r\n\r\nexport default ({ count, ...rest }) => {\r\n const chevrons = [];\r\n for (let i = 0; i < count; ++i) {\r\n chevrons.push(\r\n <Chevron\r\n key={i}\r\n css={css`\r\n margin: 0 -0.1em;\r\n `}\r\n {...rest}\r\n />\r\n );\r\n }\r\n\r\n return <Wrapper>{chevrons}</Wrapper>;\r\n};\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport Heading from \"../../atoms/heading/heading\";\r\nimport Text from \"../../atoms/text/text\";\r\nimport Chevrons from \"../chevrons/chevrons\";\r\nimport mQ from \"styles/media-queries\";\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n margin: 0 -0.25rem;\r\n padding-left: 0.5rem;\r\n ${mQ.md} {\r\n margin: 0 -0.5rem;\r\n padding-left: 1rem;\r\n }\r\n`;\r\n\r\nconst IconWrapper = styled.div`\r\n flex: 0 0 auto;\r\n padding: 0 0.25rem;\r\n ${mQ.md} {\r\n padding: 0 0.5rem;\r\n }\r\n`;\r\n\r\nconst InstructionWrapper = styled.div`\r\n flex-grow: 1;\r\n padding: 0 0.25rem;\r\n ${mQ.md} {\r\n padding: 0 0.5rem;\r\n }\r\n`;\r\n\r\nexport default ({ title, description }) => (\r\n <Wrapper>\r\n <IconWrapper>\r\n <Heading>\r\n <Chevrons count={3} />\r\n </Heading>\r\n </IconWrapper>\r\n <InstructionWrapper>\r\n <Heading>{title}</Heading>\r\n <Text fontSize=\"sm\">{description}</Text>\r\n </InstructionWrapper>\r\n </Wrapper>\r\n);\r\n","import React from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport Instruction from \"../../molecules/simulation-instruction/simulation-instruction\";\r\nimport mQ from \"styles/media-queries\";\r\n\r\nconst InstructionsWrapper = styled.div`\r\n margin: 1rem 0 0;\r\n ${mQ.sm} {\r\n margin: 1rem -0.5rem 0;\r\n }\r\n ${mQ.md} {\r\n margin: 1rem -1rem 0;\r\n }\r\n`;\r\n\r\nconst InstructionWrapper = styled.div`\r\n display: inline-block;\r\n box-sizing: border-box;\r\n padding: 0.5rem 0;\r\n ${mQ.sm} {\r\n width: 50%;\r\n padding: 0.5 0.5rem;\r\n }\r\n ${mQ.md} {\r\n width: 33.333333%;\r\n padding: 0 1rem;\r\n }\r\n`;\r\n\r\nexport default ({ data }) => (\r\n <InstructionsWrapper>\r\n {data &&\r\n Array.isArray(data) &&\r\n data.map((v, i) => (\r\n <InstructionWrapper>\r\n <Instruction title={v.title} description={v.description} />\r\n </InstructionWrapper>\r\n ))}\r\n </InstructionsWrapper>\r\n);\r\n","import React from 'react';\r\nimport Text from '../../atoms/text/text';\r\nimport Instructions from '../../organisms/simulation-instructions/simulation-instructions';\r\n\r\nexport default ({ description }) => (\r\n <React.Fragment>\r\n <Text fontSize='lg' lineSpacing='lg'>\r\n {description}\r\n </Text>\r\n <Instructions\r\n data={[\r\n {\r\n title: 'Zum nächsten Menüpunkt',\r\n description:\r\n 'Um zum nächsten Punkt des Menüs zu navigieren, muss der Druckknopf kurz betätigt werden.',\r\n },\r\n {\r\n title: 'Menüpunkt auswählen',\r\n description:\r\n 'Wird der Knopf länger als 2 Sekunden lang gedrückt, kommt man in das Untermenü des gerade ausgewählten Menüpunktes.',\r\n },\r\n {\r\n title: 'Zurück in die Betriebsanzeige',\r\n description:\r\n 'Wird der Knopf zweimal kurz hintereinander gedrückt, kommt man in die Betriebsanzeige zurück.',\r\n },\r\n ]}\r\n />\r\n </React.Fragment>\r\n);\r\n","import React from \"react\";\r\nimport Text from \"../../atoms/text/text\";\r\nimport Heading from \"../../atoms/heading/heading\";\r\n\r\nexport default ({ heading, description, instructions }) => (\r\n <React.Fragment>\r\n <Heading>{heading}</Heading>\r\n <Text\r\n fontSize=\"lg\"\r\n lineSpacing=\"lg\"\r\n {...(typeof description !== \"string\" && { as: \"div\" })}\r\n >\r\n {description}\r\n </Text>\r\n {instructions}\r\n </React.Fragment>\r\n);\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useRouteMatch, useLocation } from 'react-router-dom';\r\nimport Template from '../../templates/general/general';\r\nimport Header from '../../molecules/header/header';\r\nimport Navigation from '../../molecules/nav/nav';\r\nimport ExitLink from '../../molecules/exit-link/exit-link';\r\nimport Breadcrumbs from '../../molecules/breadcrumbs/breadcrumbs';\r\nimport MenuDetails from '../../organisms/simulation-menu/simulation-menu';\r\nimport DisplayDetails from '../../organisms/simulation-display/simulation-display';\r\nimport Instructions from '../../organisms/simulation-instructions/simulation-instructions';\r\n\r\nexport default ({ setVisualisationPlaceholderRect }) => {\r\n const routeMatch = useRouteMatch('/simulation/:menu/:display');\r\n const displayRouteMatch = useRouteMatch(\r\n '/simulation/:menu/:display/:element',\r\n );\r\n const location = useLocation();\r\n\r\n const routePath = [\r\n routeMatch?.params?.menu,\r\n routeMatch?.params?.display &&\r\n parseInt(routeMatch?.params?.display, 10) - 1,\r\n displayRouteMatch?.params?.element,\r\n ];\r\n\r\n const [path, setPath] = useState(['main', 0, undefined]);\r\n\r\n useEffect(() => {\r\n if (\r\n (routePath[0] && routePath[0] !== path[0]) ||\r\n (routePath[1] && routePath[1] !== path[1]) ||\r\n (routePath[2] && routePath[2] !== path[2])\r\n ) {\r\n setPath(routePath);\r\n }\r\n }, [path, routePath]);\r\n\r\n const activePath = [\r\n routePath[0] != null ? routePath[0] : path[0],\r\n routePath[1] != null ? routePath[1] : path[1],\r\n routePath[2] != null ? routePath[2] : path[2],\r\n ];\r\n\r\n const renderDisplayDetails = () => {\r\n const energySupplyDescription =\r\n 'Bezug bedeutet, dass der Kunde an den Energieversorger liefert.';\r\n const energyReceiptDescription =\r\n ' Lieferung bedeutet, dass der Energieversorger Energie an die KundInnen liefert.';\r\n\r\n const displayDetails = {\r\n indexField: {\r\n heading: 'OBIS Code',\r\n description:\r\n 'In der unteren Reihe links befindet sich der ID Bereich, dieser zeigt den OBIS-Code oder einen anderen Indifikator an.',\r\n },\r\n quadrant: {\r\n heading: 'Quadrantenbereich',\r\n description:\r\n 'Der Quadrantenbereich zeigt den Energiefluss Lieferung/Bezug sowie Blind- und Wirkenergie an.',\r\n },\r\n tariff: {\r\n heading: 'Tarifanzeige',\r\n description:\r\n 'Die Tarifanzeige zeigt den aktuellen aktiven Tarifindex an. Die Anzeige erfolgt immer unabhängig von der gewählten Menüführung. Die möglichen Anzeigen sind: T1 oder T2. Dies ist von der aktuellen Uhrzeit abhängig ist. Bspw. T1 = 6:00-22:00 Uhr und T2 = 22:00-6:00 Uhr.',\r\n },\r\n data: {\r\n headings: {\r\n 'main-standard': [\r\n 'Testbildschirm',\r\n 'Wirkenergie Lieferung (+A)',\r\n 'Wirkenergie Lieferung (+A) Rate 1',\r\n 'Wirkenergie Lieferung (+A) Rate 2',\r\n 'Wirkenergie Bezug (-A)',\r\n 'Wirkenergie Bezug (-A) Rate 1',\r\n 'Wirkenergie Bezug (-A) Rate 2',\r\n 'Systemzeit Uhrzeit',\r\n 'Systemzeit Datum',\r\n 'Benutzernachrichtentext - Verbraucherinformationen',\r\n 'Benutzernachrichtentext - Verbraucherinformationen',\r\n 'Fehlercode',\r\n ],\r\n 'main-mid': [\r\n 'Wirkenergie Lieferung (+A)',\r\n 'Wirkenergie Bezug (-A)',\r\n 'MID Prüfsumme',\r\n 'Firmware Version',\r\n 'Fehlercode',\r\n 'Wirkenergie Lieferung (+A) Rate 1',\r\n 'Wirkenergie Lieferung (+A) Rate 2',\r\n 'Wirkenergie Bezug (-A) Rate 1',\r\n 'Wirkenergie Bezug (-A) Rate 2',\r\n ],\r\n 'main-profiles': [\r\n 'Lastprofil 1',\r\n 'Lastprofil 2',\r\n 'Wirkenergie Lieferung (+A) Tarif 1 Abrechnungswert',\r\n ],\r\n 'main-lp1': Array.from({ length: 9 }, (v, i) => [\r\n 'Zeitstempel des Eintrages',\r\n ]).flat(),\r\n 'main-lp1-entries': Array.from({ length: 9 }, (v, i) => [\r\n 'Zeitstempel',\r\n ]).flat(),\r\n 'main-lp2': Array.from({ length: 9 }, (v, i) => [\r\n 'Zeitstempel',\r\n ]).flat(),\r\n 'main-lp2-entries': ['Zeitstempel', null],\r\n 'main-lp1-entries-values': [\r\n 'Profilstatus',\r\n 'Wirkenergie Lieferung (+A)',\r\n 'Wirkenergie Bezug (-A)',\r\n 'Blindenergie Lieferung(+R)',\r\n 'Blindenergie Bezug(-R)',\r\n ],\r\n 'main-lp2-entries-values': [\r\n 'Profilstatus',\r\n 'Wirkenergie Lieferung (+A)',\r\n 'Wirkenergie Lieferung (+A) Rate 1',\r\n 'Wirkenergie Lieferung (+A) Rate 2',\r\n 'Wirkenergie Bezug (-A)',\r\n 'Wirkenergie Bezug (-A) Rate 1',\r\n 'Wirkenergie Bezug (-A) Rate 2',\r\n ],\r\n },\r\n descriptions: {\r\n 'main-standard': Array.from({ length: 13 }, (v, i) =>\r\n i === 0 ? (\r\n 'Testbildschirm der Standard-Anzeige. Für die Anzeige der Register bitte kurz weiterdrücken.'\r\n ) : i >= 1 && i <= 3 ? (\r\n energyReceiptDescription\r\n ) : i >= 4 && i <= 6 ? (\r\n energySupplyDescription\r\n ) : i === 9 || i === 10 ? (\r\n <div>\r\n <p>\r\n Verbraucherinformationen zum Konfigurationstypen des Zählers.\r\n Folgende Anzeigen sind möglich:\r\n </p>\r\n <ul>\r\n <li>\r\n <em>IME – Opt In:</em> 15-Minuten-Werte bis zum Vortag,\r\n Tages-, Wochen- und Monatswerte sowie Werte aus der\r\n Einspeisung bei einer vorhandenen Photovoltaikanlage, 60\r\n Tage Speicherung im Zähler\r\n </li>\r\n <li>\r\n <em>IMS – Standard:</em> Täglicher Gesamtverbrauchswert, 60\r\n Tage Speicherung im Zähler, Tagesverbrauchsdaten über das\r\n Kundenportal abrufbar\r\n </li>\r\n <li>\r\n <em> DSZ – Opt Out:</em> Keine Datenübertragung, keine\r\n Speicherung im Zähler, Jahreswert über das Kundenportal\r\n abrufbar\r\n </li>\r\n </ul>\r\n </div>\r\n ) : null,\r\n ),\r\n 'main-mid': Array.from({ length: 18 }, (v, i) =>\r\n i === 0 || i === 5 || i === 6\r\n ? energyReceiptDescription\r\n : i === 1 || i === 7 || i === 8\r\n ? energySupplyDescription\r\n : null,\r\n ),\r\n\r\n 'main-lp1': Array.from(\r\n { length: 9 },\r\n (v, i) =>\r\n 'Bei einem realen Smart Meter werden die Einträge der letzten 60 Tage angezeigt, sofern ein Wert enthalten ist. Mit einem 2-5 Sekunden langen Druck können die 15 Minuten Intervalle für das ausgewählte Datum angezeigt werden.',\r\n ),\r\n 'main-lp1-entries': Array.from(\r\n { length: 9 },\r\n (v, i) =>\r\n 'Eintrag des gewählten Lastprofil 1 Intervalls. Bei einem realen Smart Meter ändern sich diese Werte abhängig vom gewählten Intervall.',\r\n ),\r\n 'main-lp1-entries-values': Array.from({ length: 12 }, (v, i) =>\r\n i === 1\r\n ? energyReceiptDescription\r\n : i === 2\r\n ? energySupplyDescription\r\n : null,\r\n ),\r\n 'main-lp2-entries-values': Array.from({ length: 12 }, (v, i) =>\r\n i >= 1 && i <= 3\r\n ? energyReceiptDescription\r\n : i >= 4 && i <= 6\r\n ? energySupplyDescription\r\n : null,\r\n ),\r\n 'main-lp2': Array.from({ length: 9 }, (v, i) =>\r\n i <= 9\r\n ? 'Bei einem realen Smart Meter werden die Einträge der letzten 60 Tage angezeigt, sofern ein Wert enthalten ist. Mit einem 2-5 Sekunden langen Druck können die Registerstände im 24h Intervall angezeigt werden.'\r\n : null,\r\n ),\r\n 'main-lp2-entries': Array.from({ length: 2 }, (v, i) =>\r\n i === 0\r\n ? 'Eintrag des gewählten Lastprofil 1 Intervalls. Bei einem realen Smart Meter ändern sich diese Werte abhängig vom gewählten Intervall.'\r\n : null,\r\n ),\r\n },\r\n },\r\n phase: {\r\n heading: 'Phasenanzeige',\r\n description:\r\n 'Je nach Zählerart gibt es bis zu drei Phasenpräsenzindikatoren, einer pro Phase. Diese Indikatoren werden in den Positionen 1, 2 und 3 angezeigt. Für jede Phase wird die entsprechende Phasenanzeige dargestellt.',\r\n },\r\n connection: {\r\n heading: 'Verbindungsanzeige',\r\n description: (\r\n <div>\r\n <p>\r\n Kein Pfeil bedeutet, dass die PLC-Kommunikation nicht möglich ist.\r\n </p>\r\n <p>\r\n Wird ein Pfeil angezeigt, bedeutet es, dass eine PLC-Kommunikation\r\n möglich ist.\r\n </p>\r\n </div>\r\n ),\r\n },\r\n obisunit: {\r\n heading: 'Aktuelle Einheit laut OBIS-Code',\r\n description: <div></div>,\r\n },\r\n breaker: {\r\n heading: 'Breaker Zustand',\r\n description:\r\n 'Bei (Wieder)Einschaltung der Anlage nach Freigabe durch die Energienetze Steiermark (Breaker Schaltung) werden Sie telefonisch über den Zeitraum der Einschaltung informiert und schalten nach erfolgter Freigabe die Anlage mit einem Knopfdruck (wieder) ein.',\r\n },\r\n pc: {\r\n heading: 'Verbindungstyp',\r\n description:\r\n 'Der Indikator des Verbindungstyps zeigt an, ob der Zähler eine PLC - Kommunikation verwendet. P für PLC Typ, C für Kommunikationsbereitschaft.',\r\n },\r\n };\r\n\r\n const enterable =\r\n activePath[0] === 'main-lp1' ||\r\n activePath[0] === 'main-lp2' ||\r\n activePath[0] === 'main-lp2-entries' ||\r\n activePath[0] === 'main-lp1-entries';\r\n\r\n const instructions = (\r\n <Instructions\r\n data={[\r\n ...(location.search.indexOf('nextIsExit=true') < 0\r\n ? [\r\n {\r\n title: 'Zum nächsten Display',\r\n description:\r\n 'Um zum nächsten Display des Untermenüs zu navigieren, muss der Druckknopf kurz betätigt werden.',\r\n },\r\n ]\r\n : []),\r\n ...(enterable\r\n ? [\r\n {\r\n title: 'Menüpunkt auswählen',\r\n description:\r\n 'Wird der Knopf länger als 2 Sekunden lang gedrückt, kommt man in das Untermenü des gerade ausgewählten Menüpunktes.',\r\n },\r\n ]\r\n : []),\r\n\r\n ...(activePath[0] === 'main-standard' ||\r\n activePath[0] === 'main-mid' ||\r\n activePath[0] === 'main-profiles'\r\n ? [\r\n {\r\n title: 'Zurück zum Anzeigemenü',\r\n description:\r\n 'Wird der Druckknopf am End-Display länger als 2 Sekunden lang gedrückt, kommt man zum Anzeigemenü zurück.',\r\n },\r\n ]\r\n : []),\r\n\r\n ...(activePath[0] === 'main-lp1-entries-values' ||\r\n activePath[0] === 'main-lp2-entries-values'\r\n ? [\r\n {\r\n title: 'Zurück zum vorherigen Menü',\r\n description:\r\n 'Wird der Druckknopf am End-Display länger als 2 Sekunden lang gedrückt, kommt man zum vorherigen Menü zurück.',\r\n },\r\n ]\r\n : []),\r\n {\r\n title: 'Zurück in die Betriebsanzeige',\r\n description:\r\n 'Wird der Knopf zweimal kurz hintereinander gedrückt, kommt man in die Betriebsanzeige zurück.',\r\n },\r\n ]}\r\n />\r\n );\r\n\r\n if (!activePath[2]) {\r\n return <DisplayDetails instructions={instructions} />;\r\n }\r\n\r\n const elementDetails = displayDetails[activePath[2]];\r\n let heading = elementDetails.heading;\r\n if (!heading) {\r\n const headings = elementDetails.headings[activePath[0]];\r\n heading = Array.isArray(headings) ? headings[activePath[1]] : headings;\r\n }\r\n\r\n let description = elementDetails.description;\r\n if (!description) {\r\n const descriptions = elementDetails.descriptions[activePath[0]];\r\n description = Array.isArray(descriptions)\r\n ? descriptions[activePath[1]]\r\n : descriptions;\r\n }\r\n\r\n return (\r\n <DisplayDetails\r\n {...{\r\n heading: heading,\r\n description: description,\r\n }}\r\n instructions={instructions}\r\n />\r\n );\r\n };\r\n\r\n const createDisplayTitles = (count) => {\r\n const titles = [];\r\n\r\n for (let i = 0; i < count + 1; ++i) {\r\n i < count ? titles.push(`Display ${i + 1}/${count}`) : titles.push(`End`);\r\n }\r\n\r\n return titles;\r\n };\r\n\r\n const createLoadProfileTitles = () => {\r\n const titles = [];\r\n let i = 0;\r\n for (; i < 4; ++i) {\r\n titles.push(`Display ${i + 1}/60`);\r\n }\r\n ++i;\r\n titles.push(`Displays 5-56/60`);\r\n for (; i < 9; ++i) {\r\n titles.push(`Display ${60 - 9 + i + 1}/60`);\r\n }\r\n\r\n titles.push(`End`);\r\n\r\n return titles;\r\n };\r\n\r\n const createLoadProfile1EntryTitles = () => {\r\n const titles = [];\r\n let i = 0;\r\n for (; i <= 3; ++i) {\r\n titles.push(`Display ${i + 1}/95`);\r\n }\r\n titles.push(`Displays 5-91/95`);\r\n\r\n for (; i < 8; ++i) {\r\n titles.push(`Display ${87 + i + 1}/95`);\r\n }\r\n\r\n titles.push(`End`);\r\n\r\n return titles;\r\n };\r\n\r\n const createProfile1EntryValueTitle = () => {\r\n const titles = [];\r\n let i = 0;\r\n\r\n for (; i < 5; ++i) {\r\n titles.push(`Display ${i + 1}/5`);\r\n }\r\n\r\n titles.push(`End`);\r\n\r\n return titles;\r\n };\r\n\r\n const createProfile2EntryValueTitle = () => {\r\n const titles = [];\r\n let i = 0;\r\n for (; i < 7; ++i) {\r\n titles.push(`Display ${i + 1}/7`);\r\n }\r\n\r\n titles.push(`End`);\r\n\r\n return titles;\r\n };\r\n\r\n return (\r\n <Template\r\n exitLink={\r\n <ExitLink text='Zurück zur Geräte-Übersicht' to='/overview/button' />\r\n }\r\n header={<Header subtitle='Simulation' />}\r\n navigation={\r\n <Navigation>\r\n <Breadcrumbs\r\n path={[\r\n ...{\r\n main: ['Anzeigemenü'],\r\n 'main-standard': ['Anzeigemenü', 'Standard-Anzeige'],\r\n 'main-mid': ['Anzeigemenü', 'MID Datenliste'],\r\n 'main-profiles': ['Anzeigemenü', 'Profilliste'],\r\n 'main-lp1': ['Hauptmenü', 'Profilliste', 'Lastprofil 1'],\r\n 'main-lp1-entries': [\r\n 'Hauptmenü',\r\n 'Profilliste',\r\n 'Lastprofil 1',\r\n 'dd.mm.yyyy',\r\n ],\r\n 'main-lp1-entries-values': [\r\n 'Hauptmenü',\r\n 'Profilliste',\r\n 'Lastprofil 1',\r\n 'dd.mm.yyyy',\r\n 'Werte',\r\n ],\r\n 'main-lp2': ['Hauptmenü', 'Profilliste', 'Lastprofil 2'],\r\n 'main-lp2-entries': [\r\n 'Hauptmenü',\r\n 'Profilliste',\r\n 'Lastprofil 2',\r\n 'dd.mm.yyyy',\r\n ],\r\n 'main-lp2-entries-values': [\r\n 'Hauptmenü',\r\n 'Profilliste',\r\n 'Lastprofil 2',\r\n 'dd.mm.yyyy',\r\n 'Werte',\r\n ],\r\n }[activePath[0]],\r\n {\r\n main: [\r\n 'Standard-Anzeige',\r\n 'MID Datenliste',\r\n 'Profilliste',\r\n 'End',\r\n ],\r\n\r\n 'main-standard': createDisplayTitles(12),\r\n 'main-mid': createDisplayTitles(9),\r\n 'main-profiles': createDisplayTitles(2),\r\n 'main-lp1': createLoadProfileTitles(),\r\n 'main-lp1-entries': createLoadProfile1EntryTitles(),\r\n 'main-lp1-entries-values': createProfile1EntryValueTitle(),\r\n 'main-lp2': createLoadProfileTitles(),\r\n 'main-lp2-entries': createDisplayTitles(1),\r\n 'main-lp2-entries-values': createProfile2EntryValueTitle(),\r\n }[activePath[0]][activePath[1]],\r\n ]}\r\n />\r\n </Navigation>\r\n }\r\n details={\r\n activePath[0] === 'main' ? (\r\n <MenuDetails\r\n description={\r\n [\r\n 'Die Daten in der Standard Anzeige sind ähnlich denen in der Betriebsanzeige (Energieregister, Zeitdaten, Kundenmeldungen, Fehlermeldungen).',\r\n 'Zeigt zusätzlich jene Register, die aufgrund gesetzlicher Vorgaben angezeigt werden müssen, aber teilweise für die Verrechnung des Kunden nicht relevant sind.',\r\n 'Im Menüpunkt Profile befinden sich das Lastprofil 1 mit den 1/4h Werten (P.1.0) sowie das Lastprofil 2 mit den Tageswerte (P.2.0). Die Anzeige der Werte muss zuvor vom Netzbetreiber, auf Wunsch des Kunden, freigeschalten werden. Einfach im Kundenportal unter https://portal.e-netze.at/ registrieren und unter Daten und Anschlussobjektdaten die gewünschte Anlage auswählen und beim Punkt Gerätebeschreibung die Anzeige aktivieren.',\r\n ][activePath[1]]\r\n }\r\n />\r\n ) : activePath[0] === 'main-profiles' ? (\r\n <MenuDetails\r\n description={\r\n [\r\n 'Das Lastprofil 1 zeigt die 15 Minuten-Werte der letzten 60 Tage an. Die Anzeige muss auf Anfrage des Kunden vom Netzbetreiber freigeschalten werden.',\r\n 'Das Lastprofil 2 zeigt die Werte der letzten 60 Tage an. Die Anzeige muss auf Anfrage des Kunden vom Netzbetreiber freigeschalten werden.',\r\n ][activePath[1]]\r\n }\r\n />\r\n ) : (\r\n renderDisplayDetails()\r\n )\r\n }\r\n setVisualisationPlaceholderRect={\r\n routeMatch && setVisualisationPlaceholderRect\r\n }\r\n visualisationPlaceholderClearPercent={0.22}\r\n />\r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport styled from \"@emotion/styled\";\r\nimport GlobalStyle from \"styles/global\";\r\nimport { BrowserRouter, MemoryRouter, Route } from \"react-router-dom\";\r\nimport { CSSTransition } from \"react-transition-group\";\r\n\r\nimport Visualisation from \"./components/molecules/visualisation/visualisation\";\r\n\r\nimport LandingPage from \"./components/pages/landing-page/landing-page\";\r\nimport OverviewPage from \"./components/pages/overview/overview\";\r\nimport SimulationPage from \"./components/pages/simulation/simulation\";\r\n\r\nconst RoutesWrapper = styled.div`\r\n position: relative;\r\n`;\r\n\r\nconst PageWrapper = styled.div`\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n transition: opacity\r\n ${({ transitionDuration }) => `${transitionDuration || 0}ms`} ease-in-out;\r\n\r\n &.fade-enter {\r\n opacity: 0;\r\n }\r\n &.fade-enter-active {\r\n opacity: 1;\r\n transition-delay: ${({ enterDelay }) => `${enterDelay || 0}ms`};\r\n }\r\n &.fade-exit {\r\n opacity: 1;\r\n }\r\n &.fade-exit-active {\r\n opacity: 0;\r\n }\r\n`;\r\n\r\nfunction App() {\r\n const [\r\n visualisationPlaceholderRect,\r\n setVisualisationPlaceholderRect\r\n ] = useState();\r\n\r\n let Router = MemoryRouter;\r\n if (!process.env.NODE_ENV || process.env.NODE_ENV === \"development\") {\r\n Router = BrowserRouter;\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <GlobalStyle />\r\n <Router>\r\n <Visualisation placeholderRect={visualisationPlaceholderRect} />\r\n <RoutesWrapper>\r\n <Route path=\"/\" exact>\r\n {({ match }) => (\r\n <CSSTransition\r\n in={!!match}\r\n timeout={{ enter: 1500, exit: 350 }}\r\n classNames=\"fade\"\r\n unmountOnExit\r\n >\r\n <PageWrapper transitionDuration={350} enterDelay={1150}>\r\n <LandingPage\r\n setVisualisationPlaceholderRect={\r\n match ? setVisualisationPlaceholderRect : rect => {}\r\n }\r\n />\r\n </PageWrapper>\r\n </CSSTransition>\r\n )}\r\n </Route>\r\n <Route path=\"/overview\">\r\n {({ match }) => (\r\n <CSSTransition\r\n in={!!match}\r\n timeout={{ enter: 1750, exit: 350 }}\r\n classNames=\"fade\"\r\n unmountOnExit\r\n >\r\n <PageWrapper transitionDuration={350} enterDelay={1400}>\r\n <OverviewPage\r\n setVisualisationPlaceholderRect={\r\n setVisualisationPlaceholderRect\r\n }\r\n />\r\n </PageWrapper>\r\n </CSSTransition>\r\n )}\r\n </Route>\r\n <Route path=\"/simulation\">\r\n {({ match }) => (\r\n <CSSTransition\r\n in={!!match}\r\n timeout={{ enter: 1350, exit: 350 }}\r\n classNames=\"fade\"\r\n unmountOnExit\r\n >\r\n <PageWrapper transitionDuration={350} enterDelay={1000}>\r\n <SimulationPage\r\n setVisualisationPlaceholderRect={\r\n setVisualisationPlaceholderRect\r\n }\r\n />\r\n </PageWrapper>\r\n </CSSTransition>\r\n )}\r\n </Route>\r\n </RoutesWrapper>\r\n </Router>\r\n </React.Fragment>\r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' }\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(<App />, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = __webpack_public_path__ + \"static/media/9.e10c4647.png\";","module.exports = __webpack_public_path__ + \"static/media/10.6211a934.png\";"],"sourceRoot":""}