{"version":3,"file":"index.js","mappings":"4BAAA,IAGIA,EAHO,EAAQ,MAGDA,OAElBC,EAAOC,QAAUF,C,iBCLjB,IAAIA,EAAS,EAAQ,MACjBG,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBL,EAASA,EAAOM,iBAAcC,EAkBnDN,EAAOC,QATP,SAAoBM,GAClB,OAAa,MAATA,OACeD,IAAVC,EAdQ,qBADL,gBAiBJH,GAAkBA,KAAkBI,OAAOD,GAC/CL,EAAUK,GACVJ,EAAeI,EACrB,C,iBCzBA,IAAIE,EAAkB,EAAQ,MAG1BC,EAAc,OAelBV,EAAOC,QANP,SAAkBU,GAChB,OAAOA,EACHA,EAAOC,MAAM,EAAGH,EAAgBE,GAAU,GAAGE,QAAQH,EAAa,IAClEC,CACN,C,iBCfA,IAAIG,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOP,SAAWA,QAAU,EAAAO,EAEpFf,EAAOC,QAAUa,C,iBCHjB,IAAIf,EAAS,EAAQ,MAGjBiB,EAAcR,OAAOS,UAGrBC,EAAiBF,EAAYE,eAO7BC,EAAuBH,EAAYI,SAGnChB,EAAiBL,EAASA,EAAOM,iBAAcC,EA6BnDN,EAAOC,QApBP,SAAmBM,GACjB,IAAIc,EAAQH,EAAeI,KAAKf,EAAOH,GACnCmB,EAAMhB,EAAMH,GAEhB,IACEG,EAAMH,QAAkBE,EACxB,IAAIkB,GAAW,CACjB,CAAE,MAAOC,GAAI,CAEb,IAAIC,EAASP,EAAqBG,KAAKf,GAQvC,OAPIiB,IACEH,EACFd,EAAMH,GAAkBmB,SAEjBhB,EAAMH,IAGVsB,CACT,C,WC1CA,IAOIP,EAPcX,OAAOS,UAOcG,SAavCpB,EAAOC,QAJP,SAAwBM,GACtB,OAAOY,EAAqBG,KAAKf,EACnC,C,iBCnBA,IAAIO,EAAa,EAAQ,MAGrBa,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKpB,SAAWA,QAAUoB,KAGxEC,EAAOf,GAAca,GAAYG,SAAS,cAATA,GAErC9B,EAAOC,QAAU4B,C,WCPjB,IAAIE,EAAe,KAiBnB/B,EAAOC,QAPP,SAAyBU,GAGvB,IAFA,IAAIqB,EAAQrB,EAAOsB,OAEZD,KAAWD,EAAaG,KAAKvB,EAAOwB,OAAOH,MAClD,OAAOA,CACT,C,iBChBA,IAAII,EAAW,EAAQ,MACnBC,EAAM,EAAQ,MACdC,EAAW,EAAQ,MAMnBC,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrB3C,EAAOC,QA7HP,SAAkB2C,EAAMC,EAAMC,GAC5B,IAAIC,EACAC,EACAC,EACAvB,EACAwB,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARX,EACT,MAAM,IAAIY,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOZ,EACPa,EAAUZ,EAKd,OAHAD,EAAWC,OAAW1C,EACtB8C,EAAiBM,EACjBhC,EAASkB,EAAKiB,MAAMD,EAASD,EAE/B,CAqBA,SAASG,EAAaJ,GACpB,IAAIK,EAAoBL,EAAOP,EAM/B,YAAyB7C,IAAjB6C,GAA+BY,GAAqBlB,GACzDkB,EAAoB,GAAOT,GANJI,EAAON,GAM8BH,CACjE,CAEA,SAASe,IACP,IAAIN,EAAOrB,IACX,GAAIyB,EAAaJ,GACf,OAAOO,EAAaP,GAGtBR,EAAUgB,WAAWF,EA3BvB,SAAuBN,GACrB,IAEIS,EAActB,GAFMa,EAAOP,GAI/B,OAAOG,EACHZ,EAAUyB,EAAalB,GAJDS,EAAON,IAK7Be,CACN,CAmBqCC,CAAcV,GACnD,CAEA,SAASO,EAAaP,GAKpB,OAJAR,OAAU5C,EAINiD,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAW1C,EACfoB,EACT,CAcA,SAAS2C,IACP,IAAIX,EAAOrB,IACPiC,EAAaR,EAAaJ,GAM9B,GAJAX,EAAWwB,UACXvB,EAAWwB,KACXrB,EAAeO,EAEXY,EAAY,CACd,QAAgBhE,IAAZ4C,EACF,OAzEN,SAAqBQ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUgB,WAAWF,EAAcnB,GAE5BQ,EAAUI,EAAWC,GAAQhC,CACtC,CAkEa+C,CAAYtB,GAErB,GAAIG,EAIF,OAFAoB,aAAaxB,GACbA,EAAUgB,WAAWF,EAAcnB,GAC5BY,EAAWN,EAEtB,CAIA,YAHgB7C,IAAZ4C,IACFA,EAAUgB,WAAWF,EAAcnB,IAE9BnB,CACT,CAGA,OA3GAmB,EAAOP,EAASO,IAAS,EACrBT,EAASU,KACXO,IAAYP,EAAQO,QAEpBJ,GADAK,EAAS,YAAaR,GACHP,EAAUD,EAASQ,EAAQG,UAAY,EAAGJ,GAAQI,EACrEM,EAAW,aAAcT,IAAYA,EAAQS,SAAWA,GAoG1Dc,EAAUM,OApCV,gBACkBrE,IAAZ4C,GACFwB,aAAaxB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAU5C,CACjD,EA+BA+D,EAAUO,MA7BV,WACE,YAAmBtE,IAAZ4C,EAAwBxB,EAASuC,EAAa5B,IACvD,EA4BOgC,CACT,C,WC9JArE,EAAOC,QALP,SAAkBM,GAChB,IAAIsE,SAActE,EAClB,OAAgB,MAATA,IAA0B,UAARsE,GAA4B,YAARA,EAC/C,C,WCAA7E,EAAOC,QAJP,SAAsBM,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,iBC1BA,IAAIuE,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3B/E,EAAOC,QALP,SAAkBM,GAChB,MAAuB,iBAATA,GACXwE,EAAaxE,IArBF,mBAqBYuE,EAAWvE,EACvC,C,iBC1BA,IAAIsB,EAAO,EAAQ,MAsBnB7B,EAAOC,QAJG,WACR,OAAO4B,EAAKmD,KAAK3C,KACnB,C,iBCpBA,IAAI4C,EAAW,EAAQ,MACnB7C,EAAW,EAAQ,MACnB8C,EAAW,EAAQ,MAMnBC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnBvF,EAAOC,QArBP,SAAkBM,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI2E,EAAS3E,GACX,OA1CM,IA4CR,GAAI6B,EAAS7B,GAAQ,CACnB,IAAIiF,EAAgC,mBAAjBjF,EAAMkF,QAAwBlF,EAAMkF,UAAYlF,EACnEA,EAAQ6B,EAASoD,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAATjF,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ0E,EAAS1E,GACjB,IAAImF,EAAWN,EAAWlD,KAAK3B,GAC/B,OAAQmF,GAAYL,EAAUnD,KAAK3B,GAC/B+E,EAAa/E,EAAMK,MAAM,GAAI8E,EAAW,EAAI,GAC3CP,EAAWjD,KAAK3B,GAvDb,KAuD6BA,CACvC,C,6ECnDA,MAAqBoF,UAAwBC,YAE3CC,oBAEE,IAAEC,EAAaC,EAAcC,EAAcC,EAAMC,EAAQC,EAAOC,EADhE5B,KAAK6B,UAbQ,qaAcXP,EAcAtB,KAAK8B,cAAc,KAdNP,EAebvB,KAAK8B,cAAc,MAfQN,EAgB3BxB,KAAK8B,cAAc,OAhBsBL,EAiBzCzB,KAAK+B,aAAa,UAjB6BL,EAkB/C1B,KAAK+B,aAAa,YAlBqCJ,EAmBvD3B,KAAK+B,aAAa,WAnB4CH,EAoB9D5B,KAAK+B,aAAa,WAnBdN,IACFH,EAAYG,KAAOA,GAEjBC,IACFJ,EAAYI,OAASA,GAEnBC,IACFJ,EAAaS,UAAYL,GAEvBC,IACFJ,EAAaS,IAAML,EAWzB,EA1BF,W,6ECJA,MAAqBM,UAAmBd,YAEtCC,oBAEE,IAAEC,EAAaa,EAAmBV,EAAMC,EAAQU,EAAMC,EADtDrC,KAAK6B,UATQ,qeAUXP,EAiBAtB,KAAK8B,cAAc,KAjBNK,EAkBbnC,KAAKsC,iBAAiB,QAlBUb,EAmBhCzB,KAAK+B,aAAa,UAnBoBL,EAoBtC1B,KAAK+B,aAAa,YApB4BK,EAqB9CpC,KAAK+B,aAAa,UArBkCM,EAsBpDrC,KAAK+B,aAAa,WArBdN,IACFH,EAAYG,KAAOA,GAEjBC,IACFJ,EAAYI,OAASA,GAEnBW,GACFf,EAAYiB,UAAUC,IAAI,YAAYH,UAAe,wBAAwBA,UAAe,wBAAwBA,WAElHD,IACFD,EAAkB,GAAGH,UAAYI,GAE/BC,IACFF,EAAkB,GAAGN,UAAY,8CAA8CQ,oBAUrF,EA5BF,W,mZCeA,MAAMI,EAA6C,CAAC,EAC9CC,EAAoC,CAAC,EAC3C,IAAIC,GAAsB,EAgC1B,MAAMC,EAAe,wFACfC,EAAc,gHACdC,EAAiB,GAAGD,0DACpBE,EAAmBV,GAAkB,GAAGQ,0BAAoCR,gCAAoCA,UAoCtH,SAASW,EAAmBrB,EAAeS,GACvC,MAAO,oCACsBQ,KAAgBE,yCACdnB,kDACKS,qBAExC,CAEA,MAAqBa,UAAqB7B,YAEtC8B,c,MACIC,QACA,MAAMC,EAAoC,QAA5B,EAAApD,KAAK+B,aAAa,kBAAU,QAAI,GAC9C/B,KAAKqD,iBAAiB,SAAUpG,KACvB0F,GAAcD,EAASU,KACxBnG,EAAEqG,iBACFC,SAASH,GAAO,KACZT,GAAa,EACb3C,KAAKqB,mBAAmB,IAE5BsB,GAAa,EACb3C,KAAKqB,oB,GAGjB,CAEAA,oB,4BACI,MAAM+B,EAAoC,QAA5B,EAAApD,KAAK+B,aAAa,kBAAU,QAAI,GAC9C,GAAIY,EAAY,CACZ,MAAMhB,EAAyC,QAAjC,EAAA3B,KAAK+B,aAAa,uBAAe,QAAI,GAC7CK,EAAuC,QAAhC,EAAApC,KAAK+B,aAAa,sBAAc,QAAI,GAC3CM,EAAoC,QAA5B,EAAArC,KAAK+B,aAAa,kBAAU,QAAI,QAC9C/B,KAAK6B,UArDjB,SAA6BF,EAAeS,EAAcC,GACtD,MAAO,sEACwDA,WAAeO,KAAgBG,EAAgBV,+DAEzEV,wDACKS,+GAGWC,+CAGzD,CA0C6BmB,CAAoB7B,EAAOS,EAAMC,E,KAEjD,CAGD,QAhFY,KADNoB,EA+E+Bf,EAASU,IA9ErB,QACb,IAAhBK,EAA8B,cAAlC,GAgFY,IAAK,OAAQ,CACT,MAAM9B,EAAyC,QAAjC,EAAA3B,KAAK+B,aAAa,uBAAe,QAAI,GAC7CK,EAAuC,QAAhC,EAAApC,KAAK+B,aAAa,sBAAc,QAAI,GAC3CM,EAAoC,QAA5B,EAAArC,KAAK+B,aAAa,kBAAU,QAAI,GAC9C/B,KAAK6B,UA5EzB,SAAyBF,EAAeS,EAAcC,GAClD,MAAO,0EAC4DA,WAAeO,KAAgBG,EAAgBV,qFAEvDV,wDACjBS,wNAGWC,6CAGzD,CAiEqCqB,CAAgB/B,EAAOS,EAAMC,GAC9C,K,CAEJ,IAAK,SAAU,CACX,MAAMV,EAA2C,QAAnC,EAAA3B,KAAK+B,aAAa,yBAAiB,QAAI,GAC/CK,EAAyC,QAAlC,EAAApC,KAAK+B,aAAa,wBAAgB,QAAI,GAC7CN,EAAkC,QAA3B,EAAAzB,KAAK+B,aAAa,iBAAS,QAAI,GAC5C/B,KAAK6B,UAAYJ,EAzDrC,SAA2BE,EAAeS,EAAcX,GACpD,MAAO,oCACsBmB,KAAgBE,yCACdnB,2BAClBF,oFAAuFW,mBAExG,CAmD4CuB,CAAkBhC,EAAOS,EAAMX,GAAQuB,EAAmBrB,EAAOS,GACzF,K,CAEJ,QAAS,CACL,MAAMT,EAA4C,QAApC,EAAA3B,KAAK+B,aAAa,0BAAkB,QAAI,GAChDK,EAA0C,QAAnC,EAAApC,KAAK+B,aAAa,yBAAiB,QAAI,GACpD/B,KAAK6B,UAAYmB,EAAmBrB,EAAOS,GAC3C,K,EAIJgB,KAAWA,KAASX,IACpBmB,OAAOlE,YAAW,IAAY,EAAD,gCACzBgD,EAASU,SAnI7B,SAA0BA,G,MACtB,OAAuB,QAAf,EAAAX,EAASW,UAAM,QAAKX,EAASW,GAAS,IAAIS,SAAQC,IACtD,MAAMC,EAAUC,MAAM,4DAA6D,CAC/EC,OAAQ,OACRC,QAAS,CACL,eAAgB,oBAEpBC,KAAMC,KAAKC,UAAU,CAAEC,UAAWlB,MAEtCW,EAAQQ,MAAKC,IACT,MAAMC,EAAOD,EAASE,OACtBD,EAAKF,MAAMI,IACP,MAAMC,EAAoC,OAAtBD,EAAKE,cACzBf,EAAQc,EAAY,IAExBH,EAAKK,OAAM,KACPhB,GAAQ,EAAM,GAChB,IAENC,EAAQe,OAAM,KACVhB,GAAQ,EAAM,GAChB,GAEV,CA4G4CiB,CAAiB3B,GACzCpD,KAAKqB,mBACT,K,CA5GhB,IAAkBoC,CA+Gd,EA3DJ,W,6ECjGA,MAAqBuB,UAAmB5D,YAEtCC,oBAEE,IAAE4D,EAAUC,EAAM7C,EADlBrC,KAAK6B,UARQ,4JASXoD,EAQAjF,KAAKsC,iBAAiB,QARZ4C,EASVlF,KAAK+B,aAAa,WATFM,EAUhBrC,KAAK+B,aAAa,aARhBkD,EAAS,GAAG1C,UAAUC,IAAI,YAAYH,KAEpC6C,GACFD,EAAS,GAAG1C,UAAUC,IAAI,QAAQ0C,IAMxC,EAfF,W,6ECUA,MAAqBC,UAAwB/D,YACzCC,oBACIrB,KAAK6B,UAjBI,iiBAkBT,EAAEJ,EAAMC,EAAQC,EAAOyD,EAAM/C,EAAOgD,EAAeC,KAiC3D,IAAqBC,GAVrB,SAAqBA,EAA4B9D,EAAeC,EAAiBW,GACzEZ,IACA8D,EAAQ9D,KAAOA,GAEfC,IACA6D,EAAQ7D,OAASA,GAErB6D,EAAQhD,UAAUC,IAAIH,EAAQ,gBAAgBA,IAAU,qBAC5D,CA9BYmD,CAAYxF,KAAK8B,cAAc,KAAML,EAAMC,EAAQW,GAgC1CkD,EA/BGvF,KAAK8B,cAAc,YAiDhC,mBAfCyD,EAAQhD,UAAUC,IAenB,mBAhDCiD,EAAQzF,KAAK8B,cAAc,0BAA2BH,GACtD8D,EAAQzF,KAAK8B,cAAc,qCAoDxB,OAOf,SAA0B4D,GACtB,GAAIA,EAAK,CACL,MAAMlI,EAAQkI,EAAIC,YAAY,KAC9B,IAAe,IAAXnI,EACA,OAAOkI,EAAIE,UAAUpI,EAAQ,E,CAGrC,MAAO,EACX,CAhBgBqI,CAnDyEpE,GAqD1E,MAGJ,QAvDK2D,GACAK,EAAQzF,KAAK8B,cAAc,qCAAsC,IAmEjF,SAAqBgE,EAAeC,EAAW,GAC3C,KAAMD,EAAO,MAAO,UAEpB,MACME,EAAKD,EAAW,EAAI,EAAIA,EAGxBE,EAAIjI,KAAKkI,MAAMlI,KAAKmI,IAAIL,GAAS9H,KAAKmI,IAJlC,OAMV,MAAO,GAAGC,YAAYN,EAAQ9H,KAAKqI,IANzB,KAMgCJ,IAAIK,QAAQN,OAJxC,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAIEC,IACxE,CA7EuFM,CAAYxF,SAASqE,IAAS,KAErGC,GAAiBC,GACjBG,EAAQzF,KAAK8B,cAAc,yCAA0C,GAAGuD,MAAkBC,IAEjG,EAXD,CAYItF,KAAK+B,aAAa,UAClB/B,KAAK+B,aAAa,YAClB/B,KAAK+B,aAAa,WAClB/B,KAAK+B,aAAa,UAClB/B,KAAK+B,aAAa,WAClB/B,KAAK+B,aAAa,oBAClB/B,KAAK+B,aAAa,oBAE1B,EAqBJ,SAAS0D,EAAQF,EAAsBnD,EAAeoE,GAAyB,GACvEpE,EACAmD,EAAQvD,UAAYI,EAEfoE,GACLjB,EAAQkB,QAEhB,CAnDA,W,6ECFA,MAAqBC,UAAmBtF,YACtCC,oB,QACErB,KAAK6B,UAfQ,mbAgBb,EAAE8E,EAAWC,KACPD,GACD3G,KAAKsC,iBAAiB,WAAW,GAAIC,UAAUC,IAAI,aAAc,cAY1E,SAAqB+C,EAA4B9D,EAAeC,EAAiBW,EAAgBuE,GAO/F,IAACC,EANGpF,IACF8D,EAAQ9D,KAAOA,GAEbC,IACF6D,EAAQ7D,OAASA,GAElBmF,EAUE,GATGD,GACFC,EAAQC,KAAK,oBAEXzE,GACFwE,EAAQC,KAAK,gBAAgBzE,KAE3BwE,EAAQpJ,QACV8H,EAAQhD,UAAUC,OAAOqE,EAG/B,CA5BMrB,CAAYxF,KAAK8B,cAAc,KAAM9B,KAAK+B,aAAa,UAAW/B,KAAK+B,aAAa,YAAa/B,KAAK+B,aAAa,WAAY6E,GA8BrI,SAAsBrB,EAA6B5D,EAAgBgF,GAC7DhF,IACGgF,GACHpB,EAAQhD,UAAUC,IAAI,aAExB+C,EAAQvD,UAAYL,EAExB,CApCMoF,CAAa/G,KAAK8B,cAAc,MAAO9B,KAAK+B,aAAa,WAAY4E,GACrE3G,KAAK8B,cAAc,OAAOG,IAAMjC,KAAK+B,aAAa,WACjD/B,KAAK8B,cAAc,iBAAoCE,UAAYhC,KAAK+B,aAAa,gBACvF,EARD,CASkD,WAAjB,QAA9B,EAAA/B,KAAK+B,aAAa,oBAAY,QAAI,SACc,WAAjB,QAA/B,EAAA/B,KAAK+B,aAAa,qBAAa,QAAI,SACxC,EAdF,W,6ECEA,MAAqBiF,UAAuB5F,YACxCC,oBACIrB,KAAK6B,UAjBI,8eAkBT,EAAEJ,EAAMC,EAAQC,EAAOsF,EAAU7B,EAAM/C,MAoB/C,SAAqBkD,EAA4B9D,EAAeC,EAAiBW,GACzEZ,IACA8D,EAAQ9D,KAAOA,GAEfC,IACA6D,EAAQ7D,OAASA,GAErB6D,EAAQhD,UAAUC,IAAIH,EAAQ,gBAAgBA,IAAU,qBAC5D,CA3BYmD,CAAYxF,KAAK8B,cAAc,KAAML,EAAMC,EAAQW,GA6B/D,SAAqBkD,EAAsB9D,EAAewF,GACtD,IAACC,IAgBL,SAAoBxB,EAAauB,GAC7B,MAAME,EAAMtB,EAAiBH,GAC7B,GAAgB,iBAAZuB,EAA6B,CAE7B,OAAQvB,EAAI0B,MAAM,KAAK1B,EAAI0B,MAAM,KAAK3J,OAAS,IAC3C,IAAK,MACL,IAAK,OACD,MAAO,iBAEX,IAAK,MACD,MAAO,gBAEX,IAAK,MACD,MAAO,gBAGf,MAAO,e,CAEX,OAAQ0J,GACJ,IAAK,MACL,IAAK,OACD,MAAO,iBAEX,IAAK,MACD,MAAO,gBAEX,IAAK,MACD,MAAO,gBAEf,MAAO,iBACX,CA1COE,CAAW5F,EAAMwF,GAHZC,GACA3B,EAAQhD,UAAUC,IAAI0E,EAGlC,CAlCYI,CAAYtH,KAAK8B,cAAc,YAAaL,EAAMwF,GAClDxB,EAAQzF,KAAK8B,cAAc,0BAA2BH,GACtD8D,EAAQzF,KAAK8B,cAAc,+BAAgCmF,GAC3DxB,EAAQzF,KAAK8B,cAAc,gCA0EvC,SAAqB4D,EAAcuB,GAC/B,MAAME,EAAMtB,EAAiBH,GAC7B,GAAgB,iBAAZuB,EAA6B,CAC7B,OAAQvB,EAAI0B,MAAM,KAAK1B,EAAI0B,MAAM,KAAK3J,OAAS,IAC3C,IAAK,MACL,IAAK,OACD,MAAO,OAEX,IAAK,MACD,MAAO,MAEX,IAAK,MACD,MAAO,MAEf,MAAO,E,CAEX,OAAQ0J,GACJ,IAAK,MACL,IAAK,OACD,MAAO,OAEX,IAAK,MACD,MAAO,MAEX,IAAK,MACD,MAAO,MAEX,IAAK,GACD,MAAO,GAEX,QACI,MAAO,OAGnB,CA5GwEI,CAAY9F,EAAMwF,IAC1E7B,GACAK,EAAQzF,KAAK8B,cAAc,2CAA4C,IAsHvF,SAAqBgE,EAAeC,EAAW,GAC3C,KAAMD,EAAO,MAAO,UAEpB,MACME,EAAKD,EAAW,EAAI,EAAIA,EAGxBE,EAAIjI,KAAKkI,MAAMlI,KAAKmI,IAAIL,GAAS9H,KAAKmI,IAJlC,OAMV,MAAO,GAAGC,YAAYN,EAAQ9H,KAAKqI,IANzB,KAMgCJ,IAAIK,QAAQN,OAJxC,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAIEC,IACxE,CAhI6FM,CAAYxF,SAASqE,IAAS,IAElH,EATD,CAUIpF,KAAK+B,aAAa,UAClB/B,KAAK+B,aAAa,YAClB/B,KAAK+B,aAAa,WAClB/B,KAAK+B,aAAa,cAClB/B,KAAK+B,aAAa,UAClB/B,KAAK+B,aAAa,WAE1B,EAqBJ,SAAS0D,EAAQF,EAAsBnD,EAAeoE,GAAyB,GACvEpE,EACAmD,EAAQvD,UAAYI,EAEfoE,GACLjB,EAAQkB,QAEhB,CAsEA,SAASZ,EAAiBH,GACtB,GAAIA,EAAK,CACL,MAAMlI,EAAQkI,EAAIC,YAAY,KAC9B,IAAe,IAAXnI,EACA,OAAOkI,EAAIE,UAAUpI,EAAQ,E,CAGrC,MAAO,EACX,CA9HA,W,6ECHA,MAAqBgK,UAAyBpG,YAC5CC,oBACErB,KAAK6B,UAdQ,6ZAeb,EAAEP,EAAamG,EAAsBlG,EAAcmG,KACjD,IAAEjG,EAAMC,EAAQC,EAAOgG,EAAatF,EAAlCZ,EAwBAzB,KAAK+B,aAAa,UAxBZL,EAyBN1B,KAAK+B,aAAa,YAzBJJ,EA0Bd3B,KAAK+B,aAAa,WA1BG4F,EA2BrB3H,KAAK+B,aAAa,iBA3BgBM,EA4BlCrC,KAAK+B,aAAa,WA3BdN,IACFH,EAAYG,KAAOA,GAEjBC,IACFJ,EAAYI,OAASA,GAEnBC,EACFJ,EAAaS,UAAYL,EAGzBJ,EAAakF,SAEXkB,EACFD,EAAmB1F,UAAY2F,EAG/BD,EAAmBjB,SAEjBpE,IACFf,EAAYiB,UAAUC,IAAI,gBAAgBH,KAC1CoF,EAAqB5F,UAAY,8CAA8CQ,oBAQpF,EA9BD,CA+BErC,KAAK8B,cAAc,KACnB9B,KAAK8B,cAAc,WACnB9B,KAAK8B,cAAc,MACnB9B,KAAK8B,cAAc,aACvB,EAtCF,W,4ECJA,MAAqB8F,UAAqBxG,YAExCC,oBAEE,IAAEkE,EAAShE,EAAcmG,EAAoB/F,EAAOgG,EAAatF,EADjErC,KAAK6B,UAXQ,yOAYX0D,EAiBAvF,KAAK8B,cAAc,aAjBVP,EAkBTvB,KAAK8B,cAAc,MAlBI4F,EAmBvB1H,KAAK8B,cAAc,mBAnBwBH,EAoB3C3B,KAAK+B,aAAa,WApBgC4F,EAqBlD3H,KAAK+B,aAAa,iBArB6CM,EAsB/DrC,KAAK+B,aAAa,WArBdJ,EACFJ,EAAaS,UAAYL,EAGzBJ,EAAakF,SAEXkB,EACFD,EAAmB1F,UAAY2F,EAG/BD,EAAmBjB,SAEjBpE,GACFkD,EAAQhD,UAAUC,IAAI,gBAAgBH,IAS5C,EA3BF,W,6ECRA,MAAqBwF,UAAoBzG,YAErCC,oB,MACI,EAAEtE,EAAKqF,EAAMC,EAAOyF,KAEhB,IAAEvC,EAmBUwC,EApBZ/H,KAAK6B,UAAY,IAAI9E,OAASA,KAC5BwI,EA8BCvF,KAAK8B,cAAc/E,GA7BdqF,IACAmD,EAAQvD,UAAYI,GAExBmD,EAAQhD,UAAUC,OACX,CAACuF,IACA,OAAQhL,GACJ,IAAK,KACDgL,EAAIjB,KAAK,aAAc,kBACvB,MACJ,IAAK,KACDiB,EAAIjB,KAAK,aAAc,iBACvB,MACJ,QACIiB,EAAIjB,KAAK,UAAW,iBAG5B,OAAOiB,CACV,EAbE,CAaA,QACCA,EAUD,GATKD,GACAC,EAAIjB,KAAK,iBAAkB,aAAe,CAACiB,IACnC1F,GACA0F,EAAIjB,KAAK,gBAAgBzE,WAEtB0F,GAJ8B,CAKtC,KAEAA,GAGtB,EAjCD,CAkCI/H,KAAK+B,aAAa,YAAc,KAChC/B,KAAK+B,aAAa,UAClB/B,KAAK+B,aAAa,WAC0B,WAAjB,QAA1B,EAAA/B,KAAK+B,aAAa,gBAAQ,QAAI,SACvC,EAzCJ,W,6ECWA,MAAqBiG,UAAuB5G,YAE1CC,oBACErB,KAAK6B,UAdQ,0aAeb,EAAEP,EAAaC,EAAcmG,EAAoBD,KAC/C,IAAEhG,EAAMC,EAAQC,EAAOgG,EAAatF,EAAlCZ,EAuBAzB,KAAK+B,aAAa,UAvBZL,EAwBN1B,KAAK+B,aAAa,YAxBJJ,EAyBd3B,KAAK+B,aAAa,WAzBG4F,EA0BrB3H,KAAK+B,aAAa,iBA1BgBM,EA2BlCrC,KAAK+B,aAAa,WA1BdN,IACFH,EAAYG,KAAOA,GAEjBC,IACFJ,EAAYI,OAASA,GAEnBC,EACFJ,EAAaS,UAAYL,EAGzBJ,EAAakF,SAEXkB,EACFD,EAAmB1F,UAAY2F,EAG/BD,EAAmBjB,SAEjBpE,IACFoF,EAAqB5F,UAAY,8CAA8CQ,oBAQpF,EA7BD,CA8BErC,KAAK8B,cAAc,KACnB9B,KAAK8B,cAAc,MACnB9B,KAAK8B,cAAc,iBACnB9B,KAAK8B,cAAc,YACvB,EAtCF,W,6ECXA,MAAqBmG,UAAoB7G,YAErCC,oB,cACI,EAAE6G,EAASC,EAAOC,EAAUC,EAAYhG,KAEpC,IAAIiG,EACJ,MAAMC,EAAa,YAAYlG,UAE3BiG,EAJuC,QAAdD,EAKrB,eAAeE,6KACgGL,kGAE3FC,WAAeC,iFAMnC,eAAeG,kIAEKJ,WAAeC,wLAE4EF,sCAIvHlI,KAAK6B,UAAYyG,CACpB,EAxBD,CAyBkC,QAA9B,EAAAtI,KAAK+B,aAAa,oBAAY,QAAI,GACN,QAA5B,EAAA/B,KAAK+B,aAAa,kBAAU,QAAI,GACA,QAAhC,EAAA/B,KAAK+B,aAAa,sBAAc,QAAI,GACF,QAAlC,EAAA/B,KAAK+B,aAAa,wBAAgB,QAAI,GACV,QAA5B,EAAA/B,KAAK+B,aAAa,kBAAU,QAAI,GACxC,EAjCJ,W,6ECaA,MAAqByG,UAAwBpH,YAC3CC,oBACErB,KAAK6B,UAfQ,gbAgBb,EAAEP,EAAaC,EAAcmG,EAAoBe,EAAuBjH,KACtE,IAAEC,EAAMC,EAAQC,EAAOgG,EAAa/F,EAAUS,EAA5CZ,EAuBAzB,KAAK+B,aAAa,UAvBZL,EAwBN1B,KAAK+B,aAAa,YAxBJJ,EAyBd3B,KAAK+B,aAAa,WAzBG4F,EA0BrB3H,KAAK+B,aAAa,iBA1BgBH,EA2BlC5B,KAAK+B,aAAa,YAAc,GA3BYM,EA4B5CrC,KAAK+B,aAAa,WA3BdN,IACFH,EAAYG,KAAOA,GAEjBC,IACFJ,EAAYI,OAASA,GAEnBC,EACFJ,EAAaS,UAAYL,EAGzBJ,EAAakF,SAEXkB,IACFD,EAAmB1F,UAAY2F,GAE7BtF,GACFoG,EAAsBlG,UAAUC,IAAI,gBAAgBH,KAElDT,IACFJ,EAAaS,IAAML,EASxB,EA9BD,CA+BE5B,KAAK8B,cAAc,KACnB9B,KAAK8B,cAAc,MACnB9B,KAAK8B,cAAc,iBACnB9B,KAAKsC,iBAAiB,WAAW,GACjCtC,KAAK8B,cAAc,OACvB,EAvCF,W,6ECbA,MAAqB4G,UAAwBtH,YAEzCC,oBACI,EAAEsH,EAAOC,EAAUC,KACf,GAAa,MAATF,EACA,OAEJ,MAAMhE,EAAuBP,KAAK0E,MAAMH,GACxC,IAAII,EAAqB,GACrBC,EAAkB,GAClBC,EAAa,GACbzL,EAAQ,EAEZmH,EAAKuE,SAAQC,IAET,GADA3L,IACI2L,EAAKC,WAAY,CACjB,MAAMC,EAAgBF,EAAKvH,SAAW,aAAauH,EAAKvH,kBAAkBuH,EAAKf,4GAA8G,GAE7LW,GACA,YAAYI,EAAK1H,uEACX4H,sNAEgEF,EAAKxH,2DACjDwH,EAAKxB,2E,KAI9B,CACD,MAAM2B,EAAc9L,GAASmH,EAAKlH,OAAS,uDAAyD,8CACpGuL,GACA,YAAYG,EAAK1H,+CAA+C6H,qGACWH,EAAKxH,gFACjCwH,EAAKI,oC,KAKxDX,GAAYC,IACZI,EAAa,8BACFJ,+IACLD,0FAKV,MAAMN,EAAW,yLAICS,gMAIIC,sEAEJC,uGAMlBjJ,KAAK6B,UAAYyG,CACpB,EA3DD,CA4DItI,KAAK+B,aAAa,WAClB/B,KAAK+B,aAAa,eAClB/B,KAAK+B,aAAa,eAE1B,EAnEJ,W,4ECeA,MAAqByH,UAAmBpI,YAIpC8B,cACIuG,SAASpG,iBAAiB,+BAA+B,KACrDrD,KAAK0J,UAAW,EAChB1J,KAAKqB,mBAAmB,IAG5BoI,SAASpG,iBAAiB,+BAA+B,KACrDrD,KAAK0J,UAAW,EAChB1J,KAAKqB,mBAAmB,IAE5B8B,QAZJ,KAAAuG,UAAoB,CAapB,CAEArI,oBAGIrB,KAAK6B,UAAY7B,KAAK0J,SAnCL,yMAKD,iZA+BhB,EAAEnE,EAAS5D,EAAOM,EAAK0H,EAAGC,KAEtB,GAAI5J,KAAK0J,SAAU,CACX/H,IACA4D,EAAQ5D,MAAQA,GAGpB,MAAMkI,EAA2C,6FAA6FC,KAAK7H,GAC7I8H,EAAyC,yCAAyCD,KAAK7H,GAE7F,GAAIA,EAAK,CACL,GAAI4H,EAAiB,CACjB,MAAMG,EAAUH,aAAe,EAAfA,EAAkB,GAClCtE,EAAQtD,IAhBI,0CAgBwB+H,EAAtBC,Q,CAElB,GAAIF,EAAe,CACf,MAAMC,EAAUD,aAAa,EAAbA,EAAgB,GAChCxE,EAAQtD,IAnBL,kCAmBwB+H,EAAbE,W,QAKtBP,EAAElI,KAAOQ,EACY0H,EAAE7H,cAAc,cACxBD,UAAYF,EACFgI,EAAE7H,cAAc,aACxBD,UAAY+H,CAElC,EA5BD,CA6BI5J,KAAK8B,cAAc,UACnB9B,KAAK+B,aAAa,WAClB/B,KAAK+B,aAAa,SAClB/B,KAAK8B,cAAc,KACnB9B,KAAK+B,aAAa,cAE1B,EAxDJ,W,yKCfA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QAEA,mBACA,aACA,aACA,aACA,aACA,aACA,aACA,YACA,aACA,aACA,aACA,aACA,aACA,aACA,YAEA/F,OAAOmO,QAAQ,CACX,oBAAqB,UACrB,cAAe,UACf,gBAAiB,UACjB,cAAe,UACf,mBAAoB,UACpB,cAAe,UACf,kBAAmB,UACnB,gBAAiB,UACjB,qBAAsB,UACtB,eAAgB,UAChB,kBAAmB,UACnB,eAAgB,UAChB,mBAAoB,UACpB,cAAe,UACf,mBAAoB,YACuBjB,SAAQ,EAAEkB,EAAKjB,MAC1DvF,OAAOyG,eAAeC,OAAOF,EAAKjB,EAAK,IAI3C,O,yKChDA,mBAEMpB,EAAgB,SAAhBA,EAAqC,YACrCxC,EAAUkE,SAASc,eAAe,cAExC,SAASC,IACgB,IAAnB5G,OAAO6G,QAETlF,EAAQhD,UAAUC,IAAIuF,GAGtBxC,EAAQhD,UAAUkE,OAAOsB,EAAYA,EAEzC,CAEe,MAAXxC,IACAA,EAAQlC,iBAAiB,iBAAiB,KAClCkC,EAAQhD,UAAUmI,SAAS3C,IAC3BxC,EAAQhD,UAAUC,IAAIuF,E,IAI9BnE,OAAOP,iBAAiB,UAAU,aAASmH,EAAQ,MAEnDA,I,mFCtBJ,MAAMjF,EAAUkE,SAASc,eAAe,mBACxC,GAAIhF,EAAS,CACX,MAAMjH,EAAgC8F,KAAK0E,MAAMvD,EAAQvD,YAC5B,QAAvB,EAAA1D,EAAQqM,uBAAe,eAAElN,SACzBa,EAAQqM,gBAAgBzB,SAAQ0B,IAC5B5O,OAAO6O,OAAOD,EAAQ,CAClBE,QAAS,GACTC,YAAa,UACbC,SAAU,KACN,MAAMC,EAAQ,IAAIC,YAAY,mBAAmBN,EAAOO,QACxD1B,SAAS2B,cAAcH,EAAM,EAEjCI,SAAU,KACN,MAAMJ,EAAQ,IAAIC,YAAY,mBAAmBN,EAAOO,QACxD1B,SAAS2B,cAAcH,EAAM,GAEI,IAInD,MAAMK,EAAM,eACVC,QAAS,MACTC,oBAAqB,GACrBC,cAAc,EACdC,gBAAgB,EAChBC,cAAe,SACfC,YAAY,EACZC,aAAc,OACdC,SAAU,OACVzJ,MAAO,OACP0J,cAAc,EACdC,WAAY,SACZC,SAAU,CACRC,UAAW,QACXC,gBAAiB,UACjBC,WAAY,QACZC,iBAAkB,QAClBC,WAAY,QACZC,iBAAkB,QAClBC,WAAY,QACZC,iBAAkB,UAClBC,YAAa,UACbC,aAAa,IAEZrO,GAGLsO,cAAcC,KAAKvB,E,0KCjDrB,MAEMwB,GAAgB,EAFtB,UAEsB,WAEhBC,EAAYtD,SAASc,eAAe,8BACpCyC,EAASvD,SAASc,eAAe,2BAEjCxC,EAAc,WAAdA,EAAkC,UAAlCA,EAAqD,SAEvDgF,GAAaC,IACbA,EAAO3J,iBAAiB,SAASpG,IAC7BA,EAAEqG,iBACEyJ,EAAUxK,UAAUmI,SAAS3C,GAgBzC,SAAcgF,GACVA,EAAUxK,UAAUkE,OAAOsB,EAAYA,GACvCgF,EAAUxK,UAAUC,IAAIuF,EAC5B,CAlBYkF,CAAKF,GAoBjB,SAAeA,GACXA,EAAUxK,UAAUkE,OAAOsB,GAC3BgF,EAAUxK,UAAUC,IAAIuF,GACpB+E,GACAC,EAAUxK,UAAUC,IAAIuF,EAEhC,CAvBYmF,CAAMH,E,IAGTD,GACDC,EAAU1J,iBAAiB,iBAAiB,KACnC0J,EAAUI,cACXJ,EAAUxK,UAAUC,IAAIuF,E,6JCtBxC,MAAMgF,EAAYtD,SAASc,eAAe,kBACpCyC,EAASvD,SAASc,eAAe,yBACjCxC,EAAc,WAAdA,EAAkC,UAAlCA,EAAqD,SAEvDgF,GAAaC,IACbA,EAAO3J,iBAAiB,SAAS,KACzB0J,EAAUxK,UAAUmI,SAAS3C,IAC7BgF,EAAUxK,UAAUkE,OAAOsB,GAC3BnE,OAAOlE,YAAW,KACdqN,EAAUxK,UAAUkE,OAAOsB,GAC3BgF,EAAUxK,UAAUC,IAAIuF,EAAS,MAIrCgF,EAAUxK,UAAUkE,OAAOsB,GAC3BgF,EAAUxK,UAAUC,IAAIuF,G,IAGhCgF,EAAU1J,iBAAiB,iBAAiB,KACnC0J,EAAUI,cACXJ,EAAUxK,UAAUC,IAAIuF,E,yFCpBpC,gBAcMqF,EAAa,WACbC,GAAsB9H,EAA6DkE,SAASc,eAAe,sBAAhEnG,KAAK0E,MAAMvD,EAAQ1D,gBAAa,EAAtD,IAAC0D,EAE5B,SAAS+H,EAAQ5H,GACb,OAAO,IAAI6H,IAAI7H,GAAK8H,KAAKC,aAC7B,CA0BA,SAASC,IACL,MAAMnE,EAAO,IAAI/I,KACjB+I,EAAKoE,QAAQpE,EAAKqE,UAAY,MAC9BnE,SAASoE,OAAS,CACd,GAAGT,KACH,WAAW7D,EAAKuE,mBACZT,EAASU,aAAe,CAAC,UAAUV,EAASU,gBAAkB,GAClE,UACFC,KAAK,IACX,CA4CA,GAAqB,QAAjB,EAAAX,aAAQ,EAARA,EAAU/O,eAAO,eAAEb,OAAQ,CAC3B,MAAMwQ,EAAcX,EAAQ1J,OAAOqD,SAASxF,OA3ChD,SAA0BwM,GACtB,IAAK,MAAMrD,KAAUyC,EAAS/O,QAC1B,GAAIgP,EAAQ1C,EAAOnJ,QAAUwM,EACzB,OAAO,EAGf,OAAO,CACX,EAqCQC,CAAiBD,KAnCzB,SAAqBA,EAAqBJ,GACtC,GAAIA,EACA,IAAK,MAAMjD,KAAUyC,EAAS/O,QAC1B,GAAIsM,EAAO7O,QAAU8R,GAAUP,EAAQ1C,EAAOnJ,QAAUwM,EAGpD,OADArK,OAAOqD,SAASxF,KAAOmJ,EAAOnJ,MACvB,EAInB,OAAO,CACX,CA0Ba0M,CAAYF,EAjFzB,WACI,MAAM9C,EAAO,GAAGiC,KAEVgB,EADgBC,mBAAmB5E,SAASoE,QACzBzG,MAAM,KAC/B,IAAK,MAAMkH,KAAKF,EAAI,CAChB,IAAIG,EAAID,EACR,KAAOC,EAAEC,WAAW,MAChBD,EAAIA,EAAE3I,UAAU,GAEpB,GAAI2I,EAAEC,WAAWrD,GACb,OAAOoD,EAAE3I,UAAUuF,EAAK1N,OAAQ8Q,EAAE9Q,O,CAI9C,CAkEuBgR,KAvBvB,SAAmBR,GACf,MAAM1I,EAAUkE,SAASc,eAAe,mBACxC,GAAIhF,EACA,IAAK,MAAMqF,KAAUyC,EAAS/O,QAC1B,GAAIgP,EAAQ1C,EAAOnJ,QAAUwM,EAAa,CAEtC,MAAMS,EAAW9D,EAAO7O,MAAoC,KA/C5E,IAAmBA,IA+C2E6O,EAAO7O,MA9CjG0N,SAASoE,OAAS,CACd,GAAGT,KAAcrR,OACbsR,EAASU,aAAe,CAAC,UAAUV,EAASU,gBAAkB,GAClE,UACFC,KAAK,IA0CgG,EAA3D,KAAQN,GAAc,GACtD,IAAArK,kBAAiBkC,EAAS,QAASmJ,EAAS,KAC5CnJ,EAAQ1D,UACJ,YAAY+I,EAAOnJ,4PAEUmJ,EAAO1F,0LAC+F0F,EAAOxI,yCAE9I,K,CAIhB,CAOYuM,CAAUV,G,0KCvGtB,MAEMnB,GAAgB,EAFtB,UAEsB,WAEhBC,EAAYtD,SAASc,eAAe,iBACpCyC,EAASvD,SAASc,eAAe,wBAEjCxC,EAAc,WAAdA,EAAkC,UAAlCA,EAAqD,SAEvDgF,GAAaC,IACbA,EAAO3J,iBAAiB,SAAS,KACzB0J,EAAUxK,UAAUmI,SAAS3C,GAgBzC,SAAcgF,GACVA,EAAUxK,UAAUkE,OAAOsB,EAAYA,GACvCgF,EAAUxK,UAAUC,IAAIuF,EAC5B,CAlBYkF,CAAKF,GAoBjB,SAAeA,GACXA,EAAUxK,UAAUkE,OAAOsB,GAC3BgF,EAAUxK,UAAUC,IAAIuF,GACpB+E,GACAC,EAAUxK,UAAUC,IAAIuF,EAEhC,CAvBYmF,CAAMH,E,IAGTD,GACDC,EAAU1J,iBAAiB,iBAAiB,KACnC0J,EAAUI,cACXJ,EAAUxK,UAAUC,IAAIuF,E,gFCrBxC,MAAMgF,EAAYtD,SAASc,eAAe,UACpCyC,EAASvD,SAASc,eAAe,iBACjCxC,EAAc,WAAdA,EAAkC,UAAlCA,EAAqD,SACvDgF,GAAaC,IACfA,EAAO3J,iBAAiB,SAAS,KAC3B0J,EAAUxK,UAAUmI,SAAS3C,IAC/BgF,EAAUxK,UAAUkE,OAAOsB,GAC3BnE,OAAOlE,YAAW,KAChBqN,EAAUxK,UAAUlG,QAAQ0L,EAAYA,EAAS,KAInDgF,EAAUxK,UAAUlG,QAAQ0L,EAAUA,E,IAG1CgF,EAAU1J,iBAAiB,iBAAiB,KACrC0J,EAAUI,cACbJ,EAAUxK,UAAUC,IAAIuF,E,iFCjB9B,MAAMgF,EAAYtD,SAASc,eAAe,UACpCyC,EAASvD,SAASc,eAAe,iBACjCrF,EAAOuE,SAASc,eAAe,eAC/BxC,EAAc,WAAdA,EAAkC,UAAlCA,EAAqD,SACrDb,EAAkB,aAAlBA,EAAwC,cAC1C6F,GAAaC,IACfA,EAAO3J,iBAAiB,SAAS,KAC3B0J,EAAUxK,UAAUmI,SAAS3C,IAC/BgF,EAAUxK,UAAUkE,OAAOsB,GAC3BnE,OAAOlE,YAAW,KAChBqN,EAAUxK,UAAUlG,QAAQ0L,EAAYA,GACpC7C,GACFA,EAAK3C,UAAUlG,QAAQ6K,EAAgBA,E,MAK3C6F,EAAUxK,UAAUlG,QAAQ0L,EAAUA,GAClC7C,GACFA,EAAK3C,UAAUlG,QAAQ6K,EAAcA,G,IAI3C6F,EAAU1J,iBAAiB,iBAAiB,KACrC0J,EAAUI,cACbJ,EAAUxK,UAAUC,IAAIuF,E,KAK9B,MAAM6G,EAAOnF,SAASc,eAAe,eAC/BsE,EAAQpF,SAASc,eAAe,gBAClCqE,GAAQC,GACVD,EAAKvL,iBAAiB,UAAUpG,I,OACb,QAAX,EAAA4R,EAAM9S,aAAK,QAAI,IAAI+S,QACvB7R,EAAEqG,gB,gFCnCR,MAAMiC,EAAUkE,SAASc,eAAe,qBAClCwE,EAAQxJ,aAAO,EAAPA,EAASvD,WAoBvB,SAAWgN,EAAmB/I,EAAegJ,EAAeC,EAAeC,GAEvE,MAAMC,EAAK,kBACLhR,EAAiB,SAAUnB,EAAGoS,IAAKA,EAAIA,GAAK,CAAC,GAAKpE,MAAQhO,EAAG+R,EAAEC,GAAGnI,KAAKuI,EAAI,EAsBjF5F,SAASpG,iBAAiB,6BAA6B,KAnB/C0L,IACAtF,SAASc,eAAe6E,IAAO,WAC3B,MAAME,EAAK7F,SAAS8F,cAAc,UAClCD,EAAGF,GAAKA,EACRE,EAAGE,OAAQ,EACXF,EAAGrN,IAAM,kCAAoC8M,EAAQ,MACrDtF,SAAStF,KAAKsL,OAAOH,EACxB,CAN8B,GAO/BN,EAAE/I,GAAK+I,EAAE/I,IAAMkJ,EACfH,EAAEC,GAAKD,EAAEC,IAAM,GACfD,EAAEE,GAAK9Q,EACP4Q,EAAEE,GAAG,aASD,IAGZzF,SAASpG,iBAAiB,6BAA6B,KAPnD2L,EAAEE,GAAK,WAAc,CAQZ,GAGhB,CAjCD,CAiCItL,OAAsC,WAAY,WAAY,WAAY,CAAC,E,6ECtD/E,MAAMgL,EAAOnF,SAASc,eAAe,qBACrC,GAAa,OAATqE,EAAe,CACf,MAAMc,EAAYd,EAAK7M,aAAa,mBAClB,OAAd2N,GACAd,EAAKvL,iBAAiB,UAAWpG,IAC7BA,EAAEqG,iBAEiB,MADCsL,EAAK9M,cAAc,eAAiB4N,EAAY,cAEhEd,EAAKe,SAGL1I,SAAS2I,Q,2GCXzB,4BAAiCN,EAAaO,EAAmBC,EAA6BC,GAC5F,GAAIA,EAAU,CACZ,MAAMC,EAAkB/S,IACtB,IAAKA,EAAEyE,OAAQ,OACf,KAAMzE,EAAEyE,kBAAkBuO,SAAU,OACpC,MAAMX,EAAKrS,EAAEyE,OAAOwO,QAAQH,GACxBT,GACFQ,EAAahT,KAAKwS,EAAIrS,E,EAI1B,OADAqS,EAAGjM,iBAAiBwM,EAAWG,GACxBA,C,CACF,CACL,MAAMA,EAAkB/S,IACtB6S,EAAahT,KAAKwS,EAAIrS,EAAE,EAG1B,OADAqS,EAAGjM,iBAAiBwM,EAAWG,GACxBA,C,CAEX,C,4ECjBA,UAF6B,IAAMpM,OAAOuM,WAAW,oCAAoCC,O,GCCrFC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBzU,IAAjB0U,EACH,OAAOA,EAAa/U,QAGrB,IAAID,EAAS6U,EAAyBE,GAAY,CAGjD9U,QAAS,CAAC,GAOX,OAHAgV,EAAoBF,GAAUzT,KAAKtB,EAAOC,QAASD,EAAQA,EAAOC,QAAS6U,GAGpE9U,EAAOC,OACf,CCtBA6U,EAAoB/T,EAAI,WACvB,GAA0B,iBAAfmU,WAAyB,OAAOA,WAC3C,IACC,OAAO1Q,MAAQ,IAAI1C,SAAS,cAAb,EAChB,CAAE,MAAOL,GACR,GAAsB,iBAAX2G,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCGE0M,EAAoB,K","sources":["webpack://ico-umbraco/./node_modules/lodash/_Symbol.js","webpack://ico-umbraco/./node_modules/lodash/_baseGetTag.js","webpack://ico-umbraco/./node_modules/lodash/_baseTrim.js","webpack://ico-umbraco/./node_modules/lodash/_freeGlobal.js","webpack://ico-umbraco/./node_modules/lodash/_getRawTag.js","webpack://ico-umbraco/./node_modules/lodash/_objectToString.js","webpack://ico-umbraco/./node_modules/lodash/_root.js","webpack://ico-umbraco/./node_modules/lodash/_trimmedEndIndex.js","webpack://ico-umbraco/./node_modules/lodash/debounce.js","webpack://ico-umbraco/./node_modules/lodash/isObject.js","webpack://ico-umbraco/./node_modules/lodash/isObjectLike.js","webpack://ico-umbraco/./node_modules/lodash/isSymbol.js","webpack://ico-umbraco/./node_modules/lodash/now.js","webpack://ico-umbraco/./node_modules/lodash/toNumber.js","webpack://ico-umbraco/./src/ts/components/action-image-link.ts","webpack://ico-umbraco/./src/ts/components/action-link.ts","webpack://ico-umbraco/./src/ts/components/chat-launcher.ts","webpack://ico-umbraco/./src/ts/components/circle-icon.ts","webpack://ico-umbraco/./src/ts/components/dataset-download.ts","webpack://ico-umbraco/./src/ts/components/feature-box.ts","webpack://ico-umbraco/./src/ts/components/further-reading.ts","webpack://ico-umbraco/./src/ts/components/group-heading-link.ts","webpack://ico-umbraco/./src/ts/components/group-heading.ts","webpack://ico-umbraco/./src/ts/components/heading-text.ts","webpack://ico-umbraco/./src/ts/components/icon-navigation.ts","webpack://ico-umbraco/./src/ts/components/image-bullet.ts","webpack://ico-umbraco/./src/ts/components/image-navigation.ts","webpack://ico-umbraco/./src/ts/components/promoted-content.ts","webpack://ico-umbraco/./src/ts/components/video-embed.ts","webpack://ico-umbraco/./src/ts/index.ts","webpack://ico-umbraco/./src/ts/site/backToTop.ts","webpack://ico-umbraco/./src/ts/site/cookieControl.ts","webpack://ico-umbraco/./src/ts/site/downloadOptions.ts","webpack://ico-umbraco/./src/ts/site/filterPageNav.ts","webpack://ico-umbraco/./src/ts/site/language.ts","webpack://ico-umbraco/./src/ts/site/multipage.ts","webpack://ico-umbraco/./src/ts/site/navbar.ts","webpack://ico-umbraco/./src/ts/site/search.ts","webpack://ico-umbraco/./src/ts/site/silktide.ts","webpack://ico-umbraco/./src/ts/site/smartAnswer.ts","webpack://ico-umbraco/./src/ts/util/events.ts","webpack://ico-umbraco/./src/ts/util/motion.ts","webpack://ico-umbraco/webpack/bootstrap","webpack://ico-umbraco/webpack/runtime/global","webpack://ico-umbraco/webpack/startup"],"sourcesContent":["var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","const template = `\r\n
\r\n \r\n

\r\n
\r\n \"\"\r\n
\r\n
\r\n
`;\r\n\r\nexport default class ActionImageLink extends HTMLElement {\r\n\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((linkElement, titleElement, imageElement, href, target, title, imageUrl) => {\r\n if (href) {\r\n linkElement.href = href;\r\n }\r\n if (target) {\r\n linkElement.target = target;\r\n }\r\n if (title) {\r\n titleElement.innerText = title;\r\n }\r\n if (imageUrl) {\r\n imageElement.src = imageUrl;\r\n }\r\n })(\r\n this.querySelector(\"a\"),\r\n this.querySelector(\"h3\"),\r\n this.querySelector(\"img\"),\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-image\")\r\n );\r\n }\r\n\r\n}\r\n","const template = `\r\n\r\n \r\n \r\n`;\r\n\r\nexport default class ActionLink extends HTMLElement {\r\n\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((linkElement, containerElements, href, target, text, theme) => {\r\n if (href) {\r\n linkElement.href = href;\r\n }\r\n if (target) {\r\n linkElement.target = target;\r\n }\r\n if (theme) {\r\n linkElement.classList.add(`bg-theme-${theme}-light`, `after:border-t-theme-${theme}-light`, `after:border-l-theme-${theme}-light`);\r\n }\r\n if (text) {\r\n containerElements[0].innerText = text;\r\n }\r\n if (theme) {\r\n containerElements[1].innerHTML = ``;\r\n }\r\n })(\r\n this.querySelector(\"a\"),\r\n this.querySelectorAll(\"span\"),\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-text\"),\r\n this.getAttribute(\"x-theme\")\r\n );\r\n }\r\n\r\n}\r\n","interface QueueStatus {\r\n QueueStatusCode: number,\r\n QueueStatus: string,\r\n IsOpen: boolean,\r\n QueueModeId: number,\r\n QueueModeName: string,\r\n NumberOfCalls: number,\r\n Eta: number,\r\n QueueWaitTime: number,\r\n QueueId: number,\r\n QueueName: string,\r\n QueueNumber: string,\r\n}\r\n\r\ndeclare global {\r\n const initChat: (queueName: string, callback?: () => void) => void;\r\n}\r\n\r\n\r\ntype DisplayState = \"open\" | \"closed\" | undefined;\r\n\r\nconst promises: Record> = {};\r\nconst statuses: Record = {};\r\nlet isChatting: boolean = false;\r\n\r\nfunction checkQueueStatus(queue: string): Promise {\r\n return (promises[queue] ?? (promises[queue] = new Promise(resolve => {\r\n const request = fetch(\"https://livechat.ico.org.uk/webchat/client/GetQueueStatus\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ QueueName: queue })\r\n })\r\n request.then(response => {\r\n const read = response.json();\r\n read.then((data: QueueStatus) => {\r\n const chatEnabled = data.QueueModeName == \"Day\";\r\n resolve(chatEnabled);\r\n });\r\n read.catch(() => {\r\n resolve(false);\r\n });\r\n });\r\n request.catch(() => {\r\n resolve(false);\r\n })\r\n })));\r\n}\r\n\r\nfunction getState(isQueueOpen: boolean): DisplayState {\r\n if (isQueueOpen === true) return \"open\";\r\n if (isQueueOpen === false) return \"closed\";\r\n}\r\n\r\nconst containerCss = `mb-[10px] p-2 md:p-3 font-serif rounded-tl md:rounded-tl-lg rounded-r md:rounded-r-lg`;\r\nconst baseTailCss = `after:w-0 after:h-0 after:absolute after:left-0 after:-bottom-[10px] after:border-10 after:border-transparent`;\r\nconst defaultTailCss = `${baseTailCss} after:border-t-neutral-100 after:border-l-neutral-100`;\r\nconst getThemeTailCss = (theme: string) => `${baseTailCss} after:border-t-theme-${theme}-light after:border-l-theme-${theme}-light`;\r\n\r\nfunction getOpenTemplate(title: string, text: string, theme: string) {\r\n return `\r\n \r\n
\r\n
${title}
\r\n
${text}
\r\n
\r\n
\r\n \r\n
\r\n
`;\r\n}\r\n\r\nfunction getChattingTemplate(title: string, text: string, theme: string) {\r\n return `\r\n
\r\n
\r\n
${title}
\r\n
${text}
\r\n
\r\n
\r\n \r\n
\r\n
`;\r\n}\r\n\r\nfunction getClosedTemplate(title: string, text: string, href: string) {\r\n return `\r\n
\r\n
${title}
\r\n ${text}\r\n
`;\r\n}\r\n\r\nfunction getDefaultTemplate(title: string, text: string) {\r\n return `\r\n
\r\n
${title}
\r\n
${text}
\r\n
`;\r\n}\r\n\r\nexport default class ChatLauncher extends HTMLElement {\r\n\r\n constructor() {\r\n super();\r\n const queue = this.getAttribute(\"x-queue\") ?? \"\";\r\n this.addEventListener('click', (e) => {\r\n if (!isChatting && statuses[queue]) {\r\n e.preventDefault();\r\n initChat(queue, () => {\r\n isChatting = false;\r\n this.connectedCallback();\r\n });\r\n isChatting = true;\r\n this.connectedCallback();\r\n }\r\n });\r\n }\r\n\r\n connectedCallback() {\r\n const queue = this.getAttribute(\"x-queue\") ?? \"\";\r\n if (isChatting) {\r\n const title = this.getAttribute(\"x-open-title\") ?? \"\";\r\n const text = this.getAttribute(\"x-open-text\") ?? \"\";\r\n const theme = this.getAttribute(\"x-theme\") ?? \"light\";\r\n this.innerHTML = getChattingTemplate(title, text, theme);\r\n }\r\n else {\r\n const state: DisplayState = getState(statuses[queue]);\r\n\r\n switch (state) {\r\n case \"open\": {\r\n const title = this.getAttribute(\"x-open-title\") ?? \"\";\r\n const text = this.getAttribute(\"x-open-text\") ?? \"\";\r\n const theme = this.getAttribute(\"x-theme\") ?? \"\";\r\n this.innerHTML = getOpenTemplate(title, text, theme);\r\n break;\r\n }\r\n case \"closed\": {\r\n const title = this.getAttribute(\"x-closed-title\") ?? \"\";\r\n const text = this.getAttribute(\"x-closed-text\") ?? \"\";\r\n const href = this.getAttribute(\"x-link\") ?? \"\";\r\n this.innerHTML = href ? getClosedTemplate(title, text, href) : getDefaultTemplate(title, text);\r\n break;\r\n }\r\n default: {\r\n const title = this.getAttribute(\"x-loading-title\") ?? \"\";\r\n const text = this.getAttribute(\"x-loading-text\") ?? \"\";\r\n this.innerHTML = getDefaultTemplate(title, text);\r\n break;\r\n }\r\n }\r\n\r\n if (queue && !(queue in promises)) {\r\n window.setTimeout(async () => {\r\n statuses[queue] = await checkQueueStatus(queue);\r\n this.connectedCallback();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","const template = `\r\n\r\n \r\n`;\r\n\r\nexport default class CircleIcon extends HTMLElement {\r\n\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((elements, icon, theme) => {\r\n if (theme) {\r\n elements[0].classList.add(`bg-theme-${theme}`);\r\n }\r\n if (icon) {\r\n elements[1].classList.add(`icon-${icon}`);\r\n }\r\n })(\r\n this.querySelectorAll(\"span\"),\r\n this.getAttribute(\"x-icon\"),\r\n this.getAttribute(\"x-theme\"));\r\n }\r\n\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class DatasetDownload extends HTMLElement {\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((href, target, title, size, theme, checksumLabel, checksumValue) => {\r\n composeLink(this.querySelector(\"a\"), href, target, theme);\r\n composeIcon(this.querySelector(\"a > span\"));\r\n setText(this.querySelector(\"a > div > div.js-title\"), title);\r\n setText(this.querySelector(\"a > div > div.js-info > span.type\"), getTypeText(href));\r\n if (size) {\r\n setText(this.querySelector(\"a > div > div.js-info > span.size\"), '(' + formatBytes(parseInt(size)) + ')');\r\n }\r\n if (checksumLabel && checksumValue) {\r\n setText(this.querySelector(\"a > div > div.js-info > span.checksum\"), `${checksumLabel}: ${checksumValue}`);\r\n }\r\n })(\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-size\"),\r\n this.getAttribute(\"x-theme\"),\r\n this.getAttribute(\"x-checksum-label\"),\r\n this.getAttribute(\"x-checksum-value\")\r\n );\r\n }\r\n}\r\n\r\nfunction composeLink(element: HTMLAnchorElement, href?: string, target?: string, theme?: string) {\r\n if (href) {\r\n element.href = href;\r\n }\r\n if (target) {\r\n element.target = target;\r\n }\r\n element.classList.add(theme ? `border-theme-${theme}` : \"border-neutral-400\");\r\n}\r\n\r\nfunction composeIcon(element: HTMLElement) {\r\n (iconCss => {\r\n if (iconCss) {\r\n element.classList.add(iconCss);\r\n }\r\n })(getIconCss());\r\n}\r\n\r\nfunction setText(element: HTMLElement, text?: string, removeIfEmpty: boolean = true) {\r\n if (text) {\r\n element.innerText = text;\r\n }\r\n else if (removeIfEmpty) {\r\n element.remove();\r\n }\r\n}\r\n\r\nfunction getIconCss(): string {\r\n return \"icon-file-blank\";\r\n}\r\n\r\nfunction getTypeText(url?: string): string {\r\n const ext = getfileExtension(url);\r\n if (ext == \"zip\") {\r\n return \"ZIP\";\r\n }\r\n\r\n return \"File\";\r\n}\r\n\r\nfunction getfileExtension(url?: string): string {\r\n if (url) {\r\n const index = url.lastIndexOf(\".\");\r\n if (index !== -1) {\r\n return url.substring(index + 1);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction formatBytes(bytes: number, decimals = 2) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class FeatureBox extends HTMLElement {\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((isPrimary, isReversed) => {\r\n if (isPrimary) {\r\n (this.querySelectorAll(\"a > div\")[1]).classList.add(\"bg-primary\", \"text-white\");\r\n }\r\n composeLink(this.querySelector(\"a\"), this.getAttribute(\"x-href\"), this.getAttribute(\"x-target\"), this.getAttribute(\"x-theme\"), isReversed);\r\n composeTitle(this.querySelector(\"h2\"), this.getAttribute(\"x-title\"), isPrimary)\r\n this.querySelector(\"img\").src = this.getAttribute(\"x-image\");\r\n (this.querySelector(\"a > div > div\") as HTMLDivElement).innerText = this.getAttribute(\"x-description\");\r\n })(\r\n (this.getAttribute(\"x-primary\") ?? \"false\") !== \"false\",\r\n (this.getAttribute(\"x-reversed\") ?? \"false\") !== \"false\");\r\n }\r\n}\r\n\r\nfunction composeLink(element: HTMLAnchorElement, href?: string, target?: string, theme?: string, isReversed?: boolean) {\r\n if (href) {\r\n element.href = href;\r\n }\r\n if (target) {\r\n element.target = target;\r\n }\r\n (linkCss => {\r\n if (isReversed) {\r\n linkCss.push(\"flex-row-reverse\");\r\n }\r\n if (theme) {\r\n linkCss.push(`border-theme-${theme}`);\r\n }\r\n if (linkCss.length) {\r\n element.classList.add(...linkCss);\r\n }\r\n })([] as string[]);\r\n}\r\n\r\nfunction composeTitle(element: HTMLHeadingElement, title?: string, isPrimary?: boolean) {\r\n if (title) {\r\n if (!isPrimary) {\r\n element.classList.add(\"text-link\");\r\n }\r\n element.innerText = title;\r\n }\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class FurtherReading extends HTMLElement {\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((href, target, title, location, size, theme) => {\r\n composeLink(this.querySelector(\"a\"), href, target, theme);\r\n composeIcon(this.querySelector(\"a > span\"), href, location);\r\n setText(this.querySelector(\"a > div > div.js-title\"), title);\r\n setText(this.querySelector(\"a > div > div.js-info > div\"), location);\r\n setText(this.querySelector(\"a > div > div.js-info > span\"), getTypeText(href, location));\r\n if (size) {\r\n setText(this.querySelector(\"a > div > div.js-info > span:last-child\"), '(' + formatBytes(parseInt(size)) + ')');\r\n }\r\n })(\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-location\"),\r\n this.getAttribute(\"x-size\"),\r\n this.getAttribute(\"x-theme\")\r\n );\r\n }\r\n}\r\n\r\nfunction composeLink(element: HTMLAnchorElement, href?: string, target?: string, theme?: string) {\r\n if (href) {\r\n element.href = href;\r\n }\r\n if (target) {\r\n element.target = target;\r\n }\r\n element.classList.add(theme ? `border-theme-${theme}` : \"border-neutral-400\");\r\n}\r\n\r\nfunction composeIcon(element: HTMLElement, href?: string, location?: string) {\r\n (iconCss => {\r\n if (iconCss) {\r\n element.classList.add(iconCss);\r\n }\r\n })(getIconCss(href, location));\r\n}\r\n\r\nfunction setText(element: HTMLElement, text?: string, removeIfEmpty: boolean = true) {\r\n if (text) {\r\n element.innerText = text;\r\n }\r\n else if (removeIfEmpty) {\r\n element.remove();\r\n }\r\n}\r\n\r\nfunction getIconCss(url: string, location?: string): string {\r\n const ext = getfileExtension(url);\r\n if (location == \"External link\") {\r\n\r\n switch (url.split('.')[url.split('.').length - 1]) {\r\n case 'doc':\r\n case 'docx':\r\n return \"icon-file-word\";\r\n\r\n case 'odt':\r\n return \"icon-file-odt\";\r\n\r\n case 'pdf':\r\n return \"icon-file-pdf\";\r\n\r\n }\r\n return \"icon-external\"\r\n }\r\n switch (ext) {\r\n case 'doc':\r\n case 'docx':\r\n return \"icon-file-word\";\r\n\r\n case 'odt':\r\n return \"icon-file-odt\";\r\n\r\n case 'pdf':\r\n return \"icon-file-pdf\";\r\n }\r\n return \"icon-file-blank\";\r\n}\r\n\r\nfunction getTypeText(url?: string, location?: string): string {\r\n const ext = getfileExtension(url);\r\n if (location == \"External link\") {\r\n switch (url.split('.')[url.split('.').length - 1]) {\r\n case 'doc':\r\n case 'docx':\r\n return \"Word\";\r\n\r\n case 'odt':\r\n return \"ODT\";\r\n\r\n case 'pdf':\r\n return \"PDF\";\r\n }\r\n return \"\"\r\n }\r\n switch (ext) {\r\n case 'doc':\r\n case 'docx':\r\n return \"Word\";\r\n\r\n case 'odt':\r\n return \"ODT\";\r\n\r\n case 'pdf':\r\n return \"PDF\";\r\n\r\n case '':\r\n return \"\";\r\n\r\n default:\r\n return \"File\";\r\n }\r\n\r\n}\r\n\r\nfunction getfileExtension(url?: string): string {\r\n if (url) {\r\n const index = url.lastIndexOf(\".\");\r\n if (index !== -1) {\r\n return url.substring(index + 1);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nfunction formatBytes(bytes: number, decimals = 2) {\r\n if (!+bytes) return '0 Bytes'\r\n\r\n const k = 1024\r\n const dm = decimals < 0 ? 0 : decimals\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k))\r\n\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class GroupHeadingLink extends HTMLElement {\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((linkElement, iconContainerElement, titleElement, descriptionElement) => {\r\n ((href, target, title, description, theme) => {\r\n if (href) {\r\n linkElement.href = href;\r\n }\r\n if (target) {\r\n linkElement.target = target;\r\n }\r\n if (title) {\r\n titleElement.innerText = title;\r\n }\r\n else {\r\n titleElement.remove();\r\n }\r\n if (description) {\r\n descriptionElement.innerText = description;\r\n }\r\n else {\r\n descriptionElement.remove();\r\n }\r\n if (theme) {\r\n linkElement.classList.add(`border-theme-${theme}`);\r\n iconContainerElement.innerHTML = ``;\r\n }\r\n })(\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-description\"),\r\n this.getAttribute(\"x-theme\"));\r\n })(\r\n this.querySelector(\"a\"),\r\n this.querySelector(\"a > div\") as HTMLDivElement,\r\n this.querySelector(\"h2\"),\r\n this.querySelector(\"div > div\"));\r\n }\r\n}\r\n","const template = `\r\n
\r\n
\r\n

\r\n
\r\n
\r\n
`;\r\n\r\nexport default class GroupHeading extends HTMLElement {\r\n\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((element, titleElement, descriptionElement, title, description, theme) => {\r\n if (title) {\r\n titleElement.innerText = title;\r\n }\r\n else {\r\n titleElement.remove();\r\n }\r\n if (description) {\r\n descriptionElement.innerText = description;\r\n }\r\n else {\r\n descriptionElement.remove();\r\n }\r\n if (theme) {\r\n element.classList.add(`border-theme-${theme}`);\r\n }\r\n })(\r\n this.querySelector(\"div > div\"),\r\n this.querySelector(\"h2\"),\r\n this.querySelector(\"div > div > div\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-description\"),\r\n this.getAttribute(\"x-theme\"));\r\n }\r\n\r\n}\r\n","export default class HeadingText extends HTMLElement {\r\n\r\n connectedCallback() {\r\n ((tag, text, theme, hasBar) => {\r\n this.innerHTML = `<${tag}>`;\r\n ((element: HTMLElement) => {\r\n if (text) {\r\n element.innerText = text;\r\n }\r\n element.classList.add(\r\n ...(css => {\r\n switch (tag) {\r\n case \"h2\":\r\n css.push(\"font-serif\", \"text-serif-2xl\")\r\n break;\r\n case \"h3\":\r\n css.push(\"font-serif\", \"text-serif-xl\");\r\n break;\r\n default:\r\n css.push(\"text-lg\", \"font-semibold\");\r\n break;\r\n }\r\n return css;\r\n })([] as string[]),\r\n ...(css => {\r\n if (hasBar) {\r\n css.push(\"sm:border-l-10\", \"sm:pl-3\", ...((css => {\r\n if (theme) {\r\n css.push(`border-theme-${theme}-light`);\r\n }\r\n return css;\r\n })([] as string[])));\r\n }\r\n return css;\r\n })([] as string[]));\r\n })(this.querySelector(tag));\r\n })(\r\n this.getAttribute(\"x-level\") || \"h2\",\r\n this.getAttribute(\"x-text\"),\r\n this.getAttribute(\"x-theme\"),\r\n (this.getAttribute(\"x-bar\") ?? \"false\") !== \"false\");\r\n }\r\n\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class IconNavigation extends HTMLElement {\r\n\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((linkElement, titleElement, descriptionElement, iconContainerElement) => {\r\n ((href, target, title, description, theme) => {\r\n if (href) {\r\n linkElement.href = href;\r\n }\r\n if (target) {\r\n linkElement.target = target;\r\n }\r\n if (title) {\r\n titleElement.innerText = title;\r\n }\r\n else {\r\n titleElement.remove();\r\n }\r\n if (description) {\r\n descriptionElement.innerText = description;\r\n }\r\n else {\r\n descriptionElement.remove();\r\n }\r\n if (theme) {\r\n iconContainerElement.innerHTML = ``;\r\n }\r\n })(\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-description\"),\r\n this.getAttribute(\"x-theme\"));\r\n })(\r\n this.querySelector(\"a\"),\r\n this.querySelector(\"h3\"),\r\n this.querySelector(\"a > div > div\") as HTMLDivElement,\r\n this.querySelector(\"a > span\") as HTMLSpanElement)\r\n };\r\n\r\n}\r\n","export default class ImageBullet extends HTMLElement {\r\n\r\n connectedCallback() {\r\n ((content, image, imageAlt, imageRight, theme) => {\r\n const imagePositionedRight = imageRight == \"true\";\r\n let template;\r\n const bgThemeCss = `bg-theme-${theme}-light`;\r\n if (imagePositionedRight) {\r\n template =\r\n `
\r\n
${content}
\r\n
\r\n \"${imageAlt}\"\r\n
\r\n
`;\r\n }\r\n else {\r\n template =\r\n `
\r\n
\r\n \"${imageAlt}\"\r\n
\r\n
${content}
\r\n
`;\r\n }\r\n\r\n this.innerHTML = template;\r\n })(\r\n this.getAttribute(\"x-content\") ?? \"\",\r\n this.getAttribute(\"x-image\") ?? \"\",\r\n this.getAttribute(\"x-image-alt\") ?? \"\",\r\n this.getAttribute(\"x-image-right\") ?? \"\",\r\n this.getAttribute(\"x-theme\") ?? \"\");\r\n }\r\n}\r\n","const template = `\r\n`;\r\n\r\nexport default class ImageNavigation extends HTMLElement {\r\n connectedCallback() {\r\n this.innerHTML = template;\r\n ((linkElement, titleElement, descriptionElement, imageContainerElement, imageElement) => {\r\n ((href, target, title, description, imageUrl, theme) => {\r\n if (href) {\r\n linkElement.href = href;\r\n }\r\n if (target) {\r\n linkElement.target = target;\r\n }\r\n if (title) {\r\n titleElement.innerText = title;\r\n }\r\n else {\r\n titleElement.remove();\r\n }\r\n if (description) {\r\n descriptionElement.innerText = description;\r\n }\r\n if (theme) {\r\n imageContainerElement.classList.add(`border-theme-${theme}`);\r\n }\r\n if (imageUrl) {\r\n imageElement.src = imageUrl;\r\n }\r\n })(\r\n this.getAttribute(\"x-href\"),\r\n this.getAttribute(\"x-target\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-description\"),\r\n this.getAttribute(\"x-image\") || \"\",\r\n this.getAttribute(\"x-theme\"));\r\n })(\r\n this.querySelector(\"a\"),\r\n this.querySelector(\"h3\"),\r\n this.querySelector(\"a > div > div\") as HTMLDivElement,\r\n this.querySelectorAll(\"a > div\")[1],\r\n this.querySelector(\"img\"));\r\n }\r\n}\r\n","export default class PromotedContent extends HTMLElement {\r\n\r\n connectedCallback() {\r\n ((items, moreText, moreLink) => {\r\n if (items == null) {\r\n return;\r\n }\r\n const data: FeaturedItem[] = JSON.parse(items);\r\n let featuredPromotions = \"\",\r\n otherPromotions = \"\",\r\n moreButton = \"\",\r\n index = 0;\r\n\r\n data.forEach(item => {\r\n index++;\r\n if (item.isFeatured) {\r\n const featuredImage = item.imageUrl ? `\"${item.imageAlt}\"` : \"\";\r\n\r\n featuredPromotions +=\r\n `\r\n ${featuredImage}\r\n
\r\n

${item.title}

\r\n

${item.description}

\r\n
\r\n
`;\r\n }\r\n else {\r\n const borderClass = index == data.length ? \"md:border-dotted md:border-b-2 md:border-neutral-300\" : \"border-dotted border-b-2 border-neutral-300\";\r\n otherPromotions +=\r\n `\r\n

${item.title}

\r\n

${item.date}

\r\n
`;\r\n }\r\n });\r\n\r\n if (moreText && moreLink) {\r\n moreButton = `\r\n \r\n ${moreText}\r\n \r\n `;\r\n }\r\n\r\n const template = `\r\n
\r\n
\r\n
\r\n ${featuredPromotions}\r\n
\r\n
\r\n
\r\n ${otherPromotions}\r\n
\r\n ${moreButton}\r\n
\r\n
\r\n
\r\n `;\r\n\r\n this.innerHTML = template;\r\n })(\r\n this.getAttribute(\"x-items\"),\r\n this.getAttribute('x-more-text'),\r\n this.getAttribute('x-more-href'),\r\n );\r\n }\r\n}\r\n\r\ninterface FeaturedItem {\r\n isFeatured: boolean;\r\n title: string;\r\n description: string;\r\n imageUrl: string;\r\n imageAlt: string;\r\n href: string;\r\n date: string;\r\n}\r\n","const enhancedTemplate = `\r\n
\r\n \r\n
\r\n`;\r\nconst defaultTemplate = `\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n`;\r\n\r\nexport default class VideoEmbed extends HTMLElement {\r\n\r\n enhanced: boolean = false;\r\n\r\n constructor() {\r\n document.addEventListener('cookie-accepted-videoPlayer', () => {\r\n this.enhanced = true;\r\n this.connectedCallback();\r\n });\r\n\r\n document.addEventListener('cookie-rejected-videoPlayer', () => {\r\n this.enhanced = false;\r\n this.connectedCallback();\r\n });\r\n super();\r\n }\r\n\r\n connectedCallback() {\r\n const youTubeEmbedPrivacy = \"https://www.youtube-nocookie.com/embed/\";\r\n const vimeoEmbed = \"https://player.vimeo.com/video/\";\r\n this.innerHTML = this.enhanced ? enhancedTemplate : defaultTemplate;\r\n ((element, title, src, a, opensIn) => {\r\n\r\n if (this.enhanced) {\r\n if (title) {\r\n element.title = title;\r\n }\r\n\r\n const youTubeUrlMatch: RegExpMatchArray | null = /(?:https?:\\/\\/)?(?:www\\.)?youtu\\.?be(?:\\.com)?\\/?.*(?:watch|embed)?(?:.*v=|v\\/|\\/)([\\w-]+)/.exec(src);\r\n const vimeoUrlMatch: RegExpMatchArray | null = /vimeo\\.com\\/(?:.*#|.*\\/videos\\/)?(\\d+)/.exec(src);\r\n\r\n if (src) {\r\n if (youTubeUrlMatch) {\r\n const videoId = youTubeUrlMatch?.[1];\r\n element.src = youTubeEmbedPrivacy + videoId + \"?\" + \"rel=0\";\r\n }\r\n if (vimeoUrlMatch) {\r\n const videoId = vimeoUrlMatch?.[1];\r\n element.src = vimeoEmbed + videoId + \"?\" + \"dnt=true\";\r\n }\r\n }\r\n }\r\n else {\r\n a.href = src;\r\n const titleElement = a.querySelector('.text-link');\r\n titleElement.innerHTML = title;\r\n const opensInElement = a.querySelector('.opens-in');\r\n opensInElement.innerHTML = opensIn;\r\n }\r\n })(\r\n this.querySelector(\"iframe\"),\r\n this.getAttribute(\"x-title\"),\r\n this.getAttribute(\"x-src\"),\r\n this.querySelector(\"a\"),\r\n this.getAttribute(\"x-opens-in\")\r\n );\r\n }\r\n\r\n}\r\n","import \"./site/language\";\r\nimport \"./site/navbar\";\r\nimport \"./site/search\";\r\nimport \"./site/backToTop\";\r\nimport \"./site/filterPageFilters\";\r\nimport \"./site/filterPageNav\";\r\nimport \"./site/multipage\";\r\nimport \"./site/downloadOptions\";\r\nimport \"./site/smartAnswer\";\r\nimport \"./site/silktide\";\r\n\r\nimport ActionImageLink from \"./components/action-image-link\";\r\nimport ActionLink from \"./components/action-link\";\r\nimport ChatLauncher from \"./components/chat-launcher\";\r\nimport CircleIcon from \"./components/circle-icon\";\r\nimport DatasetDownload from \"./components/dataset-download\";\r\nimport FeatureBox from \"./components/feature-box\";\r\nimport FurtherReading from \"./components/further-reading\";\r\nimport GroupHeading from \"./components/group-heading\";\r\nimport GroupHeadingLink from \"./components/group-heading-link\";\r\nimport HeadingText from \"./components/heading-text\";\r\nimport IconNavigation from \"./components/icon-navigation\";\r\nimport ImageBullet from \"./components/image-bullet\";\r\nimport ImageNavigation from \"./components/image-navigation\";\r\nimport PromotedContent from \"./components/promoted-content\";\r\nimport VideoEmbed from \"./components/video-embed\";\r\n\r\nObject.entries({\r\n \"action-image-link\": ActionImageLink,\r\n \"action-link\": ActionLink,\r\n \"chat-launcher\": ChatLauncher,\r\n \"circle-icon\": CircleIcon,\r\n \"dataset-download\": DatasetDownload,\r\n \"feature-box\": FeatureBox,\r\n \"further-reading\": FurtherReading,\r\n \"group-heading\": GroupHeading,\r\n \"group-heading-link\": GroupHeadingLink,\r\n \"heading-text\": HeadingText,\r\n \"icon-navigation\": IconNavigation,\r\n \"image-bullet\": ImageBullet,\r\n \"image-navigation\": ImageNavigation,\r\n \"video-embed\": VideoEmbed,\r\n \"promoted-content\": PromotedContent,\r\n} as Record).forEach(([key, item]) => {\r\n window.customElements.define(key, item);\r\n});\r\n\r\n// Run last so cookie events can be picked up\r\nimport \"./site/cookieControl\";\r\n","import debounce from \"lodash/debounce\";\r\n\r\nconst css = { hidden: \"hidden\", invisible: \"opacity-0\" }\r\nconst element = document.getElementById(\"button-top\");\r\n\r\nfunction update() {\r\n if (window.scrollY === 0) {\r\n // Hide\r\n element.classList.add(css.invisible);\r\n } else {\r\n // Show\r\n element.classList.remove(css.hidden, css.invisible);\r\n }\r\n}\r\n\r\nif (element != null) {\r\n element.addEventListener(\"transitionend\", () => {\r\n if (element.classList.contains(css.invisible)) {\r\n element.classList.add(css.hidden);\r\n }\r\n });\r\n\r\n window.addEventListener(\"scroll\", debounce(update, 500));\r\n\r\n update();\r\n}\r\n","import { ICookieControlConfig, ICookieControlOptionalCookiesConfig } from \"../external/cookieControl\";\r\n\r\nconst element = document.getElementById(\"cookie-settings\");\r\nif (element) {\r\n const options: ICookieControlConfig = JSON.parse(element.innerText);\r\n if (options.optionalCookies?.length) {\r\n options.optionalCookies.forEach(option => {\r\n Object.assign(option, {\r\n cookies: [],\r\n lawfulBasis: \"consent\",\r\n onAccept: () => {\r\n const event = new CustomEvent(`cookie-accepted-${option.name}`);\r\n document.dispatchEvent(event);\r\n },\r\n onRevoke: () => {\r\n const event = new CustomEvent(`cookie-rejected-${option.name}`);\r\n document.dispatchEvent(event);\r\n }\r\n } as ICookieControlOptionalCookiesConfig);\r\n });\r\n }\r\n\r\n const config: ICookieControlConfig = {\r\n product: \"PRO\",\r\n consentCookieExpiry: 90,\r\n encodeCookie: false,\r\n sameSiteCookie: true,\r\n sameSiteValue: \"Strict\",\r\n subDomains: true,\r\n initialState: \"open\",\r\n position: \"left\",\r\n theme: \"dark\",\r\n rejectButton: true,\r\n closeStyle: \"button\",\r\n branding: {\r\n fontColor: \"white\",\r\n backgroundColor: \"#0276a5\",\r\n acceptText: \"black\",\r\n acceptBackground: \"white\",\r\n rejectText: \"black\",\r\n rejectBackground: \"white\",\r\n toggleText: \"white\",\r\n toggleBackground: \"#2f2f5f\",\r\n toggleColor: \"#0276a5\",\r\n removeAbout: true,\r\n },\r\n ...options,\r\n };\r\n\r\n CookieControl.load(config);\r\n}","import prefersReducedMotion from \"../util/motion\";\r\n\r\nconst reducedMotion = prefersReducedMotion();\r\n\r\nconst container = document.getElementById(\"download-options-container\");\r\nconst toggle = document.getElementById(\"download-options-toggle\");\r\n\r\nconst css = { open: \"max-h-64\", closed: \"max-h-0\", hidden: \"hidden\" };\r\n\r\nif (container && toggle) {\r\n toggle.addEventListener(\"click\", e => {\r\n e.preventDefault();\r\n if (container.classList.contains(css.hidden)) {\r\n open(container);\r\n }\r\n else {\r\n close(container);\r\n }\r\n });\r\n if (!reducedMotion) {\r\n container.addEventListener(\"transitionend\", () => {\r\n if (!container.clientHeight) {\r\n container.classList.add(css.hidden);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction open(container: HTMLElement) {\r\n container.classList.remove(css.hidden, css.closed);\r\n container.classList.add(css.open);\r\n}\r\n\r\nfunction close(container: HTMLElement) {\r\n container.classList.remove(css.open);\r\n container.classList.add(css.closed);\r\n if (reducedMotion) {\r\n container.classList.add(css.hidden);\r\n }\r\n}\r\n","const container = document.getElementById(\"filterpage-nav\");\r\nconst toggle = document.getElementById(\"filterpage-nav-toggle\");\r\nconst css = { open: \"max-h-96\", closed: \"max-h-0\", hidden: \"hidden\" };\r\n\r\nif (container && toggle) {\r\n toggle.addEventListener(\"click\", () => {\r\n if (container.classList.contains(css.hidden)) {\r\n container.classList.remove(css.hidden);\r\n window.setTimeout(() => {\r\n container.classList.remove(css.closed);\r\n container.classList.add(css.open);\r\n });\r\n }\r\n else {\r\n container.classList.remove(css.open);\r\n container.classList.add(css.closed);\r\n }\r\n });\r\n container.addEventListener(\"transitionend\", () => {\r\n if (!container.clientHeight) {\r\n container.classList.add(css.hidden);\r\n }\r\n });\r\n}\r\n","import { addEventListener } from \"../util/events\";\r\n\r\ninterface Option {\r\n text: string;\r\n href: string;\r\n icon: string;\r\n value?: string;\r\n}\r\n\r\ninterface Settings {\r\n cookieDomain?: string;\r\n options: Option[];\r\n}\r\n\r\nconst cookieName = \"language\";\r\nconst settings: Settings = (element => element ? JSON.parse(element.innerHTML) : void 0)(document.getElementById(\"language-settings\"));\r\n\r\nfunction getHost(url: string): string {\r\n return new URL(url).host.toLowerCase();\r\n}\r\n\r\nfunction getCookie(): string | undefined {\r\n const name = `${cookieName}=`;\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(\";\");\r\n for (const c of ca) {\r\n let x = c;\r\n while (x.startsWith(\" \")) {\r\n x = x.substring(1);\r\n }\r\n if (x.startsWith(name)) {\r\n return x.substring(name.length, x.length);\r\n }\r\n }\r\n return void 0;\r\n}\r\n\r\nfunction setCookie(value: string): void {\r\n document.cookie = [\r\n `${cookieName}=${value}`,\r\n ...(settings.cookieDomain ? [`domain=${settings.cookieDomain}`] : []),\r\n \"path=/\",\r\n ].join(\";\");\r\n}\r\n\r\nfunction deleteCookie(): void {\r\n const date = new Date();\r\n date.setTime(date.getTime() - 3600000);\r\n document.cookie = [\r\n `${cookieName}=`,\r\n `expires=${date.toUTCString()}`,\r\n ...(settings.cookieDomain ? [`domain=${settings.cookieDomain}`] : []),\r\n \"path=/\",\r\n ].join(\";\");\r\n}\r\n\r\nfunction isConfiguredHost(currentHost: string): boolean {\r\n for (const option of settings.options) {\r\n if (getHost(option.href) === currentHost) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction tryRedirect(currentHost: string, cookie: string): boolean {\r\n if (cookie) {\r\n for (const option of settings.options) {\r\n if (option.value === cookie && getHost(option.href) !== currentHost) {\r\n // Ideally delete the cookie here but can't for compatibility with legacy site\r\n window.location.href = option.href;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction setToggle(currentHost: string) {\r\n const element = document.getElementById(\"language-toggle\");\r\n if (element) {\r\n for (const option of settings.options) {\r\n if (getHost(option.href) !== currentHost) {\r\n // Ideally just delete the cookie here but setting it for compatibility with legacy site\r\n const handler = !option.value ? () => { deleteCookie(); } : () => { setCookie(option.value); }\r\n addEventListener(element, \"click\", handler, \"a\");\r\n element.innerHTML =\r\n `
\r\n \r\n ${option.text}\r\n `;\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\nif (settings?.options?.length) {\r\n const currentHost = getHost(window.location.href);\r\n if (isConfiguredHost(currentHost)) {\r\n const cookie = getCookie();\r\n if (!tryRedirect(currentHost, cookie)) {\r\n setToggle(currentHost);\r\n }\r\n }\r\n}\r\n","import prefersReducedMotion from \"../util/motion\";\r\n\r\nconst reducedMotion = prefersReducedMotion();\r\n\r\nconst container = document.getElementById(\"multipage-nav\");\r\nconst toggle = document.getElementById(\"multipage-nav-toggle\");\r\n\r\nconst css = { open: \"max-h-96\", closed: \"max-h-0\", hidden: \"hidden\" };\r\n\r\nif (container && toggle) {\r\n toggle.addEventListener(\"click\", () => {\r\n if (container.classList.contains(css.hidden)) {\r\n open(container);\r\n }\r\n else {\r\n close(container);\r\n }\r\n });\r\n if (!reducedMotion) {\r\n container.addEventListener(\"transitionend\", () => {\r\n if (!container.clientHeight) {\r\n container.classList.add(css.hidden);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction open(container: HTMLElement) {\r\n container.classList.remove(css.hidden, css.closed);\r\n container.classList.add(css.open);\r\n}\r\n\r\nfunction close(container: HTMLElement) {\r\n container.classList.remove(css.open);\r\n container.classList.add(css.closed);\r\n if (reducedMotion) {\r\n container.classList.add(css.hidden);\r\n }\r\n}\r\n","const container = document.getElementById(\"navbar\");\r\nconst toggle = document.getElementById(\"navbar-toggle\");\r\nconst css = { open: \"max-h-72\", closed: \"max-h-0\", hidden: \"hidden\" };\r\nif (container && toggle) {\r\n toggle.addEventListener(\"click\", () => {\r\n if (container.classList.contains(css.closed)) {\r\n container.classList.remove(css.hidden);\r\n window.setTimeout(() => {\r\n container.classList.replace(css.closed, css.open);\r\n });\r\n }\r\n else {\r\n container.classList.replace(css.open, css.closed);\r\n }\r\n });\r\n container.addEventListener(\"transitionend\", () => {\r\n if (!container.clientHeight) {\r\n container.classList.add(css.hidden);\r\n }\r\n });\r\n}\r\n","const container = document.getElementById(\"search\");\r\nconst toggle = document.getElementById(\"search-toggle\");\r\nconst icon = document.getElementById(\"search-icon\");\r\nconst css = { open: \"max-h-14\", closed: \"max-h-0\", hidden: \"hidden\" };\r\nconst iconCss = { open: \"icon-cross\", closed: \"icon-search\" };\r\nif (container && toggle) {\r\n toggle.addEventListener(\"click\", () => {\r\n if (container.classList.contains(css.closed)) {\r\n container.classList.remove(css.hidden);\r\n window.setTimeout(() => {\r\n container.classList.replace(css.closed, css.open);\r\n if (icon) {\r\n icon.classList.replace(iconCss.closed, iconCss.open);\r\n }\r\n });\r\n }\r\n else {\r\n container.classList.replace(css.open, css.closed);\r\n if (icon) {\r\n icon.classList.replace(iconCss.open, iconCss.closed);\r\n }\r\n }\r\n });\r\n container.addEventListener(\"transitionend\", () => {\r\n if (!container.clientHeight) {\r\n container.classList.add(css.hidden);\r\n }\r\n });\r\n}\r\n\r\nconst form = document.getElementById(\"search-form\");\r\nconst input = document.getElementById(\"search-query\") as HTMLInputElement;\r\nif (form && input) {\r\n form.addEventListener(\"submit\", e => {\r\n if (!(input.value ?? \"\").trim()) {\r\n e.preventDefault();\r\n }\r\n });\r\n}\r\n","const element = document.getElementById(\"silktide-settings\");\r\nconst token = element?.innerText;\r\n\r\ninterface SilktideWindow extends Window {\r\n stConfig: SilktideConfig;\r\n stEvents: SilktideEvents;\r\n silktide: Silktide;\r\n}\r\n\r\ninterface SilktideConfig { }\r\n\r\ninterface SilktideEvents {\r\n push: (e: SilktideEventInfo) => number;\r\n}\r\n\r\ninterface SilktideEventInfo {\r\n event?: string;\r\n}\r\n\r\ntype Silktide = (event: string, p?: SilktideEventInfo) => void;\r\n\r\n(function (s: SilktideWindow, i: \"stConfig\", l: \"stEvents\", k: \"silktide\", y) {\r\n\r\n const id = \"silktide-script\";\r\n const func: Silktide = function (e, p) { p = p || {}; p.event = e; s[l].push(p); };\r\n\r\n function enable() {\r\n if (token) {\r\n document.getElementById(id) || (function () {\r\n const el = document.createElement(\"script\");\r\n el.id = id;\r\n el.async = true;\r\n el.src = \"https://analytics.silktide.com/\" + token + \".js\";\r\n document.body.append(el);\r\n })();\r\n s[i] = s[i] || y;\r\n s[l] = s[l] || [];\r\n s[k] = func;\r\n s[k](\"page_load\");\r\n }\r\n }\r\n\r\n function disable() {\r\n s[k] = function () { };\r\n }\r\n\r\n document.addEventListener('cookie-accepted-analytics', () => {\r\n enable();\r\n });\r\n\r\n document.addEventListener('cookie-rejected-analytics', () => {\r\n disable();\r\n });\r\n\r\n})((window as unknown) as SilktideWindow, \"stConfig\", \"stEvents\", \"silktide\", {});\r\n","const form = document.getElementById(\"smart-answer-form\") as HTMLFormElement;\r\nif (form !== null) {\r\n const radioName = form.getAttribute('data-radio-name');\r\n if (radioName !== null) {\r\n form.addEventListener('submit', (e) => {\r\n e.preventDefault();\r\n const targetValue = form.querySelector('input[name=\"' + radioName + '\"]:checked');\r\n if (targetValue != null) {\r\n form.submit();\r\n }\r\n else {\r\n location.reload();\r\n }\r\n })\r\n }\r\n}","export function addEventListener(el: Element, eventName: string, eventHandler: EventListener, selector?: string) {\r\n if (selector) {\r\n const wrappedHandler = (e: Event) => {\r\n if (!e.target) return;\r\n if (!(e.target instanceof Element)) return;\r\n const el = e.target.closest(selector);\r\n if (el) {\r\n eventHandler.call(el, e);\r\n }\r\n };\r\n el.addEventListener(eventName, wrappedHandler);\r\n return wrappedHandler;\r\n } else {\r\n const wrappedHandler = (e: Event) => {\r\n eventHandler.call(el, e);\r\n };\r\n el.addEventListener(eventName, wrappedHandler);\r\n return wrappedHandler;\r\n }\r\n}\r\n","const prefersReducedMotion = () => window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\nexport default prefersReducedMotion;\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(4113);\n"],"names":["Symbol","module","exports","getRawTag","objectToString","symToStringTag","toStringTag","undefined","value","Object","trimmedEndIndex","reTrimStart","string","slice","replace","freeGlobal","g","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","isOwn","call","tag","unmasked","e","result","freeSelf","self","root","Function","reWhitespace","index","length","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","timeWaiting","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","clearTimeout","cancel","flush","type","baseGetTag","isObjectLike","Date","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","ActionImageLink","HTMLElement","connectedCallback","linkElement","titleElement","imageElement","href","target","title","imageUrl","innerHTML","querySelector","getAttribute","innerText","src","ActionLink","containerElements","text","theme","querySelectorAll","classList","add","promises","statuses","isChatting","containerCss","baseTailCss","defaultTailCss","getThemeTailCss","getDefaultTemplate","ChatLauncher","constructor","super","queue","addEventListener","preventDefault","initChat","getChattingTemplate","isQueueOpen","getOpenTemplate","getClosedTemplate","window","Promise","resolve","request","fetch","method","headers","body","JSON","stringify","QueueName","then","response","read","json","data","chatEnabled","QueueModeName","catch","checkQueueStatus","CircleIcon","elements","icon","DatasetDownload","size","checksumLabel","checksumValue","element","composeLink","setText","url","lastIndexOf","substring","getfileExtension","bytes","decimals","dm","i","floor","log","parseFloat","pow","toFixed","formatBytes","removeIfEmpty","remove","FeatureBox","isPrimary","isReversed","linkCss","push","composeTitle","FurtherReading","location","iconCss","ext","split","getIconCss","composeIcon","getTypeText","GroupHeadingLink","iconContainerElement","descriptionElement","description","GroupHeading","HeadingText","hasBar","css","IconNavigation","ImageBullet","content","image","imageAlt","imageRight","template","bgThemeCss","ImageNavigation","imageContainerElement","PromotedContent","items","moreText","moreLink","parse","featuredPromotions","otherPromotions","moreButton","forEach","item","isFeatured","featuredImage","borderClass","date","VideoEmbed","document","enhanced","a","opensIn","youTubeUrlMatch","exec","vimeoUrlMatch","videoId","youTubeEmbedPrivacy","vimeoEmbed","entries","key","customElements","define","getElementById","update","scrollY","contains","optionalCookies","option","assign","cookies","lawfulBasis","onAccept","event","CustomEvent","name","dispatchEvent","onRevoke","config","product","consentCookieExpiry","encodeCookie","sameSiteCookie","sameSiteValue","subDomains","initialState","position","rejectButton","closeStyle","branding","fontColor","backgroundColor","acceptText","acceptBackground","rejectText","rejectBackground","toggleText","toggleBackground","toggleColor","removeAbout","CookieControl","load","reducedMotion","container","toggle","open","close","clientHeight","cookieName","settings","getHost","URL","host","toLowerCase","deleteCookie","setTime","getTime","cookie","toUTCString","cookieDomain","join","currentHost","isConfiguredHost","tryRedirect","ca","decodeURIComponent","c","x","startsWith","getCookie","handler","setToggle","form","input","trim","token","s","l","k","y","id","p","el","createElement","async","append","radioName","submit","reload","eventName","eventHandler","selector","wrappedHandler","Element","closest","matchMedia","matches","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","globalThis"],"sourceRoot":""}