{"version":3,"file":"app-cff5ab686e5639d2fe15.js","mappings":"mIAGAA,EAAQ,OAA2B,EAoBnCA,EAAQ,EAjByB,SAAUC,GACzC,IAAIC,EAASC,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,SACjF,MAAMG,EAAgBL,EAAMM,SAAS,SAC/BC,EAAeP,EAAMM,SAAS,QAC9BE,EAAeR,EAAMM,SAAS,QACpC,MAAc,MAAVN,EAAsBA,IACtBK,GAAiBE,GAAgBC,KACnCP,EAAS,SAEI,WAAXA,EACKD,EAAMM,SAAS,KAAON,EAAQ,GAAGA,KAE3B,UAAXC,GACKD,EAAMM,SAAS,KAAON,EAAMS,MAAM,GAAI,GAExCT,EACT,C,mCCpBAD,EAAQW,YAAa,EACrBX,EAAQY,2BAAwB,EACZ,EAAQ,MACE,EAAQ,MAetCZ,EAAQY,sBAZsB,KAMyC,C,kCCZvEZ,EAAQW,YAAa,EACrBX,EAAQa,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,C,oCCJAjB,EAAQW,YAAa,EACrBX,EAAQkB,uBAKR,SAAgCJ,GAC9B,IAAKA,EAAiBV,OACpB,OAEF,MAAMe,EAAkBC,SAASC,cAAc,0BACzCC,EAAkBF,SAASC,cAAc,kDAC3CF,GACFA,EAAgBI,SAEdD,GACFA,EAAgBC,SAElB,MAAMC,GAAW,EAAIC,EAAaZ,aAAaC,GACzCY,EAAUN,SAASO,cAAc,UACvCD,EAAQE,QAAQC,UAAY,GAC5BH,EAAQI,WAAY,EAAIC,EAAaC,kBAAkB,CACrDf,QAASO,IAEXJ,SAASa,KAAKC,YAAYR,EAC5B,EAvBA,IAAIK,EAAe,EAAQ,MACvBN,EAAe,EAAQ,K,4HCJZ,SAASU,EAAUC,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIC,UAAU,sDAEtBF,EAASG,UAAYC,OAAOC,OAAOJ,GAAcA,EAAWE,UAAW,CACrEG,YAAa,CACXC,MAAOP,EACPQ,UAAU,EACVC,cAAc,KAGlBL,OAAOM,eAAeV,EAAU,YAAa,CAC3CQ,UAAU,IAERP,IAAY,EAAAU,EAAA,GAAeX,EAAUC,EAC3C,CCde,SAASW,EAA2BC,EAAMC,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIZ,UAAU,4DAEtB,OAAO,EAAAa,EAAA,GAAsBF,EAC/B,CCTe,SAASG,EAAgBC,GAItC,OAHAD,EAAkBZ,OAAOO,eAAiBP,OAAOc,eAAeC,OAAS,SAAyBF,GAChG,OAAOA,EAAEG,WAAahB,OAAOc,eAAeD,EAC9C,EACOD,EAAgBC,EACzB,C,qCCDe,SAASI,EAASC,GAC/B,OCLa,SAAyBA,GACtC,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,CACjC,CDGS,CAAeA,KAAQ,EAAAG,EAAA,GAAgBH,KAAQ,EAAAI,EAAA,GAA2BJ,IELpE,WACb,MAAM,IAAIpB,UAAU,4IACtB,CFG2F,EAC3F,CGGA,SAASyB,EAAQC,EAAQC,GACvB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASS,EAAcC,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACNd,EAAQvB,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAC9C,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjEf,EAAQvB,OAAOsC,IAASC,SAAQ,SAAUC,GACxCxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,IAAIO,EAAgB,CAClBC,KAAM,SACNC,IAAK,SAAaC,GAChBC,KAAKC,OAAO,MAAOF,EACrB,EACAG,KAAM,SAAcH,GAClBC,KAAKC,OAAO,OAAQF,EACtB,EACAI,MAAO,SAAeJ,GACpBC,KAAKC,OAAO,QAASF,EACvB,EACAE,OAAQ,SAAgBJ,EAAME,GACxBK,SAAWA,QAAQP,IAAOO,QAAQP,GAAMV,MAAMiB,QAASL,EAC7D,GAEEM,EAAS,WACX,SAASA,EAAOC,GACd,IAAIC,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAMK,GACtBL,KAAKQ,KAAKF,EAAgBC,EAC5B,CAqEA,OApEA,OAAaF,EAAQ,CAAC,CACpBZ,IAAK,OACLrC,MAAO,SAAckD,GACnB,IAAIC,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFoF,KAAKS,OAASF,EAAQE,QAAU,WAChCT,KAAKU,OAASJ,GAAkBV,EAChCI,KAAKO,QAAUA,EACfP,KAAKW,MAAQJ,EAAQI,KACvB,GACC,CACDlB,IAAK,WACLrC,MAAO,SAAkBwD,GACvBZ,KAAKW,MAAQC,CACf,GACC,CACDnB,IAAK,MACLrC,MAAO,WACL,IAAK,IAAIyD,EAAOjG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAMyC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ef,EAAKe,GAAQlG,UAAUkG,GAEzB,OAAOd,KAAKtE,QAAQqE,EAAM,MAAO,IAAI,EACvC,GACC,CACDN,IAAK,OACLrC,MAAO,WACL,IAAK,IAAI2D,EAAQnG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAM2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjB,EAAKiB,GAASpG,UAAUoG,GAE1B,OAAOhB,KAAKtE,QAAQqE,EAAM,OAAQ,IAAI,EACxC,GACC,CACDN,IAAK,QACLrC,MAAO,WACL,IAAK,IAAI6D,EAAQrG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAM6C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFnB,EAAKmB,GAAStG,UAAUsG,GAE1B,OAAOlB,KAAKtE,QAAQqE,EAAM,QAAS,GACrC,GACC,CACDN,IAAK,YACLrC,MAAO,WACL,IAAK,IAAI+D,EAAQvG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAM+C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrB,EAAKqB,GAASxG,UAAUwG,GAE1B,OAAOpB,KAAKtE,QAAQqE,EAAM,OAAQ,wBAAwB,EAC5D,GACC,CACDN,IAAK,UACLrC,MAAO,SAAiB2C,EAAMsB,EAAKZ,EAAQa,GACzC,OAAIA,IAActB,KAAKW,MAAc,MACd,iBAAZZ,EAAK,KAAiBA,EAAK,GAAK,GAAGwB,OAAOd,GAAQc,OAAOvB,KAAKS,OAAQ,KAAKc,OAAOxB,EAAK,KAC3FC,KAAKU,OAAOW,GAAKtB,GAC1B,GACC,CACDN,IAAK,SACLrC,MAAO,SAAgBoE,GACrB,OAAO,IAAInB,EAAOL,KAAKU,OAAQtB,EAAcA,EAAc,CAAC,EAAG,CAC7DqB,OAAQ,GAAGc,OAAOvB,KAAKS,OAAQ,KAAKc,OAAOC,EAAY,OACrDxB,KAAKO,SACX,GACC,CACDd,IAAK,QACLrC,MAAO,SAAemD,GAGpB,OAFAA,EAAUA,GAAWP,KAAKO,SAClBE,OAASF,EAAQE,QAAUT,KAAKS,OACjC,IAAIJ,EAAOL,KAAKU,OAAQH,EACjC,KAEKF,CACT,CA3Ea,GA4EToB,EAAa,IAAIpB,EACjBqB,EAAe,WACjB,SAASA,KACP,OAAgB1B,KAAM0B,GACtB1B,KAAK2B,UAAY,CAAC,CACpB,CA2CA,OA1CA,OAAaD,EAAc,CAAC,CAC1BjC,IAAK,KACLrC,MAAO,SAAYwE,EAAQC,GACzB,IAAIC,EAAQ9B,KAKZ,OAJA4B,EAAOG,MAAM,KAAKvC,SAAQ,SAAUwC,GAClCF,EAAMH,UAAUK,GAASF,EAAMH,UAAUK,IAAU,GACnDF,EAAMH,UAAUK,GAAO9C,KAAK2C,EAC9B,IACO7B,IACT,GACC,CACDP,IAAK,MACLrC,MAAO,SAAa4E,EAAOH,GACpB7B,KAAK2B,UAAUK,KACfH,EAIL7B,KAAK2B,UAAUK,GAAShC,KAAK2B,UAAUK,GAAOlD,QAAO,SAAUmD,GAC7D,OAAOA,IAAMJ,CACf,WALS7B,KAAK2B,UAAUK,GAM1B,GACC,CACDvC,IAAK,OACLrC,MAAO,SAAc4E,GACnB,IAAK,IAAInB,EAAOjG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAMyC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGf,EAAKe,EAAO,GAAKlG,UAAUkG,GAEzBd,KAAK2B,UAAUK,IACJ,GAAGT,OAAOvB,KAAK2B,UAAUK,IAC/BxC,SAAQ,SAAU0C,GACvBA,EAAS/C,WAAM,EAAQY,EACzB,IAEEC,KAAK2B,UAAU,MACH,GAAGJ,OAAOvB,KAAK2B,UAAU,MAC/BnC,SAAQ,SAAU0C,GACxBA,EAAS/C,MAAM+C,EAAU,CAACF,GAAOT,OAAOxB,GAC1C,GAEJ,KAEK2B,CACT,CAhDmB,GAiDnB,SAASS,IACP,IAAIC,EACAC,EACAC,EAAU,IAAIC,SAAQ,SAAUC,EAASC,GAC3CL,EAAMI,EACNH,EAAMI,CACR,IAGA,OAFAH,EAAQE,QAAUJ,EAClBE,EAAQG,OAASJ,EACVC,CACT,CACA,SAASI,EAAWjE,GAClB,OAAc,MAAVA,EAAuB,GACpB,GAAKA,CACd,CAMA,SAASkE,EAAclE,EAAQmE,EAAMC,GACnC,SAASC,EAASrD,GAChB,OAAOA,GAAOA,EAAIsD,QAAQ,QAAU,EAAItD,EAAIuD,QAAQ,OAAQ,KAAOvD,CACrE,CACA,SAASwD,IACP,OAAQxE,GAA4B,iBAAXA,CAC3B,CAEA,IADA,IAAIyE,EAAwB,iBAATN,EAAoB,GAAGrB,OAAOqB,GAAQA,EAAKb,MAAM,KAC7DmB,EAAMrI,OAAS,GAAG,CACvB,GAAIoI,IAAwB,MAAO,CAAC,EACpC,IAAIxD,EAAMqD,EAASI,EAAMC,UACpB1E,EAAOgB,IAAQoD,IAAOpE,EAAOgB,GAAO,IAAIoD,GAE3CpE,EADExB,OAAOD,UAAUoG,eAAezF,KAAKc,EAAQgB,GACtChB,EAAOgB,GAEP,CAAC,CAEd,CACA,OAAIwD,IAA+B,CAAC,EAC7B,CACLI,IAAK5E,EACL6E,EAAGR,EAASI,EAAMC,SAEtB,CACA,SAASI,EAAQ9E,EAAQmE,EAAMY,GAC7B,IAAIC,EAAiBd,EAAclE,EAAQmE,EAAM3F,QACzCwG,EAAeJ,IACjBI,EAAeH,GACZE,CACX,CASA,SAASE,EAAQjF,EAAQmE,GACvB,IAAIe,EAAkBhB,EAAclE,EAAQmE,GAC1CS,EAAMM,EAAgBN,IACtBC,EAAIK,EAAgBL,EACtB,GAAKD,EACL,OAAOA,EAAIC,EACb,CACA,SAASM,EAAoBC,EAAMC,EAAarE,GAC9C,IAAIrC,EAAQsG,EAAQG,EAAMpE,GAC1B,YAAc3E,IAAVsC,EACKA,EAEFsG,EAAQI,EAAarE,EAC9B,CACA,SAASsE,EAAW1E,EAAQE,EAAQyE,GAClC,IAAK,IAAIC,KAAQ1E,EACF,cAAT0E,GAAiC,gBAATA,IACtBA,KAAQ5E,EACkB,iBAAjBA,EAAO4E,IAAsB5E,EAAO4E,aAAiBC,QAAkC,iBAAjB3E,EAAO0E,IAAsB1E,EAAO0E,aAAiBC,OAChIF,IAAW3E,EAAO4E,GAAQ1E,EAAO0E,IAErCF,EAAW1E,EAAO4E,GAAO1E,EAAO0E,GAAOD,GAGzC3E,EAAO4E,GAAQ1E,EAAO0E,IAI5B,OAAO5E,CACT,CACA,SAAS8E,EAAYC,GACnB,OAAOA,EAAIpB,QAAQ,sCAAuC,OAC5D,CACA,IAAIqB,EAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,UAEP,SAAS,EAAOR,GACd,MAAoB,iBAATA,EACFA,EAAKb,QAAQ,cAAc,SAAUsB,GAC1C,OAAOD,EAAWC,EACpB,IAEKT,CACT,CACA,IAAIU,EAA2B,oBAAXC,QAA0BA,OAAOC,gBAAuD,IAAnCD,OAAOC,UAAUC,eAAiCF,OAAOC,UAAUE,WAAaH,OAAOC,UAAUE,UAAU5B,QAAQ,SAAW,EACnM6B,EAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,KAoBjC,SAASC,EAAUpG,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASmG,EAAgBzF,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACNuF,EAAU5H,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjEsF,EAAU5H,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,SAAS0F,EAAaC,GACpB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAC,QAAQtI,UAAUuI,QAAQ5H,KAAKuH,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOE,GACP,OAAO,CACT,CACF,CAvBkCC,GAChC,OAAO,WACL,IACEC,EADEC,EAAQ9H,EAAgBmH,GAE5B,GAAIC,EAA2B,CAC7B,IAAIW,EAAY/H,EAAgBmC,MAAM7C,YACtCuI,EAASR,QAAQC,UAAUQ,EAAO/K,UAAWgL,EAC/C,MACEF,EAASC,EAAMxG,MAAMa,KAAMpF,WAE7B,OAAO6C,EAA2BuC,KAAM0F,EAC1C,CACF,CAYA,SAASG,EAASxC,EAAKT,GACrB,IAAIkD,EAAelL,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,IACvF,GAAKyI,EAAL,CACA,GAAIA,EAAIT,GAAO,OAAOS,EAAIT,GAG1B,IAFA,IAAImD,EAAQnD,EAAKb,MAAM+D,GACnBE,EAAU3C,EACL/D,EAAI,EAAGA,EAAIyG,EAAMlL,SAAUyE,EAAG,CACrC,IAAK0G,EAAS,OACd,GAAiC,iBAAtBA,EAAQD,EAAMzG,KAAoBA,EAAI,EAAIyG,EAAMlL,OACzD,OAEF,QAA0BC,IAAtBkL,EAAQD,EAAMzG,IAAmB,CAInC,IAHA,IAAI2G,EAAI,EACJC,EAAIH,EAAM5K,MAAMmE,EAAGA,EAAI2G,GAAGE,KAAKL,GAC/BM,EAAMJ,EAAQE,QACHpL,IAARsL,GAAqBL,EAAMlL,OAASyE,EAAI2G,GAC7CA,IAEAG,EAAMJ,EADNE,EAAIH,EAAM5K,MAAMmE,EAAGA,EAAI2G,GAAGE,KAAKL,IAGjC,QAAYhL,IAARsL,EAAmB,OACvB,GAAY,OAARA,EAAc,OAAO,KACzB,GAAIxD,EAAK5H,SAASkL,GAAI,CACpB,GAAmB,iBAARE,EAAkB,OAAOA,EACpC,GAAIF,GAAuB,iBAAXE,EAAIF,GAAiB,OAAOE,EAAIF,EAClD,CACA,IAAIG,EAAaN,EAAM5K,MAAMmE,EAAI2G,GAAGE,KAAKL,GACzC,OAAIO,EAAmBR,EAASO,EAAKC,EAAYP,QACjD,CACF,CACAE,EAAUA,EAAQD,EAAMzG,GAC1B,CACA,OAAO0G,CA9BmB,CA+B5B,CACA,IAAIM,EAAgB,SAAUC,GAC5B3J,EAAU0J,EAAeC,GACzB,IAAIC,EAASzB,EAAauB,GAC1B,SAASA,EAAczC,GACrB,IAAI/B,EACAvB,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChF6L,GAAI,CAAC,eACLC,UAAW,eAeb,OAbA,OAAgB1G,KAAMsG,GACtBxE,EAAQ0E,EAAO7I,KAAKqC,MAChBuE,GACF7C,EAAa/D,MAAK,OAAuBmE,IAE3CA,EAAM+B,KAAOA,GAAQ,CAAC,EACtB/B,EAAMvB,QAAUA,OACmBzF,IAA/BgH,EAAMvB,QAAQuF,eAChBhE,EAAMvB,QAAQuF,aAAe,UAEWhL,IAAtCgH,EAAMvB,QAAQoG,sBAChB7E,EAAMvB,QAAQoG,qBAAsB,GAE/B7E,CACT,CAgIA,OA/HA,OAAawE,EAAe,CAAC,CAC3B7G,IAAK,gBACLrC,MAAO,SAAuBqJ,GACxBzG,KAAKO,QAAQkG,GAAG1D,QAAQ0D,GAAM,GAChCzG,KAAKO,QAAQkG,GAAGvH,KAAKuH,EAEzB,GACC,CACDhH,IAAK,mBACLrC,MAAO,SAA0BqJ,GAC/B,IAAIG,EAAQ5G,KAAKO,QAAQkG,GAAG1D,QAAQ0D,GAChCG,GAAS,GACX5G,KAAKO,QAAQkG,GAAGI,OAAOD,EAAO,EAElC,GACC,CACDnH,IAAK,cACLrC,MAAO,SAAqB0J,EAAKL,EAAIhH,GACnC,IAAIc,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EkL,OAAwChL,IAAzByF,EAAQuF,aAA6BvF,EAAQuF,aAAe9F,KAAKO,QAAQuF,aACxFa,OAAsD7L,IAAhCyF,EAAQoG,oBAAoCpG,EAAQoG,oBAAsB3G,KAAKO,QAAQoG,oBAC7G/D,EAAO,CAACkE,EAAKL,GACbhH,GAAsB,iBAARA,IAAkBmD,EAAOA,EAAKrB,OAAO9B,IACnDA,GAAsB,iBAARA,IAAkBmD,EAAOA,EAAKrB,OAAOuE,EAAerG,EAAIsC,MAAM+D,GAAgBrG,IAC5FqH,EAAI/D,QAAQ,MAAQ,IACtBH,EAAOkE,EAAI/E,MAAM,MAEnB,IAAI2D,EAAShC,EAAQ1D,KAAK6D,KAAMjB,GAChC,OAAI8C,IAAWiB,GAAsC,iBAARlH,EAAyBiG,EAC/DG,EAAS7F,KAAK6D,MAAQ7D,KAAK6D,KAAKiD,IAAQ9G,KAAK6D,KAAKiD,GAAKL,GAAKhH,EAAKqG,EAC1E,GACC,CACDrG,IAAK,cACLrC,MAAO,SAAqB0J,EAAKL,EAAIhH,EAAKrC,GACxC,IAAImD,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChFmM,QAAQ,GAENjB,EAAe9F,KAAKO,QAAQuF,kBACXhL,IAAjBgL,IAA4BA,EAAe,KAC/C,IAAIlD,EAAO,CAACkE,EAAKL,GACbhH,IAAKmD,EAAOA,EAAKrB,OAAOuE,EAAerG,EAAIsC,MAAM+D,GAAgBrG,IACjEqH,EAAI/D,QAAQ,MAAQ,IAEtB3F,EAAQqJ,EACRA,GAFA7D,EAAOkE,EAAI/E,MAAM,MAEP,IAEZ/B,KAAKgH,cAAcP,GACnBlD,EAAQvD,KAAK6D,KAAMjB,EAAMxF,GACpBmD,EAAQwG,QAAQ/G,KAAKiH,KAAK,QAASH,EAAKL,EAAIhH,EAAKrC,EACxD,GACC,CACDqC,IAAK,eACLrC,MAAO,SAAsB0J,EAAKL,EAAIS,GACpC,IAAI3G,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChFmM,QAAQ,GAEV,IAAK,IAAII,KAAKD,EACgB,iBAAjBA,EAAUC,IAAqE,mBAAlDlK,OAAOD,UAAUoK,SAASjI,MAAM+H,EAAUC,KAA0BnH,KAAKqH,YAAYP,EAAKL,EAAIU,EAAGD,EAAUC,GAAI,CACrJJ,QAAQ,IAGPxG,EAAQwG,QAAQ/G,KAAKiH,KAAK,QAASH,EAAKL,EAAIS,EACnD,GACC,CACDzH,IAAK,oBACLrC,MAAO,SAA2B0J,EAAKL,EAAIS,EAAWI,EAAMtD,GAC1D,IAAIzD,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChFmM,QAAQ,GAENnE,EAAO,CAACkE,EAAKL,GACbK,EAAI/D,QAAQ,MAAQ,IAEtBuE,EAAOJ,EACPA,EAAYT,EACZA,GAHA7D,EAAOkE,EAAI/E,MAAM,MAGP,IAEZ/B,KAAKgH,cAAcP,GACnB,IAAIc,EAAO7D,EAAQ1D,KAAK6D,KAAMjB,IAAS,CAAC,EACpC0E,EACFvD,EAAWwD,EAAML,EAAWlD,GAE5BuD,EAAOzC,EAAgBA,EAAgB,CAAC,EAAGyC,GAAOL,GAEpD3D,EAAQvD,KAAK6D,KAAMjB,EAAM2E,GACpBhH,EAAQwG,QAAQ/G,KAAKiH,KAAK,QAASH,EAAKL,EAAIS,EACnD,GACC,CACDzH,IAAK,uBACLrC,MAAO,SAA8B0J,EAAKL,GACpCzG,KAAKwH,kBAAkBV,EAAKL,WACvBzG,KAAK6D,KAAKiD,GAAKL,GAExBzG,KAAKyH,iBAAiBhB,GACtBzG,KAAKiH,KAAK,UAAWH,EAAKL,EAC5B,GACC,CACDhH,IAAK,oBACLrC,MAAO,SAA2B0J,EAAKL,GACrC,YAAqC3L,IAA9BkF,KAAK0H,YAAYZ,EAAKL,EAC/B,GACC,CACDhH,IAAK,oBACLrC,MAAO,SAA2B0J,EAAKL,GAErC,OADKA,IAAIA,EAAKzG,KAAKO,QAAQmG,WACW,OAAlC1G,KAAKO,QAAQoH,iBAAkC7C,EAAgBA,EAAgB,CAAC,EAAG,CAAC,GAAI9E,KAAK0H,YAAYZ,EAAKL,IAC3GzG,KAAK0H,YAAYZ,EAAKL,EAC/B,GACC,CACDhH,IAAK,oBACLrC,MAAO,SAA2B0J,GAChC,OAAO9G,KAAK6D,KAAKiD,EACnB,GACC,CACDrH,IAAK,8BACLrC,MAAO,SAAqC0J,GAC1C,IAAIjD,EAAO7D,KAAK4H,kBAAkBd,GAElC,SADQjD,GAAQ5G,OAAO0B,KAAKkF,IAAS,IAC1BgE,MAAK,SAAUC,GACxB,OAAOjE,EAAKiE,IAAM7K,OAAO0B,KAAKkF,EAAKiE,IAAIjN,OAAS,CAClD,GACF,GACC,CACD4E,IAAK,SACLrC,MAAO,WACL,OAAO4C,KAAK6D,IACd,KAEKyC,CACT,CAxJoB,CAwJlB5E,GACEqG,EAAgB,CAClBC,WAAY,CAAC,EACbC,iBAAkB,SAA0BC,GAC1ClI,KAAKgI,WAAWE,EAAOC,MAAQD,CACjC,EACAE,OAAQ,SAAgBJ,EAAY5K,EAAOqC,EAAKc,EAAS8H,GACvD,IAAIvG,EAAQ9B,KAIZ,OAHAgI,EAAWxI,SAAQ,SAAU8I,GACvBxG,EAAMkG,WAAWM,KAAYlL,EAAQ0E,EAAMkG,WAAWM,GAAWC,QAAQnL,EAAOqC,EAAKc,EAAS8H,GACpG,IACOjL,CACT,GAEF,SAASoL,EAAU/J,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAAS8J,EAAgBpJ,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACNkJ,EAAUvL,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjEiJ,EAAUvL,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,SAASqJ,EAAe1D,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAC,QAAQtI,UAAUuI,QAAQ5H,KAAKuH,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOE,GACP,OAAO,CACT,CACF,CAvBkCmD,GAChC,OAAO,WACL,IACEjD,EADEC,EAAQ9H,EAAgBmH,GAE5B,GAAIC,EAA2B,CAC7B,IAAIW,EAAY/H,EAAgBmC,MAAM7C,YACtCuI,EAASR,QAAQC,UAAUQ,EAAO/K,UAAWgL,EAC/C,MACEF,EAASC,EAAMxG,MAAMa,KAAMpF,WAE7B,OAAO6C,EAA2BuC,KAAM0F,EAC1C,CACF,CAYA,IAAIkD,EAAmB,CAAC,EACpBC,EAAa,SAAUtC,GACzB3J,EAAUiM,EAAYtC,GACtB,IAAIC,EAASkC,EAAeG,GAC5B,SAASA,EAAWC,GAClB,IAAIhH,EACAvB,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAYnF,OAXA,OAAgBoF,KAAM6I,GACtB/G,EAAQ0E,EAAO7I,KAAKqC,MAChBuE,GACF7C,EAAa/D,MAAK,OAAuBmE,IAjb/C,SAAciH,EAAGzE,EAAG0E,GAClBD,EAAEvJ,SAAQ,SAAU2H,GACd7C,EAAE6C,KAAI6B,EAAE7B,GAAK7C,EAAE6C,GACrB,GACF,CA+aI8B,CAAK,CAAC,gBAAiB,gBAAiB,iBAAkB,eAAgB,mBAAoB,aAAc,SAAUH,GAAU,OAAuBhH,IACvJA,EAAMvB,QAAUA,OACmBzF,IAA/BgH,EAAMvB,QAAQuF,eAChBhE,EAAMvB,QAAQuF,aAAe,KAE/BhE,EAAMpB,OAASe,EAAWvE,OAAO,cAC1B4E,CACT,CAmVA,OAlVA,OAAa+G,EAAY,CAAC,CACxBpJ,IAAK,iBACLrC,MAAO,SAAwB0J,GACzBA,IAAK9G,KAAKkJ,SAAWpC,EAC3B,GACC,CACDrH,IAAK,SACLrC,MAAO,SAAgBqC,GACrB,IAAIc,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChFuO,cAAe,CAAC,GAElB,GAAI1J,QACF,OAAO,EAET,IAAI2J,EAAWpJ,KAAKwC,QAAQ/C,EAAKc,GACjC,OAAO6I,QAA6BtO,IAAjBsO,EAAShH,GAC9B,GACC,CACD3C,IAAK,iBACLrC,MAAO,SAAwBqC,EAAKc,GAClC,IAAI8I,OAAsCvO,IAAxByF,EAAQ8I,YAA4B9I,EAAQ8I,YAAcrJ,KAAKO,QAAQ8I,iBACrEvO,IAAhBuO,IAA2BA,EAAc,KAC7C,IAAIvD,OAAwChL,IAAzByF,EAAQuF,aAA6BvF,EAAQuF,aAAe9F,KAAKO,QAAQuF,aACxFwD,EAAa/I,EAAQkG,IAAMzG,KAAKO,QAAQmG,WAAa,GACrD6C,EAAuBF,GAAe5J,EAAIsD,QAAQsG,IAAgB,EAClEG,IAAwBxJ,KAAKO,QAAQkJ,yBAA4BlJ,EAAQuF,cAAiB9F,KAAKO,QAAQmJ,wBAA2BnJ,EAAQ8I,aAtXpJ,SAA6B5J,EAAK4J,EAAavD,GAC7CuD,EAAcA,GAAe,GAC7BvD,EAAeA,GAAgB,GAC/B,IAAI6D,EAAgB/E,EAAM9F,QAAO,SAAU8K,GACzC,OAAOP,EAAYtG,QAAQ6G,GAAK,GAAK9D,EAAa/C,QAAQ6G,GAAK,CACjE,IACA,GAA6B,IAAzBD,EAAc9O,OAAc,OAAO,EACvC,IAAIgP,EAAI,IAAIC,OAAO,IAAIvI,OAAOoI,EAAcI,KAAI,SAAUH,GACxD,MAAa,MAANA,EAAY,MAAQA,CAC7B,IAAGzD,KAAK,KAAM,MACV6D,GAAWH,EAAEI,KAAKxK,GACtB,IAAKuK,EAAS,CACZ,IAAIE,EAAKzK,EAAIsD,QAAQ+C,GACjBoE,EAAK,IAAML,EAAEI,KAAKxK,EAAI0K,UAAU,EAAGD,MACrCF,GAAU,EAEd,CACA,OAAOA,CACT,CAoWoKI,CAAoB3K,EAAK4J,EAAavD,IACpM,GAAIyD,IAAyBC,EAAsB,CACjD,IAAIrC,EAAI1H,EAAI4K,MAAMrK,KAAKsK,aAAaC,eACpC,GAAIpD,GAAKA,EAAEtM,OAAS,EAClB,MAAO,CACL4E,IAAKA,EACL6J,WAAYA,GAGhB,IAAIkB,EAAQ/K,EAAIsC,MAAMsH,IAClBA,IAAgBvD,GAAgBuD,IAAgBvD,GAAgB9F,KAAKO,QAAQkG,GAAG1D,QAAQyH,EAAM,KAAO,KAAGlB,EAAakB,EAAMrH,SAC/H1D,EAAM+K,EAAMrE,KAAKL,EACnB,CAEA,MAD0B,iBAAfwD,IAAyBA,EAAa,CAACA,IAC3C,CACL7J,IAAKA,EACL6J,WAAYA,EAEhB,GACC,CACD7J,IAAK,YACLrC,MAAO,SAAmBuB,EAAM4B,EAASkK,GACvC,IAAIC,EAAS1K,KAKb,GAJyB,YAArB,OAAQO,IAAyBP,KAAKO,QAAQoK,mCAChDpK,EAAUP,KAAKO,QAAQoK,iCAAiC/P,YAErD2F,IAASA,EAAU,CAAC,GACrB5B,QAAqC,MAAO,GAC3CP,MAAMC,QAAQM,KAAOA,EAAO,CAACuF,OAAOvF,KACzC,IAAIiM,OAA0C9P,IAA1ByF,EAAQqK,cAA8BrK,EAAQqK,cAAgB5K,KAAKO,QAAQqK,cAC3F9E,OAAwChL,IAAzByF,EAAQuF,aAA6BvF,EAAQuF,aAAe9F,KAAKO,QAAQuF,aACxF+E,EAAuB7K,KAAK8K,eAAenM,EAAKA,EAAK9D,OAAS,GAAI0F,GACpEd,EAAMoL,EAAqBpL,IAC3B6J,EAAauB,EAAqBvB,WAChCyB,EAAYzB,EAAWA,EAAWzO,OAAS,GAC3CiM,EAAMvG,EAAQuG,KAAO9G,KAAKkJ,SAC1B8B,EAA0BzK,EAAQyK,yBAA2BhL,KAAKO,QAAQyK,wBAC9E,GAAIlE,GAA6B,WAAtBA,EAAImE,cAA4B,CACzC,GAAID,EAAyB,CAC3B,IAAI3B,EAAc9I,EAAQ8I,aAAerJ,KAAKO,QAAQ8I,YACtD,OAAIuB,GACFxB,EAAShH,IAAM,GAAGb,OAAOwJ,GAAWxJ,OAAO8H,GAAa9H,OAAO9B,GACxD2J,GAEF,GAAG7H,OAAOwJ,GAAWxJ,OAAO8H,GAAa9H,OAAO9B,EACzD,CACA,OAAImL,GACFxB,EAAShH,IAAM3C,EACR2J,GAEF3J,CACT,CACA,IAAI2J,EAAWpJ,KAAKwC,QAAQ7D,EAAM4B,GAC9B6B,EAAMgH,GAAYA,EAAShH,IAC3B8I,EAAa9B,GAAYA,EAAS+B,SAAW1L,EAC7C2L,EAAkBhC,GAAYA,EAASiC,cAAgB5L,EACvD6L,EAAUrO,OAAOD,UAAUoK,SAASjI,MAAMiD,GAE1CmJ,OAAoCzQ,IAAvByF,EAAQgL,WAA2BhL,EAAQgL,WAAavL,KAAKO,QAAQgL,WAClFC,GAA8BxL,KAAKyL,YAAczL,KAAKyL,WAAWC,eAErE,GAAIF,GAA8BpJ,IADE,iBAARA,GAAmC,kBAARA,GAAoC,iBAARA,IAHpE,CAAC,kBAAmB,oBAAqB,mBAIYW,QAAQuI,GAAW,IAA6B,iBAAfC,GAAuC,mBAAZD,GAA+B,CAC7J,IAAK/K,EAAQoL,gBAAkB3L,KAAKO,QAAQoL,cAAe,CACpD3L,KAAKO,QAAQqL,uBAChB5L,KAAKU,OAAOR,KAAK,mEAEnB,IAAI2J,EAAI7J,KAAKO,QAAQqL,sBAAwB5L,KAAKO,QAAQqL,sBAAsBV,EAAY9I,EAAKqG,EAAgBA,EAAgB,CAAC,EAAGlI,GAAU,CAAC,EAAG,CACjJkG,GAAI6C,KACA,QAAQ/H,OAAO9B,EAAK,MAAM8B,OAAOvB,KAAKkJ,SAAU,4CACtD,OAAI0B,GACFxB,EAAShH,IAAMyH,EACRT,GAEFS,CACT,CACA,GAAI/D,EAAc,CAChB,IAAI+F,EAA6B,mBAAZP,EACjBrC,EAAO4C,EAAiB,GAAK,CAAC,EAC9BC,EAAcD,EAAiBT,EAAkBF,EACrD,IAAK,IAAI/D,KAAK/E,EACZ,GAAInF,OAAOD,UAAUoG,eAAezF,KAAKyE,EAAK+E,GAAI,CAChD,IAAI4E,EAAU,GAAGxK,OAAOuK,GAAavK,OAAOuE,GAAcvE,OAAO4F,GACjE8B,EAAK9B,GAAKnH,KAAKgM,UAAUD,EAAStD,EAAgBA,EAAgB,CAAC,EAAGlI,GAAU,CAC9EgL,YAAY,EACZ9E,GAAI6C,KAEFL,EAAK9B,KAAO4E,IAAS9C,EAAK9B,GAAK/E,EAAI+E,GACzC,CAEF/E,EAAM6G,CACR,CACF,MAAO,GAAIuC,GAAoD,iBAAfD,GAAuC,mBAAZD,GACzElJ,EAAMA,EAAI+D,KAAKoF,MACNnJ,EAAMpC,KAAKiM,kBAAkB7J,EAAKzD,EAAM4B,EAASkK,QACrD,CACL,IAAIyB,GAAc,EACdf,GAAU,EACVgB,OAAwCrR,IAAlByF,EAAQ6L,OAAgD,iBAAlB7L,EAAQ6L,MACpEC,EAAkBxD,EAAWwD,gBAAgB9L,GAC7C+L,EAAqBH,EAAsBnM,KAAKuM,eAAeC,UAAU1F,EAAKvG,EAAQ6L,MAAO7L,GAAW,GACxGkM,EAAelM,EAAQ,eAAegB,OAAO+K,KAAwB/L,EAAQkM,cAC5EzM,KAAK0M,cAActK,IAAQiK,IAC9BH,GAAc,EACd9J,EAAMqK,GAEHzM,KAAK0M,cAActK,KACtB+I,GAAU,EACV/I,EAAM3C,GAER,IACIkN,GADiCpM,EAAQqM,gCAAkC5M,KAAKO,QAAQqM,iCACtCzB,OAAUrQ,EAAYsH,EACxEyK,EAAgBR,GAAmBI,IAAiBrK,GAAOpC,KAAKO,QAAQsM,cAC5E,GAAI1B,GAAWe,GAAeW,EAAe,CAE3C,GADA7M,KAAKU,OAAOZ,IAAI+M,EAAgB,YAAc,aAAc/F,EAAKiE,EAAWtL,EAAKoN,EAAgBJ,EAAerK,GAC5G0D,EAAc,CAChB,IAAIgH,EAAK9M,KAAKwC,QAAQ/C,EAAKgJ,EAAgBA,EAAgB,CAAC,EAAGlI,GAAU,CAAC,EAAG,CAC3EuF,cAAc,KAEZgH,GAAMA,EAAG1K,KAAKpC,KAAKU,OAAOR,KAAK,kLACrC,CACA,IAAI6M,EAAO,GACPC,EAAehN,KAAKiN,cAAcC,iBAAiBlN,KAAKO,QAAQ4M,YAAa5M,EAAQuG,KAAO9G,KAAKkJ,UACrG,GAAmC,aAA/BlJ,KAAKO,QAAQ6M,eAAgCJ,GAAgBA,EAAa,GAC5E,IAAK,IAAI1N,EAAI,EAAGA,EAAI0N,EAAanS,OAAQyE,IACvCyN,EAAK7N,KAAK8N,EAAa1N,QAEe,QAA/BU,KAAKO,QAAQ6M,cACtBL,EAAO/M,KAAKiN,cAAcI,mBAAmB9M,EAAQuG,KAAO9G,KAAKkJ,UAEjE6D,EAAK7N,KAAKqB,EAAQuG,KAAO9G,KAAKkJ,UAEhC,IAAIoE,EAAO,SAAcrL,EAAGqB,EAAGiK,GAC7B,IAAIC,EAAoBnB,GAAmBkB,IAAyBnL,EAAMmL,EAAuBZ,EAC7FjC,EAAOnK,QAAQkN,kBACjB/C,EAAOnK,QAAQkN,kBAAkBxL,EAAG8I,EAAWzH,EAAGkK,EAAmBX,EAAetM,GAC3EmK,EAAOgD,kBAAoBhD,EAAOgD,iBAAiBC,aAC5DjD,EAAOgD,iBAAiBC,YAAY1L,EAAG8I,EAAWzH,EAAGkK,EAAmBX,EAAetM,GAEzFmK,EAAOzD,KAAK,aAAchF,EAAG8I,EAAWzH,EAAGlB,EAC7C,EACIpC,KAAKO,QAAQoN,cACX3N,KAAKO,QAAQqN,oBAAsBzB,EACrCY,EAAKvN,SAAQ,SAAU0J,GACrBwB,EAAO6B,eAAesB,YAAY3E,EAAU3I,GAASf,SAAQ,SAAUsO,GACrER,EAAK,CAACpE,GAAWzJ,EAAMqO,EAAQvN,EAAQ,eAAegB,OAAOuM,KAAYrB,EAC3E,GACF,IAEAa,EAAKP,EAAMtN,EAAKgN,GAGtB,CACArK,EAAMpC,KAAKiM,kBAAkB7J,EAAKzD,EAAM4B,EAAS6I,EAAUqB,GACvDU,GAAW/I,IAAQ3C,GAAOO,KAAKO,QAAQwN,8BAA6B3L,EAAM,GAAGb,OAAOwJ,EAAW,KAAKxJ,OAAO9B,KAC1G0L,GAAWe,IAAgBlM,KAAKO,QAAQyN,yBAEzC5L,EADoC,OAAlCpC,KAAKO,QAAQoH,iBACT3H,KAAKO,QAAQyN,uBAAuBhO,KAAKO,QAAQwN,4BAA8B,GAAGxM,OAAOwJ,EAAW,KAAKxJ,OAAO9B,GAAOA,EAAKyM,EAAc9J,OAAMtH,GAEhJkF,KAAKO,QAAQyN,uBAAuB5L,GAGhD,CACA,OAAIwI,GACFxB,EAAShH,IAAMA,EACRgH,GAEFhH,CACT,GACC,CACD3C,IAAK,oBACLrC,MAAO,SAA2BgF,EAAK3C,EAAKc,EAAS6I,EAAUqB,GAC7D,IAAIwD,EAASjO,KACb,GAAIA,KAAKyL,YAAczL,KAAKyL,WAAWyC,MACrC9L,EAAMpC,KAAKyL,WAAWyC,MAAM9L,EAAKqG,EAAgBA,EAAgB,CAAC,EAAGzI,KAAKO,QAAQ4I,cAAcgF,kBAAmB5N,GAAU6I,EAASgF,QAAShF,EAASiF,OAAQjF,EAAS+B,QAAS,CAChL/B,SAAUA,SAEP,IAAK7I,EAAQ+N,kBAAmB,CACjC/N,EAAQ4I,eAAenJ,KAAKsK,aAAa9J,KAAKiI,EAAgBA,EAAgB,CAAC,EAAGlI,GAAU,CAC9F4I,cAAeV,EAAgBA,EAAgB,CAAC,EAAGzI,KAAKO,QAAQ4I,eAAgB5I,EAAQ4I,kBAE1F,IACIoF,EADAC,EAAiC,iBAARpM,IAAqB7B,GAAWA,EAAQ4I,oBAA2DrO,IAA1CyF,EAAQ4I,cAAcqF,gBAAgCjO,EAAQ4I,cAAcqF,gBAAkBxO,KAAKO,QAAQ4I,cAAcqF,iBAE/M,GAAIA,EAAiB,CACnB,IAAIC,EAAKrM,EAAIiI,MAAMrK,KAAKsK,aAAaC,eACrCgE,EAAUE,GAAMA,EAAG5T,MACrB,CACA,IAAIgJ,EAAOtD,EAAQyC,SAAsC,iBAApBzC,EAAQyC,QAAuBzC,EAAQyC,QAAUzC,EAGtF,GAFIP,KAAKO,QAAQ4I,cAAcgF,mBAAkBtK,EAAO4E,EAAgBA,EAAgB,CAAC,EAAGzI,KAAKO,QAAQ4I,cAAcgF,kBAAmBtK,IAC1IzB,EAAMpC,KAAKsK,aAAaoE,YAAYtM,EAAKyB,EAAMtD,EAAQuG,KAAO9G,KAAKkJ,SAAU3I,GACzEiO,EAAiB,CACnB,IAAIG,EAAKvM,EAAIiI,MAAMrK,KAAKsK,aAAaC,eAEjCgE,GADUI,GAAMA,EAAG9T,UACA0F,EAAQqO,MAAO,EACxC,EACqB,IAAjBrO,EAAQqO,OAAgBxM,EAAMpC,KAAKsK,aAAasE,KAAKxM,GAAK,WAC5D,IAAK,IAAIvB,EAAOjG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAMyC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ef,EAAKe,GAAQlG,UAAUkG,GAEzB,OAAI2J,GAAWA,EAAQ,KAAO1K,EAAK,KAAOQ,EAAQsO,SAChDZ,EAAOvN,OAAOR,KAAK,6CAA6CqB,OAAOxB,EAAK,GAAI,aAAawB,OAAO9B,EAAI,KACjG,MAEFwO,EAAOjC,UAAU7M,MAAM8O,EAAQlO,EAAKwB,OAAO,CAAC9B,IACrD,GAAGc,IACCA,EAAQ4I,eAAenJ,KAAKsK,aAAawE,OAC/C,CACA,IAAIC,EAAcxO,EAAQwO,aAAe/O,KAAKO,QAAQwO,YAClDC,EAA4C,iBAAhBD,EAA2B,CAACA,GAAeA,EAM3E,OALI3M,SAAqC4M,GAAsBA,EAAmBnU,SAAyC,IAA/B0F,EAAQ0O,qBAClG7M,EAAM2F,EAAcK,OAAO4G,EAAoB5M,EAAK3C,EAAKO,KAAKO,SAAWP,KAAKO,QAAQ2O,wBAA0BzG,EAAgB,CAC9H0G,aAAc/F,GACb7I,GAAWA,EAASP,OAElBoC,CACT,GACC,CACD3C,IAAK,UACLrC,MAAO,SAAiBuB,GACtB,IAEIyQ,EACAjE,EACAE,EACA+C,EACAC,EANAgB,EAASrP,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EA8DnF,MAxDoB,iBAAT+D,IAAmBA,EAAO,CAACA,IACtCA,EAAKa,SAAQ,SAAU8D,GACrB,IAAI+L,EAAO3C,cAAc0C,GAAzB,CACA,IAAIE,EAAYD,EAAOvE,eAAexH,EAAG/C,GACrCd,EAAM6P,EAAU7P,IACpB0L,EAAU1L,EACV,IAAI6J,EAAagG,EAAUhG,WACvB+F,EAAO9O,QAAQgP,aAAYjG,EAAaA,EAAW/H,OAAO8N,EAAO9O,QAAQgP,aAC7E,IAAIpD,OAAwCrR,IAAlByF,EAAQ6L,OAAgD,iBAAlB7L,EAAQ6L,MACpEoD,EAAwBrD,IAAwB5L,EAAQkP,SAA6B,IAAlBlP,EAAQ6L,OAAeiD,EAAO9C,eAAemD,mBAChHC,OAA2C7U,IAApByF,EAAQsO,UAAqD,iBAApBtO,EAAQsO,SAAmD,iBAApBtO,EAAQsO,UAA6C,KAApBtO,EAAQsO,QAChJe,EAAQrP,EAAQwM,KAAOxM,EAAQwM,KAAOsC,EAAOpC,cAAcI,mBAAmB9M,EAAQuG,KAAOuI,EAAOnG,SAAU3I,EAAQ4M,aAC1H7D,EAAW9J,SAAQ,SAAUiH,GACvB4I,EAAO3C,cAAc0C,KACzBf,EAAS5H,GACJmC,EAAiB,GAAGrH,OAAOqO,EAAM,GAAI,KAAKrO,OAAOkF,KAAQ4I,EAAOQ,OAASR,EAAOQ,MAAMC,qBAAuBT,EAAOQ,MAAMC,mBAAmBzB,KAChJzF,EAAiB,GAAGrH,OAAOqO,EAAM,GAAI,KAAKrO,OAAOkF,KAAO,EACxD4I,EAAO3O,OAAOR,KAAK,QAASqB,OAAO4J,EAAS,qBAAuB5J,OAAOqO,EAAMzJ,KAAK,MAAO,wCAAyC5E,OAAO8M,EAAQ,wBAA0B,6NAEhLuB,EAAMpQ,SAAQ,SAAUuQ,GACtB,IAAIV,EAAO3C,cAAc0C,GAAzB,CACAhB,EAAU2B,EACV,IAwBIC,EAxBAC,EAAY,CAACxQ,GACjB,GAAI4P,EAAO5D,YAAc4D,EAAO5D,WAAWyE,cACzCb,EAAO5D,WAAWyE,cAAcD,EAAWxQ,EAAKsQ,EAAMtJ,EAAIlG,OACrD,CACL,IAAI4P,EACAhE,IAAqBgE,EAAed,EAAO9C,eAAeC,UAAUuD,EAAMxP,EAAQ6L,MAAO7L,IAC7F,IAAI6P,EAAa,GAAG7O,OAAO8N,EAAO9O,QAAQ8P,gBAAiB,QAO3D,GANIlE,IACF8D,EAAU/Q,KAAKO,EAAM0Q,GACjBX,GACFS,EAAU/Q,KAAKO,EAAM2Q,IAGrBT,EAAsB,CACxB,IAAIW,EAAa,GAAG/O,OAAO9B,GAAK8B,OAAO8N,EAAO9O,QAAQgQ,kBAAkBhP,OAAOhB,EAAQsO,SACvFoB,EAAU/Q,KAAKoR,GACXnE,IACF8D,EAAU/Q,KAAKoR,EAAaH,GACxBX,GACFS,EAAU/Q,KAAKoR,EAAaF,GAGlC,CACF,CAEA,KAAOJ,EAAcC,EAAUO,OACxBnB,EAAO3C,cAAc0C,KACxB/D,EAAe2E,EACfZ,EAAQC,EAAO3H,YAAYqI,EAAMtJ,EAAIuJ,EAAazP,GA9Bf,CAiCzC,IACF,GApDuC,CAqDzC,IACO,CACL6B,IAAKgN,EACLjE,QAASA,EACTE,aAAcA,EACd+C,QAASA,EACTC,OAAQA,EAEZ,GACC,CACD5O,IAAK,gBACLrC,MAAO,SAAuBgF,GAC5B,aAAetH,IAARsH,IAAwBpC,KAAKO,QAAQkQ,YAAsB,OAARrO,IAAoBpC,KAAKO,QAAQmQ,mBAA6B,KAARtO,EAClH,GACC,CACD3C,IAAK,cACLrC,MAAO,SAAqB2S,EAAMtJ,EAAIhH,GACpC,IAAIc,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAIoF,KAAKyL,YAAczL,KAAKyL,WAAW/D,YAAoB1H,KAAKyL,WAAW/D,YAAYqI,EAAMtJ,EAAIhH,EAAKc,GAC/FP,KAAK2Q,cAAcjJ,YAAYqI,EAAMtJ,EAAIhH,EAAKc,EACvD,IACE,CAAC,CACHd,IAAK,kBACLrC,MAAO,SAAyBmD,GAC9B,IAAIE,EAAS,eACb,IAAK,IAAI9F,KAAU4F,EACjB,GAAItD,OAAOD,UAAUoG,eAAezF,KAAK4C,EAAS5F,IAAW8F,IAAW9F,EAAOwP,UAAU,EAAG1J,UAAkB3F,IAAcyF,EAAQ5F,GAClI,OAAO,EAGX,OAAO,CACT,KAEKkO,CACT,CAtWiB,CAsWfnH,GACF,SAASkP,EAAWC,GAClB,OAAOA,EAAOC,OAAO,GAAGC,cAAgBF,EAAO1V,MAAM,EACvD,CACA,IAAI6V,EAAe,WACjB,SAASA,EAAazQ,IACpB,OAAgBP,KAAMgR,GACtBhR,KAAKO,QAAUA,EACfP,KAAKiR,cAAgBjR,KAAKO,QAAQ0Q,gBAAiB,EACnDjR,KAAKU,OAASe,EAAWvE,OAAO,gBAClC,CAqHA,OApHA,OAAa8T,EAAc,CAAC,CAC1BvR,IAAK,wBACLrC,MAAO,SAA+B2S,GACpC,IAAKA,GAAQA,EAAKhN,QAAQ,KAAO,EAAG,OAAO,KAC3C,IAAImD,EAAI6J,EAAKhO,MAAM,KACnB,OAAiB,IAAbmE,EAAErL,OAAqB,MAC3BqL,EAAEsK,MACoC,MAAlCtK,EAAEA,EAAErL,OAAS,GAAGoQ,cAA8B,KAC3CjL,KAAKkR,mBAAmBhL,EAAEC,KAAK,MACxC,GACC,CACD1G,IAAK,0BACLrC,MAAO,SAAiC2S,GACtC,IAAKA,GAAQA,EAAKhN,QAAQ,KAAO,EAAG,OAAOgN,EAC3C,IAAI7J,EAAI6J,EAAKhO,MAAM,KACnB,OAAO/B,KAAKkR,mBAAmBhL,EAAE,GACnC,GACC,CACDzG,IAAK,qBACLrC,MAAO,SAA4B2S,GACjC,GAAoB,iBAATA,GAAqBA,EAAKhN,QAAQ,MAAQ,EAAG,CACtD,IAAIoO,EAAe,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QAChEjL,EAAI6J,EAAKhO,MAAM,KAgBnB,OAfI/B,KAAKO,QAAQ6Q,aACflL,EAAIA,EAAE6D,KAAI,SAAUsH,GAClB,OAAOA,EAAKpG,aACd,IACsB,IAAb/E,EAAErL,QACXqL,EAAE,GAAKA,EAAE,GAAG+E,cACZ/E,EAAE,GAAKA,EAAE,GAAG6K,cACRI,EAAapO,QAAQmD,EAAE,GAAG+E,gBAAkB,IAAG/E,EAAE,GAAK0K,EAAW1K,EAAE,GAAG+E,iBACpD,IAAb/E,EAAErL,SACXqL,EAAE,GAAKA,EAAE,GAAG+E,cACQ,IAAhB/E,EAAE,GAAGrL,SAAcqL,EAAE,GAAKA,EAAE,GAAG6K,eACtB,QAAT7K,EAAE,IAAgC,IAAhBA,EAAE,GAAGrL,SAAcqL,EAAE,GAAKA,EAAE,GAAG6K,eACjDI,EAAapO,QAAQmD,EAAE,GAAG+E,gBAAkB,IAAG/E,EAAE,GAAK0K,EAAW1K,EAAE,GAAG+E,gBACtEkG,EAAapO,QAAQmD,EAAE,GAAG+E,gBAAkB,IAAG/E,EAAE,GAAK0K,EAAW1K,EAAE,GAAG+E,iBAErE/E,EAAEC,KAAK,IAChB,CACA,OAAOnG,KAAKO,QAAQ+Q,WAAatR,KAAKO,QAAQ6Q,aAAerB,EAAK9E,cAAgB8E,CACpF,GACC,CACDtQ,IAAK,kBACLrC,MAAO,SAAyB2S,GAI9B,OAH0B,iBAAtB/P,KAAKO,QAAQgR,MAA2BvR,KAAKO,QAAQiR,4BACvDzB,EAAO/P,KAAKyR,wBAAwB1B,KAE9B/P,KAAKiR,gBAAkBjR,KAAKiR,cAAcpW,QAAUmF,KAAKiR,cAAclO,QAAQgN,IAAS,CAClG,GACC,CACDtQ,IAAK,wBACLrC,MAAO,SAA+BwS,GACpC,IAEIR,EAFAtN,EAAQ9B,KACZ,OAAK4P,GAELA,EAAMpQ,SAAQ,SAAUuQ,GACtB,IAAIX,EAAJ,CACA,IAAIsC,EAAa5P,EAAMoP,mBAAmBnB,GACrCjO,EAAMvB,QAAQ0Q,gBAAiBnP,EAAM6P,gBAAgBD,KAAatC,EAAQsC,EAF9D,CAGnB,KACKtC,GAASpP,KAAKO,QAAQ0Q,eACzBrB,EAAMpQ,SAAQ,SAAUuQ,GACtB,IAAIX,EAAJ,CACA,IAAIwC,EAAU9P,EAAM2P,wBAAwB1B,GAC5C,GAAIjO,EAAM6P,gBAAgBC,GAAU,OAAOxC,EAAQwC,EACnDxC,EAAQtN,EAAMvB,QAAQ0Q,cAAcpJ,MAAK,SAAUgK,GACjD,GAAsC,IAAlCA,EAAa9O,QAAQ6O,GAAgB,OAAOC,CAClD,GALiB,CAMnB,IAEGzC,IAAOA,EAAQpP,KAAKkN,iBAAiBlN,KAAKO,QAAQ4M,aAAa,IAC7DiC,GAlBY,IAmBrB,GACC,CACD3P,IAAK,mBACLrC,MAAO,SAA0B0U,EAAW/B,GAC1C,IAAK+B,EAAW,MAAO,GAGvB,GAFyB,mBAAdA,IAA0BA,EAAYA,EAAU/B,IAClC,iBAAd+B,IAAwBA,EAAY,CAACA,IACG,mBAA/C7U,OAAOD,UAAUoK,SAASjI,MAAM2S,GAAiC,OAAOA,EAC5E,IAAK/B,EAAM,OAAO+B,EAAmB,SAAK,GAC1C,IAAI1C,EAAQ0C,EAAU/B,GAKtB,OAJKX,IAAOA,EAAQ0C,EAAU9R,KAAK+R,sBAAsBhC,KACpDX,IAAOA,EAAQ0C,EAAU9R,KAAKkR,mBAAmBnB,KACjDX,IAAOA,EAAQ0C,EAAU9R,KAAKyR,wBAAwB1B,KACtDX,IAAOA,EAAQ0C,EAAmB,SAChC1C,GAAS,EAClB,GACC,CACD3P,IAAK,qBACLrC,MAAO,SAA4B2S,EAAMiC,GACvC,IAAItH,EAAS1K,KACTiS,EAAgBjS,KAAKkN,iBAAiB8E,GAAgBhS,KAAKO,QAAQ4M,aAAe,GAAI4C,GACtFH,EAAQ,GACRsC,EAAU,SAAiBtI,GACxBA,IACDc,EAAOiH,gBAAgB/H,GACzBgG,EAAM1Q,KAAK0K,GAEXc,EAAOhK,OAAOR,KAAK,uDAAuDqB,OAAOqI,IAErF,EAWA,MAVoB,iBAATmG,GAAqBA,EAAKhN,QAAQ,MAAQ,GACzB,iBAAtB/C,KAAKO,QAAQgR,MAAyBW,EAAQlS,KAAKkR,mBAAmBnB,IAChD,iBAAtB/P,KAAKO,QAAQgR,MAAiD,gBAAtBvR,KAAKO,QAAQgR,MAAwBW,EAAQlS,KAAK+R,sBAAsBhC,IAC1F,gBAAtB/P,KAAKO,QAAQgR,MAAwBW,EAAQlS,KAAKyR,wBAAwB1B,KACrD,iBAATA,GAChBmC,EAAQlS,KAAKkR,mBAAmBnB,IAElCkC,EAAczS,SAAQ,SAAU2S,GAC1BvC,EAAM7M,QAAQoP,GAAM,GAAGD,EAAQxH,EAAOwG,mBAAmBiB,GAC/D,IACOvC,CACT,KAEKoB,CACT,CA5HmB,GA6HfoB,EAAO,CAAC,CACVrF,KAAM,CAAC,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MACjIsF,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDpF,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,QAAS,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzYsF,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDpF,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACxIsF,GAAI,CAAC,GACLF,GAAI,GACH,CACDpF,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAClDsF,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KACrBF,GAAI,GACH,CACDpF,KAAM,CAAC,KAAM,MACbsF,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDpF,KAAM,CAAC,MAAO,MACdsF,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,GACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,GACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IACjBF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,IACdF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,GACRF,GAAI,IACH,CACDpF,KAAM,CAAC,OACPsF,GAAI,CAAC,EAAG,EAAG,GACXF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,GACRF,GAAI,GACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,IACXF,GAAI,IACH,CACDpF,KAAM,CAAC,MACPsF,GAAI,CAAC,EAAG,EAAG,EAAG,GACdF,GAAI,IACH,CACDpF,KAAM,CAAC,KAAM,MACbsF,GAAI,CAAC,EAAG,EAAG,GAAI,IACfF,GAAI,KAEFG,EAAqB,CACvB,EAAG,SAAWC,GACZ,OAAOC,OAAOD,EAAI,EACpB,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAY,GAALD,EAChB,EACA,EAAG,SAAWA,GACZ,OAAO,CACT,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAOD,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACvH,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,EAC/G,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAY,GAALD,EAAS,EAAIA,GAAK,GAAKA,GAAK,EAAI,EAAI,EACpD,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAY,GAALD,EAAS,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACjG,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,GAAe,IAALA,EAAU,EAAI,EAClE,EACA,EAAG,SAAWA,GACZ,OAAOC,OAAOD,GAAK,EACrB,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,EACnE,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,GAAe,IAALA,EAAU,EAAS,GAALA,GAAe,IAALA,EAAU,EAAIA,EAAI,GAAKA,EAAI,GAAK,EAAI,EACtF,EACA,GAAI,SAAWA,GACb,OAAOC,OAAOD,EAAI,IAAM,GAAKA,EAAI,KAAO,GAC1C,EACA,GAAI,SAAWA,GACb,OAAOC,OAAa,IAAND,EAChB,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAI,EACvD,EACA,GAAI,SAAWA,GACb,OAAOC,OAAOD,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,EACxG,EACA,GAAI,SAAWA,GACb,OAAOC,OAAOD,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAU,IAANA,EAAU,EAAI,EACjE,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,GAAUA,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAI,EAC7D,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,EAAI,EAC1C,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAAK,EAAI,EAC5G,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAI,EACzE,EACA,GAAI,SAAWA,GACb,OAAOC,OAAOD,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAAI,EAAI,EACzF,EACA,GAAI,SAAWA,GACb,OAAOC,OAAY,GAALD,EAAS,EAAS,GAALA,EAAS,GAAKA,EAAI,GAAKA,EAAI,KAAOA,EAAI,IAAM,EAAI,EAAI,EACjF,GAEEE,EAAyB,CAAC,KAAM,KAAM,MACtCC,EAAgB,CAClBC,KAAM,EACNC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,KAAM,EACNC,MAAO,GAcT,IAAIC,EAAiB,WACnB,SAASA,EAAehG,GACtB,IAbEiG,EAaE3S,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAMiT,GACtBjT,KAAKiN,cAAgBA,EACrBjN,KAAKO,QAAUA,EACfP,KAAKU,OAASe,EAAWvE,OAAO,kBAC1B8C,KAAKO,QAAQ4S,mBAAwD,OAAnCnT,KAAKO,QAAQ4S,mBAAgD,oBAATC,MAAyBA,KAAKC,cACxHrT,KAAKO,QAAQ4S,kBAAoB,KACjCnT,KAAKU,OAAOP,MAAM,uJAEpBH,KAAKkT,OAtBHA,EAAQ,CAAC,EACbd,EAAK5S,SAAQ,SAAU8T,GACrBA,EAAIvG,KAAKvN,SAAQ,SAAUyC,GACzBiR,EAAMjR,GAAK,CACTsR,QAASD,EAAIjB,GACbmB,QAASlB,EAAmBgB,EAAInB,IAEpC,GACF,IACOe,EAcP,CA0GA,OAzGA,OAAaD,EAAgB,CAAC,CAC5BxT,IAAK,UACLrC,MAAO,SAAiB0J,EAAKzD,GAC3BrD,KAAKkT,MAAMpM,GAAOzD,CACpB,GACC,CACD5D,IAAK,UACLrC,MAAO,SAAiB2S,GACtB,IAAIxP,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,GAAIoF,KAAK0P,mBACP,IACE,OAAO,IAAI0D,KAAKC,YAAYtD,EAAM,CAChClQ,KAAMU,EAAQkP,QAAU,UAAY,YAExC,CAAE,MAAOgE,GACP,MACF,CAEF,OAAOzT,KAAKkT,MAAMnD,IAAS/P,KAAKkT,MAAMlT,KAAKiN,cAAcwE,wBAAwB1B,GACnF,GACC,CACDtQ,IAAK,cACLrC,MAAO,SAAqB2S,GAC1B,IAAIxP,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8Y,EAAO1T,KAAK2T,QAAQ5D,EAAMxP,GAC9B,OAAIP,KAAK0P,mBACAgE,GAAQA,EAAKE,kBAAkBC,iBAAiBhZ,OAAS,EAE3D6Y,GAAQA,EAAKH,QAAQ1Y,OAAS,CACvC,GACC,CACD4E,IAAK,sBACLrC,MAAO,SAA6B2S,EAAMtQ,GACxC,IAAIc,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAOoF,KAAK6N,YAAYkC,EAAMxP,GAASwJ,KAAI,SAAU+D,GACnD,MAAO,GAAGvM,OAAO9B,GAAK8B,OAAOuM,EAC/B,GACF,GACC,CACDrO,IAAK,cACLrC,MAAO,SAAqB2S,GAC1B,IAAIjO,EAAQ9B,KACRO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8Y,EAAO1T,KAAK2T,QAAQ5D,EAAMxP,GAC9B,OAAKmT,EAGD1T,KAAK0P,mBACAgE,EAAKE,kBAAkBC,iBAAiBC,MAAK,SAAUC,EAAiBC,GAC7E,OAAOtB,EAAcqB,GAAmBrB,EAAcsB,EACxD,IAAGjK,KAAI,SAAUkK,GACf,MAAO,GAAG1S,OAAOO,EAAMvB,QAAQ2T,SAAS3S,OAAO0S,EACjD,IAEKP,EAAKH,QAAQxJ,KAAI,SAAUoK,GAChC,OAAOrS,EAAM0K,UAAUuD,EAAMoE,EAAQ5T,EACvC,IAXS,EAYX,GACC,CACDd,IAAK,YACLrC,MAAO,SAAmB2S,EAAM3D,GAC9B,IAAI7L,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8Y,EAAO1T,KAAK2T,QAAQ5D,EAAMxP,GAC9B,OAAImT,EACE1T,KAAK0P,mBACA,GAAGnO,OAAOvB,KAAKO,QAAQ2T,SAAS3S,OAAOmS,EAAKU,OAAOhI,IAErDpM,KAAKqU,yBAAyBX,EAAMtH,IAE7CpM,KAAKU,OAAOR,KAAK,6BAA6BqB,OAAOwO,IAC9C,GACT,GACC,CACDtQ,IAAK,2BACLrC,MAAO,SAAkCsW,EAAMtH,GAC7C,IAAI1B,EAAS1K,KACTsU,EAAMZ,EAAKa,MAAQb,EAAKF,QAAQpH,GAASsH,EAAKF,QAAQgB,KAAKC,IAAIrI,IAC/D0B,EAAS4F,EAAKH,QAAQe,GACtBtU,KAAKO,QAAQmU,sBAAgD,IAAxBhB,EAAKH,QAAQ1Y,QAAoC,IAApB6Y,EAAKH,QAAQ,KAClE,IAAXzF,EACFA,EAAS,SACW,IAAXA,IACTA,EAAS,KAGb,IAAI6G,EAAe,WACjB,OAAOjK,EAAOnK,QAAQ2T,SAAWpG,EAAO1G,WAAasD,EAAOnK,QAAQ2T,QAAUpG,EAAO1G,WAAa0G,EAAO1G,UAC3G,EACA,MAAuC,OAAnCpH,KAAKO,QAAQ4S,kBACA,IAAXrF,EAAqB,GACH,iBAAXA,EAA4B,WAAWvM,OAAOuM,EAAO1G,YACzDuN,IACqC,OAAnC3U,KAAKO,QAAQ4S,mBAEbnT,KAAKO,QAAQmU,sBAAgD,IAAxBhB,EAAKH,QAAQ1Y,QAAoC,IAApB6Y,EAAKH,QAAQ,GADjFoB,IAIF3U,KAAKO,QAAQ2T,SAAWI,EAAIlN,WAAapH,KAAKO,QAAQ2T,QAAUI,EAAIlN,WAAakN,EAAIlN,UAC9F,GACC,CACD3H,IAAK,mBACLrC,MAAO,WACL,OAAQqV,EAAuBmC,SAAS5U,KAAKO,QAAQ4S,kBACvD,KAEKF,CACT,CAvHqB,GAwHrB,SAAS4B,EAAUpW,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASmW,EAAgBzV,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACNuV,EAAU5X,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjEsV,EAAU5X,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,IAAI0V,EAAe,WACjB,SAASA,IACP,IAAIxU,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAM+U,GACtB/U,KAAKU,OAASe,EAAWvE,OAAO,gBAChC8C,KAAKO,QAAUA,EACfP,KAAKgV,OAASzU,EAAQ4I,eAAiB5I,EAAQ4I,cAAc6L,QAAU,SAAU5X,GAC/E,OAAOA,CACT,EACA4C,KAAKQ,KAAKD,EACZ,CAkLA,OAjLA,OAAawU,EAAc,CAAC,CAC1BtV,IAAK,OACLrC,MAAO,WACL,IAAImD,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E2F,EAAQ4I,gBAAe5I,EAAQ4I,cAAgB,CAClD8L,aAAa,IAEf,IAAIC,EAAQ3U,EAAQ4I,cACpBnJ,KAAKmV,YAA0Bra,IAAjBoa,EAAMC,OAAuBD,EAAMC,OAAS,EAC1DnV,KAAKiV,iBAAoCna,IAAtBoa,EAAMD,aAA4BC,EAAMD,YAC3DjV,KAAKoV,yBAAoDta,IAA9Boa,EAAME,qBAAoCF,EAAME,oBAC3EpV,KAAKS,OAASyU,EAAMzU,OAAS0D,EAAY+Q,EAAMzU,QAAUyU,EAAMG,eAAiB,KAChFrV,KAAK8N,OAASoH,EAAMpH,OAAS3J,EAAY+Q,EAAMpH,QAAUoH,EAAMI,eAAiB,KAChFtV,KAAKuV,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,IAChGvV,KAAKwV,eAAiBN,EAAMO,eAAiB,GAAKP,EAAMM,gBAAkB,IAC1ExV,KAAKyV,eAAiBzV,KAAKwV,eAAiB,GAAKN,EAAMO,gBAAkB,GACzEzV,KAAK0V,cAAgBR,EAAMQ,cAAgBvR,EAAY+Q,EAAMQ,eAAiBR,EAAMS,sBAAwBxR,EAAY,OACxHnE,KAAK4V,cAAgBV,EAAMU,cAAgBzR,EAAY+Q,EAAMU,eAAiBV,EAAMW,sBAAwB1R,EAAY,KACxHnE,KAAK8V,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,wBAA0BZ,EAAMY,yBAA2B,IAChI9V,KAAK+V,YAAcb,EAAMa,YAAcb,EAAMa,YAAc,IAC3D/V,KAAKgW,kBAAsClb,IAAvBoa,EAAMc,cAA6Bd,EAAMc,aAC7DhW,KAAKiW,aACP,GACC,CACDxW,IAAK,QACLrC,MAAO,WACD4C,KAAKO,SAASP,KAAKQ,KAAKR,KAAKO,QACnC,GACC,CACDd,IAAK,cACLrC,MAAO,WACL,IAAI8Y,EAAY,GAAG3U,OAAOvB,KAAKS,OAAQ,SAASc,OAAOvB,KAAK8N,QAC5D9N,KAAKmW,OAAS,IAAIrM,OAAOoM,EAAW,KACpC,IAAIE,EAAoB,GAAG7U,OAAOvB,KAAKS,QAAQc,OAAOvB,KAAKwV,eAAgB,SAASjU,OAAOvB,KAAKyV,gBAAgBlU,OAAOvB,KAAK8N,QAC5H9N,KAAKqW,eAAiB,IAAIvM,OAAOsM,EAAmB,KACpD,IAAIE,EAAmB,GAAG/U,OAAOvB,KAAK0V,cAAe,SAASnU,OAAOvB,KAAK4V,eAC1E5V,KAAKuK,cAAgB,IAAIT,OAAOwM,EAAkB,IACpD,GACC,CACD7W,IAAK,cACLrC,MAAO,SAAqBgH,EAAKP,EAAMiD,EAAKvG,GAC1C,IACI8J,EACAjN,EACAmZ,EAHAzU,EAAQ9B,KAIR8D,EAAc9D,KAAKO,SAAWP,KAAKO,QAAQ4I,eAAiBnJ,KAAKO,QAAQ4I,cAAcgF,kBAAoB,CAAC,EAChH,SAASqI,EAAUC,GACjB,OAAOA,EAAIzT,QAAQ,MAAO,OAC5B,CACA,IAAI0T,EAAe,SAAsBjX,GACvC,GAAIA,EAAIsD,QAAQjB,EAAMyT,iBAAmB,EAAG,CAC1C,IAAI3S,EAAOgB,EAAoBC,EAAMC,EAAarE,GAClD,OAAOqC,EAAMkU,aAAelU,EAAMkT,OAAOpS,OAAM9H,EAAWgM,EAAKgO,EAAgBA,EAAgBA,EAAgB,CAAC,EAAGvU,GAAUsD,GAAO,CAAC,EAAG,CACtI8S,iBAAkBlX,KACdmD,CACR,CACA,IAAIsD,EAAIzG,EAAIsC,MAAMD,EAAMyT,iBACpBjS,EAAI4C,EAAE/C,QAAQyT,OACdC,EAAI3Q,EAAEC,KAAKrE,EAAMyT,iBAAiBqB,OACtC,OAAO9U,EAAMkT,OAAOpR,EAAoBC,EAAMC,EAAaR,GAAIuT,EAAG/P,EAAKgO,EAAgBA,EAAgBA,EAAgB,CAAC,EAAGvU,GAAUsD,GAAO,CAAC,EAAG,CAC9I8S,iBAAkBrT,IAEtB,EACAtD,KAAKiW,cACL,IAAIa,EAA8BvW,GAAWA,EAAQuW,6BAA+B9W,KAAKO,QAAQuW,4BAC7FtI,EAAkBjO,GAAWA,EAAQ4I,oBAA2DrO,IAA1CyF,EAAQ4I,cAAcqF,gBAAgCjO,EAAQ4I,cAAcqF,gBAAkBxO,KAAKO,QAAQ4I,cAAcqF,gBA+CnL,MA9CY,CAAC,CACXuI,MAAO/W,KAAKqW,eACZW,UAAW,SAAmBP,GAC5B,OAAOD,EAAUC,EACnB,GACC,CACDM,MAAO/W,KAAKmW,OACZa,UAAW,SAAmBP,GAC5B,OAAO3U,EAAMmT,YAAcuB,EAAU1U,EAAMqT,OAAOsB,IAAQD,EAAUC,EACtE,IAEIjX,SAAQ,SAAUyX,GAEtB,IADAV,EAAW,EACJlM,EAAQ4M,EAAKF,MAAMG,KAAK9S,IAAM,CACnC,IAAI+S,EAAa9M,EAAM,GAAGuM,OAE1B,QAAc9b,KADdsC,EAAQsZ,EAAaS,IAEnB,GAA2C,mBAAhCL,EAA4C,CACrD,IAAIM,EAAON,EAA4B1S,EAAKiG,EAAO9J,GACnDnD,EAAwB,iBAATga,EAAoBA,EAAO,EAC5C,MAAO,GAAI7W,GAAWA,EAAQ6C,eAAe+T,GAC3C/Z,EAAQ,OACH,IAAIoR,EAAiB,CAC1BpR,EAAQiN,EAAM,GACd,QACF,CACEvI,EAAMpB,OAAOR,KAAK,8BAA8BqB,OAAO4V,EAAY,uBAAuB5V,OAAO6C,IACjGhH,EAAQ,EACV,KAC0B,iBAAVA,GAAuB0E,EAAMsT,sBAC7ChY,EAAQsF,EAAWtF,IAErB,IAAI4Z,EAAYC,EAAKD,UAAU5Z,GAS/B,GARAgH,EAAMA,EAAIpB,QAAQqH,EAAM,GAAI2M,GACxBxI,GACFyI,EAAKF,MAAMM,WAAaja,EAAMvC,OAC9Boc,EAAKF,MAAMM,WAAahN,EAAM,GAAGxP,QAEjCoc,EAAKF,MAAMM,UAAY,IAEzBd,GACgBzU,EAAMiU,YACpB,KAEJ,CACF,IACO3R,CACT,GACC,CACD3E,IAAK,OACLrC,MAAO,SAAcgH,EAAK+N,GACxB,IAEI9H,EACAjN,EAHAsN,EAAS1K,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAG/E0c,EAAgBxC,EAAgB,CAAC,EAAGvU,GAGxC,SAASgX,EAAiB9X,EAAK+X,GAC7B,IAAIC,EAAMzX,KAAK8V,wBACf,GAAIrW,EAAIsD,QAAQ0U,GAAO,EAAG,OAAOhY,EACjC,IAAImK,EAAInK,EAAIsC,MAAM,IAAI+H,OAAO,GAAGvI,OAAOkW,EAAK,WACxCC,EAAgB,IAAInW,OAAOqI,EAAE,IACjCnK,EAAMmK,EAAE,GAER,IAAI+N,GADJD,EAAgB1X,KAAK0O,YAAYgJ,EAAeJ,IACRjN,MAAM,MAC1CuN,EAAsBF,EAAcrN,MAAM,OAC1CsN,GAAuBA,EAAoB9c,OAAS,GAAM,IAAM+c,GAAuBA,EAAoB/c,OAAS,GAAM,KAC5H6c,EAAgBA,EAAc1U,QAAQ,KAAM,MAE9C,IACEsU,EAAgBO,KAAK3J,MAAMwJ,GACvBF,IAAkBF,EAAgBxC,EAAgBA,EAAgB,CAAC,EAAG0C,GAAmBF,GAC/F,CAAE,MAAO9R,GAEP,OADAxF,KAAKU,OAAOR,KAAK,oDAAoDqB,OAAO9B,GAAM+F,GAC3E,GAAGjE,OAAO9B,GAAK8B,OAAOkW,GAAKlW,OAAOmW,EAC3C,CAEA,cADOJ,EAAc7K,aACdhN,CACT,CACA,IAxBA6X,EAAcrI,oBAAqB,SAC5BqI,EAAc7K,aAuBdpC,EAAQrK,KAAKuK,cAAc2M,KAAK9S,IAAM,CAC3C,IAAI0T,EAAa,GACbC,GAAW,EACf,IAAgD,IAA5C1N,EAAM,GAAGtH,QAAQ/C,KAAKuV,mBAA4B,OAAOtL,KAAKI,EAAM,IAAK,CAC3E,IAAIR,EAAIQ,EAAM,GAAGtI,MAAM/B,KAAKuV,iBAAiBxL,KAAI,SAAUiO,GACzD,OAAOA,EAAKpB,MACd,IACAvM,EAAM,GAAKR,EAAE1G,QACb2U,EAAajO,EACbkO,GAAW,CACb,CAEA,IADA3a,EAAQ+U,EAAGoF,EAAiB5Z,KAAKqC,KAAMqK,EAAM,GAAGuM,OAAQU,GAAgBA,KAC3DjN,EAAM,KAAOjG,GAAwB,iBAAVhH,EAAoB,OAAOA,EAC9C,iBAAVA,IAAoBA,EAAQsF,EAAWtF,IAC7CA,IACH4C,KAAKU,OAAOR,KAAK,qBAAqBqB,OAAO8I,EAAM,GAAI,iBAAiB9I,OAAO6C,IAC/EhH,EAAQ,IAEN2a,IACF3a,EAAQ0a,EAAWG,QAAO,SAAUnQ,EAAG+O,GACrC,OAAOnM,EAAOsK,OAAOlN,EAAG+O,EAAGtW,EAAQuG,IAAKgO,EAAgBA,EAAgB,CAAC,EAAGvU,GAAU,CAAC,EAAG,CACxFoW,iBAAkBtM,EAAM,GAAGuM,SAE/B,GAAGxZ,EAAMwZ,SAEXxS,EAAMA,EAAIpB,QAAQqH,EAAM,GAAIjN,GAC5B4C,KAAKmW,OAAOkB,UAAY,CAC1B,CACA,OAAOjT,CACT,KAEK2Q,CACT,CA7LmB,GA8LnB,SAASmD,GAAUzZ,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASwZ,GAAgB9Y,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACN4Y,GAAUjb,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjE2Y,GAAUjb,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CAiCA,SAAS+Y,GAAsBC,GAC7B,IAAIC,EAAQ,CAAC,EACb,OAAO,SAAyB7B,EAAK3P,EAAKvG,GACxC,IAAId,EAAMqH,EAAM+Q,KAAKU,UAAUhY,GAC3BiY,EAAYF,EAAM7Y,GAKtB,OAJK+Y,IACHA,EAAYH,EAAGvR,EAAKvG,GACpB+X,EAAM7Y,GAAO+Y,GAERA,EAAU/B,EACnB,CACF,CACA,IAAIgC,GAAY,WACd,SAASA,IACP,IAAIlY,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAMyY,GACtBzY,KAAKU,OAASe,EAAWvE,OAAO,aAChC8C,KAAKO,QAAUA,EACfP,KAAK0Y,QAAU,CACbvE,OAAQiE,IAAsB,SAAUtR,EAAKvG,GAC3C,IAAIiY,EAAY,IAAIpF,KAAKuF,aAAa7R,EAAKvG,GAC3C,OAAO,SAAUkW,GACf,OAAO+B,EAAUxD,OAAOyB,EAC1B,CACF,IACAmC,SAAUR,IAAsB,SAAUtR,EAAKvG,GAC7C,IAAIiY,EAAY,IAAIpF,KAAKuF,aAAa7R,EAAKqR,GAAgBA,GAAgB,CAAC,EAAG5X,GAAU,CAAC,EAAG,CAC3FsY,MAAO,cAET,OAAO,SAAUpC,GACf,OAAO+B,EAAUxD,OAAOyB,EAC1B,CACF,IACAqC,SAAUV,IAAsB,SAAUtR,EAAKvG,GAC7C,IAAIiY,EAAY,IAAIpF,KAAK2F,eAAejS,EAAKqR,GAAgB,CAAC,EAAG5X,IACjE,OAAO,SAAUkW,GACf,OAAO+B,EAAUxD,OAAOyB,EAC1B,CACF,IACAuC,aAAcZ,IAAsB,SAAUtR,EAAKvG,GACjD,IAAIiY,EAAY,IAAIpF,KAAK6F,mBAAmBnS,EAAKqR,GAAgB,CAAC,EAAG5X,IACrE,OAAO,SAAUkW,GACf,OAAO+B,EAAUxD,OAAOyB,EAAKlW,EAAQ2Y,OAAS,MAChD,CACF,IACAC,KAAMf,IAAsB,SAAUtR,EAAKvG,GACzC,IAAIiY,EAAY,IAAIpF,KAAKgG,WAAWtS,EAAKqR,GAAgB,CAAC,EAAG5X,IAC7D,OAAO,SAAUkW,GACf,OAAO+B,EAAUxD,OAAOyB,EAC1B,CACF,KAEFzW,KAAKQ,KAAKD,EACZ,CA+CA,OA9CA,OAAakY,EAAW,CAAC,CACvBhZ,IAAK,OACLrC,MAAO,SAAc0L,GACnB,IAGIoM,GAHUta,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAChFuO,cAAe,CAAC,IAEEA,cACpBnJ,KAAKuV,gBAAkBL,EAAMK,gBAAkBL,EAAMK,gBAAkBL,EAAMK,iBAAmB,GAClG,GACC,CACD9V,IAAK,MACLrC,MAAO,SAAa+K,EAAMgK,GACxBnS,KAAK0Y,QAAQvQ,EAAK8C,cAAc2L,QAAUzE,CAC5C,GACC,CACD1S,IAAK,YACLrC,MAAO,SAAmB+K,EAAMgK,GAC9BnS,KAAK0Y,QAAQvQ,EAAK8C,cAAc2L,QAAUwB,GAAsBjG,EAClE,GACC,CACD1S,IAAK,SACLrC,MAAO,SAAgBA,EAAOic,EAASvS,EAAKvG,GAC1C,IAAIuB,EAAQ9B,KAqBZ,OApBcqZ,EAAQtX,MAAM/B,KAAKuV,iBACZ0C,QAAO,SAAUqB,EAAKzC,GACzC,IAAI0C,EA/GZ,SAAwBC,GACtB,IAAIC,EAAaD,EAAUvO,cAAc2L,OACrC8C,EAAgB,CAAC,EACrB,GAAIF,EAAUzW,QAAQ,MAAQ,EAAG,CAC/B,IAAImD,EAAIsT,EAAUzX,MAAM,KACxB0X,EAAavT,EAAE,GAAG+E,cAAc2L,OAChC,IAAI+C,EAASzT,EAAE,GAAGiE,UAAU,EAAGjE,EAAE,GAAGrL,OAAS,GAC1B,aAAf4e,GAA6BE,EAAO5W,QAAQ,KAAO,EAChD2W,EAAcd,WAAUc,EAAcd,SAAWe,EAAO/C,QACrC,iBAAf6C,GAAiCE,EAAO5W,QAAQ,KAAO,EAC3D2W,EAAcR,QAAOQ,EAAcR,MAAQS,EAAO/C,QAE5C+C,EAAO5X,MAAM,KACnBvC,SAAQ,SAAUoa,GACrB,GAAKA,EAAL,CACA,IACEC,EAAc3b,EADC0b,EAAI7X,MAAM,MAEzBtC,EAAMoa,EAAY,GAEhBpD,EADKoD,EAAY1e,MAAM,GACZgL,KAAK,KAAKyQ,OAAO5T,QAAQ,WAAY,IAC/C0W,EAAcja,EAAImX,UAAS8C,EAAcja,EAAImX,QAAUH,GAChD,UAARA,IAAiBiD,EAAcja,EAAImX,SAAU,GACrC,SAARH,IAAgBiD,EAAcja,EAAImX,SAAU,GAC3CkD,MAAMrD,KAAMiD,EAAcja,EAAImX,QAAUmD,SAAStD,EAAK,IAT3C,CAUlB,GAEJ,CACA,MAAO,CACLgD,WAAYA,EACZC,cAAeA,EAEnB,CAgF8BM,CAAenD,GACnC4C,EAAaF,EAAgBE,WAC7BC,EAAgBH,EAAgBG,cAClC,GAAI5X,EAAM4W,QAAQe,GAAa,CAC7B,IAAIQ,EAAYX,EAChB,IACE,IAAIY,EAAa3Z,GAAWA,EAAQ4Z,cAAgB5Z,EAAQ4Z,aAAa5Z,EAAQoW,mBAAqB,CAAC,EACnG1U,EAAIiY,EAAWE,QAAUF,EAAWpT,KAAOvG,EAAQ6Z,QAAU7Z,EAAQuG,KAAOA,EAChFmT,EAAYnY,EAAM4W,QAAQe,GAAYH,EAAKrX,EAAGkW,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGuB,GAAgBnZ,GAAU2Z,GAC9H,CAAE,MAAO/Z,GACP2B,EAAMpB,OAAOR,KAAKC,EACpB,CACA,OAAO8Z,CACT,CAGA,OAFEnY,EAAMpB,OAAOR,KAAK,oCAAoCqB,OAAOkY,IAExDH,CACT,GAAGlc,EAEL,KAEKqb,CACT,CAzFgB,GA0FhB,SAAS4B,GAAU5b,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAAS2b,GAAgBjb,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACN+a,GAAUpd,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjE8a,GAAUpd,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,SAASkb,GAAevV,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAC,QAAQtI,UAAUuI,QAAQ5H,KAAKuH,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOE,GACP,OAAO,CACT,CACF,CAvBkCgV,GAChC,OAAO,WACL,IACE9U,EADEC,EAAQ9H,EAAgBmH,GAE5B,GAAIC,EAA2B,CAC7B,IAAIW,EAAY/H,EAAgBmC,MAAM7C,YACtCuI,EAASR,QAAQC,UAAUQ,EAAO/K,UAAWgL,EAC/C,MACEF,EAASC,EAAMxG,MAAMa,KAAMpF,WAE7B,OAAO6C,EAA2BuC,KAAM0F,EAC1C,CACF,CAkBA,IAAI+U,GAAY,SAAUlU,GACxB3J,EAAU6d,EAAWlU,GACrB,IAAIC,EAAS+T,GAAeE,GAC5B,SAASA,EAAUC,EAASC,EAAO7R,GACjC,IAAIhH,EACAvB,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAsBnF,OArBA,OAAgBoF,KAAMya,GACtB3Y,EAAQ0E,EAAO7I,KAAKqC,MAChBuE,GACF7C,EAAa/D,MAAK,OAAuBmE,IAE3CA,EAAM4Y,QAAUA,EAChB5Y,EAAM6Y,MAAQA,EACd7Y,EAAMgH,SAAWA,EACjBhH,EAAMmL,cAAgBnE,EAASmE,cAC/BnL,EAAMvB,QAAUA,EAChBuB,EAAMpB,OAASe,EAAWvE,OAAO,oBACjC4E,EAAM8Y,aAAe,GACrB9Y,EAAM+Y,iBAAmBta,EAAQsa,kBAAoB,GACrD/Y,EAAMgZ,aAAe,EACrBhZ,EAAMiZ,WAAaxa,EAAQwa,YAAc,EAAIxa,EAAQwa,WAAa,EAClEjZ,EAAMkZ,aAAeza,EAAQya,cAAgB,EAAIza,EAAQya,aAAe,IACxElZ,EAAMmZ,MAAQ,CAAC,EACfnZ,EAAMoZ,MAAQ,GACVpZ,EAAM4Y,SAAW5Y,EAAM4Y,QAAQla,MACjCsB,EAAM4Y,QAAQla,KAAKsI,EAAUvI,EAAQma,QAASna,GAEzCuB,CACT,CAsLA,OArLA,OAAa2Y,EAAW,CAAC,CACvBhb,IAAK,YACLrC,MAAO,SAAmB+d,EAAW7R,EAAY/I,EAAS6a,GACxD,IAAI1Q,EAAS1K,KACTqb,EAAS,CAAC,EACVC,EAAU,CAAC,EACXC,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EA4BxB,OA3BAL,EAAU3b,SAAQ,SAAUsH,GAC1B,IAAI2U,GAAmB,EACvBnS,EAAW9J,SAAQ,SAAUiH,GAC3B,IAAI0B,EAAO,GAAG5G,OAAOuF,EAAK,KAAKvF,OAAOkF,IACjClG,EAAQmb,QAAUhR,EAAOiQ,MAAMnT,kBAAkBV,EAAKL,GACzDiE,EAAOuQ,MAAM9S,GAAQ,EACZuC,EAAOuQ,MAAM9S,GAAQ,IAAoC,IAAvBuC,EAAOuQ,MAAM9S,QAClCrN,IAAlBwgB,EAAQnT,KAAqBmT,EAAQnT,IAAQ,IAEjDuC,EAAOuQ,MAAM9S,GAAQ,EACrBsT,GAAmB,OACG3gB,IAAlBwgB,EAAQnT,KAAqBmT,EAAQnT,IAAQ,QAC5BrN,IAAjBugB,EAAOlT,KAAqBkT,EAAOlT,IAAQ,QAClBrN,IAAzB0gB,EAAiB/U,KAAmB+U,EAAiB/U,IAAM,IAEnE,IACKgV,IAAkBF,EAAgBzU,IAAO,EAChD,KACI7J,OAAO0B,KAAK0c,GAAQxgB,QAAUoC,OAAO0B,KAAK2c,GAASzgB,SACrDmF,KAAKkb,MAAMhc,KAAK,CACdoc,QAASA,EACTK,aAAc1e,OAAO0B,KAAK2c,GAASzgB,OACnC+gB,OAAQ,CAAC,EACTC,OAAQ,GACRT,SAAUA,IAGP,CACLC,OAAQpe,OAAO0B,KAAK0c,GACpBC,QAASre,OAAO0B,KAAK2c,GACrBC,gBAAiBte,OAAO0B,KAAK4c,GAC7BC,iBAAkBve,OAAO0B,KAAK6c,GAElC,GACC,CACD/b,IAAK,SACLrC,MAAO,SAAgB+K,EAAM2T,EAAKjY,GAChC,IAAIS,EAAI6D,EAAKpG,MAAM,KACf+E,EAAMxC,EAAE,GACRmC,EAAKnC,EAAE,GACPwX,GAAK9b,KAAKiH,KAAK,gBAAiBH,EAAKL,EAAIqV,GACzCjY,GACF7D,KAAK2a,MAAMoB,kBAAkBjV,EAAKL,EAAI5C,GAExC7D,KAAKib,MAAM9S,GAAQ2T,GAAO,EAAI,EAC9B,IAAIF,EAAS,CAAC,EACd5b,KAAKkb,MAAM1b,SAAQ,SAAUwc,GA1qDnC,IAAkBvd,EAAc+E,EAAUjC,EACpC0a,EACF5Y,EACAC,EAHc7E,EA2qDDud,EAAEJ,OA3qDapY,EA2qDEiD,EA1qD5BwV,EAAkBtZ,EAAclE,EA0qDX,CAACqI,GA1qDwB7J,QAChDoG,EAAM4Y,EAAgB5Y,IACtBC,EAAI2Y,EAAgB3Y,EACtBD,EAAIC,GAAKD,EAAIC,IAAM,GACf/B,IAAQ8B,EAAIC,GAAKD,EAAIC,GAAG/B,OAAOiC,IAC9BjC,GAAQ8B,EAAIC,GAAGpE,KAAKsE,GA2kD3B,SAAuBwY,EAAG7T,QACArN,IAApBkhB,EAAEV,QAAQnT,YACL6T,EAAEV,QAAQnT,GACjB6T,EAAEL,eAEN,CAsFQO,CAAcF,EAAG7T,GACb2T,GAAKE,EAAEH,OAAO3c,KAAK4c,GACA,IAAnBE,EAAEL,cAAuBK,EAAEG,OAC7Blf,OAAO0B,KAAKqd,EAAEJ,QAAQpc,SAAQ,SAAUyC,GACjC2Z,EAAO3Z,KAAI2Z,EAAO3Z,GAAK,CAAC,GAC7B,IAAIma,EAAaJ,EAAEJ,OAAO3Z,GACtBma,EAAWvhB,QACbuhB,EAAW5c,SAAQ,SAAUiH,QACL3L,IAAlB8gB,EAAO3Z,GAAGwE,KAAmBmV,EAAO3Z,GAAGwE,IAAM,EACnD,GAEJ,IACAuV,EAAEG,MAAO,EACLH,EAAEH,OAAOhhB,OACXmhB,EAAEZ,SAASY,EAAEH,QAEbG,EAAEZ,WAGR,IACApb,KAAKiH,KAAK,SAAU2U,GACpB5b,KAAKkb,MAAQlb,KAAKkb,MAAMpc,QAAO,SAAUkd,GACvC,OAAQA,EAAEG,IACZ,GACF,GACC,CACD1c,IAAK,OACLrC,MAAO,SAAc0J,EAAKL,EAAI4V,GAC5B,IAAIpO,EAASjO,KACTsc,EAAQ1hB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,EAC5E2hB,EAAO3hB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAKoF,KAAKgb,aAChFI,EAAWxgB,UAAUC,OAAS,EAAID,UAAU,QAAKE,EACrD,OAAKgM,EAAIjM,OACLmF,KAAK8a,cAAgB9a,KAAK6a,sBAC5B7a,KAAK4a,aAAa1b,KAAK,CACrB4H,IAAKA,EACLL,GAAIA,EACJ4V,OAAQA,EACRC,MAAOA,EACPC,KAAMA,EACNnB,SAAUA,KAIdpb,KAAK8a,eACE9a,KAAK0a,QAAQ2B,GAAQvV,EAAKL,GAAI,SAAUqV,EAAKjY,GAElD,GADAoK,EAAO6M,eACH7M,EAAO2M,aAAa/f,OAAS,EAAG,CAClC,IAAI2hB,EAAOvO,EAAO2M,aAAazX,QAC/B8K,EAAOwO,KAAKD,EAAK1V,IAAK0V,EAAK/V,GAAI+V,EAAKH,OAAQG,EAAKF,MAAOE,EAAKD,KAAMC,EAAKpB,SAC1E,CACIU,GAAOjY,GAAQyY,EAAQrO,EAAO8M,WAChC2B,YAAW,WACTzO,EAAOwO,KAAK9e,KAAKsQ,EAAQnH,EAAKL,EAAI4V,EAAQC,EAAQ,EAAU,EAAPC,EAAUnB,EACjE,GAAGmB,GAGLnB,EAASU,EAAKjY,EAChB,KA1BwBuX,EAAS,KAAM,CAAC,EA2B1C,GACC,CACD3b,IAAK,iBACLrC,MAAO,SAAwB+d,EAAW7R,GACxC,IAAI+F,EAASrP,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwgB,EAAWxgB,UAAUC,OAAS,EAAID,UAAU,QAAKE,EACrD,IAAKkF,KAAK0a,QAER,OADA1a,KAAKU,OAAOR,KAAK,kEACVkb,GAAYA,IAEI,iBAAdD,IAAwBA,EAAYnb,KAAKiN,cAAcI,mBAAmB8N,IAC3D,iBAAf7R,IAAyBA,EAAa,CAACA,IAClD,IAAI+R,EAASrb,KAAK2c,UAAUxB,EAAW7R,EAAY/I,EAAS6a,GAC5D,IAAKC,EAAOA,OAAOxgB,OAEjB,OADKwgB,EAAOC,QAAQzgB,QAAQugB,IACrB,KAETC,EAAOA,OAAO7b,SAAQ,SAAU2I,GAC9BkH,EAAOuN,QAAQzU,EACjB,GACF,GACC,CACD1I,IAAK,OACLrC,MAAO,SAAc+d,EAAW7R,EAAY8R,GAC1Cpb,KAAK6c,eAAe1B,EAAW7R,EAAY,CAAC,EAAG8R,EACjD,GACC,CACD3b,IAAK,SACLrC,MAAO,SAAgB+d,EAAW7R,EAAY8R,GAC5Cpb,KAAK6c,eAAe1B,EAAW7R,EAAY,CACzCoS,QAAQ,GACPN,EACL,GACC,CACD3b,IAAK,UACLrC,MAAO,SAAiB+K,GACtB,IAAI2U,EAAS9c,KACTS,EAAS7F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,GAC7E0J,EAAI6D,EAAKpG,MAAM,KACf+E,EAAMxC,EAAE,GACRmC,EAAKnC,EAAE,GACXtE,KAAKyc,KAAK3V,EAAKL,EAAI,YAAQ3L,OAAWA,GAAW,SAAUghB,EAAKjY,GAC1DiY,GAAKgB,EAAOpc,OAAOR,KAAK,GAAGqB,OAAOd,EAAQ,sBAAsBc,OAAOkF,EAAI,kBAAkBlF,OAAOuF,EAAK,WAAYgV,IACpHA,GAAOjY,GAAMiZ,EAAOpc,OAAOZ,IAAI,GAAGyB,OAAOd,EAAQ,qBAAqBc,OAAOkF,EAAI,kBAAkBlF,OAAOuF,GAAMjD,GACrHiZ,EAAOlB,OAAOzT,EAAM2T,EAAKjY,EAC3B,GACF,GACC,CACDpE,IAAK,cACLrC,MAAO,SAAqB+d,EAAWpQ,EAAWtL,EAAKsd,EAAeC,GACpE,IAAIzc,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EoF,KAAK8I,SAAS+G,OAAS7P,KAAK8I,SAAS+G,MAAMC,qBAAuB9P,KAAK8I,SAAS+G,MAAMC,mBAAmB/E,GAC3G/K,KAAKU,OAAOR,KAAK,qBAAsBqB,OAAO9B,EAAK,wBAA0B8B,OAAOwJ,EAAW,wBAA0B,4NAGvHtL,SAA6C,KAARA,IACrCO,KAAK0a,SAAW1a,KAAK0a,QAAQxd,QAC/B8C,KAAK0a,QAAQxd,OAAOie,EAAWpQ,EAAWtL,EAAKsd,EAAe,KAAMzC,GAAgBA,GAAgB,CAAC,EAAG/Z,GAAU,CAAC,EAAG,CACpHyc,SAAUA,KAGT7B,GAAcA,EAAU,IAC7Bnb,KAAK2a,MAAMtT,YAAY8T,EAAU,GAAIpQ,EAAWtL,EAAKsd,GACvD,KAEKtC,CACT,CAnNgB,CAmNd/Y,GAiEF,SAASub,GAAiB1c,GAOxB,MAN0B,iBAAfA,EAAQkG,KAAiBlG,EAAQkG,GAAK,CAAClG,EAAQkG,KACvB,iBAAxBlG,EAAQ4M,cAA0B5M,EAAQ4M,YAAc,CAAC5M,EAAQ4M,cAC1C,iBAAvB5M,EAAQgP,aAAyBhP,EAAQgP,WAAa,CAAChP,EAAQgP,aACtEhP,EAAQ0Q,eAAiB1Q,EAAQ0Q,cAAclO,QAAQ,UAAY,IACrExC,EAAQ0Q,cAAgB1Q,EAAQ0Q,cAAc1P,OAAO,CAAC,YAEjDhB,CACT,CACA,SAAS2c,GAAUze,EAAQC,GACzB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASwe,GAAgB9d,GACvB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACN4d,GAAUjgB,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,IAChD,OAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjE2d,GAAUjgB,OAAOsC,IAASC,SAAQ,SAAUC,GAC1CxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CACA,SAAS+d,GAAepY,GACtB,IAAIC,EAaN,WACE,GAAuB,oBAAZC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUC,KAAM,OAAO,EACnC,GAAqB,mBAAVC,MAAsB,OAAO,EACxC,IAEE,OADAC,QAAQtI,UAAUuI,QAAQ5H,KAAKuH,QAAQC,UAAUG,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOE,GACP,OAAO,CACT,CACF,CAvBkC6X,GAChC,OAAO,WACL,IACE3X,EADEC,EAAQ9H,EAAgBmH,GAE5B,GAAIC,EAA2B,CAC7B,IAAIW,EAAY/H,EAAgBmC,MAAM7C,YACtCuI,EAASR,QAAQC,UAAUQ,EAAO/K,UAAWgL,EAC/C,MACEF,EAASC,EAAMxG,MAAMa,KAAMpF,WAE7B,OAAO6C,EAA2BuC,KAAM0F,EAC1C,CACF,CAYA,SAAS4X,KAAQ,CASjB,IAAIC,GAAO,SAAUhX,GACnB3J,EAAU2gB,EAAMhX,GAChB,IAAIC,EAAS4W,GAAeG,GAC5B,SAASA,IACP,IAAIzb,EAZqB0b,EAarBjd,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwgB,EAAWxgB,UAAUC,OAAS,EAAID,UAAU,QAAKE,EAarD,IAZA,OAAgBkF,KAAMud,GACtBzb,EAAQ0E,EAAO7I,KAAKqC,MAChBuE,GACF7C,EAAa/D,MAAK,OAAuBmE,IAE3CA,EAAMvB,QAAU0c,GAAiB1c,GACjCuB,EAAMgH,SAAW,CAAC,EAClBhH,EAAMpB,OAASe,EACfK,EAAM2b,QAAU,CACdC,SAAU,IAxBaF,GA0BL,OAAuB1b,GAzBlC7E,OAAO0gB,oBAAoB1gB,OAAOc,eAAeyf,IACvDhe,SAAQ,SAAU8Z,GACI,mBAAdkE,EAAKlE,KACdkE,EAAKlE,GAAOkE,EAAKlE,GAAKtb,KAAKwf,GAE/B,IAqBMpC,IAAatZ,EAAM8b,gBAAkBrd,EAAQsd,QAAS,CACxD,IAAK/b,EAAMvB,QAAQud,cAEjB,OADAhc,EAAMtB,KAAKD,EAAS6a,GACb3d,EAA2BqE,GAAO,OAAuBA,IAElE4a,YAAW,WACT5a,EAAMtB,KAAKD,EAAS6a,EACtB,GAAG,EACL,CACA,OAAOtZ,CACT,CAucA,OAtcA,OAAayb,EAAM,CAAC,CAClB9d,IAAK,OACLrC,MAAO,WACL,IAAIsN,EAAS1K,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwgB,EAAWxgB,UAAUC,OAAS,EAAID,UAAU,QAAKE,EAC9B,mBAAZyF,IACT6a,EAAW7a,EACXA,EAAU,CAAC,IAERA,EAAQmG,YAAmC,IAAtBnG,EAAQmG,WAAuBnG,EAAQkG,KACrC,iBAAflG,EAAQkG,GACjBlG,EAAQmG,UAAYnG,EAAQkG,GACnBlG,EAAQkG,GAAG1D,QAAQ,eAAiB,IAC7CxC,EAAQmG,UAAYnG,EAAQkG,GAAG,KAGnC,IAAIsX,EAvLD,CACLpd,OAAO,EACPmd,eAAe,EACfrX,GAAI,CAAC,eACLC,UAAW,CAAC,eACZyG,YAAa,CAAC,OACdoC,YAAY,EACZ0B,eAAe,EACfO,0BAA0B,EAC1BD,KAAM,MACNyM,SAAS,EACTtJ,sBAAsB,EACtB5O,aAAc,IACduD,YAAa,IACbgH,gBAAiB,IACjBE,iBAAkB,IAClB0N,yBAAyB,EACzBtQ,aAAa,EACbd,eAAe,EACfO,cAAe,WACfQ,oBAAoB,EACpBH,mBAAmB,EACnBqJ,6BAA6B,EAC7B/H,aAAa,EACbG,yBAAyB,EACzBuB,YAAY,EACZC,mBAAmB,EACnB/E,eAAe,EACfJ,YAAY,EACZK,uBAAuB,EACvBoC,wBAAwB,EACxBD,6BAA6B,EAC7B/C,yBAAyB,EACzBL,iCAAkC,SAAgB5K,GAChD,IAAIme,EAAM,CAAC,EAIX,GAHyB,YAArB,OAAQne,EAAK,MAAkBme,EAAMne,EAAK,IACvB,iBAAZA,EAAK,KAAiBme,EAAIzR,aAAe1M,EAAK,IAClC,iBAAZA,EAAK,KAAiBme,EAAIC,aAAepe,EAAK,IAChC,YAArB,OAAQA,EAAK,KAAyC,YAArB,OAAQA,EAAK,IAAkB,CAClE,IAAIQ,EAAUR,EAAK,IAAMA,EAAK,GAC9B9C,OAAO0B,KAAK4B,GAASf,SAAQ,SAAUC,GACrCye,EAAIze,GAAOc,EAAQd,EACrB,GACF,CACA,OAAOye,CACT,EACA/U,cAAe,CACb8L,aAAa,EACbD,OAAQ,SAAgB5X,EAAOic,EAASvS,EAAKvG,GAC3C,OAAOnD,CACT,EACAqD,OAAQ,KACRqN,OAAQ,KACRyH,gBAAiB,IACjBC,eAAgB,IAChBE,cAAe,MACfE,cAAe,IACfE,wBAAyB,IACzBC,YAAa,IACbvH,iBAAiB,IAuIjB,SAAS4P,EAAoBC,GAC3B,OAAKA,EACwB,mBAAlBA,EAAqC,IAAIA,EAC7CA,EAFoB,IAG7B,CACA,GAfAre,KAAKO,QAAU4c,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGY,GAAU/d,KAAKO,SAAU0c,GAAiB1c,IACvE,OAAlCP,KAAKO,QAAQoH,mBACf3H,KAAKO,QAAQ4I,cAAgBgU,GAAgBA,GAAgB,CAAC,EAAGY,EAAQ5U,eAAgBnJ,KAAKO,QAAQ4I,qBAE3ErO,IAAzByF,EAAQuF,eACV9F,KAAKO,QAAQkJ,wBAA0BlJ,EAAQuF,mBAErBhL,IAAxByF,EAAQ8I,cACVrJ,KAAKO,QAAQmJ,uBAAyBnJ,EAAQ8I,cAO3CrJ,KAAKO,QAAQsd,QAAS,CAMzB,IAAIrF,EALAxY,KAAKyd,QAAQ/c,OACfe,EAAWjB,KAAK4d,EAAoBpe,KAAKyd,QAAQ/c,QAASV,KAAKO,SAE/DkB,EAAWjB,KAAK,KAAMR,KAAKO,SAGzBP,KAAKyd,QAAQjF,UACfA,EAAYxY,KAAKyd,QAAQjF,UACA,oBAATpF,OAChBoF,EAAYC,IAEd,IAAI6F,EAAK,IAAItN,EAAahR,KAAKO,SAC/BP,KAAK2a,MAAQ,IAAIrU,EAActG,KAAKO,QAAQ2G,UAAWlH,KAAKO,SAC5D,IAAI+D,EAAItE,KAAK8I,SACbxE,EAAE5D,OAASe,EACX6C,EAAEqM,cAAgB3Q,KAAK2a,MACvBrW,EAAE2I,cAAgBqR,EAClBha,EAAEiI,eAAiB,IAAI0G,EAAeqL,EAAI,CACxCpK,QAASlU,KAAKO,QAAQ8P,gBACtB8C,kBAAmBnT,KAAKO,QAAQ4S,kBAChCuB,qBAAsB1U,KAAKO,QAAQmU,wBAEjC8D,GAAexY,KAAKO,QAAQ4I,cAAc6L,QAAUhV,KAAKO,QAAQ4I,cAAc6L,SAAW+I,EAAQ5U,cAAc6L,SAClH1Q,EAAEkU,UAAY4F,EAAoB5F,GAClClU,EAAEkU,UAAUhY,KAAK8D,EAAGtE,KAAKO,SACzBP,KAAKO,QAAQ4I,cAAc6L,OAAS1Q,EAAEkU,UAAUxD,OAAOhX,KAAKsG,EAAEkU,YAEhElU,EAAEgG,aAAe,IAAIyK,EAAa/U,KAAKO,SACvC+D,EAAEuL,MAAQ,CACRC,mBAAoB9P,KAAK8P,mBAAmB9R,KAAKgC,OAEnDsE,EAAEoJ,iBAAmB,IAAI+M,GAAU2D,EAAoBpe,KAAKyd,QAAQ/C,SAAUpW,EAAEqM,cAAerM,EAAGtE,KAAKO,SACvG+D,EAAEoJ,iBAAiB6Q,GAAG,KAAK,SAAUvc,GACnC,IAAK,IAAInB,EAAOjG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAMyC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGf,EAAKe,EAAO,GAAKlG,UAAUkG,GAE7B4J,EAAOzD,KAAK9H,MAAMuL,EAAQ,CAAC1I,GAAOT,OAAOxB,GAC3C,IACIC,KAAKyd,QAAQe,mBACfla,EAAEka,iBAAmBJ,EAAoBpe,KAAKyd,QAAQe,kBACtDla,EAAEka,iBAAiBhe,KAAK8D,EAAGtE,KAAKO,QAAQke,UAAWze,KAAKO,UAEtDP,KAAKyd,QAAQhS,aACfnH,EAAEmH,WAAa2S,EAAoBpe,KAAKyd,QAAQhS,YAC5CnH,EAAEmH,WAAWjL,MAAM8D,EAAEmH,WAAWjL,KAAKR,OAE3CA,KAAKqI,WAAa,IAAIQ,EAAW7I,KAAK8I,SAAU9I,KAAKO,SACrDP,KAAKqI,WAAWkW,GAAG,KAAK,SAAUvc,GAChC,IAAK,IAAIjB,EAAQnG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAM2C,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGjB,EAAKiB,EAAQ,GAAKpG,UAAUoG,GAE9B0J,EAAOzD,KAAK9H,MAAMuL,EAAQ,CAAC1I,GAAOT,OAAOxB,GAC3C,IACAC,KAAKyd,QAAQC,SAASle,SAAQ,SAAU2H,GAClCA,EAAE3G,MAAM2G,EAAE3G,KAAKkK,EACrB,GACF,CAGA,GAFA1K,KAAKgV,OAAShV,KAAKO,QAAQ4I,cAAc6L,OACpCoG,IAAUA,EAAWkC,IACtBtd,KAAKO,QAAQ4M,cAAgBnN,KAAK8I,SAAS0V,mBAAqBxe,KAAKO,QAAQuG,IAAK,CACpF,IAAI8I,EAAQ5P,KAAK8I,SAASmE,cAAcC,iBAAiBlN,KAAKO,QAAQ4M,aAClEyC,EAAM/U,OAAS,GAAkB,QAAb+U,EAAM,KAAc5P,KAAKO,QAAQuG,IAAM8I,EAAM,GACvE,CACK5P,KAAK8I,SAAS0V,kBAAqBxe,KAAKO,QAAQuG,KACnD9G,KAAKU,OAAOR,KAAK,2DAEJ,CAAC,cAAe,oBAAqB,oBAAqB,qBAChEV,SAAQ,SAAU6c,GACzB3R,EAAO2R,GAAU,WACf,IAAIqC,EACJ,OAAQA,EAAehU,EAAOiQ,OAAO0B,GAAQld,MAAMuf,EAAc9jB,UACnE,CACF,IACsB,CAAC,cAAe,eAAgB,oBAAqB,wBAC3D4E,SAAQ,SAAU6c,GAChC3R,EAAO2R,GAAU,WACf,IAAIsC,EAEJ,OADCA,EAAgBjU,EAAOiQ,OAAO0B,GAAQld,MAAMwf,EAAe/jB,WACrD8P,CACT,CACF,IACA,IAAIkU,EAAWzc,IACXoP,EAAO,WACT,IAAIsN,EAAS,SAAgB/C,EAAK9S,GAC5B0B,EAAOkT,gBAAkBlT,EAAOoU,sBAAsBpU,EAAOhK,OAAOR,KAAK,yEAC7EwK,EAAOkT,eAAgB,EAClBlT,EAAOnK,QAAQsd,SAASnT,EAAOhK,OAAOZ,IAAI,cAAe4K,EAAOnK,SACrEmK,EAAOzD,KAAK,cAAeyD,EAAOnK,SAClCqe,EAASpc,QAAQwG,GACjBoS,EAASU,EAAK9S,EAChB,EACA,GAAI0B,EAAOyQ,WAAiD,OAApCzQ,EAAOnK,QAAQoH,mBAA8B+C,EAAOkT,cAAe,OAAOiB,EAAO,KAAMnU,EAAO1B,EAAEhL,KAAK0M,IAC7HA,EAAOqU,eAAerU,EAAOnK,QAAQuG,IAAK+X,EAC5C,EAMA,OALI7e,KAAKO,QAAQ2G,YAAclH,KAAKO,QAAQud,cAC1CvM,IAEAmL,WAAWnL,EAAM,GAEZqN,CACT,GACC,CACDnf,IAAK,gBACLrC,MAAO,SAAuB8L,GAC5B,IAAI+E,EAASjO,KAETgf,EADWpkB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK0iB,GAE/ElP,EAA8B,iBAAblF,EAAwBA,EAAWlJ,KAAKkJ,SAE7D,GADwB,mBAAbA,IAAyB8V,EAAe9V,IAC9ClJ,KAAKO,QAAQ2G,WAAalH,KAAKO,QAAQ0d,wBAAyB,CACnE,GAAI7P,GAAqC,WAA1BA,EAAQnD,cAA4B,OAAO+T,IAC1D,IAAI3D,EAAS,GACT4D,EAAS,SAAgBnY,GACtBA,GACMmH,EAAOnF,SAASmE,cAAcI,mBAAmBvG,GACvDtH,SAAQ,SAAUyC,GACjBoZ,EAAOtY,QAAQd,GAAK,GAAGoZ,EAAOnc,KAAK+C,EACzC,GACF,EACA,GAAKmM,EAMH6Q,EAAO7Q,QALSpO,KAAK8I,SAASmE,cAAcC,iBAAiBlN,KAAKO,QAAQ4M,aAChE3N,SAAQ,SAAUyC,GAC1B,OAAOgd,EAAOhd,EAChB,IAIEjC,KAAKO,QAAQyd,SACfhe,KAAKO,QAAQyd,QAAQxe,SAAQ,SAAUyC,GACrC,OAAOgd,EAAOhd,EAChB,IAEFjC,KAAK8I,SAAS4E,iBAAiB6D,KAAK8J,EAAQrb,KAAKO,QAAQkG,IAAI,SAAUjB,GAChEA,GAAMyI,EAAOiR,mBAAoBjR,EAAO/E,UAAU+E,EAAOkR,oBAAoBlR,EAAO/E,UACzF8V,EAAaxZ,EACf,GACF,MACEwZ,EAAa,KAEjB,GACC,CACDvf,IAAK,kBACLrC,MAAO,SAAyB2P,EAAMtG,EAAI2U,GACxC,IAAIwD,EAAWzc,IAQf,OAPK4K,IAAMA,EAAO/M,KAAKmb,WAClB1U,IAAIA,EAAKzG,KAAKO,QAAQkG,IACtB2U,IAAUA,EAAWkC,IAC1Btd,KAAK8I,SAAS4E,iBAAiBgO,OAAO3O,EAAMtG,GAAI,SAAUqV,GACxD8C,EAASpc,UACT4Y,EAASU,EACX,IACO8C,CACT,GACC,CACDnf,IAAK,MACLrC,MAAO,SAAa8K,GAClB,IAAKA,EAAQ,MAAM,IAAIkX,MAAM,iGAC7B,IAAKlX,EAAOrI,KAAM,MAAM,IAAIuf,MAAM,4FAsBlC,MArBoB,YAAhBlX,EAAOrI,OACTG,KAAKyd,QAAQ/C,QAAUxS,IAEL,WAAhBA,EAAOrI,MAAqBqI,EAAOpI,KAAOoI,EAAOhI,MAAQgI,EAAO/H,SAClEH,KAAKyd,QAAQ/c,OAASwH,GAEJ,qBAAhBA,EAAOrI,OACTG,KAAKyd,QAAQe,iBAAmBtW,GAEd,eAAhBA,EAAOrI,OACTG,KAAKyd,QAAQhS,WAAavD,GAER,kBAAhBA,EAAOrI,MACTkI,EAAcE,iBAAiBC,GAEb,cAAhBA,EAAOrI,OACTG,KAAKyd,QAAQjF,UAAYtQ,GAEP,aAAhBA,EAAOrI,MACTG,KAAKyd,QAAQC,SAASxe,KAAKgJ,GAEtBlI,IACT,GACC,CACDP,IAAK,sBACLrC,MAAO,SAA6B6E,GAClC,GAAKA,GAAMjC,KAAKmb,aACZ,CAAC,SAAU,OAAOpY,QAAQd,IAAM,GACpC,IAAK,IAAIod,EAAK,EAAGA,EAAKrf,KAAKmb,UAAUtgB,OAAQwkB,IAAM,CACjD,IAAIC,EAAYtf,KAAKmb,UAAUkE,GAC/B,KAAI,CAAC,SAAU,OAAOtc,QAAQuc,IAAc,IACxCtf,KAAK2a,MAAM4E,4BAA4BD,GAAY,CACrDtf,KAAKkf,iBAAmBI,EACxB,KACF,CACF,CACF,GACC,CACD7f,IAAK,iBACLrC,MAAO,SAAwB0J,EAAKsU,GAClC,IAAI/L,EAASrP,KACbA,KAAKwf,qBAAuB1Y,EAC5B,IAAI8X,EAAWzc,IACfnC,KAAKiH,KAAK,mBAAoBH,GAC9B,IAAI2Y,EAAc,SAAqBxd,GACrCoN,EAAOnG,SAAWjH,EAClBoN,EAAO8L,UAAY9L,EAAOvG,SAASmE,cAAcI,mBAAmBpL,GACpEoN,EAAO6P,sBAAmBpkB,EAC1BuU,EAAO8P,oBAAoBld,EAC7B,EAkBIyd,EAAS,SAAgB3S,GACtBjG,GAAQiG,IAAQsC,EAAOvG,SAAS0V,mBAAkBzR,EAAO,IAC9D,IAAI9K,EAAoB,iBAAT8K,EAAoBA,EAAOsC,EAAOvG,SAASmE,cAAc0S,sBAAsB5S,GAC1F9K,IACGoN,EAAOnG,UACVuW,EAAYxd,GAEToN,EAAOhH,WAAWa,UAAUmG,EAAOhH,WAAW0W,eAAe9c,GAC9DoN,EAAOvG,SAAS0V,kBAAkBnP,EAAOvG,SAAS0V,iBAAiBoB,kBAAkB3d,IAE3FoN,EAAOwQ,cAAc5d,GAAG,SAAU6Z,IA3BzB,SAAcA,EAAK7Z,GACxBA,GACFwd,EAAYxd,GACZoN,EAAOhH,WAAW0W,eAAe9c,GACjCoN,EAAOmQ,0BAAuB1kB,EAC9BuU,EAAOpI,KAAK,kBAAmBhF,GAC/BoN,EAAO3O,OAAOZ,IAAI,kBAAmBmC,IAErCoN,EAAOmQ,0BAAuB1kB,EAEhC8jB,EAASpc,SAAQ,WACf,OAAO6M,EAAOrG,EAAE7J,MAAMkQ,EAAQzU,UAChC,IACIwgB,GAAUA,EAASU,GAAK,WAC1B,OAAOzM,EAAOrG,EAAE7J,MAAMkQ,EAAQzU,UAChC,GACF,CAYIuhB,CAAKL,EAAK7Z,EACZ,GACF,EAQA,OAPK6E,IAAO9G,KAAK8I,SAAS0V,kBAAqBxe,KAAK8I,SAAS0V,iBAAiBsB,OAElEhZ,GAAO9G,KAAK8I,SAAS0V,kBAAoBxe,KAAK8I,SAAS0V,iBAAiBsB,MAClF9f,KAAK8I,SAAS0V,iBAAiBuB,OAAOL,GAEtCA,EAAO5Y,GAJP4Y,EAAO1f,KAAK8I,SAAS0V,iBAAiBuB,UAMjCnB,CACT,GACC,CACDnf,IAAK,YACLrC,MAAO,SAAmB0J,EAAKL,EAAIuZ,GACjC,IAAIlD,EAAS9c,KACTigB,EAAS,SAASA,EAAOxgB,EAAKygB,GAChC,IAAI3f,EACJ,GAAsB,YAAlB,OAAQ2f,GAAoB,CAC9B,IAAK,IAAIjf,EAAQrG,UAAUC,OAAQslB,EAAO,IAAI/hB,MAAM6C,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGif,EAAKjf,EAAQ,GAAKtG,UAAUsG,GAE9BX,EAAUuc,EAAOvc,QAAQoK,iCAAiC,CAAClL,EAAKygB,GAAM3e,OAAO4e,GAC/E,MACE5f,EAAU4c,GAAgB,CAAC,EAAG+C,GAEhC3f,EAAQuG,IAAMvG,EAAQuG,KAAOmZ,EAAOnZ,IACpCvG,EAAQwM,KAAOxM,EAAQwM,MAAQkT,EAAOlT,KACtCxM,EAAQkG,GAAKlG,EAAQkG,IAAMwZ,EAAOxZ,GAClClG,EAAQyf,UAAYzf,EAAQyf,WAAaA,GAAaC,EAAOD,UAC7D,IAAIla,EAAegX,EAAOvc,QAAQuF,cAAgB,IAC9Csa,EAAY7f,EAAQyf,UAAY,GAAGze,OAAOhB,EAAQyf,WAAWze,OAAOuE,GAAcvE,OAAO9B,GAAOA,EACpG,OAAOqd,EAAO9T,EAAEoX,EAAW7f,EAC7B,EAQA,MAPmB,iBAARuG,EACTmZ,EAAOnZ,IAAMA,EAEbmZ,EAAOlT,KAAOjG,EAEhBmZ,EAAOxZ,GAAKA,EACZwZ,EAAOD,UAAYA,EACZC,CACT,GACC,CACDxgB,IAAK,IACLrC,MAAO,WACL,IAAIijB,EACJ,OAAOrgB,KAAKqI,aAAegY,EAAmBrgB,KAAKqI,YAAY2D,UAAU7M,MAAMkhB,EAAkBzlB,UACnG,GACC,CACD6E,IAAK,SACLrC,MAAO,WACL,IAAIkjB,EACJ,OAAOtgB,KAAKqI,aAAeiY,EAAoBtgB,KAAKqI,YAAYkY,OAAOphB,MAAMmhB,EAAmB1lB,UAClG,GACC,CACD6E,IAAK,sBACLrC,MAAO,SAA6BqJ,GAClCzG,KAAKO,QAAQmG,UAAYD,CAC3B,GACC,CACDhH,IAAK,qBACLrC,MAAO,SAA4BqJ,GACjC,IAAI+Z,EAASxgB,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAKoF,KAAK4d,cAER,OADA5d,KAAKU,OAAOR,KAAK,kDAAmDF,KAAKmb,YAClE,EAET,IAAKnb,KAAKmb,YAAcnb,KAAKmb,UAAUtgB,OAErC,OADAmF,KAAKU,OAAOR,KAAK,6DAA8DF,KAAKmb,YAC7E,EAET,IAAIrU,EAAM9G,KAAKkf,kBAAoBlf,KAAKmb,UAAU,GAC9ChO,IAAcnN,KAAKO,SAAUP,KAAKO,QAAQ4M,YAC1CsT,EAAUzgB,KAAKmb,UAAUnb,KAAKmb,UAAUtgB,OAAS,GACrD,GAA0B,WAAtBiM,EAAImE,cAA4B,OAAO,EAC3C,IAAIyV,EAAiB,SAAwBze,EAAGsQ,GAC9C,IAAIoO,EAAYH,EAAO1X,SAAS4E,iBAAiBuN,MAAM,GAAG1Z,OAAOU,EAAG,KAAKV,OAAOgR,IAChF,OAAsB,IAAfoO,GAAkC,IAAdA,CAC7B,EACA,GAAIpgB,EAAQqgB,SAAU,CACpB,IAAIC,EAAYtgB,EAAQqgB,SAAS5gB,KAAM0gB,GACvC,QAAkB5lB,IAAd+lB,EAAyB,OAAOA,CACtC,CACA,QAAI7gB,KAAKwH,kBAAkBV,EAAKL,OAC3BzG,KAAK8I,SAAS4E,iBAAiBgN,WAAW1a,KAAKO,QAAQ2G,WAAclH,KAAKO,QAAQ0d,8BACnFyC,EAAe5Z,EAAKL,IAAS0G,IAAeuT,EAAeD,EAASha,IAE1E,GACC,CACDhH,IAAK,iBACLrC,MAAO,SAAwBqJ,EAAI2U,GACjC,IAAI0F,EAAS9gB,KACT4e,EAAWzc,IACf,OAAKnC,KAAKO,QAAQkG,IAIA,iBAAPA,IAAiBA,EAAK,CAACA,IAClCA,EAAGjH,SAAQ,SAAU+S,GACfuO,EAAOvgB,QAAQkG,GAAG1D,QAAQwP,GAAK,GAAGuO,EAAOvgB,QAAQkG,GAAGvH,KAAKqT,EAC/D,IACAvS,KAAK6f,eAAc,SAAU/D,GAC3B8C,EAASpc,UACL4Y,GAAUA,EAASU,EACzB,IACO8C,IAXLxD,GAAYA,IACL7Y,QAAQC,UAWnB,GACC,CACD/C,IAAK,gBACLrC,MAAO,SAAuB2P,EAAMqO,GAClC,IAAIwD,EAAWzc,IACK,iBAAT4K,IAAmBA,EAAO,CAACA,IACtC,IAAIgU,EAAY/gB,KAAKO,QAAQyd,SAAW,GACpCgD,EAAUjU,EAAKjO,QAAO,SAAUgI,GAClC,OAAOia,EAAUhe,QAAQ+D,GAAO,CAClC,IACA,OAAKka,EAAQnmB,QAIbmF,KAAKO,QAAQyd,QAAU+C,EAAUxf,OAAOyf,GACxChhB,KAAK6f,eAAc,SAAU/D,GAC3B8C,EAASpc,UACL4Y,GAAUA,EAASU,EACzB,IACO8C,IARDxD,GAAUA,IACP7Y,QAAQC,UAQnB,GACC,CACD/C,IAAK,MACLrC,MAAO,SAAa0J,GAElB,GADKA,IAAKA,EAAM9G,KAAKkf,mBAAqBlf,KAAKmb,WAAanb,KAAKmb,UAAUtgB,OAAS,EAAImF,KAAKmb,UAAU,GAAKnb,KAAKkJ,YAC5GpC,EAAK,MAAO,MAEjB,MADc,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,OACja/D,QAAQ/C,KAAK8I,SAASmE,cAAcwE,wBAAwB3K,KAAS,GAAKA,EAAImE,cAAclI,QAAQ,SAAW,EAAI,MAAQ,KAC5I,GACC,CACDtD,IAAK,gBACLrC,MAAO,WACL,IAAI6jB,EAASjhB,KACTO,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwgB,EAAWxgB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK0iB,GAC/E4D,EAAgB/D,GAAgBA,GAAgBA,GAAgB,CAAC,EAAGnd,KAAKO,SAAUA,GAAU,CAC/Fsd,SAAS,IAEPsD,EAAQ,IAAI5D,EAAK2D,QACCpmB,IAAlByF,EAAQI,YAA0C7F,IAAnByF,EAAQE,SACzC0gB,EAAMzgB,OAASygB,EAAMzgB,OAAOygB,MAAM5gB,IAsBpC,MApBoB,CAAC,QAAS,WAAY,YAC5Bf,SAAQ,SAAU2H,GAC9Bga,EAAMha,GAAK8Z,EAAO9Z,EACpB,IACAga,EAAMrY,SAAWqU,GAAgB,CAAC,EAAGnd,KAAK8I,UAC1CqY,EAAMrY,SAAS+G,MAAQ,CACrBC,mBAAoBqR,EAAMrR,mBAAmB9R,KAAKmjB,IAEpDA,EAAM9Y,WAAa,IAAIQ,EAAWsY,EAAMrY,SAAUqY,EAAM5gB,SACxD4gB,EAAM9Y,WAAWkW,GAAG,KAAK,SAAUvc,GACjC,IAAK,IAAIb,EAAQvG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAM+C,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGrB,EAAKqB,EAAQ,GAAKxG,UAAUwG,GAE9B+f,EAAMla,KAAK9H,MAAMgiB,EAAO,CAACnf,GAAOT,OAAOxB,GACzC,IACAohB,EAAM3gB,KAAK0gB,EAAe9F,GAC1B+F,EAAM9Y,WAAW9H,QAAU4gB,EAAM5gB,QACjC4gB,EAAM9Y,WAAWqF,iBAAiB5E,SAAS+G,MAAQ,CACjDC,mBAAoBqR,EAAMrR,mBAAmB9R,KAAKmjB,IAE7CA,CACT,GACC,CACD1hB,IAAK,SACLrC,MAAO,WACL,MAAO,CACLmD,QAASP,KAAKO,QACdoa,MAAO3a,KAAK2a,MACZzR,SAAUlJ,KAAKkJ,SACfiS,UAAWnb,KAAKmb,UAChB+D,iBAAkBlf,KAAKkf,iBAE3B,KAEK3B,CACT,CAreW,CAqeT7b,IACF,OAAgB6b,GAAM,kBAAkB,WAGtC,OAAO,IAAIA,GAFG3iB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACpEA,UAAUC,OAAS,EAAID,UAAU,QAAKE,EAEvD,IACA,IAAIsmB,GAAW7D,GAAK8D,iBACpBD,GAASC,eAAiB9D,GAAK8D,eACVD,GAASC,eACnBD,GAAS5gB,KACA4gB,GAASvB,cACPuB,GAASE,gBACrBF,GAASG,IACEH,GAASrC,eACdqC,GAASI,UACjBJ,GAASpY,EACJoY,GAASb,OACIa,GAASK,oBACVL,GAAStR,mBACbsR,GAASM,eACVN,GAASO,cAZ7B,IAaA,K,0OCppFIC,EAAkB,oGAClBC,EAAe,CACjB,QAAS,IACT,QAAS,IACT,OAAQ,IACR,QAAS,IACT,OAAQ,IACR,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,QAAS,IACT,SAAU,IACV,WAAY,IACZ,UAAW,IACX,SAAU,IACV,QAAS,KAEPC,EAAqB,SAA4B3a,GACnD,OAAO0a,EAAa1a,EACtB,ECtBA,SAAS3I,EAAQC,EAAQC,GACvB,IAAIC,EAAO1B,OAAO0B,KAAKF,GACvB,GAAIxB,OAAO2B,sBAAuB,CAChC,IAAIC,EAAU5B,OAAO2B,sBAAsBH,GACvCC,IACFG,EAAUA,EAAQC,QAAO,SAAUC,GACjC,OAAO9B,OAAO+B,yBAAyBP,EAAQM,GAAKE,UACtD,KAEFN,EAAKO,KAAKC,MAAMR,EAAME,EACxB,CACA,OAAOF,CACT,CACA,SAASS,EAAcC,GACrB,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CACzC,IAAIC,EAAyB,MAAhB3E,UAAU0E,GAAa1E,UAAU0E,GAAK,CAAC,EAChDA,EAAI,EACNd,EAAQvB,OAAOsC,IAAS,GAAMC,SAAQ,SAAUC,GAC9C,IAAgBJ,EAAQI,EAAKF,EAAOE,GACtC,IACSxC,OAAOyC,0BAChBzC,OAAO0C,iBAAiBN,EAAQpC,OAAOyC,0BAA0BH,IAEjEf,EAAQvB,OAAOsC,IAASC,SAAQ,SAAUC,GACxCxC,OAAOM,eAAe8B,EAAQI,EAAKxC,OAAO+B,yBAAyBO,EAAQE,GAC7E,GAEJ,CACA,OAAOJ,CACT,CAGA,IAUI0iB,EAVAC,EAAiB,CACnBC,SAAU,kBACVC,cAAe,GACfC,oBAAqB,GACrBC,4BAA4B,EAC5BC,mBAAoB,GACpBC,2BAA4B,CAAC,KAAM,SAAU,IAAK,KAClDC,aAAa,EACbC,SDjBoB,SAAkBC,GACtC,OAAOA,EAAKzf,QAAQ4e,EAAiBE,EACvC,GCkBWY,GAAc,IAAAC,iBAKlB,SAASC,IACd,OAAOZ,CACT,CACO,IAAIa,EAAmB,WAC5B,SAASA,IACP,IAAgB7iB,KAAM6iB,GACtB7iB,KAAK8iB,eAAiB,CAAC,CACzB,CAeA,OAdA,IAAaD,EAAkB,CAAC,CAC9BpjB,IAAK,oBACLrC,MAAO,SAA2BkM,GAChC,IAAIxH,EAAQ9B,KACZsJ,EAAW9J,SAAQ,SAAUiH,GACtB3E,EAAMghB,eAAerc,KAAK3E,EAAMghB,eAAerc,IAAM,EAC5D,GACF,GACC,CACDhH,IAAK,oBACLrC,MAAO,WACL,OAAOH,OAAO0B,KAAKqB,KAAK8iB,eAC1B,KAEKD,CACT,CApB8B,GAwBvB,SAASE,IACd,OAAOhB,CACT,CACO,IAAIiB,EAAmB,CAC5BnjB,KAAM,WACNW,KAAM,SAAc4gB,IApCf,WACL,IAAI7gB,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFonB,EAAiB5iB,EAAcA,EAAc,CAAC,EAAG4iB,GAAiBzhB,EACpE,CAkCI0iB,CAAY7B,EAAS7gB,QAAQ2iB,OAT1B,SAAiB9B,GACtBW,EAAeX,CACjB,CAQI+B,CAAQ/B,EACV,E,oCCnFF3mB,EAAQ,GAAuBA,EAAQ,QAAgB,EAEvD,IAAI2oB,EAAiB,EAAQ,MAE7B3oB,EAAQ,GAAgB2oB,EAAeC,cAEvC,IAAIC,EAAwB,EAAQ,MAEpC7oB,EAAQ,GAAuB6oB,EAAsBC,oB,oCCTrD,IAAIC,EAAyB,EAAQ,MAErC/oB,EAAQW,YAAa,EACrBX,EAAQ4oB,cAAgB5oB,EAAQgpB,mBAAgB,EAEhD,IAAIC,EAA0BF,EAAuB,EAAQ,OAEzDG,EAAkBH,EAAuB,EAAQ,OAEjDI,EAQJ,SAAiCvgB,EAAKwgB,GAAe,IAAKA,GAAexgB,GAAOA,EAAIjI,WAAc,OAAOiI,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEygB,QAASzgB,GAAS,IAAIiV,EAAQyL,EAAyBF,GAAc,GAAIvL,GAASA,EAAM0L,IAAI3gB,GAAQ,OAAOiV,EAAM2L,IAAI5gB,GAAQ,IAAI6gB,EAAS,CAAC,EAAOC,EAAwBlnB,OAAOM,gBAAkBN,OAAO+B,yBAA0B,IAAK,IAAIS,KAAO4D,EAAO,GAAY,YAAR5D,GAAqBxC,OAAOD,UAAUoG,eAAezF,KAAK0F,EAAK5D,GAAM,CAAE,IAAI2kB,EAAOD,EAAwBlnB,OAAO+B,yBAAyBqE,EAAK5D,GAAO,KAAU2kB,IAASA,EAAKH,KAAOG,EAAK9Q,KAAQrW,OAAOM,eAAe2mB,EAAQzkB,EAAK2kB,GAAgBF,EAAOzkB,GAAO4D,EAAI5D,EAAQ,CAAIykB,EAAOJ,QAAUzgB,EAASiV,GAASA,EAAMhF,IAAIjQ,EAAK6gB,GAAW,OAAOA,CAAQ,CARvxBG,CAAwB,EAAQ,OAExCC,EAAad,EAAuB,EAAQ,OAE5Ce,EAAkB,EAAQ,MAE9B,SAASR,EAAyBF,GAAe,GAAuB,mBAAZW,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQT,EAA2B,SAAkCF,GAAe,OAAOA,EAAca,EAAmBD,CAAmB,GAAGZ,EAAc,CAI9U,IAAIJ,EAA6BG,EAAMjB,cAAc,IAAI4B,EAAgBI,gBACzElqB,EAAQgpB,cAAgBA,EACxBA,EAAcmB,YAAc,sBAE5B,IAAIvB,EAA6B,SAAUwB,GAGzC,SAASxB,IAGP,IAFA,IAAIvhB,EAEKjB,EAAOjG,UAAUC,OAAQkF,EAAO,IAAI3B,MAAMyC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Ef,EAAKe,GAAQlG,UAAUkG,GA0CzB,OAvCAgB,EAAQ+iB,EAAiBlnB,KAAKwB,MAAM0lB,EAAkB,CAAC7kB,MAAMuB,OAAOxB,KAAUC,MACxE8kB,cAAgB,IAAIP,EAAgBI,eAC1C7iB,EAAMijB,YAAa,EACnBjjB,EAAMkjB,oBAAsB,EAE5BljB,EAAMmjB,eAAiB,WACrBnjB,EAAMkjB,oBAAsBxgB,OAAO0gB,QAE9BpjB,EAAMijB,aACTjjB,EAAMijB,YAAa,EACnBI,sBAAsBrjB,EAAMsjB,YAAYpnB,MAAK,EAAI0lB,EAAwBI,SAAShiB,KAEtF,EAEAA,EAAMujB,aAAe,SAAUC,EAAUC,GACnCzjB,EAAM0jB,mBAAmBD,EAAWzjB,EAAM2jB,QAC5CjhB,OAAOkhB,SAAS,EAAGJ,EAEvB,EAEAxjB,EAAM6jB,aAAe,SAAUC,EAAML,GACnC,IAAIM,EAAOhqB,SAASiqB,eAAeF,EAAKzb,UAAU,IAE9C0b,GAAQ/jB,EAAM0jB,mBAAmBD,EAAWzjB,EAAM2jB,QACpDI,EAAKE,gBAET,EAEAjkB,EAAM0jB,mBAAqB,SAAUQ,EAAiBC,GACpD,IAAIT,EAAqB1jB,EAAM2jB,MAAMD,mBAErC,OAAKA,GAKEA,EAAmB7nB,MAAK,EAAI+lB,EAAwBI,SAAShiB,GAAQkkB,EAAiBC,EAC/F,EAEOnkB,CACT,EAjDA,EAAI6hB,EAAgBG,SAAST,EAAewB,GAmD5C,IAAIqB,EAAS7C,EAAcrmB,UAkE3B,OAhEAkpB,EAAOd,YAAc,WACnB,IAAI3lB,EAAMO,KAAKylB,MAAMU,SAAS1mB,KAAO,KAEjCA,GACFO,KAAK8kB,cAAcsB,KAAKpmB,KAAKylB,MAAMU,SAAU1mB,EAAKO,KAAKglB,qBAGzDhlB,KAAK+kB,YAAa,CACpB,EAEAmB,EAAOG,kBAAoB,WAEzB,IAAIC,EADJ9hB,OAAO+hB,iBAAiB,SAAUvmB,KAAKilB,gBAEvC,IAAIuB,EAAuBxmB,KAAKylB,MAAMU,SAClC1mB,EAAM+mB,EAAqB/mB,IAC3BmmB,EAAOY,EAAqBZ,KAE5BnmB,IACF6mB,EAAiBtmB,KAAK8kB,cAAcrI,KAAKzc,KAAKylB,MAAMU,SAAU1mB,IAG5D6mB,EACFtmB,KAAKqlB,aAAaiB,OAAgBxrB,GACzB8qB,GACT5lB,KAAK2lB,aAAac,UAAUb,QAAO9qB,EAEvC,EAEAorB,EAAOQ,qBAAuB,WAC5BliB,OAAOmiB,oBAAoB,SAAU3mB,KAAKilB,eAC5C,EAEAiB,EAAOU,mBAAqB,SAA4BrB,GACtD,IAGIe,EAHAO,EAAwB7mB,KAAKylB,MAAMU,SACnCP,EAAOiB,EAAsBjB,KAC7BnmB,EAAMonB,EAAsBpnB,IAG5BA,IACF6mB,EAAiBtmB,KAAK8kB,cAAcrI,KAAKzc,KAAKylB,MAAMU,SAAU1mB,IAY5DmmB,EACF5lB,KAAK2lB,aAAac,UAAUb,GAAOL,GAEnCvlB,KAAKqlB,aAAaiB,EAAgBf,EAEtC,EAEAW,EAAOY,OAAS,WACd,OAAoBlD,EAAMxnB,cAAcqnB,EAAcsD,SAAU,CAC9D3pB,MAAO4C,KAAK8kB,eACX9kB,KAAKylB,MAAMuB,SAChB,EAEO3D,CACT,CAvHiC,CAuH/BO,EAAMqD,WAERxsB,EAAQ4oB,cAAgBA,EACxBA,EAAc6D,UAAY,CACxB1B,mBAAoBlB,EAAWR,QAAQqD,KACvCH,SAAU1C,EAAWR,QAAQsD,QAAQC,WACrClB,SAAU7B,EAAWR,QAAQrlB,OAAO4oB,W,kCCpJtC5sB,EAAQW,YAAa,EACrBX,EAAQkqB,oBAAiB,EACzB,IACI2C,EAA6B,gCAE7B3C,EAA8B,WAChC,SAASA,IAAkB,CAE3B,IAAIuB,EAASvB,EAAe3nB,UA8C5B,OA5CAkpB,EAAOzJ,KAAO,SAAc0J,EAAU1mB,GACpC,IAAI8nB,EAAWvnB,KAAKwnB,YAAYrB,EAAU1mB,GAE1C,IACE,IAAIrC,EAAQoH,OAAOijB,eAAeC,QAAQH,GAC1C,OAAOnqB,EAAQya,KAAK3J,MAAM9Q,GAAS,CACrC,CAAE,MAAOoI,GAKP,OAAIhB,QAAUA,OAAO8iB,IAA+B9iB,OAAO8iB,GAA4BC,GAC9E/iB,OAAO8iB,GAA4BC,GAGrC,CACT,CACF,EAEArB,EAAOE,KAAO,SAAcD,EAAU1mB,EAAKrC,GACzC,IAAImqB,EAAWvnB,KAAKwnB,YAAYrB,EAAU1mB,GACtCkoB,EAAc9P,KAAKU,UAAUnb,GAEjC,IACEoH,OAAOijB,eAAeG,QAAQL,EAAUI,EAC1C,CAAE,MAAOniB,GACHhB,QAAUA,OAAO8iB,KAGnB9iB,OAAO8iB,GAA8B,CAAC,GAFtC9iB,OAAO8iB,GAA4BC,GAAY1P,KAAK3J,MAAMyZ,EAS9D,CACF,EAEAzB,EAAOsB,YAAc,SAAqBrB,EAAU1mB,GAClD,IAAIooB,EAhDe,YAgDwB1B,EAAS2B,SACpD,OAAOroB,QAA6CooB,EAAeA,EAAe,IAAMpoB,CAC1F,EAEOklB,CACT,CAlDkC,GAoDlClqB,EAAQkqB,eAAiBA,C,oCCzDzBlqB,EAAQW,YAAa,EACrBX,EAAQ8oB,qBAQR,SAA8BwE,GAC5B,IAAI5B,GAAW,EAAI6B,EAAaC,eAC5BhN,GAAQ,EAAIiN,EAAOC,YAAY/E,EAAeK,eAC9C2E,GAAM,EAAIF,EAAOG,QAAQ,MAO7B,OANA,EAAIH,EAAOI,kBAAiB,WAC1B,GAAIF,EAAIpiB,QAAS,CACf,IAAIsf,EAAWrK,EAAMwB,KAAK0J,EAAU4B,GACpCK,EAAIpiB,QAAQ0f,SAAS,EAAGJ,GAAY,EACtC,CACF,GAAG,CAACa,EAAS1mB,MACN,CACL2oB,IAAKA,EACLG,SAAU,WACJH,EAAIpiB,SACNiV,EAAMmL,KAAKD,EAAU4B,EAAYK,EAAIpiB,QAAQwiB,UAEjD,EAEJ,EAxBA,IAAIpF,EAAiB,EAAQ,MAEzB8E,EAAS,EAAQ,MAEjBF,EAAe,EAAQ,K,uBCT3BvtB,EAAQguB,WAAa,CACnB,qCAAsCC,IAAM,wEAC5C,wCAAyCC,IAAM,wEAC/C,2CAA4CC,IAAM,wEAClD,yCAA0CC,IAAM,+DAChD,4CAA6CC,IAAM,+DACnD,+CAAgDC,IAAM,+DACtD,oCAAqCC,IAAM,8BAC3C,uCAAwCC,IAAM,wEAC9C,0CAA2CC,IAAM,iFACjD,6CAA8CC,IAAM,iFACpD,+CAAgDC,IAAM,6DACtD,kDAAmDC,IAAM,+DACzD,qDAAsDC,IAAM,+DAC5D,yCAA0CC,IAAM,iGAChD,0CAA2CC,IAAM,gFACjD,8CAA+CC,IAAM,yFACrD,0CAA2CC,IAAM,yFACjD,0CAA2CC,IAAM,yF,uBClBnDzhB,EAAOzN,QAAU,CAAC,CACZmvB,OAAQC,EAAQ,KAChBtpB,QAAS,CAAC,QAAU,GAAG,QAAU,CAAC,GAAK,wBAAwB,GAAK,+CAA+C,GAAK,gDAAgD,EAAI,iDAAiD,GAAK,yBAClO,CACAqpB,OAAQC,EAAQ,MAChBtpB,QAAS,CAAC,QAAU,GAAG,KAAO,yBAAyB,WAAa,UAAU,UAAY,IAAI,iBAAmB,UAAU,YAAc,UAAU,QAAU,aAAa,KAAO,yBAAyB,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,iBAAkB,EAAK,YAAc,qCAC/U,CACAqpB,OAAQC,EAAQ,MAChBtpB,QAAS,CAAC,QAAU,KACpB,CACAqpB,OAAQC,EAAQ,KAChBtpB,QAAS,CAAC,QAAU,K,uBCX1B,MAAMupB,EAAUD,EAAS,OACnB,2BAAEE,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CJ,EAAAA,MAAAA,GAEFpvB,EAAQ,EAAY,SAACyvB,EAAKnqB,EAAWoqB,EAAeC,QAAtB,IAAJrqB,IAAAA,EAAO,CAAC,GAYhC,IAAIsqB,EAAUP,EAAQ/f,KAAI6f,IACxB,IAAKA,EAAOA,OAAOM,GACjB,OAGFnqB,EAAKgqB,2BAA6BA,EAClChqB,EAAKiqB,SAAWA,EAChBjqB,EAAKkqB,aAAeA,EAEpB,MAAMvkB,EAASkkB,EAAOA,OAAOM,GAAKnqB,EAAM6pB,EAAOrpB,SAI/C,OAHImF,GAAU0kB,IACZrqB,EAAOqqB,EAAa,CAAErqB,OAAM2F,SAAQkkB,YAE/BlkB,CAAM,IAMf,OAFA2kB,EAAUA,EAAQvrB,QAAO4G,QAA6B,IAAZA,IAEtC2kB,EAAQxvB,OAAS,EACZwvB,EACEF,EACF,CAACA,GAED,EAEX,EAEA1vB,EAAQ,EAAiB,CAACyvB,EAAKnqB,EAAMoqB,IACnCL,EAAQ7R,QACN,CAACqS,EAAU9N,IACTA,EAAKoN,OAAOM,GACRI,EAASC,MAAK,IAAM/N,EAAKoN,OAAOM,GAAKnqB,EAAMyc,EAAKjc,WAChD+pB,GACN/nB,QAAQC,U,oEC/CZ,MCgBA,SAAcgoB,GAGb,OAFAA,EAAMA,GAAOvtB,OAAOC,OAAO,MAEpB,CAQNqhB,GAAI,SAAY1e,EAAc4qB,IAC5BD,EAAI3qB,KAAU2qB,EAAI3qB,GAAQ,KAAKX,KAAKurB,EACtC,EASAC,IAAK,SAAa7qB,EAAc4qB,GAC3BD,EAAI3qB,IACP2qB,EAAI3qB,GAAMgH,OAAO2jB,EAAI3qB,GAAMkD,QAAQ0nB,KAAa,EAAG,EAErD,EAUAxjB,KAAM,SAAcpH,EAAc8qB,IAChCH,EAAI3qB,IAAS,IAAI1E,QAAQ4O,KAAI,SAAU0gB,GAAWA,EAAQE,EAAM,KAChEH,EAAI,MAAQ,IAAIrvB,QAAQ4O,KAAI,SAAU0gB,GAAWA,EAAQ5qB,EAAM8qB,EAAM,GACvE,EAEF,CD1DgBC,E,qKEFhB,EAAeC,IACb,QAAsB/vB,IAAlB+vB,EACF,OAAOA,EAET,IAAKjoB,EAAMkoB,EAAU,IAAKD,EAAc9oB,MAAO,KAK/C,OAJI+oB,IACFA,EAAU,IAAKA,GAGH,MAAVloB,EACM,IAAKkoB,EAEuB,MAAlCloB,EAAKkO,OAAOlO,EAAK/H,OAAS,GACrB+H,EAAKzH,MAAM,GAAI,GAAK2vB,EAEtBloB,EAAOkoB,CACf,E,UCXD,MAAMC,EAAY,IAAIC,IACtB,IAAIC,EAAa,GAEjB,MAAMC,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAYpoB,QAAS,KAEjB,CACrB,MAAOH,EAAMyoB,GAAMF,EAAYppB,MAAO,KACtCqpB,EAAkB,GAAExoB,KAAQ0oB,mBAAmBD,IACjD,CAEA,MAAMvD,EAAWyD,mBAAmBH,GAUpC,OAPwBI,EAAAA,EAAAA,GACtB1D,EACAyD,mBAAmBE,KAGlB1pB,MAAO,KAAI,EAEQ,EAGxB,SAAS2pB,EAAW9oB,GAElB,OACEA,EAAK+oB,WAAY,MACjB/oB,EAAK+oB,WAAY,aACjB/oB,EAAK+oB,WAAY,WAEV/oB,EAIF,IAAIgpB,IACThpB,EACA4B,OAAO2hB,SAAS0F,MAAQrnB,OAAO2hB,SAAS0F,KAAK7wB,SAAU,KAAO,GAAK,MACnE8sB,QACJ,CAOO,MAAMgE,EAAgB1uB,IAC3B6tB,EAAa7tB,CAAK,EAWP2uB,EAAgBZ,IAC3B,MAAMa,EAAkBC,EAAUd,GAE5Be,EAAYjB,EAAWlhB,KAAIoiB,IAA0B,IAAzB,KAAEvpB,EAAI,UAAEwpB,GAAWD,EACnD,MAAO,CACLvpB,KAAMwpB,EACNC,aAAczpB,EACf,IAGGA,GAAO0pB,EAAAA,EAAAA,IAAKJ,EAAWF,GAE7B,OAAIppB,EACK2pB,EAAkB3pB,EAAK4pB,MAAMH,cAG/B,IAAI,EAYAI,EAAkBtB,IAC7B,MAAMa,EAAkBC,EAAUd,GAE5Be,EAAYjB,EAAWlhB,KAAI2iB,IAA0B,IAAzB,KAAE9pB,EAAI,UAAEwpB,GAAWM,EACnD,MAAO,CACL9pB,KAAMwpB,EACNC,aAAczpB,EACf,IAGGA,GAAO0pB,EAAAA,EAAAA,IAAKJ,EAAWF,GAE7B,OAAIppB,EACKA,EAAK+pB,OAGP,CAAC,CAAC,EAWEC,EAAWzB,IACtB,MAAMa,EAAkBd,EAAaQ,EAAWP,IAChD,GAAIJ,EAAU/G,IAAIgI,GAChB,OAAOjB,EAAU9G,IAAI+H,GAGvB,MAAMa,GAAWC,EAAAA,EAAAA,GAAwB3B,GACzC,GAAI0B,EACF,OAAOD,EAASC,EAASE,QAG3B,IAAIC,EAAYjB,EAAcC,GAQ9B,OANKgB,IACHA,EAAYf,EAAUd,IAGxBJ,EAAUzX,IAAI0Y,EAAiBgB,GAExBA,CAAS,EAULf,EAAYd,IAGvB,IAAI6B,EAFoB9B,EAAaQ,EAAWP,IAShD,MANmB,gBAAf6B,IACFA,EAAa,KAGfA,EAAYT,EAAkBS,GAEvBA,CAAS,C,g1BC3JlB,MAAMC,EAAqBrJ,EAAAA,cAAoB,CAAC,GAChD,IAAIsJ,EAA2B,KAK/B,SAASC,EAAuBhB,GAA4C,IAA3C,gBAAEiB,EAAe,KAAEvpB,EAAI,MAAEwpB,EAAK,OAAEvG,GAAQqF,EACvE,MAAMmB,EAAYzpB,EACdA,EAAKA,KACLupB,EAAgBC,IAAUD,EAAgBC,GAAOxpB,KAErD,OACE+f,EAAAA,cAACA,EAAAA,SAAc,KACZ0J,GAAaxG,EAAOwG,IACnBA,GAAa1J,EAAAA,cAAA,WAAK,yBAG1B,CAfIA,EAAM2J,sBACRL,EAA2BtJ,EAAM2J,oBAAqB,cAAc,CAAC,IAiBvE,MAAMC,EAAc/H,IAClB,MAAM,KAAE5hB,EAAI,MAAEwpB,EAAK,OAAEvG,EAAM,SAAEE,GAAavB,EAE1C,OACE7B,EAAAA,cAACqJ,EAAmBQ,SAAQ,MACzBL,GACCxJ,EAAAA,cAACuJ,EAAuB,CACtBtpB,KAAMA,EACNwpB,MAAOA,EACPvG,OAAQA,GAAUE,EAClBoG,gBAAiBA,KAGO,EAW5BM,EAAiBL,IAAU,IAADM,EAW9B,IAAI9e,EAeJ,GAxBS+U,EAAAA,WAgBP/U,EAHAqe,GACAjwB,OAAO0B,KAAKuuB,EAAyBU,eAAe/yB,OAE1C+oB,EAAAA,WAAiBsJ,GAEjBtJ,EAAAA,WAAiBqJ,GAMzBnT,MAAMtH,OAAO6a,IACf,MAAM,IAAIjO,MAAO,iLAIKiO,WAIxB,GAAkB,QAAlBM,EAAI9e,EAAQwe,UAAM,IAAAM,GAAdA,EAAgB9pB,KAClB,OAAOgL,EAAQwe,GAAOxpB,KAEtB,MAAM,IAAIub,MACP,uMAIL,E,cCxFF,MAAMyO,EAAmBC,EAAAA,GAAOC,QAEhC,SAASC,IACP,MAAM,IAAI5O,MACP,6UAKL,C,qNCXA,MAyDM6O,EAzDU,SAAUC,GACxB,GAAyB,oBAAdryB,SACT,OAAO,EAET,MAAMsyB,EAAWtyB,SAASO,cAAe,QACzC,IACE,GAAI+xB,EAASC,SAAiD,mBAA/BD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOpS,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkCwS,CAAS,YA1Cd,SAAUC,EAAKhuB,GAC1C,OAAO,IAAIgC,SAAQ,CAACC,EAASC,KAC3B,GAAyB,oBAAd5G,SAET,YADA4G,IAIF,MAAM+rB,EAAO3yB,SAASO,cAAe,QACrCoyB,EAAKC,aAAc,MAAO,YAC1BD,EAAKC,aAAc,OAAOF,GAE1BtxB,OAAO0B,KAAK4B,GAASf,SAAQC,IAC3B+uB,EAAKC,aAAahvB,EAAKc,EAAQd,GAAK,IAGtC+uB,EAAKE,OAASlsB,EACdgsB,EAAKG,QAAUlsB,GAGb5G,SAAS+yB,qBAAsB,QAAO,IACtC/yB,SAASgzB,kBAAmB,UAAS,GAAGC,YAC5BnyB,YAAY6xB,EAAK,GAEnC,EAE4B,SAAUD,GACpC,OAAO,IAAIhsB,SAAQ,CAACC,EAASC,KAC3B,MAAMssB,EAAM,IAAIC,eAChBD,EAAIE,KAAM,MAAMV,GAAK,GAErBQ,EAAIL,OAAS,KACQ,MAAfK,EAAIG,OACN1sB,IAEAC,GACF,EAGFssB,EAAIzhB,KAAK,KAAK,GAElB,EAMM6hB,EAAa,CAAC,EAkBpB,MAhBiB,SAAUZ,EAAKhuB,GAC9B,OAAO,IAAIgC,SAAQC,IACb2sB,EAAWZ,GACb/rB,IAIFyrB,EAA0BM,EAAKhuB,GAC5BgqB,MAAK,KACJ/nB,IACA2sB,EAAWZ,IAAO,CAAI,IAEvBa,OAAM,QAAS,GAEtB,E,oBCrEO,MAAMC,EAAqB,CAIhCjQ,MAAQ,QAIRkQ,QAAU,WASNC,EAAoBC,IACxB,MAAO5sB,EAAM6sB,GAAeD,EAAQztB,MAAO,KAPbuC,MAS9B,MAAQ,cADoB,MAAV1B,EAAgB,SAPlC0B,EAAc,OADgBA,EAQqC1B,GAP7D,GAAa0B,EAAEnJ,MAAM,GAAKmJ,GAC1BtJ,SAAU,KAAMsJ,EAAEnJ,MAAM,GAAI,GAAKmJ,mBAQrCmrB,EAAe,IAAGA,IAAiB,IACnC,EAGJ,SAASC,EAAQnB,EAAKoB,GACpB,YAD0B,IAANA,IAAAA,EAAU,OACvB,IAAIptB,SAAQC,IACjB,MAAMusB,EAAM,IAAIC,eAChBD,EAAIE,KAAKU,EAAQpB,GAAK,GACtBQ,EAAIa,mBAAqB,KACD,GAAlBb,EAAIc,YACNrtB,EAAQusB,EACV,EAEFA,EAAIzhB,KAAK,KAAK,GAElB,CAEA,MAgBMwiB,EAAY,+BAEZC,EAAkB,SAACC,EAAUC,EAAkBvzB,QAAT,IAATuzB,IAAAA,EAAY,MAC7C,MAAMC,EAAO,CACXC,mBAAoBH,EAASG,mBAC7BvtB,KAAMotB,EAASptB,KACfwtB,uBAAwBJ,EAASI,uBACjChE,UAAW4D,EAAS5D,UACpBiE,kBAAmBL,EAASK,kBAC5BC,mBAAoBN,EAASM,oBAG/B,MAAO,CACLL,YACAvzB,OACA6zB,KAAMP,EAAStqB,OACfwqB,OAEJ,EAsBO,IAAMM,EAAU,WACrB,SAAAA,EAAYC,EAAexF,GAAa,KA6BxCyF,wBAA0B,IAAI1F,IAb5BhrB,KAAK2wB,OAAS,IAAI3F,IAClBhrB,KAAK4wB,WAAa,IAAI5F,IACtBhrB,KAAK6wB,cAAgB,CAAC,EACtB7wB,KAAK8wB,WAAa,IAAI9F,IACtBhrB,KAAK+wB,mBAAqB,IAAI/F,IAC9BhrB,KAAKgxB,wBAAyB,EAC9BhxB,KAAKixB,eAAiB,GACtBjxB,KAAKkxB,kBAAoB,IAAIC,IAC7BnxB,KAAKoxB,kBAAoB,IAAID,IAC7BnxB,KAAKywB,cAAgBA,GACrB3E,EAAAA,EAAAA,IAAcb,EAChB,CAAC,IAAA/E,EAAAsK,EAAAxzB,UAirBA,OAjrBAkpB,EAIDmL,YAAA,SAAY9C,GACV,IAAI+C,EAAkBtxB,KAAK0wB,wBAAwBzM,IAAIsK,GAQvD,OANK+C,IACHA,EAAkB5B,EAAQnB,EAAM,OAChCvuB,KAAK0wB,wBAAwBpd,IAAIib,EAAK+C,IAIjCA,EACJ/G,MAAKgH,IACJvxB,KAAK0wB,wBAAwBc,OAAOjD,GAC7BgD,KAERnC,OAAMtT,IAEL,MADA9b,KAAK0wB,wBAAwBc,OAAOjD,GAC9BzS,CAAG,GAEf,EAACoK,EAEDuL,aAAA,SAAaC,GACX1xB,KAAK0xB,UAAYA,EACjB1xB,KAAK2xB,iBAAmBD,EAAW,0BAAyBE,MAAK7oB,GAAKA,GACxE,EAACmd,EAED2L,kBAAA,SAAkBC,GAChB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BvD,EAAMgB,EAAkBwC,GAC9B,OAAO/xB,KAAKqxB,YAAY9C,GAAKhE,MAAKwE,IAChC,MAAM,OAAEG,EAAM,aAAE+C,GAAiBlD,EAGjC,GAAe,MAAXG,EACF,IACE,MAAMgD,EAAcra,KAAK3J,MAAM+jB,GAC/B,QAAyBn3B,IAArBo3B,EAAYtvB,KACd,MAAM,IAAIwc,MAAO,iCAGnB,MAAMqQ,EAAcsC,EAAShwB,MAAO,KAAI,GAKxC,OAJI0tB,IAAgByC,EAAYtvB,KAAKgS,SAAS6a,KAC5CyC,EAAYtvB,MAAS,IAAG6sB,KAGnBxyB,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBC,QAC3B8C,QAASF,GAEb,CAAE,MAAOpW,GACP,CAKJ,OAAe,MAAXoT,GAA6B,MAAXA,EAEF,cAAd6C,GAA0C,cAAdA,EACvB90B,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBjQ,QAMxBpf,KAAK6xB,kBACV50B,OAAOk1B,OAAOL,EAAS,CAAEC,SAAW,YAAYM,UAAU,KAK/C,MAAXnD,EACKlvB,KAAK6xB,kBACV50B,OAAOk1B,OAAOL,EAAS,CACrBC,SAAW,YACXO,qBAAqB,KAMvBN,EAAU,EACLhyB,KAAK6xB,kBACV50B,OAAOk1B,OAAOL,EAAS,CAAEE,QAASA,EAAU,KAKzC/0B,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBjQ,OAC3B,GAEN,EAAC8G,EAEDqM,0BAAA,SAA0BT,GACxB,MAAM,SAAEC,EAAQ,QAAEC,EAAU,GAAMF,EAC5BvD,EAAMgB,EAAkBwC,GAAU/uB,QAAS,QAAS,aAC1D,OAAOhD,KAAKqxB,YAAY9C,GAAKhE,MAAKwE,IAChC,MAAM,OAAEG,EAAM,aAAE+C,GAAiBlD,EAGjC,GAAe,MAAXG,EACF,IACE,OAAOjyB,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBC,QAC3B8C,QAASH,GAEb,CAAE,MAAOnW,GACP,CAKJ,OAAe,MAAXoT,GAA6B,MAAXA,EAEF,cAAd6C,GAA0C,cAAdA,EACvB90B,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBjQ,QAMxBpf,KAAKuyB,0BACVt1B,OAAOk1B,OAAOL,EAAS,CAAEC,SAAW,YAAYM,UAAU,KAK/C,MAAXnD,EACKlvB,KAAKuyB,0BACVt1B,OAAOk1B,OAAOL,EAAS,CACrBC,SAAW,YACXO,qBAAqB,KAMvBN,EAAU,EACLhyB,KAAKuyB,0BACVt1B,OAAOk1B,OAAOL,EAAS,CAAEE,QAASA,EAAU,KAKzC/0B,OAAOk1B,OAAOL,EAAS,CAC5B5C,OAAQG,EAAmBjQ,OAC3B,GAEN,EAAC8G,EAEDsM,iBAAA,SAAiBhD,GACf,MAAMuC,GAAWnF,EAAAA,EAAAA,IAAS4C,GAC1B,GAAIxvB,KAAK8wB,WAAW9M,IAAI+N,GAAW,CACjC,MAAM/B,EAAWhwB,KAAK8wB,WAAW7M,IAAI8N,GAEnC,OAAOxvB,QAAQC,QAAQwtB,EAE3B,CAEA,OAAOhwB,KAAK6xB,kBAAkB,CAAEE,aAAYxH,MAAKyF,IAC/ChwB,KAAK8wB,WAAWxd,IAAIye,EAAU/B,GAEvBA,IAEX,EAAC9J,EAEDuM,yBAAA,SAAyBjD,GACvB,MAAMuC,GAAWnF,EAAAA,EAAAA,IAAS4C,GAC1B,GAAIxvB,KAAK+wB,mBAAmB/M,IAAI+N,GAAW,CACzC,MAAM/B,EAAWhwB,KAAK+wB,mBAAmB9M,IAAI8N,GAE3C,OAAOxvB,QAAQC,QAAQwtB,EAE3B,CAEA,OAAOhwB,KAAKuyB,0BAA0B,CAAER,aAAYxH,MAAKyF,IACvDhwB,KAAK+wB,mBAAmBzd,IAAIye,EAAU/B,GAE/BA,IAEX,EAAC9J,EAED6F,cAAA,SAAcyD,GACZ,OAAOzD,EAAAA,EAAAA,IAAcyD,EACvB,EAEAtJ,EACA8D,SAAA,SAASwF,GACP,MAAMuC,GAAWnF,EAAAA,EAAAA,IAAS4C,GAC1B,GAAIxvB,KAAK2wB,OAAO3M,IAAI+N,GAAW,CAC7B,MAAM7B,EAAOlwB,KAAK2wB,OAAO1M,IAAI8N,GAE3B,OAAI7B,EAAK/vB,MACA,CACLA,MAAO+vB,EAAK/vB,MACZ+uB,OAAQgB,EAAKhB,QAIV3sB,QAAQC,QAAQ0tB,EAAKkC,QAEhC,CAEA,GAAIpyB,KAAK4wB,WAAW5M,IAAI+N,GACtB,OAAO/xB,KAAK4wB,WAAW3M,IAAI8N,GAG7B,IAAIT,EAmQJ,OA5HEA,EAAkB/uB,QAAQioB,IAAI,CAC5BxqB,KAAK0yB,cACL1yB,KAAKwyB,iBAAiBT,KACrBxH,MAAKoI,IACN,MAAMjtB,EAASitB,EAAQ,GACvB,GAAIjtB,EAAOwpB,SAAWG,EAAmBjQ,MACvC,MAAO,CACL8P,OAAQG,EAAmBjQ,OAI/B,IAAI4Q,EAAWtqB,EAAO0sB,QACtB,MAAM,mBAAEjC,EAAkB,kBAAEE,EAAoB,IAAOL,EAEjD4C,EAAc,CAAC,EAOfC,EAAwBtwB,QAAQioB,IAAI,CACxCxqB,KAAKywB,cAAcN,GACnBnwB,KAAKywB,cAAcN,EAAqB,UACvC5F,MAAKuI,IAAwB,IAE1BC,GAFI9C,EAAWvzB,GAAKo2B,EAmBxB,OAlBAF,EAAYI,UAAY,IAAIC,MAEvBhD,GAAaA,aAAqB7Q,OACrCwT,EAAY1D,OAASG,EAAmBjQ,MACxCwT,EAAYzyB,MAAQ8vB,IAEpB2C,EAAY1D,OAASG,EAAmBC,SAChB,IAApB5pB,EAAO2sB,WACTO,EAAYP,UAAW,GAEzBrC,EAAW/yB,OAAOk1B,OAAOnC,EAAU,CACjCI,uBAAwBuC,EAAQ,GAC5BA,EAAQ,GAAGvC,uBACV,KAEP2C,EAAgBhD,EAAgBC,EAAUC,EAAWvzB,IAGhDq2B,CAAa,IAGhBG,EAA0B3wB,QAAQioB,IACtC6F,EAAkBtmB,KAAIopB,IAEpB,GAAInzB,KAAK6wB,cAAcsC,GAAkB,CACvC,MAAMjB,EAAclyB,KAAK6wB,cAAcsC,GACvC,MAAO,CAAEA,kBAAiBjB,cAC5B,CAEA,OAAOlyB,KAAKqxB,YACT,mBAAoC8B,UAEpC5I,MAAKwE,IACJ,MAAMmD,EAAcra,KAAK3J,MAAM6gB,EAAIkD,cACnC,MAAO,CAAEkB,kBAAiBjB,cAAa,IAExC9C,OAAM,KACL,MAAM,IAAIhQ,MACP,qCAAsD+T,UACxD,GACD,KAEN5I,MAAK6I,IACL,MAAMC,EAAwB,CAAC,EAO/B,OALAD,EAAmB5zB,SAAQ8zB,IAAuC,IAAtC,gBAAEH,EAAe,YAAEjB,GAAaoB,EAC1DD,EAAsBF,GAAmBjB,EACzClyB,KAAK6wB,cAAcsC,GAAmBjB,CAAW,IAG5CmB,CAAqB,IAG9B,OACE9wB,QAAQioB,IAAI,CAACqI,EAAuBK,IACjC3I,MAAKgJ,IAA0C,IAC1CnB,GADEW,EAAeK,GAAmBG,EAaxC,OAXIR,IACFX,EAAU,IAAKW,EAAeK,sBAC9BR,EAAYR,QAAUA,EACtBoB,EAAAA,EAAQvsB,KAAM,0BAA0B,CACtCipB,KAAMkC,EACNW,cAAeX,KAInBpyB,KAAK2wB,OAAOrd,IAAIye,EAAUa,GAEtBA,EAAYzyB,MACP,CACLA,MAAOyyB,EAAYzyB,MACnB+uB,OAAQ0D,EAAY1D,QAIjBkD,CAAO,IAGfhD,OAAMtT,IACE,CACL3b,MAAO2b,EACPoT,OAAQG,EAAmBjQ,SAE7B,IAKVkS,EACG/G,MAAK,KACJvqB,KAAK4wB,WAAWY,OAAOO,EAAS,IAEjC3C,OAAMjvB,IAEL,MADAH,KAAK4wB,WAAWY,OAAOO,GACjB5xB,CAAK,IAGfH,KAAK4wB,WAAWtd,IAAIye,EAAUT,GAEvBA,CACT,EAEApL,EACA+D,aAAA,SAAauF,EAASjvB,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAMwxB,GAAWnF,EAAAA,EAAAA,IAAS4C,GAC1B,GAAIxvB,KAAK2wB,OAAO3M,IAAI+N,GAAW,CAAC,IAAD0B,EAC7B,MAAMzD,EAAWhwB,KAAK2wB,OAAO1M,IAAI8N,GAEjC,GAAI/B,EAASoC,QACX,OAAOpC,EAASoC,QAGlB,GAAW,QAAXqB,EAAIlzB,SAAO,IAAAkzB,GAAPA,EAASC,iBACX,MAAO,CACLvzB,MAAO6vB,EAAS7vB,MAChB+uB,OAAQc,EAASd,OAGvB,CAEF,EAAChJ,EAEDyN,eAAA,SAAe5B,GAEb,QApkBkC6B,MACpC,GACG,eAAenvB,gBACiB,IAA1BA,UAAUovB,WACjB,CACA,IAAKpvB,UAAUovB,WAAWC,eAAkB,IAAGlf,SAAU,MACvD,OAAO,EAET,GAAInQ,UAAUovB,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EAwjBJH,OAKDnvB,UAAUE,YAAamrB,EAAU7lB,KAAKxF,UAAUE,cAKhD3E,KAAK2wB,OAAO3M,IAAI+N,GAKtB,EAAC7L,EAED8N,SAAA,SAASjC,GACP,IAAK/xB,KAAK2zB,eAAe5B,GACvB,MAAO,CACLxH,KAAM/nB,GAAWA,GAAQ,GACzByxB,MAAOA,QAGX,GAAIj0B,KAAKkxB,kBAAkBlN,IAAI+N,GAC7B,MAAO,CACLxH,KAAM/nB,GAAWA,GAAQ,GACzByxB,MAAOA,QAIX,MAAM9xB,EAAQ,CACZK,QAAS,KACTC,OAAQ,KACRH,QAAS,MAEXH,EAAMG,QAAU,IAAIC,SAAQ,CAACC,EAASC,KACpCN,EAAMK,QAAUA,EAChBL,EAAMM,OAASA,CAAM,IAEvBzC,KAAKixB,eAAe/xB,KAAK,CAAC6yB,EAAU5vB,IACpC,MAAM+xB,EAAS,IAAIC,gBAgBnB,OAfAD,EAAOE,OAAO7N,iBAAkB,SAAQ,KACtC,MAAM3f,EAAQ5G,KAAKixB,eAAeoD,WAAUC,IAAA,IAAEpuB,GAAEouB,EAAA,OAAKpuB,IAAM6rB,CAAQ,KAEpD,IAAXnrB,GACF5G,KAAKixB,eAAepqB,OAAOD,EAAO,EACpC,IAGG5G,KAAKgxB,yBACRhxB,KAAKgxB,wBAAyB,EAC9BtU,YAAW,KACT1c,KAAKu0B,2BAA2B,GAC/B,MAGE,CACLhK,KAAMA,CAAC/nB,EAASC,IAAWN,EAAMG,QAAQioB,KAAK/nB,EAASC,GACvDwxB,MAAOC,EAAOD,MAAMj2B,KAAKk2B,GAE7B,EAAChO,EAEDqO,0BAAA,YACuB/vB,OAAOgwB,qBAAmB,CAAKC,GAAM/X,WAAW+X,EAAI,MAE5D,KACX,MAAMC,EAAa10B,KAAKixB,eAAepqB,OAAO,EAAG,GAC3C8tB,EAAapyB,QAAQioB,IACzBkK,EAAW3qB,KAAI6qB,IAA2B,IAAzB7C,EAAU8C,GAASD,EASlC,OANK50B,KAAKkxB,kBAAkBlN,IAAI+N,KAC9B/xB,KAAK0xB,UAAW,qBAAqB,CAAE5J,SAAUiK,IACjD/xB,KAAKkxB,kBAAkB4D,IAAI/C,IAIzB/xB,KAAK2xB,iBACAkD,EAASryB,SAAQ,GAGnBxC,KAAK+0B,YAAWnI,EAAAA,EAAAA,IAASmF,IAAWxH,MAAK,KACzCvqB,KAAKoxB,kBAAkBpN,IAAI+N,KAC9B/xB,KAAK0xB,UAAW,yBAAyB,CAAE5J,SAAUiK,IACrD/xB,KAAKoxB,kBAAkB0D,IAAI/C,IAG7B8C,EAASryB,SAAQ,EAAK,GACtB,KAIFxC,KAAKixB,eAAep2B,OACtB85B,EAAWpK,MAAK,KACd7N,YAAW,KACT1c,KAAKu0B,2BAA2B,GAC/B,IAAK,IAGVv0B,KAAKgxB,wBAAyB,CAChC,GAEJ,EAAC9K,EAED6O,WAAA,SAAWhD,GACT,MAAMiD,EAAczF,EAAkBwC,GAsBpC,OAAOkD,EAAeD,EAAa,CACjCE,YAAc,YACdC,GAAK,UACJ5K,MAAK,IAGNvqB,KAAKwyB,iBAAiBT,IAG5B,EAAC7L,EAEDkP,SAAA,SAAS5F,GACPxvB,KAAKgqB,SAASwF,EAChB,EAACtJ,EAED6D,2BAAA,SAA2ByF,GACzB,MAAMuC,GAAWnF,EAAAA,EAAAA,IAAS4C,GACpBU,EAAOlwB,KAAK8wB,WAAW7M,IAAI8N,GACjC,GAAI7B,EAAM,CACR,MAAM6C,EAAgBhD,EAAgBG,EAAKkC,SAE3C,MAAM,GAAN7wB,QAAA8zB,EAAAA,EAAAA,GACKC,EAAoBvC,EAAc7C,KAAKC,qBAAmB,CAC7DZ,EAAkBwC,IAEtB,CACE,OAAO,IAEX,EAAC7L,EAEDqP,eAAA,SAAe/F,GACb,MAAMuC,GAAWnF,EAAAA,EAAAA,IAAS4C,GACpBU,EAAOlwB,KAAK2wB,OAAO1M,IAAI8N,GAC7B,OAAQ7B,GAAQA,EAAKmC,QACvB,EAACnM,EAEDwM,YAAA,SAAYV,GACV,YADiB,IAAPA,IAAAA,EAAU,GACbhyB,KAAKqxB,YAAa,4BAA6C9G,MACpEwE,IACE,MAAM,OAAEG,EAAM,aAAE+C,GAAiBlD,EAEjC,IAAIyG,EAEJ,GAAe,MAAXtG,GAAkB8C,EAAU,EAE9B,OAAOhyB,KAAK0yB,YAAYV,EAAU,GAIpC,GAAe,MAAX9C,EACF,IACE,MAAMgD,EAAcra,KAAK3J,MAAM+jB,GAC/B,QAA2Cn3B,IAAvCo3B,EAAY9B,uBACd,MAAM,IAAIhR,MAAO,iCAGnBoW,EAAUtD,CACZ,CAAE,MAAOpW,GACP,CAIJ,OAAO0Z,CAAO,GAGpB,EAAChF,CAAA,CA7sBoB,GAgtBvB,MAAM8E,EAAsBnF,IACzB3rB,OAAOixB,gBAAgBtF,IAAuB,IAAIpmB,KACjD2rB,GAASC,GAAkBD,IAGxB,IA4FHtU,EA5FSwU,EAAU,SAAAC,GACrB,SAAAD,EAAYE,EAAe7K,EAAY+E,GAAW,IAADluB,EA2B9C,OARDA,EAAA+zB,EAAAl4B,KAAA,MAlBsB,SAACo4B,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAc,eAKzCF,EAHHE,EAAc,cAGeD,GAC7B,MAAM,IAAI3W,MACP,+DAA8D2W,MAInE,OACED,EAAcE,GAAYD,KAEvB3G,OAAMtT,GAAOA,GAEpB,GAEqBmP,IAAW,KAE5B+E,GACFluB,EAAKgvB,WAAWxd,KAAIsZ,EAAAA,EAAAA,IAASoD,EAASptB,MAAO,CAC3CmvB,SAAU/B,EAASptB,KACnBwvB,QAASpC,EACTd,OAAS,YAEZptB,CACH,EA7BqBm0B,EAAAA,EAAAA,GAAAL,EAAAC,GA6BpB,IAAAK,EAAAN,EAAA54B,UA4DA,OA5DAk5B,EAEDnB,WAAA,SAAWhD,GACT,OAAO8D,EAAA74B,UAAM+3B,WAAUp3B,KAAC,KAAAo0B,GAAUxH,MAAK7kB,IACrC,GAAIA,EAAOwpB,SAAWG,EAAmBC,QACvC,OAAO/sB,QAAQC,UAEjB,MAAMwtB,EAAWtqB,EAAO0sB,QAClB2D,EAAY/F,EAASG,mBACrBgG,EAAgBb,EAAoBS,GAC1C,OAAOxzB,QAAQioB,IAAI2L,EAAcpsB,IAAIkrB,IAAiB1K,MAAK,IAAMyF,GAAS,GAE9E,EAACkG,EAED1D,iBAAA,SAAiBhD,GACf,OAAOqG,EAAA74B,UAAMw1B,iBAAgB70B,KAAC,KAAA6xB,GAASjF,MAAK1mB,GACtCA,EAAKwuB,SAGA3C,EAAQF,EAAU,QAAOjF,MAAKwE,GAChB,MAAfA,EAAIG,OAIC,CACLA,OAAQG,EAAmBjQ,OAMxBvb,IAGJA,GAEX,EAACqyB,EAEDzD,yBAAA,SAAyBjD,GACvB,OAAOqG,EAAA74B,UAAMy1B,yBAAwB90B,KAAC,KAAA6xB,GAASjF,MAAK1mB,GAC9CA,EAAKwuB,SAGA3C,EAAQF,EAAU,QAAOjF,MAAKwE,GAChB,MAAfA,EAAIG,OAIC,CACLA,OAAQG,EAAmBjQ,OAMxBvb,IAGJA,GAEX,EAAC+xB,CAAA,CAzFoB,CAASpF,GA8FzB,MAAM4F,EAAYC,IACvBjV,EAAWiV,CAAO,EAGPC,EAAe,CAC1BvI,QAASyB,GAAWpO,EAAS4S,SAASxE,GAGtCzF,2BAA4ByF,GAC1BpO,EAAS2I,2BAA2ByF,GACtCxF,SAAUwF,GAAWpO,EAAS4I,SAASwF,GAEvCvF,aAAc,SAACuF,EAASjvB,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjC6gB,EAAS6I,aAAauF,EAASjvB,EAAQ,EACzCyzB,SAAUxE,GAAWpO,EAAS4S,SAASxE,GACvC+F,eAAgB/F,GAAWpO,EAASmU,eAAe/F,GACnD4F,SAAU5F,GAAWpO,EAASgU,SAAS5F,GACvCkD,YAAaA,IAAMtR,EAASsR,eAG9B,QAEO,SAAS6D,IACd,OAAInV,EACKA,EAASyP,cAET,CAAC,CAEZ,C,uJCh7BO,SAAS2F,EAAoBrK,GAA0B,IAAzB,SAAEnF,EAAQ,SAAE5L,GAAU+Q,EAKzD,OAJAsK,EAAAA,EAAAA,YAAU,KACRrb,GAAU,IAGL4L,CACT,CCXO,MAAM0P,EAAmB,CAC7B,OACA,OACA,QACA,QACA,OACA,WACA,UC8DI,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkBE,aAAeD,aAAkBC,YAAa,CAClE,MAAMC,EAAQF,EAAOG,aAAc,SAGnC,GAAID,IAAUH,EAAOI,aAAc,SAAS,CAC1C,MAAMC,EAAWJ,EAAOK,WAAU,GAGlC,OAFAD,EAASxI,aAAc,QAAS,IAChCwI,EAASF,MAAQA,EACVA,IAAUH,EAAOG,OAASH,EAAOD,YAAYM,EACtD,CACF,CAEA,OAAOL,EAAOD,YAAYE,EAC5B,CCrEA,MAAMM,EAAat7B,SAASO,cAAe,OAErCg7B,EAAyBA,KAC7B,MAAMC,EAAgBx7B,SAASy7B,iBAAkB,sBAEjD,IAAK,MAAMzR,KAAQwR,EACjBxR,EAAKiJ,WAAWyI,YAAY1R,EAC9B,EAGI2R,EAAiBA,KAAO,IAADC,EAC3B,MAAMC,EAAiB,GAEjBC,EAAU,IAAI3M,IACpB,IAAK,MAAMnF,KAAQsR,EAAWS,WAAY,CAAC,IAADC,EAAAC,EACxC,MAAMC,EAAWlS,EAAKkS,SAAS9sB,cACzB+sB,EAAoB,QAAlBH,EAAGhS,EAAKoS,kBAAU,IAAAJ,GAAI,QAAJC,EAAfD,EAAiBG,UAAE,IAAAF,OAAJ,EAAfA,EAAqB16B,MAEhC,GAAKs5B,EAAiB9hB,SAASmjB,GAExB,CACL,IAAIG,EAAarS,EAAKqR,WAAU,GAIhC,GAHAgB,EAAWzJ,aAAc,oBAAmB,GAGD,WAAvCyJ,EAAWH,SAAS9sB,cAA4B,CAClD,MAAMxP,EAASI,SAASO,cAAe,UACvC,IAAK,MAAM+7B,KAAQD,EAAWD,WAC5Bx8B,EAAOgzB,aAAa0J,EAAKhwB,KAAMgwB,EAAK/6B,OAEtC3B,EAAOc,UAAY27B,EAAW37B,UAC9B27B,EAAaz8B,CACf,CAEA,GAAIu8B,EACF,GAAKL,EAAQ3T,IAAIgU,GAGV,CAAC,IAADI,EACL,MAAMC,EAAgCV,EAAQ1T,IAAI+T,GACM,QAAxDI,EAAAV,EAAeW,GAA+BvJ,kBAAU,IAAAsJ,GAAxDA,EAA0Db,YACxDG,EAAeW,IAEjBX,EAAeW,GAAiCH,CAClD,MARER,EAAex4B,KAAKg5B,GACpBP,EAAQrkB,IAAI0kB,EAAIN,EAAe78B,OAAS,QAS1C68B,EAAex4B,KAAKg5B,EAExB,MACF,CAEA,MAAMI,EAAuBz8B,SAASy7B,iBAAkB,sBAEhB,IAADiB,EAAvC,GAAoC,IAAhCD,EAAqBz9B,OAEvB,YADA09B,EAAA18B,SAASa,MAAKuiB,OAAM9f,MAAAo5B,EAAIb,GAI1B,MAAMc,EAAe,IDahB,SAAkBrM,GAA0C,IAAzC,SAAEsM,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAOzM,EAC9D,IAAK,MAAM0M,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAASrE,WAAU7uB,GACzCmxB,EAAYnxB,EAAGqzB,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAAS7xB,OAAOiyB,EAAiB,EAErC,CAGA,IAAK,MAAMC,KAAWL,EACpBE,EAAMG,EAEV,CC9BEC,CAAU,CACRP,SAAUH,EACVI,SAAUhB,EACViB,QAAS9S,GAAQA,EAAKiJ,WAAWyI,YAAY1R,GAC7C+S,MAAO/S,GAAQ2S,EAAat5B,KAAK2mB,MAGnC4R,EAAA57B,SAASa,MAAKuiB,OAAM9f,MAAAs4B,EAAIe,EAAa,EAehC,SAASS,EAAqB9M,GAIjC,IAJkC,cACpC+M,EAAa,mBACb9F,EAAkB,mBAClB+F,GACDhN,GACCsK,EAAAA,EAAAA,YAAU,KACR,GAAIyC,SAAAA,EAAeE,KAAM,EDjFtB,SAA6B18B,GAClC,GAAqB,mBAAVA,EACT,MAAM,IAAI0iB,MACP,uDAAsD1iB,MAE7D,CC6EM28B,CAAoBH,EAAcE,MAElC,MAAM,OAAEtS,IAAWwS,EAAAA,EAAAA,KAEbF,EAAOF,EAAcE,KAE3BtS,EAIElD,EAAAA,cAAC4S,EAAoB,CAACpb,SAAUoc,GAC9B5T,EAAAA,cAACqJ,EAAAA,mBAAmBlG,SAAQ,CAAC3pB,MAAOg2B,GAClCxP,EAAAA,cAAC2V,EAAAA,iBAAgB,KACf3V,EAAAA,cAACwV,ED5GN,CACLjT,SAAU,CACR2B,UAH0BptB,EC6GQy+B,GD1GlBhT,SAAS2B,UAE3B6E,OAAQjyB,EAAMiyB,OACd9oB,KAAMnJ,EAAMmJ,MAAQ,CAAC,EACrB21B,YAAa9+B,EAAM8+B,iBC0GfrC,EAEJ,CDnHG,IAAyBz8B,ECqH5B,MAAO,KACL08B,GAAwB,CACzB,GAEL,CCxHA,SAASqC,EAAahU,GACpB,MAAM0T,EAAqB,IACtB1T,EACHkH,OAAQ,KACHF,EAAAA,EAAAA,IAAgBhH,EAAMU,SAAS2B,aAC/BrC,EAAMsN,cAAcxC,KAAKiJ,YAAYE,WAM5C,IAAIC,EAFkBxyB,MAIpBwyB,EADElU,EAAMsN,cAAc6G,iBACRnU,EAAMsN,cAAc6G,kBAEpBx9B,EAAAA,EAAAA,gBANM+K,EAMsBse,EAAMsN,cAAc9C,YAN/B9oB,EAAE2c,SAAY3c,EAM6B,IACrEgyB,EACH15B,IAAKgmB,EAAM7iB,MAAQ6iB,EAAMsN,cAAc7C,KAAKttB,OAMhDq2B,EAAsB,CACpBC,cAHoBzT,EAAMsN,cAAcr2B,KAIxC02B,mBAAoB3N,EAAMsN,cAAcK,mBACxC+F,uBAeF,OAZoBzH,EAAAA,EAAAA,GACjB,kBACD,CACEtK,QAASuS,EACTlU,MAAO0T,GAETQ,GACAxN,IAAiB,IAAhB,OAAEzmB,GAAQymB,EACT,MAAO,CAAE/E,QAAS1hB,EAAQ+f,MAAO0T,EAAoB,IAEvD3oB,KAGJ,CAEAipB,EAAavS,UAAY,CACvBf,SAAU0T,IAAAA,OAAiBxS,WAC3B0L,cAAe8G,IAAAA,OAAiBxS,WAChCxjB,KAAMg2B,IAAAA,OACNL,YAAaK,IAAAA,OAAiBxS,YAGhC,O,kICxDO,MAAMyS,EAAsB,CACjC9B,GAAK,mBACLnf,MAAO,CACLyM,SAAW,WACXyU,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,QAAS,EACTC,SAAW,SACXC,KAAO,mBACPC,WAAa,SACbC,OAAQ,GAEV,YAAc,YACd,cAAgB,Q,wBCLlB,SAASC,EAAczS,GACrB,MAAM+E,GAAWC,EAAAA,EAAAA,GAAwBhF,IACnC,KAAElC,EAAI,OAAEkF,GAAWtmB,OAAO2hB,SAEhC,OAAgB,MAAZ0G,IACFroB,OAAOg2B,WAAW3N,EAASE,OAASjC,EAASlF,IACtC,EAIX,CAGA,IAAI6U,EAAa,GAEjBj2B,OAAO+hB,iBAAkB,sBAAqBvkB,IACxC,6BAA6BiI,KAAKjI,EAAM04B,SACtCD,IACFj2B,OAAO2hB,SAAS2B,SAAW2S,EAE/B,IAGF,MAAME,EAAmBA,CAACxU,EAAUyU,KAC7BL,EAAcpU,EAAS2B,YAC1B2S,EAAYtU,EAAS2B,UACrB4J,EAAAA,EAAAA,GAAW,mBAAmB,CAAEvL,WAAUyU,iBAC5C,EAGIC,EAAgBA,CAAC1U,EAAUyU,KAC1BL,EAAcpU,EAAS2B,YAC1B4J,EAAAA,EAAAA,GAAW,gBAAgB,CAAEvL,WAAUyU,gBAOzC,EAGIE,EAAW,SAACC,EAAIx6B,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIZ,iBAARw6B,EAET,YADAC,EAAAA,GAAcF,SAASC,GAIzB,MAAM,SAAEjT,EAAQ,OAAEgD,EAAM,KAAElF,IAASqV,EAAAA,EAAAA,IAAUF,GACvClO,GAAWC,EAAAA,EAAAA,GAAwBhF,GAUzC,GANI+E,IACFkO,EAAKlO,EAASE,OAASjC,EAASlF,GAK9BphB,OAAO02B,aAET,YADA12B,OAAO2hB,SAAW2B,EAAWgD,EAASlF,GAMxC,MAAMuV,EAAYze,YAAW,KAC3B8W,EAAAA,EAAQvsB,KAAM,6BAA6B,CAAE6gB,cAC7C4J,EAAAA,EAAAA,GAAW,uBAAuB,CAChCvL,SAAU3hB,OAAO2hB,UACjB,GACD,KAEH2H,EAAAA,GAAO9D,SAASlC,EAAWgD,GAAQP,MAAKwI,IAOtC,IAAKA,GAAiBA,EAAc7D,SAAWG,EAAAA,GAAmBjQ,MAIhE,OAHA5a,OAAO42B,QAAQC,aAAa,CAAC,EAAI,GAAGlV,SAAS0F,MAC7CrnB,OAAO2hB,SAAW2B,OAClBwT,aAAaH,GAM8BpI,GAEzCA,EAAc7C,KAAKE,yBACnB5rB,OAAO+2B,4BAIJ,kBAAkB92B,WACoB,OAAvCA,UAAU+2B,cAAcC,YACsB,cAA9Ch3B,UAAU+2B,cAAcC,WAAWxgB,OAEnCxW,UAAU+2B,cAAcC,WAAWC,YAAY,CAC7CC,UAAY,uBAIhBn3B,OAAO2hB,SAAW2B,EAAWgD,EAASlF,IAG1CgW,EAAAA,EAAAA,UAAcb,EAAIx6B,GAClB+6B,aAAaH,EAAU,GAE3B,EAEA,SAAS3V,EAAmBQ,EAAemG,GAAiB,IAAf,SAAEhG,GAAUgG,EACvD,MAAM,SAAErE,EAAQ,KAAElC,GAASO,EACrBkE,GAAUqH,EAAAA,EAAAA,GAAW,qBAAqB,CAC9C1L,kBAEA8B,WACA7B,YAAa,CAAEE,YACf0V,uBAAwB97B,GAAQ,CAC9B,EAGAC,KAAK8kB,cAAcrI,KAAK1c,EAAMA,EAAKN,QAGvC,GAAI4qB,EAAQxvB,OAAS,EAGnB,OAAOwvB,EAAQA,EAAQxvB,OAAS,GAGlC,GAAImrB,EAAiB,CACnB,MACEG,UAAY2B,SAAUgU,IACpB9V,EACJ,GAAI8V,IAAgBhU,EAGlB,OAAOlC,EAAOa,UAAUb,EAAKzqB,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEK4gC,EAAc,SAAAlX,GAClB,SAAAkX,EAAYtW,GAAQ,IAAD3jB,EAEuB,OADxCA,EAAA+iB,EAAAlnB,KAAA,KAAM8nB,IAAM,MACPuW,gBAAkBpY,EAAAA,YAAiB9hB,CAC1C,EAJkBm0B,EAAAA,EAAAA,GAAA8F,EAAAlX,GAIjB,IAAAqB,EAAA6V,EAAA/+B,UAwBA,OAxBAkpB,EAEDU,mBAAA,SAAmBrB,EAAW0W,GAC5B9W,uBAAsB,KACpB,IAAI+W,EAAY,eAAcl8B,KAAKylB,MAAMU,SAAS2B,WAC9CjsB,SAASsgC,QACXD,EAAWrgC,SAASsgC,OAEtB,MAAMC,EAAevgC,SAASy7B,iBAAkB,4BAC5C8E,GAAgBA,EAAavhC,SAC/BqhC,EAAWE,EAAa,GAAGC,aAE7B,MAAMC,EAAmB,gBAAeJ,IACxC,GAAIl8B,KAAKg8B,gBAAgBh2B,QAAS,CACRhG,KAAKg8B,gBAAgBh2B,QAAQu2B,YAC7BD,IACtBt8B,KAAKg8B,gBAAgBh2B,QAAQu2B,UAAYD,EAE7C,IAEJ,EAACpW,EAEDY,OAAA,WACE,OAAOlD,EAAAA,cAAA,MAAA3mB,OAAAk1B,OAAA,GAAS2H,EAAmB,CAAE1R,IAAKpoB,KAAKg8B,kBACjD,EAACD,CAAA,CA5BiB,CAASnY,EAAAA,WA+B7B,MAAM4Y,EAAuBA,CAAC5B,EAAc6B,KAAkB,IAADC,EAAAC,EAC3D,OAAI/B,EAAa/O,OAAS4Q,EAAa5Q,OAInC+O,SAAmB,QAAP8B,EAAZ9B,EAAc3f,aAAK,IAAAyhB,OAAP,EAAZA,EAAqBj9B,QAAQg9B,SAAmB,QAAPE,EAAZF,EAAcxhB,aAAK,IAAA0hB,OAAP,EAAZA,EAAqBl9B,IAI1C,EAGd,IACMm9B,EAAY,SAAAC,GAChB,SAAAD,EAAYnX,GAAQ,IAAD/a,EAEqB,OADtCA,EAAAmyB,EAAAl/B,KAAA,KAAM8nB,IAAM,KACZkV,EAAiBlV,EAAMU,SAAU,MAAKzb,CACxC,EAJgBurB,EAAAA,EAAAA,GAAA2G,EAAAC,GAIf,IAAA3G,EAAA0G,EAAA5/B,UA2BA,OA3BAk5B,EAED7P,kBAAA,WACEwU,EAAc76B,KAAKylB,MAAMU,SAAU,KACrC,EAAC+P,EAED4G,sBAAA,SAAsBvX,GACpB,QAAIiX,EAAqBjX,EAAUY,SAAUnmB,KAAKylB,MAAMU,YACtDwU,EAAiB36B,KAAKylB,MAAMU,SAAUZ,EAAUY,WACzC,EAGX,EAAC+P,EAEDtP,mBAAA,SAAmBrB,GACbiX,EAAqBjX,EAAUY,SAAUnmB,KAAKylB,MAAMU,WACtD0U,EAAc76B,KAAKylB,MAAMU,SAAUZ,EAAUY,SAEjD,EAAC+P,EAEDpP,OAAA,WACE,OACElD,EAAAA,cAACA,EAAAA,SAAc,KACZ5jB,KAAKylB,MAAMuB,SACZpD,EAAAA,cAACmY,EAAc,CAAC5V,SAAUA,WAGhC,EAACyW,CAAA,CA/Be,CAAShZ,EAAAA,W,wBCtN3B,SAASmZ,EAAeh0B,EAAGi0B,GACzB,IAAK,IAAI19B,KAAKyJ,EACZ,KAAMzJ,KAAK09B,GAAI,OAAO,EACvB,IAAK,IAAIC,KAAMD,EACd,GAAIj0B,EAAEk0B,KAAQD,EAAEC,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAApY,GACnB,SAAAqY,EAAYzX,GAAQ,IAAD3jB,EACjBA,EAAA+iB,EAAAlnB,KAAA,OAAO,KACP,MAAM,SAAEwoB,EAAQ,cAAE4M,GAAkBtN,EAQnC,OAPD3jB,EAAKmZ,MAAQ,CACXkL,SAAU,IAAKA,GACf4M,cACEA,GACAjF,EAAAA,GAAO7D,aAAa9D,EAAS2B,SAAW3B,EAAS2E,OAAQ,CACvD4I,kBAAkB,KAEvB5xB,CACH,EAZmBm0B,EAAAA,EAAAA,GAAAiH,EAAArY,GAYlBqY,EAEMC,yBAAP,SAAAhR,EAA8CiR,GAAY,IAA1B,SAAEjX,GAAUgG,EAC1C,GAAIiR,EAAUjX,SAAS0F,OAAS1F,EAAS0F,KAAM,CAQ7C,MAAO,CACLkH,cARoBjF,EAAAA,GAAO7D,aAC3B9D,EAAS2B,SAAW3B,EAAS2E,OAC7B,CACE4I,kBAAkB,IAMpBvN,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAAD,EAAAgX,EAAAlgC,UA+EA,OA/EAkpB,EAEDrG,cAAA,SAAc2P,GACZ1B,EAAAA,GAAO9D,SAASwF,GAASjF,MAAKwI,IACxBA,GAAiBA,EAAc7D,SAAWG,EAAAA,GAAmBjQ,MAC/Dpf,KAAKq9B,SAAS,CACZlX,SAAU,IAAK3hB,OAAO2hB,UACtB4M,mBAGFvuB,OAAO42B,QAAQC,aAAa,CAAC,EAAI,GAAGlV,SAAS0F,MAC7CrnB,OAAO2hB,SAAWqJ,EACpB,GAEJ,EAACtJ,EAED4W,sBAAA,SAAsBb,EAAWqB,GAE/B,OAAKA,EAAUvK,cAkBX/yB,KAAKib,MAAM8X,gBAAkBuK,EAAUvK,gBAIzC/yB,KAAKib,MAAM8X,cAAc9C,YAAcqN,EAAUvK,cAAc9C,YAK7DjwB,KAAKib,MAAM8X,cAAcxC,OAAS+M,EAAUvK,cAAcxC,SAM5DvwB,KAAKib,MAAMkL,SAAS1mB,MAAQ69B,EAAUnX,SAAS1mB,MAC/C69B,EAAUvK,cAAc7C,OACvBoN,EAAUvK,cAAc7C,KAAK9D,YAC5BkR,EAAUvK,cAAc7C,KAAKttB,ODhFrC,SAA0Bwe,EAAU6a,EAAWqB,GAC7C,OAAOP,EAAe3b,EAASqE,MAAOwW,IAAcc,EAAe3b,EAASnG,MAAOqiB,EACpF,CCkFUC,CAAev9B,KAAMi8B,EAAWqB,OAvCrCt9B,KAAK6f,cACHoc,EAAU9V,SAAS2B,SAAWmU,EAAU9V,SAAS2E,SAE5C,EAqCX,EAAC5E,EAEDY,OAAA,WAiBE,OAAO9mB,KAAKylB,MAAMuB,SAAShnB,KAAKib,MAClC,EAACiiB,CAAA,CA/GkB,CAAStZ,EAAAA,W,26tCCuB9B,MAAMkK,EAAS,IAAI8H,EAAAA,GAAWE,EAAe7K,EAAYzmB,OAAOwrB,WAChEoG,EAAAA,EAAAA,IAAUtI,GACVA,EAAO2D,aAAaC,EAAAA,GAEpB,MAAM,OAAE5K,EAAM,QAAE0W,IAAYlE,EAAAA,EAAAA,KAE5B90B,OAAOsxB,cAAgBA,EACvBtxB,OAAOi5B,WAAajK,EAAAA,EACpBhvB,OAAOk5B,UAAYpH,EAAAA,GHgIjB0E,EAAAA,GAAc2C,QAAO59B,IACnBA,EAAKomB,SAASyX,OAAS79B,EAAK69B,MAAM,IAGpCp5B,OAAOq5B,QAAU9C,GAAMD,EAASC,EAAI,CAAE/3B,SAAS,IAC/CwB,OAAOg2B,WAAaO,GAAMD,EAASC,EAAI,CAAE/3B,SAAS,IAClDwB,OAAOs5B,YAAc,CAAC/C,EAAIx6B,IAAYu6B,EAASC,EAAIx6B,GGlIrD,MAAMw9B,EAAoB,wCAE1BC,EAAAA,EAAAA,GAAgB,iBAAgBzT,MAAK,MAG/BmH,EAAAA,EAAAA,GAAW,yBAAwB5yB,OAAOwG,SAASzK,OAAS,GAC9DgvB,EAAS,MAWX,MAAMoU,EAAexY,GACnB7B,EAAAA,cAACsa,EAAAA,YAAYnX,SAAQ,CACnB3pB,MAAO,CACL+gC,QAAU,IACVC,SAAW,MAGbxa,EAAAA,cAAC6V,EAAAA,EAAiBhU,IAIhB4Y,EAAcza,EAAAA,cAAoB,CAAC,GAAE,IAErC0a,EAAU,SAAAzZ,GAAA,SAAAyZ,IAAA,OAAAzZ,EAAA1lB,MAAA,KAAAvE,YAAA,KA6Bb,OA7Baq7B,EAAAA,EAAAA,GAAAqI,EAAAzZ,GAAAyZ,EAAAthC,UACd8pB,OAAA,WACE,MAAM,SAAEE,GAAahnB,KAAKylB,MAC1B,OACE7B,EAAAA,cAAC2a,EAAAA,SAAQ,MACNpS,IAAA,IAAC,SAAEhG,GAAUgG,EAAA,OACZvI,EAAAA,cAACsZ,EAAe,CAAC/W,SAAUA,IACxBuG,IAAkC,IAAjC,cAAEqG,EAAa,SAAE5M,GAAUuG,EAC3B,GAAIqG,EAAc6G,iBAChB,OACEhW,EAAAA,cAACya,EAAYtX,SAAQ,CAAC3pB,MAAO,CAAE21B,gBAAe5M,aAC3Ca,GAGA,CACL,MAAMoM,GAAqBmD,EAAAA,EAAAA,MAC3B,OACE3S,EAAAA,cAACqJ,EAAAA,mBAAmBlG,SAAQ,CAAC3pB,MAAOg2B,GAClCxP,EAAAA,cAACya,EAAYtX,SAAQ,CAAC3pB,MAAO,CAAE21B,gBAAe5M,aAC3Ca,GAIT,IAEc,GAI1B,EAACsX,CAAA,CA7Ba,CAAS1a,EAAAA,WAgCnB4a,EAAe,SAAA3B,GAAA,SAAA2B,IAAA,OAAA3B,EAAA19B,MAAA,KAAAvE,YAAA,KAsClB,OAtCkBq7B,EAAAA,EAAAA,GAAAuI,EAAA3B,GAAA2B,EAAAxhC,UACnB8pB,OAAA,WACE,OACElD,EAAAA,cAACya,EAAY5Q,SAAQ,MAClBgR,IAAA,IAAC,cAAE1L,EAAa,SAAE5M,GAAUsY,EAAA,OAC3B7a,EAAAA,cAACgZ,EAAY,CAACzW,SAAUA,GACtBvC,EAAAA,cAACH,EAAAA,GAAa,CACZ0C,SAAUA,EACVX,mBAAoBA,GAEpB5B,EAAAA,cAAC8a,EAAAA,OAAM,CACLN,SAAU3S,GACVtF,SAAUA,EACV6R,GAAG,wBAEHpU,EAAAA,cAACqa,EAAYhhC,OAAAk1B,OAAA,CACXvvB,KAC+B,cAA7BmwB,EAAc7C,KAAKttB,MACU,cAA7BmwB,EAAc7C,KAAKttB,MACf4oB,EAAAA,EAAAA,GAAYrF,EAAS2B,SAAU2D,IAC/BkT,WAEI5L,EAAc7C,KAAK9D,WACnB2G,EAAc7C,KAAKttB,MACnBb,MAAO,KAAI,KAGjB/B,KAAKylB,MAAK,CACdU,SAAUA,EACV4M,cAAeA,GACXA,EAAcxC,SAIX,GAIvB,EAACiO,CAAA,CAtCkB,CAAS5a,EAAAA,WAyC9B,MAAM,SAAEmO,EAAU5L,SAAUyY,GAAep6B,OAYzCutB,GACAtG,GAAgBsG,IACd6M,EAAW9W,UAAYiK,EAASnd,SAAU,KAAMgqB,EAAW9T,OAAU,OAErEgD,EAAO/B,eAAcP,EAAAA,EAAAA,GAAYoT,EAAW9W,SAAU2D,MACtDsG,EAAS1nB,MAAM,6BACf0nB,EAAS1nB,MAAM,+CAGjBywB,EAAAA,EAAAA,UACErP,GACEsG,GACEA,EAASnd,SAAU,KAA2B,GAArBgqB,EAAW9T,QACtC8T,EAAWhZ,KACb,CACE5iB,SAAS,IAMf,MAAM67B,EAAoBA,KACxB,IACE,OAAOpX,cACT,CAAE,MACA,OAAO,IACT,GAGF6O,EAAAA,GAAatM,SAAS4U,EAAW9W,SAAW8W,EAAW9T,QAAQP,MAAK2F,IAAS,IAAD4O,EAC1E,MAAMrX,EAAiBoX,IAEvB,GACE3O,SAAU,QAAN4O,EAAJ5O,EAAMA,YAAI,IAAA4O,GAAVA,EAAY1O,wBACZF,EAAKA,KAAKE,yBAA2B5rB,OAAO+2B,4BAIzC,kBAAkB92B,WACoB,OAAvCA,UAAU+2B,cAAcC,YACsB,cAA9Ch3B,UAAU+2B,cAAcC,WAAWxgB,OAEnCxW,UAAU+2B,cAAcC,WAAWC,YAAY,CAC7CC,UAAY,uBAUZlU,GAAgB,CAGlB,KAFiE,MAA9CA,EAAeC,QAAQqW,IAKxC,OAFAtW,EAAeG,QAAQmW,EAAmB,UAC1Cv5B,OAAO2hB,SAASzK,QAAO,EAG3B,CAOF,GAJI+L,GACFA,EAAesX,WAAWhB,IAGvB7N,GAAQA,EAAKhB,SAAWG,EAAAA,GAAmBjQ,MAAO,CACrD,MAAM4f,EAAW,sBAAqBJ,EAAW9W,0CAIjD,GAAIoI,GAAQA,EAAK/vB,MAEf,MADAC,QAAQD,MAAM6+B,GACR9O,EAAK/vB,MAGb,MAAM,IAAIif,MAAM4f,EAClB,CAEA,MAAMC,GAAWvN,EAAAA,EAAAA,GACd,kBACD,CAAEtK,QAASxD,EAAAA,cAAC4a,EAAe,OAC3B5a,EAAAA,cAAC4a,EAAe,OAChB1L,IAAiB,IAAhB,OAAEptB,GAAQotB,EACT,MAAO,CAAE1L,QAAS1hB,EAAQ,IAE5B8K,MAEI0uB,EAAM,WACV,MAAMC,EAAsBvb,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACTub,EAAoBn5B,UACvBm5B,EAAoBn5B,SAAU,EAC1Bo5B,YAAYC,MACdD,YAAYC,KAAM,0BAGpB3N,EAAAA,EAAAA,GAAW,yBACb,GACC,IAEI9N,EAAAA,cAAC0a,EAAU,KAAEW,EACtB,EAEMK,EAAUzjC,SAASiqB,eAAgB,wBAIzC,IAAIyZ,EAAkBzY,EAClBwY,GAAWA,EAAQtY,SAASnsB,SAC9B0kC,EAAkB/B,GAGpB,MAAMgC,GAAW9N,EAAAA,EAAAA,GACd,8BACD52B,EACAykC,GACA,GAEF,SAASE,IACP,MAAMC,EACe,oBAAZl7B,OACH3I,SAASiqB,eAAgB,aACzB,KAEN0Z,EAAS5b,EAAAA,cAACsb,EAAG,MAAKQ,EACpB,CAIA,MAAMC,EAAM9jC,SACZ,GACsB,aAApB8jC,EAAI9P,YACiB,YAApB8P,EAAI9P,aAA6B8P,EAAIC,gBAAgBC,SAEtDnjB,YAAW,WACT+iB,GACF,GAAG,OACE,CACL,MAAMhV,EAAU,WACdkV,EAAIhZ,oBAAqB,mBAAmB8D,GAAS,GACrDjmB,OAAOmiB,oBAAqB,OAAO8D,GAAS,GAE5CgV,GACF,EAEAE,EAAIpZ,iBAAkB,mBAAmBkE,GAAS,GAClDjmB,OAAO+hB,iBAAkB,OAAOkE,GAAS,EAC3C,CAEM,GACN,G,4EC5RJ,UAlByB0B,IAAmB,IAAlB,SAAEhG,GAAUgG,EACpC,MAAM4G,EAAgBjF,EAAAA,GAAO7D,aAAa9D,EAAS2B,UACnD,OAAKiL,EAGEnP,EAAAA,cAAoBkc,EAAAA,EAAsB,CAC/C3Z,WACA4M,mBACGA,EAAcxC,OALV,IAMP,C,uBCfkBppB,MAKpBe,EAAOzN,SALa0M,EAKW0iB,EAAS,OALT1iB,EAAE2c,SAAY3c,C,oECE/C,MAAM4C,EAAM,IAAIya,QAOT,SAAS8U,IACd,IAAIxS,EACA0W,EAEc,CAChB,MAAMuC,EAAiBlW,EAAS,KAEhC/C,EAASA,CAACG,EAAW+Y,KACnB,IAAIC,EAAOl2B,EAAIka,IAAI+b,GACdC,GACHl2B,EAAIuJ,IAAI0sB,EAAKC,EAAOF,EAAeG,WAAWF,IAEhDC,EAAKnZ,OAAOG,EAAU,EAGxBuW,EAAUA,CAACvW,EAAW+Y,IAAOD,EAAeI,YAAYH,EAAI/Y,EAC9D,CAMA,MAAO,CAAEH,SAAQ0W,UACnB,C,qBChCA/iC,EAAQ,EAAWwsB,GAAaA,C,oECIhC,MAAMmZ,EAAc,IAAIpV,IAClBqV,EAAwB,IAAIrV,IAU3B,SAAS8B,EAAwBhF,GACtC,IAAI+E,EAAWuT,EAAYnc,IAAI6D,GAI/B,OAHK+E,IACHA,EAAWwT,EAAsBpc,IAAI6D,EAAS7c,gBAEzC4hB,CACT,C,GAdUrtB,SAAQqtB,IACZA,EAASyT,WACXD,EAAsB/sB,IAAIuZ,EAAS0T,SAAU1T,GAE7CuT,EAAY9sB,IAAIuZ,EAAS0T,SAAU1T,EACrC,G,yDCT8B,WAA9BroB,OAAO2hB,SAASqa,UACc,cAA9Bh8B,OAAO2hB,SAASsa,SAEhBrgC,QAAQD,MACL,gFAEO,kBAAkBsE,WAC5BA,UAAU+2B,cACPkF,SAAU,UACVnW,MAAK,SAAUoW,GACdA,EAAIpa,iBAAkB,eAAc,MAClCmL,EAAAA,EAAAA,GAAW,6BAA6B,CAAE8J,cAAemF,IAGzD,MAAMC,EAAmBD,EAAIE,WAC7BzgC,QAAQN,IAAK,mBAAmB8gC,GAChCA,EAAiBra,iBAAkB,eAAc,KAC/C,OAAQqa,EAAiB3lB,OACvB,IAAM,YACAxW,UAAU+2B,cAAcC,YAK1Bj3B,OAAO02B,cAAe,GAEtBxJ,EAAAA,EAAAA,GAAW,6BAA6B,CAAE8J,cAAemF,IAGrDn8B,OAAOs8B,qBACT1gC,QAAQN,IAAK,4CACb0E,OAAO2hB,SAASzK,YAKlBtb,QAAQN,IAAK,sCAKb4xB,EAAAA,EAAAA,GAAW,2BAA2B,CAAE8J,cAAemF,KAEzD,MAEF,IAAM,YACJvgC,QAAQD,MAAO,oDACfuxB,EAAAA,EAAAA,GAAW,2BAA2B,CAAE8J,cAAemF,IACvD,MAEF,IAAM,aACJjP,EAAAA,EAAAA,GAAW,wBAAwB,CAAE8J,cAAemF,IAExD,GACA,GAEN,IACCvR,OAAM,SAAU5pB,GACfpF,QAAQD,MAAO,4CAA4CqF,EAC7D,G,oCCzDW,SAASgmB,EAAYpnB,EAAK3D,GACvC,YAD6C,IAANA,IAAAA,EAAU,IAC5CA,EAID2D,IAAQ3D,EACF,IAGN2D,EAAIunB,WAAY,GAAElrB,MACb2D,EAAIjJ,MAAMsF,EAAO5F,QAGnBuJ,EAXEA,CAYX,C,uLCfO,MAAM28B,EAAkB5U,IAAkB,IAAjB,QAAE/E,GAAS+E,EACzC,OACEvI,EAAAA,cAACod,EAAAA,GAAY,KACXpd,EAAAA,cAAA,OAAKoU,GAAG,gBAAgB5Q,GACX,EAKN5B,EAAqBA,KAChChhB,OAAOkhB,SAAS,CACdqU,IAAK,EACLkH,KAAM,EACNC,SAAU,UAEL,E,kCCfT,IAAIC,EAAWlkC,OAAOk1B,QAAU,SAAU9yB,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CAAE,IAAIC,EAAS3E,UAAU0E,GAAI,IAAK,IAAIG,KAAOF,EAActC,OAAOD,UAAUoG,eAAezF,KAAK4B,EAAQE,KAAQJ,EAAOI,GAAOF,EAAOE,GAAU,CAAE,OAAOJ,CAAQ,EAE3P+hC,EAAc,SAAqB7hC,GACrC,IAAI8hC,EAAmB9hC,EAAO4mB,SAC1B2E,EAASuW,EAAiBvW,OAC1BlF,EAAOyb,EAAiBzb,KACxBiG,EAAOwV,EAAiBxV,KACxByV,EAASD,EAAiBC,OAC1Bd,EAAWa,EAAiBb,SAC5Be,EAAOF,EAAiBE,KACxBd,EAAWY,EAAiBZ,SAC5Be,EAAOH,EAAiBG,KACxB1Z,EAAWvoB,EAAO4mB,SAAS2B,UAG1BA,GAAY+D,GAAQ4V,IAEvB3Z,EADU,IAAI8D,IAAIC,GACH/D,UAGjB,MAAO,CACLA,SAAU6W,UAAUlY,UAAUqB,IAC9BgD,OAAQA,EACRlF,KAAMA,EACNiG,KAAMA,EACNyV,OAAQA,EACRd,SAAUA,EACVe,KAAMA,EACNd,SAAUA,EACVe,KAAMA,EACNvmB,MAAO1b,EAAO67B,QAAQngB,MACtBxb,IAAKF,EAAO67B,QAAQngB,OAAS1b,EAAO67B,QAAQngB,MAAMxb,KAAO,UAE7D,EAEIiiC,EAAgB,SAAuBniC,EAAQgB,GACjD,IAAIohC,EAAY,GACZxb,EAAWib,EAAY7hC,GACvBqiC,GAAgB,EAChBC,EAAoB,WAA8B,EAEtD,MAAO,CACL,YAAI1b,GACF,OAAOA,CACT,EAEA,iBAAIyb,GACF,OAAOA,CACT,EAEAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAlE,OAAQ,SAAgB97B,GACtB8/B,EAAUziC,KAAK2C,GAEf,IAAIkgC,EAAmB,WACrB5b,EAAWib,EAAY7hC,GACvBsC,EAAS,CAAEskB,SAAUA,EAAUyX,OAAQ,OACzC,EAIA,OAFAr+B,EAAOgnB,iBAAiB,WAAYwb,GAE7B,WACLxiC,EAAOonB,oBAAoB,WAAYob,GACvCJ,EAAYA,EAAU7iC,QAAO,SAAUuZ,GACrC,OAAOA,IAAOxW,CAChB,GACF,CACF,EACAi5B,SAAU,SAAkBC,GAC1B,IAAI5O,EAAOvxB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EqgB,EAAQkR,EAAKlR,MACb+mB,EAAe7V,EAAKnpB,QACpBA,OAA2BlI,IAAjBknC,GAAqCA,EAEnD,GAAkB,iBAAPjH,EACTx7B,EAAO67B,QAAQ6G,GAAGlH,OACb,CACL9f,EAAQkmB,EAAS,CAAC,EAAGlmB,EAAO,CAAExb,IAAKwzB,KAAKiP,MAAQ,KAEhD,IACMN,GAAiB5+B,EACnBzD,EAAO67B,QAAQC,aAAapgB,EAAO,KAAM8f,GAEzCx7B,EAAO67B,QAAQ+G,UAAUlnB,EAAO,KAAM8f,EAE1C,CAAE,MAAOv1B,GACPjG,EAAO4mB,SAASnjB,EAAU,UAAY,UAAU+3B,EAClD,CACF,CAEA5U,EAAWib,EAAY7hC,GACvBqiC,GAAgB,EAChB,IAAIQ,EAAa,IAAI7/B,SAAQ,SAAUH,GACrC,OAAOy/B,EAAoBz/B,CAC7B,IAIA,OAHAu/B,EAAUniC,SAAQ,SAAUqC,GAC1B,OAAOA,EAAS,CAAEskB,SAAUA,EAAUyX,OAAQ,QAChD,IACOwE,CACT,EAEJ,EAIIC,EAAqB,WACvB,IAAIC,EAAc1nC,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,IAElF2nC,EAAcD,EAAYv/B,QAAQ,KAClCy/B,EAAkB,CACpB1a,SAAUya,GAAe,EAAID,EAAYG,OAAO,EAAGF,GAAeD,EAClExX,OAAQyX,GAAe,EAAID,EAAYG,OAAOF,GAAe,IAE3D37B,EAAQ,EACR1D,EAAQ,CAACs/B,GACTE,EAAS,CAAC,MAEd,MAAO,CACL,YAAIvc,GACF,OAAOjjB,EAAM0D,EACf,EACA2f,iBAAkB,SAA0Bpe,EAAMkQ,GAAK,EACvDsO,oBAAqB,SAA6Bxe,EAAMkQ,GAAK,EAE7D+iB,QAAS,CACP,WAAIuH,GACF,OAAOz/B,CACT,EACA,SAAI0D,GACF,OAAOA,CACT,EACA,SAAIqU,GACF,OAAOynB,EAAO97B,EAChB,EACAu7B,UAAW,SAAmBlnB,EAAO2nB,EAAGC,GACtC,IAAIC,EAAaD,EAAI9gC,MAAM,KACvB+lB,EAAWgb,EAAW,GACtBC,EAAcD,EAAW,GACzBhY,OAAyBhwB,IAAhBioC,EAA4B,GAAKA,EAE9Cn8B,IACA1D,EAAMhE,KAAK,CAAE4oB,SAAUA,EAAUgD,OAAQA,EAAOjwB,OAAS,IAAMiwB,EAASA,IACxE4X,EAAOxjC,KAAK+b,EACd,EACAogB,aAAc,SAAsBpgB,EAAO2nB,EAAGC,GAC5C,IAAIG,EAAcH,EAAI9gC,MAAM,KACxB+lB,EAAWkb,EAAY,GACvBC,EAAeD,EAAY,GAC3BlY,OAA0BhwB,IAAjBmoC,EAA6B,GAAKA,EAE/C//B,EAAM0D,GAAS,CAAEkhB,SAAUA,EAAUgD,OAAQA,GAC7C4X,EAAO97B,GAASqU,CAClB,EACAgnB,GAAI,SAAYlH,GACd,IAAImI,EAAWt8B,EAAQm0B,EAEnBmI,EAAW,GAAKA,EAAWR,EAAO7nC,OAAS,IAI/C+L,EAAQs8B,EACV,GAGN,EAKIzB,IAAiC,oBAAXj9B,SAA0BA,OAAO3I,WAAY2I,OAAO3I,SAASO,eAKnF4+B,EAAgB0G,EAHXD,EAAYj9B,OAAS69B,KAI1BvH,EAAWE,EAAcF,SAI7BrgC,EAAQ,GAAgBugC,C,oCCvLqFvgC,EAAQ,QAA4BK,EAEjJ,IAIgCuI,EAJ5B8/B,EAAatZ,EAAQ,MAErBuZ,GAE4B//B,EAFS8/B,IAEY9/B,EAAIjI,WAAaiI,EAAM,CAAEygB,QAASzgB,GAIvF,IAAIsoB,EAAa,SAAoB9a,EAAQia,GAC3C,OAAOja,EAAO4xB,OAAO,EAAG3X,EAAOjwB,UAAYiwB,CAC7C,EAuBIwB,EAAO,SAAc+W,EAAQR,GAW/B,IAVA,IAAIx4B,OAAQ,EACRi5B,OAAW,EAGXC,EADaV,EAAI9gC,MAAM,KACE,GAEzByhC,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GAEf/jC,EAAI,EAAG2C,EAAI0hC,EAAO9oC,OAAQyE,EAAI2C,EAAG3C,IAAK,CAC7C,IAAIukC,GAAS,EACTrX,EAAQmX,EAAOrkC,GAAGktB,MAEtB,GAAIA,EAAM1I,QACRwf,EAAW,CACT9W,MAAOA,EACPG,OAAQ,CAAC,EACTkW,IAAKA,OAJT,CAcA,IALA,IAAIiB,EAAgBL,EAAWjX,EAAM5pB,MACjC+pB,EAAS,CAAC,EACVoX,EAAMvvB,KAAKuvB,IAAIP,EAAY3oC,OAAQipC,EAAcjpC,QACjD+L,EAAQ,EAELA,EAAQm9B,EAAKn9B,IAAS,CAC3B,IAAIo9B,EAAeF,EAAcl9B,GAC7Bq9B,EAAaT,EAAY58B,GAE7B,GAAIs9B,EAAQF,GAAe,CAKzBrX,EADYqX,EAAa7oC,MAAM,IAAM,KACrBqoC,EAAYroC,MAAMyL,GAAOmD,IAAIwhB,oBAAoBplB,KAAK,KACtE,KACF,CAEA,QAAmBrL,IAAfmpC,EAA0B,CAI5BJ,GAAS,EACT,KACF,CAEA,IAAIM,EAAeC,EAAQltB,KAAK8sB,GAEhC,GAAIG,IAAiBT,EAAW,EACuC,IAA5CW,EAActhC,QAAQohC,EAAa,MAC4K,EAAIf,EAAYtf,UAAS,GACjQ,IAAI1mB,EAAQmuB,mBAAmB0Y,GAC/BtX,EAAOwX,EAAa,IAAM/mC,CAC5B,MAAO,GAAI4mC,IAAiBC,EAAY,CAItCJ,GAAS,EACT,KACF,CACF,CAEA,IAAKA,EAAQ,CACXx5B,EAAQ,CACNmiB,MAAOA,EACPG,OAAQA,EACRkW,IAAK,IAAMW,EAAYroC,MAAM,EAAGyL,GAAOT,KAAK,MAE9C,KACF,CAnDA,CAoDF,CAEA,OAAOkE,GAASi5B,GAAY,IAC9B,EA+GIc,EAAU,SAWVE,EAAY,SAAmBC,GACjC,OAAOH,EAAQn6B,KAAKs6B,EACtB,EACIL,EAAU,SAAiBK,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EAEIC,EAAY,SAAmBhY,EAAO5lB,GAMxC,MAAO,CAAE4lB,MAAOA,EAAOiY,MALXjY,EAAM1I,QAAU,EAAI2f,EAAWjX,EAAM5pB,MAAMqV,QAAO,SAAUwsB,EAAOF,GAG7E,OAFAE,GAlBiB,GAMD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAWQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAjB7D,EAiB8FP,EAAQK,GAAUE,GAASE,EAAoCF,GAlB9J,EAkBYA,GAfd,EAgBPA,CACT,GAAG,GACkC79B,MAAOA,EAC9C,EAEIg9B,EAAa,SAAoBP,GACnC,OAAOA,EAAOt5B,IAAIy6B,GAAW1wB,MAAK,SAAU/K,EAAGi0B,GAC7C,OAAOj0B,EAAE07B,MAAQzH,EAAEyH,MAAQ,EAAI17B,EAAE07B,MAAQzH,EAAEyH,OAAS,EAAI17B,EAAEnC,MAAQo2B,EAAEp2B,KACtE,GACF,EAEI68B,EAAa,SAAoBZ,GACnC,OAAOA,EAEN7/B,QAAQ,eAAgB,IAAIjB,MAAM,IACrC,EAEI6iC,EAAW,SAAkB9c,GAC/B,IAAK,IAAIjnB,EAAOjG,UAAUC,OAAQwyB,EAAQjvB,MAAMyC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC/FusB,EAAMvsB,EAAO,GAAKlG,UAAUkG,GAM9B,OAAOgnB,IAHPuF,EAAQA,EAAMvuB,QAAO,SAAUkd,GAC7B,OAAOA,GAAKA,EAAEnhB,OAAS,CACzB,MAC4BwyB,EAAMxyB,OAAS,EAAI,IAAMwyB,EAAMlnB,KAAK,KAAO,GACzE,EAEIk+B,EAAgB,CAAC,MAAO,QAgB5B5pC,EAAQ,GAAO6xB,C,mCClSf,IAAI9I,EAAyBqG,EAAQ,MACrCpvB,EAAQW,YAAa,EACrBX,EAAQoqC,mBAAqBpqC,EAAQqqC,uBAAoB,EACzDrqC,EAAQsqC,cA6DR,WACE,MAAMl2B,GAAU,EAAIqZ,EAAOC,YAAY2c,GACvC,GAAIj2B,IAAYpC,EACd,MAAM,IAAI2S,MAAM,wDAElB,OAAOvQ,CACT,EAlEA,IAAIyV,EAAad,EAAuBqG,EAAQ,OAC5C3B,EAEJ,SAAiC7kB,EAAKwgB,GAAe,IAAKA,GAAexgB,GAAOA,EAAIjI,WAAc,OAAOiI,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEygB,QAASzgB,GAAS,IAAIiV,EAAQyL,EAAyBF,GAAc,GAAIvL,GAASA,EAAM0L,IAAI3gB,GAAQ,OAAOiV,EAAM2L,IAAI5gB,GAAQ,IAAI6gB,EAAS,CAAC,EAAOC,EAAwBlnB,OAAOM,gBAAkBN,OAAO+B,yBAA0B,IAAK,IAAIS,KAAO4D,EAAO,GAAY,YAAR5D,GAAqBxC,OAAOD,UAAUoG,eAAezF,KAAK0F,EAAK5D,GAAM,CAAE,IAAI2kB,EAAOD,EAAwBlnB,OAAO+B,yBAAyBqE,EAAK5D,GAAO,KAAU2kB,IAASA,EAAKH,KAAOG,EAAK9Q,KAAQrW,OAAOM,eAAe2mB,EAAQzkB,EAAK2kB,GAAgBF,EAAOzkB,GAAO4D,EAAI5D,EAAQ,CAAIykB,EAAOJ,QAAUzgB,EAASiV,GAASA,EAAMhF,IAAIjQ,EAAK6gB,GAAW,OAAOA,CAAQ,CAFtxBG,CAAwBwF,EAAQ,OAC7C,SAAS9F,EAAyBF,GAAe,GAAuB,mBAAZW,QAAwB,OAAO,KAAM,IAAIC,EAAoB,IAAID,QAAeE,EAAmB,IAAIF,QAAW,OAAQT,EAA2B,SAAUF,GAAe,OAAOA,EAAca,EAAmBD,CAAmB,GAAGZ,EAAc,CAEtT,MAAMpX,EAAe,CAAC,EAChBq4B,GAAiC,EAAI5c,EAAOvF,eAAelW,GACjEhS,EAAQqqC,kBAAoBA,EAC5B,MAAMD,EAAqB1Y,IAGpB,IAHqB,SAC1BnF,EAAQ,QACRge,GACD7Y,EACC,MAAO8Y,EAAYC,IAAiB,EAAIhd,EAAOid,UAAU,CAAC,GAwC1D,OAvCA,EAAIjd,EAAOuO,YAAW,KACpB,MAAM2O,EAAkB,CAAC,EACnBzmC,EAAO1B,OAAO0B,KAAKqmC,GACzB,IAAIK,GAAa,EACjB,MAAMC,EAAsBA,KAC1B,MAAMC,EAAiB5mC,EAAKsZ,QAAO,CAACutB,EAAKC,KACvCD,EAAIC,MAAYL,EAAgBK,KAAUL,EAAgBK,GAAOC,SAC1DF,IACN,CAAC,GACJN,EAAcK,EAAe,EAE/B,GAAI/gC,QAAUA,OAAOmhC,WAAY,CAC/B,MAAMD,EAAU,CAAC,EACjB/mC,EAAKa,SAAQimC,IACmB,iBAAnBT,EAAQS,IACjBL,EAAgBK,GAASjhC,OAAOmhC,WAAWX,EAAQS,IACnDC,EAAQD,GAASL,EAAgBK,GAAOC,SAExCA,EAAQD,IAAS,CACnB,IAEFP,EAAcQ,GACdL,GAAa,EACb1mC,EAAKa,SAAQimC,IACmB,iBAAnBT,EAAQS,IACjBL,EAAgBK,GAAOG,YAAYN,EACrC,GAEJ,CACA,MAAO,KACDD,GACF1mC,EAAKa,SAAQimC,IACmB,iBAAnBT,EAAQS,IACjBL,EAAgBK,GAAOI,eAAeP,EACxC,GAEJ,CACD,GACA,CAACN,IACgB9c,EAAOpE,QAAQ1nB,cAAc0oC,EAAkB/d,SAAU,CAC3E3pB,MAAO6nC,GACNje,EAAS,EAEdvsB,EAAQoqC,mBAAqBA,EAC7BA,EAAmB3d,UAAY,CAC7BF,SAAU1C,EAAWR,QAAQsD,QAAQC,WACrC2d,QAAS1gB,EAAWR,QAAQrlB,OAAO4oB,W,kCC9DrC5sB,EAAQW,YAAa,EACrBX,EAAQqrC,oBAAiB,EAOzBrrC,EAAQqrC,eANe,CACrBC,GAAI,qBACJC,GAAI,qBACJC,GAAI,sBACJhkC,EAAG,sB,mCCNL,IAAIuhB,EAAyBqG,EAAQ,MACrCpvB,EAAQW,YAAa,EACrBX,EAAQsmC,qBAAkB,EAC1B,IAAI7Y,EAAS1E,EAAuBqG,EAAQ,OACxCqc,EAAarc,EAAQ,MACrBsc,EAAsBtc,EAAQ,KAYlCpvB,EAAQsmC,gBATgBA,CAAA5U,EAAAO,KAIjB,IAJkB,QACvBtF,GACD+E,GAAE,QACD6Y,EAAU,MACXtY,EACC,OAAoBxE,EAAOpE,QAAQ1nB,cAAc+pC,EAAoBtB,mBAAoB,CACvFG,QAAqB,OAAZA,EAAmBA,EAAUkB,EAAWJ,gBAChD1e,EAAQ,C,sGCbN,MAAMyT,EAAgB,SAAsB1O,EAEhDia,GAAgB,IAFiC,SAClDjgB,GACDgG,CAYD,C,mCCbA,IAAIka,EAAUxc,EAAQ,K,kuBCDlB8B,EAAa,SAAoB9a,EAAQia,GAC3C,OAAOja,EAAO4xB,OAAO,EAAG3X,EAAOjwB,UAAYiwB,CAC7C,EAuBIwB,EAAO,SAAc+W,EAAQR,GAW/B,IAVA,IAAIx4B,OAAQ,EACRi5B,OAAW,EAGXC,EADaV,EAAI9gC,MAAM,KACE,GAEzByhC,EAAcC,EAAWF,GACzBG,EAA+B,KAAnBF,EAAY,GACxBG,EAASC,EAAWP,GAEf/jC,EAAI,EAAG2C,EAAI0hC,EAAO9oC,OAAQyE,EAAI2C,EAAG3C,IAAK,CAC7C,IAAIukC,GAAS,EACTrX,EAAQmX,EAAOrkC,GAAGktB,MAEtB,GAAIA,EAAM1I,QACRwf,EAAW,CACT9W,MAAOA,EACPG,OAAQ,CAAC,EACTkW,IAAKA,OAJT,CAcA,IALA,IAAIiB,EAAgBL,EAAWjX,EAAM5pB,MACjC+pB,EAAS,CAAC,EACVoX,EAAMvvB,KAAKuvB,IAAIP,EAAY3oC,OAAQipC,EAAcjpC,QACjD+L,EAAQ,EAELA,EAAQm9B,EAAKn9B,IAAS,CAC3B,IAAIo9B,EAAeF,EAAcl9B,GAC7Bq9B,EAAaT,EAAY58B,GAE7B,GAAIs9B,EAAQF,GAAe,CAKzBrX,EADYqX,EAAa7oC,MAAM,IAAM,KACrBqoC,EAAYroC,MAAMyL,GAAOmD,IAAIwhB,oBAAoBplB,KAAK,KACtE,KACF,CAEA,QAAmBrL,IAAfmpC,EAA0B,CAI5BJ,GAAS,EACT,KACF,CAEA,IAAIM,EAAeC,EAAQltB,KAAK8sB,GAEhC,GAAIG,IAAiBT,EAAW,EACuC,IAA5CW,EAActhC,QAAQohC,EAAa,KAC6JmC,KAAU,GACnO,IAAIlpC,EAAQmuB,mBAAmB0Y,GAC/BtX,EAAOwX,EAAa,IAAM/mC,CAC5B,MAAO,GAAI4mC,IAAiBC,EAAY,CAItCJ,GAAS,EACT,KACF,CACF,CAEA,IAAKA,EAAQ,CACXx5B,EAAQ,CACNmiB,MAAOA,EACPG,OAAQA,EACRkW,IAAK,IAAMW,EAAYroC,MAAM,EAAGyL,GAAOT,KAAK,MAE9C,KACF,CAnDA,CAoDF,CAEA,OAAOkE,GAASi5B,GAAY,IAC9B,EAIIj5B,EAAQ,SAAezH,EAAMigC,GAC/B,OAAOvW,EAAK,CAAC,CAAE1pB,KAAMA,IAASigC,EAChC,EA4BIrgC,EAAU,SAAiBu4B,EAAIwL,GAEjC,GAAI5a,EAAWoP,EAAI,KACjB,OAAOA,EAGT,IAAIyL,EAAYzL,EAAGh5B,MAAM,KACrB0kC,EAAaD,EAAU,GACvBE,EAAUF,EAAU,GAGpBG,EADcJ,EAAKxkC,MAAM,KACE,GAE3B6kC,EAAanD,EAAWgD,GACxBI,EAAepD,EAAWkD,GAG9B,GAAsB,KAAlBC,EAAW,GACb,OAAOhC,EAAS+B,EAAcD,GAIhC,IAAK/a,EAAWib,EAAW,GAAI,KAAM,CACnC,IAAI9e,EAAW+e,EAAatlC,OAAOqlC,GAAYzgC,KAAK,KACpD,OAAOy+B,GAA2B,MAAjB+B,EAAuB,GAAK,KAAO7e,EAAU4e,EAChE,CASA,IAFA,IAAII,EAAcD,EAAatlC,OAAOqlC,GAClCG,EAAW,GACNznC,EAAI,EAAG2C,EAAI6kC,EAAYjsC,OAAQyE,EAAI2C,EAAG3C,IAAK,CAClD,IAAIilC,EAAUuC,EAAYxnC,GACV,OAAZilC,EAAkBwC,EAASv2B,MAA2B,MAAZ+zB,GAAiBwC,EAAS7nC,KAAKqlC,EAC/E,CAEA,OAAOK,EAAS,IAAMmC,EAAS5gC,KAAK,KAAMugC,EAC5C,EAKIM,EAAe,SAAsBpkC,EAAM+pB,GAC7C,IAAIsa,EAAcrkC,EAAKb,MAAM,KACzBmlC,EAAWD,EAAY,GACvBE,EAAeF,EAAY,GAC3B5Z,OAAyBvyB,IAAjBqsC,EAA6B,GAAKA,EAG1CC,EAAkB,IADP3D,EAAWyD,GACWn9B,KAAI,SAAUw6B,GACjD,IAAIl6B,EAAQ+5B,EAAQltB,KAAKqtB,GACzB,OAAOl6B,EAAQsiB,EAAOtiB,EAAM,IAAMk6B,CACpC,IAAGp+B,KAAK,KACJkhC,EAAmB1a,EAAOxG,SAE1BmhB,GADJD,OAAwCvsC,IAArBusC,EAAiC,CAAC,EAAIA,GACZvc,OAGzCyc,QAFmCzsC,IAA1BwsC,EAAsC,GAAKA,GAE/BvlC,MAAM,KAAK,IAAM,GAE1C,OADAqlC,EAAkBxC,EAASwC,EAAiB/Z,EAAOka,EAErD,EAaInD,EAAU,SAWVE,EAAY,SAAmBC,GACjC,OAAOH,EAAQn6B,KAAKs6B,EACtB,EACIL,EAAU,SAAiBK,GAC7B,OAAOA,GAA0B,MAAfA,EAAQ,EAC5B,EAEIC,EAAY,SAAmBhY,EAAO5lB,GAMxC,MAAO,CAAE4lB,MAAOA,EAAOiY,MALXjY,EAAM1I,QAAU,EAAI2f,EAAWjX,EAAM5pB,MAAMqV,QAAO,SAAUwsB,EAAOF,GAG7E,OAFAE,GAlBiB,GAMD,SAAuBF,GACzC,MAAmB,KAAZA,CACT,CAWQG,CAAcH,GAAwCD,EAAUC,GAAUE,GAjB7D,EAiB8FP,EAAQK,GAAUE,GAASE,EAAoCF,GAlB9J,EAkBYA,GAfd,EAgBPA,CACT,GAAG,GACkC79B,MAAOA,EAC9C,EAEIg9B,EAAa,SAAoBP,GACnC,OAAOA,EAAOt5B,IAAIy6B,GAAW1wB,MAAK,SAAU/K,EAAGi0B,GAC7C,OAAOj0B,EAAE07B,MAAQzH,EAAEyH,MAAQ,EAAI17B,EAAE07B,MAAQzH,EAAEyH,OAAS,EAAI17B,EAAEnC,MAAQo2B,EAAEp2B,KACtE,GACF,EAEI68B,EAAa,SAAoBZ,GACnC,OAAOA,EAEN7/B,QAAQ,eAAgB,IAAIjB,MAAM,IACrC,EAEI6iC,EAAW,SAAkB9c,GAC/B,IAAK,IAAIjnB,EAAOjG,UAAUC,OAAQwyB,EAAQjvB,MAAMyC,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC/FusB,EAAMvsB,EAAO,GAAKlG,UAAUkG,GAM9B,OAAOgnB,IAHPuF,EAAQA,EAAMvuB,QAAO,SAAUkd,GAC7B,OAAOA,GAAKA,EAAEnhB,OAAS,CACzB,MAC4BwyB,EAAMxyB,OAAS,EAAI,IAAMwyB,EAAMlnB,KAAK,KAAO,GACzE,EAEIk+B,EAAgB,CAAC,MAAO,QC3QxBlD,EAAWlkC,OAAOk1B,QAAU,SAAU9yB,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CAAE,IAAIC,EAAS3E,UAAU0E,GAAI,IAAK,IAAIG,KAAOF,EAActC,OAAOD,UAAUoG,eAAezF,KAAK4B,EAAQE,KAAQJ,EAAOI,GAAOF,EAAOE,GAAU,CAAE,OAAOJ,CAAQ,EAE3P+hC,EAAc,SAAqB7hC,GACrC,IAAI8hC,EAAmB9hC,EAAO4mB,SAC1B2E,EAASuW,EAAiBvW,OAC1BlF,EAAOyb,EAAiBzb,KACxBiG,EAAOwV,EAAiBxV,KACxByV,EAASD,EAAiBC,OAC1Bd,EAAWa,EAAiBb,SAC5Be,EAAOF,EAAiBE,KACxBd,EAAWY,EAAiBZ,SAC5Be,EAAOH,EAAiBG,KACxB1Z,EAAWvoB,EAAO4mB,SAAS2B,UAG1BA,GAAY+D,GAAQ4V,IAEvB3Z,EADU,IAAI8D,IAAIC,GACH/D,UAGjB,MAAO,CACLA,SAAU6W,UAAUlY,UAAUqB,IAC9BgD,OAAQA,EACRlF,KAAMA,EACNiG,KAAMA,EACNyV,OAAQA,EACRd,SAAUA,EACVe,KAAMA,EACNd,SAAUA,EACVe,KAAMA,EACNvmB,MAAO1b,EAAO67B,QAAQngB,MACtBxb,IAAKF,EAAO67B,QAAQngB,OAAS1b,EAAO67B,QAAQngB,MAAMxb,KAAO,UAE7D,EAEIiiC,EAAgB,SAAuBniC,EAAQgB,GACjD,IAAIohC,EAAY,GACZxb,EAAWib,EAAY7hC,GACvBqiC,GAAgB,EAChBC,EAAoB,WAA8B,EAEtD,MAAO,CACL,YAAI1b,GACF,OAAOA,CACT,EAEA,iBAAIyb,GACF,OAAOA,CACT,EAEAE,sBAAuB,WACrBF,GAAgB,EAChBC,GACF,EACAlE,OAAQ,SAAgB97B,GACtB8/B,EAAUziC,KAAK2C,GAEf,IAAIkgC,EAAmB,WACrB5b,EAAWib,EAAY7hC,GACvBsC,EAAS,CAAEskB,SAAUA,EAAUyX,OAAQ,OACzC,EAIA,OAFAr+B,EAAOgnB,iBAAiB,WAAYwb,GAE7B,WACLxiC,EAAOonB,oBAAoB,WAAYob,GACvCJ,EAAYA,EAAU7iC,QAAO,SAAUuZ,GACrC,OAAOA,IAAOxW,CAChB,GACF,CACF,EACAi5B,SAAU,SAAkBC,GAC1B,IAAI5O,EAAOvxB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5EqgB,EAAQkR,EAAKlR,MACb+mB,EAAe7V,EAAKnpB,QACpBA,OAA2BlI,IAAjBknC,GAAqCA,EAEnD,GAAkB,iBAAPjH,EACTx7B,EAAO67B,QAAQ6G,GAAGlH,OACb,CACL9f,EAAQkmB,EAAS,CAAC,EAAGlmB,EAAO,CAAExb,IAAKwzB,KAAKiP,MAAQ,KAEhD,IACMN,GAAiB5+B,EACnBzD,EAAO67B,QAAQC,aAAapgB,EAAO,KAAM8f,GAEzCx7B,EAAO67B,QAAQ+G,UAAUlnB,EAAO,KAAM8f,EAE1C,CAAE,MAAOv1B,GACPjG,EAAO4mB,SAASnjB,EAAU,UAAY,UAAU+3B,EAClD,CACF,CAEA5U,EAAWib,EAAY7hC,GACvBqiC,GAAgB,EAChB,IAAIQ,EAAa,IAAI7/B,SAAQ,SAAUH,GACrC,OAAOy/B,EAAoBz/B,CAC7B,IAIA,OAHAu/B,EAAUniC,SAAQ,SAAUqC,GAC1B,OAAOA,EAAS,CAAEskB,SAAUA,EAAUyX,OAAQ,QAChD,IACOwE,CACT,EAEJ,EAIIC,EAAqB,WACvB,IAAIC,EAAc1nC,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,IAElF2nC,EAAcD,EAAYv/B,QAAQ,KAClCy/B,EAAkB,CACpB1a,SAAUya,GAAe,EAAID,EAAYG,OAAO,EAAGF,GAAeD,EAClExX,OAAQyX,GAAe,EAAID,EAAYG,OAAOF,GAAe,IAE3D37B,EAAQ,EACR1D,EAAQ,CAACs/B,GACTE,EAAS,CAAC,MAEd,MAAO,CACL,YAAIvc,GACF,OAAOjjB,EAAM0D,EACf,EACA2f,iBAAkB,SAA0Bpe,EAAMkQ,GAAK,EACvDsO,oBAAqB,SAA6Bxe,EAAMkQ,GAAK,EAE7D+iB,QAAS,CACP,WAAIuH,GACF,OAAOz/B,CACT,EACA,SAAI0D,GACF,OAAOA,CACT,EACA,SAAIqU,GACF,OAAOynB,EAAO97B,EAChB,EACAu7B,UAAW,SAAmBlnB,EAAO2nB,EAAGC,GACtC,IAAIC,EAAaD,EAAI9gC,MAAM,KACvB+lB,EAAWgb,EAAW,GACtBC,EAAcD,EAAW,GACzBhY,OAAyBhwB,IAAhBioC,EAA4B,GAAKA,EAE9Cn8B,IACA1D,EAAMhE,KAAK,CAAE4oB,SAAUA,EAAUgD,OAAQA,EAAOjwB,OAAS,IAAMiwB,EAASA,IACxE4X,EAAOxjC,KAAK+b,EACd,EACAogB,aAAc,SAAsBpgB,EAAO2nB,EAAGC,GAC5C,IAAIG,EAAcH,EAAI9gC,MAAM,KACxB+lB,EAAWkb,EAAY,GACvBC,EAAeD,EAAY,GAC3BlY,OAA0BhwB,IAAjBmoC,EAA6B,GAAKA,EAE/C//B,EAAM0D,GAAS,CAAEkhB,SAAUA,EAAUgD,OAAQA,GAC7C4X,EAAO97B,GAASqU,CAClB,EACAgnB,GAAI,SAAYlH,GACd,IAAImI,EAAWt8B,EAAQm0B,EAEnBmI,EAAW,GAAKA,EAAWR,EAAO7nC,OAAS,IAI/C+L,EAAQs8B,EACV,GAGN,EAKIzB,IAAiC,oBAAXj9B,SAA0BA,OAAO3I,WAAY2I,OAAO3I,SAASO,eAKnF4+B,EAAgB0G,EAHXD,EAAYj9B,OAAS69B,KAI1BvH,EAAWE,EAAcF,SClLzBqG,EAAWlkC,OAAOk1B,QAAU,SAAU9yB,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAI1E,UAAUC,OAAQyE,IAAK,CAAE,IAAIC,EAAS3E,UAAU0E,GAAI,IAAK,IAAIG,KAAOF,EAActC,OAAOD,UAAUoG,eAAezF,KAAK4B,EAAQE,KAAQJ,EAAOI,GAAOF,EAAOE,GAAU,CAAE,OAAOJ,CAAQ,EAE/P,SAASmoC,EAAyBnkC,EAAK1E,GAAQ,IAAIU,EAAS,CAAC,EAAG,IAAK,IAAIC,KAAK+D,EAAW1E,EAAKoE,QAAQzD,IAAM,GAAkBrC,OAAOD,UAAUoG,eAAezF,KAAK0F,EAAK/D,KAAcD,EAAOC,GAAK+D,EAAI/D,IAAM,OAAOD,CAAQ,CAE3N,SAASooC,EAAgBrmB,EAAUsmB,GAAe,KAAMtmB,aAAoBsmB,GAAgB,MAAM,IAAI3qC,UAAU,oCAAwC,CAExJ,SAASU,EAA2BC,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIiqC,eAAe,6DAAgE,OAAOhqC,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAE/O,SAASf,EAAUC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIC,UAAU,kEAAoED,GAAeD,EAASG,UAAYC,OAAOC,OAAOJ,GAAcA,EAAWE,UAAW,CAAEG,YAAa,CAAEC,MAAOP,EAAUoC,YAAY,EAAO5B,UAAU,EAAMC,cAAc,KAAeR,IAAYG,OAAOO,eAAiBP,OAAOO,eAAeX,EAAUC,GAAcD,EAASoB,UAAYnB,EAAY,CAY7e,IAAI8qC,EAAqB,SAA4Bz/B,EAAMsE,GACzD,IAAIo7B,GAAMllB,EAAAA,EAAAA,eAAclW,GAExB,OADAo7B,EAAIjjB,YAAczc,EACX0/B,CACT,EAIIC,EAAkBF,EAAmB,YAIrCrJ,EAAW,SAAkBpS,GAC/B,IAAInF,EAAWmF,EAAKnF,SACpB,OAAOpD,EAAAA,cACLkkB,EAAgBra,SAChB,MACA,SAAU5e,GACR,OAAOA,EAAUmY,EAASnY,GAAW+U,EAAAA,cACnC2V,EACA,KACAvS,EAEJ,GAEJ,EAEIuS,EAAmB,SAAU1U,GAG/B,SAAS0U,IACP,IAAIwO,EAAOjmC,EAEX2lC,EAAgBznC,KAAMu5B,GAEtB,IAAK,IAAI14B,EAAOjG,UAAUC,OAAQkF,EAAO3B,MAAMyC,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Ef,EAAKe,GAAQlG,UAAUkG,GAGzB,OAAeinC,EAASjmC,EAAQrE,EAA2BuC,KAAM6kB,EAAiBlnB,KAAKwB,MAAM0lB,EAAkB,CAAC7kB,MAAMuB,OAAOxB,KAAiB+B,EAAMmZ,MAAQ,CAC1JpM,QAAS/M,EAAMkmC,aACfC,KAAM,CAAEC,SAAU,OACTzqC,EAA2BqE,EAAnCimC,EACL,CAiEA,OAhFAnrC,EAAU28B,EAAkB1U,GAiB5B0U,EAAiBv8B,UAAUgrC,WAAa,WACtC,IAAIG,EAAiBnoC,KAAKylB,MAAM2V,QAIhC,MAAO,CAAEN,SAHMqN,EAAerN,SAGD3U,SAFdgiB,EAAehiB,SAGhC,EAEAoT,EAAiBv8B,UAAUorC,kBAAoB,SAA2BjoC,EAAOkoC,GAC/E,IAAIC,EAAWnoC,GAKb,MAAMA,GAFNooC,EAFgBvoC,KAAKylB,MAAM2V,QAAQN,UAEzB36B,EAAM0iC,IAAK,CAAE7/B,SAAS,GAIpC,EAEAu2B,EAAiBv8B,UAAU4pB,mBAAqB,SAA4BrB,EAAW6X,GACjFA,EAAUvuB,QAAQsX,WAAanmB,KAAKib,MAAMpM,QAAQsX,UACpDnmB,KAAKylB,MAAM2V,QAAQ0G,uBAEvB,EAEAvI,EAAiBv8B,UAAUqpB,kBAAoB,WAC7C,IAAI3b,EAAS1K,KAETioC,EAAOjoC,KAAKib,MAAMgtB,KAClB7M,EAAUp7B,KAAKylB,MAAM2V,QAEzBA,EAAQ0G,wBACRmG,EAAKC,SAAW9M,EAAQuC,QAAO,WAC7Bp7B,QAAQC,UAAU+nB,MAAK,WAErBpF,uBAAsB,WACfza,EAAO89B,WACV99B,EAAO2yB,UAAS,WACd,MAAO,CAAExuB,QAASnE,EAAOs9B,aAC3B,GAEJ,GACF,GACF,GACF,EAEAzO,EAAiBv8B,UAAU0pB,qBAAuB,WAChD,IAAIuhB,EAAOjoC,KAAKib,MAAMgtB,KAEtBjoC,KAAKwoC,WAAY,EACjBP,EAAKC,UACP,EAEA3O,EAAiBv8B,UAAU8pB,OAAS,WAClC,IAAIjY,EAAU7O,KAAKib,MAAMpM,QACrBmY,EAAWhnB,KAAKylB,MAAMuB,SAE1B,OAAOpD,EAAAA,cACLkkB,EAAgB/gB,SAChB,CAAE3pB,MAAOyR,GACW,mBAAbmY,EAA0BA,EAASnY,GAAWmY,GAAY,KAErE,EAEOuS,CACT,CAlFuB,CAkFrB3V,EAAAA,WAKF2V,EAAiBkP,aAAe,CAC9BrN,QAASJ,GAKX,IAAI0N,EAAiB,SAAwBhc,GAC3C,IAAI6B,EAAM7B,EAAM6B,IACZvH,EAAW0F,EAAM1F,SAEjBub,EAAchU,EAAIxrB,QAAQ,KAE1B+kB,OAAW,EACXgD,EAAS,GAUb,OAZmByX,GAAe,GAMhCza,EAAWyG,EAAIpkB,UAAU,EAAGo4B,GAC5BzX,EAASyD,EAAIpkB,UAAUo4B,IAEvBza,EAAWyG,EAGN3K,EAAAA,cACLkkB,EAAgB/gB,SAChB,CACE3pB,MAAO,CACL+oB,SAAU,CACR2B,SAAUA,EACVgD,OAAQA,EACRlF,KAhBG,IAkBLkV,SAAU,WACR,MAAM,IAAI1b,MAAM,yCAClB,IAGJ4H,EAEJ,EAGIkX,EAAc0J,EAAmB,OAAQ,CAC3CzJ,QAAS,IACTC,SAAU,IACVtD,SAAUE,EAAcF,WAKtB4D,EAAS,SAAgBjZ,GAC3B,OAAO7B,EAAAA,cACLsa,EAAYzQ,SACZ,MACA,SAAUkb,GACR,OAAO/kB,EAAAA,cACL2a,EACA,MACA,SAAUqK,GACR,OAAOhlB,EAAAA,cAAoBilB,EAAY1H,EAAS,CAAC,EAAGwH,EAAaC,EAAiBnjB,GACpF,GAEJ,GAEJ,EAEIojB,EAAa,SAAUC,GAGzB,SAASD,IAGP,OAFApB,EAAgBznC,KAAM6oC,GAEfprC,EAA2BuC,KAAM8oC,EAAqB3pC,MAAMa,KAAMpF,WAC3E,CAiFA,OAvFAgC,EAAUisC,EAAYC,GAQtBD,EAAW7rC,UAAU8pB,OAAS,WAC5B,IAAIiiB,EAAS/oC,KAAKylB,MACdU,EAAW4iB,EAAO5iB,SAClB6iB,EAAaD,EAAOjO,SACpBsD,EAAW2K,EAAO3K,SAClB6K,EAAUF,EAAOE,QACjBjiB,EAAW+hB,EAAO/hB,SAElBkiB,GADUH,EAAO5K,QACE4K,EAAO9Y,WAC1BA,OAAiCn1B,IAArBouC,EAAiC,MAAQA,EACrDC,EAAW3B,EAAyBuB,EAAQ,CAAC,WAAY,WAAY,WAAY,UAAW,WAAY,UAAW,cAEnH1F,EAASzf,EAAAA,SAAewlB,QAAQpiB,GAAU/O,QAAO,SAAUoxB,EAAOC,GACpE,IAAIjG,EAASkG,GAAYnL,EAAZmL,CAAsBD,GACnC,OAAOD,EAAM9nC,OAAO8hC,EACtB,GAAG,IACCvb,EAAW3B,EAAS2B,SAGpBzd,EAAQiiB,EAAK+W,EAAQvb,GAEzB,GAAIzd,EAAO,CACT,IAAIsiB,EAAStiB,EAAMsiB,OACfkW,EAAMx4B,EAAMw4B,IACZrW,EAAQniB,EAAMmiB,MACdpF,EAAU/c,EAAMmiB,MAAMpvB,MAI1BghC,EAAW5R,EAAM1I,QAAUsa,EAAW5R,EAAM5pB,KAAKI,QAAQ,MAAO,IAEhE,IAAIyiB,EAAQ0b,EAAS,CAAC,EAAGxU,EAAQ,CAC/BkW,IAAKA,EACL1c,SAAUA,EACV2U,SAAU,SAAkBC,EAAIx6B,GAC9B,OAAOyoC,EAAWxmC,EAAQu4B,EAAI8H,GAAMtiC,EACtC,IAGE4gB,EAAQyC,EAAAA,aAAmBwD,EAAS3B,EAAO2B,EAAQ3B,MAAMuB,SAAWpD,EAAAA,cACtE8a,EACA,CAAEvY,SAAUA,EAAU8iB,QAASA,GAC/B7hB,EAAQ3B,MAAMuB,eACZlsB,GAGA0uC,EAAeP,EAAUQ,EAAexZ,EAExCyZ,EAAeT,EAAU9H,EAAS,CAAE0B,IAAKA,EAAK1c,SAAUA,EAAU8J,UAAWA,GAAakZ,GAAYA,EAE1G,OAAOvlB,EAAAA,cACLsa,EAAYnX,SACZ,CACE3pB,MAAO,CAAE+gC,QAAS0E,EAAKzE,SAAUA,EAAUtD,SAAUrV,EAAMqV,WAE7DlX,EAAAA,cACE4lB,EACAE,EACAvoB,GAGN,CAcE,OAAO,IAEX,EAEO0nB,CACT,CAzFiB,CAyFfjlB,EAAAA,eAEFilB,EAAWJ,aAAe,CACxBQ,SAAS,GAIX,IAAIU,EAAe/B,EAAmB,SAElC6B,EAAe,SAAsBhL,GACvC,IAAIoE,EAAMpE,EAAMoE,IACZ1c,EAAWsY,EAAMtY,SACjB8J,EAAYwO,EAAMxO,UAClBkZ,EAAW3B,EAAyB/I,EAAO,CAAC,MAAO,WAAY,cAEnE,OAAO7a,EAAAA,cACL+lB,EAAalc,SACb,MACA,SAAUmc,GACR,OAAOhmB,EAAAA,cAAoBimB,EAAkB1I,EAAS,CAAC,EAAGgI,EAAU,CAClElZ,UAAWA,EACX2Z,aAAcA,EACd/G,IAAKA,EACL1c,SAAUA,IAEd,GAEJ,EAGI2jB,GAAgB,EAChBC,EAAoB,EAEpBF,EAAmB,SAAUhN,GAG/B,SAASgN,IACP,IAAIG,EAAQ36B,EAEZo4B,EAAgBznC,KAAM6pC,GAEtB,IAAK,IAAI9oC,EAAQnG,UAAUC,OAAQkF,EAAO3B,MAAM2C,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChFjB,EAAKiB,GAASpG,UAAUoG,GAG1B,OAAgBgpC,EAAU36B,EAAS5R,EAA2BuC,KAAM68B,EAAkBl/B,KAAKwB,MAAM09B,EAAmB,CAAC78B,MAAMuB,OAAOxB,KAAkBsP,EAAO4L,MAAQ,CAAC,EAAG5L,EAAOu6B,aAAe,SAAU/jB,IAChMxW,EAAO4L,MAAMgvB,aAAepkB,GAC/BA,EAAKqkB,OAET,EAAYzsC,EAA2B4R,EAApC26B,EACL,CA2FA,OA3GAptC,EAAUitC,EAAkBhN,GAkB5BgN,EAAiB1M,yBAA2B,SAAkClB,EAAWmB,GAEvF,GAD+B,MAAjBA,EAAUyF,IAEtB,OAAO1B,EAAS,CACd8I,aAAa,GACZhO,GAEH,IAAIkO,EAAelO,EAAU4G,MAAQzF,EAAUyF,IAC3CuH,EAAkBhN,EAAUjX,SAAS2B,WAAamU,EAAU9V,SAAS2B,UAAYmU,EAAU9V,SAAS2B,WAAamU,EAAU4G,IAC/H,OAAO1B,EAAS,CACd8I,YAAaE,GAAgBC,GAC5BnO,EAEP,EAEA4N,EAAiB7sC,UAAUqpB,kBAAoB,WAC7C0jB,IACA/pC,KAAKkqC,OACP,EAEAL,EAAiB7sC,UAAU0pB,qBAAuB,WAEtB,MAD1BqjB,IAEED,GAAgB,EAEpB,EAEAD,EAAiB7sC,UAAU4pB,mBAAqB,SAA4BrB,EAAW6X,GACjF7X,EAAUY,WAAanmB,KAAKylB,MAAMU,UAAYnmB,KAAKib,MAAMgvB,aAC3DjqC,KAAKkqC,OAET,EAEAL,EAAiB7sC,UAAUktC,MAAQ,WAQjC,IAAIN,EAAe5pC,KAAKylB,MAAMmkB,aAG1BA,EACFA,EAAa5pC,KAAK6lB,MAEdikB,EACFA,GAAgB,EACP9pC,KAAK6lB,OAGT7lB,KAAK6lB,KAAKwkB,SAASxuC,SAASyuC,gBAC/BtqC,KAAK6lB,KAAKqkB,QAIlB,EAEAL,EAAiB7sC,UAAU8pB,OAAS,WAClC,IAAIhK,EAAS9c,KAETuqC,EAAUvqC,KAAKylB,MAEf5M,GADW0xB,EAAQvjB,SACXujB,EAAQ1xB,OAEhB2xB,GADeD,EAAQX,aACHW,EAAQta,WAC5Bwa,OAA6B3vC,IAAtB0vC,EAAkC,MAAQA,EAGjDrB,GAFMoB,EAAQ1H,IACH0H,EAAQpkB,SACRqhB,EAAyB+C,EAAS,CAAC,WAAY,QAAS,eAAgB,YAAa,MAAO,cAE3G,OAAO3mB,EAAAA,cACL6mB,EACAtJ,EAAS,CACPtoB,MAAOsoB,EAAS,CAAEuJ,QAAS,QAAU7xB,GACrC8xB,SAAU,KACVviB,IAAK,SAAa7V,GAChB,OAAOuK,EAAO+I,KAAOtT,CACvB,GACC42B,GACHvlB,EAAAA,cACE+lB,EAAa5iB,SACb,CAAE3pB,MAAO4C,KAAK4pC,cACd5pC,KAAKylB,MAAMuB,UAGjB,EAEO6iB,CACT,CA7GuB,CA6GrBjmB,EAAAA,YAEFgnB,EAAAA,EAAAA,GAASf,GAET,IAAIvmC,EAAI,WAAc,EAGlBunC,EAAajnB,EAAAA,gBAES,IAAfinB,IACTA,EAAa,SAAoBC,GAC/B,OAAOA,CACT,GAGF,IAAIC,EAAOF,GAAW,SAAU/X,EAAO1K,GACrC,IAAI4iB,EAAWlY,EAAMkY,SACjBvlB,EAAQ+hB,EAAyB1U,EAAO,CAAC,aAE7C,OAAOlP,EAAAA,cACLsa,EAAYzQ,SACZ,MACA,SAAU6F,GACOA,EAAM8K,SAArB,IACID,EAAU7K,EAAM6K,QACpB,OAAOva,EAAAA,cACL2a,EACA,MACA,SAAUhL,GACR,IAAIpN,EAAWoN,EAAMpN,SACjB2U,EAAWvH,EAAMuH,SAEjBC,EAAKtV,EAAMsV,GACX9f,EAAQwK,EAAMxK,MACdjY,EAAUyiB,EAAMziB,QAChBioC,EAAkBxlB,EAAMylB,SACxBA,OAA+BpwC,IAApBmwC,EAAgC3nC,EAAI2nC,EAC/CE,EAAc3D,EAAyB/hB,EAAO,CAAC,KAAM,QAAS,UAAW,aAEzEoG,EAAOrpB,EAAQu4B,EAAIoD,GACnBiN,EAAczM,UAAU9S,GACxBwf,EAAYllB,EAAS2B,WAAasjB,EAClCE,EAAqB3f,EAAWxF,EAAS2B,SAAUsjB,GAEvD,OAAOxnB,EAAAA,cAAoB,IAAKud,EAAS,CACvC/Y,IAAKA,GAAO4iB,EACZ,eAAgBK,EAAY,YAASvwC,GACpCqwC,EAAaD,EAAS,CAAEG,UAAWA,EAAWC,mBAAoBA,EAAoBzf,KAAMA,EAAM1F,SAAUA,IAAa,CAC1H0F,KAAMA,EACN0f,QAAS,SAAiBvpC,GAExB,GADImpC,EAAYI,SAASJ,EAAYI,QAAQvpC,GACzCwpC,GAAexpC,GAAQ,CACzBA,EAAMypC,iBACN,IAAIC,EAAgB1oC,EACpB,GAAuB,kBAAZA,GAAyBqoC,EAAW,CAC7C,IAAIM,EAAkBxK,EAAS,CAAC,EAAGhb,EAASlL,OAExC2wB,GADMD,EAAgBlsC,IACV+nC,EAAyBmE,EAAiB,CAAC,SFtNhCE,EEwNI1K,EAAS,CAAC,EAAGlmB,GFxNX6wB,EEwNmBF,EAApDF,GFvNZK,EAAW9uC,OAAO0B,KAAKktC,IACXhxC,SAAWoC,OAAO0B,KAAKmtC,GAAMjxC,QAAUkxC,EAASC,OAAM,SAAUvsC,GAC9E,OAAOqsC,EAAK1oC,eAAe3D,IAAQosC,EAAKpsC,KAASqsC,EAAKrsC,EACxD,GEqNc,CACAq7B,EAASjP,EAAM,CACb5Q,MAAOA,EACPjY,QAAS0oC,GAEb,CF9NO,IAAwBG,EAAMC,EAC7CC,CE8NM,IAEJ,GAEJ,GAEJ,IASA,SAASE,EAAgBpJ,GACvB7iC,KAAK6iC,IAAMA,CACb,CATAkI,EAAKnmB,YAAc,OAWnB,IAAI0jB,EAAa,SAAoBxqC,GACnC,OAAOA,aAAamuC,CACtB,EAEIC,EAAa,SAAoBnR,GACnC,MAAM,IAAIkR,EAAgBlR,EAC5B,EAEIoR,EAAe,SAAUC,GAG3B,SAASD,IAGP,OAFA1E,EAAgBznC,KAAMmsC,GAEf1uC,EAA2BuC,KAAMosC,EAAkBjtC,MAAMa,KAAMpF,WACxE,CAqCA,OA3CAgC,EAAUuvC,EAAcC,GASxBD,EAAanvC,UAAUqpB,kBAAoB,WACzC,IAAIgmB,EAAUrsC,KAAKylB,MACfqV,EAAWuR,EAAQvR,SACnBC,EAAKsR,EAAQtR,GAEbuR,GADOD,EAAQE,KACGF,EAAQrpC,SAC1BA,OAA8BlI,IAApBwxC,GAAuCA,EACjDrxB,EAAQoxB,EAAQpxB,MAEhBkjB,GADUkO,EAAQG,QACRH,EAAQlO,SAClB1Y,EAAQ+hB,EAAyB6E,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAExG9pC,QAAQC,UAAU+nB,MAAK,WACrB,IAAIkiB,EAAajqC,EAAQu4B,EAAIoD,GAC7BrD,EAASkM,EAAayF,EAAYhnB,GAAQ,CAAEziB,QAASA,EAASiY,MAAOA,GACvE,GACF,EAEAkxB,EAAanvC,UAAU8pB,OAAS,WAC9B,IAAI4lB,EAAU1sC,KAAKylB,MAEfsV,GADW2R,EAAQ5R,SACd4R,EAAQ3R,IAIbyR,GAHOE,EAAQH,KACLG,EAAQ1pC,QACV0pC,EAAQzxB,MACNyxB,EAAQF,SAClBrO,EAAUuO,EAAQvO,QAClB1Y,EAAQ+hB,EAAyBkF,EAAS,CAAC,WAAY,KAAM,OAAQ,UAAW,QAAS,UAAW,YAEpGD,EAAajqC,EAAQu4B,EAAIoD,GAE7B,OADKqO,GAASN,EAAWlF,EAAayF,EAAYhnB,IAC3C,IACT,EAEO0mB,CACT,CA7CmB,CA6CjBvoB,EAAAA,WAEE+oB,EAAW,SAAkBlnB,GAC/B,OAAO7B,EAAAA,cACLsa,EAAYzQ,SACZ,MACA,SAAU6G,GACR,IAAI6J,EAAU7J,EAAM6J,QACpB,OAAOva,EAAAA,cACL2a,EACA,MACA,SAAUqK,GACR,OAAOhlB,EAAAA,cAAoBuoB,EAAchL,EAAS,CAAC,EAAGyH,EAAiB,CAAEzK,QAASA,GAAW1Y,GAC/F,GAEJ,GAEJ,EAQImnB,EAAQ,SAAehY,GACzB,IAAIhyB,EAAOgyB,EAAMhyB,KACbokB,EAAW4N,EAAM5N,SACrB,OAAOpD,EAAAA,cACLsa,EAAYzQ,SACZ,MACA,SAAUof,GACR,IAAI1O,EAAU0O,EAAM1O,QACpB,OAAOva,EAAAA,cACL2a,EACA,MACA,SAAUuO,GACR,IAAIhS,EAAWgS,EAAOhS,SAClB3U,EAAW2mB,EAAO3mB,SAElB4mB,EAAevqC,EAAQI,EAAMu7B,GAC7Bz4B,EAAS2E,EAAM0iC,EAAc5mB,EAAS2B,UAC1C,OAAOd,EAAS,CACd8T,SAAUA,EACV3U,SAAUA,EACV9b,MAAO3E,EAASy7B,EAAS,CAAC,EAAGz7B,EAAOinB,OAAQ,CAC1CkW,IAAKn9B,EAAOm9B,IACZjgC,KAAMA,IACH,MAET,GAEJ,GAEJ,EAKIqlB,GAAc,WAChB,IAAIpZ,GAAUsZ,EAAAA,EAAAA,YAAW2f,GAEzB,IAAKj5B,EACH,MAAM,IAAIuQ,MAAM,8JAGlB,OAAOvQ,EAAQsX,QACjB,EAEI6mB,GAAc,WAChB,IAAIn+B,GAAUsZ,EAAAA,EAAAA,YAAW+V,GAEzB,IAAKrvB,EACH,MAAM,IAAIuQ,MAAM,0JAGlB,OAAOvQ,EAAQisB,QACjB,EAEImS,GAAY,WACd,IAAIp+B,GAAUsZ,EAAAA,EAAAA,YAAW+V,GAEzB,IAAKrvB,EACH,MAAM,IAAIuQ,MAAM,4JAGlB,IAAI+G,EAAW8B,KAEXoC,EAAUhgB,EAAMwE,EAAQuvB,SAAUjY,EAAS2B,UAE/C,OAAOuC,EAAUA,EAAQsC,OAAS,IACpC,EAEIugB,GAAW,SAAkBtqC,GAC/B,IAAKA,EACH,MAAM,IAAIwc,MAAM,4EAElB,IAAIvQ,GAAUsZ,EAAAA,EAAAA,YAAW+V,GAEzB,IAAKrvB,EACH,MAAM,IAAIuQ,MAAM,2JAGlB,IAAI+G,EAAW8B,KAEX8kB,EAAevqC,EAAQI,EAAMiM,EAAQsvB,SACrCz4B,EAAS2E,EAAM0iC,EAAc5mB,EAAS2B,UAC1C,OAAOpiB,EAASy7B,EAAS,CAAC,EAAGz7B,EAAOinB,OAAQ,CAC1CkW,IAAKn9B,EAAOm9B,IACZjgC,KAAMA,IACH,IACP,EAIIuqC,GAAe,SAAsB/oC,GACvC,OAAOA,EAAIpB,QAAQ,eAAgB,GACrC,EAEIumC,GAAc,SAASA,EAAYnL,GACrC,OAAO,SAAUhX,GACf,IAAKA,EACH,OAAO,KAGT,GAAIA,EAAQvnB,OAAS+jB,EAAAA,UAAkBwD,EAAQ3B,MAAMuB,SACnD,OAAOpD,EAAAA,SAAe7Z,IAAIqd,EAAQ3B,MAAMuB,SAAUuiB,EAAYnL,IFze7C,IAA0BmO,EAAMxR,EACjDj8B,EEgfF,GANEsoB,EAAQ3B,MAAM7iB,MAAQwkB,EAAQ3B,MAAM3B,SAAWsD,EAAQvnB,OAAS8sC,GAAuNrG,KAAU,GAEhSlf,EAAQvnB,OAAS8sC,GAAcvlB,EAAQ3B,MAAM8mB,MAASnlB,EAAQ3B,MAAMsV,IAAqNuL,KAAU,GAEnSlf,EAAQvnB,OAAS8sC,IF/eyBJ,EE+eKnlB,EAAQ3B,MAAM8mB,KF/ebxR,EE+emB3T,EAAQ3B,MAAMsV,GF9elFj8B,EAAS,SAAgBylC,GAC3B,OAAOD,EAAUC,EACnB,EACiBd,EAAW8I,GAAMztC,OAAOA,GAAQgV,OAAO3N,KAAK,OAC9Cs9B,EAAW1I,GAAIj8B,OAAOA,GAAQgV,OAAO3N,KAAK,OE0eyQmgC,KAAU,GAEtUlf,EAAQ3B,MAAM3B,QAChB,MAAO,CAAE1mB,MAAOgqB,EAAStD,SAAS,GAGpC,IAAIspB,EAAchmB,EAAQvnB,OAAS8sC,EAAWvlB,EAAQ3B,MAAM8mB,KAAOnlB,EAAQ3B,MAAM7iB,KAE7EA,EAAuB,MAAhBwqC,EAAsBhP,EAAW+O,GAAa/O,GAAY,IAAM+O,GAAaC,GAExF,MAAO,CACLhwC,MAAOgqB,EACPtD,QAASsD,EAAQ3B,MAAM3B,QACvBlhB,KAAMwkB,EAAQ3B,MAAMuB,SAAWmmB,GAAavqC,GAAQ,KAAOA,EAE/D,CACF,EAEI4oC,GAAiB,SAAwBxpC,GAC3C,OAAQA,EAAMqrC,kBAAqC,IAAjBrrC,EAAMsrC,UAAkBtrC,EAAMurC,SAAWvrC,EAAMwrC,QAAUxrC,EAAMyrC,SAAWzrC,EAAM0rC,SACpH,C,+bC7sBIvvC,EAAM,GACNwvC,EAAOxvC,EAAIqB,QACXrE,EAAQgD,EAAIhD,MAWhB,SAASyyC,EAAerf,EAAK5B,GAC3B,GAAIA,GAA8B,YAApB,OAAQA,GAAsB,CAC1C,IAAIkhB,EAAc,GAChBroC,EAAI8lB,mBAEN,IAAK,IAAIwiB,KAAanhB,EACpBkhB,GAAe,IAAMroC,EAAEsoC,GAAa,IAAMtoC,EAAEmnB,EAAOmhB,IAErD,IAAKD,EACH,OAAOtf,EAETA,EAAMA,IAA6B,IAAtBA,EAAIxrB,QAAQ,KAAc,IAAM,KAAO8qC,EAAY1yC,MAAM,EACxE,CACA,OAAOozB,CACT,CAEA,SAASwf,EAAKxf,EAAKhuB,EAAS6a,EAAUvX,EAAMyU,GACtCzU,GAA0B,YAAlB,OAAQA,KACbyU,IACHzU,EAAS,GAAI,IAAIovB,MAGnBpvB,EAAO+pC,EAAe,GAAI/pC,GAAM1I,MAAM,IAEpCoF,EAAQytC,oBACVzf,EAAMqf,EAAerf,EAAKhuB,EAAQytC,oBAEpC,IACE,IAAIC,GAEFA,EADEjf,eACE,IAAIA,eAEJ,IAAIkf,cAAc,uBAEtBjf,KAAKprB,EAAO,OAAS,MAAO0qB,EAAK,GAC9BhuB,EAAQ4tC,aACXF,EAAEG,iBAAiB,mBAAoB,kBAEzCH,EAAEI,kBAAoB9tC,EAAQ8tC,gBAC1BxqC,GACFoqC,EAAEG,iBAAiB,eAAgB,qCAEjCH,EAAEK,kBACJL,EAAEK,iBAAiB,oBAErB,IAAIC,EAAIhuC,EAAQiuC,cAEhB,GADAD,EAAiB,mBAANA,EAAmBA,IAAMA,EAElC,IAAK,IAAIjvC,KAAKivC,EACZN,EAAEG,iBAAiB9uC,EAAGivC,EAAEjvC,IAG5B2uC,EAAEre,mBAAqB,WACrBqe,EAAEpe,WAAa,GAAKzU,GAAYA,EAAS6yB,EAAEhc,aAAcgc,EAC3D,EACAA,EAAE3gC,KAAKzJ,EACT,CAAE,MAAO2B,GACPpF,SAAWA,QAAQN,IAAI0F,EACzB,CACF,CAcA,IAAIipC,EACJ,WACE,SAASA,EAAQ3lC,GACf,IAAIvI,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAMyuC,GACtBzuC,KAAKQ,KAAKsI,EAAUvI,GACpBP,KAAKH,KAAO,SACd,CAwEA,OAvEA,OAAa4uC,EAAS,CAAC,CACrBhvC,IAAK,OACLrC,MAAO,SAAc0L,GACnB,IAAIvI,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFoF,KAAK8I,SAAWA,EAChB9I,KAAKO,QAhGX,SAAkB8C,GAQhB,OAPAsqC,EAAKhwC,KAAKxC,EAAMwC,KAAK/C,UAAW,IAAI,SAAU2E,GAC5C,GAAIA,EACF,IAAK,IAAI0E,KAAQ1E,OACGzE,IAAduI,EAAIY,KAAqBZ,EAAIY,GAAQ1E,EAAO0E,GAGtD,IACOZ,CACT,CAuFqBqrC,CAASnuC,EAASP,KAAKO,SAAW,CAAC,EAzB/C,CACLouC,SAAU,+BACVC,QAAS,8BACTC,mBAAmB,EACnB3gC,MAAO2J,KAAK3J,MACZ4gC,aAAc,SAAsB/jC,EAAWtL,EAAKsd,GAClD,OAAO,OAAgB,CAAC,EAAGtd,EAAKsd,GAAiB,GACnD,EACAoxB,aAAa,EACbJ,KAAMA,GAiBN,GACC,CACDtuC,IAAK,YACLrC,MAAO,SAAmB+d,EAAW7R,EAAY8R,GAC/C,IAAIuzB,EAAW3uC,KAAKO,QAAQouC,SACS,mBAA1B3uC,KAAKO,QAAQouC,WACtBA,EAAW3uC,KAAKO,QAAQouC,SAASxzB,EAAW7R,IAE9C,IAAIilB,EAAMvuB,KAAK8I,SAASwB,aAAaoE,YAAYigC,EAAU,CACzD7nC,IAAKqU,EAAUhV,KAAK,KACpBM,GAAI6C,EAAWnD,KAAK,OAEtBnG,KAAK+uC,QAAQxgB,EAAKnT,EACpB,GACC,CACD3b,IAAK,OACLrC,MAAO,SAAc8L,EAAU6B,EAAWqQ,GACxC,IAAIuzB,EAAW3uC,KAAKO,QAAQouC,SACS,mBAA1B3uC,KAAKO,QAAQouC,WACtBA,EAAW3uC,KAAKO,QAAQouC,SAAS,CAACzlC,GAAW,CAAC6B,KAEhD,IAAIwjB,EAAMvuB,KAAK8I,SAASwB,aAAaoE,YAAYigC,EAAU,CACzD7nC,IAAKoC,EACLzC,GAAIsE,IAEN/K,KAAK+uC,QAAQxgB,EAAKnT,EACpB,GACC,CACD3b,IAAK,UACLrC,MAAO,SAAiBmxB,EAAKnT,GAC3B,IAAItZ,EAAQ9B,KACZA,KAAKO,QAAQwtC,KAAKxf,EAAKvuB,KAAKO,SAAS,SAAUsD,EAAMmrC,GACnD,GAAIA,EAAI9f,QAAU,KAAO8f,EAAI9f,OAAS,IAAK,OAAO9T,EAAS,kBAAoBmT,GAAK,GAGpF,GAAIygB,EAAI9f,QAAU,KAAO8f,EAAI9f,OAAS,IAAK,OAAO9T,EAAS,kBAAoBmT,GAAK,GAGpF,IAAIrQ,EAAKpC,EACT,IACEoC,EAAMpc,EAAMvB,QAAQ2N,MAAMrK,EAAM0qB,EAClC,CAAE,MAAO/oB,GACPsW,EAAM,kBAAoByS,EAAM,UAClC,CACA,GAAIzS,EAAK,OAAOV,EAASU,GAAK,GAC9BV,EAAS,KAAM8C,EACjB,GACF,GACC,CACDze,IAAK,SACLrC,MAAO,SAAgB+d,EAAWpQ,EAAWtL,EAAKsd,GAChD,IAAIrS,EAAS1K,KACY,iBAAdmb,IAAwBA,EAAY,CAACA,IAChD,IAAIiX,EAAUpyB,KAAKO,QAAQuuC,aAAa/jC,EAAWtL,EAAKsd,GACxD5B,EAAU3b,SAAQ,SAAUsH,GAC1B,IAAIynB,EAAM7jB,EAAO5B,SAASwB,aAAaoE,YAAYhE,EAAOnK,QAAQquC,QAAS,CACzE9nC,IAAKA,EACLL,GAAIsE,IAENL,EAAOnK,QAAQwtC,KAAKxf,EAAK7jB,EAAOnK,SAAS,SAAUsD,EAAMmrC,GAEzD,GAAG5c,EACL,GACF,KAEKqc,CACT,CA/EA,GAgFAA,EAAQ5uC,KAAO,UACf,QC1KI,EAAM,GACN,EAAO,EAAIL,QACX,EAAQ,EAAIrE,MAahB,IAAI8zC,EAAqB,wCAoDrBC,EACM,SAAgB/mC,EAAM/K,EAAO+xC,EAASC,GAC5C,IAAIC,EAAgBz0C,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CACtFgI,KAAM,IACN0sC,SAAU,UAERH,IACFE,EAAcE,QAAU,IAAItc,KAC5Boc,EAAcE,QAAQC,QAAQH,EAAcE,QAAQE,UAAsB,GAAVN,EAAe,MAE7EC,IAAQC,EAAcD,OAASA,GACnCvzC,SAASqzC,OA9DS,SAAyB/mC,EAAMsO,EAAKlW,GACxD,IAAIqZ,EAAMrZ,GAAW,CAAC,EACtBqZ,EAAIhX,KAAOgX,EAAIhX,MAAQ,IACvB,IAAIxF,EAAQkuB,mBAAmB7U,GAC3BrS,EAAM,GAAG7C,OAAO4G,EAAM,KAAK5G,OAAOnE,GACtC,GAAIwc,EAAI81B,OAAS,EAAG,CAClB,IAAIA,EAAS91B,EAAI81B,OAAS,EAC1B,GAAIl9B,OAAOsH,MAAM41B,GAAS,MAAM,IAAItwB,MAAM,6BAC1Chb,GAAO,aAAa7C,OAAOiT,KAAKm7B,MAAMD,GACxC,CACA,GAAI91B,EAAIw1B,OAAQ,CACd,IAAKH,EAAmBhlC,KAAK2P,EAAIw1B,QAC/B,MAAM,IAAIryC,UAAU,4BAEtBqH,GAAO,YAAY7C,OAAOqY,EAAIw1B,OAChC,CACA,GAAIx1B,EAAIhX,KAAM,CACZ,IAAKqsC,EAAmBhlC,KAAK2P,EAAIhX,MAC/B,MAAM,IAAI7F,UAAU,0BAEtBqH,GAAO,UAAU7C,OAAOqY,EAAIhX,KAC9B,CACA,GAAIgX,EAAI21B,QAAS,CACf,GAAuC,mBAA5B31B,EAAI21B,QAAQK,YACrB,MAAM,IAAI7yC,UAAU,6BAEtBqH,GAAO,aAAa7C,OAAOqY,EAAI21B,QAAQK,cACzC,CAGA,GAFIh2B,EAAIi2B,WAAUzrC,GAAO,cACrBwV,EAAIk2B,SAAQ1rC,GAAO,YACnBwV,EAAI01B,SAEN,OADuC,iBAAjB11B,EAAI01B,SAAwB11B,EAAI01B,SAASrkC,cAAgB2O,EAAI01B,UAEjF,KAAK,EACHlrC,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAIrH,UAAU,8BAG1B,OAAOqH,CACT,CAYsB2rC,CAAgB5nC,EAAMmjB,mBAAmBluB,GAAQiyC,EACrE,EAZEH,EAaI,SAAc/mC,GAGlB,IAFA,IAAI6nC,EAAS,GAAGzuC,OAAO4G,EAAM,KACzB8nC,EAAKp0C,SAASqzC,OAAOntC,MAAM,KACtBzC,EAAI,EAAGA,EAAI2wC,EAAGp1C,OAAQyE,IAAK,CAElC,IADA,IAAIsK,EAAIqmC,EAAG3wC,GACY,MAAhBsK,EAAEkH,OAAO,IACdlH,EAAIA,EAAEO,UAAU,EAAGP,EAAE/O,QAEvB,GAA0B,IAAtB+O,EAAE7G,QAAQitC,GAAe,OAAOpmC,EAAEO,UAAU6lC,EAAOn1C,OAAQ+O,EAAE/O,OACnE,CACA,OAAO,IACT,EAKEq1C,EAAW,CACb/nC,KAAM,SACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACJ,GAAI7O,EAAQ6vC,cAAoC,oBAAbv0C,SAA0B,CAC3D,IAAI+N,EAAIslC,EAAY3uC,EAAQ6vC,cACxBxmC,IAAGwF,EAAQxF,EACjB,CACA,OAAOwF,CACT,EACAwQ,kBAAmB,SAA2B9Y,EAAKvG,GAC7CA,EAAQ6vC,cAAoC,oBAAbv0C,UACjCqzC,EAAc3uC,EAAQ6vC,aAActpC,EAAKvG,EAAQ8vC,cAAe9vC,EAAQ+vC,aAAc/vC,EAAQ8uC,cAElG,GAEEkB,EAAc,CAChBpoC,KAAM,cACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACJ,GAAsB,oBAAX5K,OAAwB,CACjC,IAAIsmB,EAAStmB,OAAO2hB,SAAS2E,QACxBtmB,OAAO2hB,SAAS2E,QAAUtmB,OAAO2hB,SAASP,MAAQphB,OAAO2hB,SAASP,KAAK7iB,QAAQ,MAAQ,IAC1F+nB,EAAStmB,OAAO2hB,SAASP,KAAKzb,UAAU3F,OAAO2hB,SAASP,KAAK7iB,QAAQ,OAIvE,IAFA,IACI4pB,EADQ7B,EAAO3gB,UAAU,GACVpI,MAAM,KAChBzC,EAAI,EAAGA,EAAIqtB,EAAO9xB,OAAQyE,IAAK,CACtC,IAAIkxC,EAAM7jB,EAAOrtB,GAAGyD,QAAQ,KAC5B,GAAIytC,EAAM,EACE7jB,EAAOrtB,GAAG6K,UAAU,EAAGqmC,KACrBjwC,EAAQkwC,oBAClBrhC,EAAQud,EAAOrtB,GAAG6K,UAAUqmC,EAAM,GAGxC,CACF,CACA,OAAOphC,CACT,GAEEshC,EAAyB,KACzBC,EAAwB,WAC1B,GAA+B,OAA3BD,EAAiC,OAAOA,EAC5C,IACEA,EAAoC,cAAXlsC,QAAkD,OAAxBA,OAAOosC,aAC1D,IAAIC,EAAU,wBACdrsC,OAAOosC,aAAahpB,QAAQipB,EAAS,OACrCrsC,OAAOosC,aAAa7R,WAAW8R,EACjC,CAAE,MAAOrrC,GACPkrC,GAAyB,CAC3B,CACA,OAAOA,CACT,EACI,EAAe,CACjBvoC,KAAM,eACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACJ,GAAI7O,EAAQuwC,oBAAsBH,IAAyB,CACzD,IAAI7pC,EAAMtC,OAAOosC,aAAalpB,QAAQnnB,EAAQuwC,oBAC1ChqC,IAAKsI,EAAQtI,EACnB,CACA,OAAOsI,CACT,EACAwQ,kBAAmB,SAA2B9Y,EAAKvG,GAC7CA,EAAQuwC,oBAAsBH,KAChCnsC,OAAOosC,aAAahpB,QAAQrnB,EAAQuwC,mBAAoBhqC,EAE5D,GAEEiqC,EAA2B,KAC3BC,EAA0B,WAC5B,GAAiC,OAA7BD,EAAmC,OAAOA,EAC9C,IACEA,EAAsC,cAAXvsC,QAAoD,OAA1BA,OAAOijB,eAC5D,IAAIopB,EAAU,wBACdrsC,OAAOijB,eAAeG,QAAQipB,EAAS,OACvCrsC,OAAOijB,eAAesX,WAAW8R,EACnC,CAAE,MAAOrrC,GACPurC,GAA2B,CAC7B,CACA,OAAOA,CACT,EACItpB,EAAiB,CACnBtf,KAAM,iBACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACJ,GAAI7O,EAAQ0wC,sBAAwBD,IAA2B,CAC7D,IAAIlqC,EAAMtC,OAAOijB,eAAeC,QAAQnnB,EAAQ0wC,sBAC5CnqC,IAAKsI,EAAQtI,EACnB,CACA,OAAOsI,CACT,EACAwQ,kBAAmB,SAA2B9Y,EAAKvG,GAC7CA,EAAQ0wC,sBAAwBD,KAClCxsC,OAAOijB,eAAeG,QAAQrnB,EAAQ0wC,qBAAsBnqC,EAEhE,GAEEoqC,EAAc,CAChB/oC,KAAM,YACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EAAQ,GACZ,GAAyB,oBAAd3K,UAA2B,CACpC,GAAIA,UAAU0W,UAEZ,IAAK,IAAI7b,EAAI,EAAGA,EAAImF,UAAU0W,UAAUtgB,OAAQyE,IAC9C8P,EAAMlQ,KAAKuF,UAAU0W,UAAU7b,IAG/BmF,UAAU0sC,cACZ/hC,EAAMlQ,KAAKuF,UAAU0sC,cAEnB1sC,UAAUyE,UACZkG,EAAMlQ,KAAKuF,UAAUyE,SAEzB,CACA,OAAOkG,EAAMvU,OAAS,EAAIuU,OAAQtU,CACpC,GAEEs2C,EAAU,CACZjpC,KAAM,UACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACAgiC,EAAU7wC,EAAQ6wC,UAAgC,oBAAbv1C,SAA2BA,SAAS+jC,gBAAkB,MAI/F,OAHIwR,GAA2C,mBAAzBA,EAAQpa,eAC5B5nB,EAAQgiC,EAAQpa,aAAa,SAExB5nB,CACT,GAEExM,EAAO,CACTuF,KAAM,OACNgoC,OAAQ,SAAgB5vC,GACtB,IAAI6O,EACJ,GAAsB,oBAAX5K,OAAwB,CACjC,IAAI0E,EAAW1E,OAAO2hB,SAAS2B,SAASzd,MAAM,mBAC9C,GAAInB,aAAoB9K,MACtB,GAA2C,iBAAhCmC,EAAQ8wC,oBAAkC,CACnD,GAAqD,iBAA1CnoC,EAAS3I,EAAQ8wC,qBAC1B,OAEFjiC,EAAQlG,EAAS3I,EAAQ8wC,qBAAqBruC,QAAQ,IAAK,GAC7D,MACEoM,EAAQlG,EAAS,GAAGlG,QAAQ,IAAK,GAGvC,CACA,OAAOoM,CACT,GAEEkiC,EAAY,CACdnpC,KAAM,YACNgoC,OAAQ,SAAgB5vC,GAEtB,IAAIgxC,EAAuE,iBAArChxC,EAAQgxC,yBAAwChxC,EAAQgxC,yBAA2B,EAAI,EAIzHroC,EAA6B,oBAAX1E,QAA0BA,OAAO2hB,UAAY3hB,OAAO2hB,SAASsa,UAAYj8B,OAAO2hB,SAASsa,SAASp2B,MAAM,0DAE9H,GAAKnB,EAEL,OAAOA,EAASqoC,EAClB,GAgBF,IAAIC,EAAuB,WACzB,SAASA,EAAQ1oC,GACf,IAAIvI,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnF,OAAgBoF,KAAMwxC,GACtBxxC,KAAKH,KAAO,mBACZG,KAAKyxC,UAAY,CAAC,EAClBzxC,KAAKQ,KAAKsI,EAAUvI,EACtB,CAsDA,OArDA,OAAaixC,EAAS,CAAC,CACrB/xC,IAAK,OACLrC,MAAO,SAAc0L,GACnB,IAAIvI,EAAU3F,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E82C,EAAc92C,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvFoF,KAAK8I,SAAWA,EAChB9I,KAAKO,QA9RX,SAAkB8C,GAQhB,OAPA,EAAK1F,KAAK,EAAMA,KAAK/C,UAAW,IAAI,SAAU2E,GAC5C,GAAIA,EACF,IAAK,IAAI0E,KAAQ1E,OACGzE,IAAduI,EAAIY,KAAqBZ,EAAIY,GAAQ1E,EAAO0E,GAGtD,IACOZ,CACT,CAqRqB,CAAS9C,EAASP,KAAKO,SAAW,CAAC,EA3B/C,CACLoxC,MAAO,CAAC,cAAe,SAAU,eAAgB,iBAAkB,YAAa,WAChFlB,kBAAmB,MACnBL,aAAc,UACdU,mBAAoB,aACpBG,qBAAsB,aAEtBW,OAAQ,CAAC,gBACTC,gBAAiB,CAAC,YAqBZ7xC,KAAKO,QAAQuxC,qBAAoB9xC,KAAKO,QAAQ8wC,oBAAsBrxC,KAAKO,QAAQuxC,oBACrF9xC,KAAK0xC,YAAcA,EACnB1xC,KAAK+xC,YAAY7B,GACjBlwC,KAAK+xC,YAAYxB,GACjBvwC,KAAK+xC,YAAY,GACjB/xC,KAAK+xC,YAAYtqB,GACjBznB,KAAK+xC,YAAYb,GACjBlxC,KAAK+xC,YAAYX,GACjBpxC,KAAK+xC,YAAYnvC,GACjB5C,KAAK+xC,YAAYT,EACnB,GACC,CACD7xC,IAAK,cACLrC,MAAO,SAAqB40C,GAC1BhyC,KAAKyxC,UAAUO,EAAS7pC,MAAQ6pC,CAClC,GACC,CACDvyC,IAAK,SACLrC,MAAO,SAAgB60C,GACrB,IAAInwC,EAAQ9B,KACPiyC,IAAgBA,EAAiBjyC,KAAKO,QAAQoxC,OACnD,IAAIO,EAAW,GAQf,OAPAD,EAAezyC,SAAQ,SAAU2yC,GAC/B,GAAIrwC,EAAM2vC,UAAUU,GAAe,CACjC,IAAIhC,EAASruC,EAAM2vC,UAAUU,GAAchC,OAAOruC,EAAMvB,SACpD4vC,GAA4B,iBAAXA,IAAqBA,EAAS,CAACA,IAChDA,IAAQ+B,EAAWA,EAAS3wC,OAAO4uC,GACzC,CACF,IACInwC,KAAK8I,SAASmE,cAAc0S,sBAA8BuyB,EAEvDA,EAASr3C,OAAS,EAAIq3C,EAAS,GAAK,IAC7C,GACC,CACDzyC,IAAK,oBACLrC,MAAO,SAA2B0J,EAAK8qC,GACrC,IAAIlnC,EAAS1K,KACR4xC,IAAQA,EAAS5xC,KAAKO,QAAQqxC,QAC9BA,IACD5xC,KAAKO,QAAQsxC,iBAAmB7xC,KAAKO,QAAQsxC,gBAAgB9uC,QAAQ+D,IAAQ,GACjF8qC,EAAOpyC,SAAQ,SAAU4yC,GACnB1nC,EAAO+mC,UAAUW,IAAY1nC,EAAO+mC,UAAUW,GAAWxyB,kBAAkB9Y,EAAK4D,EAAOnK,QAC7F,IACF,KAEKixC,CACT,CA9D2B,GA+D3BA,EAAQ3xC,KAAO,mB,mHC5Uf,GACEwyC,O,2tBACAC,O,+mCACAC,QAAO,EACPC,K,4tDACAC,Q,yeACAC,M,wvEACArgB,S,4SCPF,GACEggB,O,+bACAC,O,w3BACAC,QAAO,EACPC,K,qvCACAC,Q,2OACAC,M,6oCACArgB,S,oNCPF,GACEggB,O,+bACAC,O,w3BACAC,QAAO,EACPC,K,qvCACAC,Q,2OACAC,M,6oCACArgB,S,mICJFsgB,EAAAA,GAAAA,IACOlE,GACJltB,IAAIqxB,GACJrxB,IAAIyB,EAAAA,IACJxiB,KAAK,CACJ2M,YAAa,KAGb1G,GAAI,CAAC,UACLC,UAAW,SACX/F,OAAO,EACPsQ,cAAa,EACbiS,MAAO,CACL3G,MAAM,EACNgG,aAAa,GAEfrb,UAAW,CACT2rC,GAAIA,EACJC,GAAIA,EACJC,MAAOA,KAIb,MAAeJ,EAAI,G,6BCjBZ,MAAMK,EAA8B,oBAAXxuC,QAA0BA,OAEpDyuC,EAAqB,mCAErBC,EAAa,CACjB9D,OAAQ7mC,2BACR4qC,SAAU5qC,mCACV6qC,YAAa7qC,4CACb8qC,aAAc,iBACdC,MAAO,wBAQF,MAAMd,GAAO,CAClBe,MAAOA,OAEPC,MAAAA,CAAQrrC,EAAMpI,GAAO,IAAD0zC,EAClB,MAAqB,oBAAVjvC,aAAgD,IAAhBA,OAAOkvC,MACzC1zC,KAAKuzC,YAGiB,IAApB/uC,OAAOmvC,YAChBnvC,OAAOmvC,UAZJ,IAAInvC,OAAOkvC,MAAME,QAAQV,SAeO,IAA1B1uC,OAAOmvC,UAAUxrC,GACnBnI,KAAKuzC,OAGPE,EAAAjvC,OAAOmvC,UAAUxrC,IAAMxK,KAAIwB,MAAAs0C,EAAA,CAAEjvC,OAAOmvC,WAASpyC,QAAA8zB,EAAAA,EAAAA,GAAKt1B,KAC3D,EAEA8zC,KAAAA,GAAS,OAAO7zC,KAAKwzC,OAAQ,QAAS54C,UAAY,EAClDk5C,SAAAA,GAAa,OAAO9zC,KAAKwzC,OAAQ,YAAa54C,UAAY,EAC1Dm5C,cAAAA,GAAkB,OAAO/zC,KAAKwzC,OAAQ,iBAAkB54C,UAAY,EACpEo5C,YAAAA,GAAgB,OAAOh0C,KAAKwzC,OAAQ,eAAgB54C,UAAY,EAChEq5C,SAAAA,GAAa,OAAOj0C,KAAKwzC,OAAQ,YAAa54C,UAAY,EAC1Ds5C,MAAAA,GAAU,OAAOl0C,KAAKwzC,OAAQ,SAAU54C,UAAY,GAG/C,IAAIu5C,GAAc,KAEzB,MAAMC,GAASA,KAAMtZ,EAAAA,EAAAA,UAAU,IAAqB,OAAlB6X,EAAKzpC,SAAoB,GAAKypC,EAAKzpC,YAE/DmrC,GAAS,CACbC,aAAa,EACbC,SAAS,EACTC,WAAW,GAGb,IAAIC,GAAO,CAAC,EAGL,MAAMC,GAAkBA,KAC7B,GAAK1B,EAIL,MAA8C,SAAvCpC,aAAalpB,QAAQ,aAAwB,EAGzCmsB,GAAQA,CAACc,EAAUC,EAAUC,KACnC7B,IAIP5yC,QAAQN,IAAK0yC,IACXA,GAAKqB,MAAM,CACTiB,MAAO7B,EACP0B,WACAC,aACC94B,IACD,MAAMi5B,EAAaj5B,EAAIk5B,YAAY9hC,OAAS4I,EAAIk5B,YAAY9hC,MAAMrY,OAAS,GAAKihB,EAAIk5B,YAAY9hC,MAAM,GAAG8rB,SAAYljB,EAAIk5B,aAAe,GACxIH,EAASE,EAAU,IACnB,EAGSE,GAAqBJ,IAC3B7B,GAGLR,GAAKsB,UAAU,CACbjgB,WAAY,aACX/X,IACD,MAAMi5B,EAAaj5B,EAAIk5B,YAAY9hC,OAAS4I,EAAIk5B,YAAY9hC,MAAMrY,OAAS,GAAKihB,EAAIk5B,YAAY9hC,MAAM,GAAG8rB,SAAYljB,EAAIk5B,aAAe,GACxIH,EAASE,EAAU,GACnB,EAGSG,GAAkBL,IACzB7B,GACJR,GAAKsB,UAAU,CAAEjgB,WAAY,UAAW/X,IACtC1b,QAAQN,IAAIgc,EAAI,GAChB,EAGSq5B,GAASA,CAACC,EAAOR,EAAUS,EAAWC,EAAUC,EAASC,EAAMC,EAAgBC,EAAeb,KACpG7B,GAGLR,GAAK3lB,SAAS8oB,eAAe,CACzB9hB,WAAYof,EACZmC,MAAOA,EACPR,SAAUA,EACVgB,cAAe,CACbP,UAAWA,EACXC,SAAUA,EACVC,QAASA,EACTC,KAAMA,EAGNE,cAAeA,EAAgBA,EAActuC,WAAa,GAC1DquC,eAAgBA,EAAiBA,EAAeruC,WAAa,MAEhE0U,IACD,GAAGA,EAAK,CACN1b,QAAQN,IAAIgc,GACZ,MAAMi5B,EAAaj5B,EAAIk5B,aAAel5B,EAAIk5B,YAAY9hC,OAAS4I,EAAIk5B,YAAY9hC,MAAMrY,OAAS,GAAKihB,EAAIk5B,YAAY9hC,MAAM,GAAG8rB,SAAYljB,EAAIk5B,aAAe,GAC3JH,EAASE,EACX,IACA,EAGSc,GAAgBA,CAACT,EAAOU,KACnCtD,GAAKuB,eAAe,CAClBlgB,WAAYof,EACZmC,UACC,CAACt5B,EAAK1Z,KACJA,GACD0zC,EAAiB1zC,EACnB,GACA,EAGE2zC,GAAa,SAACthB,GAAa,YAAX,IAAFA,IAAAA,EAAKA,QAAa,CAAC3Y,EAAKk6B,KAC1C,GAAIl6B,EACF2Y,SAIF,GAAIuhB,GAAcA,EAAW1B,aAAe0B,EAAWzB,QAAS,CAC9D,IAAKvB,EACH,OAIF,IAAIwB,EAAmC,IAAvBwB,EAAWC,WAAmB,IAAIhjB,MAAOwc,UAEzD4E,GAAOC,YAAc0B,EAAW1B,YAChCD,GAAOE,QAAUyB,EAAWzB,QAC5BF,GAAOG,UAAYA,EAEnBC,GAAOuB,EAAWE,eAElBC,GAAY1hB,GAEZmc,aAAahpB,QAAQ,OAAQ/P,KAAKU,UAAUk8B,KAC5C7D,aAAahpB,QAAQ,cAAc,EAErC,EACD,EAoBYuuB,GAAc,SAAC1hB,QAAE,IAAFA,IAAAA,EAAKA,QAC/B+d,GAAKwB,aAAa,CAChBoC,SAAU7tC,wCACV+qC,MAAO,mDACN,CAACx3B,EAAKk6B,KAEJl6B,EACD2Y,KAGF0f,GAAcnB,EAAY,IAAIxuC,OAAOkvC,MAAM2C,WAAW,CACpDjH,OAAQ7mC,2BACR+tC,MAAON,EAAW1B,cACf,KACDH,GAIJA,GAAYoC,QAAQP,EAAWE,eAAeM,KAAK,CAAC16B,EAAKpW,KACvD,GAAGA,IACDkrC,aAAahpB,QAAQ,OAAQ/P,KAAKU,UAAU7S,IACzCA,KAAYA,EAAOkwC,gBAAkBlwC,EAAOkwC,cAAcP,YAAY,CACvE,MAAMoB,EAAe,CACnBjB,KAAM,GACND,QAAS,GACTF,UAAW3vC,EAAOgxC,YAAc,GAChCpB,SAAU5vC,EAAOixC,aAAe,GAChCjB,cAAe,OACfD,eAAgB,QAElBmB,GAAeH,EAAchiB,EAC/B,CAECA,GAAIA,GAAI,IAlBXA,IAmBA,GAEN,EAEamiB,GAAiBA,CAACH,EAAchiB,KAC3C,MAAMggB,EAAOoC,KACb1C,GAAY2C,kBAAkBrC,EAAKsC,QAASN,GAAc,CAAC36B,EAAKpW,MAC1DoW,GAAOpW,GACTkrC,aAAahpB,QAAQ,OAAQ/P,KAAKU,UAAU7S,IAE3C+uB,GAAIA,GAAI,GACX,EAGSuiB,GAAuBA,KAClC,IAAKhE,EACH,OAEF,MAAMiE,EAAqBrG,aAAalpB,QAAQ,sBAChD8qB,GAAKyB,UAAU8B,GAAWkB,EAAqB,MAAOnc,EAAAA,EAAAA,UAASmc,EAAmB,EAAI7C,IAAQ,EAGnFyC,GAAaA,KACxB,GAAK7D,EAIL,OAAOn7B,KAAK3J,MAAM0iC,aAAalpB,QAAQ,QAAQ,EAGpCwsB,GAASA,KACflB,IAILpC,aAAahpB,QAAQ,cAAc,GACnC4qB,GAAK0B,SAAQ,EACd,IAEKlT,GAAY,SAAAnc,GAChB,SAAAmc,EAAYvb,GAAQ,IAAD3jB,EAM2C,OAL5DA,EAAA+iB,EAAAlnB,KAAA,KAAM8nB,IAAM,MAQdyxB,mBAAqB,KACnBp1C,EAAKu7B,SAAS,CAAE8Z,SAAS,GAAQ,EARjCr1C,EAAKmZ,MAAQ,CACXk8B,SAAS,GAGXr1C,EAAKo1C,mBAAqBp1C,EAAKo1C,mBAAmBl5C,MAAIo5C,EAAAA,EAAAA,GAAAt1C,IAAMA,CAC9D,EARgBm0B,EAAAA,EAAAA,GAAA+K,EAAAnc,GAQf,IAAAqB,EAAA8a,EAAAhkC,UA+DA,OA/DAkpB,EAMDmxB,0BAAA,WA6BE,EACDnxB,EAEDG,kBAAA,WAzIwBjL,KACxB,IAAKs5B,KAAmB,OAAOt5B,IAU/Bo3B,GAAKwB,aAAa,CAChBoC,SAAU7tC,wCACV+qC,MAAO,wBACNyC,GAAW36B,GAAU,EA4HtBk8B,CAAWt3C,KAAKk3C,oBACK,oBAAX1yC,QAA0BA,OAAO+yC,WAAaC,EAAAA,IACtDC,IAAa,CACXC,cAAe,KACfC,SAAU,IAEVC,kBAAmB,GACnBC,gBAAiB,EAEjBC,gBAAmB,EACnBC,WAAmB,EACnBC,eAAmB,GAGzB,EAAC9xB,EACDY,OAAA,WACE,OACG9mB,KAAKib,MAAMk8B,SACVvzB,EAAAA,cAAAA,EAAAA,SAAA,KACG5jB,KAAKylB,MAAMuB,SAKpB,EAACga,CAAA,CAvEe,CAASpd,EAAAA,U,qHClRpB,MACM4zB,EAAoB,IACpBS,EAAmB,KACnBC,EAAoB,I,uBCHjC,OAeA,WACI,GAAwB,oBAAbr8C,SAAX,CAMJ,IAmCIyuC,EACApoC,EACAi2C,EAEAC,EAwbI94C,EAQJ+4C,EAveAr2B,EAAiB,CAGjBs2B,UAAmB,IACnBZ,cAAmB,IACnBC,SAAmB,IAInBG,gBAAmB,EACnBC,WAAmB,EACnBC,eAAmB,EAGnBJ,kBAAoB,GACpBC,gBAAoB,EAGpBU,iBAAoB,EACpBC,YAAoB,GAGpBC,iBAAoB,EACpBC,SAAoB,IAGpBn4C,EAAUyhB,EAIV22B,GAAa,EACbC,GAAU,EACVC,EAAY,CAAE5K,EAAG,EAAG6K,EAAG,GACvBC,GAAY,EACZ9Y,EAAOpkC,SAAS+jC,gBAIhBoZ,EAAc,GAEdC,EAAQ,OAAOhvC,KAAKxF,UAAUy0C,UAE9Bz5C,EAAM,CAAEwhC,KAAM,GAAIkY,GAAI,GAAIC,MAAO,GAAIC,KAAM,GAAIC,SAAU,GACjDC,OAAQ,GAAIC,SAAU,GAAIC,IAAK,GAAIC,KAAM,IACjDC,EAAY,CAAE,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAmHvCC,EAAM,GACNt+B,GAAU,EACVu+B,EAAa5mB,KAAKiP,MA6TlB4X,GACIx6C,EAAI,EACD,SAAU0gC,GACb,OAAOA,EAAG8Z,WAAa9Z,EAAG8Z,SAAWx6C,IACzC,GAGAy6C,EAAS,CAAC,EACVC,EAAS,CAAC,EAEVC,EAA2B,CAAC,EA0GhC,GAAIz1C,OAAOosC,cAAgBA,aAAasJ,eACpC,IACIlB,EAAcpI,aAAasJ,eAAen4C,MAAM,IACpD,CAAE,MAAOyD,IAAK,CA8ClB,IAcM20C,EAdFC,EACU51C,OAAO2gB,uBACP3gB,OAAO61C,6BACP71C,OAAO81C,0BACP,SAAUl/B,EAAUgM,EAASmzB,GAC1B/1C,OAAOkY,WAAWtB,EAAUm/B,GAAU,IAAK,GAC/C,EAGTC,EAAoBh2C,OAAOg2C,kBACPh2C,OAAOi2C,wBACPj2C,OAAOk2C,oBAE3BC,GACER,EAAct+C,SAAS++C,iBACpB,WACL,IAAKT,EAAa,CAChB,IAAIU,EAAQh/C,SAASO,cAAc,OACnCy+C,EAAMhiC,MAAMiiC,QAAU,4BACtBj/C,SAASk/C,KAAKp+C,YAAYk+C,GAC1B,IAAIG,EAAiBn/C,SAASk/C,KAAKvyB,UACd3sB,SAAS+jC,gBAAgBpX,UAC9ChkB,OAAOy2C,SAAS,EAAG,GAEhBd,EADCt+C,SAASk/C,KAAKvyB,WAAawyB,EACdn/C,SAASk/C,KAETl/C,SAAS+jC,gBAC1Bp7B,OAAOy2C,SAAS,GAAI,GACpBp/C,SAASk/C,KAAKxjB,YAAYsjB,EAC5B,CACA,OAAOV,CACT,GA8CEx1C,EAAYH,OAAOC,UAAUE,UAC7Bu2C,EAAY,OAAOjxC,KAAKtF,GACxBw2C,EAAY,UAAUlxC,KAAKtF,KAAeu2C,EAC1CE,EAAY,UAAUnxC,KAAKtF,KAAeu2C,EAC1CG,EAAY,WAAWpxC,KAAKtF,KAAeu2C,EAC3CI,EAAY,UAAUrxC,KAAKtF,GAC3B42C,EAAY,kBAAkBtxC,KAAKtF,IAAc,SAASsF,KAAKtF,GAC/D62C,EAAcJ,IAAa,cAAcnxC,KAAKtF,IAAc,cAAcsF,KAAKtF,IAC/E82C,GAAuBN,GAAYC,GAAYG,GAAYF,KAAeC,EAE1EI,GAAkB,EACtB,IACEl3C,OAAO+hB,iBAAiB,OAAQ,KAAMtpB,OAAOM,eAAe,CAAC,EAAG,UAAW,CACzE0mB,IAAK,WACGy3B,GAAkB,CACtB,IAER,CAAE,MAAMl2C,IAAI,CAEZ,IAAIm2C,IAAWD,GAAkB,CAAEE,SAAS,GACxCC,EAAa,YAAahgD,SAASO,cAAc,OAAS,QAAU,aAEpEy/C,GAAcJ,IAEdK,GAASD,EAAYE,EAAOJ,GAC5BG,GAAS,YAAaE,GACtBF,GAAS,OAAQt7C,IAarBi3C,GAAawE,QAtmBb,WACI/5C,GAAYA,EAASg6C,aACrBC,GAAYN,EAAYE,GACxBI,GAAY,YAAaH,GACzBG,GAAY,UAAWC,GACvBD,GAAY,SAAUhE,GACtBgE,GAAY,OAAQ37C,EACxB,EAimBIgE,OAAO63C,qBACP5E,GAAajzC,OAAO63C,0BAKnB,KAFDC,EAAAA,WACI,OAAO7E,EACV,+BAlwBD,CAiEJ,SAASj3C,IAEL,IAAIu4C,GAAal9C,SAASk/C,KAA1B,CAEAhC,GAAW,EAEX,IAAIgC,EAAOl/C,SAASk/C,KAChBwB,EAAO1gD,SAAS+jC,gBAChB4c,EAAeh4C,OAAOi4C,YACtBC,EAAe3B,EAAK2B,aASxB,GANAzc,EAAQpkC,SAAS8gD,WAAW55C,QAAQ,QAAU,EAAKw5C,EAAOxB,EAC1DzQ,EAAgByQ,EArBZx6C,EAAQg4C,iBACRuD,GAAS,UAAWM,GAyBpBriB,KAAOr8B,KACPk7C,GAAU,OAST,GAAI4C,GACAkB,EAAeF,IACfzB,EAAK6B,cAAgBJ,GACrBD,EAAKK,cAAgBJ,GAAe,CAEzC,IAOIK,EAPAC,EAAejhD,SAASO,cAAc,OAC1C0gD,EAAajkC,MAAMiiC,QAAU,qEAEC7a,EAAKyc,aAAe,KAClD7gD,SAASk/C,KAAKp+C,YAAYmgD,GAI1B3E,EAAc,WACN0E,IACJA,EAAiBngC,YAAW,WACpBi8B,IACJmE,EAAajkC,MAAMohB,OAAS,IAC5B6iB,EAAajkC,MAAMohB,OAASgG,EAAKyc,aAAe,KAChDG,EAAiB,KACrB,GAAG,KACP,EAEAngC,WAAWy7B,EAAa,IAExB2D,GAAS,SAAU3D,GAanB,IAHAj2C,EAAW,IAAIs4C,EAAiBrC,IACvB4E,QAAQhC,EARJ,CACT9iB,YAAY,EACZ+kB,WAAW,EACXC,eAAe,IAOfhd,EAAK2c,cAAgBJ,EAAc,CACnC,IAAIU,EAAWrhD,SAASO,cAAc,OACtC8gD,EAASrkC,MAAMskC,MAAQ,OACvBpC,EAAKp+C,YAAYugD,EACrB,CACJ,CAGK38C,EAAQk4C,iBAAoBE,IAC7BoC,EAAKliC,MAAMukC,qBAAuB,SAClCb,EAAK1jC,MAAMukC,qBAAuB,SA1EA,CA4E1C,CA0BA,SAASC,EAAYrlC,EAAMipB,EAAMlH,GAiajC,IAAwBkU,EAAG6K,EA7ZvB,GA8ZA7K,GADoBA,EA/ZLhN,GAgaN,EAAK,GAAK,EACnB6X,GAFuBA,EA/ZF/e,GAiaZ,EAAK,GAAK,GACf8e,EAAU5K,IAAMA,GAAK4K,EAAUC,IAAMA,KACrCD,EAAU5K,EAAIA,EACd4K,EAAUC,EAAIA,EACdc,EAAM,GACNC,EAAa,GApac,GAA3Bt5C,EAAQs3C,gBAAsB,CAC9B,IACIyF,EADMrqB,KAAKiP,MACK2X,EACpB,GAAIyD,EAAU/8C,EAAQq3C,kBAAmB,CACrC,IAAI2F,GAAU,EAAK,GAAKD,GAAY,EAChCC,EAAS,IACTA,EAAS/oC,KAAKgpC,IAAID,EAAQh9C,EAAQs3C,iBAClC5W,GAAQsc,EACRxjB,GAAQwjB,EAEhB,CACA1D,EAAa5mB,KAAKiP,KACtB,CAYA,GATA0X,EAAI16C,KAAK,CACL+uC,EAAGhN,EACH6X,EAAG/e,EACH0jB,MAAQxc,EAAO,EAAK,KAAQ,IAC5Byc,MAAQ3jB,EAAO,EAAK,KAAQ,IAC5B4jB,MAAO1qB,KAAKiP,SAIZ5mB,EAAJ,CAIA,IAAIsiC,EAAajD,IACbkD,EAAkB7lC,IAAS4lC,GAAc5lC,IAASnc,SAASk/C,KAInC,MAAxB/iC,EAAK8lC,iBAkWb,SAAgC9d,GAC5B,IAAIhI,EAAK8hB,EAAS9Z,GAClB,GAAoC,MAAhCia,EAAyBjiB,GAAa,CACtC,IAAI+lB,EAAiBC,iBAAiBhe,EAAI,IAAI,mBAC9Cia,EAAyBjiB,GAAO,UAAY+lB,CAChD,CACA,OAAO9D,EAAyBjiB,EACpC,CAzWwCimB,CAAuBjmC,KACvDA,EAAK8lC,gBAAkB9lC,EAAKa,MAAMklC,eAClC/lC,EAAKa,MAAMklC,eAAiB,QAGhC,IAAIG,EAAO,SAAUC,GAMjB,IAJA,IAAIjc,EAAMjP,KAAKiP,MACXkc,EAAU,EACVl5B,EAAU,EAEL5lB,EAAI,EAAGA,EAAIs6C,EAAI/+C,OAAQyE,IAAK,CAEjC,IAAI++C,EAAOzE,EAAIt6C,GACXg+C,EAAWpb,EAAMmc,EAAKV,MACtBW,EAAYhB,GAAW/8C,EAAQm3C,cAG/BpyB,EAAYg5B,EAAY,EAAIhB,EAAU/8C,EAAQm3C,cAG9Cn3C,EAAQu3C,iBACRxyB,EAAWi5B,GAAMj5B,IAIrB,IAAI2oB,EAAKoQ,EAAKpQ,EAAI3oB,EAAW+4B,EAAKZ,OAAU,EACxC3E,EAAKuF,EAAKvF,EAAIxzB,EAAW+4B,EAAKX,OAAU,EAG5CU,GAAWnQ,EACX/oB,GAAW4zB,EAGXuF,EAAKZ,OAASxP,EACdoQ,EAAKX,OAAS5E,EAGVwF,IACA1E,EAAI/yC,OAAOvH,EAAG,GAAIA,IAE1B,CAGIu+C,EACAr5C,OAAOy2C,SAASmD,EAASl5B,IAGrBk5B,IAASpmC,EAAKwmC,YAAcJ,GAC5Bl5B,IAASlN,EAAKwQ,WAActD,IAI/B+b,GAASlH,IACV6f,EAAM,IAGNA,EAAI/+C,OACJu/C,EAAa8D,EAAMlmC,EAAO,IAAOzX,EAAQ+3C,UAAY,IAErDh9B,GAAU,EAEkB,MAAxBtD,EAAK8lC,kBACL9lC,EAAKa,MAAMklC,eAAiB/lC,EAAK8lC,gBACjC9lC,EAAK8lC,gBAAkB,MAGnC,EAGA1D,EAAa8D,EAAMlmC,EAAM,GACzBsD,GAAU,CA9EV,CA+EJ,CAWA,SAASygC,EAAM/5C,GAEN+2C,GACDv4C,IAGJ,IAAInB,EAAS2C,EAAM3C,OAInB,GAAI2C,EAAMqrC,kBAAoBrrC,EAAMyrC,QAChC,OAAO,EAIX,GAAIgR,GAAWnU,EAAe,UAC1BmU,GAAWp/C,EAAQ,UAAY,SAAS4K,KAAK5K,EAAOq/C,MACpDD,GAAWnU,EAAe,WAC1BjrC,EAAOs/C,WACP,OAAO,EAGX,IAAIC,GAAU58C,EAAM68C,aAAe78C,EAAM48C,QAAU,EAC/CE,GAAU98C,EAAM+8C,aAAe/8C,EAAM88C,QAAU,EAE/C7F,IACIj3C,EAAM68C,aAAeG,GAAYh9C,EAAM68C,YAAa,OACpDD,EAAiB58C,EAAM68C,YAAcrqC,KAAKC,IAAIzS,EAAM68C,cAA1C,KAEV78C,EAAM+8C,aAAeC,GAAYh9C,EAAM+8C,YAAa,OACpDD,EAAiB98C,EAAM+8C,YAAcvqC,KAAKC,IAAIzS,EAAM+8C,cAA1C,MAKbH,GAAWE,IACZA,GAAU98C,EAAMi9C,YAAc,GAIV,IAApBj9C,EAAMk9C,YACNN,GAAU,GACVE,GAAU,IAGd,IAAIK,EAAcC,EAAoB//C,GAGtC,OAAK8/C,IA0QT,SAAoBL,GAChB,IAAKA,EAAQ,OACR9F,EAAYn+C,SACbm+C,EAAc,CAAC8F,EAAQA,EAAQA,IAEnCA,EAAStqC,KAAKC,IAAIqqC,GAClB9F,EAAY95C,KAAK4/C,GACjB9F,EAAY71C,QACZm4B,aAAa8c,GACbA,EAAmB17B,YAAW,WAC1B,IACIk0B,aAAasJ,eAAiBlB,EAAY7yC,KAAK,IACnD,CAAE,MAAOX,IAAK,CAClB,GAAG,KACH,IAAI65C,EAAsBP,EAAS,KAAOQ,GAAqBR,GAC3DS,GAAMD,GAAqB,OAASA,GAAqB,OAASD,EACtE,OAAIP,EAAS,IACNS,CACX,CAhRQC,CAAWV,KAOXtqC,KAAKC,IAAImqC,GAAU,MACnBA,GAAUr+C,EAAQo3C,SAAW,KAE7BnjC,KAAKC,IAAIqqC,GAAU,MACnBA,GAAUv+C,EAAQo3C,SAAW,KAGjC0F,EAAY8B,EAAaP,EAAQE,GACjC98C,EAAMypC,sBACNgU,MAzBQ7G,IAAWuC,IAEXl+C,OAAOM,eAAeyE,EAAO,SAAU,CAAC5E,MAAOoH,OAAOk7C,eAC/CC,OAAO5D,MAAM/5C,GAuBhC,CAMA,SAASo6C,EAAQp6C,GAEb,IAAI3C,EAAW2C,EAAM3C,OACjBugD,EAAW59C,EAAMyrC,SAAWzrC,EAAMwrC,QAAUxrC,EAAMurC,SACvCvrC,EAAM0rC,UAAY1rC,EAAM69C,UAAYpgD,EAAI65C,SAGlDz9C,SAASk/C,KAAK1Q,SAASC,KACxBA,EAAgBzuC,SAASyuC,eAO7B,IACIwV,EAAc,qDAClB,GAAK99C,EAAMqrC,kBAFU,oCAGDpjC,KAAK5K,EAAO04B,WAC3B0mB,GAAWp/C,EAAQ,WAAaygD,EAAY71C,KAAK5K,EAAOQ,OACxD4+C,GAAWnU,EAAe,UAiPnC,SAA8BtoC,GAC1B,IAAIgW,EAAOhW,EAAM3C,OACb0gD,GAAY,EAChB,IAAuD,GAAnDlkD,SAAS+vB,IAAI7oB,QAAS,yBACtB,GAGI,GAFAg9C,EAAa/nC,EAAKgoC,WACLhoC,EAAKgoC,UAAU3V,SAAS,wBACtB,YACTryB,EAAOA,EAAK8W,YAE1B,OAAOixB,CACX,CA3PSE,CAAqBj+C,IACrB3C,EAAO6gD,mBACPN,EACH,OAAO,EAIT,IAAKnB,GAAWp/C,EAAQ,WACnBo/C,GAAWp/C,EAAQ,UAAYygD,EAAY71C,KAAK5K,EAAOQ,QACxDmC,EAAM69C,UAAYpgD,EAAI65C,SACxB,OAAO,EAIT,GAAImF,GAAWp/C,EAAQ,UAA2B,SAAfA,EAAOQ,MACtC85C,EAAU33C,EAAM69C,SAClB,OAAO,EAGT,IAAW5R,EAAI,EAAG6K,EAAI,EAClBqG,EAAcC,EAAoB9U,GAEtC,IAAK6U,EAGD,OAAQvG,IAAWuC,GAAYwE,OAAOvD,QAAQp6C,GAGlD,IAAIm+C,EAAehB,EAAYgB,aAM/B,OAJIhB,GAAetjD,SAASk/C,OACxBoF,EAAe37C,OAAOi4C,aAGlBz6C,EAAM69C,SACV,KAAKpgD,EAAI05C,GACLL,GAAKv4C,EAAQi4C,YACb,MACJ,KAAK/4C,EAAI45C,KACLP,EAAIv4C,EAAQi4C,YACZ,MACJ,KAAK/4C,EAAI65C,SAELR,IADQ92C,EAAM0rC,SAAW,GAAK,GACjByS,EAAe,GAC5B,MACJ,KAAK1gD,EAAI85C,OACLT,EAAoB,IAAfqH,EACL,MACJ,KAAK1gD,EAAI+5C,SACLV,EAAmB,GAAfqH,EACJ,MACJ,KAAK1gD,EAAIi6C,KACDyF,GAAetjD,SAASk/C,MAAQl/C,SAAS++C,mBACzCuE,EAActjD,SAAS++C,kBAC3B9B,GAAKqG,EAAY32B,UACjB,MACJ,KAAK/oB,EAAIg6C,IACL,IACI2G,EADSjB,EAAYzC,aAAeyC,EAAY32B,UACrB23B,EAC/BrH,EAAKsH,EAAkB,EAAKA,EAAkB,GAAK,EACnD,MACJ,KAAK3gD,EAAIwhC,KACLgN,GAAK1tC,EAAQi4C,YACb,MACJ,KAAK/4C,EAAI25C,MACLnL,EAAI1tC,EAAQi4C,YACZ,MACJ,QACI,OAAO,EAGf6E,EAAY8B,EAAalR,EAAG6K,GAC5B92C,EAAMypC,iBACNgU,GACJ,CAKA,SAASzD,EAAUh6C,GACfsoC,EAAgBtoC,EAAM3C,MAC1B,CAqBA,SAASogD,IACLnkB,aAAa+c,GACbA,EAAkBgI,aAAY,WAC1BtG,EAASC,EAASC,EAA2B,CAAC,CAClD,GAAG,IACP,CAEA,SAASqG,EAASC,EAAOpB,EAAalR,GAElC,IADA,IAAI31B,EAAQ21B,EAAI8L,EAASC,EAChB16C,EAAIihD,EAAM1lD,OAAQyE,KACvBgZ,EAAMwhC,EAASyG,EAAMjhD,KAAO6/C,EAChC,OAAOA,CACX,CAEA,SAASqB,EAASxgB,EAAIiO,GAClB,OAAQA,EAAI8L,EAASC,GAAQF,EAAS9Z,GAC1C,CASA,SAASof,EAAoBpf,GACzB,IAAIugB,EAAQ,GACRxF,EAAOl/C,SAASk/C,KAChB0F,EAAmBxgB,EAAKyc,aAC5B,EAAG,CACC,IAAIgE,EAASF,EAASxgB,GAAI,GAC1B,GAAI0gB,EACA,OAAOJ,EAASC,EAAOG,GAG3B,GADAH,EAAMrhD,KAAK8gC,GACPygB,IAAqBzgB,EAAG0c,aAAc,CACtC,IACIiE,EADwBC,GAAkB3gB,IAAS2gB,GAAkB7F,IAC5B8F,GAAqB5gB,GAClE,GAAI2Y,GAAWkI,EAAqB7gB,KAChC2Y,GAAW+H,EACX,OAAOL,EAASC,EAAO5F,IAE/B,MAAO,GAAImG,EAAqB9gB,IAAO6gB,GAAqB7gB,GACxD,OAAOsgB,EAASC,EAAOvgB,EAE/B,OAAUA,EAAKA,EAAG+gB,cACtB,CAEA,SAASD,EAAqB9gB,GAC1B,OAAQA,EAAGmgB,aAAe,GAAKngB,EAAG0c,YACtC,CAGA,SAASkE,GAAkB5gB,GAEvB,MAAqB,WADNge,iBAAiBhe,EAAI,IAAIghB,iBAAiB,aAE7D,CAGA,SAASH,GAAqB7gB,GAC1B,IAAI7F,EAAW6jB,iBAAiBhe,EAAI,IAAIghB,iBAAiB,cACzD,MAAqB,WAAb7mB,GAAsC,SAAbA,CACrC,CAiBA,SAAS2hB,GAASj8C,EAAMwY,EAAI4oC,GACxBz8C,OAAO+hB,iBAAiB1mB,EAAMwY,EAAI4oC,IAAO,EAC7C,CAEA,SAAS9E,GAAYt8C,EAAMwY,EAAI4oC,GAC3Bz8C,OAAOmiB,oBAAoB9mB,EAAMwY,EAAI4oC,IAAO,EAChD,CAEA,SAASxC,GAAWze,EAAIkhB,GACpB,OAAOlhB,IAAOA,EAAGjI,UAAU,IAAI9sB,gBAAkBi2C,EAAIj2C,aACzD,CAuCA,SAAS+zC,GAAYzsC,EAAG4uC,GACpB,OAAQ3sC,KAAKm7B,MAAMp9B,EAAI4uC,IAAY5uC,EAAI4uC,CAC3C,CAEA,SAAS7B,GAAqB6B,GAC1B,OAAQnC,GAAYhG,EAAY,GAAImI,IAC5BnC,GAAYhG,EAAY,GAAImI,IAC5BnC,GAAYhG,EAAY,GAAImI,EACxC,CA4DA,SAASC,GAAOnT,GACZ,IAAIx3B,EAAKknC,EAaT,OAXA1P,GAAQ1tC,EAAQw3C,YACR,EACJthC,EAAMw3B,GAAK,EAAIz5B,KAAK6sC,KAAKpT,KAKzBA,GAAK,EAELx3B,GAJAknC,EAAQnpC,KAAK6sC,KAAK,KAGX,EAAI7sC,KAAK6sC,KAAKpT,KACE,EAAI0P,IAExBlnC,EAAMlW,EAAQy3C,cACzB,CAEA,SAASuG,GAAMtQ,GACX,OAAIA,GAAK,EAAU,EACfA,GAAK,EAAU,GAEW,GAA1B1tC,EAAQy3C,iBACRz3C,EAAQy3C,gBAAkBoJ,GAAO,IAE9BA,GAAOnT,GAClB,CAyCA,SAASwJ,GAAa6J,GAClB,IAAK,IAAI7hD,KAAO6hD,EACRt/B,EAAe5e,eAAe3D,KAC9Bc,EAAQd,GAAO6hD,EAAa7hD,GACxC,CAeC,CA5wBD,E,gCCiCAyI,EAAOzN,QA5BS,SAAS8mD,EAAWvsC,EAAQjM,EAAGi0B,EAAGpzB,EAAG43C,EAAGh8C,EAAGqR,GAOzD,IAAK0qC,EAAW,CACd,IAAIphD,EACJ,QAAerF,IAAXka,EACF7U,EAAQ,IAAIif,MACV,qIAGG,CACL,IAAIrf,EAAO,CAACgJ,EAAGi0B,EAAGpzB,EAAG43C,EAAGh8C,EAAGqR,GACvB4qC,EAAW,GACfthD,EAAQ,IAAIif,MACVpK,EAAOhS,QAAQ,OAAO,WAAa,OAAOjD,EAAK0hD,IAAa,MAExDt5C,KAAO,qBACf,CAGA,MADAhI,EAAMuhD,YAAc,EACdvhD,CACR,CACF,C,mBCxCA+H,EAAOzN,QANP,SAAgCiD,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIiqC,eAAe,6DAE3B,OAAOjqC,CACT,EACyCwK,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,mBCD9GyN,EAAOzN,QALP,SAAyB2mB,EAAUsmB,GACjC,KAAMtmB,aAAoBsmB,GACxB,MAAM,IAAI3qC,UAAU,oCAExB,EACkCmL,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,uBCLvG,IAAIknD,EAAgB,EAAQ,MAC5B,SAASC,EAAkBviD,EAAQomB,GACjC,IAAK,IAAInmB,EAAI,EAAGA,EAAImmB,EAAM5qB,OAAQyE,IAAK,CACrC,IAAIuiD,EAAap8B,EAAMnmB,GACvBuiD,EAAW5iD,WAAa4iD,EAAW5iD,aAAc,EACjD4iD,EAAWvkD,cAAe,EACtB,UAAWukD,IAAYA,EAAWxkD,UAAW,GACjDJ,OAAOM,eAAe8B,EAAQsiD,EAAcE,EAAWpiD,KAAMoiD,EAC/D,CACF,CASA35C,EAAOzN,QARP,SAAsBitC,EAAaoa,EAAYC,GAM7C,OALID,GAAYF,EAAkBla,EAAY1qC,UAAW8kD,GACrDC,GAAaH,EAAkBla,EAAaqa,GAChD9kD,OAAOM,eAAemqC,EAAa,YAAa,CAC9CrqC,UAAU,IAELqqC,CACT,EAC+Bx/B,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,uBClBpG,IAAIknD,EAAgB,EAAQ,MAe5Bz5C,EAAOzN,QAdP,SAAyB4I,EAAK5D,EAAKrC,GAYjC,OAXAqC,EAAMkiD,EAAcliD,MACT4D,EACTpG,OAAOM,eAAe8F,EAAK5D,EAAK,CAC9BrC,MAAOA,EACP6B,YAAY,EACZ3B,cAAc,EACdD,UAAU,IAGZgG,EAAI5D,GAAOrC,EAENiG,CACT,EACkC6E,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,uBCfvG,IAAI+C,EAAiB,EAAQ,MAM7B0K,EAAOzN,QALP,SAAwBoC,EAAUC,GAChCD,EAASG,UAAYC,OAAOC,OAAOJ,EAAWE,WAC9CH,EAASG,UAAUG,YAAcN,EACjCW,EAAeX,EAAUC,EAC3B,EACiCoL,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,mBCDtGyN,EAAOzN,QALP,SAAgC4I,GAC9B,OAAOA,GAAOA,EAAIjI,WAAaiI,EAAM,CACnC,QAAWA,EAEf,EACyC6E,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,mBCL9G,SAASunD,EAAgBlkD,EAAGoI,GAK1B,OAJAgC,EAAOzN,QAAUunD,EAAkB/kD,OAAOO,eAAiBP,OAAOO,eAAeQ,OAAS,SAAyBF,EAAGoI,GAEpH,OADApI,EAAEG,UAAYiI,EACPpI,CACT,EAAGoK,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,QACjEunD,EAAgBlkD,EAAGoI,EAC5B,CACAgC,EAAOzN,QAAUunD,EAAiB95C,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,uBCPvG,IAAIwnD,EAAU,gBAWd/5C,EAAOzN,QAVP,SAAsBC,EAAOwnD,GAC3B,GAAuB,WAAnBD,EAAQvnD,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIynD,EAAOznD,EAAM0nD,OAAOC,aACxB,QAAavnD,IAATqnD,EAAoB,CACtB,IAAI//C,EAAM+/C,EAAKxkD,KAAKjD,EAAOwnD,GAAQ,WACnC,GAAqB,WAAjBD,EAAQ7/C,GAAmB,OAAOA,EACtC,MAAM,IAAIrF,UAAU,+CACtB,CACA,OAAiB,WAATmlD,EAAoBh+C,OAASsO,QAAQ9X,EAC/C,EAC+BwN,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,uBCXpG,IAAIwnD,EAAU,gBACVI,EAAc,EAAQ,MAK1Bn6C,EAAOzN,QAJP,SAAwBwmD,GACtB,IAAIxhD,EAAM4iD,EAAYpB,EAAK,UAC3B,MAAwB,WAAjBgB,EAAQxiD,GAAoBA,EAAMyE,OAAOzE,EAClD,EACiCyI,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,mBCNtG,SAASwnD,EAAQ5+C,GAGf,OAAQ6E,EAAOzN,QAAUwnD,EAAU,mBAAqBG,QAAU,iBAAmBA,OAAOE,SAAW,SAAUj/C,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB++C,QAAU/+C,EAAIlG,cAAgBilD,QAAU/+C,IAAQ++C,OAAOplD,UAAY,gBAAkBqG,CAC1H,EAAG6E,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,QAAUwnD,EAAQ5+C,EAC5F,CACA6E,EAAOzN,QAAUwnD,EAAS/5C,EAAOzN,QAAQW,YAAa,EAAM8M,EAAOzN,QAAiB,QAAIyN,EAAOzN,O,kCCP/FwC,OAAOM,eAAe9C,EAAS,aAA/B,CAA+C2C,OAAO,IA6CtD3C,EAAQ8nD,YAVY,iBAWpB9nD,EAAQgC,iBAHkB+lD,GAvCJ,EAACA,EAAQC,KAC3B,MAAM,QAAE/mD,EAAU,MAAOgnD,GAAmBF,GAAU,CAAC,EACjDG,EAAY9qC,KAAKU,UAAUmqC,GAAgB,CAACp/C,EAAGwE,KAChC,mBAANA,IACPA,EAAI5D,OAAO4D,IACL6jB,WAAWroB,EAAI,OACjBwE,EAAI,YAAcA,GAGnBA,KAEX,MAAO,CACH,uBACA7K,OAAO0B,KAAK+jD,GAAgB7nD,OAAS,EAC/B,iCAAiC8nD,MACjC,mBACN,kBACAjnD,EAAQb,OAAS,EAAI,WAAWgd,KAAKU,UAAU7c,MAAc,GAC7D,oCACA+mD,GACFt8C,KAAK,GAAG,EAmBuBy8C,CAAcJ,EAzC1B,82C,mCCJV,SAASK,EAAkB1kD,EAAK2kD,IAClC,MAAPA,GAAeA,EAAM3kD,EAAItD,UAAQioD,EAAM3kD,EAAItD,QAC/C,IAAK,IAAIyE,EAAI,EAAGyjD,EAAO,IAAI3kD,MAAM0kD,GAAMxjD,EAAIwjD,EAAKxjD,IAAKyjD,EAAKzjD,GAAKnB,EAAImB,GACnE,OAAOyjD,CACT,C,mECJe,SAAS3L,EAAuB15C,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIiqC,eAAe,6DAE3B,OAAOjqC,CACT,C,mECLe,SAAS+pC,EAAgBrmB,EAAUsmB,GAChD,KAAMtmB,aAAoBsmB,GACxB,MAAM,IAAI3qC,UAAU,oCAExB,C,iHCHA,SAAS6kD,EAAkBviD,EAAQomB,GACjC,IAAK,IAAInmB,EAAI,EAAGA,EAAImmB,EAAM5qB,OAAQyE,IAAK,CACrC,IAAIuiD,EAAap8B,EAAMnmB,GACvBuiD,EAAW5iD,WAAa4iD,EAAW5iD,aAAc,EACjD4iD,EAAWvkD,cAAe,EACtB,UAAWukD,IAAYA,EAAWxkD,UAAW,GACjDJ,OAAOM,eAAe8B,GAAQ,OAAcwiD,EAAWpiD,KAAMoiD,EAC/D,CACF,CACe,SAASmB,EAAatb,EAAaoa,EAAYC,GAM5D,OALID,GAAYF,EAAkBla,EAAY1qC,UAAW8kD,GACrDC,GAAaH,EAAkBla,EAAaqa,GAChD9kD,OAAOM,eAAemqC,EAAa,YAAa,CAC9CrqC,UAAU,IAELqqC,CACT,C,kFChBe,SAASub,EAAgB5/C,EAAK5D,EAAKrC,GAYhD,OAXAqC,GAAM,OAAcA,MACT4D,EACTpG,OAAOM,eAAe8F,EAAK5D,EAAK,CAC9BrC,MAAOA,EACP6B,YAAY,EACZ3B,cAAc,EACdD,UAAU,IAGZgG,EAAI5D,GAAOrC,EAENiG,CACT,C,kFCbe,SAAS4yB,EAAep5B,EAAUC,GAC/CD,EAASG,UAAYC,OAAOC,OAAOJ,EAAWE,WAC9CH,EAASG,UAAUG,YAAcN,GACjC,OAAeA,EAAUC,EAC3B,C,oCCLe,SAASomD,EAAiBC,GACvC,GAAsB,oBAAXf,QAAmD,MAAzBe,EAAKf,OAAOE,WAA2C,MAAtBa,EAAK,cAAuB,OAAO/kD,MAAMmuC,KAAK4W,EACtH,C,mECFe,SAASnB,EAAgBlkD,EAAGoI,GAKzC,OAJA87C,EAAkB/kD,OAAOO,eAAiBP,OAAOO,eAAeQ,OAAS,SAAyBF,EAAGoI,GAEnG,OADApI,EAAEG,UAAYiI,EACPpI,CACT,EACOkkD,EAAgBlkD,EAAGoI,EAC5B,C,uICFe,SAASmvB,EAAmBl3B,GACzC,OCJa,SAA4BA,GACzC,GAAIC,MAAMC,QAAQF,GAAM,OAAO,EAAAilD,EAAA,GAAiBjlD,EAClD,CDES,CAAkBA,KAAQ,EAAAG,EAAA,GAAgBH,KAAQ,EAAAI,EAAA,GAA2BJ,IELvE,WACb,MAAM,IAAIpB,UAAU,uIACtB,CFG8F,EAC9F,C,kFGJe,SAASsmD,EAAepC,GACrC,IAAIxhD,ECFS,SAAsB/E,EAAOwnD,GAC1C,GAAuB,YAAnB,OAAQxnD,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIynD,EAAOznD,EAAM0nD,OAAOC,aACxB,QAAavnD,IAATqnD,EAAoB,CACtB,IAAI//C,EAAM+/C,EAAKxkD,KAAKjD,EAAOwnD,GAAQ,WACnC,GAAqB,YAAjB,OAAQ9/C,GAAmB,OAAOA,EACtC,MAAM,IAAIrF,UAAU,+CACtB,CACA,OAAiB,WAATmlD,EAAoBh+C,OAASsO,QAAQ9X,EAC/C,CDPY,CAAYumD,EAAK,UAC3B,MAAwB,YAAjB,OAAQxhD,GAAoBA,EAAMyE,OAAOzE,EAClD,C,oCELe,SAASwiD,EAAQ5+C,GAG9B,OAAO4+C,EAAU,mBAAqBG,QAAU,iBAAmBA,OAAOE,SAAW,SAAUj/C,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB++C,QAAU/+C,EAAIlG,cAAgBilD,QAAU/+C,IAAQ++C,OAAOplD,UAAY,gBAAkBqG,CAC1H,EAAG4+C,EAAQ5+C,EACb,C,+GCPe,SAASigD,EAA4BxlD,EAAGylD,GACrD,GAAKzlD,EAAL,CACA,GAAiB,iBAANA,EAAgB,OAAO,OAAiBA,EAAGylD,GACtD,IAAIhxC,EAAItV,OAAOD,UAAUoK,SAASzJ,KAAKG,GAAG3C,MAAM,GAAI,GAEpD,MADU,WAANoX,GAAkBzU,EAAEX,cAAaoV,EAAIzU,EAAEX,YAAYgL,MAC7C,QAANoK,GAAqB,QAANA,EAAoBnU,MAAMmuC,KAAKzuC,GACxC,cAANyU,GAAqB,2CAA2CtI,KAAKsI,IAAW,OAAiBzU,EAAGylD,QAAxG,CALc,CAMhB,C,+MCPiN,SAASjkD,IAAI,OAAOA,EAAErC,OAAOk1B,OAAOl1B,OAAOk1B,OAAOn0B,OAAO,SAASgL,GAAG,IAAI,IAAIxD,EAAE,EAAEA,EAAE5K,UAAUC,OAAO2K,IAAI,CAAC,IAAI+M,EAAE3X,UAAU4K,GAAG,IAAI,IAAIqE,KAAK0I,EAAEtV,OAAOD,UAAUoG,eAAezF,KAAK4U,EAAE1I,KAAKb,EAAEa,GAAG0I,EAAE1I,GAAG,CAAC,OAAOb,CAAC,EAAE1J,EAAEH,MAAMa,KAAKpF,UAAU,CAAC,SAASmO,EAAEC,GAAG,IAAIxD,EAAEwD,GAAG,IAAIuJ,EAAE,GAAG1I,EAAE,GAAG,MAAM/L,EAAE0H,EAAEzC,QAAQ,MAAM,IAAIjF,IAAI+L,EAAErE,EAAErK,MAAM2C,GAAG0H,EAAEA,EAAErK,MAAM,EAAE2C,IAAI,MAAMwG,EAAEkB,EAAEzC,QAAQ,KAAK,OAAO,IAAIuB,IAAIiO,EAAE/M,EAAErK,MAAMmJ,GAAGkB,EAAEA,EAAErK,MAAM,EAAEmJ,IAAI,CAACwjB,SAAStiB,EAAEslB,OAAO,MAAMvY,EAAE,GAAGA,EAAEqT,KAAK,MAAM/b,EAAE,GAAGA,EAAE,CAAC,MAAMD,EAAE,6BAA6B3H,EAAE+G,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAGY,EAAEK,KAAKjB,GAAX,CAAeA,EAAC,EAAG9C,EAAE,IAAmG,GAAgB,SAASqoC,EAAEvlC,EAAExD,EAAkG,IAAkB,IAAI+M,EAAE,IAAItQ,EAAE+G,GAAG,OAAOA,EAAE,GAAGA,EAAE2iB,WAAW,OAAO3iB,EAAE2iB,WAAW,OAAO,OAAO3iB,EAAE,MAAMa,EAAE,OAAO0I,EAAE,MAAM/M,EAAEA,EAAEU,KAAKqM,EAAE,IAAI,MAAM,GAAG,MAAM1I,GAAGA,EAAE7O,SAAS,KAAK6O,EAAE1O,MAAM,GAAG,GAAG0O,IAAIb,EAAE2iB,WAAW,KAAK3iB,EAAE,IAAIA,KAAK,CAAC,MAAM6N,EAAE7N,GAAG,MAAMA,OAAE,EAAOA,EAAE2iB,WAAW,KAA4EiX,EAAE,CAAC55B,EAAExD,IAAI,iBAAiBwD,EAAEA,EAAE/G,EAAE+G,GAAG6N,EAAE7N,GAAG,SAASA,GAAG,MAAMxD,EAAE+oC,EAAEvlC,GAAwG,OAAOxD,CAAC,CAAtI,CAAwIwD,GAAG,SAASA,EAAExD,GAAG,GAAGqR,EAAE7N,GAAG,OAAOA,EAAE,MAAYlL,GAAE,aAAEkL,EAAExD,GAAG,OAAuC1H,CAAC,CAA5F,CAA8FkL,EAAExD,GAAGwD,EAAEw4C,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAAa,SAASr6C,EAAE6B,GAAG,OAAOulC,EAAEvlC,EAAE9C,IAAI,CAAC,MAAM4yC,EAAE,CAAC0K,gBAAgB,SAASC,YAAY,SAASC,gBAAgB,QAAQ,SAAS57C,EAAEkB,GAAgB,OAAO,gBAAgB,WAAE,MAAK,EAAEmd,SAAS5T,KAAkB,gBAAgByqB,EAAE19B,EAAE,CAAC,EAAE0J,EAAE,CAAC26C,UAAUpxC,MAAK,CAAC,MAAMyqB,UAAU,YAAY,WAAA7/B,CAAY6L,GAAG46C,MAAM56C,GAAGhJ,KAAK6jD,gBAAgB,EAAEvY,mBAAmBtiC,EAAEqiC,UAAU7lC,MAAMxF,KAAKylB,MAAMi+B,gBAAgB16C,EAAExD,GAAG,CAACs+C,UAAU,CAAC9jD,KAAKylB,MAAMq+B,UAAU9jD,KAAKylB,MAAM+9B,iBAAiB1kD,OAAOwG,SAASa,KAAK,KAAK0S,MAAMvZ,EAAE,CAAC,EAAEU,KAAKylB,MAAM5M,MAAM7Y,KAAKylB,MAAMg+B,cAAc,KAAK,IAAIj+C,GAAE,EAAG,oBAAoBhB,QAAQA,OAAOu/C,uBAAuBv+C,GAAE,GAAIxF,KAAKib,MAAM,CAAC+oC,YAAYx+C,GAAGxF,KAAKikD,cAAc,KAAKjkD,KAAKkkD,UAAUlkD,KAAKkkD,UAAUlmD,KAAKgC,KAAK,CAAC,SAAAmkD,GAAY,IAAIn7C,EAAExE,OAAO2hB,SAAS2B,SAAStjB,OAAO2hB,SAAS2E,OAAO9qB,KAAKylB,MAAMk+B,WAAW3jD,KAAKylB,MAAMk+B,UAAU77B,WAAW9e,EAAEhJ,KAAKylB,MAAMk+B,UAAU77B,SAAS9nB,KAAKylB,MAAMk+B,UAAU74B,QAAQ,MAAMtlB,EAAEuD,EAAE65B,EAAE5iC,KAAKylB,MAAMsV,GAAG/xB,IAAIuJ,EAAE/M,EAAEsiB,SAAStiB,EAAEslB,OAAO,GAAG9hB,IAAIuJ,EAAE,OAAOmrB,UAAU3P,QAAQxb,EAAE,CAAC,oBAAAmU,GAAuB,IAAI1mB,KAAKokD,GAAG,OAAO,MAAMhjC,SAASpY,EAAEg3B,GAAGx6B,GAAGxF,KAAKokD,GAAGpkD,KAAKikD,eAAejkD,KAAKikD,cAAchwB,QAAQjrB,EAAEq7C,UAAU7+C,GAAGwD,EAAEkzC,YAAY,CAAC,SAAAgI,CAAUl7C,GAAGhJ,KAAKylB,MAAMulB,UAAU/tC,OAAOD,UAAUoG,eAAezF,KAAKqC,KAAKylB,MAAMulB,SAAS,WAAWhrC,KAAKylB,MAAMulB,SAAShlC,QAAQgD,EAAEhJ,KAAKylB,MAAMulB,UAAUhrC,KAAKylB,MAAMulB,SAAShiC,GAAGhJ,KAAKib,MAAM+oC,aAAah7C,IAAIhJ,KAAKokD,GAAG,EAAEp7C,EAAExD,KAAK,MAAM+M,EAAE,IAAI/N,OAAOu/C,sBAAqBxxC,IAAIA,EAAE/S,SAAQ+S,IAAIvJ,IAAIuJ,EAAElT,QAAQmG,EAAE+M,EAAE+xC,gBAAgB/xC,EAAEgyC,kBAAkB,EAAC,GAAE,IAAI,OAAOhyC,EAAEwqC,QAAQ/zC,GAAG,CAACoY,SAAS7O,EAAEytB,GAAGh3B,EAAG,EAAtK,CAAwKA,GAAEA,IAAIA,EAAEhJ,KAAKikD,cAAcjkD,KAAKmkD,YAAYnkD,KAAKikD,eAAejkD,KAAKikD,cAAchwB,OAAM,IAAI,CAAC,MAAAnN,GAAS,MAAM9d,EAAEhJ,KAAKylB,OAAOsV,GAAGxoB,EAAE24B,SAASrhC,EAAE7J,KAAK6jD,gBAAgBtY,QAAQjnC,EAAEkgD,aAAa56C,EAAEqR,MAAM/U,EAAElD,QAAQurC,EAAEoV,UAAU9sC,GAAG7N,EAAEy7C,EAAE,SAASz7C,EAAExD,GAAG,GAAG,MAAMwD,EAAE,MAAM,CAAC,EAAE,IAAIuJ,EAAE1I,EAAE/L,EAAE,CAAC,EAAEwG,EAAErH,OAAO0B,KAAKqK,GAAG,IAAIa,EAAE,EAAEA,EAAEvF,EAAEzJ,OAAOgP,IAAIrE,EAAEzC,QAAQwP,EAAEjO,EAAEuF,KAAK,IAAI/L,EAAEyU,GAAGvJ,EAAEuJ,IAAI,OAAOzU,CAAC,CAAjI,CAAmIkL,EAAEw4C,GAAgNr6C,EAAEy7B,EAAErwB,EAAEsE,EAAEiR,UAAU,OAAO7lB,EAAEkF,GAAgB,gBAAgB,OAAE7H,EAAE,CAACy7B,GAAG5zB,EAAE8T,MAAM/U,EAAEglC,SAASrhC,EAAEmhC,SAAShrC,KAAKkkD,UAAUM,aAAax7C,IAAIY,GAAGA,EAAEZ,GAAG,MAAMxD,EAAEuD,EAAE5B,GAAGu2B,UAAUtI,SAAS5vB,EAAEsiB,SAAStiB,EAAEslB,OAAM,EAAGygB,QAAQviC,IAAI,GAAG1E,GAAGA,EAAE0E,KAAK,IAAIA,EAAEskC,QAAQttC,KAAKylB,MAAMpmB,QAAQ2J,EAAEqkC,kBAAkBrkC,EAAEukC,SAASvkC,EAAEwkC,QAAQxkC,EAAEykC,SAASzkC,EAAE0kC,UAAU,CAAC1kC,EAAEyiC,iBAAiB,IAAIjmC,EAAE+oC,EAAE,MAAMh8B,EAAEosB,UAAUx3B,KAAK0P,EAAEiR,SAAS,kBAAkBymB,GAAGh8B,IAAI/M,GAAE,GAAIhB,OAAOs5B,YAAY32B,EAAE,CAAC8T,MAAM/U,EAAElD,QAAQwC,GAAG,CAAC,OAAM,CAAC,GAAIi/C,IAAiB,gBAAgB,IAAInlD,EAAE,CAACusB,KAAK1kB,GAAGs9C,GAAG,EAAEznB,EAAE9V,UAAU5nB,EAAE,CAAC,EAAEw5C,EAAE,CAACvN,QAAQ,OAAOxQ,GAAG,SAAS1T,WAAWrkB,QAAQ,OAAOiY,MAAM,WAAW,IAAIypC,EAAE,cAAa,CAAC17C,EAAEuJ,IAAiB,gBAAgBzK,EAAExI,EAAE,CAAC0rC,SAASz4B,GAAGvJ,MAAK,MAAM27C,EAAE,CAAC37C,EAAExD,KAAKhB,OAAOs5B,YAAY8E,EAAE55B,EAAExE,OAAO2hB,SAAS2B,UAAUtiB,EAAC,C,kQCA1zI,SAAS1H,IAAI,OAAOA,EAAEb,OAAOk1B,OAAOl1B,OAAOk1B,OAAOn0B,OAAO,SAASgL,GAAG,IAAI,IAAIxD,EAAE,EAAEA,EAAE5K,UAAUC,OAAO2K,IAAI,CAAC,IAAI+M,EAAE3X,UAAU4K,GAAG,IAAI,IAAIqE,KAAK0I,EAAEtV,OAAOD,UAAUoG,eAAezF,KAAK4U,EAAE1I,KAAKb,EAAEa,GAAG0I,EAAE1I,GAAG,CAAC,OAAOb,CAAC,EAAElL,EAAEqB,MAAMa,KAAKpF,UAAU,CAAC,MAAMmO,EAAE,IAAIiiB,IAAI/oB,EAAE,CAACgiB,IAAIjb,GAAGD,EAAEkb,IAAIjb,IAAI,GAAG,GAAAsK,CAAItK,EAAExD,GAAG,MAAM+M,EAAExJ,EAAEkb,IAAIjb,IAAI,GAAGuJ,EAAErT,KAAKsG,GAAGuD,EAAEuK,IAAItK,EAAEuJ,EAAE,EAAE,OAAOvJ,GAAGD,EAAEyoB,OAAOxoB,EAAE,GAAG1E,EAAE,oBAAoB5G,MAAMA,KAAK82B,qBAAqB92B,KAAK82B,oBAAoBx2B,KAAKwG,SAAS,SAASwE,GAAG,MAAMxD,EAAEytB,KAAKiP,MAAM,OAAOxlB,YAAW,WAAW1T,EAAE,CAAC47C,YAAW,EAAGC,cAAc,WAAW,OAAOrwC,KAAKuvB,IAAI,EAAE,IAAI9Q,KAAKiP,MAAM18B,GAAG,GAAG,GAAE,EAAE,EAAE,IAAIoE,EAAYZ,KAAiFY,IAAIA,EAAE,CAAC,IAAnFk7C,YAAY,eAAe97C,EAAE+7C,KAAK,OAAO/7C,EAAEg8C,cAAc,kBAA8B,MAAM1lD,EAAE,IAAI6xB,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAYszB,EAAE,IAAItzB,IAAIqwB,EAAE,IAAIx2B,IAAI,SAASnU,EAAErR,GAAgB,OAAO,gBAAgB,WAAE,MAAK,IAAiB,gBAAgBU,EAAEV,IAAG,CAAC,SAASU,EAAEqM,GAAG,MAAMmsC,IAAI31C,EAAEk8C,SAAS3lD,EAAEsK,EAAEk7C,aAAavyC,GAAG,CAAC,GAAGuV,SAAS28B,IAAG,mBAAI,IAAG,gBAAE,KAAK,IAAIz7C,EAAE,OAAO1J,GAAG,KAAKsK,EAAEk7C,YAAY97C,EAAE8vC,EAAEvmC,GAAG,MAAM,KAAK3I,EAAEm7C,KAAKzgD,GAAE,KAAK0E,EAAE8vC,EAAEvmC,EAAC,IAAI,MAAM,KAAK3I,EAAEo7C,cAAc,CAAC,MAAMh8C,EAAEg0B,EAAEzqB,GAAGtQ,EAAEqR,IAAImxC,EAAEz7C,EAAE,EAAE,MAAM,KAAK,MAAMvN,OAAO+J,EAAE0/C,aAAa3yC,EAAE4yC,cAAct7C,GAAGb,GAAG,CAAC,EAAEuJ,IAAI,MAAM/M,GAAGA,EAAEmhB,oBAAoB,OAAOpU,IAAI1I,IAAI,MAAMrE,GAAGA,EAAEmhB,oBAAoB,QAAQ9c,IAAI,MAAMrE,GAAGA,EAAExJ,QAAO,CAAC,GAAG,IAAIsD,IAAIsK,EAAEo7C,cAAc,CAAC,MAAMx/C,EAAE2B,EAAEoL,GAAG1I,EAAEmzB,EAAEzqB,GAAG,MAAM,oBAAoB/N,QAAQvC,EAAEqR,IAAImxC,EAAE56C,GAAgB,gBAAgB,SAASrE,EAAE1H,EAAE,CAAC+B,KAAK,iBAAiB,gBAAgBP,EAAE41B,YAAY,aAAarrB,EAAE,CAACu7C,wBAAwB,CAACC,OAAOl+C,EAAEoL,MAAMzU,EAAE,CAAC+B,KAAK,iBAAiB6+C,IAAInQ,EAAExlC,GAAG,gBAAgBzJ,EAAE41B,YAAY,aAAarrB,GAAG,CAAC,OAAO,IAAI,CAAC,SAASivC,EAAE9vC,GAAG,MAAMgvB,GAAGxyB,EAAEk5C,IAAInsC,EAAE0yC,SAASp7C,EAAED,EAAEk7C,YAAYQ,OAAOv8C,EAAEw8C,QAAQtjD,GAAG+G,GAAG,CAAC,EAAE1E,EAAEkB,GAAG+M,EAAEjT,EAAE,CAAC,OAAO,SAASuX,EAAE,CAACtF,KAAKxI,EAAE5I,MAAM8B,GAAG,GAAGqC,EAAE,CAAC,IAAI,MAAM0E,KAAK1J,EAAE,GAAG,MAAMuX,GAAGA,EAAE7N,GAAG,CAAC,IAAI9C,EAAE,MAAMV,EAAEg8C,EAAEv9B,IAAI3f,IAAI,CAAC,GAAGkhD,UAAUjzC,EAAE,KAAK,MAAM/M,OAAE,EAAOA,EAAEwD,KAAK,CAAC,EAAE,IAAI8vC,EAAEvK,EAAEh8B,EAAErT,KAAK,MAAM2X,OAAE,EAAOA,EAAE7N,IAAI,MAAMxD,GAAG,OAAOU,EAAEV,EAAEwD,KAAK9C,EAAElE,MAAM,MAAM6U,GAAG,OAAOiiC,EAAEjiC,EAAE7N,KAAK8vC,EAAEn7C,KAAKkZ,EAAE,MAAMrR,GAAG,OAAO+oC,EAAE/oC,EAAEwD,SAAI,EAAOulC,EAAEvsC,OAAOw/C,EAAEluC,IAAIhP,EAAExG,EAAE,CAAC,EAAE0H,EAAE,CAAC,CAACwD,GAAG,CAACw8C,UAAUjzC,KAAK,CAAC,GAAGkyC,EAAEzgC,IAAI1f,GAAG,OAAO,IAAI,CAAC,MAAMwD,EAAEX,EAAE6B,GAAG1F,EAAE05B,EAAEh0B,GAAG07C,EAAE7oD,SAASO,cAAc,UAAUoJ,IAAIk/C,EAAE1sB,GAAGxyB,GAAGk/C,EAAEroD,QAAQ4oD,SAASp7C,EAAE,IAAI,MAAMb,EAAExD,KAAKvI,OAAO0lC,QAAQr/B,GAAGohD,EAAEj2B,aAAazlB,EAAExD,GAAGsC,IAAI48C,EAAEroB,YAAYv0B,GAAGyK,IAAImyC,EAAEhG,IAAInsC,GAAG,MAAMu4B,EAAE,CAAC,EAAE,GAAGxmC,EAAE,CAAC,IAAI,MAAM0E,KAAK1J,EAAE,CAAC,MAAMkG,EAAEA,GAAGigD,EAAEjgD,EAAElB,EAAE0E,GAAG07C,EAAEn+B,iBAAiBvd,EAAExD,GAAGslC,EAAE,GAAG9hC,aAAaxD,CAAC,CAACi/C,EAAE3vB,IAAIxwB,EAAE,CAAC,OAAOzI,SAASk/C,KAAKp+C,YAAY+nD,GAAG,CAACjpD,OAAOipD,EAAEQ,aAAapa,EAAEoa,aAAaC,cAAcra,EAAEqa,cAAc,CAAC,SAASh+C,EAAE6B,GAAG,MAAMo8C,wBAAwB5/C,EAAEwhB,SAASzU,EAAE,IAAIvJ,GAAG,CAAC,GAAGq8C,OAAOx7C,EAAE,IAAIrE,GAAG,CAAC,EAAE,OAAOqE,GAAG0I,CAAC,CAAC,SAASyqB,EAAEh0B,GAAG,MAAMxD,EAAE,CAAC,EAAE,IAAI,MAAM+M,EAAE1I,KAAK5M,OAAO0lC,QAAQ35B,GAAG1J,EAAE0kB,IAAIzR,KAAK/M,EAAE+M,GAAG1I,GAAG,OAAOrE,CAAC,CAAC,SAAS+oC,EAAEvlC,GAAG,GAAGA,EAAE,MAAM,4BAA4BsiB,mBAAmBtiB,IAAI,CAAC,SAASy8C,EAAEz8C,EAAExD,EAAE+M,GAAG,MAAM1I,EAAE23C,EAAEv9B,IAAIze,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAMqE,GAAG,OAAO/L,EAAE+L,EAAE0I,SAAI,EAAOzU,EAAE0nD,YAAY,GAAG,CAAC,IAAI1nD,EAAE0H,EAAEwD,EAAE,CAACw4C,EAAEluC,IAAI9N,EAAE,CAAC,CAAC+M,GAAG,CAACvQ,MAAMgH,IAAI,C","sources":["webpack://gatsby-tasting-kitchen/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/toArray.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://gatsby-tasting-kitchen/./node_modules/i18next/dist/esm/i18next.js","webpack://gatsby-tasting-kitchen/./node_modules/react-i18next/dist/es/unescape.js","webpack://gatsby-tasting-kitchen/./node_modules/react-i18next/dist/es/context.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-tasting-kitchen/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-tasting-kitchen/./.cache/api-runner-browser-plugins.js","webpack://gatsby-tasting-kitchen/./.cache/api-runner-browser.js","webpack://gatsby-tasting-kitchen/./.cache/emitter.js","webpack://gatsby-tasting-kitchen/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-tasting-kitchen/./.cache/normalize-page-path.js","webpack://gatsby-tasting-kitchen/./.cache/find-path.js","webpack://gatsby-tasting-kitchen/./.cache/static-query.js","webpack://gatsby-tasting-kitchen/./.cache/gatsby-browser-entry.js","webpack://gatsby-tasting-kitchen/./.cache/prefetch.js","webpack://gatsby-tasting-kitchen/./.cache/loader.js","webpack://gatsby-tasting-kitchen/./.cache/head/components/fire-callback-in-effect.js","webpack://gatsby-tasting-kitchen/./.cache/head/constants.js","webpack://gatsby-tasting-kitchen/./.cache/head/utils.js","webpack://gatsby-tasting-kitchen/./.cache/head/head-export-handler-for-browser.js","webpack://gatsby-tasting-kitchen/./.cache/page-renderer.js","webpack://gatsby-tasting-kitchen/./.cache/route-announcer-props.js","webpack://gatsby-tasting-kitchen/./.cache/navigation.js","webpack://gatsby-tasting-kitchen/./node_modules/shallow-compare/es/index.js","webpack://gatsby-tasting-kitchen/./.cache/ensure-resources.js","webpack://gatsby-tasting-kitchen/./.cache/production-app.js","webpack://gatsby-tasting-kitchen/./.cache/public-page-renderer-prod.js","webpack://gatsby-tasting-kitchen/./.cache/public-page-renderer.js","webpack://gatsby-tasting-kitchen/./.cache/react-dom-utils.js","webpack://gatsby-tasting-kitchen/./.cache/react-lifecycles-compat.js","webpack://gatsby-tasting-kitchen/./.cache/redirect-utils.js","webpack://gatsby-tasting-kitchen/./.cache/register-service-worker.js","webpack://gatsby-tasting-kitchen/./.cache/strip-prefix.js","webpack://gatsby-tasting-kitchen/./gatsby-browser.js","webpack://gatsby-tasting-kitchen/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://gatsby-tasting-kitchen/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-plugin-breakpoints/BreakpointProvider.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-plugin-breakpoints/constants.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-plugin-breakpoints/gatsby-browser.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://gatsby-tasting-kitchen/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://gatsby-tasting-kitchen/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://gatsby-tasting-kitchen/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://gatsby-tasting-kitchen/./node_modules/i18next-xhr-backend/dist/esm/i18nextXHRBackend.js","webpack://gatsby-tasting-kitchen/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://gatsby-tasting-kitchen/./src/locales/en/index.js","webpack://gatsby-tasting-kitchen/./src/locales/zh/index.js","webpack://gatsby-tasting-kitchen/./src/locales/zh_tc/index.js","webpack://gatsby-tasting-kitchen/./src/i18n.js","webpack://gatsby-tasting-kitchen/./src/utils/auth.js","webpack://gatsby-tasting-kitchen/./src/utils/breakpoints.js","webpack://gatsby-tasting-kitchen/./src/utils/smoothScroll.js","webpack://gatsby-tasting-kitchen/./node_modules/invariant/browser.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/createClass.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/typeof.js","webpack://gatsby-tasting-kitchen/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://gatsby-tasting-kitchen/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://gatsby-tasting-kitchen/./node_modules/gatsby-script/dist/index.modern.mjs"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\n\n// TODO(v5): Remove legacy setting and default to \"always\"\nconst applyTrailingSlashOption = function (input) {\n let option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : `legacy`;\n const hasHtmlSuffix = input.endsWith(`.html`);\n const hasXmlSuffix = input.endsWith(`.xml`);\n const hasPdfSuffix = input.endsWith(`.pdf`);\n if (input === `/`) return input;\n if (hasHtmlSuffix || hasXmlSuffix || hasPdfSuffix) {\n option = `never`;\n }\n if (option === `always`) {\n return input.endsWith(`/`) ? input : `${input}/`;\n }\n if (option === `never`) {\n return input.endsWith(`/`) ? input.slice(0, -1) : input;\n }\n return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\n\n// Makes sure off-main-thread scripts are loaded in `gatsby develop`\nconst onInitialClientRender = () => {\n if (process.env.NODE_ENV !== `development`) {\n return;\n }\n (0, _injectPartytownSnippet.injectPartytownSnippet)(_gatsbyScript.collectedScriptsByPage.get(window.location.pathname)); // Clear scripts after we've used them to avoid leaky behavior\n\n _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n}; // Client-side navigation (CSR, e.g. Gatsby Link navigations) are broken upstream in Partytown.\n// We need an official API from Partytown for handling re-configuration and on-demand script loading.\n// Until then, `off-main-thread` scripts load only on server-side navigation (SSR).\n// See https://github.com/BuilderIO/partytown/issues/74 for more details.\n\nexports.onInitialClientRender = onInitialClientRender;","\"use strict\";\n\nexports.__esModule = true;\nexports.getForwards = getForwards;\nfunction getForwards(collectedScripts) {\n return collectedScripts === null || collectedScripts === void 0 ? void 0 : collectedScripts.flatMap(script => (script === null || script === void 0 ? void 0 : script.forward) || []);\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\n\n// Adapted from https://github.com/BuilderIO/partytown/blob/main/src/react/snippet.tsx to only include CSR logic\nfunction injectPartytownSnippet(collectedScripts) {\n if (!collectedScripts.length) {\n return;\n }\n const existingSnippet = document.querySelector(`script[data-partytown]`);\n const existingSandbox = document.querySelector(`iframe[src*=\"~partytown/partytown-sandbox-sw\"]`);\n if (existingSnippet) {\n existingSnippet.remove();\n }\n if (existingSandbox) {\n existingSandbox.remove();\n }\n const forwards = (0, _getForwards.getForwards)(collectedScripts);\n const snippet = document.createElement(`script`);\n snippet.dataset.partytown = ``;\n snippet.innerHTML = (0, _integration.partytownSnippet)({\n forward: forwards\n });\n document.head.appendChild(snippet);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Logger);\n this.init(concreteLogger, options);\n }\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread(_objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }), this.options));\n }\n }, {\n key: \"clone\",\n value: function clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n }]);\n return Logger;\n}();\nvar baseLogger = new Logger();\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n this.observers = {};\n }\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n return EventEmitter;\n}();\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n var possibleChars = chars.filter(function (c) {\n return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n });\n if (possibleChars.length === 0) return true;\n var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n return c === '?' ? '\\\\?' : c;\n }).join('|'), \")\"));\n var matched = !r.test(key);\n if (!matched) {\n var ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n for (var i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n var _super = _createSuper(ResourceStore);\n function ResourceStore(data) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n _classCallCheck(this, ResourceStore);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.data = data || {};\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n return _this;\n }\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread$1(_objectSpread$1({}, pack), resources);\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread$1(_objectSpread$1({}, {}), this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"hasLanguageSomeTranslations\",\n value: function hasLanguageSomeTranslations(lng) {\n var data = this.getDataByLanguage(lng);\n var n = data && Object.keys(data) || [];\n return !!n.find(function (v) {\n return data[v] && Object.keys(data[v]).length > 0;\n });\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n return ResourceStore;\n}(EventEmitter);\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\nfunction ownKeys$2(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$2(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$2(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$1(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$1() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n var _super = _createSuper$1(Translator);\n function Translator(services) {\n var _this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Translator);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS || [];\n var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n var m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n resolved.res = \"\".concat(namespace).concat(nsSeparator).concat(key);\n return resolved;\n }\n return \"\".concat(namespace).concat(nsSeparator).concat(key);\n }\n if (returnDetails) {\n resolved.res = key;\n return resolved;\n }\n return key;\n }\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$2(_objectSpread$2({}, options), {}, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n if (returnDetails) {\n resolved.res = r;\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread$2(_objectSpread$2({}, options), {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread$2(_objectSpread$2({}, options), {}, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n var send = function send(l, k, specificDefaultValue) {\n var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n _this2.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n return resolved;\n }\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread$2(_objectSpread$2({}, options), {\n interpolation: _objectSpread$2(_objectSpread$2({}, this.options.interpolation), options.interpolation)\n }));\n var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n var nestBef;\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread$2(_objectSpread$2({}, this.options.interpolation.defaultVariables), data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n return null;\n }\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$2({\n i18nResolved: resolved\n }, options) : options, this);\n }\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n var extracted = _this4.extractFromKey(k, options);\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKeys = [key];\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n var possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n }]);\n return Translator;\n}(EventEmitter);\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n var cleanedLng = _this.formatLanguageCode(code);\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n var lngOnly = _this.getLanguagePartFromCode(code);\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n var addCode = function addCode(c) {\n if (!c) return;\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n return LanguageUtil;\n}();\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, PluralResolver);\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(code, {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (_unused) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(function (suffix) {\n return \"\".concat(key).concat(suffix);\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n }).map(function (pluralCategory) {\n return \"\".concat(_this.options.prepend).concat(pluralCategory);\n });\n }\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number, options);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return \"\".concat(this.options.prepend).concat(rule.select(count));\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }, {\n key: \"getSuffixRetroCompatible\",\n value: function getSuffixRetroCompatible(rule, count) {\n var _this2 = this;\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n }, {\n key: \"shouldUseIntlApi\",\n value: function shouldUseIntlApi() {\n return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n }\n }]);\n return PluralResolver;\n}();\nfunction ownKeys$3(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$3(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$3(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$3(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Interpolator);\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n this.init(options);\n }\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: key\n })) : path;\n }\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n interpolationkey: k\n }));\n };\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n var matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && options.hasOwnProperty(matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n var clonedOptions = _objectSpread$3({}, options);\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n var matchedSingleQuotes = optionsString.match(/'/g);\n var matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n }]);\n return Interpolator;\n}();\nfunction ownKeys$4(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$4(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$4(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$4(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction parseFormatStr(formatStr) {\n var formatName = formatStr.toLowerCase().trim();\n var formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n var p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n var optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n var opts = optStr.split(';');\n opts.forEach(function (opt) {\n if (!opt) return;\n var _opt$split = opt.split(':'),\n _opt$split2 = _toArray(_opt$split),\n key = _opt$split2[0],\n rest = _opt$split2.slice(1);\n var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName: formatName,\n formatOptions: formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n var cache = {};\n return function invokeFormatter(val, lng, options) {\n var key = lng + JSON.stringify(options);\n var formatter = cache[key];\n if (!formatter) {\n formatter = fn(lng, options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nvar Formatter = function () {\n function Formatter() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n _classCallCheck(this, Formatter);\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, options);\n return function (val) {\n return formatter.format(val);\n };\n }),\n currency: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.NumberFormat(lng, _objectSpread$4(_objectSpread$4({}, options), {}, {\n style: 'currency'\n }));\n return function (val) {\n return formatter.format(val);\n };\n }),\n datetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.DateTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n }),\n relativetime: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val, options.range || 'day');\n };\n }),\n list: createCachedFormatter(function (lng, options) {\n var formatter = new Intl.ListFormat(lng, _objectSpread$4({}, options));\n return function (val) {\n return formatter.format(val);\n };\n })\n };\n this.init(options);\n }\n _createClass(Formatter, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n }, {\n key: \"add\",\n value: function add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n }, {\n key: \"addCached\",\n value: function addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n }, {\n key: \"format\",\n value: function format(value, _format, lng, options) {\n var _this = this;\n var formats = _format.split(this.formatSeparator);\n var result = formats.reduce(function (mem, f) {\n var _parseFormatStr = parseFormatStr(f),\n formatName = _parseFormatStr.formatName,\n formatOptions = _parseFormatStr.formatOptions;\n if (_this.formats[formatName]) {\n var formatted = mem;\n try {\n var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = _this.formats[formatName](mem, l, _objectSpread$4(_objectSpread$4(_objectSpread$4({}, formatOptions), options), valOptions));\n } catch (error) {\n _this.logger.warn(error);\n }\n return formatted;\n } else {\n _this.logger.warn(\"there was no format function for \".concat(formatName));\n }\n return mem;\n }, value);\n return result;\n }\n }]);\n return Formatter;\n}();\nfunction ownKeys$5(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$5(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$5(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$5(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$2(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$2() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n var _super = _createSuper$2(Connector);\n function Connector(backend, store, services) {\n var _this;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n _classCallCheck(this, Connector);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.waitingReads = [];\n _this.maxParallelReads = options.maxParallelReads || 10;\n _this.readingCalls = 0;\n _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n _this.state = {};\n _this.queue = [];\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n return _this;\n }\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n var toLoad = {};\n var pending = {};\n var toLoadLanguages = {};\n var toLoadNamespaces = {};\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ;else if (_this2.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending: pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = {};\n var loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(function (ns) {\n if (loaded[l][ns] === undefined) loaded[l][ns] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng: lng,\n ns: ns,\n fcName: fcName,\n tried: tried,\n wait: wait,\n callback: callback\n });\n return;\n }\n this.readingCalls++;\n return this.backend[fcName](lng, ns, function (err, data) {\n _this3.readingCalls--;\n if (_this3.waitingReads.length > 0) {\n var next = _this3.waitingReads.shift();\n _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < _this3.maxRetries) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread$5(_objectSpread$5({}, options), {}, {\n isUpdate: isUpdate\n }));\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n return Connector;\n}(EventEmitter);\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\nfunction ownKeys$6(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread$6(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys$6(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$6(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _createSuper$3(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _isNativeReflectConstruct$3() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(function (mem) {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n var _super = _createSuper$3(I18n);\n function I18n() {\n var _this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n _classCallCheck(this, I18n);\n _this = _super.call(this);\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n bindMemberFunctions(_assertThisInitialized(_this));\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n return _this;\n }\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n var defOpts = get();\n this.options = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, defOpts), this.options), transformOptions(options));\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = _objectSpread$6(_objectSpread$6({}, defOpts.interpolation), this.options.interpolation);\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n var formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n return _this2;\n };\n });\n var deferred = defer();\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n _this2.emit('initialized', _this2.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n var append = function append(lng) {\n if (!lng) return;\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n }, {\n key: \"setResolvedLanguage\",\n value: function setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (var li = 0; li < this.languages.length; li++) {\n var lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n var setLngProps = function setLngProps(l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n _this4.resolvedLanguage = undefined;\n _this4.setResolvedLanguage(l);\n };\n var done = function done(err, l) {\n if (l) {\n setLngProps(l);\n _this4.translator.changeLanguage(l);\n _this4.isLanguageChangingTo = undefined;\n _this4.emit('languageChanged', l);\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!_this4.language) {\n setLngProps(l);\n }\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns, keyPrefix) {\n var _this5 = this;\n var fixedT = function fixedT(key, opts) {\n var options;\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread$6({}, opts);\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n var keySeparator = _this5.options.keySeparator || '.';\n var resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n return _this5.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n var lng = this.resolvedLanguage || this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n var deferred = defer();\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var mergedOptions = _objectSpread$6(_objectSpread$6(_objectSpread$6({}, this.options), options), {\n isClone: true\n });\n var clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread$6({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n }]);\n return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\nvar createInstance = instance.createInstance;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\nexport default instance;\nexport { changeLanguage, createInstance, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };","var matchHtmlEntity = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g;\nvar htmlEntities = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"',\n ' ': ' ',\n ' ': ' ',\n '©': '©',\n '©': '©',\n '®': '®',\n '®': '®',\n '…': '…',\n '…': '…',\n '/': '/',\n '/': '/'\n};\nvar unescapeHtmlEntity = function unescapeHtmlEntity(m) {\n return htmlEntities[m];\n};\nexport var unescape = function unescape(text) {\n return text.replace(matchHtmlEntity, unescapeHtmlEntity);\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nimport { createContext } from 'react';\nimport { unescape } from './unescape';\nvar defaultOptions = {\n bindI18n: 'languageChanged',\n bindI18nStore: '',\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true,\n transWrapTextNodes: '',\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'p'],\n useSuspense: true,\n unescape: unescape\n};\nvar i18nInstance;\nexport var I18nContext = createContext();\nexport function setDefaults() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n defaultOptions = _objectSpread(_objectSpread({}, defaultOptions), options);\n}\nexport function getDefaults() {\n return defaultOptions;\n}\nexport var ReportNamespaces = function () {\n function ReportNamespaces() {\n _classCallCheck(this, ReportNamespaces);\n this.usedNamespaces = {};\n }\n _createClass(ReportNamespaces, [{\n key: \"addUsedNamespaces\",\n value: function addUsedNamespaces(namespaces) {\n var _this = this;\n namespaces.forEach(function (ns) {\n if (!_this.usedNamespaces[ns]) _this.usedNamespaces[ns] = true;\n });\n }\n }, {\n key: \"getUsedNamespaces\",\n value: function getUsedNamespaces() {\n return Object.keys(this.usedNamespaces);\n }\n }]);\n return ReportNamespaces;\n}();\nexport function setI18n(instance) {\n i18nInstance = instance;\n}\nexport function getI18n() {\n return i18nInstance;\n}\nexport var initReactI18next = {\n type: '3rdParty',\n init: function init(instance) {\n setDefaults(instance.options.react);\n setI18n(instance);\n }\n};\nexport function composeInitialProps(ForComponent) {\n return function (ctx) {\n return new Promise(function (resolve) {\n var i18nInitialProps = getInitialProps();\n if (ForComponent.getInitialProps) {\n ForComponent.getInitialProps(ctx).then(function (componentsInitialProps) {\n resolve(_objectSpread(_objectSpread({}, componentsInitialProps), i18nInitialProps));\n });\n } else {\n resolve(i18nInitialProps);\n }\n });\n };\n}\nexport function getInitialProps() {\n var i18n = getI18n();\n var namespaces = i18n.reportNamespaces ? i18n.reportNamespaces.getUsedNamespaces() : [];\n var ret = {};\n var initialI18nStore = {};\n i18n.languages.forEach(function (l) {\n initialI18nStore[l] = {};\n namespaces.forEach(function (ns) {\n initialI18nStore[l][ns] = i18n.getResourceBundle(l, ns) || {};\n });\n });\n ret.initialI18nStore = initialI18nStore;\n ret.initialLanguage = i18n.language;\n return ret;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","exports.components = {\n \"component---src-pages-404-index-js\": () => import(\"./../../../src/pages/404/index.js\" /* webpackChunkName: \"component---src-pages-404-index-js\" */),\n \"component---src-pages-404-index-zh-js\": () => import(\"./../../../src/pages/404/index.zh.js\" /* webpackChunkName: \"component---src-pages-404-index-zh-js\" */),\n \"component---src-pages-404-index-zh-tc-js\": () => import(\"./../../../src/pages/404/index.zh_tc.js\" /* webpackChunkName: \"component---src-pages-404-index-zh-tc-js\" */),\n \"component---src-pages-account-index-js\": () => import(\"./../../../src/pages/account/index.js\" /* webpackChunkName: \"component---src-pages-account-index-js\" */),\n \"component---src-pages-account-index-zh-js\": () => import(\"./../../../src/pages/account/index.zh.js\" /* webpackChunkName: \"component---src-pages-account-index-zh-js\" */),\n \"component---src-pages-account-index-zh-tc-js\": () => import(\"./../../../src/pages/account/index.zh_tc.js\" /* webpackChunkName: \"component---src-pages-account-index-zh-tc-js\" */),\n \"component---src-pages-callback-js\": () => import(\"./../../../src/pages/callback.js\" /* webpackChunkName: \"component---src-pages-callback-js\" */),\n \"component---src-pages-login-index-js\": () => import(\"./../../../src/pages/login/index.js\" /* webpackChunkName: \"component---src-pages-login-index-js\" */),\n \"component---src-pages-login-index-zh-js\": () => import(\"./../../../src/pages/login/index.zh.js\" /* webpackChunkName: \"component---src-pages-login-index-zh-js\" */),\n \"component---src-pages-login-index-zh-tc-js\": () => import(\"./../../../src/pages/login/index.zh_tc.js\" /* webpackChunkName: \"component---src-pages-login-index-zh-tc-js\" */),\n \"component---src-pages-lost-password-index-js\": () => import(\"./../../../src/pages/lost-password/index.js\" /* webpackChunkName: \"component---src-pages-lost-password-index-js\" */),\n \"component---src-pages-lost-password-index-zh-js\": () => import(\"./../../../src/pages/lost-password/index.zh.js\" /* webpackChunkName: \"component---src-pages-lost-password-index-zh-js\" */),\n \"component---src-pages-lost-password-index-zh-tc-js\": () => import(\"./../../../src/pages/lost-password/index.zh_tc.js\" /* webpackChunkName: \"component---src-pages-lost-password-index-zh-tc-js\" */),\n \"component---src-pages-preview-index-js\": () => import(\"./../../../src/pages/preview/index.js\" /* webpackChunkName: \"component---src-pages-preview-index-js\" */),\n \"component---src-templates-blog-index-js\": () => import(\"./../../../src/templates/blog/index.js\" /* webpackChunkName: \"component---src-templates-blog-index-js\" */),\n \"component---src-templates-category-index-js\": () => import(\"./../../../src/templates/category/index.js\" /* webpackChunkName: \"component---src-templates-category-index-js\" */),\n \"component---src-templates-page-index-js\": () => import(\"./../../../src/templates/page/index.js\" /* webpackChunkName: \"component---src-templates-page-index-js\" */),\n \"component---src-templates-post-index-js\": () => import(\"./../../../src/templates/post/index.js\" /* webpackChunkName: \"component---src-templates-post-index-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-breakpoints/gatsby-browser.js'),\n options: {\"plugins\":[],\"queries\":{\"xs\":\"(max-width: 767.98px)\",\"sm\":\"(min-width: 768px) and (max-width: 833.98px)\",\"md\":\"(min-width: 834px) and (max-width: 1023.98px)\",\"l\":\"(min-width: 1024px) and (max-width: 1439.98px)\",\"xl\":\"(min-width: 1440px)\"}},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"gatsby-starter-default\",\"short_name\":\"starter\",\"start_url\":\"/\",\"background_color\":\"#663399\",\"theme_color\":\"#663399\",\"display\":\"minimal-ui\",\"icon\":\"src/images/tk-logo.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"eabe96b90b6e288b1934ce776b43ac47\"},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default pathAndSearch => {\n if (pathAndSearch === undefined) {\n return pathAndSearch\n }\n let [path, search = ``] = pathAndSearch.split(`?`)\n if (search) {\n search = `?` + search\n }\n\n if (path === `/`) {\n return `/` + search\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1) + search\n }\n return path + search\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n let newRawPathname = rawPathname\n const queryIndex = rawPathname.indexOf(`?`)\n\n if (queryIndex !== -1) {\n const [path, qs] = rawPathname.split(`?`)\n newRawPathname = `${path}?${encodeURIComponent(qs)}`\n }\n\n const pathname = decodeURIComponent(newRawPathname)\n\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nconst StaticQueryContext = React.createContext({})\nlet StaticQueryServerContext = null\nif (React.createServerContext) {\n StaticQueryServerContext = React.createServerContext(`StaticQuery`, {})\n}\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\n// TODO(v5): Remove completely\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n // TODO(v5): Remove since we require React >= 18\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n let context\n\n // Can we get a better check here?\n if (\n StaticQueryServerContext &&\n Object.keys(StaticQueryServerContext._currentValue).length\n ) {\n context = React.useContext(StaticQueryServerContext)\n } else {\n context = React.useContext(StaticQueryContext)\n }\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n}\n","import loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport { default as PageRenderer } from \"./public-page-renderer\"\nexport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nexport {\n default as Link,\n withPrefix,\n withAssetPrefix,\n navigate,\n parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport {\n StaticQuery,\n StaticQueryContext,\n useStaticQuery,\n StaticQueryServerContext,\n} from \"./static-query\"\n\nexport * from \"gatsby-script\"\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import { createFromReadableStream } from \"react-server-dom-webpack\"\nimport prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = rawPath => {\n const [path, maybeSearch] = rawPath.split(`?`)\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json${\n maybeSearch ? `?${maybeSearch}` : ``\n }`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise(resolve => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\n// Regex that matches common search crawlers\nconst BOT_REGEX = /bot|crawler|spider|crawling/i\n\nconst toPageResources = (pageData, component = null, head) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n getServerDataError: pageData.getServerDataError,\n }\n\n return {\n component,\n head,\n json: pageData.result,\n page,\n }\n}\n\nfunction waitForResponse(response) {\n return new Promise(resolve => {\n try {\n const result = response.readRoot()\n resolve(result)\n } catch (err) {\n if (\n Object.hasOwnProperty.call(err, `_response`) &&\n Object.hasOwnProperty.call(err, `_status`)\n ) {\n setTimeout(() => {\n waitForResponse(response).then(resolve)\n }, 200)\n } else {\n throw err\n }\n }\n })\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.partialHydrationDb = new Map()\n this.isPrefetchQueueRunning = false\n this.prefetchQueued = []\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n const maybeSearch = pagePath.split(`?`)[1]\n if (maybeSearch && !jsonPayload.path.includes(maybeSearch)) {\n jsonPayload.path += `?${maybeSearch}`\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n fetchPartialHydrationJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath).replace(`.json`, `-rsc.json`)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: responseText,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404/500 page and it doesn't exist, we're done\n if (pagePath === `/404.html` || pagePath === `/500.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, {\n pagePath: `/500.html`,\n internalServerError: true,\n })\n )\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPartialHydrationJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.partialHydrationDb.has(pagePath)) {\n const pageData = this.partialHydrationDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPartialHydrationJson({ pagePath }).then(pageData => {\n this.partialHydrationDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n let inFlightPromise\n if (global.hasPartialHydration) {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n this.loadPartialHydrationJson(pagePath),\n ]).then(([appData, { payload: pageData }, result]) => {\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = this.loadComponent(\n pageData.componentChunkName,\n `head`\n ).then(head => {\n finalResult.createdAt = new Date()\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: appData\n ? appData.webpackCompilationHash\n : ``,\n })\n\n const pageResources = toPageResources(pageData, null, head)\n\n if (result.payload && typeof result.payload === `string`) {\n pageResources.partialHydration = result.payload\n\n const readableStream = new ReadableStream({\n start(controller) {\n const te = new TextEncoder()\n controller.enqueue(te.encode(result.payload))\n },\n pull(controller) {\n // close on next read when queue is empty\n controller.close()\n },\n cancel() {},\n })\n\n return waitForResponse(\n createFromReadableStream(readableStream)\n ).then(result => {\n pageResources.partialHydration = result\n\n return pageResources\n })\n }\n\n // undefined if final result is an error\n return pageResources\n })\n\n // Necessary for head component\n const staticQueryBatchPromise = Promise.all(\n (pageData.staticQueryHashes || []).map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = {\n ...pageResources,\n staticQueryResults: staticQueryResults,\n }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n } else {\n inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n // In develop we have separate chunks for template and Head components\n // to enable HMR (fast refresh requires single exports).\n // In production we have shared chunk with both exports. Double loadComponent here\n // will be deduped by webpack runtime resulting in single request and single module\n // being loaded for both `component` and `head`.\n const componentChunkPromise = Promise.all([\n this.loadComponent(componentChunkName),\n this.loadComponent(componentChunkName, `head`),\n ]).then(([component, head]) => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component, head)\n }\n // undefined if final result is an error\n return pageResources\n })\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n }\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Don't prefetch if this is a crawler bot\n if (navigator.userAgent && BOT_REGEX.test(navigator.userAgent)) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return {\n then: resolve => resolve(false),\n abort: () => {},\n }\n }\n if (this.prefetchTriggered.has(pagePath)) {\n return {\n then: resolve => resolve(true),\n abort: () => {},\n }\n }\n\n const defer = {\n resolve: null,\n reject: null,\n promise: null,\n }\n defer.promise = new Promise((resolve, reject) => {\n defer.resolve = resolve\n defer.reject = reject\n })\n this.prefetchQueued.push([pagePath, defer])\n const abortC = new AbortController()\n abortC.signal.addEventListener(`abort`, () => {\n const index = this.prefetchQueued.findIndex(([p]) => p === pagePath)\n // remove from the queue\n if (index !== -1) {\n this.prefetchQueued.splice(index, 1)\n }\n })\n\n if (!this.isPrefetchQueueRunning) {\n this.isPrefetchQueueRunning = true\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n }\n\n return {\n then: (resolve, reject) => defer.promise.then(resolve, reject),\n abort: abortC.abort.bind(abortC),\n }\n }\n\n _processNextPrefetchBatch() {\n const idleCallback = window.requestIdleCallback || (cb => setTimeout(cb, 0))\n\n idleCallback(() => {\n const toPrefetch = this.prefetchQueued.splice(0, 4)\n const prefetches = Promise.all(\n toPrefetch.map(([pagePath, dPromise]) => {\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return dPromise.resolve(false)\n }\n\n return this.doPrefetch(findPath(pagePath)).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n\n dPromise.resolve(true)\n })\n })\n )\n\n if (this.prefetchQueued.length) {\n prefetches.then(() => {\n setTimeout(() => {\n this._processNextPrefetchBatch()\n }, 3000)\n })\n } else {\n this.isPrefetchQueueRunning = false\n }\n })\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n\n if (global.hasPartialHydration) {\n return Promise.all([\n prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n ),\n prefetchHelper(pageDataUrl.replace(`.json`, `-rsc.json`), {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPartialHydrationJson(pagePath)\n ),\n ])\n } else {\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = (chunkName, exportType = `components`) => {\n if (!global.hasPartialHydration) {\n exportType = `components`\n }\n\n if (!asyncRequires[exportType][chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name \"${chunkName}\"`\n )\n }\n\n return (\n asyncRequires[exportType][chunkName]()\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(findPath(pageData.path), {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n\n loadPartialHydrationJson(rawPath) {\n return super.loadPartialHydrationJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import { useEffect } from \"react\"\n\n/*\n * Calls callback in an effect and renders children\n */\nexport function FireCallbackInEffect({ children, callback }) {\n useEffect(() => {\n callback()\n })\n\n return children\n}\n","export const VALID_NODE_NAMES = [\n `link`,\n `meta`,\n `style`,\n `title`,\n `base`,\n `noscript`,\n `script`,\n]\n","import { VALID_NODE_NAMES } from \"./constants\"\n\n/**\n * Filter the props coming from a page down to just the ones that are relevant for head.\n * This e.g. filters out properties that are undefined during SSR.\n */\nexport function filterHeadProps(input) {\n return {\n location: {\n pathname: input.location.pathname,\n },\n params: input.params,\n data: input.data || {},\n pageContext: input.pageContext,\n }\n}\n\n/**\n * Throw error if Head export is not a valid\n */\nexport function headExportValidator(head) {\n if (typeof head !== `function`)\n throw new Error(\n `Expected \"Head\" export to be a function got \"${typeof head}\".`\n )\n}\n\n/**\n * Warn once for same messsage\n */\nlet warnOnce = _ => {}\nif (process.env.NODE_ENV !== `production`) {\n const warnings = new Set()\n warnOnce = msg => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\n/**\n * Warn for invalid tags in head.\n * @param {string} tagName\n */\nexport function warnForInvalidTags(tagName) {\n if (process.env.NODE_ENV !== `production`) {\n const warning = `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n `, `\n )}`\n\n warnOnce(warning)\n }\n}\n\n/**\n * When a `nonce` is present on an element, browsers such as Chrome and Firefox strip it out of the\n * actual HTML attributes for security reasons *when the element is added to the document*. Thus,\n * given two equivalent elements that have nonces, `Element,isEqualNode()` will return false if one\n * of those elements gets added to the document. Although the `element.nonce` property will be the\n * same for both elements, the one that was added to the document will return an empty string for\n * its nonce HTML attribute value.\n *\n * This custom `isEqualNode()` function therefore removes the nonce value from the `newTag` before\n * comparing it to `oldTag`, restoring it afterwards.\n *\n * For more information, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=1211471#c12\n */\nexport function isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(`nonce`)\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(`nonce`)) {\n const cloneTag = newTag.cloneNode(true)\n cloneTag.setAttribute(`nonce`, ``)\n cloneTag.nonce = nonce\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag)\n }\n }\n\n return oldTag.isEqualNode(newTag)\n}\n\nexport function diffNodes({ oldNodes, newNodes, onStale, onNew }) {\n for (const existingHeadElement of oldNodes) {\n const indexInNewNodes = newNodes.findIndex(e =>\n isEqualNode(e, existingHeadElement)\n )\n\n if (indexInNewNodes === -1) {\n onStale(existingHeadElement)\n } else {\n // this node is re-created as-is, so we keep old node, and remove it from list of new nodes (as we handled it already here)\n newNodes.splice(indexInNewNodes, 1)\n }\n }\n\n // remaing new nodes didn't have matching old node, so need to be added\n for (const newNode of newNodes) {\n onNew(newNode)\n }\n}\n","import React from \"react\"\nimport { useEffect } from \"react\"\nimport { StaticQueryContext } from \"gatsby\"\nimport { LocationProvider } from \"@gatsbyjs/reach-router\"\nimport { reactDOMUtils } from \"../react-dom-utils\"\nimport { FireCallbackInEffect } from \"./components/fire-callback-in-effect\"\nimport { VALID_NODE_NAMES } from \"./constants\"\nimport {\n headExportValidator,\n filterHeadProps,\n warnForInvalidTags,\n diffNodes,\n} from \"./utils\"\n\nconst hiddenRoot = document.createElement(`div`)\n\nconst removePrevHeadElements = () => {\n const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n\n for (const node of prevHeadNodes) {\n node.parentNode.removeChild(node)\n }\n}\n\nconst onHeadRendered = () => {\n const validHeadNodes = []\n\n const seenIds = new Map()\n for (const node of hiddenRoot.childNodes) {\n const nodeName = node.nodeName.toLowerCase()\n const id = node.attributes?.id?.value\n\n if (!VALID_NODE_NAMES.includes(nodeName)) {\n warnForInvalidTags(nodeName)\n } else {\n let clonedNode = node.cloneNode(true)\n clonedNode.setAttribute(`data-gatsby-head`, true)\n\n // Create an element for scripts to make script work\n if (clonedNode.nodeName.toLowerCase() === `script`) {\n const script = document.createElement(`script`)\n for (const attr of clonedNode.attributes) {\n script.setAttribute(attr.name, attr.value)\n }\n script.innerHTML = clonedNode.innerHTML\n clonedNode = script\n }\n\n if (id) {\n if (!seenIds.has(id)) {\n validHeadNodes.push(clonedNode)\n seenIds.set(id, validHeadNodes.length - 1)\n } else {\n const indexOfPreviouslyInsertedNode = seenIds.get(id)\n validHeadNodes[indexOfPreviouslyInsertedNode].parentNode?.removeChild(\n validHeadNodes[indexOfPreviouslyInsertedNode]\n )\n validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n }\n } else {\n validHeadNodes.push(clonedNode)\n }\n }\n }\n\n const existingHeadElements = document.querySelectorAll(`[data-gatsby-head]`)\n\n if (existingHeadElements.length === 0) {\n document.head.append(...validHeadNodes)\n return\n }\n\n const newHeadNodes = []\n diffNodes({\n oldNodes: existingHeadElements,\n newNodes: validHeadNodes,\n onStale: node => node.parentNode.removeChild(node),\n onNew: node => newHeadNodes.push(node),\n })\n\n document.head.append(...newHeadNodes)\n}\n\nif (process.env.BUILD_STAGE === `develop`) {\n // We set up observer to be able to regenerate after react-refresh\n // updates our hidden element.\n const observer = new MutationObserver(onHeadRendered)\n observer.observe(hiddenRoot, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true,\n })\n}\n\nexport function headHandlerForBrowser({\n pageComponent,\n staticQueryResults,\n pageComponentProps,\n}) {\n useEffect(() => {\n if (pageComponent?.Head) {\n headExportValidator(pageComponent.Head)\n\n const { render } = reactDOMUtils()\n\n const Head = pageComponent.Head\n\n render(\n // just a hack to call the callback after react has done first render\n // Note: In dev, we call onHeadRendered twice( in FireCallbackInEffect and after mutualution observer dectects initail render into hiddenRoot) this is for hot reloading\n // In Prod we only call onHeadRendered in FireCallbackInEffect to render to head\n \n \n \n \n \n \n ,\n hiddenRoot\n )\n }\n\n return () => {\n removePrevHeadElements()\n }\n })\n}\n","import React, { Suspense, createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\nimport { headHandlerForBrowser } from \"./head/head-export-handler-for-browser\"\n\n// Renders page\nfunction PageRenderer(props) {\n const pageComponentProps = {\n ...props,\n params: {\n ...grabMatchParams(props.location.pathname),\n ...props.pageResources.json.pageContext.__params,\n },\n }\n\n const preferDefault = m => (m && m.default) || m\n\n let pageElement\n if (props.pageResources.partialHydration) {\n pageElement = props.pageResources.partialHydration\n } else {\n pageElement = createElement(preferDefault(props.pageResources.component), {\n ...pageComponentProps,\n key: props.path || props.pageResources.page.path,\n })\n }\n\n const pageComponent = props.pageResources.head\n\n headHandlerForBrowser({\n pageComponent,\n staticQueryResults: props.pageResources.staticQueryResults,\n pageComponentProps,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n {\n element: pageElement,\n props: pageComponentProps,\n },\n pageElement,\n ({ result }) => {\n return { element: result, props: pageComponentProps }\n }\n ).pop()\n\n return wrappedPage\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname + search).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname + location.search, {\n withErrorDetails: true,\n }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(\n location.pathname + location.search,\n {\n withErrorDetails: true,\n }\n )\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(\n nextProps.location.pathname + nextProps.location.search\n )\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\nimport { reactDOMUtils } from \"./react-dom-utils\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nconst { render, hydrate } = reactDOMUtils()\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\nconst reloadStorageKey = `gatsby-reload-compilation-hash-match`\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n if (pageResources.partialHydration) {\n return (\n \n {children}\n \n )\n } else {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). SSR\n // page paths might include search params, while SSG and DSG won't.\n // If page path include search params we also compare query params.\n // But only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !==\n browserLoc.pathname + (pagePath.includes(`?`) ? browserLoc.search : ``) &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath.match(/^\\/(404|500)(\\/?|.html)$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(\n __BASE_PATH__ +\n pagePath +\n (!pagePath.includes(`?`) ? browserLoc.search : ``) +\n browserLoc.hash,\n {\n replace: true,\n }\n )\n }\n\n // It's possible that sessionStorage can throw an exception if access is not granted, see https://github.com/gatsbyjs/gatsby/issues/34512\n const getSessionStorage = () => {\n try {\n return sessionStorage\n } catch {\n return null\n }\n }\n\n publicLoader.loadPage(browserLoc.pathname + browserLoc.search).then(page => {\n const sessionStorage = getSessionStorage()\n\n if (\n page?.page?.webpackCompilationHash &&\n page.page.webpackCompilationHash !== window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n // We have not matching html + js (inlined `window.___webpackCompilationHash`)\n // with our data (coming from `app-data.json` file). This can cause issues such as\n // errors trying to load static queries (as list of static queries is inside `page-data`\n // which might not match to currently loaded `.js` scripts).\n // We are making attempt to reload if hashes don't match, but we also have to handle case\n // when reload doesn't fix it (possibly broken deploy) so we don't end up in infinite reload loop\n if (sessionStorage) {\n const isReloaded = sessionStorage.getItem(reloadStorageKey) === `1`\n\n if (!isReloaded) {\n sessionStorage.setItem(reloadStorageKey, `1`)\n window.location.reload(true)\n return\n }\n }\n }\n\n if (sessionStorage) {\n sessionStorage.removeItem(reloadStorageKey)\n }\n\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const focusEl = document.getElementById(`gatsby-focus-wrapper`)\n\n // Client only pages have any empty body so we just do a normal\n // render to avoid React complaining about hydration mis-matches.\n let defaultRenderer = render\n if (focusEl && focusEl.children.length) {\n defaultRenderer = hydrate\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n defaultRenderer\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n renderer(, rootElement)\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n\n return\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","/* global HAS_REACT_18 */\n\nconst map = new WeakMap()\n\n/**\n * Since react 18, render and hydrate moved to react-dom/client\n * returns correct hydrate and render function based on installed react-dom version\n */\n\nexport function reactDOMUtils() {\n let render\n let hydrate\n\n if (HAS_REACT_18) {\n const reactDomClient = require(`react-dom/client`)\n\n render = (Component, el) => {\n let root = map.get(el)\n if (!root) {\n map.set(el, (root = reactDomClient.createRoot(el)))\n }\n root.render(Component)\n }\n\n hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n } else {\n const reactDomClient = require(`react-dom`)\n render = reactDomClient.render\n hydrate = reactDomClient.hydrate\n }\n\n return { render, hydrate }\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","// ./gatsby-browser.js\nimport React from \"react\";\nimport { SessionCheck } from \"./src/utils/auth\"\n\nexport const wrapRootElement = ({ element }) => {\n return (\n \n
{element}
\n
\n )\n}\n\n/* ensure gatsby renders the page form the page start */\nexport const shouldUpdateScroll = () => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'auto'\n })\n return false \n}\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\n\nvar _invariant = require(\"invariant\");\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.BreakpointProvider = exports.BreakpointContext = void 0;\nexports.useBreakpoint = useBreakpoint;\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _react = _interopRequireWildcard(require(\"react\"));\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\nconst defaultValue = {};\nconst BreakpointContext = /*#__PURE__*/(0, _react.createContext)(defaultValue);\nexports.BreakpointContext = BreakpointContext;\nconst BreakpointProvider = ({\n children,\n queries\n}) => {\n const [queryMatch, setQueryMatch] = (0, _react.useState)({});\n (0, _react.useEffect)(() => {\n const mediaQueryLists = {};\n const keys = Object.keys(queries);\n let isAttached = false;\n const handleQueryListener = () => {\n const updatedMatches = keys.reduce((acc, media) => {\n acc[media] = !!(mediaQueryLists[media] && mediaQueryLists[media].matches);\n return acc;\n }, {});\n setQueryMatch(updatedMatches);\n };\n if (window && window.matchMedia) {\n const matches = {};\n keys.forEach(media => {\n if (typeof queries[media] === 'string') {\n mediaQueryLists[media] = window.matchMedia(queries[media]);\n matches[media] = mediaQueryLists[media].matches;\n } else {\n matches[media] = false;\n }\n });\n setQueryMatch(matches);\n isAttached = true;\n keys.forEach(media => {\n if (typeof queries[media] === 'string') {\n mediaQueryLists[media].addListener(handleQueryListener);\n }\n });\n }\n return () => {\n if (isAttached) {\n keys.forEach(media => {\n if (typeof queries[media] === 'string') {\n mediaQueryLists[media].removeListener(handleQueryListener);\n }\n });\n }\n };\n }, [queries]);\n return /*#__PURE__*/_react.default.createElement(BreakpointContext.Provider, {\n value: queryMatch\n }, children);\n};\nexports.BreakpointProvider = BreakpointProvider;\nBreakpointProvider.propTypes = {\n children: _propTypes.default.element.isRequired,\n queries: _propTypes.default.object.isRequired\n};\nfunction useBreakpoint() {\n const context = (0, _react.useContext)(BreakpointContext);\n if (context === defaultValue) {\n throw new Error('useBreakpoint must be used within BreakpointProvider');\n }\n return context;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.defaultQueries = void 0;\nconst defaultQueries = {\n xs: '(max-width: 320px)',\n sm: '(max-width: 720px)',\n md: '(max-width: 1024px)',\n l: '(max-width: 1536px)'\n};\nexports.defaultQueries = defaultQueries;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.wrapRootElement = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _constants = require(\"./constants\");\nvar _BreakpointProvider = require(\"./BreakpointProvider\");\n// eslint-disable-next-line no-unused-vars\n\nconst wrapRootElement = ({\n element\n}, {\n queries = null\n}) => {\n return /*#__PURE__*/_react.default.createElement(_BreakpointProvider.BreakpointProvider, {\n queries: queries !== null ? queries : _constants.defaultQueries\n }, element);\n};\nexports.wrapRootElement = wrapRootElement;","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\"; // when we don't have localisation in our manifest, we tree shake everything away\n\nexport const onRouteUpdate = function onRouteUpdate({\n location\n}, pluginOptions) {\n if (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n const {\n localize\n } = pluginOptions;\n const manifestFilename = getManifestForPathname(location.pathname, localize, true);\n const manifestEl = document.head.querySelector(`link[rel=\"manifest\"]`);\n\n if (manifestEl) {\n manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n }\n }\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _gatsby = require(\"gatsby\");\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @param {boolean} shouldPrependPathPrefix\n * @return string\n */\nvar _default = (pathname, localizedManifests, shouldPrependPathPrefix = false) => {\n const defaultFilename = `manifest.webmanifest`;\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n const localizedManifest = localizedManifests.find(app => {\n let startUrl = app.start_url;\n\n if (shouldPrependPathPrefix) {\n startUrl = (0, _gatsby.withPrefix)(startUrl);\n }\n\n return pathname.startsWith(startUrl);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return `manifest_${localizedManifest.lang}.webmanifest`;\n};\n\nexports.default = _default;","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext, createContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", {\n baseuri: \"/\",\n basepath: \"/\",\n navigate: globalHistory.navigate\n});\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n {\n value: { baseuri: uri, basepath: basepath, navigate: props.navigate }\n },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a BaseContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch, resolve , BaseContext };","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\nfunction addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '',\n e = encodeURIComponent; // Must encode data\n\n for (var paramName in params) {\n queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n }\n if (!queryString) {\n return url;\n }\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n return url;\n} // https://gist.github.com/Xeoncross/7663273\n\nfunction ajax(url, options, callback, data, cache) {\n if (data && _typeof(data) === 'object') {\n if (!cache) {\n data['_t'] = new Date();\n } // URL encoded form data must be in querystring format\n\n data = addQueryString('', data).slice(1);\n }\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n try {\n var x;\n if (XMLHttpRequest) {\n x = new XMLHttpRequest();\n } else {\n x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n }\n x.open(data ? 'POST' : 'GET', url, 1);\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n x.withCredentials = !!options.withCredentials;\n if (data) {\n x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n if (x.overrideMimeType) {\n x.overrideMimeType(\"application/json\");\n }\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n x.onreadystatechange = function () {\n x.readyState > 3 && callback && callback(x.responseText, x);\n };\n x.send(data);\n } catch (e) {\n console && console.log(e);\n }\n}\nfunction getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: JSON.parse,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n crossDomain: false,\n ajax: ajax\n };\n}\nvar Backend = /*#__PURE__*/\nfunction () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Backend);\n this.init(services, options);\n this.type = 'backend';\n }\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var loadPath = this.options.loadPath;\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath([language], [namespace]);\n }\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: language,\n ns: namespace\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback) {\n var _this = this;\n this.options.ajax(url, this.options, function (data, xhr) {\n if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true\n /* retry */);\n\n if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false\n /* no retry */);\n\n var ret, err;\n try {\n ret = _this.options.parse(data, url);\n } catch (e) {\n err = 'failed parsing ' + url + ' to json';\n }\n if (err) return callback(err, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var _this2 = this;\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n languages.forEach(function (lng) {\n var url = _this2.services.interpolator.interpolate(_this2.options.addPath, {\n lng: lng,\n ns: namespace\n });\n _this2.options.ajax(url, _this2.options, function (data, xhr) {//const statusCode = xhr.status.toString();\n // TODO: if statusCode === 4xx do log\n }, payload);\n });\n }\n }]);\n return Backend;\n}();\nBackend.type = 'backend';\nexport default Backend;","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += \"; Domain=\".concat(opt.domain);\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += \"; Path=\".concat(opt.path);\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n return str;\n};\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var search = window.location.search;\n if (!window.location.search && window.location.hash && window.location.hash.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n var query = search.substring(1);\n var params = query.split('&');\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\nvar hasLocalStorageSupport = null;\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\nvar hasSessionStorageSupport = null;\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n return found;\n }\n};\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n return found;\n }\n};\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === 'number' ? options.lookupFromSubdomainIndex + 1 : 1; // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n\n var language = typeof window !== 'undefined' && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i); // if there is no match (null) return undefined\n\n if (!language) return undefined; // return the given group match\n\n return language[lookupFromSubdomainIndex];\n }\n};\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'] // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n };\n}\n\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Browser);\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults()); // backwards compatibility\n\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n return Browser;\n}();\nBrowser.type = 'languageDetector';\nexport { Browser as default };","import article from './article.json';\nimport footer from './footer.json';\nimport common from './common.json';\nimport auth from './auth.json';\nimport account from './account.json';\nimport about from './about.json';\nimport notFound from './not-found.json';\n\nexport default {\n footer,\n common,\n article,\n auth,\n account,\n about,\n notFound,\n}\n","import article from './article.json';\nimport footer from './footer.json';\nimport common from './common.json';\nimport auth from './auth.json';\nimport account from './account.json';\nimport about from './about.json';\nimport notFound from './not-found.json';\n\nexport default {\n footer,\n common,\n article,\n auth,\n account,\n about,\n notFound,\n}\n","import article from './article.json';\nimport footer from './footer.json';\nimport common from './common.json';\nimport auth from './auth.json';\nimport account from './account.json';\nimport about from './about.json';\nimport notFound from './not-found.json';\n\nexport default {\n footer,\n common,\n article,\n auth,\n account,\n about,\n notFound,\n}\n","import i18n from \"i18next\"\nimport Backend from \"i18next-xhr-backend\"\nimport LanguageDetector from \"i18next-browser-languagedetector\"\nimport { initReactI18next } from \"react-i18next\"\n\nimport supportedLngs from './locales/supportedLngs.json';\nimport * as en from './locales/en';\nimport * as zh from './locales/zh';\nimport * as zh_tc from './locales/zh_tc';\n\n\ni18n\n .use(Backend)\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n fallbackLng: \"en\",\n \n // have a common namespace used around the full app\n ns: [\"common\"],\n defaultNS: \"common\",\n debug: false,\n supportedLngs,\n react: {\n wait: true,\n useSuspense: false,\n },\n resources: {\n en: en.default,\n zh: zh.default,\n zh_tc: zh_tc.default,\n }\n })\n\nexport default i18n","// src/utils/auth.js\nimport React from 'react';\n// import auth0 from \"auth0-js\"\nimport { navigate } from \"gatsby\"\nimport i18n from \"../i18n\"; // this is required, even if not used\n// import i18next from 'i18next'\n// import { contains } from 'ramda';\n// import { globalHistory } from '@gatsbyjs/reach-router';\n\nimport SmoothScroll from './smoothScroll';\n\n\n// import convertLinkLocale from './convertLinkLocale';\n// import supportedLngs from '../locales/supportedLngs';\nimport { MEDIUM_BREAKPOINT } from './breakpoints';\n// import CookiesPolicy from '../components/CookiesPolicy/CookiesPolicy';\n\nexport const isBrowser = typeof window !== \"undefined\" && window;\n\nconst databaseConnection = 'Username-Password-Authentication';\n\nconst authConfig = {\n domain: process.env.GATSBY_AUTH0_DOMAIN,\n clientID: process.env.GATSBY_AUTH0_CLIENTID,\n redirectUri: process.env.GATSBY_AUTH0_CALLBACK,\n responseType: \"token id_token\",\n scope: \"openid profile email\",\n}\n\n\nfunction initAuth(){\n return new window.auth0.WebAuth(authConfig)\n}\n\nexport const auth = {\n blank: () => {},\n\n getter( name, args ){\n if( typeof window == \"undefined\" || typeof window.auth0 == \"undefined\" ) {\n return this.blank;\n }\n\n if( typeof window.authAgent == \"undefined\" ) {\n window.authAgent = initAuth();\n }\n\n if( typeof window.authAgent[name] == \"undefined\" ) {\n return this.blank;\n }\n\n return window.authAgent[name].call( window.authAgent, ...args );\n },\n\n login(){ return this.getter( 'login', arguments ) },\n authorize(){ return this.getter( 'authorize', arguments ) },\n changePassword(){ return this.getter( 'changePassword', arguments ) },\n checkSession(){ return this.getter( 'checkSession', arguments ) },\n parseHash(){ return this.getter( 'parseHash', arguments ) },\n logout(){ return this.getter( 'logout', arguments ) },\n}\n\nexport let auth0Manage = null;\n\nconst goHome = () => navigate(`/${i18n.language === 'en' ? '' : i18n.language}`);\n\nconst tokens = {\n accessToken: false,\n idToken: false,\n expiresAt: false,\n}\n\nlet user = {}\n\n\nexport const isAuthenticated = () => {\n if (!isBrowser) {\n return\n }\n\n return localStorage.getItem(\"isLoggedIn\") === \"true\"\n}\n\nexport const login = (username, password, setError) => {\n if (!isBrowser) {\n return\n }\n // auth.crossOriginVerification();\nconsole.log( auth );\n auth.login({\n realm: databaseConnection,\n username,\n password,\n }, err => {\n const errorText = (err.description.rules && err.description.rules.length > 0 && err.description.rules[0].message) || err.description || '';\n setError(errorText);\n });\n}\n\nexport const loginWithFacebook = (setError) => {\n if (!isBrowser) {\n return\n }\n auth.authorize({\n connection: 'facebook'\n }, err => {\n const errorText = (err.description.rules && err.description.rules.length > 0 && err.description.rules[0].message) || err.description || '';\n setError(errorText);\n });\n}\n\nexport const loginWithWeibo = (setError) => {\n if(!isBrowser) return;\n auth.authorize({ connection: 'weibo' }, err => {\n console.log(err);\n });\n}\n\nexport const signup = (email, password, firstname, lastname, country, city, receiveUpdates, receiveEmails, setError) => {\n if (!isBrowser) {\n return\n }\n auth.redirect.signupAndLogin({\n connection: databaseConnection,\n email: email,\n password: password,\n user_metadata: {\n firstname: firstname,\n lastname: lastname,\n country: country,\n city: city,\n // Auth0 doesn't to provide bool in signup user_metadata\n // if property is false, just set it empty\n receiveEmails: receiveEmails ? receiveEmails.toString() : '',\n receiveUpdates: receiveUpdates ? receiveUpdates.toString() : '',\n }\n }, err => {\n if(err) {\n console.log(err);\n const errorText = (err.description && err.description.rules && err.description.rules.length > 0 && err.description.rules[0].message) || err.description || '';\n setError(errorText);\n }\n });\n}\n\nexport const resetPassword = (email, setEmailSentText) => {\n auth.changePassword({\n connection: databaseConnection,\n email,\n }, (err, res) => {\n if(res) {\n setEmailSentText(res);\n }\n });\n}\n\nconst setSession = (cb = () => {}) => (err, authResult) => {\n if (err) {\n cb()\n return\n }\n\n if (authResult && authResult.accessToken && authResult.idToken) {\n if (!isBrowser) {\n return\n }\n\n\n let expiresAt = authResult.expiresIn * 1000 + new Date().getTime()\n\n tokens.accessToken = authResult.accessToken\n tokens.idToken = authResult.idToken\n tokens.expiresAt = expiresAt\n\n user = authResult.idTokenPayload\n\n setUserData(cb)\n \n localStorage.setItem(\"user\", JSON.stringify(user))\n localStorage.setItem(\"isLoggedIn\", true)\n\n }\n}\n\nexport const silentAuth = callback => {\n if (!isAuthenticated()) return callback()\n\n\n // scopes will not work because consent required.\n\n // auth.checkSession({\n // audience: 'https://tkdev.auth0.com/api/v2/',\n // scope: 'openid email profile read:current_user',\n // }, setSession(callback));\n\n auth.checkSession({\n audience: process.env.GATSBY_AUTH0_AUDIENCE,\n scope: 'openid email profile',\n }, setSession(callback));\n\n}\n\nexport const setUserData = (cb = () => {}) => {\n auth.checkSession({\n audience: process.env.GATSBY_AUTH0_AUDIENCE,\n scope: 'read:current_user update:current_user_metadata',\n }, (err, authResult) => {\n \n if(err) {\n cb();\n return;\n };\n auth0Manage = isBrowser ? new window.auth0.Management({\n domain: process.env.GATSBY_AUTH0_DOMAIN,\n token: authResult.accessToken,\n }) : null;\n if(!auth0Manage) {\n cb();\n return;\n }\n auth0Manage.getUser(authResult.idTokenPayload.sub, (err, result) => {\n if(result) {\n localStorage.setItem(\"user\", JSON.stringify(result));\n if(result && (!result.user_metadata || !result.user_metadata.firstname)) {\n const userMetadata = {\n city: '',\n country: '',\n firstname: result.given_name || '',\n lastname: result.family_name || '',\n receiveEmails: 'true',\n receiveUpdates: 'true',\n };\n updateUserData(userMetadata, cb);\n }\n }\n if(cb) cb();\n });\n });\n}\n\nexport const updateUserData = (userMetadata, cb) => {\n const user = getProfile();\n auth0Manage.patchUserMetadata(user.user_id, userMetadata, (err, result) => {\n if(!err && result) {\n localStorage.setItem('user', JSON.stringify(result));\n }\n if(cb) cb();\n });\n}\n\nexport const handleAuthentication = () => {\n if (!isBrowser) {\n return\n }\n const articleFallbackUrl = localStorage.getItem('articleFallbackUrl');\n auth.parseHash(setSession(articleFallbackUrl ? () => {navigate(articleFallbackUrl)} : goHome));\n}\n\nexport const getProfile = () => {\n if (!isBrowser) {\n return\n }\n\n return JSON.parse(localStorage.getItem(\"user\"))\n}\n\nexport const logout = () => {\n if (!isBrowser) {\n return\n }\n\n localStorage.setItem(\"isLoggedIn\", false)\n auth.logout()\n}\n\nclass SessionCheck extends React.Component {\n constructor(props) {\n super(props)\n this.state = {\n loading: true,\n }\n\n this.handleCheckSession = this.handleCheckSession.bind(this)\n }\n\n handleCheckSession = () => {\n this.setState({ loading: false })\n }\n\n UNSAFE_componentWillMount() {\n /*\n if(typeof window !== 'undefined') {\n globalHistory.listen(({ action }) => { \n if(action === 'PUSH') {\n const { pathname } = window.location;\n const pageLngCode = pathname.split('/')[1] === '' ? 'en' : pathname.split('/')[1];\n const lngCode = supportedLngs.find(lng => lng === pageLngCode) || 'en';\n // i18next.changeLanguage(lngCode);\n }\n });\n }\n */\n\n // Set user pref language\n // if(\n // typeof window !== 'undefined' &&\n // globalHistory.location.pathname.indexOf(i18next.language) === -1 &&\n // globalHistory.location.pathname.indexOf('callback') === -1 &&\n // i18next.language !== 'en'\n // ) {\n // console.log('SET USER PREF');\n // const { pathname } = globalHistory.location;\n // const pathnameCleared = pathname.replace('-zh-tc', '').replace('-zh', '');\n // const lastLetterSlash = pathnameCleared[pathnameCleared.length - 1] === '/';\n // const path = lastLetterSlash ? pathnameCleared.slice(0, pathnameCleared.length - 1) : pathnameCleared;\n // window.location.pathname = contains('category', path) && i18next.language !== 'en' ?\n // `${convertLinkLocale(path, i18next.language)}-${i18next.language.replace('_', '-')}` :\n // convertLinkLocale(path, i18next.language);\n // }\n }\n\n componentDidMount() {\n silentAuth(this.handleCheckSession);\n if(typeof window !== \"undefined\" && window.innerWidth > MEDIUM_BREAKPOINT) {\n SmoothScroll({\n animationTime: 1600,\n stepSize: 200,\n\n accelerationDelta: 20,\n accelerationMax: 1,\n\n pulseAlgorithm : true,\n pulseScale : 3,\n pulseNormalize : 1,\n });\n }\n }\n render() {\n return (\n !this.state.loading && (\n <>\n {this.props.children}\n {/* */}\n \n )\n )\n }\n}\nexport { SessionCheck }\n","export const TABLET_BREAKPOINT = 767\nexport const MEDIUM_BREAKPOINT = 834\nexport const LARGE_BREAKPOINT = 1024\nexport const XLARGE_BREAKPOINT = 1440\n","/* eslint-disable */ \n// SmoothScroll for websites v1.4.10 (Balazs Galambosi)\n// http://www.smoothscroll.net/\n//\n// Licensed under the terms of the MIT license.\n//\n// You may use it in your theme if you credit me. \n// It is also free to use on any individual website.\n//\n// Exception:\n// The only restriction is to not publish any \n// extension for browsers or native application\n// without getting a written permission first.\n//\n\n(function () {\n if (typeof document === 'undefined') {\n // not a browser\n return\n }\n\n// Scroll Variables (tweakable)\nvar defaultOptions = {\n\n // Scrolling Core\n frameRate : 150, // [Hz]\n animationTime : 400, // [ms]\n stepSize : 100, // [px]\n\n // Pulse (less tweakable)\n // ratio of \"tail\" to \"acceleration\"\n pulseAlgorithm : true,\n pulseScale : 4,\n pulseNormalize : 1,\n\n // Acceleration\n accelerationDelta : 50, // 50\n accelerationMax : 3, // 3\n\n // Keyboard Settings\n keyboardSupport : true, // option\n arrowScroll : 50, // [px]\n\n // Other\n fixedBackground : true, \n excluded : '' \n};\n\nvar options = defaultOptions;\n\n\n// Other Variables\nvar isExcluded = false;\nvar isFrame = false;\nvar direction = { x: 0, y: 0 };\nvar initDone = false;\nvar root = document.documentElement;\nvar activeElement;\nvar observer;\nvar refreshSize;\nvar deltaBuffer = [];\nvar deltaBufferTimer;\nvar isMac = /^Mac/.test(navigator.platform);\n\nvar key = { left: 37, up: 38, right: 39, down: 40, spacebar: 32, \n pageup: 33, pagedown: 34, end: 35, home: 36 };\nvar arrowKeys = { 37: 1, 38: 1, 39: 1, 40: 1 };\n\n/***********************************************\n * INITIALIZE\n ***********************************************/\n\n/**\n * Tests if smooth scrolling is allowed. Shuts down everything if not.\n */\nfunction initTest() {\n if (options.keyboardSupport) {\n addEvent('keydown', keydown);\n }\n}\n\n/**\n * Sets up scrolls array, determines if frames are involved.\n */\nfunction init() {\n \n if (initDone || !document.body) return;\n\n initDone = true;\n\n var body = document.body;\n var html = document.documentElement;\n var windowHeight = window.innerHeight; \n var scrollHeight = body.scrollHeight;\n \n // check compat mode for root element\n root = (document.compatMode.indexOf('CSS') >= 0) ? html : body;\n activeElement = body;\n \n initTest();\n\n // Checks if this script is running in a frame\n if (top != self) {\n isFrame = true;\n }\n\n /**\n * Safari 10 fixed it, Chrome fixed it in v45:\n * This fixes a bug where the areas left and right to \n * the content does not trigger the onmousewheel event\n * on some pages. e.g.: html, body { height: 100% }\n */\n else if (isOldSafari &&\n scrollHeight > windowHeight &&\n (body.offsetHeight <= windowHeight || \n html.offsetHeight <= windowHeight)) {\n\n var fullPageElem = document.createElement('div');\n fullPageElem.style.cssText = 'position:absolute; z-index:-10000; ' +\n 'top:0; left:0; right:0; height:' + \n root.scrollHeight + 'px';\n document.body.appendChild(fullPageElem);\n \n // DOM changed (throttled) to fix height\n var pendingRefresh;\n refreshSize = function () {\n if (pendingRefresh) return; // could also be: clearTimeout(pendingRefresh);\n pendingRefresh = setTimeout(function () {\n if (isExcluded) return; // could be running after cleanup\n fullPageElem.style.height = '0';\n fullPageElem.style.height = root.scrollHeight + 'px';\n pendingRefresh = null;\n }, 500); // act rarely to stay fast\n };\n \n setTimeout(refreshSize, 10);\n\n addEvent('resize', refreshSize);\n\n // TODO: attributeFilter?\n var config = {\n attributes: true, \n childList: true, \n characterData: false \n // subtree: true\n };\n\n observer = new MutationObserver(refreshSize);\n observer.observe(body, config);\n\n if (root.offsetHeight <= windowHeight) {\n var clearfix = document.createElement('div'); \n clearfix.style.clear = 'both';\n body.appendChild(clearfix);\n }\n }\n\n // disable fixed background\n if (!options.fixedBackground && !isExcluded) {\n body.style.backgroundAttachment = 'scroll';\n html.style.backgroundAttachment = 'scroll';\n }\n}\n\n/**\n * Removes event listeners and other traces left on the page.\n */\nfunction cleanup() {\n observer && observer.disconnect();\n removeEvent(wheelEvent, wheel);\n removeEvent('mousedown', mousedown);\n removeEvent('keydown', keydown);\n removeEvent('resize', refreshSize);\n removeEvent('load', init);\n}\n\n\n/************************************************\n * SCROLLING \n ************************************************/\n \nvar que = [];\nvar pending = false;\nvar lastScroll = Date.now();\n\n/**\n * Pushes scroll actions to the scrolling queue.\n */\nfunction scrollArray(elem, left, top) {\n \n directionCheck(left, top);\n\n if (options.accelerationMax != 1) {\n var now = Date.now();\n var elapsed = now - lastScroll;\n if (elapsed < options.accelerationDelta) {\n var factor = (1 + (50 / elapsed)) / 2;\n if (factor > 1) {\n factor = Math.min(factor, options.accelerationMax);\n left *= factor;\n top *= factor;\n }\n }\n lastScroll = Date.now();\n } \n \n // push a scroll command\n que.push({\n x: left, \n y: top, \n lastX: (left < 0) ? 0.99 : -0.99,\n lastY: (top < 0) ? 0.99 : -0.99, \n start: Date.now()\n });\n \n // don't act if there's a pending queue\n if (pending) {\n return;\n } \n\n var scrollRoot = getScrollRoot();\n var isWindowScroll = (elem === scrollRoot || elem === document.body);\n \n // if we haven't already fixed the behavior, \n // and it needs fixing for this sesh\n if (elem.$scrollBehavior == null && isScrollBehaviorSmooth(elem)) {\n elem.$scrollBehavior = elem.style.scrollBehavior;\n elem.style.scrollBehavior = 'auto';\n }\n\n var step = function (time) {\n \n var now = Date.now();\n var scrollX = 0;\n var scrollY = 0; \n \n for (var i = 0; i < que.length; i++) {\n \n var item = que[i];\n var elapsed = now - item.start;\n var finished = (elapsed >= options.animationTime);\n \n // scroll position: [0, 1]\n var position = (finished) ? 1 : elapsed / options.animationTime;\n \n // easing [optional]\n if (options.pulseAlgorithm) {\n position = pulse(position);\n }\n \n // only need the difference\n var x = (item.x * position - item.lastX) >> 0;\n var y = (item.y * position - item.lastY) >> 0;\n \n // add this to the total scrolling\n scrollX += x;\n scrollY += y; \n \n // update last values\n item.lastX += x;\n item.lastY += y;\n \n // delete and step back if it's over\n if (finished) {\n que.splice(i, 1); i--;\n } \n }\n\n // scroll left and top\n if (isWindowScroll) {\n window.scrollBy(scrollX, scrollY);\n } \n else {\n if (scrollX) elem.scrollLeft += scrollX;\n if (scrollY) elem.scrollTop += scrollY; \n }\n \n // clean up if there's nothing left to do\n if (!left && !top) {\n que = [];\n }\n \n if (que.length) { \n requestFrame(step, elem, (1000 / options.frameRate + 1)); \n } else { \n pending = false;\n // restore default behavior at the end of scrolling sesh\n if (elem.$scrollBehavior != null) {\n elem.style.scrollBehavior = elem.$scrollBehavior;\n elem.$scrollBehavior = null;\n }\n }\n };\n \n // start a new queue of actions\n requestFrame(step, elem, 0);\n pending = true;\n}\n\n\n/***********************************************\n * EVENTS\n ***********************************************/\n\n/**\n * Mouse wheel handler.\n * @param {Object} event\n */\nfunction wheel(event) {\n\n if (!initDone) {\n init();\n }\n \n var target = event.target;\n\n // leave early if default action is prevented \n // or it's a zooming event with CTRL \n if (event.defaultPrevented || event.ctrlKey) {\n return true;\n }\n \n // leave embedded content alone (flash & pdf)\n if (isNodeName(activeElement, 'embed') || \n (isNodeName(target, 'embed') && /\\.pdf/i.test(target.src)) ||\n isNodeName(activeElement, 'object') ||\n target.shadowRoot) {\n return true;\n }\n\n var deltaX = -event.wheelDeltaX || event.deltaX || 0;\n var deltaY = -event.wheelDeltaY || event.deltaY || 0;\n \n if (isMac) {\n if (event.wheelDeltaX && isDivisible(event.wheelDeltaX, 120)) {\n deltaX = -120 * (event.wheelDeltaX / Math.abs(event.wheelDeltaX));\n }\n if (event.wheelDeltaY && isDivisible(event.wheelDeltaY, 120)) {\n deltaY = -120 * (event.wheelDeltaY / Math.abs(event.wheelDeltaY));\n }\n }\n \n // use wheelDelta if deltaX/Y is not available\n if (!deltaX && !deltaY) {\n deltaY = -event.wheelDelta || 0;\n }\n\n // line based scrolling (Firefox mostly)\n if (event.deltaMode === 1) {\n deltaX *= 40;\n deltaY *= 40;\n }\n\n var overflowing = overflowingAncestor(target);\n\n // nothing to do if there's no element that's scrollable\n if (!overflowing) {\n // except Chrome iframes seem to eat wheel events, which we need to \n // propagate up, if the iframe has nothing overflowing to scroll\n if (isFrame && isChrome) {\n // change target to iframe element itself for the parent frame\n Object.defineProperty(event, \"target\", {value: window.frameElement});\n return parent.wheel(event);\n }\n return true;\n }\n \n // check if it's a touchpad scroll that should be ignored\n if (isTouchpad(deltaY)) {\n return true;\n }\n\n // scale by step size\n // delta is 120 most of the time\n // synaptics seems to send 1 sometimes\n if (Math.abs(deltaX) > 1.2) {\n deltaX *= options.stepSize / 120;\n }\n if (Math.abs(deltaY) > 1.2) {\n deltaY *= options.stepSize / 120;\n }\n \n scrollArray(overflowing, deltaX, deltaY);\n event.preventDefault();\n scheduleClearCache();\n}\n\n/**\n * Keydown event handler.\n * @param {Object} event\n */\nfunction keydown(event) {\n\n var target = event.target;\n var modifier = event.ctrlKey || event.altKey || event.metaKey || \n (event.shiftKey && event.keyCode !== key.spacebar);\n \n // our own tracked active element could've been removed from the DOM\n if (!document.body.contains(activeElement)) {\n activeElement = document.activeElement;\n }\n\n // do nothing if user is editing text\n // or using a modifier key (except shift)\n // or in a dropdown\n // or inside interactive elements\n var inputNodeNames = /^(textarea|select|embed|object)$/i;\n var buttonTypes = /^(button|submit|radio|checkbox|file|color|image)$/i;\n if ( event.defaultPrevented ||\n inputNodeNames.test(target.nodeName) ||\n isNodeName(target, 'input') && !buttonTypes.test(target.type) ||\n isNodeName(activeElement, 'video') ||\n isInsideYoutubeVideo(event) ||\n target.isContentEditable || \n modifier ) {\n return true;\n }\n\n // [spacebar] should trigger button press, leave it alone\n if ((isNodeName(target, 'button') ||\n isNodeName(target, 'input') && buttonTypes.test(target.type)) &&\n event.keyCode === key.spacebar) {\n return true;\n }\n\n // [arrwow keys] on radio buttons should be left alone\n if (isNodeName(target, 'input') && target.type == 'radio' &&\n arrowKeys[event.keyCode]) {\n return true;\n }\n \n var shift, x = 0, y = 0;\n var overflowing = overflowingAncestor(activeElement);\n\n if (!overflowing) {\n // Chrome iframes seem to eat key events, which we need to \n // propagate up, if the iframe has nothing overflowing to scroll\n return (isFrame && isChrome) ? parent.keydown(event) : true;\n }\n\n var clientHeight = overflowing.clientHeight; \n\n if (overflowing == document.body) {\n clientHeight = window.innerHeight;\n }\n\n switch (event.keyCode) {\n case key.up:\n y = -options.arrowScroll;\n break;\n case key.down:\n y = options.arrowScroll;\n break; \n case key.spacebar: // (+ shift)\n shift = event.shiftKey ? 1 : -1;\n y = -shift * clientHeight * 0.9;\n break;\n case key.pageup:\n y = -clientHeight * 0.9;\n break;\n case key.pagedown:\n y = clientHeight * 0.9;\n break;\n case key.home:\n if (overflowing == document.body && document.scrollingElement)\n overflowing = document.scrollingElement;\n y = -overflowing.scrollTop;\n break;\n case key.end:\n var scroll = overflowing.scrollHeight - overflowing.scrollTop;\n var scrollRemaining = scroll - clientHeight;\n y = (scrollRemaining > 0) ? scrollRemaining + 10 : 0;\n break;\n case key.left:\n x = -options.arrowScroll;\n break;\n case key.right:\n x = options.arrowScroll;\n break; \n default:\n return true; // a key we don't care about\n }\n\n scrollArray(overflowing, x, y);\n event.preventDefault();\n scheduleClearCache();\n}\n\n/**\n * Mousedown event only for updating activeElement\n */\nfunction mousedown(event) {\n activeElement = event.target;\n}\n\n\n/***********************************************\n * OVERFLOW\n ***********************************************/\n\nvar uniqueID = (function () {\n var i = 0;\n return function (el) {\n return el.uniqueID || (el.uniqueID = i++);\n };\n})();\n\nvar cacheX = {}; // cleared out after a scrolling session\nvar cacheY = {}; // cleared out after a scrolling session\nvar clearCacheTimer;\nvar smoothBehaviorForElement = {};\n\n//setInterval(function () { cache = {}; }, 10 * 1000);\n\nfunction scheduleClearCache() {\n clearTimeout(clearCacheTimer);\n clearCacheTimer = setInterval(function () { \n cacheX = cacheY = smoothBehaviorForElement = {}; \n }, 1*1000);\n}\n\nfunction setCache(elems, overflowing, x) {\n var cache = x ? cacheX : cacheY;\n for (var i = elems.length; i--;)\n cache[uniqueID(elems[i])] = overflowing;\n return overflowing;\n}\n\nfunction getCache(el, x) {\n return (x ? cacheX : cacheY)[uniqueID(el)];\n}\n\n// (body) (root)\n// | hidden | visible | scroll | auto |\n// hidden | no | no | YES | YES |\n// visible | no | YES | YES | YES |\n// scroll | no | YES | YES | YES |\n// auto | no | YES | YES | YES |\n\nfunction overflowingAncestor(el) {\n var elems = [];\n var body = document.body;\n var rootScrollHeight = root.scrollHeight;\n do {\n var cached = getCache(el, false);\n if (cached) {\n return setCache(elems, cached);\n }\n elems.push(el);\n if (rootScrollHeight === el.scrollHeight) {\n var topOverflowsNotHidden = overflowNotHidden(root) && overflowNotHidden(body);\n var isOverflowCSS = topOverflowsNotHidden || overflowAutoOrScroll(root);\n if (isFrame && isContentOverflowing(root) || \n !isFrame && isOverflowCSS) {\n return setCache(elems, getScrollRoot()); \n }\n } else if (isContentOverflowing(el) && overflowAutoOrScroll(el)) {\n return setCache(elems, el);\n }\n } while ((el = el.parentElement));\n}\n\nfunction isContentOverflowing(el) {\n return (el.clientHeight + 10 < el.scrollHeight);\n}\n\n// typically for and \nfunction overflowNotHidden(el) {\n var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y');\n return (overflow !== 'hidden');\n}\n\n// for all other elements\nfunction overflowAutoOrScroll(el) {\n var overflow = getComputedStyle(el, '').getPropertyValue('overflow-y');\n return (overflow === 'scroll' || overflow === 'auto');\n}\n\n// for all other elements\nfunction isScrollBehaviorSmooth(el) {\n var id = uniqueID(el);\n if (smoothBehaviorForElement[id] == null) {\n var scrollBehavior = getComputedStyle(el, '')['scroll-behavior'];\n smoothBehaviorForElement[id] = ('smooth' == scrollBehavior);\n }\n return smoothBehaviorForElement[id];\n}\n\n\n/***********************************************\n * HELPERS\n ***********************************************/\n\nfunction addEvent(type, fn, arg) {\n window.addEventListener(type, fn, arg || false);\n}\n\nfunction removeEvent(type, fn, arg) {\n window.removeEventListener(type, fn, arg || false); \n}\n\nfunction isNodeName(el, tag) {\n return el && (el.nodeName||'').toLowerCase() === tag.toLowerCase();\n}\n\nfunction directionCheck(x, y) {\n x = (x > 0) ? 1 : -1;\n y = (y > 0) ? 1 : -1;\n if (direction.x !== x || direction.y !== y) {\n direction.x = x;\n direction.y = y;\n que = [];\n lastScroll = 0;\n }\n}\n\nif (window.localStorage && localStorage.SS_deltaBuffer) {\n try { // #46 Safari throws in private browsing for localStorage \n deltaBuffer = localStorage.SS_deltaBuffer.split(',');\n } catch (e) { } \n}\n\nfunction isTouchpad(deltaY) {\n if (!deltaY) return;\n if (!deltaBuffer.length) {\n deltaBuffer = [deltaY, deltaY, deltaY];\n }\n deltaY = Math.abs(deltaY);\n deltaBuffer.push(deltaY);\n deltaBuffer.shift();\n clearTimeout(deltaBufferTimer);\n deltaBufferTimer = setTimeout(function () {\n try { // #46 Safari throws in private browsing for localStorage\n localStorage.SS_deltaBuffer = deltaBuffer.join(',');\n } catch (e) { } \n }, 1000);\n var dpiScaledWheelDelta = deltaY > 120 && allDeltasDivisableBy(deltaY); // win64 \n var tp = !allDeltasDivisableBy(120) && !allDeltasDivisableBy(100) && !dpiScaledWheelDelta;\n if (deltaY < 50) return true;\n return tp;\n} \n\nfunction isDivisible(n, divisor) {\n return (Math.floor(n / divisor) == n / divisor);\n}\n\nfunction allDeltasDivisableBy(divisor) {\n return (isDivisible(deltaBuffer[0], divisor) &&\n isDivisible(deltaBuffer[1], divisor) &&\n isDivisible(deltaBuffer[2], divisor));\n}\n\nfunction isInsideYoutubeVideo(event) {\n var elem = event.target;\n var isControl = false;\n if (document.URL.indexOf ('www.youtube.com/watch') != -1) {\n do {\n isControl = (elem.classList && \n elem.classList.contains('html5-video-controls'));\n if (isControl) break;\n } while ((elem = elem.parentNode));\n }\n return isControl;\n}\n\nvar requestFrame = (function () {\n return (window.requestAnimationFrame || \n window.webkitRequestAnimationFrame || \n window.mozRequestAnimationFrame ||\n function (callback, element, delay) {\n window.setTimeout(callback, delay || (1000/60));\n });\n})();\n\nvar MutationObserver = (window.MutationObserver || \n window.WebKitMutationObserver ||\n window.MozMutationObserver); \n\nvar getScrollRoot = (function() {\n var SCROLL_ROOT = document.scrollingElement;\n return function() {\n if (!SCROLL_ROOT) {\n var dummy = document.createElement('div');\n dummy.style.cssText = 'height:10000px;width:1px;';\n document.body.appendChild(dummy);\n var bodyScrollTop = document.body.scrollTop;\n var docElScrollTop = document.documentElement.scrollTop;\n window.scrollBy(0, 3);\n if (document.body.scrollTop != bodyScrollTop)\n (SCROLL_ROOT = document.body);\n else \n (SCROLL_ROOT = document.documentElement);\n window.scrollBy(0, -3);\n document.body.removeChild(dummy);\n }\n return SCROLL_ROOT;\n };\n})();\n\n\n/***********************************************\n * PULSE (by Michael Herf)\n ***********************************************/\n \n/**\n * Viscous fluid with a pulse for part and decay for the rest.\n * - Applies a fixed force over an interval (a damped acceleration), and\n * - Lets the exponential bleed away the velocity over a longer interval\n * - Michael Herf, http://stereopsis.com/stopping/\n */\nfunction pulse_(x) {\n var val, start, expx;\n // test\n x = x * options.pulseScale;\n if (x < 1) { // acceleartion\n val = x - (1 - Math.exp(-x));\n } else { // tail\n // the previous animation ended here:\n start = Math.exp(-1);\n // simple viscous drag\n x -= 1;\n expx = 1 - Math.exp(-x);\n val = start + (expx * (1 - start));\n }\n return val * options.pulseNormalize;\n}\n\nfunction pulse(x) {\n if (x >= 1) return 1;\n if (x <= 0) return 0;\n\n if (options.pulseNormalize == 1) {\n options.pulseNormalize /= pulse_(1);\n }\n return pulse_(x);\n}\n\n\n/***********************************************\n * FIRST RUN\n ***********************************************/\n\nvar userAgent = window.navigator.userAgent;\nvar isEdge = /Edge/.test(userAgent); // thank you MS\nvar isChrome = /chrome/i.test(userAgent) && !isEdge; \nvar isSafari = /safari/i.test(userAgent) && !isEdge; \nvar isFirefox = /Firefox/i.test(userAgent) && !isEdge;\nvar isMobile = /mobile/i.test(userAgent);\nvar isIEWin7 = /Windows NT 6.1/i.test(userAgent) && /rv:11/i.test(userAgent);\nvar isOldSafari = isSafari && (/Version\\/8/i.test(userAgent) || /Version\\/9/i.test(userAgent));\nvar isEnabledForBrowser = (isChrome || isSafari || isIEWin7 || isFirefox) && !isMobile;\n\nvar supportsPassive = false;\ntry {\n window.addEventListener(\"test\", null, Object.defineProperty({}, 'passive', {\n get: function () {\n supportsPassive = true;\n } \n }));\n} catch(e) {}\n\nvar wheelOpt = supportsPassive ? { passive: false } : false;\nvar wheelEvent = 'onwheel' in document.createElement('div') ? 'wheel' : 'mousewheel'; \n\nif (wheelEvent && isEnabledForBrowser) {\n \n addEvent(wheelEvent, wheel, wheelOpt);\n addEvent('mousedown', mousedown);\n addEvent('load', init);\n}\n\n\n/***********************************************\n * PUBLIC INTERFACE\n ***********************************************/\n\nfunction SmoothScroll(optionsToSet) {\n for (var key in optionsToSet)\n if (defaultOptions.hasOwnProperty(key)) \n options[key] = optionsToSet[key];\n}\nSmoothScroll.destroy = cleanup;\n\nif (window.SmoothScrollOptions) // async API\n SmoothScroll(window.SmoothScrollOptions);\n\nif (typeof define === 'function' && define.amd)\n define(function() {\n return SmoothScroll;\n });\nelse if ('object' == typeof exports)\n module.exports = SmoothScroll;\nelse\n window.SmoothScroll = SmoothScroll;\n\n})();\n\n/* eslint-enable */ \n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.5.4 - MIT builder.io */\\n!function(t,e,n,i,r,o,a,d,s,c,p,l){function u(){l||(l=1,\\\"/\\\"==(a=(o.lib||\\\"/~partytown/\\\")+(o.debug?\\\"debug/\\\":\\\"\\\"))[0]&&(s=e.querySelectorAll('script[type=\\\"text/partytown\\\"]'),i!=t?i.dispatchEvent(new CustomEvent(\\\"pt1\\\",{detail:t})):(d=setTimeout(w,1e4),e.addEventListener(\\\"pt0\\\",f),r?h(1):n.serviceWorker?n.serviceWorker.register(a+(o.swPath||\\\"partytown-sw.js\\\"),{scope:a}).then((function(t){t.active?h():t.installing&&t.installing.addEventListener(\\\"statechange\\\",(function(t){\\\"activated\\\"==t.target.state&&h()}))}),console.error):w())))}function h(t){c=e.createElement(t?\\\"script\\\":\\\"iframe\\\"),t||(c.setAttribute(\\\"style\\\",\\\"display:block;width:0;height:0;border:0;visibility:hidden\\\"),c.setAttribute(\\\"aria-hidden\\\",!0)),c.src=a+\\\"partytown-\\\"+(t?\\\"atomics.js?v=0.5.4\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function w(t,n){for(f(),t=0;t {\n const { forward = [], ...filteredConfig } = config || {};\n const configStr = JSON.stringify(filteredConfig, (k, v) => {\n if (typeof v === 'function') {\n v = String(v);\n if (v.startsWith(k + '(')) {\n v = 'function ' + v;\n }\n }\n return v;\n });\n return [\n `!(function(w,p,f,c){`,\n Object.keys(filteredConfig).length > 0\n ? `c=w[p]=Object.assign(w[p]||{},${configStr});`\n : `c=w[p]=w[p]||{};`,\n `c[f]=(c[f]||[])`,\n forward.length > 0 ? `.concat(${JSON.stringify(forward)})` : ``,\n `})(window,'partytown','forward');`,\n snippetCode,\n ].join('');\n};\n\n/**\n * The `type` attribute for Partytown scripts, which does two things:\n *\n * 1. Prevents the `