{"version":3,"file":"app-030846a57898a54db824.js","mappings":";uHAAA,MAAMA,EAAUC,EAAQ,OAClB,2BAAEC,EAA0B,SAAEC,EAAQ,aAAEC,GAC5CH,EAAAA,MAAAA,GAEFI,EAAQ,EAAY,SAACC,EAAKC,EAAWC,EAAeC,QAAtB,IAAJF,IAAAA,EAAO,CAAC,GAYhC,IAAIG,EAAUV,EAAQW,KAAIC,IACxB,IAAKA,EAAOA,OAAON,GACjB,OAGFC,EAAKL,2BAA6BA,EAClCK,EAAKJ,SAAWA,EAChBI,EAAKH,aAAeA,EAEpB,MAAMS,EAASD,EAAOA,OAAON,GAAKC,EAAMK,EAAOE,SAI/C,OAHID,GAAUJ,IACZF,EAAOE,EAAa,CAAEF,OAAMM,SAAQD,YAE/BC,CAAM,IAMf,OAFAH,EAAUA,EAAQK,QAAOF,QAA4B,IAAXA,IAEtCH,EAAQM,OAAS,EACZN,EACEF,EACF,CAACA,GAED,EAEX,EAEAH,EAAQ,EAAiB,CAACC,EAAKC,EAAMC,IACnCR,EAAQiB,QACN,CAACC,EAAUC,IACTA,EAAKP,OAAON,GACRY,EAASE,MAAK,IAAMD,EAAKP,OAAON,GAAKC,EAAMY,EAAKL,WAChDI,GACNG,QAAQC,6CChDZC,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIC,EAAe,WAAc,SAASC,EAAiBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAMb,OAAQc,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMX,OAAOC,eAAeI,EAAQG,EAAWI,IAAKJ,EAAa,CAAE,CAAE,OAAO,SAAUK,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYV,EAAiBS,EAAYG,UAAWF,GAAiBC,GAAaX,EAAiBS,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAIfI,EAAUC,EAFD,EAAQ,OAMjBC,EAAeD,EAFD,EAAQ,OAI1B,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAQ9F,IAAIG,EAAgB,SAAUC,GAG5B,SAASD,IAGP,OAZJ,SAAyBE,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAUpJC,CAAgBC,KAAML,GAR1B,SAAoCM,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAUpOE,CAA2BJ,MAAOL,EAAcU,WAAajC,OAAOkC,eAAeX,IAAgBY,MAAMP,KAAMQ,WACxH,CAaA,OAtBF,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CAG3eI,CAAUnB,EAAeC,GAQzBrB,EAAaoB,EAAe,CAAC,CAC3BX,IAAK,SACLV,MAAO,WACL,OAAOe,EAAQK,QAAQqB,cACrB,SACAf,KAAKtB,MACLsB,KAAKtB,MAAMsC,SAEf,KAGKrB,CACT,CArBoB,CAqBlBN,EAAQK,QAAQuB,WAIlB/D,EAAA,SAAkB,EAAIqC,EAAaG,SAASC,yCCxC3BuB,EAAE,EAAQ,MAASC,EAAE,CAACC,QAAO,GAAIC,EAAE,IAAIC,IAAIC,EAAEC,OAAOC,IAAI,iBAAiBC,EAAEF,OAAOC,IAAI,cAAcE,EAAEH,OAAOC,IAAI,uBAAuBG,EAAEV,EAAEW,mDAAmDC,gBAAkF,SAASC,EAAEC,EAAEC,EAAEC,GAAGlC,KAAKmC,QAAQH,EAAEhC,KAAKoC,OAAOH,EAAEjC,KAAKqC,UAAUH,CAAC,CACjW,SAASI,EAAEN,GAAG,OAAOA,EAAEG,SAAS,KAAK,EAAE,OAAOH,EAAEI,OAAO,KAAK,EAAE,IAAIH,EAAEM,KAAKC,MAAMR,EAAEI,OAAOJ,EAAEK,UAAUI,WAAuB,OAAZT,EAAEG,QAAQ,EAASH,EAAEI,OAAOH,EAAE,KAAK,EAAa,IAAI,IAAIC,GAAnBD,EAAED,EAAEI,QAAmBM,OAAOC,EAAE,EAAEA,EAAET,EAAErE,OAAO8E,IAAI,CAAC,IAAIC,EAAEvB,EAAEwB,IAAIX,EAAES,IAAI,GAAG,OAAOC,EAAE,MAAMA,CAAE,CAAyG,OAAxGV,EAAEY,EAAoBb,EAAEc,IAAId,EAAE,MAAMA,EAAEe,KAAKd,EAAE,KAAKD,EAAEe,KAAKd,EAAEzC,WAAWyC,EAAExC,QAAQwC,EAAEA,EAAED,EAAEe,MAAMhB,EAAEG,QAAQ,EAASH,EAAEI,OAAOH,EAAE,KAAK,EAAE,MAAMD,EAAE,QAAQ,MAAMA,EAAEI,OAAQ,CAAC,SAASa,IAAoB,OAAOX,EAAjBY,EAAElD,KAAK,GAAc,CAAC,SAASmD,EAAEnB,EAAEC,GAAG,OAAO,IAAIF,EAAE,EAAEE,EAAED,EAAE,CAC3d,SAASoB,EAAEpB,GAAG,GAAG,OAAOA,EAAE,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEnE,OAAOoE,KAAI,EAAGD,EAAEC,KAAK,CAAC,SAASoB,EAAErB,EAAEC,GAAG,GAAG,IAAID,EAAEG,QAAQ,CAAC,IAAID,EAAEF,EAAEI,OAAOJ,EAAEG,QAAQ,EAAEH,EAAEI,OAAOH,EAAEmB,EAAElB,EAAE,CAAC,CAAC,SAASoB,EAAEtB,EAAEC,GAAGD,EAAEuB,QAAQC,SAAQ,SAASxB,GAAGqB,EAAErB,EAAEC,EAAE,GAAE,CAAC,SAASiB,EAAElB,EAAEC,GAAG,IAAIC,EAAEF,EAAEuB,QAAQZ,EAAET,EAAEW,IAAIZ,GAAqC,OAAlCU,IAAIA,EAAE,IAAIZ,EAAE,EAAE,KAAKC,GAAGE,EAAEuB,IAAIxB,EAAEU,IAAWA,CAAC,CAC3B,SAASe,EAAE1B,GAAGsB,EAAEtB,EAAE2B,MAAM,sBAAsB,CAC7S,SAASC,EAAE5B,EAAEC,GAAG,GAAG,KAAKA,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAGU,EAAEV,EAAE4B,QAAQ,IAAI,GAAGjB,EAAEkB,SAAS7B,EAAE8B,UAAU,EAAEpB,GAAG,IAAuB,OAAnBA,EAAEV,EAAE8B,UAAUpB,EAAE,GAAUT,GAAG,IAAK,KAAiBA,GAAbD,EAAED,EAAEuB,SAAaV,IAAID,IAAI,IAAIV,EAAEC,UAAUH,EAAEE,EAAEE,OAAOF,EAAEC,QAAQ,EAAED,EAAEE,OAAOO,EAAES,EAAEpB,IAAIC,EAAEwB,IAAIb,EAAE,IAAIb,EAAE,EAAEY,EAAEX,IAAI,MAAM,IAAK,IAAgBE,GAAZD,EAAED,EAAEuB,SAAYV,IAAID,GAAGD,EAAEJ,KAAKC,MAAMG,EAAEX,EAAES,WAAW,IAAIuB,EAAEhC,EAAEiC,eAAqCD,GAAtBrB,EAAEqB,EAAEA,EAAErB,EAAEI,IAAIJ,EAAEK,MAAML,GAAMD,OAAO,IAAI,IAAIwB,EAAE,EAAEA,EAAEF,EAAEnG,OAAOqG,IAAI,CAAC,IAAIC,EAAEH,EAAEE,GAAG,QAAG,IAAS7C,EAAEwB,IAAIsB,GAAG,CAAC,IAAIC,EAAE,IAAuBD,GAAGE,EAAEhD,EAAEoC,IAAIa,KAAKjD,EAAE8C,EAAE,MAAMI,EAAElD,EAAEoC,IAAIa,KAAKjD,EAAE8C,GAAGC,EAAEnG,KAAKoG,EAAEE,GAAGlD,EAAEoC,IAAIU,EACxfC,EAAE,CAAC,CAAClC,EAAE,IAAIA,EAAEC,UAAUH,EAAEE,EAAEE,OAAOF,EAAEC,QAAQ,EAAED,EAAEE,OAAOO,EAAES,EAAEpB,IAAIC,EAAEwB,IAAIb,EAAE,IAAIb,EAAE,EAAEY,EAAEX,IAAI,MAAM,IAAK,IAAIA,EAAEuB,QAAQE,IAAIb,EAAEO,EAAEnB,EAL2G,SAAWA,GAA2C,OAAxCJ,EAAEI,KAAKJ,EAAEI,GAAGd,EAAEsD,oBAAoBxC,EAAEL,IAAWC,EAAEI,EAAE,CAK1KyC,CAAE9B,GAAG+B,WAAW,MAAM,IAAK,IAAIxC,EAAEK,KAAKC,MAAMG,GAAGX,EAAEuB,QAAQE,IAAIb,EAAEO,EAAEnB,EAAER,OAAOC,IAAIS,KAAK,MAAM,IAAK,IAAID,EAAEM,KAAKC,MAAMG,IAAGT,EAAEyB,MAAM1B,EAAE0C,UAAWC,MAAM3C,EAAE2C,OAAmBjC,GAAbV,EAAED,EAAEuB,SAAaV,IAAID,IAAIS,EAAEV,EAAET,GAAGD,EAAEwB,IAAIb,EAAE,IAAIb,EAAE,EAAEG,EAAEF,IAAI,MAAM,QAAQ,MAAM2B,MAAM,8EAA+E,CAAC,CAC5a,SAASkB,EAAE7C,GAAG,OAAO,SAASC,EAAEC,GAAG,MAAM,iBAAkBA,EAH3D,SAAWF,EAAEC,EAAEC,GAAG,OAAOA,EAAE,IAAI,IAAK,IAAI,MAAG,MAAMA,EAASX,EAAK,MAAMW,EAAE,IAAI,MAAMA,EAAE,GAAUA,EAAE6B,UAAU,GAAiDzB,EAAhBN,EAAEkB,EAAElB,EAAhC8B,SAAS5B,EAAE6B,UAAU,GAAG,MAAyB,IAAK,IAAI,OAAqC/B,EAAEkB,EAAElB,EAAhC8B,SAAS5B,EAAE6B,UAAU,GAAG,KAAa,CAACe,SAASpD,EAAEqD,SAAS/C,EAAEgD,MAAM1C,GAAG,OAAOJ,CAAC,CAGjM+C,CAAEjD,EAAEhC,EAAKkC,GAAG,iBAAkBA,GAAG,OAAOA,EAAKA,EAAE,KAAKX,EAAE,CAACuD,SAASvD,EAAE2D,KAAKhD,EAAE,GAAGlD,IAAIkD,EAAE,GAAGiD,IAAI,KAAKzG,MAAMwD,EAAE,GAAGkD,OAAO,MAAMlD,EAAKA,CAAC,CAAC,CAAC,SAASmD,EAAErD,GAAG,IAAIC,EAAE,IAAIqD,YAAiH,OAA3FtD,EAAE,CAACiC,eAAejC,EAAEuB,QAA5B,IAAIjC,IAAkCiE,SAAStC,EAAEuC,YAAY,GAAGC,eAAexD,IAAKQ,UAAUoC,EAAE7C,GAAUA,CAAC,CAC5U,SAAS0D,EAAE1D,EAAEC,GAAqR,SAASU,EAAEV,GAAGqB,EAAEtB,EAAEC,EAAE,CAAC,IAAIW,EAAEX,EAAE0D,YAAY/C,EAAEgD,OAAO3H,MAApU,SAASiE,EAAED,GAAG,IAAIiC,EAAEjC,EAAE3D,MAAM,IAAG2D,EAAE4D,KAAc,CAAC5D,EAAEiC,EAAEA,EAAElC,EAAEyD,eAAe,IAAI,IAAItB,EAAElC,EAAE4B,QAAQ,KAAK,EAAEM,GAAG,CAAC,IAAIH,EAAEhC,EAAEwD,YAAgBnB,EAAEpC,EAAE6D,SAAS,EAAE3B,GAAGE,EAAEH,EAAE6B,OAAO1B,GAAGT,EAAE5B,EAAEgC,EAAEK,GAAGrC,EAAEwD,YAAY,GAAqBrB,GAAlBlC,EAAEA,EAAE6D,SAAS3B,EAAE,IAAON,QAAQ,GAAG,CAA8B,OAA7B7B,EAAEwD,aAAatB,EAAE6B,OAAO9D,EAAEd,GAAUyB,EAAEgD,OAAO3H,KAAKiE,EAAES,EAAE,CAA1Oe,EAAE1B,EAAyO,GAA0DW,EAAE,CAPKZ,EAAE3C,UAAUnB,KAAK,SAAS+D,GAAG,IAAIhC,KAAKmC,SAAS,OAAOnC,KAAKoC,SAASpC,KAAKoC,OAAO,IAAIpC,KAAKoC,OAAO4D,KAAKhE,IAAIA,GAAG,EAQ9c9E,EAAQ+I,yBAAyB,SAASjE,EAAEC,GAA+C,OAAPyD,EAArCzD,EAAEoD,EAAEpD,GAAGA,EAAEiE,UAAUjE,EAAEiE,UAAU,MAAUlE,GAAUC,CAAC,gCC+BnGkE,EAAOjJ,QA5BS,SAASkJ,EAAWC,EAAQrE,EAAGC,EAAGC,EAAGS,EAAGC,EAAGoB,GAOzD,IAAKoC,EAAW,CACd,IAAIE,EACJ,QAAeC,IAAXF,EACFC,EAAQ,IAAI3C,MACV,qIAGG,CACL,IAAIvG,EAAO,CAAC4E,EAAGC,EAAGC,EAAGS,EAAGC,EAAGoB,GACvBwC,EAAW,GACfF,EAAQ,IAAI3C,MACV0C,EAAOI,QAAQ,OAAO,WAAa,OAAOrJ,EAAKoJ,IAAa,MAExDxD,KAAO,qBACf,CAGA,MADAsD,EAAMI,YAAc,EACdJ,CACR,CACF,gCC5CA,IAAIK,EAAmB,sBAEvBR,EAAOjJ,QAAU,SAAU0J,GAC1B,GAAmB,iBAARA,EACV,MAAM,IAAI9G,UAAU,qBAGrB,OAAO8G,EAAIH,QAAQE,EAAkB,OACtC,oCCRA,IAIIE,EAHuCxC,EADvCyC,EAAQhK,EAAQ,MAKpB,IAJ2CuH,EAKlBvH,EAAQiK,MAA/BF,EAJOxC,GAAKA,EAAE3E,SAAW2E,CAK3B,CAAE,MAAOzB,GACP,MAA2D,IAAvDA,EAAEoE,WAAWnD,QAAQ,6BACjB,IAAIF,MAAM,4NAIhBsD,QAAQX,MAAM1D,GACRA,EAEV,CAGAuD,EAAOjJ,QAAU,SAAUgK,GACzB,IAAIC,EAAUD,EAAKC,QACjBzI,EAAQwI,EAAKxI,MACf,OAAoBoI,EAAM/F,cAAc8F,EAAQnI,EAAOyI,EACzD,uDCtB+B,WAA7BC,OAAOC,SAASC,UACa,cAA7BF,OAAOC,SAASE,SAEhBN,QAAQX,MACN,gFAEO,kBAAmBkB,WAC5BA,UAAUC,cACPC,SAAS,UACTzJ,MAAK,SAAU0J,GACdA,EAAIC,iBAAiB,eAAe,MAClCC,EAAAA,EAAAA,GAAU,6BAA8B,CAAEJ,cAAeE,IAGzD,MAAMG,EAAmBH,EAAII,WAC7Bd,QAAQe,IAAI,mBAAoBF,GAChCA,EAAiBF,iBAAiB,eAAe,KAC/C,OAAQE,EAAiBG,OACvB,IAAK,YACCT,UAAUC,cAAcS,YAK1Bd,OAAOe,cAAe,GAEtBN,EAAAA,EAAAA,GAAU,6BAA8B,CAAEJ,cAAeE,IAGrDP,OAAOgB,qBACTnB,QAAQe,IAAI,4CACZZ,OAAOC,SAASgB,YAKlBpB,QAAQe,IAAI,sCAKZH,EAAAA,EAAAA,GAAU,2BAA4B,CAAEJ,cAAeE,KAEzD,MAEF,IAAK,YACHV,QAAQX,MAAM,oDACduB,EAAAA,EAAAA,GAAU,2BAA4B,CAAEJ,cAAeE,IACvD,MAEF,IAAK,aACHE,EAAAA,EAAAA,GAAU,wBAAyB,CAAEJ,cAAeE,IAExD,GACA,GAEN,IACCW,OAAM,SAAU1F,GACfqE,QAAQX,MAAM,4CAA6C1D,EAC7D,sCC5DJxE,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIiK,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAI3PkK,EAAUrJ,EAFD,EAAQ,OAMjBsJ,EAAkBtJ,EAFD,EAAQ,OAMzBuJ,EAAiBvJ,EAFD,EAAQ,OAI5B,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE9F,IAAIsJ,EAAW,CAAC,EACZC,OAAe,EAEnB7L,EAAA,QAAkB,CAEhB8L,QAAS,WACPF,EAAW,CAAC,CACd,EAEApB,SAAU,SAAkB1E,EAAMmE,GAChC2B,EAAS9F,GAAQmE,CACnB,EAEA8B,WAAY,SAAoBjG,UACvB8F,EAAS9F,EAClB,EAEAH,IAAK,SAAaG,GAChB,OAAO8F,EAAS9F,IAASkG,SAASC,eAAenG,IAASkG,SAASE,kBAAkBpG,GAAM,IAAMkG,SAASG,uBAAuBrG,GAAM,EACzI,EAEAsG,cAAe,SAAuBC,GACpC,OAAOR,EAAeQ,CACxB,EAEAC,cAAe,WACb,OAAOT,CACT,EAEAU,SAAU,SAAkBC,EAAIhL,GAE9B,IAAID,EAASuB,KAAK6C,IAAI6G,GAEtB,GAAKjL,EAAL,CAOA,IAAIkL,GAFJjL,EAAQ6J,EAAS,CAAC,EAAG7J,EAAO,CAAEkL,UAAU,KAEhBD,YACpBE,EAAYnL,EAAMmL,UAElBC,OAAmB,EAErBA,EADEH,EACiBT,SAASC,eAAeQ,GAClCE,GAAaA,EAAUE,SACbF,EAEAX,SAGrBxK,EAAMkL,UAAW,EAEjB,IAAII,EAAatL,EAAMsL,WACnBC,EAAetB,EAAQjJ,QAAQuK,aAAaH,EAAkBrL,EAAQuL,IAAetL,EAAMwL,QAAU,GAKzG,IAAKxL,EAAMyL,OAmBT,OAlBItB,EAAenJ,QAAQ0K,WAAkB,OAC3CvB,EAAenJ,QAAQ0K,WAAkB,MAAEV,EAAIjL,GAG7CqL,IAAqBZ,SACnBxK,EAAMsL,WACR5C,OAAOqC,SAASQ,EAAc,GAE9B7C,OAAOqC,SAAS,EAAGQ,GAGrBH,EAAiBO,UAAYJ,OAG3BpB,EAAenJ,QAAQ0K,WAAgB,KACzCvB,EAAenJ,QAAQ0K,WAAgB,IAAEV,EAAIjL,IAUjDmK,EAAgBlJ,QAAQ4K,iBAAiBL,EAAcvL,EAAOgL,EAAIjL,EAlDlE,MAFEwI,QAAQsD,KAAK,2BAqDjB,sBC7GFrN,EAAQ,EAAsB,IAAM,yLCApC,GACY,sBCQDsN,EAAY,YACZC,EAAS,SACTC,EAAW,WACXC,EAAU,UACVC,EAAU,UA6FjBC,EAA0B,SAAUjL,GAGtC,SAASiL,EAAWnM,EAAOoM,GACzB,IAAIC,EAEJA,EAAQnL,EAAiBM,KAAKF,KAAMtB,EAAOoM,IAAY9K,KACvD,IAGIgL,EADAC,EAFcH,MAEuBI,WAAaxM,EAAMyM,MAAQzM,EAAMuM,OAuB1E,OArBAF,EAAMK,aAAe,KAEjB1M,EAAM2M,GACJJ,GACFD,EAAgBP,EAChBM,EAAMK,aAAeV,GAErBM,EAAgBL,EAIhBK,EADEtM,EAAM4M,eAAiB5M,EAAM6M,aACff,EAEAC,EAIpBM,EAAM9C,MAAQ,CACZuD,OAAQR,GAEVD,EAAMU,aAAe,KACdV,CACT,EAhCA,OAAeF,EAAYjL,GAkC3BiL,EAAWa,yBAA2B,SAAkCxE,EAAMyE,GAG5E,OAFazE,EAAKmE,IAEJM,EAAUH,SAAWhB,EAC1B,CACLgB,OAAQf,GAIL,IACT,EAkBA,IAAImB,EAASf,EAAWzL,UAkPxB,OAhPAwM,EAAOC,kBAAoB,WACzB7L,KAAK8L,cAAa,EAAM9L,KAAKoL,aAC/B,EAEAQ,EAAOG,mBAAqB,SAA4BC,GACtD,IAAIC,EAAa,KAEjB,GAAID,IAAchM,KAAKtB,MAAO,CAC5B,IAAI8M,EAASxL,KAAKiI,MAAMuD,OAEpBxL,KAAKtB,MAAM2M,GACTG,IAAWd,GAAYc,IAAWb,IACpCsB,EAAavB,GAGXc,IAAWd,GAAYc,IAAWb,IACpCsB,EAAarB,EAGnB,CAEA5K,KAAK8L,cAAa,EAAOG,EAC3B,EAEAL,EAAOM,qBAAuB,WAC5BlM,KAAKmM,oBACP,EAEAP,EAAOQ,YAAc,WACnB,IACIC,EAAMlB,EAAOF,EADbqB,EAAUtM,KAAKtB,MAAM4N,QAWzB,OATAD,EAAOlB,EAAQF,EAASqB,EAET,MAAXA,GAAsC,iBAAZA,IAC5BD,EAAOC,EAAQD,KACflB,EAAQmB,EAAQnB,MAEhBF,OAA4B1E,IAAnB+F,EAAQrB,OAAuBqB,EAAQrB,OAASE,GAGpD,CACLkB,KAAMA,EACNlB,MAAOA,EACPF,OAAQA,EAEZ,EAEAW,EAAOE,aAAe,SAAsBS,EAAUN,GAKpD,QAJiB,IAAbM,IACFA,GAAW,GAGM,OAAfN,EAIF,GAFAjM,KAAKmM,qBAEDF,IAAevB,EAAU,CAC3B,GAAI1K,KAAKtB,MAAM4M,eAAiBtL,KAAKtB,MAAM6M,aAAc,CACvD,IAAIiB,EAAOxM,KAAKtB,MAAM+N,QAAUzM,KAAKtB,MAAM+N,QAAQC,QAAU,cAAqB1M,MAI9EwM,IAAM,OAAYA,EACxB,CAEAxM,KAAK2M,aAAaJ,EACpB,MACEvM,KAAK4M,mBAEE5M,KAAKtB,MAAM4M,eAAiBtL,KAAKiI,MAAMuD,SAAWf,GAC3DzK,KAAK6M,SAAS,CACZrB,OAAQhB,GAGd,EAEAoB,EAAOe,aAAe,SAAsBJ,GAC1C,IAAIO,EAAS9M,KAETmL,EAAQnL,KAAKtB,MAAMyM,MACnB4B,EAAY/M,KAAK8K,QAAU9K,KAAK8K,QAAQI,WAAaqB,EAErDS,EAAQhN,KAAKtB,MAAM+N,QAAU,CAACM,GAAa,CAAC,cAAqB/M,MAAO+M,GACxEE,EAAYD,EAAM,GAClBE,EAAiBF,EAAM,GAEvBG,EAAWnN,KAAKoM,cAChBgB,EAAeL,EAAYI,EAASlC,OAASkC,EAAShC,OAGrDoB,IAAapB,GAASkC,EACzBrN,KAAKsN,aAAa,CAChB9B,OAAQb,IACP,WACDmC,EAAOpO,MAAM6O,UAAUN,EACzB,KAIFjN,KAAKtB,MAAM8O,QAAQP,EAAWC,GAC9BlN,KAAKsN,aAAa,CAChB9B,OAAQd,IACP,WACDoC,EAAOpO,MAAM+O,WAAWR,EAAWC,GAEnCJ,EAAOY,gBAAgBN,GAAc,WACnCN,EAAOQ,aAAa,CAClB9B,OAAQb,IACP,WACDmC,EAAOpO,MAAM6O,UAAUN,EAAWC,EACpC,GACF,GACF,IACF,EAEAtB,EAAOgB,YAAc,WACnB,IAAIe,EAAS3N,KAETqM,EAAOrM,KAAKtB,MAAM2N,KAClBc,EAAWnN,KAAKoM,cAChBa,EAAYjN,KAAKtB,MAAM+N,aAAUlG,EAAY,cAAqBvG,MAEjEqM,IAAQgB,GASbrN,KAAKtB,MAAMkP,OAAOX,GAClBjN,KAAKsN,aAAa,CAChB9B,OAAQZ,IACP,WACD+C,EAAOjP,MAAMmP,UAAUZ,GAEvBU,EAAOD,gBAAgBP,EAASd,MAAM,WACpCsB,EAAOL,aAAa,CAClB9B,OAAQf,IACP,WACDkD,EAAOjP,MAAMoP,SAASb,EACxB,GACF,GACF,KArBEjN,KAAKsN,aAAa,CAChB9B,OAAQf,IACP,WACDkD,EAAOjP,MAAMoP,SAASb,EACxB,GAkBJ,EAEArB,EAAOO,mBAAqB,WACA,OAAtBnM,KAAKyL,eACPzL,KAAKyL,aAAasC,SAClB/N,KAAKyL,aAAe,KAExB,EAEAG,EAAO0B,aAAe,SAAsBU,EAAWC,GAIrDA,EAAWjO,KAAKkO,gBAAgBD,GAChCjO,KAAK6M,SAASmB,EAAWC,EAC3B,EAEArC,EAAOsC,gBAAkB,SAAyBD,GAChD,IAAIE,EAASnO,KAEToO,GAAS,EAcb,OAZApO,KAAKyL,aAAe,SAAU4C,GACxBD,IACFA,GAAS,EACTD,EAAO1C,aAAe,KACtBwC,EAASI,GAEb,EAEArO,KAAKyL,aAAasC,OAAS,WACzBK,GAAS,CACX,EAEOpO,KAAKyL,YACd,EAEAG,EAAO8B,gBAAkB,SAAyBpB,EAASgC,GACzDtO,KAAKkO,gBAAgBI,GACrB,IAAI9B,EAAOxM,KAAKtB,MAAM+N,QAAUzM,KAAKtB,MAAM+N,QAAQC,QAAU,cAAqB1M,MAC9EuO,EAA0C,MAAXjC,IAAoBtM,KAAKtB,MAAM8P,eAElE,GAAKhC,IAAQ+B,EAAb,CAKA,GAAIvO,KAAKtB,MAAM8P,eAAgB,CAC7B,IAAIC,EAAQzO,KAAKtB,MAAM+N,QAAU,CAACzM,KAAKyL,cAAgB,CAACe,EAAMxM,KAAKyL,cAC/DwB,EAAYwB,EAAM,GAClBC,EAAoBD,EAAM,GAE9BzO,KAAKtB,MAAM8P,eAAevB,EAAWyB,EACvC,CAEe,MAAXpC,GACFqC,WAAW3O,KAAKyL,aAAca,EAXhC,MAFEqC,WAAW3O,KAAKyL,aAAc,EAelC,EAEAG,EAAOgD,OAAS,WACd,IAAIpD,EAASxL,KAAKiI,MAAMuD,OAExB,GAAIA,IAAWhB,EACb,OAAO,KAGT,IAAIqE,EAAc7O,KAAKtB,MACnBsC,EAAW6N,EAAY7N,SAgBvB8N,GAfMD,EAAYxD,GACFwD,EAAYtD,aACXsD,EAAYvD,cACnBuD,EAAY5D,OACb4D,EAAY1D,MACb0D,EAAYxC,KACTwC,EAAYvC,QACLuC,EAAYL,eACnBK,EAAYrB,QACTqB,EAAYpB,WACboB,EAAYtB,UACfsB,EAAYjB,OACTiB,EAAYhB,UACbgB,EAAYf,SACbe,EAAYpC,SACV,OAA8BoC,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGE,gBAAoBE,EAAA,EAAuBrK,SAAU,CACnDpG,MAAO,MACc,mBAAb0C,EAA0BA,EAASwK,EAAQsD,GAAc,eAAmB,WAAeE,KAAKhO,GAAW8N,GAEzH,EAEOjE,CACT,CAlT8B,CAkT5B,aA+LF,SAASoE,IAAQ,CA7LjBpE,EAAWqE,YAAcH,EAAA,EACzBlE,EAAWsE,UA0LP,CAAC,EAILtE,EAAWuE,aAAe,CACxB/D,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACPkB,MAAM,EACNmB,QAASyB,EACTxB,WAAYwB,EACZ1B,UAAW0B,EACXrB,OAAQqB,EACRpB,UAAWoB,EACXnB,SAAUmB,GAEZpE,EAAWL,UAAYA,EACvBK,EAAWJ,OAASA,EACpBI,EAAWH,SAAWA,EACtBG,EAAWF,QAAUA,EACrBE,EAAWD,QAAUA,EACrB,0CC9mBAxM,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAI+Q,EAAyB,EAAQ,MAEjCC,EAAS,CAAC,YAAa,QAAS,YAAa,WAEjDpS,EAAA,QAAkB,CAChBqS,UAAW,SAAmBC,GAC5B,MAA2B,oBAAbtG,UAA4BoG,EAAO9L,SAAQ,SAAU6K,GACjE,OAAO,EAAIgB,EAAuBI,yBAAyBvG,SAAUmF,EAAOmB,EAC9E,GACF,8ECSF,UAlByBtI,IAAmB,IAAlB,SAAEG,GAAUH,EACpC,MAAMwI,EAAgBC,EAAAA,GAAO1S,aAAaoK,EAASuI,UACnD,OAAKF,EAGE5I,EAAAA,cAAoB+I,EAAAA,EAAsB,CAC/CxI,WACAqI,mBACGA,EAAcI,OALV,IAMP,oCCbJ5S,EAAQ6S,gBAAkB,EAA1B7S,wCCEA,IAAIqL,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAE3PF,EAAe,WAAc,SAASC,EAAiBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAMb,OAAQc,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMX,OAAOC,eAAeI,EAAQG,EAAWI,IAAKJ,EAAa,CAAE,CAAE,OAAO,SAAUK,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYV,EAAiBS,EAAYG,UAAWF,GAAiBC,GAAaX,EAAiBS,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAEnB,SAASc,EAAgBF,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAExJ,SAASM,EAA2BH,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAE/O,SAASY,EAAUL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CAE7e,IAAIoG,EAAQ,EAAQ,MAIhBkJ,GAHW,EAAQ,KAEX,EAAQ,MACJ,EAAQ,OACpBC,EAAkB,EAAQ,KAC1BC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MAErBC,EAAa,CACf1G,GAAIwG,EAAUG,OAAOC,WACrB3G,YAAauG,EAAUG,OACvBxG,UAAWqG,EAAUK,OACrBC,YAAaN,EAAUG,OACvBI,IAAKP,EAAUQ,KACfvG,OAAQ+F,EAAUS,UAAU,CAACT,EAAUQ,KAAMR,EAAUG,SACvDnG,OAAQgG,EAAUU,OAClBC,MAAOX,EAAUU,OACjBE,UAAWZ,EAAUQ,KACrBK,QAASb,EAAUc,KACnBC,SAAUf,EAAUS,UAAU,CAACT,EAAUU,OAAQV,EAAUc,OAC3DpH,SAAUsG,EAAUQ,KACpBQ,YAAahB,EAAUc,KACvBG,cAAejB,EAAUc,KACzBI,mBAAoBlB,EAAUQ,KAC9BW,QAASnB,EAAUQ,KACnBY,YAAapB,EAAUU,QAGrBW,EAAU,CACZC,OAAQ,SAAgBvQ,EAAWwQ,GAEjCxK,QAAQsD,KAAK,6CAEb,IAAImH,EAAWD,GAAkBxB,EAE7BuB,EAAS,SAAU5R,GAGrB,SAAS4R,EAAO9S,GACdqB,EAAgBC,KAAMwR,GAEtB,IAAIzG,EAAQ3K,EAA2BJ,MAAOwR,EAAOnR,WAAajC,OAAOkC,eAAekR,IAAStR,KAAKF,KAAMtB,IAO5G,OALAiT,EAAiBzR,KAAK6K,GAEtBA,EAAM9C,MAAQ,CACZmG,QAAQ,GAEHrD,CACT,CA6EA,OA1FAjK,EAAU0Q,EAAQ5R,GAelBrB,EAAaiT,EAAQ,CAAC,CACpBxS,IAAK,wBACLV,MAAO,WACL,IAAIqL,EAAc3J,KAAKtB,MAAMiL,YACzBE,EAAY7J,KAAKtB,MAAMmL,UAE3B,OAAIF,EACKT,SAASC,eAAeQ,GAG7BE,GAAaA,EAAUE,SAClBF,EAGFX,QACT,GACC,CACDlK,IAAK,oBACLV,MAAO,WACL,GAAI0B,KAAKtB,MAAM+R,KAAOzQ,KAAKtB,MAAM2S,QAAS,CACxC,IAAIO,EAAqB5R,KAAK6R,wBAEzB7B,EAAU8B,UAAUF,IACvB5B,EAAU+B,MAAMH,EAAoB5R,KAAKtB,MAAM4S,aAG7CtR,KAAKtB,MAAM2S,UACRlB,EAAW2B,aACd3B,EAAW4B,MAAML,GAEnBvB,EAAW6B,aAAahS,KAAKtB,MAAMgL,GAAIkI,IAGrC5R,KAAKtB,MAAM+R,KACbT,EAAUiC,gBAAgBjS,KAAKkS,cAGjClC,EAAUmC,cAAcnS,KAAKoS,WAAYR,GAEzC5R,KAAK6M,SAAS,CACZhD,UAAW+H,GAEf,CACF,GACC,CACD5S,IAAK,uBACLV,MAAO,WACL0R,EAAUhH,QAAQhJ,KAAKkS,aAAclS,KAAKoS,WAC5C,GACC,CACDpT,IAAK,SACLV,MAAO,WACL,IAAI+T,EAAY,GAGdA,EADErS,KAAKiI,OAASjI,KAAKiI,MAAMmG,SACbpO,KAAKtB,MAAM2T,WAAa,IAAM,KAAOrS,KAAKtB,MAAM8R,aAAe,WAAW8B,OAE5EtS,KAAKtB,MAAM2T,UAGzB,IAAI3T,EAAQ6J,EAAS,CAAC,EAAGvI,KAAKtB,OAE9B,IAAK,IAAI6T,KAAQnC,EACX1R,EAAMgK,eAAe6J,WAChB7T,EAAM6T,GAOjB,OAHA7T,EAAM2T,UAAYA,EAClB3T,EAAMqS,QAAU/Q,KAAKwS,YAEd1L,EAAM/F,cAAcE,EAAWvC,EACxC,KAGK8S,CACT,CA5Fa,CA4FX1K,EAAM7F,WAEJ0Q,EAAmB,WACrB,IAAI7E,EAAS9M,KAEbA,KAAKyJ,SAAW,SAAUC,EAAIhL,GAC5BgT,EAASjI,SAASC,EAAInB,EAAS,CAAC,EAAGuE,EAAO7E,MAAOvJ,GACnD,EAEAsB,KAAKwS,YAAc,SAAUnE,GAMvBvB,EAAOpO,MAAMqS,SACfjE,EAAOpO,MAAMqS,QAAQ1C,GAOnBA,EAAMoE,iBAAiBpE,EAAMoE,kBAC7BpE,EAAMqE,gBAAgBrE,EAAMqE,iBAKhC5F,EAAOrD,SAASqD,EAAOpO,MAAMgL,GAAIoD,EAAOpO,MAC1C,EAEAsB,KAAKkS,aAAe,WACdR,EAASlI,kBAAoBsD,EAAOpO,MAAMgL,KACvB,OAAjBoD,EAAO7E,OAAkB6E,EAAO7E,MAAMmG,QAAUtB,EAAOpO,MAAMyS,eAC/DrE,EAAOpO,MAAMyS,gBAEfrE,EAAOD,SAAS,CAAEuB,QAAQ,IAE9B,EAEApO,KAAKoS,WAAa,SAAUlP,GAE1B,IAAI0O,EAAqB9E,EAAO+E,wBAEhC,IAAI1B,EAAW2B,aAAgB3B,EAAWwC,gBAA1C,CAIA,IAAIjJ,EAAKoD,EAAOpO,MAAMgL,GAClBvC,EAAU,KACVyL,EAAe,EACfC,EAAkB,EAClBC,EAAe,EAEnB,GAAIlB,EAAmBmB,sBAErBD,EADqBlB,EAAmBmB,wBACVC,IAGhC,IAAK7L,GAAW2F,EAAOpO,MAAMoS,UAAW,CAEtC,KADA3J,EAAUuK,EAAS7O,IAAI6G,IAErB,OAGF,IAAIuJ,EAAQ9L,EAAQ4L,wBAEpBF,GADAD,EAAeK,EAAMD,IAAMF,EAAe5P,GACT+P,EAAMC,MACzC,CAEA,IAAIC,EAAUjQ,EAAI4J,EAAOpO,MAAMwL,OAC3BkJ,EAAWD,GAAWE,KAAKC,MAAMV,IAAiBO,EAAUE,KAAKC,MAAMT,GACvEU,EAAYJ,EAAUE,KAAKC,MAAMV,IAAiBO,GAAWE,KAAKC,MAAMT,GACxEW,EAAa9B,EAASlI,gBAE1B,OAAI+J,GACE7J,IAAO8J,GACT9B,EAASpI,mBAAc,GAGrBwD,EAAOpO,MAAM2S,SAAWlB,EAAWsD,YAAc/J,GACnDyG,EAAWuD,aAGT5G,EAAOpO,MAAM+R,KAAO3D,EAAO7E,MAAMmG,SACnCtB,EAAOD,SAAS,CAAEuB,QAAQ,IAC1BtB,EAAOpO,MAAMyS,eAAiBrE,EAAOpO,MAAMyS,iBAGtCnB,EAAU2D,gBAGfP,GAAYI,IAAe9J,GAC7BgI,EAASpI,cAAcI,GAEvBoD,EAAOpO,MAAM2S,SAAWlB,EAAWuD,WAAWhK,GAE1CoD,EAAOpO,MAAM+R,MACf3D,EAAOD,SAAS,CAAEuB,QAAQ,IAC1BtB,EAAOpO,MAAMwS,aAAepE,EAAOpO,MAAMwS,YAAYxH,IAEhDsG,EAAU2D,qBATnB,CA9CA,CAyDF,CACF,EAQA,OAJAnC,EAAOrC,UAAYiB,EAEnBoB,EAAOpC,aAAe,CAAElF,OAAQ,GAEzBsH,CACT,EACAoC,QAAS,SAAiB3S,GAExBgG,QAAQsD,KAAK,8CAEb,IAAIqJ,EAAU,SAAUC,GAGtB,SAASD,EAAQlV,GACfqB,EAAgBC,KAAM4T,GAEtB,IAAIjG,EAASvN,EAA2BJ,MAAO4T,EAAQvT,WAAajC,OAAOkC,eAAesT,IAAU1T,KAAKF,KAAMtB,IAK/G,OAHAiP,EAAOmG,cAAgB,CACrBC,QAAS,MAEJpG,CACT,CAqCA,OAhDA7M,EAAU8S,EAASC,GAanBtV,EAAaqV,EAAS,CAAC,CACrB5U,IAAK,oBACLV,MAAO,WACL,GAAsB,oBAAX8I,OACT,OAAO,EAETpH,KAAKgU,cAAchU,KAAKtB,MAAMsE,KAChC,GACC,CACDhE,IAAK,qBACLV,MAAO,SAA4B0N,GAC7BhM,KAAKtB,MAAMsE,OAASgJ,EAAUhJ,MAChChD,KAAKgU,cAAchU,KAAKtB,MAAMsE,KAElC,GACC,CACDhE,IAAK,uBACLV,MAAO,WACL,GAAsB,oBAAX8I,OACT,OAAO,EAET6I,EAAgBhH,WAAWjJ,KAAKtB,MAAMsE,KACxC,GACC,CACDhE,IAAK,gBACLV,MAAO,SAAuB0E,GAC5BiN,EAAgBvI,SAAS1E,EAAMhD,KAAK8T,cAAcC,QACpD,GACC,CACD/U,IAAK,SACLV,MAAO,WACL,OAAOwI,EAAM/F,cAAcE,EAAWsH,EAAS,CAAC,EAAGvI,KAAKtB,MAAO,CAAEuV,eAAgBjU,KAAK8T,gBACxF,KAGKF,CACT,CAlDc,CAkDZ9M,EAAM7F,WASR,OALA2S,EAAQzE,UAAY,CAClBnM,KAAMkN,EAAUG,OAChBtN,GAAImN,EAAUG,QAGTuD,CACT,GAGFzN,EAAOjJ,QAAUqU,mCClUjBnT,OAAOC,eAAenB,EAAS,aAAc,CAC5CoB,OAAO,IAGR,IAAI4V,EAAS,CACZ9J,WAAY,CAAC,EACb+J,YAAa,CACZzM,SAAU,SAAkB0M,EAASnG,GACpCiG,EAAO9J,WAAWgK,GAAWnG,CAC9B,EACAoG,OAAQ,SAAgBD,GACvBF,EAAO9J,WAAWgK,GAAW,IAC9B,IAIFlX,EAAA,QAAkBgX,mCChBlBhX,EAAQuC,YAAa,EACrBvC,EAAAA,aAAkB,EAKlBA,EAAAA,QAJe,CACboX,YAAY,EACZC,gBAAgB,6JCJlB,MAAMC,EAAuB1N,EAAAA,cAAoB,CAAC,GAC5C2N,EAAgB3N,EAAAA,cAAoB,CAAC,GACrC4N,EAAmB5N,EAAAA,cAAoB,CAAC,GACxC6N,EAAqB7N,EAAAA,cAAoB,CAAC,sCCHhD5J,EAAQuC,YAAa,EACrBvC,EAAQ0X,2BAAwB,EACZ,EAAQ,MACE,EAAQ,MAgBtC1X,EAAQ0X,sBAdsB,KAOyC,qECdhE,IAAIC,EAAc,SAAqBrI,GAC5C,OAAOA,EAAKnC,SACd,oBCEAlE,EAAOjJ,QAJP,SAAgC0F,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIzC,eAAe,6DAC3C,OAAOyC,CACT,EACyCuD,EAAOjJ,QAAQuC,YAAa,EAAM0G,EAAOjJ,QAAiB,QAAIiJ,EAAOjJ,8BCJxFmH,MAKpB8B,EAAOjJ,SALamH,EAKWvH,EAAQ,OALRuH,EAAE3E,SAAY2E,qCCE/C,IAAI/E,EAAyBxC,EAAQ,MACrCI,EAAQuC,YAAa,EACrBvC,EAAQ4X,cAER,SAAuB5N,EAAM6N,GAC3B,IAAI1N,EAAWH,EAAKG,SAGpB,GAFqBjJ,OAAOoK,OAAO,CAAC,EAAGwM,EAAgBtV,QAASqV,GAC9BR,gBAC8BU,MAAMC,QAAQ9N,OAAO+N,MACnF,OAKF,IAAIC,EAAgB,WAClB,IAAIC,EAAOhO,EAAWA,EAASuI,SAAWvI,EAASiO,OAASjO,EAASkO,UAAOhP,EAC5Ea,OAAO+N,KAAKnP,KAAK,CAAC,UAAWqP,IAC7BjO,OAAO+N,KAAKnP,KAAK,CAAC,iBACpB,EAC4C,mBAAjCoB,OAAOoO,sBAChBpO,OAAOoO,uBAAsB,WAC3BpO,OAAOoO,sBAAsBJ,EAC/B,IAGAzG,WAAWyG,EAAe,GAE9B,EAxBA,IAAIJ,EAAkB1V,EAAuBxC,EAAQ,wCCHrDsB,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAET,IAsBImX,EAA4B,SAAmCtO,EAASuO,GAI1E,IAHA,IAAIC,EAAYxO,EAAQwO,UACpBC,EAAsBzO,EAAQ0O,aAE3BD,IAAwBF,EAAUE,IACvCD,GAAaC,EAAoBD,UACjCC,EAAsBA,EAAoBC,aAG5C,MAAO,CAAEF,UAAWA,EAAWE,aAAcD,EAC/C,EAkEA1Y,EAAA,QAAkB,CAChB4Y,WAnGe,SAAoBP,EAAMQ,GACzC,IAAIC,EAAgC,IAAtBT,EAAK1R,QAAQ,KAAa0R,EAAKxR,UAAU,GAAKwR,EACxDU,EAAeD,EAAU,IAAMA,EAAU,GACzCE,EAAS9O,QAAUA,OAAOC,SAC1B8O,EAAYF,EAAeC,EAAOtG,SAAWsG,EAAOZ,OAASW,EAAeC,EAAOtG,SAAWsG,EAAOZ,OACzGS,EAAgBK,QAAQC,UAAUD,QAAQnO,MAAO,GAAIkO,GAAaC,QAAQE,aAAaF,QAAQnO,MAAO,GAAIkO,EAC5G,EA8FE1C,QA5FY,WACZ,OAAOrM,OAAOC,SAASkO,KAAK9O,QAAQ,KAAM,GAC5C,EA2FE8P,yBAzF6B,SAAkC1M,GAC/D,OAAO,SAAU1C,GACf,OAAO0C,EAAU2M,SAAW3M,GAAa1C,GAAW0C,EAAU2M,SAASrP,MAA2D,GAA7C0C,EAAU4M,wBAAwBtP,GACzH,CACF,EAsFE8C,aApEiB,SAAsB/H,EAAGN,EAAGoI,GAC7C,GAAIA,EACF,OAAO9H,IAAMgH,SAAWtH,EAAEmR,wBAAwB2D,MAAQtP,OAAOuP,SAAWvP,OAAOwP,aAAgD,WAAjCC,iBAAiB3U,GAAG4U,SAAwBlV,EAAEmV,WAAanV,EAAEmV,WAAa7U,EAAE6U,WAE9K,GAAI7U,IAAMgH,SACR,OAAOtH,EAAEmR,wBAAwBC,KAAO5L,OAAO4P,SAAW5P,OAAO6P,aA4BnE,GAhD4C,WAAvCJ,iBAgDY3U,GAhDc4U,SAgDV,CACnB,GAAIlV,EAAEiU,eAAiB3T,EAAG,CACxB,IAIIgV,EAAwBzB,EAA0B7T,GAJnB,SAAsCgB,GACvE,OAAOA,IAAMV,GAAKU,IAAMsG,QAC1B,IAGIyM,EAAYuB,EAAsBvB,UAGtC,GAFmBuB,EAAsBrB,eAEpB3T,EACnB,MAAM,IAAIyB,MAAM,4DAGlB,OAAOgS,CACT,CAEA,OAAO/T,EAAE+T,SACX,CAEA,GAAI/T,EAAEiU,eAAiB3T,EAAE2T,aACvB,OAAOjU,EAAE+T,UAAYzT,EAAEyT,UAGzB,IAAIwB,EAAa,SAAoBvU,GACnC,OAAOA,IAAMsG,QACf,EACA,OAAOuM,EAA0B7T,EAAGuV,GAAYxB,UAAYF,EAA0BvT,EAAGiV,GAAYxB,SAEzG,sCCnGA,IAAIrW,EAAyB,EAAQ,MACrCpC,EAAQuC,YAAa,EACrBvC,EAAQka,cAAgBla,EAAQma,mBAAgB,EAChD,IAAIC,EAA0BhY,EAAuB,EAAQ,OACzDiY,EAAkBjY,EAAuB,EAAQ,OACjDwH,EAIJ,SAAiCtH,EAAKgY,GAAe,IAAKA,GAAehY,GAAOA,EAAIC,WAAc,OAAOD,EAAO,GAAY,OAARA,GAA+B,iBAARA,GAAmC,mBAARA,EAAsB,MAAO,CAAEE,QAASF,GAAS,IAAIiY,EAAQC,EAAyBF,GAAc,GAAIC,GAASA,EAAME,IAAInY,GAAQ,OAAOiY,EAAM5U,IAAIrD,GAAQ,IAAIoY,EAAS,CAAC,EAAOC,EAAwBzZ,OAAOC,gBAAkBD,OAAO0Z,yBAA0B,IAAK,IAAI9Y,KAAOQ,EAAO,GAAY,YAARR,GAAqBZ,OAAOgB,UAAUsJ,eAAexI,KAAKV,EAAKR,GAAM,CAAE,IAAI+Y,EAAOF,EAAwBzZ,OAAO0Z,yBAAyBtY,EAAKR,GAAO,KAAU+Y,IAASA,EAAKlV,KAAOkV,EAAKtU,KAAQrF,OAAOC,eAAeuZ,EAAQ5Y,EAAK+Y,GAAgBH,EAAO5Y,GAAOQ,EAAIR,EAAQ,CAAI4Y,EAAOlY,QAAUF,EAASiY,GAASA,EAAMhU,IAAIjE,EAAKoY,GAAW,OAAOA,CAAQ,CAJvxBI,CAAwB,EAAQ,OACxCC,EAAa3Y,EAAuB,EAAQ,OAC5C4Y,EAAkB,EAAQ,MAC9B,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,CAE9U,IAAIH,EAA6BvQ,EAAMwR,cAAc,IAAIJ,EAAgBK,gBACzErb,EAAQma,cAAgBA,EACxBA,EAAcmB,YAAc,sBAC5B,IAAIpB,EAA6B,SAAUxX,GAEzC,SAASwX,IAEP,IADA,IAAIrM,EACK0N,EAAOjY,UAAU3C,OAAQT,EAAO,IAAI6X,MAAMwD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/Etb,EAAKsb,GAAQlY,UAAUkY,GAiCzB,OA/BA3N,EAAQnL,EAAiBM,KAAKK,MAAMX,EAAkB,CAACI,MAAM2Y,OAAOvb,KAAU4C,MACxE4Y,cAAgB,IAAIV,EAAgBK,eAC1CxN,EAAM8N,YAAa,EACnB9N,EAAM+N,oBAAsB,EAC5B/N,EAAMgO,eAAiB,WACrBhO,EAAM+N,oBAAsB1R,OAAO4P,QAC9BjM,EAAM8N,aACT9N,EAAM8N,YAAa,EACnBrD,sBAAsBzK,EAAMiO,YAAY1U,MAAK,EAAIgT,EAAwB5X,SAASqL,KAEtF,EACAA,EAAMkO,aAAe,SAAUnC,EAAU9K,GACnCjB,EAAMmO,mBAAmBlN,EAAWjB,EAAMrM,QAC5C0I,OAAOqC,SAAS,EAAGqN,EAEvB,EACA/L,EAAMoO,aAAe,SAAU5D,EAAMvJ,GACnC,IAAIQ,EAAOtD,SAASC,eAAeoM,EAAKxR,UAAU,IAC9CyI,GAAQzB,EAAMmO,mBAAmBlN,EAAWjB,EAAMrM,QACpD8N,EAAK4M,gBAET,EACArO,EAAMmO,mBAAqB,SAAUG,EAAiBC,GACpD,IAAIJ,EAAqBnO,EAAMrM,MAAMwa,mBACrC,OAAKA,GAKEA,EAAmBhZ,MAAK,EAAIoX,EAAwB5X,SAASqL,GAAQsO,EAAiBC,EAC/F,EACOvO,CACT,EAtCA,EAAIwM,EAAgB7X,SAAS0X,EAAexX,GAuC5C,IAAIgM,EAASwL,EAAchY,UA2D3B,OA1DAwM,EAAOoN,YAAc,WACnB,IAAIha,EAAMgB,KAAKtB,MAAM2I,SAASrI,KAAO,KACjCA,GACFgB,KAAK4Y,cAAcW,KAAKvZ,KAAKtB,MAAM2I,SAAUrI,EAAKgB,KAAK8Y,qBAEzD9Y,KAAK6Y,YAAa,CACpB,EACAjN,EAAOC,kBAAoB,WAEzB,IAAI2N,EADJpS,OAAOQ,iBAAiB,SAAU5H,KAAK+Y,gBAEvC,IAAIU,EAAuBzZ,KAAKtB,MAAM2I,SACpCrI,EAAMya,EAAqBza,IAC3BuW,EAAOkE,EAAqBlE,KAC1BvW,IACFwa,EAAiBxZ,KAAK4Y,cAAchT,KAAK5F,KAAKtB,MAAM2I,SAAUrI,IAM5DuW,EACFvV,KAAKmZ,aAAaO,UAAUnE,QAAOhP,GAC1BiT,GACTxZ,KAAKiZ,aAAaO,OAAgBjT,EAEtC,EACAqF,EAAOM,qBAAuB,WAC5B9E,OAAOuS,oBAAoB,SAAU3Z,KAAK+Y,eAC5C,EACAnN,EAAOG,mBAAqB,SAA4BC,GACtD,IAGIwN,EAHAI,EAAwB5Z,KAAKtB,MAAM2I,SACrCkO,EAAOqE,EAAsBrE,KAC7BvW,EAAM4a,EAAsB5a,IAE1BA,IACFwa,EAAiBxZ,KAAK4Y,cAAchT,KAAK5F,KAAKtB,MAAM2I,SAAUrI,IAY5DuW,EACFvV,KAAKmZ,aAAaO,UAAUnE,GAAOvJ,GAEnChM,KAAKiZ,aAAaO,EAAgBxN,EAEtC,EACAJ,EAAOgD,OAAS,WACd,OAAoB9H,EAAM/F,cAAcsW,EAAc3S,SAAU,CAC9DpG,MAAO0B,KAAK4Y,eACX5Y,KAAKtB,MAAMsC,SAChB,EACOoW,CACT,CApGiC,CAoG/BtQ,EAAM7F,WACR/D,EAAQka,cAAgBA,EACxBA,EAAcjI,UAAY,CACxB+J,mBAAoBjB,EAAWvY,QAAQsR,KACvChQ,SAAUiX,EAAWvY,QAAQyH,QAAQmJ,WACrCjJ,SAAU4Q,EAAWvY,QAAQ6Q,OAAOD,6CCtHtCpT,EAAQuC,YAAa,EACrBvC,EAAQ2c,YACR,SAAqBC,GACnB,OAAOA,aAA2D,EAASA,EAAiBC,SAAQC,IAAWA,aAAuC,EAASA,EAAOC,UAAY,IACpL,qCCJA7b,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGoB,EAAQ,MAArC,IAMgCkB,EAJ5B0a,EAAS,EAAQ,MAEjBvR,GAE4BnJ,EAFK0a,IAEgB1a,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAEvF,IAAI2Q,EAAa,CACfgK,WAAW,EACXC,aAAa,EACb1I,SAAU,KACV2I,WAAY,CAAC,EAEbtI,MAAO,SAAeL,GACpB1R,KAAK0R,SAAWA,EAEhB1R,KAAKsa,iBAAmBta,KAAKsa,iBAAiBhW,KAAKtE,MACnDoH,OAAOQ,iBAAiB,aAAc5H,KAAKsa,kBAE3Cta,KAAKua,oBACLva,KAAKma,WAAY,CACnB,EACAnI,aAAc,SAAsBtI,EAAIG,GACtC7J,KAAKqa,WAAW3Q,GAAMG,CACxB,EACAiI,UAAW,WACT,OAAO9R,KAAKma,SACd,EACAxH,cAAe,WACb,OAAO3S,KAAKoa,WACd,EACAG,kBAAmB,WACjB,IAAIxP,EAAQ/K,KAERuV,EAAOvV,KAAKyT,UACZ8B,EACFnO,OAAOuH,YAAW,WAChB5D,EAAMtB,SAAS8L,GAAM,GACrBxK,EAAMqP,aAAc,CACtB,GAAG,IAEHpa,KAAKoa,aAAc,CAEvB,EACA3Q,SAAU,SAAkBC,EAAI8Q,GAC9B,IAAI9I,EAAW1R,KAAK0R,SAEpB,GADcA,EAAS7O,IAAI6G,KACX8Q,GAAU9Q,IAAOgI,EAASlI,iBAAkB,CAC1D,IAAIK,EAAY7J,KAAKqa,WAAW3Q,IAAOR,SACvCwI,EAASjI,SAASC,EAAI,CAAEG,UAAWA,GACrC,CACF,EACA4J,QAAS,WACP,OAAO9K,EAAQjJ,QAAQ+T,SACzB,EACAC,WAAY,SAAoBhK,EAAI+Q,GAC9Bza,KAAK2S,iBAAmBhK,EAAQjJ,QAAQ+T,YAAc/J,GACxDf,EAAQjJ,QAAQoW,WAAWpM,EAAI+Q,EAEnC,EACAH,iBAAkB,WAChBta,KAAKyJ,SAASzJ,KAAKyT,UACrB,EACAzK,QAAS,WACPhJ,KAAK0R,SAAW,KAChB1R,KAAKqa,WAAa,KAClBjT,OAAOuS,oBAAoB,aAAc3Z,KAAKsa,iBAChD,GAGFpd,EAAA,QAAkBiT,mIC7ElB,MAAMuK,EAAoB,IAAIC,IAC9B,SAASC,EAASC,EAAIvO,GACpB,IAAIwO,EAAQ,KACZ,OAAO,WACDA,GACFC,aAAaD,GACd,QAAArC,EAAAjY,UAAA3C,OAHiBT,EAAI,IAAA6X,MAAAwD,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJtb,EAAIsb,GAAAlY,UAAAkY,GAItBoC,EAAQnM,WAAUpO,WAAC,EAAD,CAACsa,EAAIvO,GAAOqM,OAAKvb,GACrC,CACF,CACA,SAAS4d,EAAcC,QAAa,IAAbA,IAAAA,EAAgB,aACrC,MAAMC,EAAM9T,OACZ,SAAS+T,EAASC,GACZV,EAAkB/C,IAAIyD,EAAKpY,QAG/B0X,EAAkBW,IAAID,EAAKpY,MAoB/B,SAAkBgK,EAIfsO,GAAY,IAJI,KACjBtY,EAAI,MACJ1E,EAAK,GACLyE,GACDiK,EACCsO,EAAUtV,KAAK,CACbqI,MAAO,kBACPkN,qBAAsB,CACpBvY,KAAMA,EAKND,KAIAzE,MAAO+U,KAAKmI,MAAe,QAATxY,EAAyB,IAAR1E,EAAeA,KAGxD,CAvCImd,CAAUL,EAAMF,EAAID,IACtB,CACA,OAAO,6BAA0Bhd,MAAKiJ,IAI/B,IAJgC,OACrCwU,EAAM,OACNC,EAAM,OACNC,GACD1U,EACC,MAAM2U,EAAejB,EAASO,EAAU,KAElCW,EAAeX,EAEfY,EAAenB,EAASO,EAAU,KAGxCS,EAAOC,GAAc,GACrBF,EAAOG,GAAc,GACrBJ,EAAOK,GAAc,EAAK,GAE9B,CAsBO,SAASjH,EAAckH,EAAGjH,GAG7BpG,YAAW,KACT,MAAMyM,EAAOrG,EAAckG,cAAgB7T,OAAO2N,EAAckG,eAAiB7T,OAAOkU,UAClFW,EAAYlH,EAAcmH,qBAAuBnH,EAAcmH,qBAAuB,sBAC5Fd,EAAKpV,KAAK,CACRqI,MAAO4N,GACP,GACD,GAEP,CACO,SAASrH,EAAsBoH,EAAGjH,GAEMA,EAAcoH,yBACzDnB,EAAcjG,EAAckG,cAEhC,qCC1EA,SAASmB,EAAgBxa,EAAGgB,GAC1B,OAAOwZ,EAAkBhe,OAAOyC,eAAiBzC,OAAOyC,eAAeyD,OAAS,SAAU1C,EAAGgB,GAC3F,OAAOhB,EAAEvB,UAAYuC,EAAGhB,CAC1B,EAAGwa,EAAgBxa,EAAGgB,EACxB,uJCFO,MAGMyZ,EAAkBzM,GAA4B,MAAhBA,EAAS,GAAaA,EAAW,IAAIA,IA8EnE0M,EAA2BA,CAACC,EAAaxH,IAAkB1G,IACtE,GAAIjH,OAAOgB,mBAAoB,OAAO,EACtC,GAnFqCiG,IAA0B,IAAjBA,EAAMmO,QAAgBnO,EAAMoO,QAAUpO,EAAMqO,SAAWrO,EAAMsO,SAAWtO,EAAMuO,SAmFxHC,CAAwBxO,GAAQ,OAAO,EAC3C,GAhF2CA,IAASA,EAAMyO,iBAgFtDC,CAA8B1O,GAAQ,OAAO,EACjD,MAAM2O,EAhFyBxQ,KAC/B,KAAOA,EAAKyQ,WAAYzQ,EAAOA,EAAKyQ,WAClC,GAAoC,MAAhCzQ,EAAK0Q,SAASC,cAChB,OAAO3Q,EAGX,OAAO,IAAI,EA0EW4Q,CAAkB/O,EAAM5P,QAC9C,GAAqB,MAAjBue,EAAuB,OAAO,EAClC,IA5CkC,KALKK,EAiDTL,GA5CzBM,aAAa,cAKwB,IAnCGD,KACb,IAAlCA,EAAOC,aAAa,WAUH,MAAjBD,EAAO5e,QAKP,CAAC,QAAS,IAAI8e,SAASF,EAAO5e,SAIZ,YAAlB4e,EAAO5e,UAA0B4e,EAAOG,cAAcC,YAAYC,QAElEL,EAAOG,cAAcC,YAAYC,SAAWL,EAAOG,cAAcC,cAAkC,SAAlBJ,EAAO5e,UAAuB4e,EAAOG,cAAcC,YAAYzK,KAEhJqK,EAAOG,cAAcC,YAAYzK,MAAQqK,EAAOG,cAAcC,aAW9DE,CAAgCN,GAuCgB,OAAO,EAjDdA,MAqDvC,MAAMO,EAAc1U,SAASnI,cAAc,KAIhB,KAAvBic,EAAca,OAChBD,EAAYC,KAAOb,EAAca,MAE/B,sBAAuBzW,QAAU4V,EAAca,gBAAgBC,oBACjEF,EAAYC,KAAOb,EAAca,KAAKE,SASxC,MAAMC,EAAS9U,SAASnI,cAAc,KAEtC,GADAid,EAAOH,KAAOzW,OAAOC,SAASwW,MACmB,IA3DhBI,EAACD,EAAQJ,IAAgBI,EAAO1W,WAAasW,EAAYtW,UAC5F0W,EAAOE,OAASN,EAAYM,KA0DtBD,CAAoBD,EAAQJ,GAAwB,OAAO,EAG/D,MAAMO,EAAiB,IAAIC,OAAO,IAAIC,KAAmBC,EAAAA,EAAAA,YAAW,SACpE,GA7DmCC,EAACX,EAAaO,KAagB,IAA/DA,EAAeK,KAAKnC,EAAgBuB,EAAYhO,aAKS,IAAzDgO,EAAYhO,SAAS0F,OAjBQ,iCA4D3BiJ,CAAsBX,EAAaO,GAAiB,OAAO,EAC/D,GAzCkCM,EAACT,EAAQJ,IAAqC,KAArBA,EAAYrI,OAKhD,KAAzBqI,EAAYhO,UACZgO,EAAYhO,WAAaoO,EAAOpO,UAmC1B6O,CAAqBT,EAAQJ,GAAc,OAAO,EACtD,GAAI7I,EAAc2J,eAAgB,CAEhC,GADqB,IAAIN,OAAOrJ,EAAc2J,gBAC7BF,KAAKZ,EAAYhO,UAChC,OAAO,CAEX,CACAvB,EAAMqE,iBAIN,MAAMiM,EAAsBtC,EAAgBuB,EAAYhO,UAAUnJ,QAAQ0X,EAAgB,KAE1F,OADA5B,EAAY,GAAGoC,IAAsBf,EAAYtI,SAASsI,EAAYrI,SAC/D,CAAK,EChIP,MAAMqJ,EAAgB,SAAC5C,EAAGjH,QAAa,IAAbA,IAAAA,EAAgB,CAAC,GDkInC,SAAU8J,EAAM9J,EAAe+J,GAC5C,MAAMC,EAAezC,EAAyBwC,EAAI/J,GAClD8J,EAAKjX,iBAAiB,QAASmX,EAEjC,CCrIEC,CAAW5X,OAAQ2N,GAAe8I,KAChCoB,EAAAA,EAAAA,UAASpB,EAAK,GAElB,qCCJA3gB,EAAQuC,YAAa,EACrBvC,EAAQgiB,qBAIR,SAA8BC,GAC5B,IAAI9X,GAAW,EAAI+X,EAAaC,eAC5BpX,GAAQ,EAAIqX,EAAOC,YAAYC,EAAenI,eAC9ClS,GAAM,EAAIma,EAAOG,QAAQ,MAO7B,OANA,EAAIH,EAAOI,kBAAiB,WAC1B,GAAIva,EAAIuH,QAAS,CACf,IAAIoK,EAAW7O,EAAMrC,KAAKyB,EAAU8X,GACpCha,EAAIuH,QAAQjD,SAAS,EAAGqN,GAAY,EACtC,CACF,GAAG,CAACzP,EAASrI,MACN,CACLmG,IAAKA,EACLwa,SAAU,WACJxa,EAAIuH,SACNzE,EAAMsR,KAAKlS,EAAU8X,EAAYha,EAAIuH,QAAQrC,UAEjD,EAEJ,EArBA,IAAImV,EAAiB,EAAQ,MACzBF,EAAS,EAAQ,MACjBF,EAAe,EAAQ,yCCJ3BhhB,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIiK,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAE3PF,EAAe,WAAc,SAASC,EAAiBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAMb,OAAQc,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMX,OAAOC,eAAeI,EAAQG,EAAWI,IAAKJ,EAAa,CAAE,CAAE,OAAO,SAAUK,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYV,EAAiBS,EAAYG,UAAWF,GAAiBC,GAAaX,EAAiBS,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAIfI,EAAUC,EAFD,EAAQ,OAMjBsgB,EAAkBtgB,EAFD,EAAQ,OAMzBugB,EAAcvgB,EAFD,EAAQ,OAIzB,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAQ9F,IAAIsgB,EAAiB,SAAUlgB,GAG7B,SAASkgB,IAGP,OAZJ,SAAyBjgB,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAUpJC,CAAgBC,KAAM8f,GAR1B,SAAoC7f,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAUpOE,CAA2BJ,MAAO8f,EAAezf,WAAajC,OAAOkC,eAAewf,IAAiBvf,MAAMP,KAAMQ,WAC1H,CAwBA,OAjCF,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CAG3eI,CAAUgf,EAAgBlgB,GAQ1BrB,EAAauhB,EAAgB,CAAC,CAC5B9gB,IAAK,SACLV,MAAO,WACL,IAAIwO,EAAS9M,KAGT+f,EAAWxX,EAAS,CAAC,EAAGvI,KAAKtB,OAMjC,cALOqhB,EAAS/c,KACZ+c,EAAS9L,uBACJ8L,EAAS9L,eAGX5U,EAAQK,QAAQqB,cACrB,MACAwH,EAAS,CAAC,EAAGwX,EAAU,CAAE5a,IAAK,SAAa6a,GACvClT,EAAOpO,MAAMuV,eAAeF,QAAUiM,CACxC,IACFhgB,KAAKtB,MAAMsC,SAEf,KAGK8e,CACT,CAhCqB,CAgCnBzgB,EAAQK,QAAQuB,WAIlB6e,EAAe3Q,UAAY,CACzBnM,KAAM6c,EAAYngB,QAAQ2Q,OAC1BtN,GAAI8c,EAAYngB,QAAQ2Q,QAG1BnT,EAAA,SAAkB,EAAI0iB,EAAgBlgB,SAASogB,oCCrE/C1hB,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAOqBpB,EAAQuS,wBAA0B,SAAiChR,EAAQwd,EAAWgE,GAClH,IAAIC,EAAeD,EAASjd,KACvBkd,IACHA,EAAejE,EACfhV,QAAQsD,KAAK,uCAGV4V,EAAkBxI,IAAIsE,IAAYkE,EAAkB1c,IAAIwY,EAAW,IAAItB,KAC5E,IAAIyF,EAAYD,EAAkBtd,IAAIoZ,GACtC,IAAImE,EAAUzI,IAAIuI,GAAlB,CAEA,IAAIG,EAAwB,WAC1B,IAAIA,GAAwB,EAC5B,IACE,IAAIC,EAAOliB,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC9CwE,IAAK,WACHwd,GAAwB,CAC1B,IAEFjZ,OAAOQ,iBAAiB,OAAQ,KAAM0Y,EACxC,CAAE,MAAO1d,GAAI,CACb,OAAOyd,CACT,CAX4B,GAY5B5hB,EAAOmJ,iBAAiBqU,EAAWgE,IAAUI,GAAwB,CAAEE,SAAS,IAChFH,EAAU/E,IAAI6E,EAfyB,CAgBzC,EAEiChjB,EAAQsjB,2BAA6B,SAAoC/hB,EAAQwd,EAAWgE,GAC3HxhB,EAAOkb,oBAAoBsC,EAAWgE,GACtCE,EAAkBtd,IAAIoZ,GAAWwE,OAAOR,EAASjd,MAAQiZ,EAC3D,EA9BA,IAgCIkE,EAAoB,IAAI7e,ggBChCrB,MAiBMof,EAA4BC,IACvC,IAAIC,EAAWC,EAASC,EAAQxiB,EAChC,GAAIqiB,aAAa1L,MACf,OAAO0L,EAAEnjB,KAAI,SAAUc,GAIrB,MAHqB,iBAAVA,IACTA,EAAQoiB,EAAyBpiB,IAE5BA,CACT,IAGA,IAAKuiB,KADLD,EAAO,CAAC,EACQD,EAAG,CACe,IAADve,EAA/B,GAAIue,EAAEjY,eAAemY,GACnBC,GAAUD,EAAQE,OAAO,GAAG5D,cAAgB0D,EAAQG,MAAM,IAAMH,GAC7D7Z,WACAP,QAAQ,KAAM,KACdA,QAAQ,MAAO,KACfA,QAAQ,KAAM,MACjBnI,EAAQqiB,EAAEE,cAES5L,OACN,OAAV3W,IAAuB,QAAL8D,EAAA9D,SAAK,IAAA8D,OAAA,EAALA,EAAOxB,eAAgBxC,UAE1CE,EAAQoiB,EAAyBpiB,IAEnCsiB,EAAKE,GAAUxiB,CAEnB,CAEF,OAAOsiB,CAAI,gBC7Cb,MAAMK,EAAM,IAAIC,KACdC,GAAS,KAAOF,EAAIG,WAAa,IAAIJ,OAAO,GAC5CK,GAAO,IAAMJ,EAAIK,WAAWN,OAAO,GAEnCO,EAAgB,CADTN,EAAIO,cACYL,EAAOE,GAAKI,KAAK,KAK7BC,EAAsBC,IACjC,IAAKA,EAAU,OACf,MAAMvG,EAAOsF,EAAyBiB,EAASC,WAW/C,MAAO,CACLC,aATmBF,EAASE,cAAgBzG,EAAKyG,aAUjDC,eATqBH,EAASG,gBAAkB1G,EAAK0G,eAUrDC,eATqBJ,EAASI,gBAAkB3G,EAAK2G,eAUrDC,KATWL,EAASK,MAAQ5G,EAAK4G,KAUjC/Z,MATY0Z,EAAS1Z,OAASmT,EAAKnT,MAUnCga,SATeN,EAASM,UAAY7G,EAAK6G,SAUzCC,aATmBP,EAASO,cAAgB9G,EAAK8G,aAUlD,EAMUC,EAAkBC,IAC7B,IAAKA,EAAM,OACX,MAAMhH,EAAkBsF,EAAyB0B,EAAKR,WAGtD,MAAO,IACFQ,EACHrf,GAAIqf,EAAKC,QAAUjH,EAAKkH,UAAY,GACpCD,OAAQD,EAAKC,QAAUjH,EAAKkH,SAC5BC,SAAUH,EAAKG,UAAYC,EAAYJ,EAAKC,QAAUjH,EAAKkH,UAC3DG,SAAUL,EAAKK,UAAYC,EAAgBtH,EAAKqH,UAChDE,SAAUP,EAAKO,UAAYvH,EAAKuH,SAChCrP,MACE8O,EAAK9O,OAASsP,EAAaxH,EAAK9H,QAAUsP,EAAaxH,EAAKkH,UAC9DO,WAAYT,EAAKS,YAAczH,EAAKyH,WACpCC,KAAMV,EAAKU,MAAQ1H,EAAK0H,KACxBC,WAAYC,OAAOZ,EAAKW,YAAc3H,EAAK2H,YAAYE,QAAQ,GAC/DC,WACEC,EAAef,EAAKc,aAAeE,EAAiBhI,EAAK8H,YAC3DG,iBACEF,EAAef,EAAKiB,mBACpBD,EAAiBhI,EAAKiI,mBACtB9B,EACH,EAGGiB,EAAec,IACnB,IAAKA,EAAM,OAEX,GAAa,aAATA,EAAqB,MAAO,eAChC,GAAa,aAATA,EAAqB,MAAO,qBAChC,GAAa,SAATA,EAAiB,MAAO,UAC5B,GAAa,UAATA,EAAkB,MAAO,YAE7B,IAAIC,EAASD,EAAKhR,OAClB,MAAI,QAAQkM,KAAK+E,GAAgB,aAAaA,IAEvCA,EACJ9c,QAAQ,SAAU,aAClBA,QAAQ,MAAO,cACfA,QAAQ,OAAQ,SAChBA,QAAQ,MAAO,SACfA,QAAQ,KAAM,SACdA,QAAQ,OAAQ,SAChBA,QAAQ,MAAO,cACfA,QAAQ,IAAK,KACbA,QAAQ,KAAM,IAAI,EAGjBmc,EAAgBtP,GACbkP,EAAYlP,GAGfoP,EAAmBD,GACN,SAAbA,EAA4B,WACf,SAAbA,EAA4B,OACf,SAAbA,EAA4B,aACf,SAAbA,EAA4B,aACf,OAAbA,EAA0B,UACb,OAAbA,EAA0B,YACb,QAAbA,EAA2B,aACd,UAAbA,EAA6B,QAChB,UAAbA,EAA6B,gBAChB,QAAbA,EAA2B,SACd,QAAbA,EAA2B,SACd,SAAbA,EAA4B,UACf,SAAbA,EAA4B,UACf,WAAbA,EAA8B,SACjB,UAAbA,EAA6B,UAChB,SAAbA,EAA4B,iBAAhC,EAIIW,EAAoBI,IACxB,IAAKA,EAAM,OACX,GAA0B,IAAtBA,EAAK3f,QAAQ,KAAY,OAAO4f,EAAuBD,GAC3D,MAAME,EAAYF,EAAKG,MAAM,KAC7B,OAAOF,EACL,GAAGC,EAAU,MAAMA,EAAU,MAAMA,EAAU,KAC9C,EAGGP,EAAkBK,IACtB,GAAKA,EACL,OAA0B,IAAtBA,EAAK3f,QAAQ,KAAmB4f,EAAuBD,IAC3DA,EAAOA,EAAKG,MAAM,KAAK,GAChBF,EAAuBD,EAAK/c,QAAQ,KAAM,MAAK,EAGlDgd,EAA0BD,GACJ,IAAtBA,EAAK3f,QAAQ,KAAmB2f,EAC7BA,EACJG,MAAM,KACNnmB,KAAIyF,GAAMA,EAAEpF,OAAS,EAAI,IAAMoF,EAAIA,IACnCwe,KAAK,KAMGmC,EAAmBC,IAC9B,IAAKA,EAAO,OAGZ,MAAMzI,EAAOyI,EAAMrmB,KAAIyF,GAAKkf,EAAelf,KAAIrF,OAAOkmB,EAAAA,IAmBtD,OAhBqB1I,aAAI,EAAJA,EACjB5d,KAAIumB,GACCA,EAAKC,UACLD,EAAKjB,MACLiB,EAAKV,iBACHU,EAHoB,OAK5BnmB,OAAOkmB,EAAAA,KAGkBG,MAAK,CAACjiB,EAAGC,IAC9BD,EAAEqhB,iBACFphB,EAAEohB,kBACArhB,EAAEqhB,iBAAmBphB,EAAEohB,kBAAoB,EADlB,GADC,GAKtB,EAMFa,EAAmBvC,IAC9B,IAAKA,EAAU,OACf,MAAMwC,EAAUzC,EAAmBC,GAEnC,OACEwC,aAAO,EAAPA,EAAStC,gBACTsC,aAAO,EAAPA,EAASpC,kBACToC,aAAO,EAAPA,EAASrC,iBACT,EAAE,EAOOsC,EAAsBzC,IACjC,IAAKA,EAAU,OACf,MAAMwC,EAAUzC,EAAmBC,GAE7B1Z,EAAQ,CAACkc,aAAO,EAAPA,EAASlc,MAAOkc,aAAO,EAAPA,EAASlC,UACrCrkB,OAAOkmB,EAAAA,IACPrC,KAAK,KACF4C,EAAU,EACdF,aAAO,EAAPA,EAASpC,kBAAkBoC,aAAO,EAAPA,EAASrC,gBACpCqC,aAAO,EAAPA,EAASnC,KACT/Z,GAECzK,KAAIyF,GAAKA,aAAC,EAADA,EAAGqP,SACZ1U,OAAOkmB,EAAAA,IACV,OAAOO,EAAQxmB,OAASwmB,EAAQ5C,KAAK,WAAQlb,CAAS,EAM3C+d,EAA6B3C,IACxC,IAAKA,EAAU,OAEf,MAAM4C,EAAQ5C,EAAS6C,gBAAkB,GACzC,IAAKD,EAAM1mB,OAAQ,OAEnB,MAAM4mB,EAAOF,EAAM1mB,OAAS,EAAI0mB,EAAMG,WAAQne,EAC9C,MAAO,GAAGge,EAAM9C,KAAK,SAASgD,EAAO,QAAQA,IAAS,eAAehe,QACnE,KACA,IACD,EAMUke,EAAmBhD,IAA8B,IAADiD,EAC3D,IAAKjD,EAAU,OACf,MAAMwC,EAAUzC,EAAmBC,GAEnC,OAAIwC,SAAAA,EAASjC,aAAqBiC,EAAQjC,aACpCP,SAAe,QAAPiD,EAARjD,EAAUkC,aAAK,IAAAe,GAAfA,EAAiB/mB,OACd8jB,aAAQ,EAARA,EAAUkC,MACdrmB,KAAKyF,GAAiBkf,EAAelf,KACrCzF,KAAIyF,GAAKA,aAAC,EAADA,EAAG4f,aACZjlB,OAAOkmB,EAAAA,IACPY,WALL,CAOgB,EAMLG,EAAkB,SAAChB,GAA6B,IAADiB,EAC1D,QADgD,IAAlBjB,IAAAA,EAAqB,IACzC,QAANiB,EAACjB,SAAK,IAAAiB,IAALA,EAAOjnB,OAAQ,OACpB,MAAM,IAAEknB,EAAG,IAAEC,GAAQC,EAAiBpB,GAEtC,OAAKkB,GAAQC,EACTD,IAAQC,EAAY,GAAGD,EAAIG,uBACxB,GAAGH,EAAIG,sBAAsBF,EAAIE,4BAFxC,CAGF,EAEaD,EAAmB,SAACpB,GAA6B,IAADsB,EAC3D,QADiD,IAAlBtB,IAAAA,EAAqB,IAC1C,QAANsB,EAACtB,SAAK,IAAAsB,IAALA,EAAOtnB,OACV,MAAO,CACLknB,SAAKxe,EACLye,SAAKze,GAGT,MAAM6e,EAAQvB,EACXjmB,QAAOqF,GAAKA,EAAE+gB,WACdxmB,KAAIyF,IAAC,IAAAoiB,EAAA,OAAIhS,KAAKiS,OAAuB,QAAjBD,EAAAlD,EAAelf,UAAE,IAAAoiB,OAAA,EAAjBA,EAAmBvC,OAAQ,EAAE,IACjDllB,OAAOkmB,EAAAA,IACPG,MAAK,CAACjiB,EAAGC,IAAMD,EAAIC,IACtB,MAAO,CACL8iB,IAAKK,EAAMvnB,OAASunB,EAAM,QAAK7e,EAC/Bye,IAAKI,EAAMtnB,QAAO,CAACynB,EAAYvjB,IAAMujB,EAAavjB,GAAG,GAEzD,EAKawjB,EAAkBA,CAC7BT,EACAU,KAEA,GAAKV,GAAQU,EACb,OAAKV,EACAU,EACDV,IAAQU,EAAY,GAAGV,EAAIG,uBACxB,GAAGH,EAAIG,sBAAsBO,EAAIP,uBAFvB,GAAGH,EAAIG,uBADP,GAAGO,aAAG,EAAHA,EAAKP,sBAGqC,EAMnDQ,EAAcC,GAAiBA,GAAOA,IAAQ,IAAMA,GAAO,GAC3DC,EAAcC,GAAiBA,GAAOA,IAAQ,KAAOA,GAAO,IAG5DC,EAAkBA,CAAC9H,EAAgBJ,KAC9C,IACImI,EAAOC,EAAQpI,EAAY+H,IAAM3H,EAAO2H,KACxCM,EAAOD,EAAQpI,EAAYiI,IAAM7H,EAAO6H,KACxC7jB,EACFqR,KAAK6S,IAAIH,EAAO,GAAK1S,KAAK6S,IAAIH,EAAO,GACrC1S,KAAK8S,IAAIH,EAAQhI,EAAO2H,MACtBtS,KAAK8S,IAAIH,EAAQpI,EAAY+H,MAC7BtS,KAAK6S,IAAID,EAAO,GAChB5S,KAAK6S,IAAID,EAAO,GAGpB,OAXQ,MASA,EAAI5S,KAAK+S,MAAM/S,KAAKgT,KAAKrkB,GAAIqR,KAAKgT,KAAK,EAAIrkB,IAE3C,EAGJgkB,EAAWM,GACRA,GAAOjT,KAAKkT,GAAK,KAabC,EAAoB7E,KACtBA,UAAAA,EAAU8E,aAMRC,EAA2B/E,IAA6B,IAADgF,EAClE,OAAKhF,GAAY6E,EAAiB7E,IAG9B6E,EAAiB7E,GAH+B,GAMhDA,EAASiF,aAAejF,EAASkF,kBAC5B,CAAClF,EAAS0B,kBAAkBzlB,OAAOkmB,EAAAA,IAGxCnC,EAASiF,aAAejF,EAASmF,SAC5B,CAACnF,EAAS0B,kBAAoB9B,GAGpB,QAAfoF,EAAChF,EAASkC,aAAK,IAAA8C,GAAdA,EAAgB9oB,OACd8jB,EAASkC,MACbjmB,QAAOqF,GAAKA,EAAE+gB,WACdxmB,KAAIyF,GAAKkf,EAAelf,KACxBzF,KAAI4kB,GAAQA,aAAI,EAAJA,EAAMiB,mBAClBzlB,OAAOkmB,EAAAA,IACPG,OANiC,EAM3B,EAGE8C,EAA2BpF,IAA6B,IAADqF,EAAAC,EAClE,GAAKtF,IAGD6E,EAAiB7E,GAArB,CAGA,GAAIA,EAASiF,aAAejF,EAASkF,kBACnC,OAAOlF,EAAS0B,uBAAoB9c,EAGtC,GAAIob,EAASiF,aAAejF,EAASmF,SACnC,OAAOnF,EAAS0B,kBAAoB9B,EAGtC,GAAmB,QAAfyF,EAACrF,EAASkC,aAAK,IAAAmD,GAAdA,EAAgBnpB,OACrB,OAA2D,QAA3DopB,EAAO9E,EAAe+E,EAAqBvF,EAASkC,eAAO,IAAAoD,OAAA,EAApDA,EAAsD5D,gBAZb,CAY6B,EAGlE8D,EAAuBxF,IAClC,GAAKA,EAGL,OAAI6E,EAAiB7E,GACZA,EAASkF,mBAAqB,eAGnClF,EAASiF,aAAejF,EAASkF,kBAC5BlF,EAASkF,kBAEXO,EAAmBL,EAAwBpF,GAAU,EAGjD0F,EAAuBjF,IAClC,IAAKA,EAAM,OAEX,MAAM+B,EAAUhC,EAAeC,GAC/B,OAAK+B,SAAAA,EAASd,iBAEP+D,EAAmBjD,aAAO,EAAPA,EAASd,uBAFnC,CAEoD,EAGzC6D,EAAuB,SAACrD,GAA6B,IAADyD,EAC/D,QADqD,IAAlBzD,IAAAA,EAAqB,IAC9C,QAANyD,EAACzD,SAAK,IAAAyD,IAALA,EAAOzpB,OAAQ,OAWpB,OATEgmB,EACGjmB,QAAOqF,GAAKA,EAAE+gB,WACdxmB,KAAIyF,GAAKkf,EAAelf,KACxBghB,MAAK,CAACjiB,EAAGC,IACR,IAAIif,MAAKlf,aAAC,EAADA,EAAGqhB,mBAAoB,IAChC,IAAInC,MAAKjf,aAAC,EAADA,EAAGohB,mBAAoB,KAC3B,EACD,KACD,IACK,EAChB,EAmCakE,EAAYA,CAACC,EAAaC,KACrC,MAAMjE,EAAO,IAAItC,KAAKsG,GAStB,OARAhE,EAAKkE,QAAQ,GACblE,EAAKmE,SAASnE,EAAKpC,WAAaqG,GAChCjE,EAAKkE,QACHrU,KAAK0R,IACHyC,EAAMlG,UATWsG,EAACC,EAAc1G,IACpC,IAAID,KAAK2G,EAAM1G,EAAO,GAAGG,UASrBsG,CAAepE,EAAKhC,cAAegC,EAAKpC,WAAa,KAGlDoC,CAAI,EAGA4D,EAAsBU,IACjC,IAAKA,EAAY,OAEjB,MAAM7G,EAAM,IAAIC,KACVsC,EAAO,IAAItC,KAAK4G,EAAa,YAEnC,GAAIC,MAAMvE,EAAKwE,WAAY,OAC3B,GAAIxE,GAAQvC,EAAK,MAAO,gBAExB,MAAME,EAAQqC,EAAKpC,WAEnB,MAAO,IADS/N,KAAKC,MAAM6N,EAAQ,GAAK,KAClBqC,EAAKhC,eAAe,qCCjd5CpjB,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAMgCkB,EAN5ByoB,EAAU,EAAQ,MAElBC,GAI4B1oB,EAJMyoB,IAIezoB,EAAIC,WAAaD,EAAM,CAAEE,QAASF,GAFnF6P,EAAyB,EAAQ,MAKrC,IAKIW,EAAY,CAEdmY,aAAc,GACdC,YAAa,GACbC,oBAAqB,GAErBtW,MAAO,SAAeH,EAAoB0W,GACxC,GAAI1W,EAAoB,CACtB,IAAI2W,EAbW,SAAwBA,GAC3C,IAAIC,EAAiBhoB,UAAU3C,OAAS,QAAsB0I,IAAjB/F,UAAU,GAAmBA,UAAU,GAAK,GACzF,OAAO,EAAI0nB,EAASxoB,SAAS6oB,EAAcC,EAC7C,CAUyBC,EAAe,SAAUpa,GAC1C2B,EAAU0Y,cAAc9W,EAC1B,GAAG0W,GAGH,OAFAtY,EAAUqY,oBAAoBriB,KAAK4L,IACnC,EAAIvC,EAAuBI,yBAAyBmC,EAAoB,SAAU2W,GAC3E,YACL,EAAIlZ,EAAuBmR,4BAA4B5O,EAAoB,SAAU2W,GACrFvY,EAAUqY,oBAAoBM,OAAO3Y,EAAUqY,oBAAoBxkB,QAAQ+N,GAAqB,EAClG,CACF,CACA,OAAO,WAAa,CACtB,EACAE,UAAW,SAAmBF,GAC5B,OAAsE,IAA/D5B,EAAUqY,oBAAoBxkB,QAAQ+N,EAC/C,EACAgX,iBAAkB,SAA0BhX,GAC1C,GAAIA,IAAuB1I,SAAU,CACnC,IAAI2f,OAAuCtiB,IAAnBa,OAAO4P,QAC3B8R,EAA+C,gBAA/B5f,SAAS6f,YAAc,IAC3C,OAAOF,EAAoBzhB,OAAOuP,QAAUmS,EAAe5f,SAAS8f,gBAAgBC,WAAa/f,SAASggB,KAAKD,UACjH,CACE,OAAOrX,EAAmBqX,UAE9B,EACAE,iBAAkB,SAA0BvX,GAC1C,GAAIA,IAAuB1I,SAAU,CACnC,IAAI2f,OAAuCtiB,IAAnBa,OAAOuP,QAC3BmS,EAA+C,gBAA/B5f,SAAS6f,YAAc,IAC3C,OAAOF,EAAoBzhB,OAAO4P,QAAU8R,EAAe5f,SAAS8f,gBAAgB3e,UAAYnB,SAASggB,KAAK7e,SAChH,CACE,OAAOuH,EAAmBvH,SAE9B,EACAqe,cAAe,SAAuB9W,IACpB5B,EAAUqY,oBAAoBrY,EAAUqY,oBAAoBxkB,QAAQ+N,IAAqBuW,cAAgB,IAC/G3kB,SAAQ,SAAUtB,GAC1B,OAAOA,EAAE8N,EAAU4Y,iBAAiBhX,GAAqB5B,EAAUmZ,iBAAiBvX,GACtF,GACF,EACAK,gBAAiB,SAAyB3D,GACxC0B,EAAUoY,YAAYpiB,KAAKsI,EAC7B,EACA6D,cAAe,SAAuB7D,EAASsD,GAC7C,IAAI/H,EAAYmG,EAAUqY,oBAAoBrY,EAAUqY,oBAAoBxkB,QAAQ+N,IAE/E/H,EAAUse,eACbte,EAAUse,aAAe,IAG3Bte,EAAUse,aAAaniB,KAAKsI,EAC9B,EACAqF,aAAc,WACZ3D,EAAUoY,YAAY5kB,SAAQ,SAAU4lB,GACtC,OAAOA,GACT,GACF,EACApgB,QAAS,SAAiBkJ,EAAcE,GACtCpC,EAAUqY,oBAAoB7kB,SAAQ,SAAUtB,GAC9C,OAAOA,EAAEimB,cAAgBjmB,EAAEimB,aAAatqB,QAAUqE,EAAEimB,aAAatkB,QAAQuO,IAAe,GAAKlQ,EAAEimB,aAAaQ,OAAOzmB,EAAEimB,aAAatkB,QAAQuO,GAAa,EACzJ,IAEIpC,EAAUoY,aAAepY,EAAUoY,YAAYvqB,QAAUmS,EAAUoY,YAAYvkB,QAAQqO,IAAiB,GAC1GlC,EAAUoY,YAAYO,OAAO3Y,EAAUoY,YAAYvkB,QAAQqO,GAAe,GAG5EhJ,SAASyQ,oBAAoB,SAAU3J,EAAU0Y,cACnD,EAGAW,OAAQ,WACN,OAAOrZ,EAAUqY,oBAAoB7kB,SAAQ,SAAUtB,GACrD,OAAO8N,EAAU0Y,cAAcxmB,EACjC,GACF,GAGFhF,EAAA,QAAkB8S,mCCtGlB9S,EAAQuC,YAAa,EACrBvC,EAAQqb,oBAAiB,EACzB,IACI+Q,EAA6B,gCAC7B/Q,EAA8B,WAChC,SAASA,IAAkB,CAC3B,IAAI3M,EAAS2M,EAAenZ,UAqC5B,OApCAwM,EAAOhG,KAAO,SAAcyB,EAAUrI,GACpC,IAAIuqB,EAAWvpB,KAAKwpB,YAAYniB,EAAUrI,GAC1C,IACE,IAAIV,EAAQ8I,OAAOqiB,eAAeC,QAAQH,GAC1C,OAAOjrB,EAAQiE,KAAKC,MAAMlE,GAAS,CACrC,CAAE,MAAOsE,GAIP,OAAIwE,QAAUA,OAAOkiB,IAA+BliB,OAAOkiB,GAA4BC,GAC9EniB,OAAOkiB,GAA4BC,GAErC,CACT,CACF,EACA3d,EAAO2N,KAAO,SAAclS,EAAUrI,EAAKV,GACzC,IAAIirB,EAAWvpB,KAAKwpB,YAAYniB,EAAUrI,GACtC2qB,EAAcpnB,KAAKqnB,UAAUtrB,GACjC,IACE8I,OAAOqiB,eAAeI,QAAQN,EAAUI,EAC1C,CAAE,MAAO/mB,GACHwE,QAAUA,OAAOkiB,KAGnBliB,OAAOkiB,GAA8B,CAAC,GAFtCliB,OAAOkiB,GAA4BC,GAAYhnB,KAAKC,MAAMmnB,EAQ9D,CACF,EACA/d,EAAO4d,YAAc,SAAqBniB,EAAUrI,GAClD,IAAI8qB,EAtCe,YAsCwBziB,EAASuI,SACpD,OAAO5Q,QAA6C8qB,EAAeA,EAAe,IAAM9qB,CAC1F,EACOuZ,CACT,CAxCkC,GAyClCrb,EAAQqb,eAAiBA,qCC/CzB,SAASwR,EAAkBpoB,EAAGK,IAC3B,MAAQA,GAAKA,EAAIL,EAAE9D,UAAYmE,EAAIL,EAAE9D,QACtC,IAAK,IAAI+E,EAAI,EAAGvB,EAAI4T,MAAMjT,GAAIY,EAAIZ,EAAGY,IAAKvB,EAAEuB,GAAKjB,EAAEiB,GACnD,OAAOvB,CACT,CCAA,SAAS2oB,EAAmBroB,GAC1B,OCJF,SAA4BA,GAC1B,GAAIsT,MAAMC,QAAQvT,GAAI,OAAO,EAAiBA,EAChD,CDES,CAAkBA,IEL3B,SAA0BA,GACxB,GAAI,oBAAsBH,QAAU,MAAQG,EAAEH,OAAOyoB,WAAa,MAAQtoB,EAAE,cAAe,OAAOsT,MAAMiV,KAAKvoB,EAC/G,CFGiC,CAAgBA,IGJjD,SAAqCA,EAAGK,GACtC,GAAIL,EAAG,CACL,GAAI,iBAAmBA,EAAG,OAAO,EAAiBA,EAAGK,GACrD,IAAIJ,EAAI,CAAC,EAAEoF,SAAS9G,KAAKyB,GAAGqf,MAAM,GAAI,GACtC,MAAO,WAAapf,GAAKD,EAAEf,cAAgBgB,EAAID,EAAEf,YAAYoC,MAAO,QAAUpB,GAAK,QAAUA,EAAIqT,MAAMiV,KAAKvoB,GAAK,cAAgBC,GAAK,2CAA2C4c,KAAK5c,GAAK,EAAiBD,EAAGK,QAAK,CACtN,CACF,CHFuD,CAA2BL,IILlF,WACE,MAAM,IAAI7B,UAAU,uIACtB,CJGwF,EACxF,oEKFA,IAAIqqB,EAAUrtB,EAAQ,uCCFtBsB,OAAOC,eAAenB,EAAS,aAA/B,CAA+CoB,OAAO,IA6CtDpB,EAAQktB,YAVY,iBAWpBltB,EAAQmtB,iBAHkBhd,GAvCJ,EAACA,EAAQid,KAC3B,MAAM,QAAErQ,EAAU,MAAOsQ,GAAmBld,GAAU,CAAC,EACjDmd,EAAYjoB,KAAKqnB,UAAUW,GAAgB,CAACrpB,EAAGa,KAChC,mBAANA,IACPA,EAAI0oB,OAAO1oB,IACL2oB,WAAWxpB,EAAI,OACjBa,EAAI,YAAcA,GAGnBA,KAEX,MAAO,CACH,uBACA3D,OAAOusB,KAAKJ,GAAgB1sB,OAAS,EAC/B,iCAAiC2sB,MACjC,mBACN,kBACAvQ,EAAQpc,OAAS,EAAI,WAAW0E,KAAKqnB,UAAU3P,MAAc,GAC7D,oCACAqQ,GACF7I,KAAK,GAAG,EAmBuBmJ,CAAcvd,EAzC1B,2iDC+BrBwd,EAiBAC,EASAC,EAQAC,EAMAC,EAOAC,qBAhFAC,EAAS,SAAgBC,GAC3BprB,KAAKqrB,OAASD,EAAWC,OACzBrrB,KAAKsrB,OAASF,EAAWE,OACzBtrB,KAAKurB,KAAOH,EAAWG,KACvBvrB,KAAKwrB,KAAOJ,EAAWI,KAEvBxrB,KAAKyrB,OAASzrB,KAAKurB,KAAOvrB,KAAKqrB,OAC/BrrB,KAAK0rB,OAAS1rB,KAAKwrB,KAAOxrB,KAAKsrB,OAE/BtrB,KAAK2rB,iBAAmBP,EAAWO,kBAAoB,EACvD3rB,KAAK4rB,eAAiBR,EAAWQ,gBAAkB,EACnD5rB,KAAK6rB,iBAAmBT,EAAWS,kBAAoB,EACvD7rB,KAAK8rB,eAAiBV,EAAWU,gBAAkB,CACrD,EAEA,SAASvjB,IAeP,OAdAA,EAAWnK,OAAOoK,QAAU,SAAU/J,GACpC,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CACzC,IAAI8J,EAASjI,UAAU7B,GAEvB,IAAK,IAAIK,KAAOyJ,EACVrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAC/CP,EAAOO,GAAOyJ,EAAOzJ,GAG3B,CAEA,OAAOP,CACT,EAEO8J,EAAShI,MAAMP,KAAMQ,UAC9B,EAIA,SAAWqqB,GACTA,EAAuB,MAAI,QAC3BA,EAA4B,WAAI,aAChCA,EAA4B,WAAI,aAChCA,EAAwB,OAAI,SAC5BA,EAAyB,QAAI,UAC7BA,EAAyB,QAAI,UAC7BA,EAAyB,QAAI,UAC7BA,EAAuB,MAAI,QAC3BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SAC5BA,EAAwB,OAAI,SAC5BA,EAAyB,QAAI,SAC9B,CAbD,CAaGA,IAAoBA,EAAkB,CAAC,IAI1C,SAAWC,GACTA,EAAU,GAAI,KACdA,EAAM,KAAO,IACbA,EAAU,GAAI,KACdA,EAAU,GAAI,IACf,CALD,CAKGA,IAAUA,EAAQ,CAAC,IAItB,SAAWC,GACTA,EAAmB,IAAI,MACvBA,EAAoB,KAAI,OACxBA,EAAmB,IAAI,KACxB,CAJD,CAIGA,IAAkBA,EAAgB,CAAC,IAItC,SAAWC,GACTA,EAAW,IAAM,EAClB,CAFD,CAEGA,IAAeA,EAAa,CAAC,IAIhC,SAAWC,GACTA,EAAqB,SAAI,WACzBA,EAAuB,WAAI,YAC5B,CAHD,CAGGA,IAAeA,EAAa,CAAC,IAIhC,SAAWC,GACTA,EAAmB,KAAI,OACvBA,EAAqB,OAAI,SACzBA,EAAsB,QAAI,UAC1BA,EAAwB,UAAI,YAC5BA,EAAyB,WAAI,aAC7BA,EAA0B,YAAI,cAC9BA,EAA0B,YAAI,cAC9BA,EAA0B,YAAI,cAC9BA,EAAyB,WAAI,aAC7BA,EAAyB,WAAI,aAC7BA,EAAyB,WAAI,aAC7BA,EAA0B,YAAI,cAC9BA,EAA2B,aAAI,eAC/BA,EAA2B,aAAI,eAC/BA,EAA2B,aAAI,eAC/BA,EAA0B,YAAI,cAC9BA,EAA0B,YAAI,cAC9BA,EAA0B,YAAI,cAC9BA,EAA4B,cAAI,gBAChCA,EAA6B,eAAI,iBACjCA,EAA6B,eAAI,iBACjCA,EAA6B,eAAI,iBACjCA,EAA4B,cAAI,gBAChCA,EAA4B,cAAI,gBAChCA,EAA4B,cAAI,gBAChCA,EAAyB,WAAI,aAC7BA,EAA0B,YAAI,cAC9BA,EAA4B,cAAI,eACjC,CA7BD,CA6BGA,IAAiBA,EAAe,CAAC,IAKpC,IAAInoB,EAAK,EAMT,IAAIgpB,EAAoB,WACtB,SAASA,EAAKpuB,GACZ,IAAIquB,EAAOruB,EAAQqiB,GAAGjN,wBAEtB,GAAIpV,EAAQsuB,KAAKC,gBAAiB,CAChC,IAAIC,EAAaxuB,EAAQsuB,KAAKC,gBAAgBnZ,wBAC9CiZ,EAAOzjB,EAAS,CAAC,EAAGyjB,EAAM,CACxBhZ,IAAKgZ,EAAKhZ,IAAMmZ,EAAWnZ,IAC3BoZ,MAAOJ,EAAKI,MAAQD,EAAWzV,KAC/B2V,OAAQL,EAAKK,OAASF,EAAWnZ,IACjC0D,KAAMsV,EAAKtV,KAAOyV,EAAWzV,MAEjC,CAEA1W,KAAKkT,OAASvV,EAAQqiB,GAAGsM,aACzBtsB,KAAKusB,MAAQ5uB,EAAQqiB,GAAGwM,YACxBxsB,KAAK0W,KAAOsV,EAAKtV,KACjB1W,KAAKosB,MAAQJ,EAAKI,MAClBpsB,KAAKgT,IAAMgZ,EAAKhZ,IAChBhT,KAAKqsB,OAASL,EAAKK,OAEf1uB,EAAQ8uB,YACVzsB,KAAK0sB,uBAAuB/uB,EAAQ8uB,WAExC,CAmBA,OAbaV,EAAK3sB,UAEXstB,uBAAyB,SAAgCD,GAC9D,IAAIE,EAAaF,EAAWzZ,IAAMyZ,EAAWJ,OACzCO,EAAaH,EAAW/V,KAAO+V,EAAWL,MAC9CpsB,KAAKgT,KAAOyZ,EAAWzZ,IACvBhT,KAAKosB,OAASK,EAAWL,MACzBpsB,KAAKqsB,QAAUI,EAAWJ,OAC1BrsB,KAAK0W,MAAQ+V,EAAW/V,KACxB1W,KAAKkT,QAAUyZ,EACf3sB,KAAKusB,OAASK,CAChB,EAEOb,CACT,CA5CwB,GA8CpBc,EAAc,CAAC7B,EAAW,IAAKF,EAAMgC,GAAIhC,EAAM,KAAMA,EAAU,GAAGA,EAAU,GAAGC,EAAczE,IAAKyE,EAAcgC,KAAMhC,EAAciC,KAKxI,SAAS,EAAkBpmB,EAAKqmB,QACV,IAAhBA,IACFA,EAAcnC,EAAM,MAGtB,IAAIoC,EAAM,CACR5uB,MAAO,EACP8jB,KAAM6K,GAER,QAAmB,IAARrmB,EAAqB,OAAOsmB,EAGvC,KAF6B,iBAARtmB,GAAmC,iBAARA,GAG9C,MAAM,IAAIjD,MAAM,sEAUlB,GAPAiD,EAAM6jB,OAAO7jB,GACbsmB,EAAI5uB,MAAQ6uB,WAAWvmB,GAEvBsmB,EAAI9K,KAAOxb,EAAIwmB,MAAM,oBAAoB,IAAMH,GAE7BJ,EAAYtP,SAAS2P,EAAI9K,MAGzC,MAAM,IAAIze,MAAM,0BAGlB,OAAOupB,CACT,CAEA,IAAIG,EAAgB,CAClBC,KAAM,CAAC,IAAM,GAAK,IAAM,GACxBC,OAAQ,CAAC,IAAM,EAAK,EAAK,GACzBC,QAAS,CAAC,EAAK,EAAK,IAAM,GAC1BC,UAAW,CAAC,IAAM,EAAK,IAAM,GAG7BC,WAAY,CAAC,IAAM,KAAO,IAAM,KAChCC,YAAa,CAAC,IAAM,KAAO,KAAO,KAClCC,YAAa,CAAC,KAAO,IAAM,KAAO,KAClCC,YAAa,CAAC,KAAO,IAAM,KAAO,KAClCC,WAAY,CAAC,IAAM,EAAK,KAAO,MAC/BC,WAAY,CAAC,IAAM,IAAM,KAAO,MAChCC,WAAY,CAAC,GAAK,IAAM,IAAM,MAG9BC,YAAa,CAAC,IAAM,IAAM,IAAM,KAChCC,aAAc,CAAC,KAAO,IAAM,KAAO,GACnCC,aAAc,CAAC,KAAO,IAAM,IAAM,GAClCC,aAAc,CAAC,IAAM,EAAK,IAAM,GAChCC,YAAa,CAAC,IAAM,KAAO,KAAO,GAClCC,YAAa,CAAC,IAAM,EAAK,IAAM,GAC/BC,YAAa,CAAC,KAAO,IAAM,KAAO,GAGlCC,cAAe,CAAC,KAAO,IAAM,KAAO,MACpCC,eAAgB,CAAC,KAAO,KAAO,KAAO,GACtCC,eAAgB,CAAC,IAAM,EAAK,KAAO,GACnCC,eAAgB,CAAC,IAAM,EAAK,IAAM,GAClCC,cAAe,CAAC,KAAO,IAAM,IAAM,KACnCC,cAAe,CAAC,EAAK,EAAK,EAAK,GAC/BC,cAAe,CAAC,KAAO,KAAO,IAAM,KAGpCC,WAAY,CAAC,IAAM,IAAM,KAAO,MAChCC,YAAa,CAAC,KAAO,KAAO,IAAM,OAClCC,cAAe,CAAC,KAAO,IAAM,KAAO,OAGtC,SAASC,EAAqBC,GAC5B,GAAIla,MAAMC,QAAQia,GAChB,OAAO,IAAOA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAGxD,GAAsB,iBAAXA,QAAwD,IAA1B9B,EAAc8B,GAAyB,CAC9E,IAAIC,EAAS/B,EAAc8B,GAC3B,OAAO,IAAOC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GACxD,CAGF,CAEA,IAAIC,EAAgCjxB,OAAOkxB,OAAOzE,GAC9C0E,EAA6B,CAC/BC,MAAO,KACPC,WAAY,IACZC,WAAY,IACZC,OAAQ,MACRC,QAAS,MACTC,QAAS,MACTC,QAAS,MACTC,MAAO,GACPC,OAAQ,GACRC,OAAQ,GACRC,OAAQ,GACRC,QAAS,IAMX,SAASC,EAA8B1xB,EAAO2xB,GAC5C,IAAIC,EAAgB,CAAC,EAkDrB,OAjDAjB,EAAiB7rB,SAAQ,SAAUxE,GACjC,IAAIuxB,EAAehB,EAA2BvwB,GAG9C,GAAqD,iBAAhC,MAATN,OAAgB,EAASA,EAAMM,IAAoB,CAC7D,IAAIV,EAAiB,MAATI,OAAgB,EAASA,EAAMM,GAEvCwxB,GAA2B,IAAflyB,GAAS,GAAW,KAChCmyB,EAAc,EAFc,IAAdnyB,GAAS,GAAU,MAGjCoyB,EAAY,EAAkBF,GAC9BG,EAAc,CAChBC,MAAOH,EAAYnyB,MACnBuyB,IAAKH,EAAUpyB,MACf8jB,KAAMqO,EAAYrO,MAGhBiO,IAAepF,EAAW6F,WAC5BR,EAAcZ,WAAaiB,GAIzBN,IAAepF,EAAWjhB,aAC5BsmB,EAAcb,WAAakB,EAE/B,CAGA,GAAI1b,MAAMC,QAAiB,MAATxW,OAAgB,EAASA,EAAMM,IAAO,CACtD,IAAIoD,EAAkB,MAAT1D,OAAgB,EAASA,EAAMM,GAE5C,QAAyB,IAAdoD,EAAO,SAA2C,IAAdA,EAAO,GAAoB,CACxE,IAAI2uB,EAAe,EAA4B,MAAV3uB,OAAiB,EAASA,EAAO,GAAImuB,GAEtES,EAAa,EAA4B,MAAV5uB,OAAiB,EAASA,EAAO,GAAImuB,GAEpEpB,EAASD,EAA+B,MAAV9sB,OAAiB,EAASA,EAAO,IAQnE,GAPAkuB,EAActxB,GAAO,CACnB4xB,MAAOG,EAAazyB,MACpBuyB,IAAKG,EAAW1yB,MAChB8jB,KAAM2O,EAAa3O,KACnB+M,OAAQA,GAGN4B,EAAa3O,OAAS4O,EAAW5O,KACnC,MAAM,IAAIze,MAAM,8EAEpB,CACF,CACF,IACO2sB,CACT,CAKA,SAASW,EAITL,EAIAM,EAIAC,EAIAhC,GAEE,IAEIiC,GAFsBD,EAAgBP,GAEPM,EAMnC,OAJI/B,IACFiC,EAASjC,EAAOiC,IAGXA,CACT,CAuBA,SAASC,EAAsBC,EAAQC,GAErC,MAAO,CACLjzB,MAXJ,SAAsBA,EAAOkzB,EAAQC,EAAQC,EAAQC,GACnD,OAAQF,EAASD,IAAWlzB,EAAQozB,IAAWC,EAASD,GAAUF,CACpE,CAOcI,CAAsC,mBAAlBN,EAAOnC,OAAwBmC,EAAOnC,OAAOoC,GAAYA,GAAqB,MAAVD,OAAiB,EAASA,EAAOV,QAAU,GAAc,MAAVU,OAAiB,EAASA,EAAOT,MAAQ,EAAG,EAAG,GAGhMzO,KAAgB,MAAVkP,OAAiB,EAASA,EAAOlP,KAE3C,CAEA,IAAIyP,EAAiCzzB,OAAOkxB,OAAOzE,GAAiBjtB,QAAO,SAAUmE,GACnF,MAAa,YAANA,CACT,IAOA,SAAS+vB,EAAiBC,EAASR,EAAUvR,GAC3C,GAAKA,EAAL,CACA,IAAIgS,EAeN,SAA4BD,EAASR,GACnC,IAAIS,EAAYH,EAAkB/zB,QAAO,SAAUm0B,EAAKjzB,GACtD,IAAIkzB,EACJH,EAAQ/yB,IAAQqyB,EAAsBU,EAAQ/yB,GAAMuyB,GAEpD,YAA4B,IAAjBW,QAA8D,IAAvBA,EAAa5zB,YAAsD,IAAtB4zB,EAAa9P,KACnG6P,EAIFA,GADQjzB,EAAM,IAAMkzB,EAAa5zB,MAAQ4zB,EAAa9P,KAAO,IAEtE,GAAG,IACH,OAAO4P,CACT,CA5BkBG,CAAmBJ,EAASR,GACxCpB,EAIN,SAA0B4B,EAASR,GACjC,IAAIa,EAAgBL,EAAiB,SAAKV,EAAsBU,EAAiB,QAAGR,GAEpF,QAA6B,IAAlBa,QAAgE,IAAxBA,EAAc9zB,YAAuD,IAAvB8zB,EAAchQ,KAC7G,MAAO,GAIT,MADe,GAAKgQ,EAAc9zB,KAEpC,CAbgB+zB,CAAiBN,EAASR,GACxCvR,EAAGsS,MAAMN,UAAYA,EACrBhS,EAAGsS,MAAMnC,QAAUA,CAJJ,CAKjB,CA8BA,SAASoC,EAAYprB,GACnB,IAAI6Y,EAAK7Y,EAAQ6Y,GACZA,IACLA,EAAGsS,MAAMN,UAAY,GACrBhS,EAAGsS,MAAMnC,QAAU,GACrB,CAwCA,SAASqC,EAAmBC,EAAkBC,EAAgBxB,GAC5D,IAAIyB,EAAOD,EAAiBD,EAGxBG,EAAgB1B,GADD7d,KAAKwf,IAAIJ,GAAoBpf,KAAKwf,IAAIH,KAAoBC,GAAQ,EAAI,GAIzF,OADYtf,KAAKoS,IAAIyL,EAAY0B,EAAe,EAElD,CAKA,SAASE,EAAqBC,EAAWC,GACvC,IAAIpC,EAAQmC,EAAUnC,MAClBC,EAAMkC,EAAUlC,IAChBzO,EAAO2Q,EAAU3Q,KAErB,GAAa,MAATA,EAAc,CAChB,IAAI2N,EAAQiD,EAAc,IAC1BpC,GAAgBb,EAChBc,GAAYd,CACd,CAEA,GAAa,OAAT3N,EAAe,CACjB,IAAI6Q,EAAarC,EAAQ,IACrBsC,EAAWrC,EAAM,IACrBD,EAAQxpB,OAAO+rB,WAAaF,EAC5BpC,EAAMzpB,OAAO+rB,WAAaD,CAC5B,CAEA,GAAa,OAAT9Q,EAAe,CACjB,IAAIgR,EAAcxC,EAAQ,IAEtByC,EAAYxC,EAAM,IAEtBD,EAAQxpB,OAAOksB,YAAcF,EAC7BvC,EAAMzpB,OAAOksB,YAAcD,CAC7B,CAEA,MAAO,CACLzC,MAAOA,EACPC,IAAKA,EAET,CAEA,IAAI0C,EAAgB,CAClB3C,MAAO,EACPC,IAAK,EACLzO,KAAM,IAmLR,IAAIoR,EAAQ,SAAeC,EAAK1O,EAAKU,GACnC,OAAOpS,KAAK0R,IAAI1R,KAAKoS,IAAIgO,EAAK1O,GAAMU,EACtC,EAEI7R,EAAuB,WACzB,SAASA,EAAQjW,GAhUnB,IAA6BqiB,EAAI+R,EAG3B2B,EA8TF1zB,KAAKggB,GAAKriB,EAAQqiB,GAClBhgB,KAAKtB,MAAQf,EAAQe,MACrBsB,KAAKqwB,WAAa1yB,EAAQ0yB,WAC1BrwB,KAAK2zB,2BAA6Bh2B,EAAQg2B,6BAA8B,EACxE3zB,KAAK+C,KAvlBLA,EAwlBA/C,KAAK+xB,QAAU3B,EAA8BpwB,KAAKtB,MAAOsB,KAAKqwB,YAC9DrwB,KAAK4zB,SAAW,KAChB5zB,KAAKuxB,SAAW,EAEhBvxB,KAAK6zB,kBAAkBl2B,EAAQe,MAAMywB,QA1UZnP,EA4ULriB,EAAQqiB,GA5UC+R,EA4UG/xB,KAAK+xB,QAzUnC2B,EAAa,aAFNt1B,OAAOusB,KAAKoH,GACDxU,SAAS,WACc,WAAa,IAC1DyC,EAAGsS,MAAMoB,WAAaA,CAyUtB,CAEA,IAAI9nB,EAASgI,EAAQxU,UA4HrB,OA1HAwM,EAAOkoB,YAAc,SAAqBC,GAMxC,OALA/zB,KAAKtB,MAAQ6J,EAAS,CAAC,EAAGvI,KAAKtB,MAAOq1B,GACtC/zB,KAAK+xB,QAAU3B,EAA8B2D,EAAW/zB,KAAKqwB,YAE7DrwB,KAAK6zB,kBAAkBE,EAAU5E,QAE1BnvB,IACT,EAEA4L,EAAOooB,oBAAsB,SAA6B/H,EAAMgI,GAE9D1B,EAAYvyB,MACZA,KAAKgsB,KAAO,IAAID,EAAK,CACnB/L,GAAIhgB,KAAKtB,MAAMw1B,eAAiBl0B,KAAKggB,GACrCyM,WAAYzsB,KAAKtB,MAAM+tB,WACvBR,KAAMA,IAER,IAnDoCvtB,EAAOqzB,EAAS1B,EAmDhD8D,GAnDgCz1B,EAmD6BsB,KAAKtB,MAnD3BqzB,EAmDkC/xB,KAAK+xB,QAnD9B1B,EAmDuCrwB,KAAKqwB,aAlD9F3xB,EAAM+tB,YAAc/tB,EAAMw1B,eAAiBx1B,EAAM01B,oCAI/CrC,EAAQtC,YAAcY,IAAepF,EAAWjhB,YAAgB+nB,EAAQrC,YAAcW,IAAepF,EAAW6F,YAgDpH,MAAsC,iBAA3B9wB,KAAKtB,MAAM21B,aAA4D,iBAAzBr0B,KAAKtB,MAAM41B,WAClEt0B,KAAKu0B,OAAS,IAAIpJ,EAAO,CACvBE,OAAQrrB,KAAKtB,MAAM21B,YACnB/I,OAAQtrB,KAAKtB,MAAM21B,YACnB9I,KAAMvrB,KAAKtB,MAAM41B,UACjB9I,KAAMxrB,KAAKtB,MAAM41B,YAGnBt0B,KAAKw0B,oBAEEx0B,OAGLm0B,GACFn0B,KAAKu0B,OAxOX,SAAyDvI,EAAMC,EAAM8F,EAASkC,EAAQ5D,EAAYoE,GAEhG,IAAIhF,EAAasC,EAAQtC,YAAc8D,EACnC7D,EAAaqC,EAAQrC,YAAc6D,EAEnCmB,EAAwB5B,EAAqBrD,EAAYzD,EAAKO,OAC9DoI,EAAoBD,EAAsB9D,MAC1CgE,EAAkBF,EAAsB7D,IAExCgE,EAAyB/B,EAAqBpD,EAAY1D,EAAK9Y,QAC/D4hB,EAAoBD,EAAuBjE,MAC3CmE,EAAkBF,EAAuBhE,IAGzCvF,EAASU,EAAKhZ,IAAMiZ,EAAK/Y,OACzBmY,EAASW,EAAKtV,KAAOuV,EAAKM,MAC1Bf,EAAOQ,EAAKK,OACZd,EAAOS,EAAKI,MACZP,EAAmB,EACnBC,EAAiB,EAEjBuE,IAAepF,EAAW6F,WAE5BhF,EADAD,EAAmB2G,EAAmBsC,EAAmBC,EAAiB9I,EAAK/Y,OAAS8Y,EAAK9Y,SAI/F,IAAIyY,EAAmB,EACnBC,EAAiB,EA8BrB,GA5BIyE,IAAepF,EAAWjhB,aAE5B4hB,EADAD,EAAmB6G,EAAmBmC,EAAmBC,EAAiB3I,EAAKM,MAAQP,EAAKO,QAK1FuI,EAAoB,IACtBxJ,GAAkBwJ,EAAoBjJ,GAGpCkJ,EAAkB,IACpBvJ,GAAcuJ,EAAkBjJ,GAG9B6I,EAAoB,IACtBtJ,GAAkBsJ,EAAoBhJ,GAGpCiJ,EAAkB,IACpBrJ,GAAcqJ,EAAkBhJ,GAIlCP,GAAU4I,EAAOhxB,EACjBsoB,GAAQ0I,EAAOhxB,EACfqoB,GAAU2I,EAAO/wB,EACjBsoB,GAAQyI,EAAO/wB,EAEXuxB,EAA+B,CACjC,IAAIO,EAAkBf,EAAO/wB,EAAI8oB,EAAKhZ,IAAMiZ,EAAK/Y,OAC7C+hB,EAAmBhB,EAAOhxB,EAAI+oB,EAAKtV,KAAOuV,EAAKM,MAC/C2I,EAAmBjB,EAAO/wB,EAAI8oB,EAAKK,OAASJ,EAAKkJ,aAAelJ,EAAK/Y,OACrEkiB,EAAkBnB,EAAOhxB,EAAI+oB,EAAKI,MAAQH,EAAKoJ,YAAcpJ,EAAK/Y,OAElE8hB,GAAmBE,IACrBrJ,EAAmB,EACnBC,EAAiB,EACjBR,EAAS,EACTE,EAAOS,EAAKkJ,aAAelJ,EAAK/Y,QAG9B+hB,GAAoBG,IACtBzJ,EAAmB,EACnBC,EAAiB,EACjBP,EAAS,EACTE,EAAOU,EAAKoJ,YAAcpJ,EAAKM,QAG5ByI,GAAmBE,IACtB5J,EAASU,EAAKhZ,IAAMiZ,EAAK/Y,OAAS+gB,EAAO/wB,EAGzC2oB,EAAmB2G,EAAmBsC,EAAmBC,GAFzDvJ,EAAOS,EAAKkJ,aAAelJ,EAAK/Y,QACToY,GAEvBQ,EAAiB,EAEbgJ,EAAoB,IACtBxJ,GAAkBwJ,EAAoBjJ,KAIrCoJ,GAAoBG,IACvB/J,EAASW,EAAKtV,KAAOuV,EAAKM,MAAQ0H,EAAOhxB,EAKzC0oB,EAAmB6G,EAAmBmC,EAAmBC,GAJzDrJ,EAAOU,EAAKoJ,YAAcpJ,EAAKM,OAEPlB,GAGxBO,EAAiB,EAEb+I,EAAoB,IACtBtJ,GAAkBsJ,EAAoBhJ,IAItCqJ,IAAoBE,IACtB5J,EAAS,EAKTO,EAAmB,EACnBC,EAAiB0G,EAAmBsC,EAAmBC,GALvDvJ,EAAOQ,EAAKK,OAAS4H,EAAO/wB,GAEHooB,GAKrByJ,EAAkB,IACpBvJ,GAAcuJ,EAAkBjJ,IAIhCmJ,IAAqBG,IACvB/J,EAAS,EAKTM,EAAmB,EACnBC,EAAiB4G,EAAmBmC,EAAmBC,GALvDrJ,EAAOS,EAAKI,MAAQ6H,EAAOhxB,GAEFooB,GAKrBuJ,EAAkB,IACpBrJ,GAAcqJ,EAAkBhJ,GAGtC,CAYA,OAVa,IAAIT,EAAO,CACtBE,OAAQA,EACRC,OAAQA,EACRC,KAAMA,EACNC,KAAMA,EACNG,iBAAkBA,EAClBC,eAAgBA,EAChBC,iBAAkBA,EAClBC,eAAgBA,GAGpB,CAyFoBwJ,CAAgDt1B,KAAKgsB,KAAMC,EAAMjsB,KAAK+xB,QAASkC,EAAQj0B,KAAKqwB,WAAYrwB,KAAKtB,MAAM+1B,+BACjIz0B,KAAKu1B,cAxFX,SAA8CxD,EAASwC,GACrD,IAAIiB,EAAcjtB,EAAS,CAAC,EAAGwpB,GAgB/B,OAdIyD,EAAY/F,aACd+F,EAAY/F,WAAalnB,EAAS,CAAC,EAAGwpB,EAAQtC,WAAY,CACxDmB,MAAO4E,EAAY/F,WAAWmB,MAAQ2D,EAAO5I,iBAC7CkF,IAAK2E,EAAY/F,WAAWoB,IAAM0D,EAAO3I,kBAIzC4J,EAAY9F,aACd8F,EAAY9F,WAAannB,EAAS,CAAC,EAAGwpB,EAAQrC,WAAY,CACxDkB,MAAO4E,EAAY9F,WAAWkB,MAAQ2D,EAAO1I,iBAC7CgF,IAAK2E,EAAY9F,WAAWmB,IAAM0D,EAAOzI,kBAItC0J,CACT,CAsE2BC,CAAqCz1B,KAAK+xB,QAAS/xB,KAAKu0B,SAE7Ev0B,KAAKu0B,OApUX,SAAyCvI,EAAMC,EAAMgI,EAAQQ,GAC3D,IAAInJ,EAASU,EAAKhZ,IAAMiZ,EAAK/Y,OACzBmY,EAASW,EAAKtV,KAAOuV,EAAKM,MAC1Bf,EAAOQ,EAAKK,OACZd,EAAOS,EAAKI,MA+BhB,OA7BAf,GAAU4I,EAAOhxB,EACjBsoB,GAAQ0I,EAAOhxB,EACfqoB,GAAU2I,EAAO/wB,EACjBsoB,GAAQyI,EAAO/wB,EAEXuxB,IACER,EAAO/wB,EAAI8oB,EAAKhZ,IAAMiZ,EAAK/Y,SAC7BoY,EAAS,GAGP2I,EAAOhxB,EAAI+oB,EAAKtV,KAAOuV,EAAKM,QAC9BlB,EAAS,GAGPG,EAAOS,EAAKkJ,aAAelJ,EAAK/Y,SAClCsY,EAAOS,EAAKkJ,aAAelJ,EAAK/Y,QAG9BqY,EAAOU,EAAKoJ,YAAcpJ,EAAKM,QACjChB,EAAOU,EAAKoJ,YAAcpJ,EAAKM,QAItB,IAAIpB,EAAO,CACtBE,OAAQA,EACRC,OAAQA,EACRC,KAAMA,EACNC,KAAMA,GAGV,CAgSoBkK,CAAgC11B,KAAKgsB,KAAMC,EAAMgI,EAAQj0B,KAAKtB,MAAM+1B,+BAIpFz0B,KAAKw0B,oBAEEx0B,KACT,EAEA4L,EAAO+pB,uBAAyB,SAAgCC,GAE9D,IAAIC,EAAkC,OAAlB71B,KAAK4zB,SAErBgC,IAAiB51B,KAAK4zB,WACpBgC,EACF51B,KAAKtB,MAAM8O,SAAWxN,KAAKtB,MAAM8O,QAAQxN,MAC/B61B,IACV71B,KAAK81B,oBAEL91B,KAAKw0B,oBAELx0B,KAAKtB,MAAMkP,QAAU5N,KAAKtB,MAAMkP,OAAO5N,QAI3CA,KAAK4zB,SAAWgC,CAClB,EAEAhqB,EAAOkqB,kBAAoB,WACzB,IAAIC,EAAgBvC,EAAMngB,KAAKmI,MAAMxb,KAAKuxB,UAAW,EAAG,GAExDvxB,KAAKg2B,uBAAuBD,EAC9B,EAEAnqB,EAAO4oB,kBAAoB,WACrBx0B,KAAKtB,MAAMu3B,UAAYj2B,KAAK2zB,4BAEhC7B,EADc9xB,KAAKu1B,eAAiBv1B,KAAK+xB,QACf/xB,KAAKuxB,SAAUvxB,KAAKggB,GAChD,EAEApU,EAAOoqB,uBAAyB,SAAgCE,GAC9Dl2B,KAAKuxB,SAAW2E,EAChBl2B,KAAKtB,MAAMy3B,kBAAoBn2B,KAAKtB,MAAMy3B,iBAAiBn2B,KAAKuxB,UAChEvxB,KAAKtB,MAAM03B,UAAYp2B,KAAKtB,MAAM03B,SAASp2B,KAC7C,EAEA4L,EAAOioB,kBAAoB,SAA2B1E,GACpDnvB,KAAKmvB,OAASD,EAAqBC,EACrC,EAEAvjB,EAAOyqB,qBAAuB,SAA8B14B,GAC1DqC,KAAKqwB,WAAa1yB,EAAQ0yB,WAC1BrwB,KAAK2zB,2BAA6Bh2B,EAAQg2B,6BAA8B,CAC1E,EAEA/nB,EAAO0qB,eAAiB,SAAwBrC,GAC9C,IAAKj0B,KAAKu0B,OAAQ,OAAOv0B,KACzB,IAAIu2B,EAAav2B,KAAKqwB,aAAepF,EAAW6F,SAC5C+E,EAAkC,OAAlB71B,KAAK4zB,SAErBhD,EAAQ2F,EAAav2B,KAAKu0B,OAAOjJ,OAAStrB,KAAKu0B,OAAOlJ,OACtDwF,EAAM0F,EAAav2B,KAAKu0B,OAAO/I,KAAOxrB,KAAKu0B,OAAOhJ,KAClDiL,EAAQD,EAAav2B,KAAKu0B,OAAO7I,OAAS1rB,KAAKu0B,OAAO9I,OACtDrC,EAAImN,EAAatC,EAAO/wB,EAAI+wB,EAAOhxB,EAEnC2yB,EA/cR,SAAyBhF,EAAOC,EAAKoD,GAEnC,OADeA,GAAUrD,GAASqD,GAAUpD,CAE9C,CA4cuB4F,CAAgB7F,EAAOC,EAAKzH,GAK/C,GAHAppB,KAAK21B,uBAAuBC,GAGxBA,EAAc,CAChB,IAAIM,EAAejF,EAAkBL,EAAO4F,EAAOpN,EAAGppB,KAAKmvB,QAE3DnvB,KAAKg2B,uBAAuBE,GAE5Bl2B,KAAKw0B,mBACP,MAAWqB,IAET71B,KAAKuxB,SAAWiC,EAAMngB,KAAKmI,MAAMyV,EAAkBL,EAAO4F,EAAOpN,EAAGppB,KAAKmvB,SAAU,EAAG,GAEtFnvB,KAAKw0B,qBAGP,OAAOx0B,IACT,EAEO4T,CACT,CA7I2B,GA+IvB8iB,EAAoB,WACtB,SAASA,EAAKrpB,GACZrN,KAAKksB,gBAAkB7e,EAAO6e,gBAC9BlsB,KAAKusB,MAAQlf,EAAOkf,MACpBvsB,KAAKkT,OAAS7F,EAAO6F,OACrBlT,KAAKm1B,aAAe9nB,EAAO8nB,aAC3Bn1B,KAAKq1B,YAAchoB,EAAOgoB,WAC5B,CAEA,IAAIzpB,EAAS8qB,EAAKt3B,UAkBlB,OAhBAwM,EAAO+qB,WAAa,SAAoBvH,GACtC,OAAIA,EAAO7C,QAAUvsB,KAAKusB,OAAS6C,EAAOlc,SAAWlT,KAAKkT,QAAUkc,EAAOiG,cAAgBr1B,KAAKq1B,aAAejG,EAAO+F,eAAiBn1B,KAAKm1B,YAK9I,EAEAvpB,EAAOgrB,QAAU,SAAiBxH,GAKhC,OAJApvB,KAAKusB,MAAQ6C,EAAO7C,MACpBvsB,KAAKkT,OAASkc,EAAOlc,OACrBlT,KAAKm1B,aAAe/F,EAAO+F,aAC3Bn1B,KAAKq1B,YAAcjG,EAAOiG,YACnBr1B,IACT,EAEO02B,CACT,CA5BwB,GA8BpBllB,EAAsB,WACxB,SAASA,EAAOvO,EAAGC,GACjBlD,KAAKiD,EAAIA,EACTjD,KAAKkD,EAAIA,EACTlD,KAAK62B,GAAK,EACV72B,KAAK82B,GAAK,CACZ,CAYA,OAVatlB,EAAOpS,UAEb23B,UAAY,SAAmB9zB,EAAGC,GAKvC,OAJAlD,KAAK62B,GAAK5zB,EAAIjD,KAAKiD,EACnBjD,KAAK82B,GAAK5zB,EAAIlD,KAAKkD,EACnBlD,KAAKiD,EAAIA,EACTjD,KAAKkD,EAAIA,EACFlD,IACT,EAEOwR,CACT,CAnB0B,GAiD1B,IAAIwlB,EAAkC,WACpC,SAASA,EAAmB9vB,GAC1B,IAAI+vB,EAAkB/vB,EAAKmpB,WACvBA,OAAiC,IAApB4G,EAA6BhM,EAAW6F,SAAWmG,EAChE/K,EAAkBhlB,EAAKglB,gBACvBgL,EAAgBhwB,EAAK+uB,SACrBA,OAA6B,IAAlBiB,GAAmCA,EAClDl3B,KAAKi2B,SAAWA,EAChBj2B,KAAKqwB,WAAaA,EAElBrwB,KAAKm3B,SAAW,GAChBn3B,KAAKo3B,sBAAwBlL,EAC7BlsB,KAAKq3B,OAA4B,MAAnBnL,EAA0BA,EAAkB9kB,OAE1D,IAAIkwB,EAAwBt3B,KAAKu3B,qBAC7Bt0B,EAAIq0B,EAAsB,GAC1Bp0B,EAAIo0B,EAAsB,GAE9Bt3B,KAAKi0B,OAAS,IAAIziB,EAAOvO,EAAGC,GAC5BlD,KAAKisB,KAAO,IAAIyK,EAAK,CACnBnK,MAAO,EACPrZ,OAAQ,EACRmiB,YAAa,EACbF,aAAc,EACdjJ,gBAAiBlsB,KAAKo3B,oBAAsBlL,OAAkB3lB,IAGhEvG,KAAKw3B,UAAW,EAEhBx3B,KAAKy3B,iBAzDT,WACE,IAAIpX,GAAwB,EAE5B,IACE,IAAIC,EAAOliB,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC9CwE,IAAK,WAEH,OADAwd,GAAwB,GACjB,CACT,IAGFjZ,OAAOQ,iBAAiB,OAAQ,KAAM0Y,GAEtClZ,OAAOuS,oBAAoB,OAAQ,KAAM2G,EAC3C,CAAE,MAAO1d,GAAI,CAEb,OAAOyd,CACT,CAwC4BqX,GAExB13B,KAAK23B,kBAGD33B,KAAKi2B,WAETj2B,KAAK43B,cAAc53B,KAAKq3B,QAExBr3B,KAAK63B,qBAEL73B,KAAK83B,eACP,CAOAd,EAAmBe,KAAO,SAAcp6B,GAGtC,KAFkC,oBAAXyJ,QAGrB,MAAM,IAAIzD,MAAM,4GAGlB,OAAO,IAAIqzB,EAAmBr5B,EAChC,EAEA,IAAIiO,EAASorB,EAAmB53B,UAuYhC,OArYAwM,EAAO+rB,gBAAkB,WACvB,IAAI5sB,EAAQ/K,KAEZ,CAAC,gBAAiB,mBAAoB,qBAAsB,gBAAiB,qBAAsB,qBAAsB,yBAA0B,eAAgB,qBAAsB,yBAA0B,iBAAkB,cAAe,gBAAiB,oBAAqB,qBAAsB,yBAA0B,SAAU,wBAAyB,WAAWwD,SAAQ,SAAUw0B,GAExYjtB,EAAMitB,GAAUjtB,EAAMitB,GAAQ1zB,KAAKyG,EACrC,GACF,EAEAa,EAAOgsB,cAAgB,SAAuB5X,GAC5CA,EAAGpY,iBAAiB,SAAU5H,KAAKi4B,gBAAej4B,KAAKy3B,kBAAmB,CACxElX,SAAS,IAEXnZ,OAAOQ,iBAAiB,SAAU5H,KAAKk4B,oBAAoB,GAC3D9wB,OAAOQ,iBAAiB,OAAQ5H,KAAKk4B,oBAAoB,GACzD9wB,OAAOQ,iBAAiB,QAAS5H,KAAKk4B,oBAAoB,GAC1D9wB,OAAOQ,iBAAiB,OAAQ5H,KAAKk4B,oBAAoB,EAC3D,EAEAtsB,EAAOusB,iBAAmB,SAA0BnY,GAClD,IAAIoY,EAEJpY,EAAGrG,oBAAoB,SAAU3Z,KAAKi4B,eAAe,GACrD7wB,OAAOuS,oBAAoB,SAAU3Z,KAAKk4B,oBAAoB,GAC9D9wB,OAAOuS,oBAAoB,OAAQ3Z,KAAKk4B,oBAAoB,GAC5D9wB,OAAOuS,oBAAoB,QAAS3Z,KAAKk4B,oBAAoB,GAC7D9wB,OAAOuS,oBAAoB,OAAQ3Z,KAAKk4B,oBAAoB,GACV,OAAjDE,EAAwBp4B,KAAKq4B,kBAAoCD,EAAsBE,YAC1F,EAEA1sB,EAAOisB,mBAAqB,WAC1B,IAAI/qB,EAAS9M,KAEb,IACE,IAAIu4B,EAAav4B,KAAKo3B,oBAAsBp3B,KAAKq3B,OAASnuB,SAAS8f,gBACnEhpB,KAAKq4B,gBAAkB,IAAIG,gBAAe,WACxC,OAAO1rB,EAAOuc,QAChB,IAEArpB,KAAKq4B,gBAAgBI,QAAQF,EAC/B,CAAE,MAAO31B,GACPqE,QAAQsD,KAAK,gEACf,CACF,EAEAqB,EAAO2rB,mBAAqB,WAO1B,MAAO,CAJEv3B,KAAKo3B,oBACdp3B,KAAKq3B,OAAOpO,WAAa7hB,OAAOwP,YACvB5W,KAAKo3B,oBACdp3B,KAAKq3B,OAAOhtB,UAAYjD,OAAO6P,YAEjC,EAOArL,EAAOqsB,cAAgB,WACrB,IAAIS,EAEAC,EAAyB34B,KAAKu3B,qBAC9BqB,EAAKD,EAAuB,GAC5BE,EAAKF,EAAuB,GAEhC34B,KAAKi0B,OAAO8C,UAAU6B,EAAIC,IAGrB74B,KAAKw3B,WAAiD,OAAnCkB,EAAiB14B,KAAKm3B,eAAoB,EAASuB,EAAe76B,QAAU,IAClGmC,KAAKw3B,UAAW,EAEhBpwB,OAAOoO,sBAAsBxV,KAAK84B,oBAEtC,EAOAltB,EAAOssB,mBAAqB,WAC1Bl4B,KAAK83B,eAEL93B,KAAK84B,mBAAmB,CACtBC,aAAa,GAEjB,EAQAntB,EAAOktB,mBAAqB,SAA4BE,GACtD,IAAIrrB,EAAS3N,KAGT+4B,QADkB,IAAVC,EAAmB,CAAC,EAAIA,GACZD,YAEpB/4B,KAAKm3B,UACPn3B,KAAKm3B,SAAS3zB,SAAQ,SAAU2D,GAC1B4xB,GACF5xB,EAAQ6sB,oBAAoBrmB,EAAOse,KAAMte,EAAOsmB,QAGlDtmB,EAAOsrB,uBAAuB9xB,EAChC,IAIFnH,KAAKw3B,UAAW,CAClB,EAQA5rB,EAAOqtB,uBAAyB,SAAgC9xB,GAC1DA,EAAQzI,MAAMu3B,UAAYj2B,KAAKi2B,UACnC9uB,EAAQmvB,eAAet2B,KAAKi0B,OAC9B,EAMAroB,EAAOstB,eAAiB,WACtB,GAAIl5B,KAAKo3B,oBAAqB,CAE5B,IAAI+B,EAASn5B,KAAKq3B,OAAO7K,YAErB4M,EAAUp5B,KAAKq3B,OAAO/K,aAEtB+M,EAAgBr5B,KAAKq3B,OAAOlC,aAE5BmE,EAAet5B,KAAKq3B,OAAOhC,YAC/B,OAAOr1B,KAAKisB,KAAK2K,QAAQ,CACvBrK,MAAO4M,EACPjmB,OAAQkmB,EACRjE,aAAckE,EACdhE,YAAaiE,GAEjB,CAEA,IAAIC,EAAOrwB,SAAS8f,gBAKpB,MAAO,CACLuD,MALUnlB,OAAO+rB,YAAcoG,EAAKC,YAMpCtmB,OALW9L,OAAOksB,aAAeiG,EAAKE,aAMtCtE,aALiBoE,EAAKpE,aAMtBE,YALgBkE,EAAKlE,YAOzB,EAMAzpB,EAAOksB,aAAe,WACpB,OAAO93B,KAAKisB,KAAK2K,QAAQ52B,KAAKk5B,iBAChC,EAOAttB,EAAO8tB,uBAAyB,WAC9B,OAAO15B,KAAKisB,KAAK0K,WAAW32B,KAAKk5B,iBACnC,EAYAttB,EAAO+tB,YAAc,WACnB,OAAO35B,KAAKm3B,QACd,EAMAvrB,EAAO7K,cAAgB,SAAuBpD,GAC5C,IAAIi8B,EAAa,IAAIhmB,EAAQrL,EAAS,CAAC,EAAG5K,EAAS,CACjD0yB,WAAYrwB,KAAKqwB,WACjBsD,2BAA4B3zB,KAAKi2B,YAcnC,OAZA2D,EAAW5F,oBAAoBh0B,KAAKisB,KAAMjsB,KAAKi0B,QAC/Cj0B,KAAKm3B,SAAWn3B,KAAKm3B,SAAW,GAAGxe,OAAO3Y,KAAKm3B,SAAU,CAACyC,IAAe,CAACA,GAE1E55B,KAAKi5B,uBAAuBW,GAKxB55B,KAAK05B,0BACP15B,KAAKqpB,SAGAuQ,CACT,EAMAhuB,EAAOiuB,kBAAoB,SAA2B92B,GAC/C/C,KAAKm3B,WACVn3B,KAAKm3B,SAAWn3B,KAAKm3B,SAASv5B,QAAO,SAAUoiB,GAC7C,OAAOA,EAAGjd,KAAOA,CACnB,IACF,EAMA6I,EAAOkuB,uBAAyB,SAAgC/2B,EAAIrE,GAC9DsB,KAAKm3B,WACPn3B,KAAKm3B,SAAWn3B,KAAKm3B,SAAS35B,KAAI,SAAUwiB,GAC1C,OAAIA,EAAGjd,KAAOA,EACLid,EAAG8T,YAAYp1B,GAGjBshB,CACT,KAGFhgB,KAAKqpB,QACP,EAMAzd,EAAOmuB,mBAAqB,SAA4B5yB,GACtDorB,EAAYprB,EACd,EAMAyE,EAAOyd,OAAS,WAGd,IAAI2Q,EAAyBh6B,KAAKu3B,qBAC9BqB,EAAKoB,EAAuB,GAC5BnB,EAAKmB,EAAuB,GAEhCh6B,KAAKi0B,OAAO8C,UAAU6B,EAAIC,GAE1B74B,KAAK83B,eAEL93B,KAAK84B,mBAAmB,CACtBC,aAAa,GAEjB,EAMAntB,EAAOquB,sBAAwB,SAA+Bja,GAE5DhgB,KAAKm4B,iBAAiBn4B,KAAKq3B,QAE3Br3B,KAAKq3B,OAASrX,EACdhgB,KAAKo3B,sBAAwBpX,EAC7BhgB,KAAKisB,KAAO,IAAIyK,EAAK,CACnBnK,MAAO,EACPrZ,OAAQ,EACRmiB,YAAa,EACbF,aAAc,EACdjJ,gBAAiBlM,IAGnBhgB,KAAK83B,eAEL93B,KAAK43B,cAAc53B,KAAKq3B,QAExBr3B,KAAK84B,mBAAmB,CACtBC,aAAa,GAEjB,EAEAntB,EAAOsuB,0BAA4B,WACjCl6B,KAAKi2B,UAAW,EAEhBj2B,KAAKm4B,iBAAiBn4B,KAAKq3B,QAGvBr3B,KAAKm3B,UACPn3B,KAAKm3B,SAAS3zB,SAAQ,SAAU2D,GAC9B,OAAOorB,EAAYprB,EACrB,GAEJ,EAEAyE,EAAOuuB,yBAA2B,WAChC,IAAIhsB,EAASnO,KAEbA,KAAKi2B,UAAW,EAEZj2B,KAAKm3B,UACPn3B,KAAKm3B,SAAS3zB,SAAQ,SAAU2D,GAC9B,OAAOA,EAAQkvB,qBAAqB,CAClC1C,4BAA4B,EAC5BtD,WAAYliB,EAAOkiB,YAEvB,IAIFrwB,KAAK43B,cAAc53B,KAAKq3B,QAExBr3B,KAAK63B,qBAEL73B,KAAK83B,cACP,EAMAlsB,EAAOwuB,mBAAqB,WAC1BnzB,QAAQsD,KAAK,uDAETvK,KAAKm3B,WACPn3B,KAAKm3B,SAAWn3B,KAAKm3B,SAAS35B,KAAI,SAAUwiB,GAC1C,OAAOA,EAAG8T,YAAY,CACpBmC,UAAU,GAEd,KAGFj2B,KAAKqpB,QACP,EAMAzd,EAAOyuB,kBAAoB,WACzBpzB,QAAQsD,KAAK,sDAETvK,KAAKm3B,WACPn3B,KAAKm3B,SAAWn3B,KAAKm3B,SAAS35B,KAAI,SAAUwiB,GAC1C,OAAOA,EAAG8T,YAAY,CACpBmC,UAAU,GAEd,KAGFj2B,KAAKqpB,QACP,EAMAzd,EAAO0uB,QAAU,WACft6B,KAAKm4B,iBAAiBn4B,KAAKq3B,QAEvBr3B,KAAKm3B,UACPn3B,KAAKm3B,SAAS3zB,SAAQ,SAAU2D,GAC9B,OAAOorB,EAAYprB,EACrB,IAIFnH,KAAKm3B,cAAW5wB,CAClB,EAEOywB,CACT,CAlcsC,aCj5BtC,SAASuD,EAA8B9xB,EAAQ+xB,GAC7C,GAAc,MAAV/xB,EAAgB,MAAO,CAAC,EAC5B,IAEIzJ,EAAKL,EAFLF,EAAS,CAAC,EACVg8B,EAAar8B,OAAOusB,KAAKliB,GAG7B,IAAK9J,EAAI,EAAGA,EAAI87B,EAAW58B,OAAQc,IACjCK,EAAMy7B,EAAW97B,GACb67B,EAAS32B,QAAQ7E,IAAQ,IAC7BP,EAAOO,GAAOyJ,EAAOzJ,IAGvB,OAAOP,CACT,CASA,IAAIi8B,EAAY,CAAC,WAAY,SAAU,YAAa,WAAY,UAAW,SAAU,mBAAoB,UAAW,aAAc,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,SAAU,gCAAiC,mCAAoC,QAAS,cAAe,gBAAiB,aAAc,cAChV,SAASC,EAAyBj8B,GAChC,IATiCc,EAS7By2B,EAAWv3B,EAAMu3B,SACjB9G,EAASzwB,EAAMywB,OACfmF,EAAY51B,EAAM41B,UAClB8B,EAAW13B,EAAM03B,SACjB5oB,EAAU9O,EAAM8O,QAChBI,EAASlP,EAAMkP,OACfuoB,EAAmBz3B,EAAMy3B,iBACzBhG,EAAUzxB,EAAMyxB,QAChB1D,EAAa/tB,EAAM+tB,WACnBkD,EAASjxB,EAAMixB,OACfC,EAAUlxB,EAAMkxB,QAChBC,EAAUnxB,EAAMmxB,QAChBC,EAAUpxB,EAAMoxB,QAChBC,EAAQrxB,EAAMqxB,MACdC,EAAStxB,EAAMsxB,OACfC,EAASvxB,EAAMuxB,OACfC,EAASxxB,EAAMwxB,OACfuE,EAAgC/1B,EAAM+1B,8BACtCL,EAAmC11B,EAAM01B,iCACzC5E,EAAQ9wB,EAAM8wB,MACd6E,EAAc31B,EAAM21B,YACpBH,EAAgBx1B,EAAMw1B,cACtBzE,EAAa/wB,EAAM+wB,WACnBC,EAAahxB,EAAMgxB,WACnBkL,EAAOL,EAA8B77B,EAAOg8B,GA4BhD,MAAO,CACLG,eA9D+Br7B,EAmCa,CAC5Cy2B,SAAUA,EACV9G,OAAQA,EACRmF,UAAWA,EACX8B,SAAUA,EACV5oB,QAASA,EACTI,OAAQA,EACRuoB,iBAAkBA,EAClBhG,QAASA,EACT1D,WAAYA,EACZkD,OAAQA,EACRC,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,MAAOA,EACPC,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRuE,8BAA+BA,EAC/BL,iCAAkCA,EAClC5E,MAAOA,EACP6E,YAAaA,EACbH,cAAeA,EACfzE,WAAYA,EACZC,WAAYA,GA1DdtxB,OAAOusB,KAAKnrB,GAAKgE,SAAQ,SAAUxE,GACjC,YAAoBuH,IAAb/G,EAAIR,WAA6BQ,EAAIR,EAC9C,IACOQ,GA2DLo7B,KAAMA,EAEV,CAcA,IAAIE,EAA+B,gBAAoB,MAEvD,SAASC,IACP,IAAIC,GAAqB,IAAAzb,YAAWub,GAGpC,GAFiC,oBAAX1zB,OAGpB,OAAO,KAGT,IAAK4zB,EACH,MAAM,IAAIr3B,MAAM,wHAGlB,OAAOq3B,CACT,CAEA,SAASC,EAAYv8B,GACnB,IAAIwJ,EAAa6yB,IACb51B,GAAM,IAAAsa,QAAO,MAGbob,EADwBF,EAAyBj8B,GACXm8B,eAlC5C,SAA6B3yB,IAC3B,IAAAgzB,YAAU,WAKR,KAJiC,oBAAX9zB,QAIJc,GAFDA,aAAsB8uB,GAGrC,MAAM,IAAIrzB,MAAM,kFAEpB,GAAG,CAACuE,GACN,CA0BEizB,CAAoBjzB,GAEpB,IAAIkzB,GAAY,IAAAC,YACZl0B,EAAUi0B,EAAU,GACpBE,EAAaF,EAAU,GAkC3B,OA/BA,IAAAF,YAAU,WACR,IAAItB,EAEJ,KAAIz0B,EAAIuH,mBAAmB6uB,aAQzB,MAAM,IAAI53B,MAAM,kFAPhB,IAAIhG,EAAU,CACZqiB,GAAI7a,EAAIuH,QACRhO,MAAOm8B,GAQX,OANEjB,EAA2B,MAAd1xB,OAAqB,EAASA,EAAWnH,cAAcpD,GACpE29B,EAAW1B,GAKN,WACDA,IACY,MAAd1xB,GAA8BA,EAAW2xB,kBAAkBD,EAAW72B,IAE1E,CACF,GAAG,KAEH,IAAAm4B,YAAU,WACJ/zB,IACEzI,EAAMu3B,UACM,MAAd/tB,GAA8BA,EAAW6xB,mBAAmB5yB,GAC9C,MAAde,GAA8BA,EAAW4xB,uBAAuB3yB,EAAQpE,GAAI83B,IAE9D,MAAd3yB,GAA8BA,EAAW4xB,uBAAuB3yB,EAAQpE,GAAI83B,GAGlF,GAAG,CAACn8B,EAAMu3B,SAAUv3B,EAAMywB,OAAQzwB,EAAM41B,UAAW51B,EAAM03B,SAAU13B,EAAM8O,QAAS9O,EAAMkP,OAAQlP,EAAMy3B,iBAAkBz3B,EAAMyxB,QAASzxB,EAAM+tB,WAAY/tB,EAAMixB,OAAQjxB,EAAMkxB,QAASlxB,EAAMmxB,QAASnxB,EAAMoxB,QAASpxB,EAAMqxB,MAAOrxB,EAAMsxB,OAAQtxB,EAAMuxB,OAAQvxB,EAAMwxB,OAAQxxB,EAAM+1B,8BAA+B/1B,EAAM01B,iCAAkC11B,EAAM8wB,MAAO9wB,EAAM21B,YAAa31B,EAAMw1B,cAAex1B,EAAM+wB,WAAY/wB,EAAMgxB,aAC9Z,CACLvqB,IAAKA,EACL+C,WAAYA,EACZf,QAASA,EAEb,CA+DA,IAgGIq0B,EAAmB,SAA0B79B,GAI/C,MAFiC,oBAAXyJ,OAOf,KAHE4vB,EAAmBe,KAAKp6B,EAInC,EAEA,SAAS89B,EAAiB/8B,GACxB,IAAIwJ,GAAa,IAAAuX,QAAO,MAgCxB,OA9BKvX,EAAWwE,UACdxE,EAAWwE,QAAU8uB,EAAiB,CACpCnL,WAAY3xB,EAAM2xB,YAAcpF,EAAW6F,SAC3C5E,gBAAiBxtB,EAAMwtB,gBACvB+J,SAAUv3B,EAAMg9B,eAKpB,IAAAR,YAAU,WACJx8B,EAAMwtB,iBAAmBhkB,EAAWwE,SACtCxE,EAAWwE,QAAQutB,sBAAsBv7B,EAAMwtB,gBAEnD,GAAG,CAACxtB,EAAMwtB,gBAAiBhkB,EAAWwE,WAEtC,IAAAwuB,YAAU,WACJx8B,EAAMg9B,YAAcxzB,EAAWwE,SACjCxE,EAAWwE,QAAQwtB,6BAGhBx7B,EAAMg9B,YAAcxzB,EAAWwE,SAClCxE,EAAWwE,QAAQytB,0BAEvB,GAAG,CAACz7B,EAAMg9B,WAAYxzB,EAAWwE,WAEjC,IAAAwuB,YAAU,WACR,OAAO,YACU,MAAdhzB,OAAqB,EAASA,EAAWwE,WAA2B,MAAdxE,GAA8BA,EAAWwE,QAAQ4tB,UAC1G,CACF,GAAG,IACI,gBAAoBQ,EAAgBp2B,SAAU,CACnDpG,MAAO4J,EAAWwE,SACjBhO,EAAMsC,SACX,g1BCtYA,SAAS26B,EAAgB/5B,GACvB,OAAO+5B,EAAkBv9B,OAAOyC,eAAiBzC,OAAOkC,eAAegE,OAAS,SAAU1C,GACxF,OAAOA,EAAEvB,WAAajC,OAAOkC,eAAesB,EAC9C,EAAG+5B,EAAgB/5B,EACrB,eCJA,SAASg6B,IACP,IACE,IAAIh6B,GAAKi6B,QAAQz8B,UAAU08B,QAAQ57B,KAAK67B,QAAQC,UAAUH,QAAS,IAAI,WAAa,IACtF,CAAE,MAAOj6B,GAAI,CACb,OAAQg6B,EAA4B,WAClC,QAASh6B,CACX,IACF,CCHA,SAASq6B,EAAiBr6B,GACxB,IAAID,EAAI,mBAAqBL,IAAM,IAAIA,SAAQ,EAC/C,OAAO26B,EAAmB,SAA0Br6B,GAClD,GAAI,OAASA,ICPjB,SAA2BA,GACzB,IACE,OAAQ,IAAMs6B,SAASl1B,SAAS9G,KAAK0B,GAAGiC,QAAQ,gBAClD,CAAE,MAAOxC,GACP,MAAO,mBAAqBO,CAC9B,CACF,CDCuB,CAAiBA,GAAI,OAAOA,EAC/C,GAAI,mBAAqBA,EAAG,MAAM,IAAI9B,UAAU,sDAChD,QAAI,IAAW6B,EAAG,CAChB,GAAIA,EAAEgW,IAAI/V,GAAI,OAAOD,EAAEkB,IAAIjB,GAC3BD,EAAE8B,IAAI7B,EAAGu6B,EACX,CACA,SAASA,IACP,OEZN,SAAoBv6B,EAAGgB,EAAGjB,GACxB,GAAI,IAA4B,OAAOo6B,QAAQC,UAAUz7B,MAAM,KAAMC,WACrE,IAAImgB,EAAI,CAAC,MACTA,EAAE3a,KAAKzF,MAAMogB,EAAG/d,GAChB,IAAIrB,EAAI,IAAKK,EAAE0C,KAAK/D,MAAMqB,EAAG+e,IAC7B,OAAOhf,IAAK,EAAAd,EAAA,GAAeU,EAAGI,EAAEvC,WAAYmC,CAC9C,CFMa,CAAUK,EAAGpB,UAAW,EAAeR,MAAMY,YACtD,CACA,OAAOu7B,EAAQ/8B,UAAYhB,OAAOuC,OAAOiB,EAAExC,UAAW,CACpDwB,YAAa,CACXtC,MAAO69B,EACPt9B,YAAY,EACZE,UAAU,EACVD,cAAc,MAEd,EAAA+B,EAAA,GAAes7B,EAASv6B,EAC9B,EAAGq6B,EAAiBr6B,EACtB,kCGvBO,MAAMw6B,EAAsBl1B,IAA4B,IAA3B,QAAEm1B,EAAO,SAAEr7B,GAAUkG,EACvD,MAAMo1B,EAAW,CACfx1B,EAAAA,cAAoB,cAAe,CACjC/D,GAAI,GAAGs5B,QAETv1B,EAAAA,cAAoB,YAAa,CAC/B/D,GAAI,GAAGs5B,SAkBX,OAdIr7B,IAGFs7B,EAASt2B,KAAKhF,GACds7B,EAASt2B,KACPc,EAAAA,cAAoB,cAAe,CACjC/D,GAAI,GAAGs5B,QAETv1B,EAAAA,cAAoB,YAAa,CAC/B/D,GAAI,GAAGs5B,UAKNC,CAAQ,ECZJC,EAAcr1B,IAKpB,IALqB,UAC1Bs1B,EAAS,WACTC,EAAU,SACVz7B,KACG07B,GACJx1B,EACC,MAAMy1B,GAAYpd,EAAAA,EAAAA,YAAW7K,EAAAA,IACvBkoB,GAAcrd,EAAAA,EAAAA,YAAW5K,EAAAA,IACzBkoB,EAAoBF,EAAUH,GAEpC,IAAKK,EAAmB,CACtB,GAAIJ,EACF,OAAO,KAEP,MAAM,IAAI94B,MACR,UAAUk5B,WAA2BL,oBAG3C,CAEA,MAAMH,EA7BWS,EAACN,EAAWE,IACxBt+B,OAAOusB,KAAK+R,GAAY7+B,OAKtB,GAAG2+B,MADUO,EAAAA,EAAAA,GAAoBL,KAH/BF,EA2BOM,CAAWD,EAAmBH,GAG9C,IAAIM,EAAaJ,EAAYP,GAa7B,OAZKW,EAOCh8B,IACFg8B,EAAWC,aAAc,GAP3BL,EAAYP,GAAWW,EAAa,CAClCt+B,MAAOg+B,EACPF,UAAWK,EACXI,cAAej8B,GAQZ8F,EAAAA,cAACs1B,EAAmB,CAACC,QAASA,GAAUr7B,EAA+B,EC/CnEk8B,EAAch2B,IAKpB,IALqB,UAC1Bs1B,EAAS,WACTC,EAAU,SACVz7B,KACG07B,GACJx1B,EACC,MAAMy1B,GAAYpd,EAAAA,EAAAA,YAAW7K,EAAAA,IACvByoB,GAAmB5d,EAAAA,EAAAA,YAAW/K,EAAAA,IAC9BqoB,EAAoBF,EAAUH,GAC9Bxb,EAAQmc,EAAiBt6B,IAAIg6B,GAEnC,IAAK7b,EAAO,CACV,GAAIyb,EACF,OAAO,KAEP,MAAM,IAAI94B,MACR,UAAUk5B,WAA2BL,oBAG3C,CAEA,OACE11B,EAAAA,cAACka,EAAMoc,UAASh/B,OAAAoK,OAAA,CACd60B,aAAcrc,EAAMqc,aACpBjiB,KAAM4F,EAAM5F,MACRshB,GAEH17B,EACe,ECxBf,SAASs8B,EAAM5+B,GACW,CAE7B,MAAM6+B,EAAgB,IACjB7+B,EACH89B,UAAW99B,EAAM8+B,cAEZD,EAAcC,aACdD,EAAcE,qBAErB,MAAMC,GAAgBne,EAAAA,EAAAA,YAAW9K,EAAAA,IAG3BkpB,EAAaC,EAAmBl/B,GACtC,GAAIN,OAAOusB,KAAKgT,GAAY9/B,OAC1B,MAAM,IAAIggC,EAC4B,YAApCH,EAAcI,kBACdP,EAAcf,UACdmB,EACAj/B,EAAM++B,sBAIV,GAAwC,WAApCC,EAAcI,kBAChB,OAAOh3B,EAAAA,cAACy1B,EAAgBgB,GACnB,GAAwC,YAApCG,EAAcI,kBAEvB,OAAOh3B,EAAAA,cAACo2B,EAAgBK,GACnB,GAC+B,YAApCG,EAAcI,mBACsB,YAApCJ,EAAcI,kBAGd,OAAOh3B,EAAAA,cAACo2B,EAAgBK,GACnB,GAAwC,WAApCG,EAAcI,kBAAgC,CAGvD,IAAIC,EAA2B,GAI/B,IACEA,EAA2B,wBAAwBL,EAAcM,UAAUh7B,UAAU06B,EAAcM,UAAUC,gDAAgDv/B,EAAM8+B,UACrK,CAAE,MACA,CAGF,MAAM,IAAI75B,MACR,mCAAmCo6B,8FAEvC,CACE,MAAM,IAAIp6B,MACR,kBAAkB+5B,EAAcI,uCAGtC,CAGF,CAAC,IAEKD,EAAe,SAAAK,GACnB,SAAAL,EAAYM,EAAW3B,EAAWmB,EAAYS,GAAqB,IAADrzB,EAChE,MAAMszB,EAASjgC,OAAOkgC,QAAQX,GAC3BngC,KACC0J,IAAA,IAAElI,EAAKV,GAAM4I,EAAA,MACX,qBAAqB5I,sBAA0BU,SAAW,IAE7DyiB,KAAK,MAEFze,EAAO,kBACb,IAAI4B,EAAQ,GACRD,EAAU,GAEd,GAAIw5B,EAAW,CAGb,MAIMI,EAHJz3B,EAAAA,mDAAyD03B,uBAAuBC,kBAGrDnsB,OAAOqR,MAAM,MAAM3C,MAAM,GACtDud,EAAW,GAAKA,EAAW,GAAGjsB,OAC9B1N,EAAQ,KAAO25B,EAAW9c,KAAK,MAE/B9c,EAAU,UAAU63B,kDAA0D6B,KAChF,KAAO,CAEL15B,EAAU,GAAG3B,aAAgBw5B,kDAA0D6B,MAEvFz5B,EAAQ,GAAGD,OADQ,IAAIhB,OAAQiB,MAAM0N,OAAOqR,MAAM,MAAM3C,MAAM,GAC5BS,KAAK,OACzC,CAYC,OAVD1W,EAAAmzB,EAAAh+B,KAAA,KAAMyE,IAAQ,MACT3B,KAAOA,EACR4B,EACFmG,EAAKnG,MAAQA,EAEbjB,MAAM+6B,kBAAiB3zB,EAAO8yB,GAG5BO,IACFrzB,EAAK4zB,eAAiB,IAAKP,EAAoBQ,aAAc,UAC9D7zB,CACH,CAAC,OAAA8zB,EAAAA,EAAAA,GAAAhB,EAAAK,GAAAL,CAAA,CA3CkB,CA2ClB5B,EA3C2Bt4B,QA8C9B,MAAMi6B,EAAqB,SACzBl/B,EACA2/B,EACAS,EACAzpB,QAFM,IAANgpB,IAAAA,EAAS,CAAC,QACC,IAAXS,IAAAA,EAAc,SACV,IAAJzpB,IAAAA,EAAO,MAGP,IAAK,MAAOrS,EAAM1E,KAAUF,OAAOkgC,QAAQ5/B,GAAQ,CACjD,GACEJ,UAEE+W,GAAiB,aAATrS,EAEV,SAGF,MAAM+7B,EAAW1pB,EAAO,GAAGA,KAAQrS,IAASA,EAEvB,mBAAV1E,EACT+/B,EAAOU,UAAmBzgC,EACA,iBAAVA,GAAsBwgC,EAAYj7B,QAAQvF,IAAU,IACpEwgC,EAAY94B,KAAK1H,GACjBs/B,EAAmBt/B,EAAO+/B,EAAQS,EAAaC,GAEnD,CAEA,OAAOV,CACT,gBC1IA,MAAMW,EAAmBrvB,EAAAA,GAAOsvB,QAEhC,SAASC,IACP,MAAM,IAAIv7B,MACR,6UAKJ,oBCNAwC,EAAOjJ,QALP,SAAgC0F,GAC9B,OAAOA,GAAKA,EAAEnD,WAAamD,EAAI,CAC7B,QAAWA,EAEf,EACyCuD,EAAOjJ,QAAQuC,YAAa,EAAM0G,EAAOjJ,QAAiB,QAAIiJ,EAAOjJ,2CCH9GkB,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIiK,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAE3PF,EAAe,WAAc,SAASC,EAAiBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAMb,OAAQc,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMX,OAAOC,eAAeI,EAAQG,EAAWI,IAAKJ,EAAa,CAAE,CAAE,OAAO,SAAUK,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYV,EAAiBS,EAAYG,UAAWF,GAAiBC,GAAaX,EAAiBS,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAIfI,EAAUC,EAFD,EAAQ,OAMjB6/B,EAAc7/B,EAFD,EAAQ,OAMrB8/B,EAAa9/B,EAFD,EAAQ,MAMpBugB,EAAcvgB,EAFD,EAAQ,OAMrB+/B,EAAe//B,EAFD,EAAQ,OAI1B,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAQ9F,IAAI4Q,EAAa,CACf1G,GAAImW,EAAYngB,QAAQ2Q,OAAOC,WAC/B3G,YAAakW,EAAYngB,QAAQ2Q,OACjCxG,UAAWgW,EAAYngB,QAAQ6Q,OAC/BC,YAAaqP,EAAYngB,QAAQ2Q,OACjCivB,YAAazf,EAAYngB,QAAQ6Q,OACjCE,IAAKoP,EAAYngB,QAAQgR,KACzB1G,WAAY6V,EAAYngB,QAAQgR,KAChCvG,OAAQ0V,EAAYngB,QAAQiR,UAAU,CAACkP,EAAYngB,QAAQgR,KAAMmP,EAAYngB,QAAQ2Q,SACrFnG,OAAQ2V,EAAYngB,QAAQkR,OAC5BC,MAAOgP,EAAYngB,QAAQkR,OAC3BE,UAAW+O,EAAYngB,QAAQgR,KAC/BK,QAAS8O,EAAYngB,QAAQsR,KAC7BC,SAAU4O,EAAYngB,QAAQiR,UAAU,CAACkP,EAAYngB,QAAQkR,OAAQiP,EAAYngB,QAAQsR,OACzFpH,SAAUiW,EAAYngB,QAAQgR,KAC9BQ,YAAa2O,EAAYngB,QAAQsR,KACjCG,cAAe0O,EAAYngB,QAAQsR,KACnCI,mBAAoByO,EAAYngB,QAAQgR,KACxCW,QAASwO,EAAYngB,QAAQgR,KAC7B+J,gBAAiBoF,EAAYngB,QAAQgR,KACrCY,YAAauO,EAAYngB,QAAQkR,QAGnC1T,EAAA,QAAkB,SAAU+D,EAAWwQ,GACrC,IAAIC,EAAWD,GAAkB2tB,EAAW1/B,QAExC6/B,EAAO,SAAUC,GAGnB,SAASD,EAAK7gC,IAnClB,SAAyBmB,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAoClJC,CAAgBC,KAAMu/B,GAEtB,IAAIx0B,EApCV,SAAoC9K,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAoC7NE,CAA2BJ,MAAOu/B,EAAKl/B,WAAajC,OAAOkC,eAAei/B,IAAOr/B,KAAKF,KAAMtB,IAQxG,OANAiT,EAAiBzR,KAAK6K,GAEtBA,EAAM9C,MAAQ,CACZmG,QAAQ,GAEVrD,EAAM00B,uBAAyB,GACxB10B,CACT,CAsFA,OAjIJ,SAAmBtK,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CA6BzeI,CAAUy+B,EAAMC,GAgBhBjhC,EAAaghC,EAAM,CAAC,CAClBvgC,IAAK,wBACLV,MAAO,WACL,IAAIqL,EAAc3J,KAAKtB,MAAMiL,YACzBE,EAAY7J,KAAKtB,MAAMmL,UAE3B,OAAIF,IAAgBE,EACXX,SAASC,eAAeQ,GAG7BE,GAAaA,EAAUE,SAClBF,EAGFX,QACT,GACC,CACDlK,IAAK,oBACLV,MAAO,WACL,GAAI0B,KAAKtB,MAAM+R,KAAOzQ,KAAKtB,MAAM2S,QAAS,CACxC,IAAIO,EAAqB5R,KAAK6R,wBAE9B,IAAKstB,EAAYz/B,QAAQoS,UAAUF,GAAqB,CACtD,IAAIiJ,EAAKskB,EAAYz/B,QAAQqS,MAAMH,EAAoB5R,KAAKtB,MAAM4S,aAClEtR,KAAKy/B,uBAAuBz5B,KAAK6U,EACnC,CAEI7a,KAAKtB,MAAM2S,UACRguB,EAAa3/B,QAAQoS,aACxButB,EAAa3/B,QAAQqS,MAAML,GAE7B2tB,EAAa3/B,QAAQsS,aAAahS,KAAKtB,MAAMgL,GAAIkI,IAGnDutB,EAAYz/B,QAAQyS,cAAcnS,KAAKoS,WAAYR,GAEnD5R,KAAK6M,SAAS,CACZhD,UAAW+H,GAEf,CACF,GACC,CACD5S,IAAK,uBACLV,MAAO,WACL6gC,EAAYz/B,QAAQsJ,QAAQhJ,KAAKkS,aAAclS,KAAKoS,YACpDpS,KAAKy/B,uBAAuBj8B,SAAQ,SAAUqX,GAC5C,OAAOA,GACT,GACF,GACC,CACD7b,IAAK,SACLV,MAAO,WACL,IAAI+T,EAAY,GAGdA,EADErS,KAAKiI,OAASjI,KAAKiI,MAAMmG,SACbpO,KAAKtB,MAAM2T,WAAa,IAAM,KAAOrS,KAAKtB,MAAM8R,aAAe,WAAW8B,OAE5EtS,KAAKtB,MAAM2T,UAGzB,IAAIigB,EAAQ,CAAC,EAGXA,EADEtyB,KAAKiI,OAASjI,KAAKiI,MAAMmG,OACnB7F,EAAS,CAAC,EAAGvI,KAAKtB,MAAM4zB,MAAOtyB,KAAKtB,MAAM4gC,aAE1C/2B,EAAS,CAAC,EAAGvI,KAAKtB,MAAM4zB,OAGlC,IAAI5zB,EAAQ6J,EAAS,CAAC,EAAGvI,KAAKtB,OAE9B,IAAK,IAAI6T,KAAQnC,EACX1R,EAAMgK,eAAe6J,WAChB7T,EAAM6T,GAQjB,OAJA7T,EAAM2T,UAAYA,EAClB3T,EAAM4zB,MAAQA,EACd5zB,EAAMqS,QAAU/Q,KAAKwS,YAEdnT,EAAQK,QAAQqB,cAAcE,EAAWvC,EAClD,KAGK6gC,CACT,CAtGW,CAsGTlgC,EAAQK,QAAQggC,eAEd/tB,EAAmB,WACrB,IAAI7E,EAAS9M,KAEbA,KAAKyJ,SAAW,SAAUC,EAAIhL,GAC5BgT,EAASjI,SAASC,EAAInB,EAAS,CAAC,EAAGuE,EAAO7E,MAAOvJ,GACnD,EAEAsB,KAAKwS,YAAc,SAAUnE,GAKvBvB,EAAOpO,MAAMqS,SACfjE,EAAOpO,MAAMqS,QAAQ1C,GAOnBA,EAAMoE,iBAAiBpE,EAAMoE,kBAC7BpE,EAAMqE,gBAAgBrE,EAAMqE,iBAKhC5F,EAAOrD,SAASqD,EAAOpO,MAAMgL,GAAIoD,EAAOpO,MAC1C,EAEAsB,KAAKoS,WAAa,SAAUnP,EAAGC,GAC7B,IAAI0O,EAAqB9E,EAAO+E,wBAEhC,IAAIwtB,EAAa3/B,QAAQoS,aAAgButB,EAAa3/B,QAAQiT,gBAA9D,CAIA,IAAI3I,EAAa8C,EAAOpO,MAAMsL,WAE1BN,EAAKoD,EAAOpO,MAAMgL,GAClBvC,EAAU,KACViM,OAAW,EACXG,OAAY,EAEhB,GAAIvJ,EAAY,CACd,IAAI21B,EAAgB,EAChBC,EAAiB,EACjBC,EAAgB,EAEpB,GAAIjuB,EAAmBmB,sBAErB8sB,EADqBjuB,EAAmBmB,wBACT2D,KAGjC,IAAKvP,GAAW2F,EAAOpO,MAAMoS,UAAW,CAEtC,KADA3J,EAAUuK,EAAS7O,IAAI6G,IAErB,OAGF,IAAIuJ,EAAQ9L,EAAQ4L,wBAEpB6sB,GADAD,EAAgB1sB,EAAMyD,KAAOmpB,EAAgB58B,GACZgQ,EAAMsZ,KACzC,CAEA,IAAIuT,EAAU78B,EAAI6J,EAAOpO,MAAMwL,OAC/BkJ,EAAW0sB,GAAWzsB,KAAKC,MAAMqsB,IAAkBG,EAAUzsB,KAAKC,MAAMssB,GACxErsB,EAAYusB,EAAUzsB,KAAKC,MAAMqsB,IAAkBG,GAAWzsB,KAAKC,MAAMssB,EAC3E,KAAO,CACL,IAAIhtB,EAAe,EACfC,EAAkB,EAClBC,EAAe,EAEnB,GAAIlB,EAAmBmB,sBAErBD,EADsBlB,EAAmBmB,wBACVC,IAGjC,IAAK7L,GAAW2F,EAAOpO,MAAMoS,UAAW,CAEtC,KADA3J,EAAUuK,EAAS7O,IAAI6G,IAErB,OAGF,IAAIq2B,EAAS54B,EAAQ4L,wBAGrBF,GADAD,EAAemtB,EAAO/sB,IAAMF,EAAe5P,GACV68B,EAAO7sB,MAC1C,CAEA,IAAIC,EAAUjQ,EAAI4J,EAAOpO,MAAMwL,OAE/BkJ,EAAWD,GAAWE,KAAKC,MAAMV,IAAiBO,EAAUE,KAAKC,MAAMT,GACvEU,EAAYJ,EAAUE,KAAKC,MAAMV,IAAiBO,GAAWE,KAAKC,MAAMT,EAC1E,CAEA,IAAIW,EAAa9B,EAASlI,gBAE1B,GAAI+J,EAAW,CAKb,GAJI7J,IAAO8J,GACT9B,EAASpI,mBAAc,GAGrBwD,EAAOpO,MAAM2S,SAAWguB,EAAa3/B,QAAQ+T,YAAc/J,EAAI,CACjE,IAAIs2B,EAAwBlzB,EAAOpO,MAAM+b,gBACrCA,OAA4ClU,IAA1By5B,GAA8CA,EAEpEX,EAAa3/B,QAAQgU,WAAW,GAAI+G,EACtC,CAEI3N,EAAOpO,MAAM+R,KAAO3D,EAAO7E,MAAMmG,SACnCtB,EAAOD,SAAS,CAAEuB,QAAQ,IAC1BtB,EAAOpO,MAAMyS,eAAiBrE,EAAOpO,MAAMyS,cAAczH,EAAIvC,GAEjE,CAEA,GAAIiM,IAAaI,IAAe9J,IAA8B,IAAxBoD,EAAO7E,MAAMmG,QAAmB,CACpEsD,EAASpI,cAAcI,GAEvB,IAAIu2B,EAAyBnzB,EAAOpO,MAAM+b,gBACtCylB,OAA8C35B,IAA3B05B,GAA+CA,EAEtEnzB,EAAOpO,MAAM2S,SAAWguB,EAAa3/B,QAAQgU,WAAWhK,EAAIw2B,GAExDpzB,EAAOpO,MAAM+R,MACf3D,EAAOD,SAAS,CAAEuB,QAAQ,IAC1BtB,EAAOpO,MAAMwS,aAAepE,EAAOpO,MAAMwS,YAAYxH,EAAIvC,GAE7D,CA7FA,CA8FF,CACF,EAMA,OAJAo4B,EAAKpwB,UAAYiB,EAEjBmvB,EAAKnwB,aAAe,CAAElF,OAAQ,GAEvBq1B,CACT,mQC/SwG,SAAS5e,IAAI,OAAOA,EAAEviB,OAAOoK,OAAOpK,OAAOoK,OAAOlE,OAAO,SAAS1C,GAAG,IAAI,IAAIgB,EAAE,EAAEA,EAAEpC,UAAU3C,OAAO+E,IAAI,CAAC,IAAIvB,EAAEb,UAAUoC,GAAG,IAAI,IAAIjB,KAAKN,EAAEjD,OAAOgB,UAAUsJ,eAAexI,KAAKmB,EAAEM,KAAKC,EAAED,GAAGN,EAAEM,GAAG,CAAC,OAAOC,CAAC,EAAE+e,EAAEpgB,MAAMP,KAAKQ,UAAU,CAAC,MAAMwB,EAAE,IAAIV,IAAIH,EAAE,CAAC0B,IAAIjB,GAAGI,EAAEa,IAAIjB,IAAI,GAAG,GAAA6B,CAAI7B,EAAEgB,GAAG,MAAMvB,EAAEW,EAAEa,IAAIjB,IAAI,GAAGP,EAAE2E,KAAKpD,GAAGZ,EAAEyB,IAAI7B,EAAEP,EAAE,EAAE,OAAOO,GAAGI,EAAEye,OAAO7e,EAAE,GAAGwnB,EAAE,oBAAoBnpB,MAAMA,KAAKkgC,qBAAqBlgC,KAAKkgC,oBAAoB77B,KAAK8C,SAAS,SAASxF,GAAG,MAAMgB,EAAEse,KAAKD,MAAM,OAAOtS,YAAW,WAAW/M,EAAE,CAACw+B,YAAW,EAAGC,cAAc,WAAW,OAAOhtB,KAAKoS,IAAI,EAAE,IAAIvE,KAAKD,MAAMre,GAAG,GAAG,GAAE,EAAE,EAAE,IAAIV,EAAYN,KAAiFM,IAAIA,EAAE,CAAC,IAAnFo+B,YAAY,eAAe1+B,EAAE2+B,KAAK,OAAO3+B,EAAE4+B,cAAc,kBAA8B,MAAM7hC,EAAE,IAAIgc,IAAI,CAAC,MAAM,WAAW,0BAA0B,WAAW,SAAS,YAAYlW,EAAE,IAAIkW,IAAIhY,EAAE,IAAIrB,IAAI,SAAS0C,EAAEpB,GAAgB,OAAO,gBAAgB,WAAE,MAAK,IAAiB,gBAAgBrB,EAAEqB,IAAG,CAAC,SAASrB,EAAEF,GAAG,MAAMo/B,IAAIz+B,EAAE0+B,SAAS/hC,EAAEuD,EAAEo+B,aAAaj/B,GAAG,CAAC,GAAGuO,SAASnL,IAAG,mBAAI,IAAG,gBAAE,KAAK,IAAI7C,EAAE,OAAOjD,GAAG,KAAKuD,EAAEo+B,YAAY1+B,EAAEsB,EAAE7B,GAAG,MAAM,KAAKa,EAAEq+B,KAAKnX,GAAE,KAAKxnB,EAAEsB,EAAE7B,EAAC,IAAI,MAAM,KAAKa,EAAEs+B,cAAc,CAAC,MAAM5+B,EAAEK,EAAEZ,GAAGF,EAAEsC,IAAIgB,EAAE7C,EAAE,EAAE,MAAM,KAAK,MAAMoY,OAAOpX,EAAE+9B,aAAat/B,EAAEu/B,cAAcj/B,GAAGC,GAAG,CAAC,EAAEP,IAAI,MAAMuB,GAAGA,EAAE+W,oBAAoB,OAAOtY,IAAIM,IAAI,MAAMiB,GAAGA,EAAE+W,oBAAoB,QAAQhY,IAAI,MAAMiB,GAAGA,EAAEyR,QAAO,CAAC,GAAG,IAAI1V,IAAIuD,EAAEs+B,cAAc,CAAC,MAAM59B,EAAEyB,EAAEhD,GAAGM,EAAEM,EAAEZ,GAAG,MAAM,oBAAoB+F,QAAQjG,EAAEsC,IAAIgB,EAAE9C,GAAgB,gBAAgB,SAASiB,EAAE+d,EAAE,CAACzb,KAAK,iBAAiB,gBAAgBvG,EAAEkiC,YAAY,aAAal/B,EAAE,CAACm/B,wBAAwB,CAACC,OAAO18B,EAAEhD,MAAMsf,EAAE,CAACzb,KAAK,iBAAiBu7B,IAAIv8B,EAAElC,GAAG,gBAAgBrD,EAAEkiC,YAAY,aAAal/B,GAAG,CAAC,OAAO,IAAI,CAAC,SAASuB,EAAEtB,GAAG,MAAMmB,GAAGH,EAAE69B,IAAIp/B,EAAEq/B,SAAS/+B,EAAEO,EAAEo+B,YAAYU,OAAOh/B,EAAEi/B,QAAQ9/B,GAAGS,GAAG,CAAC,EAAEwnB,EAAExmB,GAAGvB,EAAE1C,EAAE,CAAC,OAAO,SAASqF,EAAE,CAACk9B,KAAKl/B,EAAEsE,MAAMnF,GAAG,GAAGioB,EAAE,CAAC,IAAI,MAAMxnB,KAAKjD,EAAE,GAAG,MAAMqF,GAAGA,EAAEpC,GAAG,CAAC,IAAIL,EAAE,MAAMqB,EAAED,EAAEE,IAAIumB,IAAI,CAAC,GAAG+X,UAAU9/B,EAAE,KAAK,MAAMuB,OAAE,EAAOA,EAAEhB,KAAK,CAAC,EAAE,IAAIsB,EAAEgB,EAAE7C,EAAE2E,KAAK,MAAMhC,OAAE,EAAOA,EAAEpC,IAAI,MAAMgB,GAAG,OAAOrB,EAAEqB,EAAEhB,KAAKL,EAAE8M,MAAM,MAAMrK,GAAG,OAAOd,EAAEc,EAAEpC,KAAKsB,EAAEhD,KAAK8D,EAAE,MAAMpB,GAAG,OAAOsB,EAAEtB,EAAEhB,SAAI,EAAOsC,EAAEmK,OAAO1L,EAAEc,IAAI2lB,EAAEzI,EAAE,CAAC,EAAE/d,EAAE,CAAC,CAAChB,GAAG,CAACu/B,UAAU9/B,KAAK,CAAC,GAAGoD,EAAEkT,IAAIyR,GAAG,OAAO,IAAI,CAAC,MAAMrnB,EAAEsC,EAAEzC,GAAGV,EAAEe,EAAEL,GAAGU,EAAE4G,SAASnI,cAAc,UAAU6B,IAAIN,EAAES,GAAGH,GAAGN,EAAE8+B,QAAQV,SAAS/+B,EAAE,IAAI,MAAMC,EAAEgB,KAAKxE,OAAOkgC,QAAQp9B,GAAGoB,EAAE++B,aAAaz/B,EAAEgB,GAAGb,IAAIO,EAAEg/B,YAAYv/B,GAAGV,IAAIiB,EAAEm+B,IAAIp/B,GAAG,MAAMgC,EAAE,CAAC,EAAE,GAAG+lB,EAAE,CAAC,IAAI,MAAMxnB,KAAKjD,EAAE,CAAC,MAAMiE,EAAEA,GAAGuB,EAAEvB,EAAEwmB,EAAExnB,GAAGU,EAAEsF,iBAAiBhG,EAAEgB,GAAGS,EAAE,GAAGzB,aAAagB,CAAC,CAAC6B,EAAE4W,IAAI+N,EAAE,CAAC,OAAOlgB,SAASggB,KAAKqY,YAAYj/B,GAAG,CAAC0X,OAAO1X,EAAEq+B,aAAat9B,EAAEs9B,aAAaC,cAAcv9B,EAAEu9B,cAAc,CAAC,SAASv8B,EAAEzC,GAAG,MAAMk/B,wBAAwBl+B,EAAE5B,SAASK,EAAE,IAAIO,GAAG,CAAC,GAAGm/B,OAAOp/B,EAAE,IAAIiB,GAAG,CAAC,EAAE,OAAOjB,GAAGN,CAAC,CAAC,SAASY,EAAEL,GAAG,MAAMgB,EAAE,CAAC,EAAE,IAAI,MAAMvB,EAAEM,KAAKvD,OAAOkgC,QAAQ18B,GAAGjD,EAAEgZ,IAAItW,KAAKuB,EAAEvB,GAAGM,GAAG,OAAOiB,CAAC,CAAC,SAASsB,EAAEtC,GAAG,GAAGA,EAAE,MAAM,4BAA4B4/B,mBAAmB5/B,IAAI,CAAC,SAASuC,EAAEvC,EAAEgB,EAAEvB,GAAG,MAAMM,EAAEgB,EAAEE,IAAID,IAAI,CAAC,EAAE,IAAI,MAAMA,KAAK,MAAMjB,GAAG,OAAOgf,EAAEhf,EAAEN,SAAI,EAAOsf,EAAEwgB,YAAY,GAAG,CAAC,IAAIxgB,EAAE/d,EAAEhB,EAAE,CAACe,EAAEc,IAAIb,EAAE,CAAC,CAACvB,GAAG,CAACgN,MAAMzM,IAAI,oBCDp5F,SAASwa,EAAgBxa,EAAGgB,GAC1B,OAAOuD,EAAOjJ,QAAUkf,EAAkBhe,OAAOyC,eAAiBzC,OAAOyC,eAAeyD,OAAS,SAAU1C,EAAGgB,GAC5G,OAAOhB,EAAEvB,UAAYuC,EAAGhB,CAC1B,EAAGuE,EAAOjJ,QAAQuC,YAAa,EAAM0G,EAAOjJ,QAAiB,QAAIiJ,EAAOjJ,QAASkf,EAAgBxa,EAAGgB,EACtG,CACAuD,EAAOjJ,QAAUkf,EAAiBjW,EAAOjJ,QAAQuC,YAAa,EAAM0G,EAAOjJ,QAAiB,QAAIiJ,EAAOjJ,8BCKvG,IAAIukC,EAAkB,sBASlBC,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeh+B,SAGfi+B,EAA8B,iBAAV,EAAA59B,GAAsB,EAAAA,GAAU,EAAAA,EAAO/F,SAAWA,QAAU,EAAA+F,EAGhF69B,EAA0B,iBAAR/hC,MAAoBA,MAAQA,KAAK7B,SAAWA,QAAU6B,KAGxE4e,EAAOkjB,GAAcC,GAAY9F,SAAS,cAATA,GAUjC+F,EAPc7jC,OAAOgB,UAOQ4H,SAG7Bk7B,EAAY7uB,KAAKoS,IACjB0c,EAAY9uB,KAAK0R,IAkBjB9D,EAAM,WACR,OAAOpC,EAAKqC,KAAKD,KACnB,EAwDA,SAASrG,EAAS5J,EAAMoxB,EAAMzkC,GAC5B,IAAI0kC,EACAC,EACAC,EACA7kC,EACA8kC,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAAR7xB,EACT,MAAM,IAAIlR,UAAU2hC,GAUtB,SAASqB,EAAWC,GAClB,IAAI3lC,EAAOilC,EACPW,EAAUV,EAKd,OAHAD,EAAWC,OAAW/7B,EACtBm8B,EAAiBK,EACjBrlC,EAASsT,EAAKzQ,MAAMyiC,EAAS5lC,EAE/B,CAmBA,SAAS6lC,EAAaF,GACpB,IAAIG,EAAoBH,EAAON,EAM/B,YAAyBl8B,IAAjBk8B,GAA+BS,GAAqBd,GACzDc,EAAoB,GAAON,GANJG,EAAOL,GAM8BH,CACjE,CAEA,SAASY,IACP,IAAIJ,EAAO9hB,IACX,GAAIgiB,EAAaF,GACf,OAAOK,EAAaL,GAGtBP,EAAU7zB,WAAWw0B,EAzBvB,SAAuBJ,GACrB,IAEIrlC,EAAS0kC,GAFWW,EAAON,GAI/B,OAAOG,EAAST,EAAUzkC,EAAQ6kC,GAHRQ,EAAOL,IAGkChlC,CACrE,CAmBqC2lC,CAAcN,GACnD,CAEA,SAASK,EAAaL,GAKpB,OAJAP,OAAUj8B,EAINs8B,GAAYR,EACPS,EAAWC,IAEpBV,EAAWC,OAAW/7B,EACf7I,EACT,CAcA,SAAS4lC,IACP,IAAIP,EAAO9hB,IACPsiB,EAAaN,EAAaF,GAM9B,GAJAV,EAAW7hC,UACX8hC,EAAWtiC,KACXyiC,EAAeM,EAEXQ,EAAY,CACd,QAAgBh9B,IAAZi8B,EACF,OAvEN,SAAqBO,GAMnB,OAJAL,EAAiBK,EAEjBP,EAAU7zB,WAAWw0B,EAAcf,GAE5BO,EAAUG,EAAWC,GAAQrlC,CACtC,CAgEa8lC,CAAYf,GAErB,GAAIG,EAGF,OADAJ,EAAU7zB,WAAWw0B,EAAcf,GAC5BU,EAAWL,EAEtB,CAIA,YAHgBl8B,IAAZi8B,IACFA,EAAU7zB,WAAWw0B,EAAcf,IAE9B1kC,CACT,CAGA,OAxGA0kC,EAAOqB,EAASrB,IAAS,EACrBsB,EAAS/lC,KACXglC,IAAYhlC,EAAQglC,QAEpBJ,GADAK,EAAS,YAAajlC,GACHukC,EAAUuB,EAAS9lC,EAAQ4kC,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcllC,IAAYA,EAAQklC,SAAWA,GAiG1DS,EAAUv1B,OAnCV,gBACkBxH,IAAZi8B,GACFznB,aAAaynB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUj8B,CACjD,EA8BA+8B,EAAUK,MA5BV,WACE,YAAmBp9B,IAAZi8B,EAAwB9kC,EAAS0lC,EAAaniB,IACvD,EA2BOqiB,CACT,CAyFA,SAASI,EAASplC,GAChB,IAAI4G,SAAc5G,EAClB,QAASA,IAAkB,UAAR4G,GAA4B,YAARA,EACzC,CA2EA,SAASu+B,EAASnlC,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAhCF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAqBKslC,CAAatlC,IAvXF,mBAuXY2jC,EAAe/hC,KAAK5B,EAChD,CA6BMulC,CAASvlC,GACX,OAzZM,IA2ZR,GAAIolC,EAASplC,GAAQ,CACnB,IAAIwlC,EAAgC,mBAAjBxlC,EAAMw9B,QAAwBx9B,EAAMw9B,UAAYx9B,EACnEA,EAAQolC,EAASI,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAATxlC,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMmI,QAAQi7B,EAAQ,IAC9B,IAAIqC,EAAWnC,EAAWpjB,KAAKlgB,GAC/B,OAAQylC,GAAYlC,EAAUrjB,KAAKlgB,GAC/BwjC,EAAaxjC,EAAM0iB,MAAM,GAAI+iB,EAAW,EAAI,GAC3CpC,EAAWnjB,KAAKlgB,GAtab,KAsa6BA,CACvC,CAEA6H,EAAOjJ,QA9IP,SAAkB8T,EAAMoxB,EAAMzkC,GAC5B,IAAIglC,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAAR7xB,EACT,MAAM,IAAIlR,UAAU2hC,GAMtB,OAJIiC,EAAS/lC,KACXglC,EAAU,YAAahlC,IAAYA,EAAQglC,QAAUA,EACrDE,EAAW,aAAcllC,IAAYA,EAAQklC,SAAWA,GAEnDjoB,EAAS5J,EAAMoxB,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,GAEhB,oOC/SO,MAuBMmB,EAAkBA,CAACC,EAAaC,IACpCD,EAAKrmC,QAAOqF,GAAKihC,EAAK3mB,SAASta,KAa3BkhC,EAAgBA,CAACF,EAAaC,IAClCD,EACJrmC,QAAOqF,IAAMihC,EAAK3mB,SAASta,KAC3B0V,OAAOurB,EAAKtmC,QAAOqF,IAAMghC,EAAK1mB,SAASta,MAa/BmhC,EAAoBC,IAC/Bra,EAAAA,EAAAA,GAAW,IAAIrP,IAAI0pB,IAQd,SAASvgB,EAAiBxlB,GAC/B,QAASA,CACX,CAKO,MAAMgmC,EAAoB,SAACvgB,EAAWwgB,GAC3C,YADqD,IAAVA,IAAAA,OAAah+B,GACpD0O,MAAMC,QAAQ6O,GACZA,EAAKlmB,OAAekmB,EAAK,GACjBwgB,EAEPxgB,CACT,EAeaygB,EAAgB,SAACC,EAAcC,GAC1C,YADgE,IAAtBA,IAAAA,EAAyB,IAC9DD,EACEA,EAAM7mC,QAAQqF,IAAM,IAAA0hC,EAAA,OAAiD,IAA5CD,EAAa7gC,QAAkB,QAAX8gC,EAAC1hC,EAAE2hC,gBAAQ,IAAAD,OAAA,EAAVA,EAAYz/B,KAAY,IAD1D,EAErB,EAKa2/B,EAAoB,SAC/BJ,EACAC,EACAH,GAEA,QAHsB,IAAtBG,IAAAA,EAAyB,SACf,IAAVH,IAAAA,OAAah+B,GAERk+B,EACL,OAAOH,EAAkBE,EAAcC,EAAOC,GAAeH,EAC/D,gKC7GO,SAASO,EAAoB59B,GAA0B,IAAzB,SAAElG,EAAQ,SAAEiN,GAAU/G,EAKzD,OAJAg0B,EAAAA,EAAAA,YAAU,KACRjtB,GAAU,IAGLjN,CACT,CCXO,MAAM+jC,EAAmB,CAC9B,OACA,OACA,QACA,QACA,OACA,WACA,SACA,OACA,QCgEK,SAASC,EAAYC,EAAQC,GAClC,GAAID,aAAkB1J,aAAe2J,aAAkB3J,YAAa,CAClE,MAAM4J,EAAQD,EAAOE,aAAa,SAGlC,GAAID,IAAUF,EAAOG,aAAa,SAAU,CAC1C,MAAMC,EAAWH,EAAOI,WAAU,GAGlC,OAFAD,EAAShE,aAAa,QAAS,IAC/BgE,EAASF,MAAQA,EACVA,IAAUF,EAAOE,OAASF,EAAOD,YAAYK,EACtD,CACF,CAEA,OAAOJ,EAAOD,YAAYE,EAC5B,CAsBO,SAASK,EACdC,EACAC,QAAqB,IAArBA,IAAAA,EAAwB,CACtBlM,KAAM,CAAC,EACPrQ,KAAM,CAAC,IAGT,MAAMwc,EAAU,IAAIpkC,IACdqkC,EAAiB,GAGvB,IAAK,MAAMn5B,KAAQg5B,EAASI,WAAY,CAAC,IAADC,EAAAC,EACtC,MAAM5oB,EAAW1Q,EAAK0Q,SAASC,cACzBpa,EAAoB,QAAlB8iC,EAAGr5B,EAAKu5B,kBAAU,IAAAF,GAAI,QAAJC,EAAfD,EAAiB9iC,UAAE,IAAA+iC,OAAJ,EAAfA,EAAqBxnC,MAEhC,GAAK0nC,EAAcx5B,GAAnB,CAEA,GAAIy5B,EAAgB/oB,GAElB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,IAAK,MAAMgpB,KAAa15B,EAAKu5B,WAAY,CACvC,MAAMI,EAAsC,UAAnBD,EAAUljC,KAYZ,IAADojC,EAAtB,GATAX,EAAsBvoB,GAAY,IAC7BuoB,EAAsBvoB,IAGtBipB,IACHV,EAAsBvoB,GAAUgpB,EAAUljC,MAAQkjC,EAAU5nC,OAI1D6nC,EACFV,EAAsBvoB,GAAUoV,MAAQ,GACP,QAA/B8T,EAAAX,EAAsBvoB,UAAS,IAAAkpB,GAA/BA,EAAiC9T,MAC7BmT,EAAsBvoB,GAAUoV,MAChC,KACH4T,EAAU5nC,QAEjB,KACK,CACL,IAAI+nC,EAAa75B,EAAK84B,WAAU,GAQhC,GAPAe,EAAWhF,aAAa,oBAAoB,GAGF,WAAtCgF,EAAWnpB,SAASC,gBACtBkpB,EAAaC,EAAcD,IAGzBtjC,EACF,GAAK2iC,EAAQ/tB,IAAI5U,GAGV,CAAC,IAADwjC,EACL,MAAMC,EAAgCd,EAAQ7iC,IAAIE,GAGtC,QAFZwjC,EAAAZ,EACEa,GACAvpB,kBAAU,IAAAspB,GAFZA,EAEcE,YACZd,EAAea,IAEjBb,EAAea,GAAiCH,CAClD,MAVEV,EAAe3/B,KAAKqgC,GACpBX,EAAQjiC,IAAIV,EAAI4iC,EAAe9nC,OAAS,QAW1C8nC,EAAe3/B,KAAKqgC,EAExB,CAKE75B,EAAKo5B,WAAW/nC,QAClB8nC,EAAe3/B,KAAIzF,MAAnBolC,GAAc3b,EAAAA,EAAAA,GACTub,EAA+B/4B,EAAMi5B,GACrCE,gBA3D2B,CA8DpC,CAEA,MAAO,CAAEA,iBAAgBF,wBAC3B,CAEA,SAASa,EAAc95B,GACrB,MAAMwN,EAAS9Q,SAASnI,cAAc,UACtC,IAAK,MAAM2lC,KAAQl6B,EAAKu5B,WACtB/rB,EAAOqnB,aAAaqF,EAAK1jC,KAAM0jC,EAAKpoC,OAItC,OAFA0b,EAAO2sB,UAAYn6B,EAAKm6B,UAEjB3sB,CACT,CAEO,SAASisB,EAAgB/oB,GAC9B,OAAO6nB,EAAiBxnB,SAASL,EACnC,CAKO,SAAS8oB,EAAcx5B,GAC5B,OAAyB,IAAlBA,EAAKzC,QACd,CCjMA,MAAM68B,EAAa19B,SAASnI,cAAc,OACpC8lC,EAA8B,CAClCtN,KAAM,GACNrQ,KAAM,IAGF4d,EAAiBA,KAAO,IAADC,EAC3B,MAAM,eAAEpB,EAAc,sBAAEF,GACtBF,EAA+BqB,GAEjCC,EAA4BtN,KAAOn7B,OAAOusB,KAAK8a,EAAsBlM,MACrEsN,EAA4B3d,KAAO9qB,OAAOusB,KAAK8a,EAAsBvc,MDkMhE,SAAoCuc,GACzC,IAAKA,EAAuB,OAE5B,MAAM,KAAElM,EAAI,KAAErQ,GAASuc,EAEjBuB,EAAc99B,SAAS+9B,cAAc,QACvCD,GACF5oC,OAAOkgC,QAAQ/E,GAAM/1B,SAAQwJ,IAAsC,IAApCk6B,EAAeC,GAAen6B,EAC3Dg6B,EAAY3F,aAAa6F,EAAeC,EAAe,IAI3D,MAAMC,EAAcl+B,SAAS+9B,cAAc,QACvCG,GACFhpC,OAAOkgC,QAAQpV,GAAM1lB,SAAQiL,IAAsC,IAApCy4B,EAAeC,GAAe14B,EAC3D24B,EAAY/F,aAAa6F,EAAeC,EAAe,GAG7D,CClNEE,CAA2B5B,GAM3B,MAAM6B,EAAuBp+B,SAASq+B,iBAAiB,sBAEf,IAADC,EAAvC,GAAoC,IAAhCF,EAAqBzpC,OAEvB,YADA2pC,EAAAt+B,SAASu+B,MAAKC,OAAMnnC,MAAAinC,GAAAxd,EAAAA,EAAAA,GAAI2b,IAI1B,MAAMgC,EAAe,ID8ChB,SAAkBzgC,GAA0C,IAAzC,SAAE0gC,EAAQ,SAAEC,EAAQ,QAAEC,EAAO,MAAEC,GAAO7gC,EAC9D,IAAK,MAAM8gC,KAAuBJ,EAAU,CAC1C,MAAMK,EAAkBJ,EAASK,WAAUtlC,GACzCoiC,EAAYpiC,EAAGolC,MAGQ,IAArBC,EACFH,EAAQE,GAGRH,EAASlf,OAAOsf,EAAiB,EAErC,CAGA,IAAK,MAAME,KAAWN,EACpBE,EAAMI,EAEV,CC/DEC,CAAU,CACRR,SAAUN,EACVO,SAAUlC,EACVmC,QAASt7B,GAAQA,EAAKyQ,WAAWwpB,YAAYj6B,GAC7Cu7B,MAAOv7B,GAAQm7B,EAAa3hC,KAAKwG,MAGnCu6B,EAAA79B,SAASu+B,MAAKC,OAAMnnC,MAAAwmC,EAAIY,EAAa,EAmChC,SAASU,EAAqBnhC,GAIjC,IAJkC,cACpCohC,EAAa,mBACbC,EAAkB,mBAClBC,GACDthC,GACCg0B,EAAAA,EAAAA,YAAU,KACR,GAAIoN,SAAAA,EAAeG,KAAM,EDvEtB,SAA6BhB,GAClC,GAAoB,mBAATA,EACT,MAAM,IAAI9jC,MACR,uDAAuD8jC,MAE7D,CCmEMiB,CAAoBJ,EAAcG,MAElC,MAAM,OAAE75B,IAAW+5B,EAAAA,EAAAA,KAEbC,EACJ9hC,EAAAA,cAACwhC,EAAcG,KD3Fd,CACLphC,SAAU,CACRuI,UAH0B4X,EC4FgBghB,GDzF1BnhC,SAASuI,UAE3Bwf,OAAQ5H,EAAM4H,OACdhU,KAAMoM,EAAMpM,MAAQ,CAAC,EACrBytB,WAAYrhB,EAAMqhB,WAClBC,YAAathB,EAAMshB,cCuFXC,GAAkBlhC,EAAAA,EAAAA,GACtB,kBACA,CAAEV,QAASyhC,GACXA,GACA57B,IAAiB,IAAhB,OAAEtP,GAAQsP,EACT,MAAO,CAAE7F,QAASzJ,EAAQ,IAE5BgnB,MAEF9V,EAIE9H,EAAAA,cAACg+B,EAAoB,CAAC72B,SAAU64B,GAC9BhgC,EAAAA,cAACkiC,EAAAA,mBAAmBtkC,SAAQ,CAACpG,MAAOiqC,GAClCzhC,EAAAA,cAACmiC,EAAAA,iBAAgB,KAAEF,KAGvBnC,EAEJ,CDnHG,IAAyBpf,ECqH5B,MAAO,MD4FJ,WACL,MAAM0hB,EAAgBhgC,SAASq+B,iBAAiB,sBAChD,IAAK,MAAM/6B,KAAQ08B,EACjB18B,EAAKyQ,WAAWwpB,YAAYj6B,EAEhC,CChGM28B,GDsHC,SAAqCC,GAC1C,IAAKA,EAA0B,OAE/B,MAAM,KAAE7P,EAAI,KAAErQ,GAASkgB,EAEvB,GAAI7P,EAAM,CACR,MAAMyN,EAAc99B,SAAS+9B,cAAc,QAC3C1N,EAAK/1B,SAAQ0jC,IACPF,GACFA,EAAYqC,gBAAgBnC,EAC9B,GAEJ,CAEA,GAAIhe,EAAM,CACR,MAAMke,EAAcl+B,SAAS+9B,cAAc,QAC3C/d,EAAK1lB,SAAQ0jC,IACPE,GACFA,EAAYiC,gBAAgBnC,EAC9B,GAEJ,CACF,CC3IMoC,CAA4BzC,EAA4B,CACzD,GAEL,CCzHA,SAAS0C,EAAa7qC,GACpB,MAAM8pC,EAAqB,IACtB9pC,EACH0wB,OAAQ,KACHoa,EAAAA,EAAAA,IAAgB9qC,EAAM2I,SAASuI,aAC/BlR,EAAMgR,cAAcI,KAAKg5B,YAAYW,WAM5C,IAAIC,EAFkBrlC,MAIpBqlC,EADEhrC,EAAMgR,cAAci6B,iBACRjrC,EAAMgR,cAAci6B,kBAEpB5oC,EAAAA,EAAAA,gBANMsD,EAMsB3F,EAAMgR,cAAc0tB,YAN/B/4B,EAAE3E,SAAY2E,EAM6B,IACrEmkC,EACHxpC,IAAKN,EAAM2W,MAAQ3W,EAAMgR,cAAck6B,KAAKv0B,OAMhDgzB,EAAsB,CACpBC,cAHoB5pC,EAAMgR,cAAc+3B,KAIxCc,mBAAoB7pC,EAAMgR,cAAc64B,mBACxCC,uBAeF,OAZoB3gC,EAAAA,EAAAA,GAClB,kBACA,CACEV,QAASuiC,EACThrC,MAAO8pC,GAETkB,GACAxiC,IAAiB,IAAhB,OAAExJ,GAAQwJ,EACT,MAAO,CAAEC,QAASzJ,EAAQgB,MAAO8pC,EAAoB,IAEvD9jB,KAGJ,CAEA6kB,EAAap6B,UAAY,CACvB9H,SAAU6I,IAAAA,OAAiBI,WAC3BZ,cAAeQ,IAAAA,OAAiBI,WAChC8K,KAAMlL,IAAAA,OACN44B,YAAa54B,IAAAA,OAAiBI,YAGhC,8BC1DA,IAAIzP,EAAiB,EAAQ,MAI7BsF,EAAOjJ,QAHP,SAAwB0E,EAAG+e,GACzB/e,EAAExC,UAAYhB,OAAOuC,OAAOggB,EAAEvhB,WAAYwC,EAAExC,UAAUwB,YAAcgB,EAAGf,EAAee,EAAG+e,EAC3F,EACiCxa,EAAOjJ,QAAQuC,YAAa,EAAM0G,EAAOjJ,QAAiB,QAAIiJ,EAAOjJ,6MCMtG,MAAM2sC,EAAW,YACXC,EAAa,2BA8BNC,EAAYC,UACvB,MAAMC,EA1B6BC,MACnC,MAAMC,EAAcC,aAAa1gB,QAAQmgB,GAQzC,IAAKM,EAAa,MAAO,GAGzB,IACE5nC,KAAKC,MAAM2nC,EACb,CAAE,MAAOvnC,GACP,MAAO,EACT,CAIA,OAAOL,KAAKC,MAAM2nC,GAAaE,aAAeP,EAC1C,GACAvnC,KAAKC,MAAM2nC,GAAaG,SAAS,EAIjBJ,GAepB,OAAOhsC,QAAQC,QAAQ8rC,EAAY,0BCnD9B,MAAMM,EAAYD,IDyDYA,KACnC,GAAIA,EAAW,CAGb,MAAMH,EAAc,CAClBG,UAAWA,EAAUzsC,OAAS,EAAIysC,EAAY,GAE9CD,WAAYP,GAIdM,aAAavgB,QAAQggB,EAAUtnC,KAAKqnB,UAAUugB,GAChD,GCpEAK,CAAqBF,GAAa,IAE3B,CAAEG,WADOH,aAAS,EAATA,EAAWzsC,SAAU,IAsDvC,MAlDoB6sC,CAACziC,EAAuB0iC,KAA6B,IAADC,EAAAC,EAAAC,EAAAC,EACtE,IAAIC,EAEJ,OAAQL,EAAOzlC,MACb,IAAK,YAEH,OADA8lC,EAAUL,EAAOK,QAAWL,EAAOK,aAAuBzkC,EACnD,IACF0B,EACHqiC,UAAWU,KACRT,EAASS,GACZC,QAAQ,GAGZ,IAAK,cACHD,EAAUL,EAAOK,QACjB,MAAME,EAAaF,EAAQE,WAE3B,IAAIZ,GAAStgB,EAAAA,EAAAA,GAAQ/hB,EAAMqiC,WAAa,IAIxC,OAHwC,KAA3B,QAATM,EAAAN,SAAS,IAAAM,OAAA,EAATA,EAAW/mC,QAAQqnC,IAA6B,QAATL,EAAAP,SAAS,IAAAO,GAATA,EAAW7kC,KAAKklC,GACtDZ,EAAYA,EAAU1sC,QAAOqF,GAAKA,IAAMioC,IAEtC,IACFjjC,EACHqiC,UAAWA,QAAa/jC,KACrBgkC,EAASD,IAGhB,IAAK,cAIH,OAHAU,EAAUL,EAAOK,QACb/iC,EAAMqiC,YAA4B,QAAfQ,EAAA7iC,EAAMqiC,iBAAS,IAAAQ,OAAA,EAAfA,EAAiBjtC,QAASmtC,IAChC,QAAfD,EAAA9iC,EAAMqiC,iBAAS,IAAAS,GAAfA,EAAiBpiB,OAAOqiB,EAAS,IAC5B,IACF/iC,EACHqiC,UAAWriC,EAAMqiC,WAAStgB,EAAAA,EAAAA,GAAO/hB,EAAMqiC,gBAAa/jC,KACjDgkC,EAAStiC,EAAMqiC,YAGtB,IAAK,QACH,MAAO,IACFriC,EACHqiC,UAAW,MACRC,EAAS,KAIhB,QACE,OAAOtiC,EACX,ECMF,MAvDkBf,IAA0B,IAAzB,SAAElG,GAAiBkG,EACpC,MAAM,EAACe,EAAM,EAACkjC,IAAYC,EAAAA,EAAAA,YAAWV,EAAaW,EAAAA,KAElDnQ,EAAAA,EAAAA,YAAU,KACR6O,IACG9rC,MAAKqtC,GACAr2B,MAAMC,QAAQo2B,GAAkBA,EAC5BA,aAAQ,EAARA,EAAuBx7B,SAEhC7R,MAAKmd,IACJ,GAAIA,EAAKzW,QAEP,MADA4mC,OAAShlC,GACH6U,EAENmwB,EAASnwB,EACX,IAED9S,OAAMhC,IACLilC,OAAShlC,GACTU,QAAQe,IAAI,UAAW1B,EAAM,GAC7B,GACH,IAEH,MAAMilC,EAAYP,IAChBG,EAAS,CAAEjmC,KAAM,YAAa8lC,WAAU,EAe1C,OAEElkC,EAAAA,cAAC0kC,EAAAA,GAAY9mC,SAAQ,CACnBpG,MAAO,CACLitC,WACAE,UAjBaT,IACjBG,EAAS,CAAEjmC,KAAM,cAAe8lC,WAAU,EAiBtCU,eAdkBV,IACtBG,EAAS,CAAEjmC,KAAM,cAAe8lC,WAAU,EActCW,UAXYA,KAChBR,EAAS,CAAEjmC,KAAM,QAAS8lC,aAASzkC,GAAY,KAWxC0B,IAGJjH,EACoB,sBCzCpB,MAAM4qC,EAAoD1kC,IAAA,IAAC,QAChEC,GACDD,EAAA,OACCJ,EAAAA,cAAC20B,EAAAA,GAAgB,KACf30B,EAAAA,cAAC+kC,EAAAA,GAAgB,KACf/kC,EAAAA,cAACglC,EAAAA,GAAe,KACdhlC,EAAAA,cAACilC,EAAAA,GAAiB,KAChBjlC,EAAAA,cAACklC,EAAS,KAAE7kC,MAID,EAOR+R,EAA0DlM,IAIhE,IAADi/B,EAAA,IAHJ3yB,aAAa,SAAEjS,GAAU,gBACzBgS,EAAe,uBACf6yB,GACDl/B,EACC,MAAMm/B,EAAe9kC,EAASuI,SACxBw8B,EAAmB/yB,SAAyB,QAAV4yB,EAAf5yB,EAAiBhS,gBAAQ,IAAA4kC,OAAV,EAAfA,EAA2Br8B,SAC9Cy8B,EAAgBH,EAAuB7kC,IAAa,CAAC,EAAG,GAY9D,OATI8kC,IAAiBC,GACnBz9B,YAAW,KACTvH,OAAOqC,SAAS,CACduJ,IAAKq5B,EAAc,GACnB31B,KAAM21B,EAAc,IAEpB,GACD,MAEE,CAAK,EAMDv3B,EAAgDrG,IAGtD,IAHuD,SAC5DpH,EAAQ,aACRilC,GACD79B,CAAA,oIC9DM,MAAM48B,EAAmC,CAC9Cf,eAAW/jC,EACXkkC,eAAWlkC,EACX0kC,QAAQ,GAIGO,GAAclzB,EAAAA,EAAAA,eAA8B+yB,GAC5CkB,EAAUA,KAAMhtB,EAAAA,EAAAA,YAAWisB,oCCTxCtuC,EAAQ,OAA2B,EACnC,MAMMsvC,EAAW,CAAC,QAAS,QAAS,MAAO,OAAQ,OAAQ,OAAQ,QAenEtvC,EAAQ,EAdyB,CAACsqB,EAAOilB,EAAS,YAChD,GAAc,MAAVjlB,EAAe,OAAOA,EAC1B,MAAMklB,EAAmBllB,EAAMmlB,SAAS,KACxC,MAVuB,EAACH,EAAUhlB,KAClC,IAAK,MAAMolB,KAAUJ,EACnB,GAAIhlB,EAAMmlB,SAASC,GAAS,OAAO,EAErC,OAAO,CAAK,EAMRC,CAAiBL,EAAUhlB,GACtBA,EAEM,WAAXilB,EACKC,EAAmBllB,EAAQ,GAAGA,KAExB,UAAXilB,GACKC,EAAmBllB,EAAMxG,MAAM,GAAI,GAErCwG,CAAK,o/BCvBkF,SAAS7G,IAAI,OAAOA,EAAEviB,OAAOoK,OAAOpK,OAAOoK,OAAOlE,OAAO,SAAS1B,GAAG,IAAI,IAAIhB,EAAE,EAAEA,EAAEpB,UAAU3C,OAAO+D,IAAI,CAAC,IAAID,EAAEnB,UAAUoB,GAAG,IAAI,IAAIP,KAAKM,EAAEvD,OAAOgB,UAAUsJ,eAAexI,KAAKyB,EAAEN,KAAKuB,EAAEvB,GAAGM,EAAEN,GAAG,CAAC,OAAOuB,CAAC,EAAE+d,EAAEpgB,MAAMP,KAAKQ,UAAU,CAAC,SAASwB,EAAEY,EAAEhB,GAAG,GAAG,MAAMgB,EAAE,MAAM,CAAC,EAAE,IAAIjB,EAAEN,EAAEsf,EAAE,CAAC,EAAE3e,EAAE5D,OAAOusB,KAAK/nB,GAAG,IAAIvB,EAAE,EAAEA,EAAEW,EAAEnE,OAAOwD,IAAIO,EAAEiC,QAAQlC,EAAEK,EAAEX,KAAK,IAAIsf,EAAEhf,GAAGiB,EAAEjB,IAAI,OAAOgf,CAAC,CAAC,MAAMyI,EAAExmB,IAAI,MAAM0S,OAAO1T,EAAE2T,KAAK5T,EAAEkc,KAAKxc,EAAE2c,OAAO2C,EAAErZ,SAAStF,EAAEkc,KAAKkL,EAAE7hB,SAAS5I,EAAEmuC,KAAK5qC,GAAGU,EAAEyE,SAAS,IAAIuI,SAASzO,GAAGyB,EAAEyE,SAAS,OAAOlG,GAAGE,GAAGoD,IAAItD,EAAE,IAAI4rC,IAAI1rC,GAAGuO,UAAU,CAACA,SAASo9B,UAAUtzB,UAAUvY,IAAImU,OAAO1T,EAAE2T,KAAK5T,EAAEkc,KAAKxc,EAAE2c,OAAO2C,EAAErZ,SAAStF,EAAEkc,KAAKkL,EAAE7hB,SAAS5I,EAAEmuC,KAAK5qC,EAAE+F,MAAMrF,EAAEwT,QAAQnO,MAAMjJ,IAAI4D,EAAEwT,QAAQnO,OAAOrF,EAAEwT,QAAQnO,MAAMjJ,KAAK,UAAS,EAAGL,EAAE,CAACiE,EAAEhB,KAAK,IAAID,EAAE,GAAGN,EAAE+nB,EAAExmB,GAAGZ,GAAE,EAAGrD,EAAE,OAAO,MAAM,CAAC,YAAI0I,GAAW,OAAOhG,CAAC,EAAE,iBAAI4rC,GAAgB,OAAOjrC,CAAC,EAAE,qBAAAkrC,GAAwBlrC,GAAE,EAAGrD,GAAG,EAAE,MAAAwuC,CAAOvrC,GAAGD,EAAEqE,KAAKpE,GAAG,MAAM+e,EAAE,KAAKtf,EAAE+nB,EAAExmB,GAAGhB,EAAE,CAACyF,SAAShG,EAAEspC,OAAO,OAAM,EAAG,OAAO/nC,EAAEgF,iBAAiB,WAAW+Y,GAAG,KAAK/d,EAAE+W,oBAAoB,WAAWgH,GAAGhf,EAAEA,EAAE/D,QAAOgF,GAAGA,IAAIhB,GAAC,CAAE,EAAE,QAAAqd,CAASrd,GAAGqG,MAAM/F,EAAEuE,QAAQhC,GAAE,GAAI,CAAC,GAAG,GAAG,iBAAiB7C,EAAEgB,EAAEwT,QAAQg3B,GAAGxrC,OAAO,CAACM,EAAEye,EAAE,CAAC,EAAEze,EAAE,CAAClD,IAAIkiB,KAAKD,MAAM,KAAK,IAAIjf,GAAGyC,EAAE7B,EAAEwT,QAAQE,aAAapU,EAAE,KAAKN,GAAGgB,EAAEwT,QAAQC,UAAUnU,EAAE,KAAKN,EAAE,CAAC,MAAMD,GAAGiB,EAAEyE,SAAS5C,EAAE,UAAU,UAAU7C,EAAE,CAAC,CAACP,EAAE+nB,EAAExmB,GAAGZ,GAAE,EAAG,MAAMb,EAAE,IAAIjD,SAAQ0E,GAAGjE,EAAEiE,IAAG,OAAOjB,EAAE6B,SAAQZ,GAAGA,EAAE,CAACyE,SAAShG,EAAEspC,OAAO,WAAUxpC,CAAC,EAAC,EAAGe,EAAE,CAACU,EAAE,OAAO,MAAMhB,EAAEgB,EAAEiB,QAAQ,KAAKlC,EAAE,CAACiO,SAAShO,GAAG,EAAEgB,EAAEyqC,OAAO,EAAEzrC,GAAGgB,EAAE0S,OAAO1T,GAAG,EAAEgB,EAAEyqC,OAAOzrC,GAAG,IAAI,IAAIP,EAAE,EAAE,MAAMsf,EAAE,CAAChf,GAAGK,EAAE,CAAC,MAAM,MAAM,CAAC,YAAIqF,GAAW,OAAOsZ,EAAEtf,EAAE,EAAE,gBAAAuG,CAAiBhF,EAAEhB,GAAG,EAAE,mBAAA+X,CAAoB/W,EAAEhB,GAAG,EAAEwU,QAAQ,CAAC,WAAIkoB,GAAU,OAAO3d,CAAC,EAAE,SAAI2sB,GAAQ,OAAOjsC,CAAC,EAAE,SAAI4G,GAAQ,OAAOjG,EAAEX,EAAE,EAAE,SAAAgV,CAAUzT,EAAEhB,EAAED,GAAG,MAAMynB,EAAEzqB,EAAE,IAAIgD,EAAEgiB,MAAM,KAAKtiB,IAAIsf,EAAE3a,KAAK,CAAC4J,SAASwZ,EAAE9T,OAAO3W,EAAEd,OAAO,IAAIc,IAAIA,IAAIqD,EAAEgE,KAAKpD,EAAE,EAAE,YAAA0T,CAAa1T,EAAEhB,EAAED,GAAG,MAAMynB,EAAEzqB,EAAE,IAAIgD,EAAEgiB,MAAM,KAAKhD,EAAEtf,GAAG,CAACuO,SAASwZ,EAAE9T,OAAO3W,GAAGqD,EAAEX,GAAGuB,CAAC,EAAE,EAAAwqC,CAAGxqC,GAAG,MAAMhB,EAAEP,EAAEuB,EAAEhB,EAAE,GAAGA,EAAEI,EAAEnE,OAAO,IAAIwD,EAAEO,EAAE,GAAE,EAAG6C,IAAI,oBAAoB2C,SAASA,OAAO8B,WAAW9B,OAAO8B,SAASnI,eAAeI,EAAExC,EAAE8F,EAAE2C,OAAOlF,MAAM+c,SAAS1d,GAAGJ,EAAE,SAAS+C,EAAEtB,EAAEjB,GAAG,OAAO,EAAE6C,oBAAoB,EAAE5B,EAAEjB,EAAE,QAAQ4rC,WAAWC,mBAAmBD,WAAWC,iBAAiB,CAAC,GAAGD,WAAWC,iBAAiB5qC,KAAK2qC,WAAWC,iBAAiB5qC,GAAG,EAAE4B,oBAAoB5B,EAAEjB,IAAI4rC,WAAWC,iBAAiB5qC,IAApM,CAAyMA,EAAEjB,GAAG,gBAAgBA,EAAE,CAAC,MAAM0C,EAAEH,EAAE,OAAO,CAACupC,QAAQ,IAAIC,SAAS,MAAM/qC,EAAEuB,EAAE,YAAYF,EAAE,IAAI,aAAaK,GAAGnB,EAAE,IAAI,aAAaP,GAAG,SAASsC,EAAErC,GAAG5C,KAAK2tC,IAAI/qC,CAAC,CAAC,MAAMuB,EAAEvB,GAAGA,aAAaqC,EAAElD,EAAEa,IAAI,MAAM,IAAIqC,EAAErC,EAAC,EAAG,SAASX,EAAEL,GAAG,MAAM8H,GAAG/H,EAAE8E,QAAQpF,GAAE,EAAG4G,MAAM0Y,EAAEitB,QAAQ5rC,EAAEyrC,QAAQrkB,GAAGxnB,EAAE,aAAY,KAAK1D,QAAQC,UAAUF,MAAK,KAAK,MAAM2E,EAAE1B,EAAES,EAAEynB,GAAG7nB,EAAEssC,EAAEjrC,EAAEhB,GAAG,CAAC6E,QAAQpF,EAAE4G,MAAM0Y,GAAE,GAAE,GAAG,IAAI,MAAMhiB,EAAEuC,EAAES,EAAEynB,GAAG,OAAOpnB,GAAGD,EAAE8rC,EAAElvC,EAAEiD,IAAI,IAAI,CAAC,MAAMksC,EAAElsC,IAAI,MAAMD,EAAEuB,KAAKuqC,QAAQpsC,GAAG2C,IAAiB,OAAO,gBAAgB/B,EAAE0e,EAAE,CAAC,EAAEhf,EAAE,CAAC8rC,QAAQpsC,GAAGO,GAAE,EAAGksC,EAAE3+B,UAAU,CAAC+a,KAAK,SAASxgB,GAAG,SAAS4G,YAAY,MAAMjN,EAAE,CAACT,EAAEhB,IAAIgB,EAAEyqC,OAAO,EAAEzrC,EAAE/D,UAAU+D,EAAEU,EAAE,CAACM,EAAEhB,KAAK,IAAID,EAAEgf,EAAE,MAAM3e,GAAGJ,EAAE+hB,MAAM,KAAKyF,EAAE2kB,EAAE/rC,GAAGrD,EAAE,KAAKyqB,EAAE,GAAGlnB,EAAE8rC,EAAEprC,GAAG,IAAI,IAAIA,EAAE,EAAEZ,EAAEE,EAAErE,OAAO+E,EAAEZ,EAAEY,IAAI,CAAC,IAAIZ,GAAE,EAAG,MAAMyC,EAAEvC,EAAEU,GAAGqrC,MAAM,GAAGxpC,EAAE/E,QAAQ,CAACihB,EAAE,CAACstB,MAAMxpC,EAAE2qB,OAAO,CAAC,EAAEue,IAAI/rC,GAAG,QAAQ,CAAC,MAAMT,EAAE4sC,EAAEtpC,EAAE4Q,MAAM9T,EAAE,CAAC,EAAE2C,EAAEmP,KAAKoS,IAAI2D,EAAEvrB,OAAOsD,EAAEtD,QAAQ,IAAIwG,EAAE,EAAE,KAAKA,EAAEH,EAAEG,IAAI,CAAC,MAAMzB,EAAEzB,EAAEkD,GAAGzC,EAAEwnB,EAAE/kB,GAAG,GAAG6pC,EAAEtrC,GAAG,CAACrB,EAAEqB,EAAEoe,MAAM,IAAI,KAAKoI,EAAEpI,MAAM3c,GAAG7G,IAAI2wC,oBAAoB1sB,KAAK,KAAK,KAAK,CAAC,QAAG,IAAS7f,EAAE,CAACI,GAAE,EAAG,KAAK,CAAC,MAAML,EAAEysC,EAAEC,KAAKzrC,GAAG,GAAGjB,IAAIhD,EAAE,CAAC,MAAMiE,GAAG,IAAI0rC,EAAEzqC,QAAQlC,EAAE,IAAI,EAAEiB,EAAE,6BAA6BjB,EAAE,gEAAgE8C,EAAE4Q,UAAU,MAAMsL,EAAEwtB,mBAAmBvsC,GAAGL,EAAEI,EAAE,IAAIgf,CAAC,MAAM,GAAG/d,IAAIhB,EAAE,CAACI,GAAE,EAAG,KAAK,CAAC,CAAC,IAAIA,EAAE,CAACL,EAAE,CAACssC,MAAMxpC,EAAE2qB,OAAO7tB,EAAEosC,IAAI,IAAIvkB,EAAEpI,MAAM,EAAE3c,GAAGod,KAAK,MAAM,KAAK,CAAC,CAAC,OAAO9f,GAAGgf,GAAG,MAAM1d,EAAE,CAACL,EAAEhB,IAAIU,EAAE,CAAC,CAAC+S,KAAKzS,IAAIhB,GAAGV,EAAE,CAAC0B,EAAEhB,KAAK,GAAGyB,EAAET,EAAE,KAAK,OAAOA,EAAE,MAAMjB,EAAEN,GAAGuB,EAAE+gB,MAAM,MAAMhD,GAAG/e,EAAE+hB,MAAM,KAAK3hB,EAAE+rC,EAAEpsC,GAAGynB,EAAE2kB,EAAEptB,GAAG,GAAG,KAAK3e,EAAE,GAAG,OAAOusC,EAAE5tB,EAAEtf,GAAG,IAAIgC,EAAErB,EAAE,GAAG,KAAK,CAAC,MAAMY,EAAEwmB,EAAEzQ,OAAO3W,GAAGyf,KAAK,KAAK,OAAO8sB,GAAG,MAAM5tB,EAAE,GAAG,KAAK/d,EAAEvB,EAAE,CAAC,MAAM1C,EAAEyqB,EAAEzQ,OAAO3W,GAAGE,EAAE,GAAG,IAAI,IAAIU,EAAE,EAAEhB,EAAEjD,EAAEd,OAAO+E,EAAEhB,EAAEgB,IAAI,CAAC,MAAMhB,EAAEjD,EAAEiE,GAAG,OAAOhB,EAAEM,EAAEwiB,MAAM,MAAM9iB,GAAGM,EAAE8D,KAAKpE,EAAE,CAAC,OAAO2sC,EAAE,IAAIrsC,EAAEuf,KAAK,KAAKpgB,EAAC,EAAGwsC,EAAE,CAACjrC,EAAEhB,KAAK,MAAMD,EAAEN,EAAE,IAAIuB,EAAE+gB,MAAM,KAAK,IAAIhD,EAAE,IAAIotB,EAAEpsC,GAAGnE,KAAIoF,IAAI,MAAMjB,EAAEysC,EAAEC,KAAKzrC,GAAG,OAAOjB,EAAEC,EAAED,EAAE,IAAIiB,KAAI6e,KAAK,KAAK,MAAMpa,UAAUiO,OAAOtT,EAAE,IAAI,CAAC,GAAGJ,EAAEwnB,EAAEpnB,EAAE2hB,MAAM,KAAK,IAAI,GAAG,OAAOhD,EAAE4tB,EAAE5tB,EAAEtf,EAAE+nB,GAAGzI,GAAG6tB,EAAE,CAAC5rC,EAAEhB,KAAK,MAAMD,EAAEiB,GAAGoZ,EAAEpZ,GAAG,OAAOmrC,EAAEnrC,GAAGhF,OAAO+D,GAAGsiB,OAAOxC,KAAK,OAAOssB,EAAEnsC,GAAGhE,OAAO+D,GAAGsiB,OAAOxC,KAAK,IAAG,EAAG2sB,EAAE,SAASpyB,EAAEpZ,GAAGwrC,EAAE5vB,KAAK5b,GAAGsrC,EAAEtrC,GAAGA,GAAG,MAAMA,EAAE,GAAG6rC,EAAE,CAAC7rC,EAAEhB,KAAI,CAAEqsC,MAAMrrC,EAAE8rC,MAAM9rC,EAAElD,QAAQ,EAAEquC,EAAEnrC,EAAEyS,MAAMvX,QAAO,CAAC8E,EAAEhB,KAAKgB,GAAG,EAAE,CAACA,GAAG,KAAKA,EAAT,CAAYhB,GAAGgB,GAAG,EAAEoZ,EAAEpa,GAAGgB,GAAG,EAAEsrC,EAAEtsC,GAAGgB,GAAG,EAAEA,GAAG,EAAEA,IAAG,GAAG0qC,MAAM1rC,IAAIosC,EAAEprC,GAAGA,EAAEpF,IAAIixC,GAAGxqB,MAAK,CAACrhB,EAAEhB,IAAIgB,EAAE8rC,MAAM9sC,EAAE8sC,MAAM,EAAE9rC,EAAE8rC,MAAM9sC,EAAE8sC,OAAO,EAAE9rC,EAAE0qC,MAAM1rC,EAAE0rC,QAAOS,EAAEnrC,GAAGA,EAAE6D,QAAQ,eAAe,IAAIkd,MAAM,KAAK4qB,EAAE,CAAC3rC,KAAKhB,IAAIgB,IAAIhB,EAAEA,EAAEhE,QAAOgF,GAAGA,GAAGA,EAAE/E,OAAO,MAAK+D,EAAE/D,OAAO,EAAE,IAAI+D,EAAE6f,KAAK,OAAO,IAAI6sB,EAAE,CAAC,MAAM,QAAQhrC,EAAE,CAACV,EAAEhB,KAAK,MAAMD,EAAEvD,OAAOusB,KAAK/nB,GAAG,OAAOjB,EAAE9D,SAASO,OAAOusB,KAAK/oB,GAAG/D,QAAQ8D,EAAEgtC,OAAMhtC,GAAGC,EAAE8G,eAAe/G,IAAIiB,EAAEjB,KAAKC,EAAED,IAAE,EAAGitC,EAAEhsC,GAAGA,EAAE6D,QAAQ,eAAe,IAAIpB,EAAEzD,GAAGD,IAAI,IAAIA,EAAE,OAAO,KAAK,GAAGA,EAAEuD,OAAO,YAAYvD,EAAEjD,MAAMsC,SAAS,OAAO,WAAWxD,IAAImE,EAAEjD,MAAMsC,SAASqE,EAAEzD,IAAI,GAAG,EAAED,EAAEjD,MAAM2W,MAAM1T,EAAEjD,MAAMgB,SAASiC,EAAEuD,OAAO4oC,EAAE,iIAAiInsC,EAAEuD,UAAU,KAAKvD,EAAEuD,OAAO4oC,GAAGnsC,EAAEjD,MAAMwrB,MAAMvoB,EAAEjD,MAAMgL,IAAI,mBAAmB/H,EAAEjD,MAAMwrB,aAAavoB,EAAEjD,MAAMgL,qEAAqE,IAAI/H,EAAEuD,OAAO4oC,IAAIU,EAAE7sC,EAAEjD,MAAMwrB,KAAKvoB,EAAEjD,MAAMgL,KAAK,mBAAmB/H,EAAEjD,MAAMwrB,YAAYvoB,EAAEjD,MAAMgL,kGAAkG/H,EAAEjD,MAAMgB,QAAQ,MAAM,CAACpB,MAAMqD,EAAEjC,SAAQ,GAAI,MAAMihB,EAAEhf,EAAEuD,OAAO4oC,EAAEnsC,EAAEjD,MAAMwrB,KAAKvoB,EAAEjD,MAAM2W,KAAKrT,EAAE,MAAM2e,EAAE/e,EAAE,GAAGgtC,EAAEhtC,MAAMgtC,EAAEjuB,KAAK,MAAM,CAACriB,MAAMqD,EAAEjC,QAAQiC,EAAEjD,MAAMgB,QAAQ2V,KAAK1T,EAAEjD,MAAMsC,SAAS,GAAG4tC,EAAE5sC,OAAOA,EAAC,EAAG6sC,EAAE,CAAC,YAAYntC,EAAE,CAAC,KAAK,QAAQ,UAAU,YAAYotC,EAAE,CAAC,OAAO,IAAIC,WAAW3qC,GAAG,qBAAE,IAASA,IAAIA,EAAExB,GAAGA,GAAG,MAAM8C,EAAE,OAAOtC,EAAEgB,GAAE,CAACxC,EAAED,KAAK,IAAIqtC,SAAS3tC,GAAGO,EAAEwnB,EAAEpnB,EAAEJ,EAAEitC,GAAG,MAAMpB,QAAQ9uC,GAAGqF,KAAKqD,SAASnF,GAAGgB,KAAKwG,GAAGjF,EAAEwD,MAAM9G,EAAEsF,QAAQvC,EAAE+qC,SAAS5qC,EAAEqB,GAAG0jB,EAAEzmB,EAAEX,EAAEonB,EAAE1nB,GAAGuD,EAAE/D,EAAEuD,EAAE9F,GAAGwF,EAAE6oC,UAAU/nC,GAAGlD,EAAEG,EAAE0N,WAAWzL,EAAElC,EAAEoB,EAAEnB,EAAE0N,SAASzL,GAAgB,OAAO,gBAAgB,IAAIwc,EAAE,CAACxb,IAAIxD,GAAGN,EAAE,eAAeU,EAAE,YAAO,GAAQY,EAAE0B,EAAE,CAAC6qC,UAAUntC,EAAEotC,mBAAmBltC,EAAE4b,KAAK5Y,EAAEoC,SAASnF,IAAI,CAAC2b,KAAK5Y,EAAE8L,QAAQnO,IAAI,GAAGD,EAAEoO,SAASpO,EAAEoO,QAAQnO,GAAG,CAACA,IAAIA,EAAEka,kBAAkB,IAAIla,EAAE4Z,UAAU5Z,EAAE+Z,SAAS/Z,EAAE6Z,QAAQ7Z,EAAE8Z,SAAS9Z,EAAEga,UAA3E,CAAsFha,GAAG,CAACA,EAAE8P,iBAAiB,IAAI9Q,EAAEsC,EAAE,GAAG,kBAAkBA,GAAGnC,EAAE,CAAC,MAAMa,EAAEZ,EAAE2e,EAAE,CAAC,EAAEze,EAAE+F,OAAO6mC,GAAGltC,EAAE0B,EAAEqd,EAAE,CAAC,EAAExf,GAAGyB,EAAE,CAACrB,EAAE0D,EAAE,CAACgD,MAAM9G,EAAEsF,QAAQ7E,GAAG,KAAI,IAAIwB,EAAEoV,YAAY,OAAOpV,EAAE+L,UAAU,CAACzF,GAAG,SAAS4G,YAAY,MAAM5M,UAAU,YAAY,WAAA9C,IAAegC,GAAGwsC,SAASxsC,GAAG5C,KAAKwY,YAAY,uBAAuB,CAAC,iBAAA62B,IAAqBzsC,GAAG5C,KAAK6M,SAAS,CAAC,GAAG7M,KAAKtB,MAAMuiC,WAAWr+B,EAAE,CAAC,MAAAgM,GAAS,OAAO5O,KAAKtB,MAAMsC,QAAQ,EAAE,MAAMsuC,EAAE,gBAAgB,CAACD,kBAAkB,CAAC3iC,aAAQ,GAAQpG,WAAM,EAAOipC,SAAS,KAAI,IAAK,SAAS1qC,GAAG7D,SAASY,IAAI,MAAMD,EAAEN,GAAG,aAAasf,EAAE,WAAW3e,EAAE,WAAU,KAAI,CAAEqtC,kBAAkB1uB,EAAEra,MAAM3E,EAAE4tC,SAASluC,KAAI,CAACM,IAAiB,OAAO,gBAAgB2tC,EAAE5qC,SAAS,CAACpG,MAAM0D,GAAgB,gBAAgB0B,EAAE,CAAC4C,MAAM3E,EAAEs/B,QAAQ,CAACr+B,EAAEhB,KAAKP,EAAEuB,GAAG,MAAM+d,EAAEjU,SAASiU,EAAEjU,QAAQ9J,EAAEhB,EAAC,GAAIA,GAAG,CAACiD,EAAE2T,YAAY,+BAA+B,MAAMrV,EAAE,SAASvB,GAAG,IAAID,EAAEN,EAAE,SAASW,EAAEL,GAAgB,OAAO,gBAAgBkD,EAAE,KAAkB,gBAAgBjD,EAAE+e,EAAE,CAAC3hB,IAAI,oBAAoB2C,IAAI,CAAC,OAAOK,EAAEwW,YAAY,qBAAqB,OAAO7W,EAAE,OAAON,EAAEO,EAAE4W,aAAanX,EAAEO,EAAEoB,MAAMrB,EAAE,eAAeK,CAAC,CAAnP,EAAqP,EAAEoU,QAAQxU,EAAET,EAAEH,SAASW,MAAM,MAAM0F,SAAShG,GAAGO,GAAG+e,EAAE3e,GAAG,WAAW,CAACqF,SAAShG,KAAK+nB,GAAG,WAAY,MAAMznB,EAAE,aAAa2tC,GAAG3tC,EAAE0tC,kBAAkB3iC,aAAQ,EAAO,MAAMrL,EAAE,eAAc,KAAKM,EAAE4tC,cAAS,EAAM,GAAG,IAAI,MAAM,CAAC5tC,EAAE2E,MAAMjF,EAAE,CAA3I,GAA+I,GAAG,aAAY,KAAKO,EAAEsrC,uBAAsB,GAAG,CAACvsB,EAAEtZ,WAAW,aAAY,KAAK,IAAIzE,GAAE,EAAG,MAAMjB,EAAEC,EAAEurC,QAAO,EAAE9lC,SAASzF,MAAM1D,QAAQC,UAAUF,MAAK,KAAKuX,uBAAsB,KAAK5S,GAAGZ,EAAE,CAACqF,SAASzF,GAAE,GAAE,GAAE,IAAI,MAAM,KAAKgB,GAAE,EAAGjB,GAAE,CAAC,GAAG,IAAIynB,EAAE,CAAC,IAAIjlB,EAAEilB,GAAG,MAAMA,EAAE7nB,EAAE6nB,EAAEukB,IAAI,CAAClnC,SAAQ,GAAI,CAAc,OAAO,gBAAgB9D,EAAE+B,SAAS,CAACpG,MAAMqiB,GAAG,mBAAmBhf,EAAEA,EAAEgf,GAAGhf,GAAG,KAAI,IAAIiC,EAAE,EAAE5C,SAASY,MAAM,MAAMD,EAAEuB,IAAI,OAAOvB,EAAEC,EAAED,GAAgB,gBAAgBwB,EAAE,KAAKvB,EAAC,EAAG2C,EAAE,EAAEirC,IAAI5tC,EAAEZ,SAASW,MAAM,MAAMN,EAAEO,EAAEiC,QAAQ,KAAK,IAAI8c,EAAE3e,EAAE,GAAG,OAAOX,GAAG,GAAGsf,EAAE/e,EAAEmC,UAAU,EAAE1C,GAAGW,EAAEJ,EAAEmC,UAAU1C,IAAIsf,EAAE/e,EAAe,gBAAgBe,EAAE+B,SAAS,CAACpG,MAAM,CAAC+I,SAAS,CAACuI,SAAS+Q,EAAErL,OAAOtT,EAAEuT,KAAK,MAAM5T,EAAC,EAAG8tC,GAAE,EAAEp6B,KAAKzS,EAAE5B,SAASY,MAAM,MAAM6rC,QAAQ9rC,GAAGqC,KAAKqD,SAAShG,GAAG6B,IAAIlB,EAAEd,EAAE0B,EAAEjB,GAAGynB,EAAEnmB,EAAEjB,EAAEX,EAAEuO,UAAU,OAAOhO,EAAE,CAACyF,SAAShG,EAAE+rB,MAAMhE,EAAEzI,EAAE,CAAC,EAAEyI,EAAEgG,OAAO,CAACue,IAAIvkB,EAAEukB,IAAIt4B,KAAKzS,IAAI,MAAK,EAAG8sC,GAAE,CAAC,MAAM,WAAW,aAAaC,GAAE,CAAC,WAAW,QAAQ,YAAY,MAAM,YAAYC,GAAGhuC,IAAI,IAAI+rC,IAAIhsC,EAAE0F,SAAShG,EAAE+7B,UAAUhU,GAAGxnB,EAAEjD,EAAEqD,EAAEJ,EAAE8tC,IAAgB,OAAO,gBAAgBG,GAAGlvB,EAAE,CAAC,EAAEhiB,EAAE,CAACy+B,UAAUhU,EAAEukB,IAAIhsC,EAAE0F,SAAShG,IAAG,EAAG,IAAIyuC,GAAG,EAAE,MAAMD,GAAGjuC,IAAI,IAAIZ,SAASW,EAAE2wB,MAAMjxB,EAAE+7B,UAAUhU,EAAE,MAAMukB,IAAIhvC,EAAE0I,SAASnF,GAAGN,EAAE6C,EAAEzC,EAAEJ,EAAE+tC,IAAG,MAAMxuC,EAAE,WAAWI,EAAE,UAAS,GAAI2C,EAAE,SAASvF,GAAG0F,EAAE,SAASnC,EAAE0N,UAAUjN,EAAE,UAAS,GAAI,aAAY,KAAKmtC,KAAK9rC,IAAI,KAAK8rC,KAAK,IAAIA,KAAKvuC,EAAEmL,SAAQ,EAAE,IAAI,IAAI,aAAY,KAAK,IAAI9J,GAAE,EAAGhB,GAAE,EAAGjD,IAAIuF,EAAEwI,UAAUxI,EAAEwI,QAAQ/N,EAAEiE,GAAE,GAAIV,EAAE0N,WAAWvL,EAAEqI,UAAUrI,EAAEqI,QAAQxK,EAAE0N,SAAShO,GAAE,GAAIe,EAAE+J,QAAQ9J,GAAGhB,GAAGM,EAAE0N,WAAWjR,EAAEgE,EAAE+J,SAAS1I,GAAE,GAAG,CAACrF,EAAEuD,IAAI,MAAM8B,EAAE,eAAc,KAAK,IAAIpB,EAAkCrB,EAAEmL,QAAQnL,EAAEmL,SAAQ,GAAI9J,EAAEzB,EAAEuL,QAAQ/J,EAAE+J,SAAS9J,GAAGA,EAAEmtC,QAAQ,GAAG,IAAiB,OAAO,gBAAgB3mB,EAAEzI,EAAE,CAAC2R,MAAM3R,EAAE,CAACqvB,QAAQ,QAAQ3uC,GAAG4uC,SAAS,KAAK9qC,IAAIhE,GAAGsD,GAAG9C,EAAC,EAAGuuC,GAAG,CAAC,WAAW,UAAU,WAAW,WAAW,UAAU,aAAaC,GAAGvuC,IAAI,MAAMD,EAAEqC,IAAI3C,EAAE6B,IAAiB,OAAO,gBAAgBktC,GAAGzvB,EAAE,CAAC,EAAEhf,EAAEN,EAAEO,GAAE,EAAG,SAASwuC,GAAGxuC,GAAG,MAAMyF,SAAS1F,EAAE0uC,QAAQhvC,GAAE,EAAGL,SAASooB,EAAEskB,SAAS/uC,EAAEy+B,UAAUl7B,EAAE,OAAON,EAAE6C,EAAEzC,EAAEJ,EAAEsuC,IAAI/uC,EAAE,WAAWmvC,QAAQlnB,GAAGtrB,QAAO,CAAC8E,EAAEhB,KAAK,MAAMD,EAAE0D,EAAE1G,EAAF0G,CAAKzD,GAAG,OAAOgB,EAAE+V,OAAOhX,EAAC,GAAG,KAAKiO,SAASrO,GAAGI,EAAEuC,EAAE5B,EAAEnB,EAAEI,GAAG,GAAG2C,EAAE,CAAC,MAAMkrB,OAAOxtB,EAAE+rC,IAAI3rC,EAAEisC,MAAM7kB,EAAE6kB,OAAO3vC,MAAM6C,IAAI+C,EAAE3C,EAAE6nB,EAAE1pB,QAAQf,EAAEyqB,EAAE/T,KAAK5O,QAAQ,MAAM,IAAI9D,EAAEge,EAAE,CAAC,EAAE/e,EAAE,CAAC+rC,IAAI3rC,EAAEqF,SAAS1F,IAAIqC,EAAE,eAAe7C,EAAEwB,EAAExB,EAAEzC,MAAMsC,SAAsB,gBAAgBmvC,GAAG,CAAC9oC,SAAS1F,EAAE0uC,QAAQhvC,GAAGF,EAAEzC,MAAMsC,eAAU,GAAQkC,EAAE7B,EAAEuuC,GAAG1tC,EAAE+C,EAAE5D,EAAEsf,EAAE,CAACgtB,IAAI3rC,EAAEqF,SAAS1F,EAAEy7B,UAAUl7B,GAAGuC,GAAGA,EAAe,OAAO,gBAAgBJ,EAAEK,SAAS,CAACpG,MAAM,CAACmvC,QAAQzrC,EAAE0rC,SAASnsC,IAAiB,gBAAgB2B,EAAE+B,EAAEjB,GAAG,CAAC,OAAO,IAAI,CAAC,MAAMusC,GAAG,KAAK,MAAM3tC,EAAEM,IAAI,IAAIN,EAAE,MAAM,IAAIe,MAAM,8JAA8J,OAAOf,EAAEyE,UAAUmpC,GAAG,KAAK,MAAM,IAAI7sC,MAAM,wEAAuE,EAAG8sC,GAAG,KAAK,MAAM7tC,EAAEoB,IAAI,IAAIpB,EAAE,MAAM,IAAIe,MAAM,4JAA4J,MAAM/B,EAAE2uC,KAAK5uC,EAAEsB,EAAEL,EAAE8qC,SAAS9rC,EAAEgO,UAAU,OAAOjO,EAAEA,EAAEytB,OAAO,MAAMshB,GAAG9tC,IAAI,IAAIA,EAAE,MAAM,IAAIe,MAAM,4EAA4E,MAAM/B,EAAEoC,IAAI,IAAIpC,EAAE,MAAM,IAAI+B,MAAM,2JAA2J,MAAMhC,EAAE4uC,KAAKlvC,EAAEH,EAAE0B,EAAEhB,EAAE6rC,SAASzrC,EAAEiB,EAAE5B,EAAEM,EAAEiO,UAAU,OAAO5N,EAAE2e,EAAE,CAAC,EAAE3e,EAAEotB,OAAO,CAACue,IAAI3rC,EAAE2rC,IAAIt4B,KAAKzS,IAAI,yECIxrV,MAAM+tC,EAAc,IAAIrvC,IAClBsvC,EAAwB,IAAItvC,IAU3B,SAASuvC,EAAwBjhC,GACtC,IAAIkhC,EAAWH,EAAY9tC,IAAI+M,GAI/B,OAHKkhC,IACHA,EAAWF,EAAsB/tC,IAAI+M,EAASuN,gBAEzC2zB,CACT,IAdUttC,SAAQstC,IACZA,EAASC,WACXH,EAAsBntC,IAAIqtC,EAASE,SAAUF,GAE7CH,EAAYltC,IAAIqtC,EAASE,SAAUF,EACrC,6ICVK,MAAMG,EAAsB,CACjCluC,GAAI,mBACJuvB,MAAO,CACLxb,SAAU,WACV9D,IAAK,EACLuZ,MAAO,EACPrZ,OAAQ,EACRg+B,QAAS,EACTC,SAAU,SACVC,KAAM,mBACNC,WAAY,SACZC,OAAQ,GAEV,YAAa,YACb,cAAe,sBCHjB,SAASC,EAAc3hC,GACrB,MAAMkhC,GAAWD,EAAAA,EAAAA,GAAwBjhC,IACnC,KAAE2F,EAAI,OAAED,GAAWlO,OAAOC,SAEhC,OAAgB,MAAZypC,IACF1pC,OAAOoqC,WAAWV,EAASW,OAASn8B,EAASC,IACtC,EAIX,CAGA,IAAIm8B,EAAY,GAEhBtqC,OAAOQ,iBAAiB,sBAAsByG,IACxC,6BAA6BmQ,KAAKnQ,EAAMsjC,SACtCD,IACFtqC,OAAOC,SAASuI,SAAW8hC,EAE/B,IAGF,MAAME,EAAmBA,CAACvqC,EAAUilC,KAC7BiF,EAAclqC,EAASuI,YAC1B8hC,EAAYrqC,EAASuI,UACrB/H,EAAAA,EAAAA,GAAU,mBAAoB,CAAER,WAAUilC,iBAC5C,EAGIx3B,EAAgBA,CAACzN,EAAUilC,KAC1BiF,EAAclqC,EAASuI,YAC1B/H,EAAAA,EAAAA,GAAU,gBAAiB,CAAER,WAAUilC,gBAOzC,EAGIrtB,EAAW,SAACvV,EAAI/L,GAIpB,QAJ2B,IAAPA,IAAAA,EAAU,CAAC,GAIb,iBAAP+L,EAET,YADAmoC,EAAAA,cAAc5yB,SAASvV,GAIzB,MAAM,SAAEkG,EAAQ,OAAE0F,EAAM,KAAEC,IAASu8B,EAAAA,EAAAA,IAAUpoC,GACvConC,GAAWD,EAAAA,EAAAA,GAAwBjhC,GAUzC,GANIkhC,IACFpnC,EAAKonC,EAASW,OAASn8B,EAASC,GAK9BnO,OAAOe,aAET,YADAf,OAAOC,SAAWuI,EAAW0F,EAASC,GAMxC,MAAMw8B,EAAYpjC,YAAW,KAC3BqjC,EAAAA,EAAQC,KAAK,6BAA8B,CAAEriC,cAC7C/H,EAAAA,EAAAA,GAAU,uBAAwB,CAChCR,SAAUD,OAAOC,UACjB,GACD,KAEHsI,EAAAA,GAAO3S,SAAS4S,EAAW0F,GAAQrX,MAAKyR,IAOtC,IAAKA,GAAiBA,EAAclE,SAAW0mC,EAAAA,GAAmBvuC,MAIhE,OAHAyD,OAAOgP,QAAQE,aAAa,CAAC,EAAG,GAAIjP,SAASwW,MAC7CzW,OAAOC,SAAWuI,OAClBmL,aAAag3B,GAM8BriC,GAEzCA,EAAck6B,KAAKuI,yBACnB/qC,OAAOgrC,4BAIL,kBAAmB5qC,WACoB,OAAvCA,UAAUC,cAAcS,YACqB,cAA7CV,UAAUC,cAAcS,WAAWD,OAEnCT,UAAUC,cAAcS,WAAWmqC,YAAY,CAC7CC,UAAW,uBAIflrC,OAAOC,SAAWuI,EAAW0F,EAASC,IAG1Cg9B,EAAAA,EAAAA,UAAc7oC,EAAI/L,GAClBod,aAAag3B,EAAU,GAE3B,EAEA,SAAS74B,EAAmBG,EAAenS,GAAiB,IAAf,SAAEG,GAAUH,EACvD,MAAM,SAAE0I,EAAQ,KAAE2F,GAASlO,EACrB9J,GAAUsK,EAAAA,EAAAA,GAAU,qBAAsB,CAC9CwR,kBAEAzJ,WACA0J,YAAa,CAAEjS,YACf6kC,uBAAwB9uC,GAAQ,CAC9B,EAGA4C,KAAK4Y,cAAchT,KAAKxI,EAAMA,EAAK4B,QAGvC,GAAIzB,EAAQM,OAAS,EAGnB,OAAON,EAAQA,EAAQM,OAAS,GAGlC,GAAIwb,EAAiB,CACnB,MACEhS,UAAYuI,SAAU4iC,IACpBn5B,EACJ,GAAIm5B,IAAgB5iC,EAGlB,OAAO2F,EAAOmE,UAAUnE,EAAKyL,MAAM,IAAM,CAAC,EAAG,EAEjD,CACA,OAAO,CACT,CAYC,IAEKyxB,EAAc,SAAA7yC,GAClB,SAAA6yC,EAAY/zC,GAAQ,IAADqM,EAEuB,OADxCA,EAAAnL,EAAAM,KAAA,KAAMxB,IAAM,MACPg0C,gBAAkB5rC,EAAAA,YAAiBiE,CAC1C,EAAC8zB,EAAAA,EAAAA,GAAA4T,EAAA7yC,GAAA,IAAAgM,EAAA6mC,EAAArzC,UAwBA,OAxBAwM,EAEDG,mBAAA,SAAmBC,EAAW+nB,GAC5Bve,uBAAsB,KACpB,IAAIm9B,EAAW,eAAe3yC,KAAKtB,MAAM2I,SAASuI,WAC9C1G,SAAS0pC,QACXD,EAAWzpC,SAAS0pC,OAEtB,MAAMC,EAAe3pC,SAASq+B,iBAAiB,4BAC3CsL,GAAgBA,EAAah1C,SAC/B80C,EAAWE,EAAa,GAAGvR,aAE7B,MAAMwR,EAAkB,gBAAgBH,IACxC,GAAI3yC,KAAK0yC,gBAAgBhmC,QAAS,CACR1M,KAAK0yC,gBAAgBhmC,QAAQqmC,YAC7BD,IACtB9yC,KAAK0yC,gBAAgBhmC,QAAQqmC,UAAYD,EAE7C,IAEJ,EAAClnC,EAEDgD,OAAA,WACE,OAAO9H,EAAAA,cAAA,MAAA1I,OAAAoK,OAAA,GAASyoC,EAAmB,CAAE9rC,IAAKnF,KAAK0yC,kBACjD,EAACD,CAAA,CA5BiB,CAAS3rC,EAAAA,WA+B7B,MAAMksC,EAAuBA,CAAC1G,EAAc2G,KAAkB,IAADC,EAAAC,EAC3D,OAAI7G,EAAazuB,OAASo1B,EAAap1B,OAInCyuB,SAAmB,QAAP4G,EAAZ5G,EAAcrkC,aAAK,IAAAirC,OAAP,EAAZA,EAAqBl0C,QAAQi0C,SAAmB,QAAPE,EAAZF,EAAchrC,aAAK,IAAAkrC,OAAP,EAAZA,EAAqBn0C,IAI1C,EAGd,IACMo0C,EAAY,SAAAv/B,GAChB,SAAAu/B,EAAY10C,GAAQ,IAADoO,EAEqB,OADtCA,EAAA+G,EAAA3T,KAAA,KAAMxB,IAAM,KACZkzC,EAAiBlzC,EAAM2I,SAAU,MAAKyF,CACxC,EAAC+xB,EAAAA,EAAAA,GAAAuU,EAAAv/B,GAAA,IAAAw/B,EAAAD,EAAAh0C,UA2BA,OA3BAi0C,EAEDxnC,kBAAA,WACEiJ,EAAc9U,KAAKtB,MAAM2I,SAAU,KACrC,EAACgsC,EAEDC,sBAAA,SAAsBvf,GACpB,QAAIif,EAAqBhzC,KAAKtB,MAAM2I,SAAU0sB,EAAU1sB,YACtDuqC,EAAiB7d,EAAU1sB,SAAUrH,KAAKtB,MAAM2I,WACzC,EAGX,EAACgsC,EAEDtnC,mBAAA,SAAmBC,GACbgnC,EAAqBhnC,EAAU3E,SAAUrH,KAAKtB,MAAM2I,WACtDyN,EAAc9U,KAAKtB,MAAM2I,SAAU2E,EAAU3E,SAEjD,EAACgsC,EAEDzkC,OAAA,WACE,OACE9H,EAAAA,cAACA,EAAAA,SAAc,KACZ9G,KAAKtB,MAAMsC,SACZ8F,EAAAA,cAAC2rC,EAAc,CAACprC,SAAUA,WAGhC,EAAC+rC,CAAA,CA/Be,CAAStsC,EAAAA,mCCxN3B,SAASysC,EAAevxC,EAAGC,GACzB,IAAK,IAAItD,KAAKqD,EACZ,KAAMrD,KAAKsD,GAAI,OAAO,EACvB,IAAK,IAAIuxC,KAAMvxC,EACd,GAAID,EAAEwxC,KAAQvxC,EAAEuxC,GAAK,OAAO,EAC7B,OAAO,CACV,CC8GA,MAlHqB,SAAA5zC,GACnB,SAAA6zC,EAAY/0C,GAAQ,IAADqM,EACjBA,EAAAnL,EAAAM,KAAA,OAAO,KACP,MAAM,SAAEmH,EAAQ,cAAEqI,GAAkBhR,EAQnC,OAPDqM,EAAK9C,MAAQ,CACXZ,SAAU,IAAKA,GACfqI,cACEA,GACAC,EAAAA,GAAO1S,aAAaoK,EAASuI,SAAWvI,EAASiO,OAAQ,CACvDo+B,kBAAkB,KAEvB3oC,CACH,EAAC8zB,EAAAA,EAAAA,GAAA4U,EAAA7zC,GAAA6zC,EAEM/nC,yBAAP,SAA+BxE,EAAeyE,GAAY,IAA1B,SAAEtE,GAAUH,EAC1C,GAAIyE,EAAUtE,SAASwW,OAASxW,EAASwW,KAAM,CAQ7C,MAAO,CACLnO,cARoBC,EAAAA,GAAO1S,aAC3BoK,EAASuI,SAAWvI,EAASiO,OAC7B,CACEo+B,kBAAkB,IAMpBrsC,SAAU,IAAKA,GAEnB,CAEA,MAAO,CACLA,SAAU,IAAKA,GAEnB,EAAC,IAAAuE,EAAA6nC,EAAAr0C,UA+EA,OA/EAwM,EAED+nC,cAAA,SAAcC,GACZjkC,EAAAA,GAAO3S,SAAS42C,GAAS31C,MAAKyR,IACxBA,GAAiBA,EAAclE,SAAW0mC,EAAAA,GAAmBvuC,MAC/D3D,KAAK6M,SAAS,CACZxF,SAAU,IAAKD,OAAOC,UACtBqI,mBAGFtI,OAAOgP,QAAQE,aAAa,CAAC,EAAG,GAAIjP,SAASwW,MAC7CzW,OAAOC,SAAWusC,EACpB,GAEJ,EAAChoC,EAED0nC,sBAAA,SAAsBvf,EAAW/lB,GAE/B,OAAKA,EAAU0B,cAkBX1P,KAAKiI,MAAMyH,gBAAkB1B,EAAU0B,gBAIzC1P,KAAKiI,MAAMyH,cAAc0tB,YAAcpvB,EAAU0B,cAAc0tB,YAK7Dp9B,KAAKiI,MAAMyH,cAAcI,OAAS9B,EAAU0B,cAAcI,SAM5D9P,KAAKiI,MAAMZ,SAASrI,MAAQgP,EAAU3G,SAASrI,MAC/CgP,EAAU0B,cAAck6B,OACvB57B,EAAU0B,cAAck6B,KAAKiK,YAC5B7lC,EAAU0B,cAAck6B,KAAKv0B,ODhFrC,SAA0BxV,EAAUk0B,EAAW/lB,GAC7C,OAAOulC,EAAe1zC,EAASnB,MAAOq1B,IAAcwf,EAAe1zC,EAASoI,MAAO+F,EACpF,CCkFU8lC,CAAe9zC,KAAM+zB,EAAW/lB,OAvCrChO,KAAK2zC,cACH5f,EAAU1sB,SAASuI,SAAWmkB,EAAU1sB,SAASiO,SAE5C,EAqCX,EAAC1J,EAEDgD,OAAA,WAiBE,OAAO5O,KAAKtB,MAAMsC,SAAShB,KAAKiI,MAClC,EAACwrC,CAAA,CA/GkB,CAAS3sC,EAAAA,+BC6B9B,MAAM6I,EAAS,IAAIokC,EAAAA,GAAWC,KAA2B5sC,OAAO6sC,WAChEC,EAAAA,EAAAA,IAAUvkC,GACVA,EAAOwkC,aAAatsC,EAAAA,GAEpB,MAAM,OAAE+G,EAAM,QAAEwlC,IAAYzL,EAAAA,EAAAA,KAE5BvhC,OAAO4sC,cAAgBA,EACvB5sC,OAAOitC,WAAarC,EAAAA,EACpB5qC,OAAOktC,UAAYC,EAAAA,GH4HjB1C,EAAAA,cAAc1E,QAAO/vC,IACnBA,EAAKiK,SAASsjC,OAASvtC,EAAKutC,MAAM,IAGpCvjC,OAAOotC,QAAU9qC,GAAMuV,EAASvV,EAAI,CAAEjD,SAAS,IAC/CW,OAAOoqC,WAAa9nC,GAAMuV,EAASvV,EAAI,CAAEjD,SAAS,IAClDW,OAAOqtC,YAAc,CAAC/qC,EAAI/L,IAAYshB,EAASvV,EAAI/L,GG9HrD,MAAM+2C,EAAmB,wCAEzBC,EAAAA,EAAAA,GAAe,iBAAiB12C,MAAK,MAG/B4J,EAAAA,EAAAA,GAAU,yBAAyBjK,OAAOi+B,SAASh+B,OAAS,GAC9Df,EAAQ,KAWV,MAAM83C,EAAel2C,GACnBoI,EAAAA,cAAC+tC,EAAAA,YAAYnwC,SAAQ,CACnBpG,MAAO,CACLmvC,QAAS,IACTC,SAAU,MAGZ5mC,EAAAA,cAACyiC,EAAAA,EAAiB7qC,IAIhBo2C,EAAchuC,EAAAA,cAAoB,CAAC,GAEnC42B,EAAgB,CACpBI,kBAAmB,WACpB,IAEKiX,EAAU,SAAAn1C,GAAA,SAAAm1C,IAAA,OAAAn1C,EAAAW,MAAA,KAAAC,YAAA,KAiCb,OAjCaq+B,EAAAA,EAAAA,GAAAkW,EAAAn1C,GAAAm1C,EAAA31C,UACdwP,OAAA,WACE,MAAM,SAAE5N,GAAahB,KAAKtB,MAC1B,OACEoI,EAAAA,cAACkuC,EAAAA,SAAQ,MACN9tC,IAAA,IAAC,SAAEG,GAAUH,EAAA,OACZJ,EAAAA,cAAC2sC,EAAe,CAACpsC,SAAUA,IACxB2F,IAAkC,IAAjC,cAAE0C,EAAa,SAAErI,GAAU2F,EAC3B,MAAMu7B,GAAqB0M,EAAAA,EAAAA,MACrBC,GAAeC,EAAAA,EAAAA,MAErB,OACEruC,EAAAA,cAACkiC,EAAAA,EAAmBtkC,SAAQ,CAACpG,MAAOiqC,GAClCzhC,EAAAA,cAAC2N,EAAAA,GAAc/P,SAAQ,CAACpG,MAAOo/B,GAC7B52B,EAAAA,cAAC0N,EAAAA,GAAqB9P,SAAQ,CAACpG,MAAO42C,GACpCpuC,EAAAA,cAAC4N,EAAAA,GAAiBhQ,SAAQ,CACxBpG,MAAOoR,EAAck6B,KAAKjN,WAE1B71B,EAAAA,cAACguC,EAAYpwC,SAAQ,CACnBpG,MAAO,CAAEoR,gBAAerI,aAEvBrG,MAKmB,GAGlB,GAI1B,EAAC+zC,CAAA,CAjCa,CAASjuC,EAAAA,WAoCnBsuC,EAAe,SAAAvhC,GAAA,SAAAuhC,IAAA,OAAAvhC,EAAAtT,MAAA,KAAAC,YAAA,KAsClB,OAtCkBq+B,EAAAA,EAAAA,GAAAuW,EAAAvhC,GAAAuhC,EAAAh2C,UACnBwP,OAAA,WACE,OACE9H,EAAAA,cAACguC,EAAYO,SAAQ,MAClB5mC,IAAA,IAAC,cAAEiB,EAAa,SAAErI,GAAUoH,EAAA,OAC3B3H,EAAAA,cAACssC,EAAY,CAAC/rC,SAAUA,GACtBP,EAAAA,cAACuQ,EAAAA,GAAa,CACZhQ,SAAUA,EACV6R,mBAAoBA,GAEpBpS,EAAAA,cAACwuC,EAAAA,OAAM,CACL5H,SAAU6H,GACVluC,SAAUA,EACVtE,GAAG,wBAEH+D,EAAAA,cAAC8tC,EAAYx2C,OAAAoK,OAAA,CACX6M,KAC8B,cAA5B3F,EAAck6B,KAAKv0B,MACS,cAA5B3F,EAAck6B,KAAKv0B,MACfmgC,EAAAA,EAAAA,GAAYnuC,EAASuI,SAAU2lC,IAC/BvI,WAEIt9B,EAAck6B,KAAKiK,WACnBnkC,EAAck6B,KAAKv0B,MACnBsO,MAAM,KAAK,KAGjB3jB,KAAKtB,MAAK,CACd2I,SAAUA,EACVqI,cAAeA,GACXA,EAAcI,SAIX,GAIvB,EAACslC,CAAA,CAtCkB,CAAStuC,EAAAA,WAyC9B,MAAM,SAAE2uC,EAAUpuC,SAAUquC,GAAetuC,OAYzCquC,GACAF,GAAgBE,IACdC,EAAW9lC,UAAY6lC,EAASl4B,SAAS,KAAOm4B,EAAWpgC,OAAS,OAEpE3F,EAAOgmC,eAAcH,EAAAA,EAAAA,GAAYE,EAAW9lC,SAAU2lC,MACtDE,EAASroB,MAAM,6BACfqoB,EAASroB,MAAM,+CAGjBnO,EAAAA,EAAAA,UACEs2B,GACEE,GACEA,EAASl4B,SAAS,KAA2B,GAApBm4B,EAAWpgC,QACtCogC,EAAWngC,KACb,CACE9O,SAAS,IAMf,MAAMmvC,EAAoBA,KACxB,IACE,OAAOnsB,cACT,CAAE,MACA,OAAO,IACT,GAGF8qB,EAAAA,GAAav3C,SAAS04C,EAAW9lC,SAAW8lC,EAAWpgC,QAAQrX,MAAK2rC,IAAS,IAADiM,EAC1E,MAAMpsB,EAAiBmsB,IAEvB,GACEhM,SAAU,QAANiM,EAAJjM,EAAMA,YAAI,IAAAiM,GAAVA,EAAY1D,wBACZvI,EAAKA,KAAKuI,yBAA2B/qC,OAAOgrC,4BAI1C,kBAAmB5qC,WACoB,OAAvCA,UAAUC,cAAcS,YACqB,cAA7CV,UAAUC,cAAcS,WAAWD,OAEnCT,UAAUC,cAAcS,WAAWmqC,YAAY,CAC7CC,UAAW,uBAUX7oB,GAAgB,CAGlB,KAFgE,MAA7CA,EAAeC,QAAQgrB,IAKxC,OAFAjrB,EAAeI,QAAQ6qB,EAAkB,UACzCttC,OAAOC,SAASgB,QAAO,EAG3B,CAOF,GAJIohB,GACFA,EAAeqsB,WAAWpB,IAGvB9K,GAAQA,EAAKp+B,SAAW0mC,EAAAA,GAAmBvuC,MAAO,CACrD,MAAMgB,EAAU,sBAAsB+wC,EAAW9lC,0CAIjD,GAAIg6B,GAAQA,EAAKtjC,MAEf,MADAW,QAAQX,MAAM3B,GACRilC,EAAKtjC,MAGb,MAAM,IAAI3C,MAAMgB,EAClB,CAEA,MAAMoxC,GAAWluC,EAAAA,EAAAA,GACf,kBACA,CAAEV,QAASL,EAAAA,cAACsuC,EAAe,OAC3BtuC,EAAAA,cAACsuC,EAAe,OAChBY,IAAiB,IAAhB,OAAEt4C,GAAQs4C,EACT,MAAO,CAAE7uC,QAASzJ,EAAQ,IAE5BgnB,MAEIuxB,EAAM,WACV,MAAMC,EAAsBpvC,EAAAA,QAAa,GAazC,OAXAA,EAAAA,WAAgB,KACTovC,EAAoBxpC,UACvBwpC,EAAoBxpC,SAAU,EAC1BypC,YAAYC,MACdD,YAAYC,KAAK,0BAGnBvuC,EAAAA,EAAAA,GAAU,yBACZ,GACC,IAEIf,EAAAA,cAACiuC,EAAU,KAAEgB,EACtB,EAEMM,EAAUntC,SAASC,eAAe,wBAIxC,IAAImtC,EAAkB1nC,EAClBynC,GAAWA,EAAQr1C,SAASnD,SAC9By4C,EAAkBlC,GAGpB,MAAMmC,GAAW1uC,EAAAA,EAAAA,GACf,8BACAtB,EACA+vC,GACA,GAEF,SAASE,IACP,MAAMC,EACc,oBAAXrvC,OACH8B,SAASC,eAAe,aACxB,KAENotC,EAASzvC,EAAAA,cAACmvC,EAAG,MAAKQ,EACpB,CAIA,MAAMC,EAAMxtC,SACZ,GACqB,aAAnBwtC,EAAIC,YACgB,YAAnBD,EAAIC,aAA6BD,EAAI1tB,gBAAgB4tB,SAEtDjoC,YAAW,WACT6nC,GACF,GAAG,OACE,CACL,MAAMloC,EAAU,WACdooC,EAAI/8B,oBAAoB,mBAAoBrL,GAAS,GACrDlH,OAAOuS,oBAAoB,OAAQrL,GAAS,GAE5CkoC,GACF,EAEAE,EAAI9uC,iBAAiB,mBAAoB0G,GAAS,GAClDlH,OAAOQ,iBAAiB,OAAQ0G,GAAS,EAC3C,CAEM,GACN,0PClUJ,MAyDMuoC,EAzDU,SAAUC,GACxB,GAAwB,oBAAb5tC,SACT,OAAO,EAET,MAAM6tC,EAAW7tC,SAASnI,cAAc,QACxC,IACE,GAAIg2C,EAASC,SAAgD,mBAA9BD,EAASC,QAAQC,SAC9C,OAAOF,EAASC,QAAQC,SAASH,EAErC,CAAE,MAAOI,GACP,OAAO,CACT,CACA,OAAO,CACT,CA4CkCC,CAAQ,YA1Cb,SAAU3H,EAAK7xC,GAC1C,OAAO,IAAIO,SAAQ,CAACC,EAASi5C,KAC3B,GAAwB,oBAAbluC,SAET,YADAkuC,IAIF,MAAM7tC,EAAOL,SAASnI,cAAc,QACpCwI,EAAK83B,aAAa,MAAO,YACzB93B,EAAK83B,aAAa,OAAQmO,GAE1BpxC,OAAOusB,KAAKhtB,GAAS6F,SAAQxE,IAC3BuK,EAAK83B,aAAariC,EAAKrB,EAAQqB,GAAK,IAGtCuK,EAAK8tC,OAASl5C,EACdoL,EAAK+tC,QAAUF,GAGbluC,SAASquC,qBAAqB,QAAQ,IACtCruC,SAASE,kBAAkB,UAAU,GAAG6T,YAC5BskB,YAAYh4B,EAAK,GAEnC,EAE4B,SAAUimC,GACpC,OAAO,IAAItxC,SAAQ,CAACC,EAASi5C,KAC3B,MAAMI,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOlI,GAAK,GAErBgI,EAAIH,OAAS,KACQ,MAAfG,EAAIhsC,OACNrN,IAEAi5C,GACF,EAGFI,EAAIG,KAAK,KAAK,GAElB,EAMMC,EAAa,CAAC,EAkBpB,MAhBiB,SAAUpI,EAAK7xC,GAC9B,OAAO,IAAIO,SAAQC,IACby5C,EAAWpI,GACbrxC,IAIF04C,EAA0BrH,EAAK7xC,GAC5BM,MAAK,KACJE,IACAy5C,EAAWpI,IAAO,CAAI,IAEvBlnC,OAAM,QAAS,GAEtB,sBCrEO,MAAM4pC,EAAqB,CAIhCvuC,MAAO,QAIPk0C,QAAS,WAWLC,EAAoBlE,IACxB,MAAOv+B,EAAM0iC,GAAenE,EAAQjwB,MAAM,KAPZyF,MAS9B,MAAO,cADoB,MAAT/T,EAAe,SAPjC+T,EAAa,OADiBA,EAQqC/T,GAP7D,GAAa+T,EAAEpI,MAAM,GAAKoI,GAC1BujB,SAAS,KAAOvjB,EAAEpI,MAAM,GAAI,GAAKoI,mBAQrC2uB,EAAc,IAAIA,IAAgB,IAClC,EAOEC,EAAmBpE,GAAWA,EAAQlpB,WAAW,MAEvD,SAASutB,EAAQzI,EAAKxX,GACpB,YAD0B,IAANA,IAAAA,EAAS,OACtB,IAAI95B,SAAQC,IACjB,MAAMq5C,EAAM,IAAIC,eAChBD,EAAIE,KAAK1f,EAAQwX,GAAK,GACtBgI,EAAIU,mBAAqB,KACD,GAAlBV,EAAIb,YACNx4C,EAAQq5C,EACV,EAEFA,EAAIG,KAAK,KAAK,GAElB,CAEA,MAgBMQ,EAAY,+BAEZC,EAAkB,SAACnE,EAAU7W,EAAkBqK,GAAU,IAAD4Q,OAAlB,IAATjb,IAAAA,EAAY,MAC7C,MAAMwM,EAAO,CACX0O,mBAAoBrE,EAASqE,mBAC7BjjC,KAAM4+B,EAAS5+B,KACf88B,uBAAwB8B,EAAS9B,uBACjC0B,UAAWI,EAASJ,UACpB0E,kBAAmBtE,EAASsE,kBAC5BC,mBAAoBvE,EAASuE,mBAC7B7b,UAA6B,QAApB0b,EAAEpE,EAAStX,iBAAS,IAAA0b,EAAAA,EAAI,CAAC,GAGpC,MAAO,CACLjb,YACAqK,OACA33B,KAAMmkC,EAASv2C,OACfksC,OAEJ,EAEA,SAAS6O,EAAgBnN,GACvB,OAAO,IAAIptC,SAAQC,IACjB,IACE,MAAMT,EAAS4tC,EAAS/lC,WACxBpH,EAAQT,EACV,CAAE,MAAOw5C,GACP,IACE94C,OAAOsK,eAAexI,KAAKg3C,EAAK,eAChC94C,OAAOsK,eAAexI,KAAKg3C,EAAK,WAMhC,MAAMA,EAJNvoC,YAAW,KACT8pC,EAAgBnN,GAAUrtC,KAAKE,EAAQ,GACtC,IAIP,IAEJ,CAEO,IAAMu6C,EAAU,WACrB,SAAAA,EAAYC,EAAeC,GAAa,KAgCxCC,wBAA0B,IAAIv3C,IAhB5BtB,KAAK84C,OAAS,IAAIx3C,IAClBtB,KAAK+4C,WAAa,IAAIz3C,IACtBtB,KAAKg5C,cAAgB,CAAC,EACtBh5C,KAAKi5C,WAAa,IAAI33C,IACtBtB,KAAKk5C,mBAAqB,IAAI53C,IAC9BtB,KAAKm5C,aAAe,IAAI73C,IACxBtB,KAAKo5C,gBAAkB,IAAI93C,IAC3BtB,KAAKq5C,SAAW,IAAI/3C,IACpBtB,KAAKs5C,wBAAyB,EAC9Bt5C,KAAKu5C,eAAiB,GACtBv5C,KAAKw5C,kBAAoB,IAAI7+B,IAC7B3a,KAAKy5C,kBAAoB,IAAI9+B,IAC7B3a,KAAK24C,cAAgBA,GACrBe,EAAAA,EAAAA,IAAcd,EAChB,CAAC,IAAAhtC,EAAA8sC,EAAAt5C,UAgrBA,OAhrBAwM,EAID+tC,YAAA,SAAYnK,GACV,IAAIoK,EAAkB55C,KAAK64C,wBAAwBh2C,IAAI2sC,GAQvD,OANKoK,IACHA,EAAkB3B,EAAQzI,EAAK,OAC/BxvC,KAAK64C,wBAAwBp1C,IAAI+rC,EAAKoK,IAIjCA,EACJ37C,MAAKqtC,IACJtrC,KAAK64C,wBAAwBp4B,OAAO+uB,GAC7BlE,KAERhjC,OAAM4uC,IAEL,MADAl3C,KAAK64C,wBAAwBp4B,OAAO+uB,GAC9B0H,CAAG,GAEf,EAACtrC,EAEDuoC,aAAA,SAAatsC,GACX7H,KAAK6H,UAAYA,EACjB7H,KAAK65C,iBAAmBhyC,EAAU,0BAA0BiyC,MAAK93C,GAAKA,GACxE,EAAC4J,EAEDmuC,kBAAA,SAAkBC,GAChB,MAAM,SAAEvE,EAAQ,QAAEwE,EAAU,GAAMD,EAC5BxK,EAAMsI,EAAkBrC,GAC9B,OAAOz1C,KAAK25C,YAAYnK,GAAKvxC,MAAKu5C,IAChC,MAAM,OAAEhsC,EAAM,aAAE0uC,GAAiB1C,EAGjC,GAAe,MAAXhsC,EACF,IACE,MAAM2uC,EAAc53C,KAAKC,MAAM03C,GAC/B,QAAyB3zC,IAArB4zC,EAAY9kC,KACd,MAAM,IAAI1R,MAAM,iCAGlB,MAAMo0C,EAActC,EAAS9xB,MAAM,KAAK,GAKxC,OAJIo0B,IAAgBoC,EAAY9kC,KAAKkI,SAASw6B,KAC5CoC,EAAY9kC,MAAQ,IAAI0iC,KAGnB35C,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmB2F,QAC3B7M,QAASmP,GAEb,CAAE,MAAOjD,GACP,CAKJ,OAAe,MAAX1rC,GAA6B,MAAXA,EAEH,cAAbiqC,GAAyC,cAAbA,EACvBr3C,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmBvuC,QAMxB3D,KAAK+5C,kBACV37C,OAAOoK,OAAOwxC,EAAS,CAAEvE,SAAU,YAAa2E,UAAU,KAK/C,MAAX5uC,EACKxL,KAAK+5C,kBACV37C,OAAOoK,OAAOwxC,EAAS,CACrBvE,SAAU,YACV4E,qBAAqB,KAMvBJ,EAAU,EACLj6C,KAAK+5C,kBACV37C,OAAOoK,OAAOwxC,EAAS,CAAEC,QAASA,EAAU,KAKzC77C,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmBvuC,OAC3B,GAEN,EAACiI,EAED0uC,0BAAA,SAA0BN,GACxB,MAAM,SAAEvE,EAAQ,QAAEwE,EAAU,GAAMD,EAC5BxK,EAAMsI,EAAkBrC,GAAUhvC,QAAQ,QAAS,aACzD,OAAOzG,KAAK25C,YAAYnK,GAAKvxC,MAAKu5C,IAChC,MAAM,OAAEhsC,EAAM,aAAE0uC,GAAiB1C,EAGjC,GAAe,MAAXhsC,EACF,IACE,OAAOpN,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmB2F,QAC3B7M,QAASkP,GAEb,CAAE,MAAOhD,GACP,CAKJ,OAAe,MAAX1rC,GAA6B,MAAXA,EAEH,cAAbiqC,GAAyC,cAAbA,EACvBr3C,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmBvuC,QAMxB3D,KAAKs6C,0BACVl8C,OAAOoK,OAAOwxC,EAAS,CAAEvE,SAAU,YAAa2E,UAAU,KAK/C,MAAX5uC,EACKxL,KAAKs6C,0BACVl8C,OAAOoK,OAAOwxC,EAAS,CACrBvE,SAAU,YACV4E,qBAAqB,KAMvBJ,EAAU,EACLj6C,KAAKs6C,0BACVl8C,OAAOoK,OAAOwxC,EAAS,CAAEC,QAASA,EAAU,KAKzC77C,OAAOoK,OAAOwxC,EAAS,CAC5BxuC,OAAQ0mC,EAAmBvuC,OAC3B,GAEN,EAACiI,EAED2uC,iBAAA,SAAiB3G,GACf,MAAM6B,GAAW+E,EAAAA,EAAAA,IAAS5G,GAC1B,GAAI5zC,KAAKi5C,WAAWthC,IAAI89B,GAAW,CACjC,MAAMxB,EAAWj0C,KAAKi5C,WAAWp2C,IAAI4yC,GAEnC,OAAOv3C,QAAQC,QAAQ81C,EAE3B,CAEA,OAAOj0C,KAAK+5C,kBAAkB,CAAEtE,aAAYx3C,MAAKg2C,IAC/Cj0C,KAAKi5C,WAAWx1C,IAAIgyC,EAAUxB,GAEvBA,IAEX,EAACroC,EAED6uC,yBAAA,SAAyB7G,GACvB,MAAM6B,GAAW+E,EAAAA,EAAAA,IAAS5G,GAC1B,GAAI5zC,KAAKk5C,mBAAmBvhC,IAAI89B,GAAW,CACzC,MAAMxB,EAAWj0C,KAAKk5C,mBAAmBr2C,IAAI4yC,GAE3C,OAAOv3C,QAAQC,QAAQ81C,EAE3B,CAEA,OAAOj0C,KAAKs6C,0BAA0B,CAAE7E,aAAYx3C,MAAKg2C,IACvDj0C,KAAKk5C,mBAAmBz1C,IAAIgyC,EAAUxB,GAE/BA,IAEX,EAACroC,EAED8uC,kBAAA,SAAkBle,GAChB,GAAIx8B,KAAKm5C,aAAaxhC,IAAI6kB,GAAY,CACpC,MAAM2d,EAAcn6C,KAAKm5C,aAAat2C,IAAI25B,GAC1C,OAAOt+B,QAAQC,QAAQ,CAAEq+B,YAAW2d,eACtC,CAGA,OAAOlC,EADK,eAAiCzb,SACzB,OAAOv+B,MAAK08C,IAC9B,MAAMR,EAAc53C,KAAKC,MAAMm4C,EAAIT,cAGnC,OADAl6C,KAAKm5C,aAAa11C,IAAI+4B,EAAW2d,GAC1B,CAAE3d,YAAW2d,cAAa,GAErC,EAACvuC,EAED+pC,cAAA,SAAc/B,GACZ,OAAO+B,EAAAA,EAAAA,IAAc/B,EACvB,EAEAhoC,EACA5O,SAAA,SAAS42C,GACP,MAAM6B,GAAW+E,EAAAA,EAAAA,IAAS5G,GAC1B,GAAI5zC,KAAK84C,OAAOnhC,IAAI89B,GAAW,CAC7B,MAAM7L,EAAO5pC,KAAK84C,OAAOj2C,IAAI4yC,GAE3B,OAAI7L,EAAKtjC,MACApI,QAAQC,QAAQ,CACrBmI,MAAOsjC,EAAKtjC,MACZkF,OAAQo+B,EAAKp+B,SAIVtN,QAAQC,QAAQyrC,EAAKoB,QAEhC,CAEA,GAAIhrC,KAAK+4C,WAAWphC,IAAI89B,GACtB,OAAOz1C,KAAK+4C,WAAWl2C,IAAI4yC,GAG7B,MAAMmF,EAAmB,CACvB56C,KAAK66C,cACL76C,KAAKu6C,iBAAiB9E,IAOxB,MAAMmE,EAAkB17C,QAAQ48C,IAAIF,GAAkB38C,MAAK88C,IACzD,MAAOC,EAAiBC,EAAkBC,GAAmBH,EAE7D,GACEE,EAAiBzvC,SAAW0mC,EAAmBvuC,QAC/Cu3C,aAAe,EAAfA,EAAiB1vC,UAAW0mC,EAAmBvuC,MAE/C,MAAO,CACL6H,OAAQ0mC,EAAmBvuC,OAI/B,IAAIswC,EAAWgH,EAAiBjQ,QAEhC,MAAM,mBACJsN,EACAC,kBAAmB4C,EAAwB,GAAE,UAC7Cxe,EAAY,CAAC,GACXsX,EAEEmH,EAAc,CAAC,EAEfC,EAAoBpmC,MAAMiV,KAAK,IAAIvP,IAAIvc,OAAOkxB,OAAOqN,KAErD2e,EAAYt6B,IAChB,GAAIhhB,KAAKq5C,SAAS1hC,IAAIqJ,EAAMhe,MAC1B,OAAOhD,KAAKq5C,SAASx2C,IAAIme,EAAMhe,MAC1B,GAAIhD,KAAKo5C,gBAAgBzhC,IAAIqJ,EAAMhe,MACxC,OAAOhD,KAAKo5C,gBAAgBv2C,IAAIme,EAAMhe,MAGxC,MAAMu4C,EAAWv7C,KAAK24C,cAAc33B,EAAMs3B,oBAAoBr6C,MAC5Dm/B,IACE,MAAO,CACLA,WAzYQ/4B,EAyYiB+4B,EAzYX/4B,GAAKA,EAAE3E,SAAY2E,GA0YjCg5B,aAAcrc,EAAMtjB,OAAO2/B,aAC3BjiB,KAAM4F,EAAMtjB,OAAO0d,MA3YX/W,KA4YT,IAUL,OANArE,KAAKo5C,gBAAgB31C,IAAIud,EAAMhe,KAAMu4C,GACrCA,EAASt9C,MAAKV,IACZyC,KAAKq5C,SAAS51C,IAAIud,EAAMhe,KAAMzF,GAC9ByC,KAAKo5C,gBAAgB34B,OAAOO,EAAMhe,KAAK,IAGlCu4C,CAAQ,EAGjB,OAAOr9C,QAAQ48C,IACbO,EAAkB79C,KAAIg/B,GAAax8B,KAAK06C,kBAAkBle,MAC1Dv+B,MAAKu9C,IACL,MAAMC,EAAS,GACTC,GAAwB1xB,EAAAA,EAAAA,GAAOmxB,GAErC,IAAK,MAAM,YAAEhB,EAAW,UAAE3d,KAAep+B,OAAOkxB,OAAOksB,GAAa,CAClEC,EAAOz1C,KAAK,CAAEhD,KAAMw5B,KAAc2d,IAClC,IAAK,MAAMwB,KAAmBxB,EAAY5B,kBACnCmD,EAAyBn+B,SAASo+B,IACrCD,EAAyB11C,KAAK21C,EAGpC,CAEA,MAAMC,EAAoB,CACxB19C,QAAQ48C,IAAIW,EAAOj+C,IAAI89C,IACvBt7C,KAAK24C,cAAcL,EAAoB,SAIvCsD,EAAkB51C,KAAKhG,KAAK24C,cAAcL,IAS5C,MAAMuD,EAAyB39C,QAAQ48C,IAAIc,GAAmB39C,MAC5D69C,IACE,MAAOC,EAAiBC,EAAe1T,GAAiBwT,EAExDV,EAAYa,UAAY,IAAI/6B,KAE5B,IAAK,MAAMg7B,KAAkBH,IACtBG,GAAkBA,aAA0Bv4C,SAC/Cy3C,EAAY5vC,OAAS0mC,EAAmBvuC,MACxCy3C,EAAY90C,MAAQ41C,GAYxB,IAAIxsC,EAEJ,KARI44B,GAAiBA,aAAyB3kC,SAE5Cy3C,EAAY5vC,OAAS0mC,EAAmBvuC,MACxCy3C,EAAY90C,MAAQgiC,GAKlB8S,EAAY5vC,SAAW0mC,EAAmBvuC,MAAO,CAcnD,GAbAy3C,EAAY5vC,OAAS0mC,EAAmB2F,SAER,IAA9BoD,EAAiBb,WACa,KAA9Bc,aAAe,EAAfA,EAAiBd,YAEjBgB,EAAYhB,UAAW,GAEzBnG,EAAW71C,OAAOoK,OAAOyrC,EAAU,CACjC9B,uBAAwB6I,EACpBA,EAAgB7I,uBAChB,KAGkC,iBAA7B+I,aAAe,EAAfA,EAAiBlQ,SAAsB,CAChDt7B,EAAgB0oC,EAAgBnE,EAAU,KAAM+H,GAEhDtsC,EAAci6B,iBAAmBuR,EAAgBlQ,QAEjD,MAAMmR,EAAiB,IAAIC,eAAe,CACxCxrB,KAAAA,CAAM1oB,GACJ,MAAM4nC,EAAK,IAAIuM,YACfn0C,EAAW+2B,QAAQ6Q,EAAGwM,OAAOpB,EAAgBlQ,SAC/C,EACAuR,IAAAA,CAAKr0C,GAEHA,EAAWs0C,OACb,EACAzuC,MAAAA,GAAU,IAGZ,OAAO0qC,GACLxyC,EAAAA,EAAAA,0BAAyBk2C,IACzBl+C,MAAKP,IACLgS,EAAci6B,iBAAmBjsC,EAE1BgS,IAEX,CACEA,EAAgB0oC,EACdnE,EACA3L,EACA0T,EAGN,CAGA,OAAOtsC,CAAa,IAKlB+sC,EAA0Bv+C,QAAQ48C,IACtCY,EAAyBl+C,KAAIm+C,IAE3B,GAAI37C,KAAKg5C,cAAc2C,GAAkB,CACvC,MAAMxB,EAAcn6C,KAAKg5C,cAAc2C,GACvC,MAAO,CAAEA,kBAAiBxB,cAC5B,CAEA,OAAOn6C,KAAK25C,YACV,mBAAqCgC,UAEpC19C,MAAKu5C,IACJ,MAAM2C,EAAc53C,KAAKC,MAAMg1C,EAAI0C,cACnC,MAAO,CAAEyB,kBAAiBxB,cAAa,IAExC7xC,OAAM,KACL,MAAM,IAAI3E,MACR,qCAAuDg4C,UACxD,GACD,KAEN19C,MAAKsqC,IACL,MAAMmU,EAAwB,CAAC,EAO/B,OALAnU,EAAmB/kC,SAAQ0D,IAAuC,IAAtC,gBAAEy0C,EAAe,YAAExB,GAAajzC,EAC1Dw1C,EAAsBf,GAAmBxB,EACzCn6C,KAAKg5C,cAAc2C,GAAmBxB,CAAW,IAG5CuC,CAAqB,IAG9B,OACEx+C,QAAQ48C,IAAI,CAACe,EAAwBY,IAClCx+C,MAAK+O,IAA0C,IAC1Cg+B,GADEt7B,EAAe64B,GAAmBv7B,EAaxC,OAXI0C,IACFs7B,EAAU,IAAKt7B,EAAe64B,sBAC9B6S,EAAYpQ,QAAUA,EACtBgH,EAAAA,EAAQC,KAAK,0BAA2B,CACtCrI,KAAMoB,EACNt7B,cAAes7B,KAInBhrC,KAAK84C,OAAOr1C,IAAIgyC,EAAU2F,GAEtBA,EAAY90C,MACP,CACLA,MAAO80C,EAAY90C,MACnBkF,OAAQ4vC,EAAY5vC,QAIjBw/B,CAAO,IAGf1iC,OAAM4uC,IACE,CACL5wC,MAAO4wC,EACP1rC,OAAQ0mC,EAAmBvuC,SAE7B,GAEN,IAcJ,OAXAi2C,EACG37C,MAAK,KACJ+B,KAAK+4C,WAAWt4B,OAAOg1B,EAAS,IAEjCntC,OAAMhC,IAEL,MADAtG,KAAK+4C,WAAWt4B,OAAOg1B,GACjBnvC,CAAK,IAGftG,KAAK+4C,WAAWt1C,IAAIgyC,EAAUmE,GAEvBA,CACT,EAEAhuC,EACA3O,aAAA,SAAa22C,EAASj2C,QAAO,IAAPA,IAAAA,EAAU,CAAC,GAC/B,MAAM83C,GAAW+E,EAAAA,EAAAA,IAAS5G,GAC1B,GAAI5zC,KAAK84C,OAAOnhC,IAAI89B,GAAW,CAAC,IAADkH,EAC7B,MAAM1I,EAAWj0C,KAAK84C,OAAOj2C,IAAI4yC,GAEjC,GAAIxB,EAASjJ,QACX,OAAOiJ,EAASjJ,QAGlB,GAAW,QAAX2R,EAAIh/C,SAAO,IAAAg/C,GAAPA,EAASjJ,iBACX,MAAO,CACLptC,MAAO2tC,EAAS3tC,MAChBkF,OAAQyoC,EAASzoC,OAGvB,CAEF,EAACI,EAEDgxC,eAAA,SAAenH,GAEb,QAvkBkCoH,MACpC,GACE,eAAgBr1C,gBACgB,IAAzBA,UAAUs1C,WACjB,CACA,IAAKt1C,UAAUs1C,WAAWC,eAAiB,IAAIx/B,SAAS,MACtD,OAAO,EAET,GAAI/V,UAAUs1C,WAAWE,SACvB,OAAO,CAEX,CACA,OAAO,CAAI,EA2jBJH,OAKDr1C,UAAUy1C,YAAa9E,EAAU35B,KAAKhX,UAAUy1C,cAKhDj9C,KAAK84C,OAAOnhC,IAAI89B,GAKtB,EAAC7pC,EAEDsxC,SAAA,SAASzH,GACP,IAAKz1C,KAAK48C,eAAenH,GACvB,MAAO,CACLx3C,KAAME,GAAWA,GAAQ,GACzBg/C,MAAOA,QAGX,GAAIn9C,KAAKw5C,kBAAkB7hC,IAAI89B,GAC7B,MAAO,CACLx3C,KAAME,GAAWA,GAAQ,GACzBg/C,MAAOA,QAIX,MAAMC,EAAQ,CACZj/C,QAAS,KACTi5C,OAAQ,KACRiG,QAAS,MAEXD,EAAMC,QAAU,IAAIn/C,SAAQ,CAACC,EAASi5C,KACpCgG,EAAMj/C,QAAUA,EAChBi/C,EAAMhG,OAASA,CAAM,IAEvBp3C,KAAKu5C,eAAevzC,KAAK,CAACyvC,EAAU2H,IACpC,MAAME,EAAS,IAAIC,gBAgBnB,OAfAD,EAAOE,OAAO51C,iBAAiB,SAAS,KACtC,MAAM0lC,EAAQttC,KAAKu5C,eAAerR,WAAUz5B,IAAA,IAAElN,GAAEkN,EAAA,OAAKlN,IAAMk0C,CAAQ,KAEpD,IAAXnI,GACFttC,KAAKu5C,eAAe5wB,OAAO2kB,EAAO,EACpC,IAGGttC,KAAKs5C,yBACRt5C,KAAKs5C,wBAAyB,EAC9B3qC,YAAW,KACT3O,KAAKy9C,2BAA2B,GAC/B,MAGE,CACLx/C,KAAMA,CAACE,EAASi5C,IAAWgG,EAAMC,QAAQp/C,KAAKE,EAASi5C,GACvD+F,MAAOG,EAAOH,MAAM74C,KAAKg5C,GAE7B,EAAC1xC,EAED6xC,0BAAA,YACuBr2C,OAAO+4B,qBAAmB,CAAKrhB,GAAMnQ,WAAWmQ,EAAI,MAE5D,KACX,MAAM4+B,EAAa19C,KAAKu5C,eAAe5wB,OAAO,EAAG,GAC3Cg1B,EAAaz/C,QAAQ48C,IACzB4C,EAAWlgD,KAAIw4C,IAA2B,IAAzBP,EAAUmI,GAAS5H,EASlC,OANKh2C,KAAKw5C,kBAAkB7hC,IAAI89B,KAC9Bz1C,KAAK6H,UAAU,qBAAsB,CAAE+H,SAAU6lC,IACjDz1C,KAAKw5C,kBAAkBn+B,IAAIo6B,IAIzBz1C,KAAK65C,iBACA+D,EAASz/C,SAAQ,GAGnB6B,KAAK69C,YAAWrD,EAAAA,EAAAA,IAAS/E,IAAWx3C,MAAK,KACzC+B,KAAKy5C,kBAAkB9hC,IAAI89B,KAC9Bz1C,KAAK6H,UAAU,yBAA0B,CAAE+H,SAAU6lC,IACrDz1C,KAAKy5C,kBAAkBp+B,IAAIo6B,IAG7BmI,EAASz/C,SAAQ,EAAK,GACtB,KAIF6B,KAAKu5C,eAAe17C,OACtB8/C,EAAW1/C,MAAK,KACd0Q,YAAW,KACT3O,KAAKy9C,2BAA2B,GAC/B,IAAK,IAGVz9C,KAAKs5C,wBAAyB,CAChC,GAEJ,EAAC1tC,EAEDiyC,WAAA,SAAWpI,GACT,MAAMqI,EAAchG,EAAkBrC,GAsBpC,OAAOsI,EAAeD,EAAa,CACjCjd,YAAa,YACbmd,GAAI,UACH//C,MAAK,IAGN+B,KAAKu6C,iBAAiB9E,IAG5B,EAAC7pC,EAEDqyC,SAAA,SAASrK,GACP5zC,KAAKhD,SAAS42C,EAChB,EAAChoC,EAED7O,2BAAA,SAA2B62C,GACzB,MAAM6B,GAAW+E,EAAAA,EAAAA,IAAS5G,GACpBhK,EAAO5pC,KAAKi5C,WAAWp2C,IAAI4yC,GACjC,GAAI7L,EAAM,CACR,MAAMl6B,EAAgB0oC,EAAgBxO,EAAKoB,SAE3C,MAAM,GAANryB,QAAAqR,EAAAA,EAAAA,GACKk0B,EAAoBxuC,EAAck6B,KAAK0O,qBAAmB,CAC7DR,EAAkBrC,IAEtB,CACE,OAAO,IAEX,EAAC7pC,EAEDuyC,eAAA,SAAevK,GACb,MAAM6B,GAAW+E,EAAAA,EAAAA,IAAS5G,GACpBhK,EAAO5pC,KAAK84C,OAAOj2C,IAAI4yC,GAC7B,OAAQ7L,GAAQA,EAAKwQ,QACvB,EAACxuC,EAEDivC,YAAA,SAAYZ,GACV,YADiB,IAAPA,IAAAA,EAAU,GACbj6C,KAAK25C,YAAY,4BAA8C17C,MACpEu5C,IACE,MAAM,OAAEhsC,EAAM,aAAE0uC,GAAiB1C,EAEjC,IAAI4G,EAEJ,GAAe,MAAX5yC,GAAkByuC,EAAU,EAE9B,OAAOj6C,KAAK66C,YAAYZ,EAAU,GAIpC,GAAe,MAAXzuC,EACF,IACE,MAAM2uC,EAAc53C,KAAKC,MAAM03C,GAC/B,QAA2C3zC,IAAvC4zC,EAAYhI,uBACd,MAAM,IAAIxuC,MAAM,iCAGlBy6C,EAAUjE,CACZ,CAAE,MAAOjD,GACP,CAIJ,OAAOkH,CAAO,GAGpB,EAAC1F,CAAA,CA/sBoB,GAktBvB,MAAMwF,EAAsB5F,IACzBlxC,OAAOi3C,gBAAgB/F,IAAuB,IAAI96C,KACjD8gD,GAASC,GAAkBD,IAGxB,IAkGHz+C,EAlGSk0C,EAAU,SAAAyK,GACrB,SAAAzK,EAAYC,EAAe4E,EAAY3E,GAAW,IAADlpC,EA2B9C,OARDA,EAAAyzC,EAAAt+C,KAAA,MAlBsB,SAACu+C,EAAWC,GAKhC,QAL0C,IAAVA,IAAAA,EAAa,eAKxC1K,EAHH0K,EAAa,cAGgBD,GAC7B,MAAM,IAAI96C,MACR,+DAA+D86C,MAInE,OACEzK,EAAc0K,GAAYD,KAEvBn2C,OAAM4uC,GAAOA,GAEpB,GAEqB0B,IAAW,KAE5B3E,GACFlpC,EAAKkuC,WAAWx1C,KAAI+2C,EAAAA,EAAAA,IAASvG,EAAS5+B,MAAO,CAC3CogC,SAAUxB,EAAS5+B,KACnB21B,QAASiJ,EACTzoC,OAAQ,YAEXT,CACH,EAAC8zB,EAAAA,EAAAA,GAAAkV,EAAAyK,GAAA,IAAAnL,EAAAU,EAAA30C,UAkEA,OAlEAi0C,EAEDwK,WAAA,SAAWpI,GACT,OAAO+I,EAAAp/C,UAAMy+C,WAAU39C,KAAC,KAAAu1C,GAAUx3C,MAAKP,IACrC,GAAIA,EAAO8N,SAAW0mC,EAAmB2F,QACvC,OAAO35C,QAAQC,UAEjB,MAAM81C,EAAWv2C,EAAOstC,QAClByT,EAAYxK,EAASqE,mBACrBqG,EAAgBT,EAAoBO,GAC1C,OAAOvgD,QAAQ48C,IAAI6D,EAAcnhD,IAAIugD,IAAiB9/C,MAAK,IAAMg2C,GAAS,GAE9E,EAACZ,EAEDkH,iBAAA,SAAiB3G,GACf,OAAO4K,EAAAp/C,UAAMm7C,iBAAgBr6C,KAAC,KAAA0zC,GAAS31C,MAAKmd,GACtCA,EAAKg/B,SACHpC,EAAiBpE,GACZx4B,EAIF68B,EAAQrE,EAAS,QAAQ31C,MAAKu5C,GAChB,MAAfA,EAAIhsC,OAIC,CACLA,OAAQ0mC,EAAmBvuC,OAMxByX,IAGJA,GAEX,EAACi4B,EAEDoH,yBAAA,SAAyB7G,GACvB,OAAO4K,EAAAp/C,UAAMq7C,yBAAwBv6C,KAAC,KAAA0zC,GAAS31C,MAAKmd,GAC9CA,EAAKg/B,SACHpC,EAAiBpE,GACZx4B,EAIF68B,EAAQrE,EAAS,QAAQ31C,MAAKu5C,GAChB,MAAfA,EAAIhsC,OAIC,CACLA,OAAQ0mC,EAAmBvuC,OAMxByX,IAGJA,GAEX,EAAC24B,CAAA,CA/FoB,CAAS2E,GAoGzB,MAAMxE,EAAY0K,IACvB/+C,EAAW++C,CAAO,EAGPrK,EAAe,CAC1BtV,QAAS2U,GAAW/zC,EAASq9C,SAAStJ,GAGtC72C,2BAA4B62C,GAC1B/zC,EAAS9C,2BAA2B62C,GACtC52C,SAAU42C,GAAW/zC,EAAS7C,SAAS42C,GAEvC32C,aAAc,SAAC22C,EAASj2C,GAAY,YAAL,IAAPA,IAAAA,EAAU,CAAC,GACjCkC,EAAS5C,aAAa22C,EAASj2C,EAAQ,EACzCu/C,SAAUtJ,GAAW/zC,EAASq9C,SAAStJ,GACvCuK,eAAgBvK,GAAW/zC,EAASs+C,eAAevK,GACnDqK,SAAUrK,GAAW/zC,EAASo+C,SAASrK,GACvCiH,YAAaA,IAAMh7C,EAASg7C,eAG9B,QAEO,SAAS5F,IACd,OAAIp1C,EACKA,EAASm5C,cAET,CAAC,CAEZ,CAEO,SAAS7D,IACd,OAAIt1C,EACKA,EAASw5C,SAET,CAAC,CAEZ,qCCv8BA,IAEIwF,EAASv/C,EAFD,EAAQ,OAMhBw/C,EAAWx/C,EAFD,EAAQ,MAMlBy/C,EAAYz/C,EAFD,EAAQ,OAMnB8/B,EAAa9/B,EAFD,EAAQ,MAMpBuJ,EAAiBvJ,EAFD,EAAQ,OAMxB6/B,EAAc7/B,EAFD,EAAQ,OAMrBsJ,EAAkBtJ,EAFD,EAAQ,OAMzBC,EAAeD,EAFD,EAAQ,OAMtBsgB,EAAkBtgB,EAFD,EAAQ,OAMzB0/C,EAAY1/C,EAFD,EAAQ,OAIvB,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAE/Eq/C,EAAOn/C,QACLo/C,EAASp/C,QACRq/C,EAAUr/C,QACT0/B,EAAW1/B,QACbmJ,EAAenJ,QACZy/B,EAAYz/B,QACRkJ,EAAgBlJ,QACnBH,EAAaG,QACVkgB,EAAgBlgB,QACtBs/C,EAAUt/C,QACFm/C,EAAOn/C,QAAiBo/C,EAASp/C,QAAkBq/C,EAAUr/C,QAAmB0/B,EAAW1/B,QAAiBmJ,EAAenJ,QAAoBy/B,EAAYz/B,QAAwBkJ,EAAgBlJ,QAAqBH,EAAaG,QAAwBkgB,EAAgBlgB,QAAkBs/C,EAAUt/C,8BC3DnUxC,EAAQ4+C,WAAa,CACnB,gCAAiCmD,IAAM,+FACvC,gDAAiDC,IAAM,sFACvD,sDAAuDC,IAAM,gGAC7D,gDAAiDC,IAAM,4EACvD,gDAAiDC,IAAM,gGACvD,wEAAyEC,IAAM,gGAC/E,8DAA+DC,IAAM,+FACrE,kDAAmDC,IAAM,wIACzD,kDAAmDC,IAAM,gGACzD,kDAAmDC,IAAM,0HCP3DxiD,EAAQ,GAAuBA,EAAQ,QAAgB,EACvD,IAAIsiB,EAAiB,EAAQ,MAC7BtiB,EAAQ,GAAgBsiB,EAAepI,cACvC,IAAIuoC,EAAwB,EAAQ,MACpCziD,EAAQ,GAAuByiD,EAAsBzgC,qOCN4J,SAASvgB,IAAI,OAAOA,EAAEP,OAAOoK,OAAOpK,OAAOoK,OAAOlE,OAAO,SAAS1C,GAAG,IAAI,IAAIgB,EAAE,EAAEA,EAAEpC,UAAU3C,OAAO+E,IAAI,CAAC,IAAIvB,EAAEb,UAAUoC,GAAG,IAAI,IAAIjB,KAAKN,EAAEjD,OAAOgB,UAAUsJ,eAAexI,KAAKmB,EAAEM,KAAKC,EAAED,GAAGN,EAAEM,GAAG,CAAC,OAAOC,CAAC,EAAEjD,EAAE4B,MAAMP,KAAKQ,UAAU,CAAC,SAASwB,EAAEJ,GAAG,IAAIgB,EAAEhB,GAAG,IAAIP,EAAE,GAAGM,EAAE,GAAG,MAAMgf,EAAE/d,EAAEiB,QAAQ,MAAM,IAAI8c,IAAIhf,EAAEiB,EAAEoe,MAAML,GAAG/d,EAAEA,EAAEoe,MAAM,EAAEL,IAAI,MAAMyI,EAAExmB,EAAEiB,QAAQ,KAAK,OAAO,IAAIulB,IAAI/nB,EAAEuB,EAAEoe,MAAMoI,GAAGxmB,EAAEA,EAAEoe,MAAM,EAAEoI,IAAI,CAACxZ,SAAShN,EAAE0S,OAAO,MAAMjU,EAAE,GAAGA,EAAEkU,KAAK,MAAM5T,EAAE,GAAGA,EAAE,CAAC,MAAMO,EAAE,6BAA6Bf,EAAES,IAAI,GAAG,iBAAiBA,EAAE,OAAO,CAACA,GAAGM,EAAEsc,KAAK5c,GAAX,CAAeA,EAAC,EAAGL,EAAE,IAA+F,GAAc2C,EAAE,IAAmG,GAAgB,SAASF,EAAEpC,EAAEgB,EAAErB,KAAK,IAAIF,EAAE,IAAIF,EAAES,GAAG,OAAOA,EAAE,GAAGA,EAAE8oB,WAAW,OAAO9oB,EAAE8oB,WAAW,OAAO,OAAO9oB,EAAE,MAAMD,EAAE,OAAON,EAAE,MAAMuB,EAAEA,EAAEsB,KAAK7C,EAAE,IAAI,MAAM,GAAG,MAAMM,GAAGA,EAAEgrC,SAAS,KAAKhrC,EAAEqf,MAAM,GAAG,GAAGrf,IAAIC,EAAE8oB,WAAW,KAAK9oB,EAAE,IAAIA,KAAK,CAAC,MAAM6C,EAAE7C,GAAG,MAAMA,OAAE,EAAOA,EAAE8oB,WAAW,KAA4E,SAAS/nB,EAAEf,EAAEgB,GAAG,MAAMgN,SAASvO,EAAEiU,OAAO3T,EAAE4T,KAAKoL,GAAG3e,EAAEJ,GAAG,MAAM,IAAG,OAAEP,EAAEuB,KAAKjB,IAAIgf,GAAG,CAAC,MAAMtc,EAAE,CAACzC,EAAEgB,IAAI,iBAAiBhB,EAAEA,EAAET,EAAES,GAAG6C,EAAE7C,GAAG,SAASA,GAAG,MAAMgB,EAAEoB,EAAEpC,GAAGP,EAAlL,SAAwL,OAAgCsB,EAAEC,EAAEvB,EAAI,CAAvE,CAAyEO,GAAG,SAASA,EAAEgB,GAAG,GAAG6B,EAAE7C,GAAG,OAAOA,EAAE,MAAMD,EAA1Q,SAAgRgf,GAAE,aAAE/e,EAAEgB,GAAG,OAAgCD,EAAEge,EAAEhf,EAAI,CAA5F,CAA8FC,EAAEgB,GAAGhB,EAAEsB,EAAE,CAAC,KAAK,WAAW,UAAU,eAAe,kBAAkB,cAAc,WAAW,kBAAkB,QAAQ,UAAU,aAAa,SAASnB,EAAEH,GAAG,OAAOoC,EAAEpC,EAAEsC,IAAI,CAAC,MAAMjC,EAAE,CAAC29C,gBAAgB,SAAStgB,YAAY,SAASugB,gBAAgB,QAAQ,SAASv9C,EAAEV,GAAgB,OAAO,gBAAgB,WAAE,MAAK,EAAEyF,SAAShG,KAAkB,gBAAgBwsC,EAAElvC,EAAE,CAAC,EAAEiD,EAAE,CAACk+C,UAAUz+C,MAAK,CAAC,MAAMwsC,UAAU,YAAY,WAAAjtC,CAAYgB,GAAGwtC,MAAMxtC,GAAG5B,KAAK+/C,gBAAgB,EAAE5Q,mBAAmBvtC,EAAEstC,UAAUtsC,MAAM5C,KAAKtB,MAAMmhD,gBAAgBj+C,EAAEgB,GAAG,CAACyP,UAAU,CAACrS,KAAKtB,MAAM2T,UAAUrS,KAAKtB,MAAMkhD,iBAAiBhiD,OAAOi+B,SAASpa,KAAK,KAAK6Q,MAAM3zB,EAAE,CAAC,EAAEqB,KAAKtB,MAAM4zB,MAAMtyB,KAAKtB,MAAM4gC,cAAc,KAAK,IAAI18B,GAAE,EAAG,oBAAoBwE,QAAQA,OAAO44C,uBAAuBp9C,GAAE,GAAI5C,KAAKiI,MAAM,CAACg4C,YAAYr9C,GAAG5C,KAAKkgD,cAAc,KAAKlgD,KAAKmgD,UAAUngD,KAAKmgD,UAAU77C,KAAKtE,KAAK,CAAC,SAAAogD,GAAY,IAAIx+C,EAAEwF,OAAOC,SAASuI,SAASxI,OAAOC,SAASiO,OAAOtV,KAAKtB,MAAMohD,WAAW9/C,KAAKtB,MAAMohD,UAAUlwC,WAAWhO,EAAE5B,KAAKtB,MAAMohD,UAAUlwC,SAAS5P,KAAKtB,MAAMohD,UAAUxqC,QAAQ,MAAM1S,EAAEZ,EAAEqC,EAAErE,KAAKtB,MAAMgL,GAAG9H,IAAIP,EAAEuB,EAAEgN,SAAShN,EAAE0S,OAAO,GAAG1T,IAAIP,EAAE,OAAOizC,UAAUrV,QAAQ59B,EAAE,CAAC,oBAAA6K,GAAuB,IAAIlM,KAAKqgD,GAAG,OAAO,MAAMxgD,SAAS+B,EAAEoe,GAAGpd,GAAG5C,KAAKqgD,GAAGrgD,KAAKkgD,eAAelgD,KAAKkgD,cAAc/C,QAAQv7C,EAAE0+C,UAAU19C,GAAGhB,EAAE02B,YAAY,CAAC,SAAA6nB,CAAUv+C,GAAG5B,KAAKtB,MAAMswC,UAAU5wC,OAAOgB,UAAUsJ,eAAexI,KAAKF,KAAKtB,MAAMswC,SAAS,WAAWhvC,KAAKtB,MAAMswC,SAAStiC,QAAQ9K,EAAE5B,KAAKtB,MAAMswC,UAAUhvC,KAAKtB,MAAMswC,SAASptC,GAAG5B,KAAKiI,MAAMg4C,aAAar+C,IAAI5B,KAAKqgD,GAAG,EAAEz+C,EAAEgB,KAAK,MAAMvB,EAAE,IAAI+F,OAAO44C,sBAAqB3+C,IAAIA,EAAEmC,SAAQnC,IAAIO,IAAIP,EAAE5C,QAAQmE,EAAEvB,EAAEk/C,gBAAgBl/C,EAAEm/C,kBAAkB,EAAC,GAAE,IAAI,OAAOn/C,EAAEo3B,QAAQ72B,GAAG,CAAC/B,SAASwB,EAAE2e,GAAGpe,EAAG,EAAtK,CAAwKA,GAAEA,IAAIA,EAAE5B,KAAKkgD,cAAclgD,KAAKogD,YAAYpgD,KAAKkgD,eAAelgD,KAAKkgD,cAAc/C,OAAM,IAAI,CAAC,MAAAvuC,GAAS,MAAMhN,EAAE5B,KAAKtB,OAAOgL,GAAGrI,EAAE4tC,SAASttC,EAAE3B,KAAK+/C,gBAAgBhvC,QAAQqY,EAAEq3B,aAAav+C,EAAE+F,MAAM1G,EAAEkF,QAAQvC,EAAE47C,UAAU97C,GAAGpC,EAAE6C,EAAE,SAAS7C,EAAEgB,GAAG,GAAG,MAAMhB,EAAE,MAAM,CAAC,EAAE,IAAIP,EAAEM,EAAEgf,EAAE,CAAC,EAAEyI,EAAEhrB,OAAOusB,KAAK/oB,GAAG,IAAID,EAAE,EAAEA,EAAEynB,EAAEvrB,OAAO8D,IAAIiB,EAAEiB,QAAQxC,EAAE+nB,EAAEznB,KAAK,IAAIgf,EAAEtf,GAAGO,EAAEP,IAAI,OAAOsf,CAAC,CAAjI,CAAmI/e,EAAEsB,GAAgN8Y,EAAE3X,EAAEhD,EAAE2C,EAAE4L,UAAU,OAAOzO,EAAE6a,GAAgB,gBAAgB,OAAErd,EAAE,CAAC+K,GAAGsS,EAAE/T,MAAM1G,EAAE0tC,SAASttC,EAAEqtC,SAAShvC,KAAKmgD,UAAUM,aAAa7+C,IAAIM,GAAGA,EAAEN,GAAG,MAAMgB,EAAEZ,EAAEga,GAAGs4B,UAAU2J,SAASr7C,EAAEgN,SAAShN,EAAE0S,OAAM,EAAGvE,QAAQnP,IAAI,GAAGwnB,GAAGA,EAAExnB,KAAK,IAAIA,EAAE4a,QAAQxc,KAAKtB,MAAMD,QAAQmD,EAAEkb,kBAAkBlb,EAAE+a,SAAS/a,EAAE6a,QAAQ7a,EAAE8a,SAAS9a,EAAEgb,UAAU,CAAChb,EAAE8Q,iBAAiB,IAAI9P,EAAEsB,EAAE,MAAM7C,EAAE2rC,UAAUhxB,KAAKhY,EAAE4L,SAAS,kBAAkB1L,GAAG7C,IAAIuB,GAAE,GAAIwE,OAAOqtC,YAAYz4B,EAAE,CAAC/T,MAAM1G,EAAEkF,QAAQ7D,GAAG,CAAC,OAAM,CAAC,GAAI6B,IAAiB,gBAAgB,IAAI9F,EAAE,CAACkf,KAAK7B,GAAGvX,GAAG,EAAEopC,EAAE1+B,UAAUxQ,EAAE,CAAC,EAAEsD,EAAE,CAAC8O,QAAQ,OAAOrH,GAAG,SAAS4G,WAAW7J,QAAQ,OAAOwB,MAAM,WAAW,MAAMhD,EAAE,cAAa,CAACrD,EAAEP,IAAiB,gBAAgBiB,EAAE3D,EAAE,CAACqwC,SAAS3tC,GAAGO,MAAKuC,EAAE,CAACvC,EAAEgB,KAAKwE,OAAOqtC,YAAYpwC,EAAEzC,EAAEwF,OAAOC,SAASuI,UAAUhN,EAAC,mICGx7I,MAAMomC,GCgB+BhmC,EDhBkB,cCgBZutB,EDhB2B,CAAC,ECiBjEzpB,EAAMtC,oBAjBgB,SAACxB,EAAMutB,GAajC,YAb6C,IAAZA,IAAAA,EAAe,MAE3Cgd,WAAWC,mBACdD,WAAWC,iBAAmB,CAAC,GAG5BD,WAAWC,iBAAiBxqC,KAC/BuqC,WAAWC,iBAAiBxqC,GAAQ8D,EAAMtC,oBACxCxB,EACAutB,IAIGgd,WAAWC,iBAAiBxqC,EACrC,CAIWwB,CAAoBxB,EAAMutB,GAG5BzpB,EAAAA,cAAoBypB,IAL7B,IAAqCvtB,EAAMutB,EDd3C,SAASmwB,EAAuBx5C,GAA4C,IAA3C,gBAAEy5C,EAAe,KAAEvlC,EAAI,MAAEwlC,EAAK,OAAEhyC,GAAQ1H,EACvE,MAAM25C,EAAYzlC,EACdA,EAAKA,KACLulC,EAAgBC,IAAUD,EAAgBC,GAAOxlC,KAErD,OACEtU,EAAAA,cAACA,EAAAA,SAAc,KACZ+5C,GAAajyC,EAAOiyC,IACnBA,GAAa/5C,EAAAA,cAAA,WAAK,yBAG1B,CAKA,MAAMg6C,EAAcpiD,IAClB,MAAM,KAAE0c,EAAI,MAAEwlC,EAAK,OAAEhyC,EAAM,SAAE5N,GAAatC,EAS1C,OACEoI,EAAAA,cAACkiC,EAAmBqM,SAAQ,MACzBsL,GACC75C,EAAAA,cAAC45C,EAAuB,CACtBtlC,KAAMA,EACNwlC,MAAOA,EACPhyC,OAAQA,GAAU5N,EAClB2/C,gBAAiBA,KAGO,EAW5BI,EAAiBH,IAAU,IAADI,EAErBl6C,EAAAA,WAUT,MAAMgE,EAAUhE,EAAAA,WAAiBkiC,GAKjC,GAAIjhB,MAAM/E,OAAO49B,IACf,MAAM,IAAIj9C,MAAM,iLAIMi9C,WAIxB,GAAkB,QAAlBI,EAAIl2C,EAAQ81C,UAAM,IAAAI,GAAdA,EAAgB5lC,KAClB,OAAOtQ,EAAQ81C,GAAOxlC,KAEtB,MAAM,IAAIzX,MACR,uMAIJ,mDEtFF,IAAe,gBAAoB,yCCCnCvF,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIiK,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAQ3PwiD,GAJU3hD,EAFD,EAAQ,OAMNA,EAFD,EAAQ,QAMlB4hD,EAAiB5hD,EAFD,EAAQ,MAMxBuJ,EAAiBvJ,EAFD,EAAQ,OAI5B,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAK9F,IAAI2hD,EAAmB,SAA0BxjD,GAC/C,OAAOsjD,EAASvhD,QAAQ/B,EAAQwM,SAAW82C,EAASvhD,QAAQ0hD,aAC9D,EAqBIC,EAT0B,WAC5B,GAAsB,oBAAXj6C,OACT,OAAOA,OAAOoO,uBAAyBpO,OAAOk6C,2BAElD,CAMSC,IAA6B,SAAUtzC,EAAU9G,EAAS0J,GAC/DzJ,OAAOuH,WAAWV,EAAU4C,GAAS,IAAO,IAAI,IAAIqQ,MAAO8G,UAC7D,EAsBEY,EAAmB,SAA0BjrB,GAC/C,IAAImM,EAAmBnM,EAAQyd,KAAKtR,iBACpC,GAAIA,GAAoBA,IAAqBZ,UAAYY,IAAqBZ,SAASggB,KACrF,OAAOpf,EAAiBmf,WAExB,IAAIJ,OAA2CtiB,IAAvBa,OAAOwP,YAC3BkS,EAA+C,gBAA/B5f,SAAS6f,YAAc,IAC3C,OAAOF,EAAoBzhB,OAAOwP,YAAckS,EAAe5f,SAAS8f,gBAAgBC,WAAa/f,SAASggB,KAAKD,UAEvH,EAEIE,EAAmB,SAA0BxrB,GAC/C,IAAImM,EAAmBnM,EAAQyd,KAAKtR,iBACpC,GAAIA,GAAoBA,IAAqBZ,UAAYY,IAAqBZ,SAASggB,KACrF,OAAOpf,EAAiBO,UAExB,IAAIwe,OAA2CtiB,IAAvBa,OAAOwP,YAC3BkS,EAA+C,gBAA/B5f,SAAS6f,YAAc,IAC3C,OAAOF,EAAoBzhB,OAAO6P,YAAc6R,EAAe5f,SAAS8f,gBAAgB3e,UAAYnB,SAASggB,KAAK7e,SAEtH,EA0BIm3C,EAAgB,SAASA,EAAcryB,EAAQxxB,EAAS8jD,GAC1D,IAAIrmC,EAAOzd,EAAQyd,KAGnB,GAAKzd,EAAQyT,qBAAsBgK,EAAKrN,OAiCxC,GA1BAqN,EAAKsmC,MAAQruC,KAAKmI,MAAMJ,EAAKumC,eAAiBvmC,EAAKwmC,eAEhC,OAAfxmC,EAAKwV,QACPxV,EAAKwV,MAAQ6wB,GAGfrmC,EAAKmW,SAAWkwB,EAAYrmC,EAAKwV,MAEjCxV,EAAKymC,QAAUzmC,EAAKmW,UAAYnW,EAAKnK,SAAW,EAAIke,EAAO/T,EAAKmW,SAAWnW,EAAKnK,UAEhFmK,EAAK0mC,gBAAkB1mC,EAAKwmC,cAAgBvuC,KAAK0uC,KAAK3mC,EAAKsmC,MAAQtmC,EAAKymC,SAEpEzmC,EAAKtR,kBAAoBsR,EAAKtR,mBAAqBZ,UAAYkS,EAAKtR,mBAAqBZ,SAASggB,KAChGvrB,EAAQqM,WACVoR,EAAKtR,iBAAiBmf,WAAa7N,EAAK0mC,gBAExC1mC,EAAKtR,iBAAiBO,UAAY+Q,EAAK0mC,gBAGrCnkD,EAAQqM,WACV5C,OAAOqC,SAAS2R,EAAK0mC,gBAAiB,GAEtC16C,OAAOqC,SAAS,EAAG2R,EAAK0mC,iBAIxB1mC,EAAKymC,QAAU,EAAnB,CACE,IAAIG,EAAeR,EAAcl9C,KAAK,KAAM6qB,EAAQxxB,GACpD0jD,EAA4BnhD,KAAKkH,OAAQ46C,EAE3C,MAEIn5C,EAAenJ,QAAQ0K,WAAgB,KACzCvB,EAAenJ,QAAQ0K,WAAgB,IAAEgR,EAAK1R,GAAI0R,EAAK3c,OAAQ2c,EAAK0mC,sBAvChEj5C,EAAenJ,QAAQ0K,WAAgB,KACzCvB,EAAenJ,QAAQ0K,WAAgB,IAAEgR,EAAK1R,GAAI0R,EAAK3c,OAAQ2c,EAAK+N,iBAwC1E,EAEI84B,EAAe,SAAsBtkD,GACvCA,EAAQyd,KAAKtR,iBAAoBnM,EAAiBA,EAAQgM,YAAcT,SAASC,eAAexL,EAAQgM,aAAehM,EAAQkM,WAAalM,EAAQkM,UAAUE,SAAWpM,EAAQkM,UAAYX,SAAlJ,IAC7C,EAEIoB,EAAmB,SAA0BL,EAActM,EAAS+L,EAAIjL,GAC1Ed,EAAQyd,KAAOzd,EAAQyd,MArHhB,CACL0mC,gBAAiB,EACjBF,cAAe,EACfD,eAAgB,EAChBpwB,SAAU,EACVtgB,SAAU,EACVlD,QAAQ,EAERtP,OAAQ,KACRqL,iBAAkB,KAClBJ,GAAI,KACJknB,MAAO,KACP8wB,MAAO,KACPG,QAAS,KACTK,aAAc,MAyGhB96C,OAAO2T,aAAapd,EAAQyd,KAAK8mC,cAcjC,GATAhB,EAAexhD,QAAQ6P,WAHP,WACd5R,EAAQyd,KAAKrN,QAAS,CACxB,IAGAk0C,EAAatkD,GAEbA,EAAQyd,KAAKwV,MAAQ,KACrBjzB,EAAQyd,KAAKrN,QAAS,EACtBpQ,EAAQyd,KAAKwmC,cAAgBjkD,EAAQqM,WAAa4e,EAAiBjrB,GAAWwrB,EAAiBxrB,GAC/FA,EAAQyd,KAAKumC,eAAiBhkD,EAAQiM,SAAWK,EAAeA,EAAetM,EAAQyd,KAAKwmC,cAExFjkD,EAAQyd,KAAKwmC,gBAAkBjkD,EAAQyd,KAAKumC,eAAhD,CA7JoB,IAAyBrjD,EAoK7CX,EAAQyd,KAAKsmC,MAAQruC,KAAKmI,MAAM7d,EAAQyd,KAAKumC,eAAiBhkD,EAAQyd,KAAKwmC,eAE3EjkD,EAAQyd,KAAKnK,UArKW,mBADqB3S,EAsKLX,EAAQsT,UArKX3S,EAAQ,WAC3C,OAAOA,CACT,GAmK0DX,EAAQyd,KAAKsmC,OACvE/jD,EAAQyd,KAAKnK,SAAW8W,MAAMoF,WAAWxvB,EAAQyd,KAAKnK,WAAa,IAAOkc,WAAWxvB,EAAQyd,KAAKnK,UAClGtT,EAAQyd,KAAK1R,GAAKA,EAClB/L,EAAQyd,KAAK3c,OAASA,EAEtB,IAAI0wB,EAASgyB,EAAiBxjD,GAC1BqkD,EAAeR,EAAcl9C,KAAK,KAAM6qB,EAAQxxB,GAEhDA,GAAWA,EAAQkT,MAAQ,EAC7BlT,EAAQyd,KAAK8mC,aAAe96C,OAAOuH,YAAW,WACxC9F,EAAenJ,QAAQ0K,WAAkB,OAC3CvB,EAAenJ,QAAQ0K,WAAkB,MAAEzM,EAAQyd,KAAK1R,GAAI/L,EAAQyd,KAAK3c,QAE3E4iD,EAA4BnhD,KAAKkH,OAAQ46C,EAC3C,GAAGrkD,EAAQkT,QAIThI,EAAenJ,QAAQ0K,WAAkB,OAC3CvB,EAAenJ,QAAQ0K,WAAkB,MAAEzM,EAAQyd,KAAK1R,GAAI/L,EAAQyd,KAAK3c,QAE3E4iD,EAA4BnhD,KAAKkH,OAAQ46C,GAzBzC,MAJMn5C,EAAenJ,QAAQ0K,WAAgB,KACzCvB,EAAenJ,QAAQ0K,WAAgB,IAAEzM,EAAQyd,KAAK1R,GAAI/L,EAAQyd,KAAK3c,OAAQd,EAAQyd,KAAK0mC,gBA6BlG,EAEIK,EAAiB,SAAwBxkD,GAI3C,OAHAA,EAAU4K,EAAS,CAAC,EAAG5K,IACfyd,KAAOzd,EAAQyd,MAxKhB,CACL0mC,gBAAiB,EACjBF,cAAe,EACfD,eAAgB,EAChBpwB,SAAU,EACVtgB,SAAU,EACVlD,QAAQ,EAERtP,OAAQ,KACRqL,iBAAkB,KAClBJ,GAAI,KACJknB,MAAO,KACP8wB,MAAO,KACPG,QAAS,KACTK,aAAc,MA2JhBvkD,EAAQiM,UAAW,EACZjM,CACT,EAuBAT,EAAA,QAAkB,CAChBoN,iBAAkBA,EAClB62C,iBAAkBA,EAClBiB,YAxBgB,SAAqBzkD,GACrC2M,EAAiB,EAAG63C,EAAexkD,GACrC,EAuBE0kD,eAjBmB,SAAwB1kD,GAC3CA,EAAUwkD,EAAexkD,GACzBskD,EAAatkD,GACb2M,EAAiB3M,EAAQqM,WAhJA,SAA8BrM,GACvD,IAAImM,EAAmBnM,EAAQyd,KAAKtR,iBACpC,GAAIA,GAAoBA,IAAqBZ,UAAYY,IAAqBZ,SAASggB,KACrF,OAAOpf,EAAiBurB,YAAcvrB,EAAiB0iB,YAEvD,IAAItD,EAAOhgB,SAASggB,KAChBqQ,EAAOrwB,SAAS8f,gBAEpB,OAAO3V,KAAKoS,IAAIyD,EAAKmM,YAAanM,EAAKsD,YAAa+M,EAAKC,YAAaD,EAAKlE,YAAakE,EAAK/M,YAEjG,CAsIwC81B,CAAqB3kD,GApIjC,SAA+BA,GACzD,IAAImM,EAAmBnM,EAAQyd,KAAKtR,iBACpC,GAAIA,GAAoBA,IAAqBZ,UAAYY,IAAqBZ,SAASggB,KACrF,OAAOpf,EAAiBqrB,aAAerrB,EAAiBwiB,aAExD,IAAIpD,EAAOhgB,SAASggB,KAChBqQ,EAAOrwB,SAAS8f,gBAEpB,OAAO3V,KAAKoS,IAAIyD,EAAKiM,aAAcjM,EAAKoD,aAAciN,EAAKE,aAAcF,EAAKpE,aAAcoE,EAAKjN,aAErG,CA0HwEi2B,CAAsB5kD,GAAUA,EACxG,EAcE8L,SAtBa,SAAkB+4C,EAAY7kD,GAC3C2M,EAAiBk4C,EAAYL,EAAexkD,GAC9C,EAqBE8kD,WAbe,SAAoBD,EAAY7kD,GAC/CA,EAAUwkD,EAAexkD,GACzBskD,EAAatkD,GACb,IAAImkD,EAAkBnkD,EAAQqM,WAAa4e,EAAiBjrB,GAAWwrB,EAAiBxrB,GACxF2M,EAAiBk4C,EAAaV,EAAiBnkD,EACjD,oFC1PA,SAASkhC,EAAej9B,EAAG+e,GACzB/e,EAAExC,UAAYhB,OAAOuC,OAAOggB,EAAEvhB,WAAYwC,EAAExC,UAAUwB,YAAcgB,GAAG,OAAeA,EAAG+e,EAC3F,wGCcA,MAKM+hC,EAAe,CACnBC,aANmC,CACnCC,cAAe,GACf3X,QAAQ,GAKR4X,gBAAkBznC,GAAuBnU,QAAQe,IAAIoT,IAEjD0nC,GAAUxqC,EAAAA,EAAAA,eAAcoqC,GACjBK,EAAcA,KAAMxjC,EAAAA,EAAAA,YAAWujC,GAEtCE,GAAmBC,EAAAA,EAAAA,IACvBC,sEAGIC,GAAeF,EAAAA,EAAAA,IAAYC,iEAuEjC,KArEgCh8C,IAIzB,IAJ0B,SAC/BlG,GAGDkG,EACC,MAAM,EAACy7C,EAAa,EAACE,IAAmBxnB,EAAAA,EAAAA,UAASqnB,EAAaC,cACxDS,GAAeC,EAAAA,EAAAA,UACnB,MAASV,eAAcE,qBACvB,CAACF,KAGG,EAACv3B,EAAW,EAACk4B,IAAiBjoB,EAAAA,EAAAA,aAC9B,EAACxX,EAAM,EAAC0/B,IAAYloB,EAAAA,EAAAA,YAEpBmoB,GACJN,EAmDF,OAjDAhoB,EAAAA,EAAAA,YAAU,KAERuoB,MAAMT,EAAkB,CACtBhrB,OAAQ,OACR0rB,QAAS,CAAE,eAAgB,oBAC3Bx6B,KAAM3mB,KAAKqnB,UAAU,CACnB+5B,QAASH,MAGVvlD,MAAKqtC,GAAYA,EAASx7B,SAC1B7R,MAAKmd,GAAQkoC,EAAcloC,KAC3B9S,OAAMhC,IACLg9C,EAAc,IACdr8C,QAAQe,IAAI,UAAW1B,EAAM,IAIjCm9C,MAAMN,EAAc,CAClBnrB,OAAQ,OACR0rB,QAAS,CAAE,eAAgB,oBAC3Bx6B,KAAM3mB,KAAKqnB,UAAU,CACnB+5B,QAASH,MAGVvlD,MAAKqtC,GAAYA,EAASx7B,SAC1B7R,MAAKmd,GAAQmoC,EAASnoC,EAAK5d,KAAKyF,IAAWkf,EAAAA,EAAAA,IAAelf,QAC1DqF,OAAMhC,IACLi9C,EAAS,IACTt8C,QAAQe,IAAI,UAAW1B,EAAM,GAC7B,GACH,KAGH40B,EAAAA,EAAAA,YAAU,KACR,GAAI9P,GAAcvH,EAAO,CACvB,MAAMnmB,EAAS0tB,EAAW5tB,KAAImkB,IACrB,IACFA,EACHkC,MAAOA,EAAMjmB,QAAOwkB,GAAQA,EAAK8oB,aAAevpB,EAASupB,iBAI7D2X,EAAgB,CACdD,cAAellD,EACfutC,QAAQ,GAEZ,IACC,CAAC7f,EAAYvH,IAET/c,EAAAA,cAACg8C,EAAQp+C,SAAQ,CAACpG,MAAO8kD,GAAepiD,EAA4B,wGChGtE,MAAM8T,EAAgB,SAAsB5N,EAEhD6N,GAAgB,IAFiC,SAClD1N,GACDH,CAWD,uDCfEf,EAAOjJ,QAAU,EAAjB,wCCHF,SAASqL,IACP,OAAOA,EAAWnK,OAAOoK,OAASpK,OAAOoK,OAAOlE,OAAS,SAAUjD,GACjE,IAAK,IAAIuB,EAAI,EAAGA,EAAIpC,UAAU3C,OAAQ+E,IAAK,CACzC,IAAIhB,EAAIpB,UAAUoC,GAClB,IAAK,IAAIjB,KAAKC,GAAG,CAAG,GAAE8G,eAAexI,KAAK0B,EAAGD,KAAON,EAAEM,GAAKC,EAAED,GAC/D,CACA,OAAON,CACT,EAAGkH,EAAShI,MAAM,KAAMC,UAC1B,kECNApC,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAETpB,EAAA,QAAkB,CAIhBkkD,cAAe,SAAuBn+C,GACpC,OAAIA,EAAI,GACCoQ,KAAKuwC,IAAQ,EAAJ3gD,EAAO,GAAK,EAEvB,EAAIoQ,KAAKuwC,IAAc,GAAT,EAAI3gD,GAAQ,GAAK,CACxC,EAKA4gD,OAAQ,SAAgB5gD,GACtB,OAAOA,CACT,EAEAyqB,WAAY,SAAoBzqB,GAC9B,OAAOA,EAAIA,CACb,EAEAgrB,YAAa,SAAqBhrB,GAChC,OAAOA,GAAK,EAAIA,EAClB,EAEAurB,cAAe,SAAuBvrB,GACpC,OAAOA,EAAI,GAAK,EAAIA,EAAIA,GAAU,EAAI,EAAIA,GAAKA,EAAlB,CAC/B,EAEA0qB,YAAa,SAAqB1qB,GAChC,OAAOA,EAAIA,EAAIA,CACjB,EAEAirB,aAAc,SAAsBjrB,GAClC,QAASA,EAAIA,EAAIA,EAAI,CACvB,EAEAwrB,eAAgB,SAAwBxrB,GACtC,OAAOA,EAAI,GAAK,EAAIA,EAAIA,EAAIA,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,CACxE,EAEA2qB,YAAa,SAAqB3qB,GAChC,OAAOA,EAAIA,EAAIA,EAAIA,CACrB,EAEAkrB,aAAc,SAAsBlrB,GAClC,OAAO,KAAMA,EAAIA,EAAIA,EAAIA,CAC3B,EAEAyrB,eAAgB,SAAwBzrB,GACtC,OAAOA,EAAI,GAAK,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,CAC5D,EAEA4qB,YAAa,SAAqB5qB,GAChC,OAAOA,EAAIA,EAAIA,EAAIA,EAAIA,CACzB,EAEAmrB,aAAc,SAAsBnrB,GAClC,OAAO,IAAMA,EAAIA,EAAIA,EAAIA,EAAIA,CAC/B,EAEA0rB,eAAgB,SAAwB1rB,GACtC,OAAOA,EAAI,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,KAAOA,EAAIA,EAAIA,EAAIA,EAAIA,CACtE,+FCtDF,MAKMy/C,EAAe,CACnBoB,cANmC,CACnCC,eAAgB,GAChB9Y,QAAQ,GAKR+Y,iBAAmB5oC,GAAuBnU,QAAQe,IAAIoT,IAElD0nC,GAAUxqC,EAAAA,EAAAA,eAAcoqC,GACjBuB,EAAiBA,KAAM1kC,EAAAA,EAAAA,YAAWujC,GAEzCoB,GAAUjB,EAAAA,EAAAA,IAAYC,uEA0C5B,KAxCiCh8C,IAI1B,IAJ2B,SAChClG,GAGDkG,EACC,MAAM,EAAC48C,EAAc,EAACE,IAAoB3oB,EAAAA,EAAAA,UAASqnB,EAAaoB,eAC1DV,GAAeC,EAAAA,EAAAA,UACnB,MAASS,gBAAeE,sBACxB,CAACF,IA6BH,OA1BA5oB,EAAAA,EAAAA,YAAU,KACJgpB,GACFT,MAAMS,EAAS,CACblsB,OAAQ,OACR0rB,QAAS,CAAE,eAAgB,oBAC3Bx6B,KAAM3mB,KAAKqnB,UAAU,CACnB+5B,SACET,MAGHjlD,MAAKqtC,GAAYA,EAASx7B,SAC1B7R,MAAKmd,IACJ4oC,EAAiB,CACfD,eAAgB3oC,EAChB6vB,QAAQ,GACR,IAEH3iC,OAAMhC,IACL09C,EAAiB,CACfD,eAAgB,GAChB9Y,QAAQ,IAEVhkC,QAAQe,IAAI,UAAW1B,EAAM,GAC7B,GACL,IAEIQ,EAAAA,cAACg8C,EAAQp+C,SAAQ,CAACpG,MAAO8kD,GAAepiD,EAA4B,sJC1DtE,SAASmjD,EAAgBnjD,EAAUojD,GACxC,IAII1mD,EAASU,OAAOuC,OAAO,MAO3B,OANIK,GAAU,EAAAqjD,SAAS7mD,IAAIwD,GAAU,SAAUkB,GAC7C,OAAOA,CACT,IAAGsB,SAAQ,SAAU8gD,GAEnB5mD,EAAO4mD,EAAMtlD,KATF,SAAgBslD,GAC3B,OAAOF,IAAS,IAAAG,gBAAeD,GAASF,EAAME,GAASA,CACzD,CAOsBE,CAAOF,EAC7B,IACO5mD,CACT,CAiEA,SAAS+mD,EAAQH,EAAO/xC,EAAM7T,GAC5B,OAAsB,MAAfA,EAAM6T,GAAgB7T,EAAM6T,GAAQ+xC,EAAM5lD,MAAM6T,EACzD,CAaO,SAASmyC,EAAoB3wB,EAAW4wB,EAAkB72C,GAC/D,IAAI82C,EAAmBT,EAAgBpwB,EAAU/yB,UAC7CA,EA/DC,SAA4B6jD,EAAM7mD,GAIvC,SAAS8mD,EAAe9lD,GACtB,OAAOA,KAAOhB,EAAOA,EAAKgB,GAAO6lD,EAAK7lD,EACxC,CALA6lD,EAAOA,GAAQ,CAAC,EAChB7mD,EAAOA,GAAQ,CAAC,EAQhB,IAcIW,EAdAomD,EAAkB3mD,OAAOuC,OAAO,MAChCqkD,EAAc,GAElB,IAAK,IAAIC,KAAWJ,EACdI,KAAWjnD,EACTgnD,EAAYnnD,SACdknD,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYh/C,KAAKi/C,GAKrB,IAAIC,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWnnD,EAAM,CACxB,GAAI+mD,EAAgBI,GAClB,IAAKxmD,EAAI,EAAGA,EAAIomD,EAAgBI,GAAStnD,OAAQc,IAAK,CACpD,IAAIymD,EAAiBL,EAAgBI,GAASxmD,GAC9CumD,EAAaH,EAAgBI,GAASxmD,IAAMmmD,EAAeM,EAC7D,CAGFF,EAAaC,GAAWL,EAAeK,EACzC,CAGA,IAAKxmD,EAAI,EAAGA,EAAIqmD,EAAYnnD,OAAQc,IAClCumD,EAAaF,EAAYrmD,IAAMmmD,EAAeE,EAAYrmD,IAG5D,OAAOumD,CACT,CAmBiBG,CAAmBV,EAAkBC,GAmCpD,OAlCAxmD,OAAOusB,KAAK3pB,GAAUwC,SAAQ,SAAUxE,GACtC,IAAIslD,EAAQtjD,EAAShC,GACrB,IAAK,IAAAulD,gBAAeD,GAApB,CACA,IAAIgB,EAAWtmD,KAAO2lD,EAClBY,EAAWvmD,KAAO4lD,EAClBY,EAAYb,EAAiB3lD,GAC7BymD,GAAY,IAAAlB,gBAAeiB,KAAeA,EAAU9mD,MAAM2M,IAE1Dk6C,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,IAAAf,gBAAeiB,KAI9CxkD,EAAShC,IAAO,IAAA0mD,cAAapB,EAAO,CAClCx2C,SAAUA,EAASxJ,KAAK,KAAMggD,GAC9Bj5C,GAAIm6C,EAAU9mD,MAAM2M,GACpBgB,KAAMo4C,EAAQH,EAAO,OAAQvwB,GAC7B5oB,MAAOs5C,EAAQH,EAAO,QAASvwB,MAXjC/yB,EAAShC,IAAO,IAAA0mD,cAAapB,EAAO,CAClCj5C,IAAI,IAVNrK,EAAShC,IAAO,IAAA0mD,cAAapB,EAAO,CAClCx2C,SAAUA,EAASxJ,KAAK,KAAMggD,GAC9Bj5C,IAAI,EACJgB,KAAMo4C,EAAQH,EAAO,OAAQvwB,GAC7B5oB,MAAOs5C,EAAQH,EAAO,QAASvwB,IAZD,CA+BpC,IACO/yB,CACT,CClIA,IAAIsuB,EAASlxB,OAAOkxB,QAAU,SAAU9vB,GACtC,OAAOpB,OAAOusB,KAAKnrB,GAAKhC,KAAI,SAAU0D,GACpC,OAAO1B,EAAI0B,EACb,GACF,EAuBIykD,EAA+B,SAAU/lD,GAG3C,SAAS+lD,EAAgBjnD,EAAOoM,GAC9B,IAAIC,EAIA66C,GAFJ76C,EAAQnL,EAAiBM,KAAKF,KAAMtB,EAAOoM,IAAY9K,MAE9B4lD,aAAathD,KC5C1C,SAAgC1B,GAC9B,QAAI,IAAWA,EAAG,MAAM,IAAIzC,eAAe,6DAC3C,OAAOyC,CACT,CDyC+CijD,CAAuB96C,IAUlE,OAPAA,EAAM9C,MAAQ,CACZ69C,aAAc,CACZ56C,YAAY,GAEd06C,aAAcA,EACdG,aAAa,GAERh7C,CACT,EAlBA,OAAe46C,EAAiB/lD,GAoBhC,IAAIgM,EAAS+5C,EAAgBvmD,UAqE7B,OAnEAwM,EAAOC,kBAAoB,WACzB7L,KAAKgmD,SAAU,EACfhmD,KAAK6M,SAAS,CACZi5C,aAAc,CACZ56C,YAAY,IAGlB,EAEAU,EAAOM,qBAAuB,WAC5BlM,KAAKgmD,SAAU,CACjB,EAEAL,EAAgBj6C,yBAA2B,SAAkCqoB,EAAW7sB,GACtF,IDiBmCxI,EAAOoP,ECjBtC62C,EAAmBz9C,EAAKlG,SACxB4kD,EAAe1+C,EAAK0+C,aAExB,MAAO,CACL5kD,SAFgBkG,EAAK6+C,aDeYrnD,ECbcq1B,EDaPjmB,ECbkB83C,EDcvDzB,EAAgBzlD,EAAMsC,UAAU,SAAUsjD,GAC/C,OAAO,IAAAoB,cAAapB,EAAO,CACzBx2C,SAAUA,EAASxJ,KAAK,KAAMggD,GAC9Bj5C,IAAI,EACJJ,OAAQw5C,EAAQH,EAAO,SAAU5lD,GACjCyM,MAAOs5C,EAAQH,EAAO,QAAS5lD,GAC/B2N,KAAMo4C,EAAQH,EAAO,OAAQ5lD,IAEjC,KCtB8EgmD,EAAoB3wB,EAAW4wB,EAAkBiB,GAC3HG,aAAa,EAEjB,EAGAn6C,EAAOg6C,aAAe,SAAsBtB,EAAO93C,GACjD,IAAIy5C,EAAsB9B,EAAgBnkD,KAAKtB,MAAMsC,UACjDsjD,EAAMtlD,OAAOinD,IAEb3B,EAAM5lD,MAAMoP,UACdw2C,EAAM5lD,MAAMoP,SAAStB,GAGnBxM,KAAKgmD,SACPhmD,KAAK6M,UAAS,SAAU5E,GACtB,IAAIjH,GAAW,OAAS,CAAC,EAAGiH,EAAMjH,UAGlC,cADOA,EAASsjD,EAAMtlD,KACf,CACLgC,SAAUA,EAEd,IAEJ,EAEA4K,EAAOgD,OAAS,WACd,IAAIC,EAAc7O,KAAKtB,MACnBuC,EAAY4N,EAAYuuB,UACxB8oB,EAAer3C,EAAYq3C,aAC3BxnD,GAAQ,OAA8BmQ,EAAa,CAAC,YAAa,iBAEjEi3C,EAAe9lD,KAAKiI,MAAM69C,aAC1B9kD,EAAWsuB,EAAOtvB,KAAKiI,MAAMjH,UAAUxD,IAAI0oD,GAK/C,cAJOxnD,EAAMuM,cACNvM,EAAMyM,aACNzM,EAAM2N,KAEK,OAAdpL,EACkB,gBAAoB8N,EAAA,EAAuBrK,SAAU,CACvEpG,MAAOwnD,GACN9kD,GAGe,gBAAoB+N,EAAA,EAAuBrK,SAAU,CACvEpG,MAAOwnD,GACO,gBAAoB7kD,EAAWvC,EAAOsC,GACxD,EAEO2kD,CACT,CA3FmC,CA2FjC,aAEFA,EAAgBx2C,UAyDZ,CAAC,EACLw2C,EAAgBv2C,aA5KG,CACjBguB,UAAW,MACX8oB,aAAc,SAAsB5B,GAClC,OAAOA,CACT,GAyKF,iBEpLA,MAAMh4C,EAAU,IAGV65C,EAA2B,CAC/BC,SAAU,CACRtvC,SAAU,WACVqZ,QAAS,GAEXk2B,QAAS,CACPC,WAAY,4BACZn2B,QAAS,GAEXo2B,QAAS,CACPD,WAAY,4BACZn2B,QAAS,IA0Cb,MAjC2CjpB,IAA6B,IAA5B,SAAElG,EAAQ,SAAEqG,GAAUH,EAChE,OAGEJ,EAAAA,cAAC6+C,EAAe,KACd7+C,EAAAA,cAAC0/C,EAAAA,GACC,CACAxnD,IAAKqI,EAASuI,SAEdtD,QAAS,CACPnB,MAAOmB,EACPD,KAAMC,KAKNd,GACE1E,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEwrB,MAAO,IACF6zB,EAAoB36C,KAGxBxK,MAMK,YC3CtB,MAV6CtC,IAC3C,MAAMs8B,GAAqBD,EAAAA,EAAAA,MAM3B,OAJAG,EAAAA,EAAAA,YAAU,KACRF,SAAAA,EAAoB3R,QAAQ,GAC3B,CAAC3qB,EAAM2I,SAASuI,WAEZ,IAAI,ECsLb,MAhM0C62C,IACxC3/C,EAAAA,cAAA,OACE4/C,MAAM,6BACNr0C,UAAU,iBACV,cAAY,QAEZvL,EAAAA,cAAA,UAAQ/D,GAAG,aAAa4jD,QAAQ,aAC9B7/C,EAAAA,cAAA,QACEnE,EAAE,+BACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,eAAe4jD,QAAQ,aAChC7/C,EAAAA,cAAA,QACEnE,EAAE,mBACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,iBAAiB4jD,QAAQ,aAClC7/C,EAAAA,cAAA,QACEnE,EAAE,wCACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,kBAAkB4jD,QAAQ,aACnC7/C,EAAAA,cAAA,QACEnE,EAAE,wCACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,iBAAiB4jD,QAAQ,aAClC7/C,EAAAA,cAAA,QACEnE,EAAE,0BACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,aAAa4jD,QAAQ,aAC9B7/C,EAAAA,cAAA,QACEnE,EAAE,+3CACFikD,OAAQ,UACRE,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,cAAc4jD,QAAQ,aAC/B7/C,EAAAA,cAAA,QACEnE,EAAE,+6BACFikD,OAAQ,UACRE,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,aAAa4jD,QAAQ,aAC9B7/C,EAAAA,cAAA,QACEnE,EAAE,4yBACFikD,OAAQ,UACRE,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,qBAAqB4jD,QAAQ,aACtC7/C,EAAAA,cAAA,QACEnE,EAAE,8EACFikD,OAAQ,UACRE,cAAc,WAclBhgD,EAAAA,cAAA,UAAQ/D,GAAG,cAAc4jD,QAAQ,aAC/B7/C,EAAAA,cAAA,QACEnE,EAAE,qPACFikD,OAAQ,UACRE,cAAc,WAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,oBAAoB4jD,QAAQ,aACrC7/C,EAAAA,cAAA,QACEnE,EAAE,gYACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,uBAAuB4jD,QAAQ,aACxC7/C,EAAAA,cAAA,QACEnE,EAAE,gVACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,WAAW4jD,QAAQ,aAC5B7/C,EAAAA,cAAA,QACEnE,EAAE,2bACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,YAAY4jD,QAAQ,aAC7B7/C,EAAAA,cAAA,QACEnE,EAAE,ueACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,cAAc4jD,QAAQ,aAC/B7/C,EAAAA,cAAA,QACEnE,EAAE,0JACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAanBjgD,EAAAA,cAAA,UAAQ/D,GAAG,YAAY4jD,QAAQ,aAC7B7/C,EAAAA,cAAA,QACEnE,EAAE,sIACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjBjgD,EAAAA,cAAA,QACEnE,EAAE,8cACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,aAAa4jD,QAAQ,aAC9B7/C,EAAAA,cAAA,QACEnE,EAAE,q9BACFikD,OAAQ,UACRC,YAAY,IACZC,cAAc,QACdC,eAAe,YC7DvB,MA7HiDC,IAC/ClgD,EAAAA,cAAA,OACE4/C,MAAM,6BACNr0C,UAAU,iBACV,cAAY,QAEZvL,EAAAA,cAAA,UAAQ/D,GAAG,oBAAoB4jD,QAAQ,aACrC7/C,EAAAA,cAAA,QACEnE,EAAE,0BACFkkD,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,oBAAoB4jD,QAAQ,aACrC7/C,EAAAA,cAAA,KAAGkrB,UAAU,mCACXlrB,EAAAA,cAAA,QACEnE,EAAE,yCACFkkD,YAAY,IACZC,cAAc,aAKpBhgD,EAAAA,cAAA,UAAQ/D,GAAG,qBAAqB4jD,QAAQ,aACtC7/C,EAAAA,cAAA,QACEnE,EAAE,yCACFkkD,YAAY,IACZC,cAAc,YAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,kBAAkB4jD,QAAQ,aACnC7/C,EAAAA,cAAA,KAAGkrB,UAAU,mCACXlrB,EAAAA,cAAA,QACEnE,EAAE,0BACFkkD,YAAY,IACZC,cAAc,aAKpBhgD,EAAAA,cAAA,UAAQ/D,GAAG,mBAAmB4jD,QAAQ,aACpC7/C,EAAAA,cAAA,QAAMnE,EAAE,6fAGVmE,EAAAA,cAAA,UAAQ/D,GAAG,mBAAmB4jD,QAAQ,aACpC7/C,EAAAA,cAAA,QACEnE,EAAE,0ZACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,iBAAiB4jD,QAAQ,aAClC7/C,EAAAA,cAAA,QACEnE,EAAE,wDACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,oBAAoB4jD,QAAQ,aACrC7/C,EAAAA,cAAA,QACEnE,EAAE,wNACFkkD,YAAY,IACZC,cAAc,WAIlBhgD,EAAAA,cAAA,UAAQ/D,GAAG,gBAAgB4jD,QAAQ,aACjC7/C,EAAAA,cAAA,QACEnE,EAAE,8qCACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,cAAc4jD,QAAQ,aAC/B7/C,EAAAA,cAAA,QACEnE,EAAE,4mBACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,eAAe4jD,QAAQ,aAChC7/C,EAAAA,cAAA,QACEnE,EAAE,2MACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,UAEjBjgD,EAAAA,cAAA,QACEnE,EAAE,+dACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,gBAAgB4jD,QAAQ,aACjC7/C,EAAAA,cAAA,QACEnE,EAAE,4eACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,WAInBjgD,EAAAA,cAAA,UAAQ/D,GAAG,mBAAmB4jD,QAAQ,aACpC7/C,EAAAA,cAAA,QACEnE,EAAE,m8CACFkkD,YAAY,IACZC,cAAc,QACdC,eAAe,YCvFvB,MAvBe7/C,IAAiD,IAAhD,SAAElG,EAAQ,SAAEqG,EAAQ,YAAEyhC,GAAoB5hC,EAExD,OAAI4hC,EAAYme,MAEZngD,EAAAA,cAAAA,EAAAA,SAAA,KACG9F,EACD8F,EAAAA,cAAC2/C,EAAS,MACV3/C,EAAAA,cAACkgD,EAAgB,OAKrBlgD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACw2B,EAAAA,MAAK,CAACE,MAAM,SAAS0pB,YAAc7/C,aAAQ,EAARA,EAAkBrI,MACtD8H,EAAAA,cAAC+D,EAAU,CAACxD,SAAUA,GAAWrG,GACjC8F,EAAAA,cAACw2B,EAAAA,MAAK,CAACE,MAAM,WACb12B,EAAAA,cAAC2/C,EAAS,MACV3/C,EAAAA,cAACkgD,EAAgB,MACjBlgD,EAAAA,cAACqgD,EAAmB,CAAC9/C,SAAUA,IAC9B,qCChCP,SAASkzB,EAA8B54B,EAAGiB,GACxC,GAAI,MAAQjB,EAAG,MAAO,CAAC,EACvB,IAAIC,EAAI,CAAC,EACT,IAAK,IAAIP,KAAKM,EAAG,GAAI,CAAC,EAAE+G,eAAexI,KAAKyB,EAAGN,GAAI,CACjD,IAAK,IAAMuB,EAAEiB,QAAQxC,GAAI,SACzBO,EAAEP,GAAKM,EAAEN,EACX,CACA,OAAOO,CACT,oECHe,SAAS4zC,EAAY5uC,EAAKwgD,GACvC,YAD6C,IAANA,IAAAA,EAAS,IAC3CA,EAIDxgD,IAAQwgD,EACH,IAGLxgD,EAAI8jB,WAAW,GAAG08B,MACbxgD,EAAIoa,MAAMomC,EAAOvpD,QAGnB+I,EAXEA,CAYX,qMCnBA,EAAeygD,IACb,QAAsB9gD,IAAlB8gD,EACF,OAAOA,EAET,IAAKhyC,EAAMC,EAAS,IAAM+xC,EAAc1jC,MAAM,KAK9C,OAJIrO,IACFA,EAAS,IAAMA,GAGJ,MAATD,EACK,IAAMC,EAEsB,MAAjCD,EAAK0L,OAAO1L,EAAKxX,OAAS,GACrBwX,EAAK2L,MAAM,GAAI,GAAK1L,EAEtBD,EAAOC,CACf,YCXD,MAAMgyC,EAAY,IAAIhmD,IACtB,IAAIs3C,EAAa,GAEjB,MAAM2O,EAAeC,IACnB,IAAIC,EAAiBD,EAGrB,IAAoB,IAFDA,EAAY3jD,QAAQ,KAEhB,CACrB,MAAOwR,EAAMqyC,GAAMF,EAAY7jC,MAAM,KACrC8jC,EAAiB,GAAGpyC,KAAQmsB,mBAAmBkmB,IACjD,CAEA,MAAM93C,EAAWu+B,mBAAmBsZ,GAUpC,OAPwBjS,EAAAA,EAAAA,GACtB5lC,EACAu+B,mBAAmBoH,KAGlB5xB,MAAM,KAAK,EAEQ,EAGxB,SAASgkC,EAAWtyC,GAElB,OACEA,EAAKqV,WAAW,MAChBrV,EAAKqV,WAAW,aAChBrV,EAAKqV,WAAW,WAETrV,EAIF,IAAI03B,IACT13B,EACAjO,OAAOC,SAASwW,MAAQzW,OAAOC,SAASwW,KAAK8uB,SAAS,KAAO,GAAK,MAClE/8B,QACJ,CAOO,MAAM8pC,EAAgBp7C,IAC3Bs6C,EAAat6C,CAAK,EAWPq3C,EAAgB6R,IAC3B,MAAMI,EAAkBC,EAAUL,GAE5BM,EAAYlP,EAAWp7C,KAAI0J,IAA0B,IAAzB,KAAEmO,EAAI,UAAEw+B,GAAW3sC,EACnD,MAAO,CACLmO,KAAMw+B,EACNkU,aAAc1yC,EACf,IAGGA,GAAO2yC,EAAAA,EAAAA,MAAKF,EAAWF,GAE7B,OAAIvyC,EACK4yC,EAAkB5yC,EAAK44B,MAAM8Z,cAG/B,IAAI,EAYAve,EAAkBge,IAC7B,MAAMI,EAAkBC,EAAUL,GAE5BM,EAAYlP,EAAWp7C,KAAIwP,IAA0B,IAAzB,KAAEqI,EAAI,UAAEw+B,GAAW7mC,EACnD,MAAO,CACLqI,KAAMw+B,EACNkU,aAAc1yC,EACf,IAGGA,GAAO2yC,EAAAA,EAAAA,MAAKF,EAAWF,GAE7B,OAAIvyC,EACKA,EAAK+Z,OAGP,CAAC,CAAC,EAWEorB,EAAWgN,IACtB,MAAMI,EAAkBL,EAAaI,EAAWH,IAChD,GAAIF,EAAU3vC,IAAIiwC,GAChB,OAAON,EAAUzkD,IAAI+kD,GAGvB,MAAM9W,GAAWD,EAAAA,EAAAA,GAAwB2W,GACzC,GAAI1W,EACF,OAAO0J,EAAS1J,EAASW,QAG3B,IAAIyW,EAAYvS,EAAciS,GAQ9B,OANKM,IACHA,EAAYL,EAAUL,IAGxBF,EAAU7jD,IAAImkD,EAAiBM,GAExBA,CAAS,EAULL,EAAYL,IAGvB,IAAIU,EAFoBX,EAAaI,EAAWH,IAShD,MANkB,gBAAdU,IACFA,EAAY,KAGdA,EAAYD,EAAkBC,GAEvBA,CAAS,8FC/IlB,MAKMxF,EAAe,CACnByF,YANmC,CACnCC,aAAc,GACdnd,QAAQ,GAKRod,eAAiBjtC,GAAuBnU,QAAQe,IAAIoT,IAEhD0nC,GAAUxqC,EAAAA,EAAAA,eAAcoqC,GACjB4F,EAAcA,KAAM/oC,EAAAA,EAAAA,YAAWujC,GAEtCoB,GAAUjB,EAAAA,EAAAA,IAAYC,oEA0C5B,KAxC+Bh8C,IAIxB,IAJyB,SAC9BlG,GAGDkG,EACC,MAAM,EAACihD,EAAY,EAACE,IAAkBhtB,EAAAA,EAAAA,UAASqnB,EAAayF,aACtD/E,GAAeC,EAAAA,EAAAA,UACnB,MAAS8E,cAAaE,oBACtB,CAACF,IA6BH,OA1BAjtB,EAAAA,EAAAA,YAAU,KACJgpB,GACFT,MAAMS,EAAS,CACblsB,OAAQ,OACR0rB,QAAS,CAAE,eAAgB,oBAC3Bx6B,KAAM3mB,KAAKqnB,UAAU,CACnB+5B,SACET,MAGHjlD,MAAKqtC,GAAYA,EAASx7B,SAC1B7R,MAAKmd,IACJitC,EAAe,CACbD,aAAchtC,EACd6vB,QAAQ,GACR,IAEH3iC,OAAMhC,IACL+hD,EAAe,CACbD,aAAc,GACdnd,QAAQ,IAEVhkC,QAAQe,IAAI,UAAW1B,EAAM,GAC7B,GACL,IAEIQ,EAAAA,cAACg8C,EAAQp+C,SAAQ,CAACpG,MAAO8kD,GAAepiD,EAA4B,qCChE7E9D,EAAQuC,YAAa,EACrBvC,EAAQqrD,uBAIR,SAAgCzuC,GAC9B,IAAKA,EAAiBjc,OACpB,OAEF,MAAM2qD,EAAkBt/C,SAAS+9B,cAAc,0BACzCwhB,EAAkBv/C,SAAS+9B,cAAc,kDAC3CuhB,GACFA,EAAgBn0C,SAEdo0C,GACFA,EAAgBp0C,SAElB,MAAMq0C,GAAW,EAAIC,EAAa9uC,aAAaC,GACzC8uC,EAAU1/C,SAASnI,cAAc,UACvC6nD,EAAQxnB,QAAQynB,UAAY,GAC5BD,EAAQjiB,WAAY,EAAImiB,EAAaz+B,kBAAkB,CACrDpQ,QAASyuC,IAEXx/C,SAASu+B,KAAKlG,YAAYqnB,EAC5B,EAtBA,IAAIE,EAAe,EAAQ,MACvBH,EAAe,EAAQ,yCCH3BvqD,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAEIe,EAAUC,EAFD,EAAQ,OAMjBC,EAAeD,EAFD,EAAQ,OAI1B,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAI9F,SAASY,EAA2BH,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAI/O,IAAI6oD,EAAc,SAAUnpD,GAG1B,SAASmpD,IACP,IAAI7hD,EAEA8xB,EAAOjuB,GAZf,SAAyBlL,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAcpJC,CAAgBC,KAAM+oD,GAEtB,IAAK,IAAItwC,EAAOjY,UAAU3C,OAAQT,EAAO6X,MAAMwD,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3Etb,EAAKsb,GAAQlY,UAAUkY,GAGzB,OAAesgB,EAASjuB,EAAQ3K,EAA2BJ,MAAOkH,EAAO6hD,EAAY1oD,WAAajC,OAAOkC,eAAeyoD,IAAc7oD,KAAKK,MAAM2G,EAAM,CAAClH,MAAM2Y,OAAOvb,KAAiB2N,EAAM6D,OAAS,WACnM,OAAOvP,EAAQK,QAAQqB,cACrB,IACAgK,EAAMrM,MACNqM,EAAMrM,MAAMsC,SAEhB,EAAWZ,EAA2B2K,EAAnCiuB,EACL,CAEA,OAzBF,SAAmBv4B,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CAG3eI,CAAUioD,EAAanpD,GAsBhBmpD,CACT,CAxBkB,CAwBhB1pD,EAAQK,QAAQuB,WAIlB/D,EAAA,SAAkB,EAAIqC,EAAaG,SAASqpD,sEC/C5C,MCgBA,SAAcjO,GAGb,OAFAA,EAAMA,GAAO18C,OAAOuC,OAAO,MAEpB,CAQNqoD,GAAI,SAAY9jD,EAAcoJ,IAC5BwsC,EAAI51C,KAAU41C,EAAI51C,GAAQ,KAAKc,KAAKsI,EACtC,EASA26C,IAAK,SAAa/jD,EAAcoJ,GAC3BwsC,EAAI51C,IACP41C,EAAI51C,GAAMyjB,OAAOmyB,EAAI51C,GAAMrB,QAAQyK,KAAa,EAAG,EAErD,EAUA2jC,KAAM,SAAc/sC,EAAcgkD,IAChCpO,EAAI51C,IAAS,IAAI8b,QAAQxjB,KAAI,SAAU8Q,GAAWA,EAAQ46C,EAAM,KAChEpO,EAAI,MAAQ,IAAI95B,QAAQxjB,KAAI,SAAU8Q,GAAWA,EAAQpJ,EAAMgkD,EAAM,GACvE,EAEF,CD1DgBC,yBEFhBhjD,EAAOjJ,QAAU,CAAC,CACZO,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,GAAK,OAAO,sBAAuB,EAAM,iBAAmB,KAAK,qBAAuB,sBAAsB,yBAA0B,EAAM,iBAAmB,mCAAmC,eAAiB,WAC5O,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,KAAO,yBAAyB,WAAa,UAAU,UAAY,IAAI,iBAAmB,UAAU,QAAU,aAAa,KAAO,yBAAyB,QAAS,EAAK,qBAAsB,EAAK,mBAAqB,QAAQ,YAAc,YAAY,iBAAkB,EAAK,YAAc,qCACvT,CACAF,OAAQX,EAAQ,KAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,GAAG,aAAe,OAAO,YAAa,EAAM,gBAAiB,IACjF,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,KACpB,CACAF,OAAQX,EAAQ,MAChBa,QAAS,CAAC,QAAU,yCCrB1BS,OAAOC,eAAenB,EAAS,aAAc,CAC3CoB,OAAO,IAGT,IAAIiK,EAAWnK,OAAOoK,QAAU,SAAU/J,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI6B,UAAU3C,OAAQc,IAAK,CAAE,IAAI8J,EAASjI,UAAU7B,GAAI,IAAK,IAAIK,KAAOyJ,EAAcrK,OAAOgB,UAAUsJ,eAAexI,KAAKuI,EAAQzJ,KAAQP,EAAOO,GAAOyJ,EAAOzJ,GAAU,CAAE,OAAOP,CAAQ,EAE3PF,EAAe,WAAc,SAASC,EAAiBC,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAMb,OAAQc,IAAK,CAAE,IAAIC,EAAaF,EAAMC,GAAIC,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMX,OAAOC,eAAeI,EAAQG,EAAWI,IAAKJ,EAAa,CAAE,CAAE,OAAO,SAAUK,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAYV,EAAiBS,EAAYG,UAAWF,GAAiBC,GAAaX,EAAiBS,EAAaE,GAAqBF,CAAa,CAAG,CAA7hB,GAIfI,EAAUC,EAFD,EAAQ,OAUjB8/B,GAJa9/B,EAFD,EAAQ,MAMPA,EAFD,EAAQ,OAMpBugB,EAAcvgB,EAFD,EAAQ,OAIzB,SAASA,EAAuBE,GAAO,OAAOA,GAAOA,EAAIC,WAAaD,EAAM,CAAEE,QAASF,EAAO,CAQ9FtC,EAAA,QAAkB,SAAU+D,GAC1B,IAAI2S,EAAU,SAAUhU,GAGtB,SAASgU,EAAQlV,IAVrB,SAAyBmB,EAAUZ,GAAe,KAAMY,aAAoBZ,GAAgB,MAAM,IAAIa,UAAU,oCAAwC,CAWlJC,CAAgBC,KAAM4T,GAEtB,IAAI7I,EAXV,SAAoC9K,EAAMC,GAAQ,IAAKD,EAAQ,MAAM,IAAIE,eAAe,6DAAgE,OAAOD,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BD,EAAPC,CAAa,CAW7NE,CAA2BJ,MAAO4T,EAAQvT,WAAajC,OAAOkC,eAAesT,IAAU1T,KAAKF,KAAMtB,IAK9G,OAHAqM,EAAM+I,cAAgB,CACpBC,QAAS,MAEJhJ,CACT,CAqCA,OApDJ,SAAmBtK,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIZ,UAAU,kEAAoEY,GAAeD,EAASrB,UAAYhB,OAAOuC,OAAOD,GAAcA,EAAWtB,UAAW,CAAEwB,YAAa,CAAEtC,MAAOmC,EAAU5B,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAe4B,IAAYtC,OAAOyC,eAAiBzC,OAAOyC,eAAeJ,EAAUC,GAAcD,EAASJ,UAAYK,EAAY,CAIzeI,CAAU8S,EAAShU,GAanBrB,EAAaqV,EAAS,CAAC,CACrB5U,IAAK,oBACLV,MAAO,WACL,GAAsB,oBAAX8I,OACT,OAAO,EAETpH,KAAKgU,cAAchU,KAAKtB,MAAMsE,KAChC,GACC,CACDhE,IAAK,qBACLV,MAAO,SAA4B0N,GAC7BhM,KAAKtB,MAAMsE,OAASgJ,EAAUhJ,MAChChD,KAAKgU,cAAchU,KAAKtB,MAAMsE,KAElC,GACC,CACDhE,IAAK,uBACLV,MAAO,WACL,GAAsB,oBAAX8I,OACT,OAAO,EAETg4B,EAAW1/B,QAAQuJ,WAAWjJ,KAAKtB,MAAMsE,KAC3C,GACC,CACDhE,IAAK,gBACLV,MAAO,SAAuB0E,GAC5Bo8B,EAAW1/B,QAAQgI,SAAS1E,EAAMhD,KAAK8T,cAAcC,QACvD,GACC,CACD/U,IAAK,SACLV,MAAO,WACL,OAAOe,EAAQK,QAAQqB,cAAcE,EAAWsH,EAAS,CAAC,EAAGvI,KAAKtB,MAAO,CAAEuV,eAAgBjU,KAAK8T,gBAClG,KAGKF,CACT,CAlDc,CAkDZvU,EAAQK,QAAQuB,WASlB,OALA2S,EAAQzE,UAAY,CAClBnM,KAAM6c,EAAYngB,QAAQ2Q,OAC1BtN,GAAI8c,EAAYngB,QAAQ2Q,QAGnBuD,CACT,4JCpFO,MAAMw1C,EACXxf,GAEKA,EACDA,SAAAA,EAAMyf,WACF,GAAN1wC,QAAAqR,EAAAA,EAAAA,GACKo/B,EAAiBxf,EAAKyf,aAAW,CACpC,CACEtmD,GAAI6mC,EAAK7mC,GACTysC,IAAK5F,EAAK0f,KACVC,MAAO3f,EAAK4f,cAAgB5f,EAAK6f,QACjCC,QAAS9f,EAAK8f,WAGb,CACL,CACE3mD,GAAI6mC,EAAK7mC,GACTysC,IAAK5F,EAAK0f,KACVC,MAAO3f,EAAK4f,cAAgB5f,EAAK6f,QACjCC,QAAS9f,EAAK8f,UAhBA,GAwBdC,EAAiB/f,GACjBA,SAAAA,EAAMyf,WAAmBM,EAAc/f,EAAKyf,YAAc,IAAMzf,EAAK0f,KAClE1f,EAAK0f,KAuCDM,EACXxuC,IAEA,GAAKA,EAAL,CAEA,GAAoB,iBAATA,EAAmB,CAAC,IAADyuC,EAE5B,IAAIC,EAAW1uC,EAAKuI,MAAM,KAC1B,MAEMomC,IAF0B,QAAnBF,EAAGC,EAASE,eAAO,IAAAH,OAAA,EAAhBA,EAAkBv3C,QAEL,KAC1B7L,QAAQ,0BAA2B,QACnCA,QAAQ,MAAO,KACfA,QAAQ,OAAQ,KAChB0W,cAEH,OAAI2sC,EAASjsD,OAAe,CAACksD,EAAWD,GAAUroC,KAAK,KAChDsoC,CACT,CAEA,OAAOH,EArDsBhgB,KAAsB,IAADqgB,EAClD,IAAKrgB,IAASA,EAAK0f,KAAM,OAEzB,IAAI9Z,EACJ,OAAQ5F,SAAc,QAAVqgB,EAAJrgB,EAAMhF,gBAAQ,IAAAqlB,OAAV,EAAJA,EAAgB/kD,MACtB,IAAK,wBACHsqC,EAAM,IAAIma,EAAc/f,KACxB,MACF,IAAK,wBACH4F,EAAM,SAAS5F,EAAK0f,OACpB,MACF,IAAK,0BACH9Z,EAAM,iBAAiB5F,EAAK0f,OAC5B,MACF,IAAK,yBACH9Z,EAAM,eAAe5F,EAAK0f,OAC1B,MACF,QACE9Z,EAAM,IAAI5F,EAAK0f,OAGnB,OAAO9Z,CAAG,EAgCU0a,CAAsB9uC,GAjBf,CAiBqB,EAgBrC+uC,EAAcjjD,IAQV,IAADkjD,EAAA,IARY,IAC1B5a,EAAG,KACH5F,EAAI,MACJygB,EAAK,UACLC,EAAS,QACTC,EAAO,SACPC,EAAQ,YACRC,GACSvjD,EAET,GAAImjD,EAAO,MAAO,CAAE7a,IAAe,QAAZ4a,EAAEC,EAAMK,YAAI,IAAAN,OAAA,EAAVA,EAAY5a,IAAK8a,WAAW,GAGrD,GAAI1gB,EAAM,CACR,MAAMgX,EACuB,OAA3B6J,aAAW,EAAXA,EAAa1pC,OAAO,IAAa0pC,EAAY1mD,UAAU,GAAK0mD,EAE9D,MAAO,CACLjb,IAAK,GAAGoa,EAAahgB,KAAQ6gB,EAAc,IAAI7J,IAAU,KACzD0J,UAAWA,EACXC,QAASA,IAAW,EACpBC,SAAUA,IAAY,EAE1B,CAGA,GAAIhb,EAAK,CACP,MAAMmb,GAAc,YAAYnsC,KAAKgxB,GACrC,MAAO,CACLA,IAAKA,EACL8a,UAAWA,GAAaK,EACxBJ,QAASA,GAAWI,EACpBH,SAAUA,GAAYG,EAE1B,CAEgB,EAmBL1H,EAAe7nC,GACrBA,EACEA,EAAK3U,QAAQ,0BAA2B,QAD7B,sEC3KpB,MAAMjJ,EAAM,IAAI2a,QAET,SAASwwB,IACd,MAAMiiB,EAAiB9tD,EAAQ,MAY/B,MAAO,CAAE8R,OAVMA,CAAC3N,EAAW+e,KACzB,IAAInB,EAAOrhB,EAAIqF,IAAImd,GACdnB,GACHrhB,EAAIiG,IAAIuc,EAAKnB,EAAO+rC,EAAeC,WAAW7qC,IAEhDnB,EAAKjQ,OAAO3N,EAAU,EAKPmzC,QAFDA,CAACnzC,EAAW+e,IAAO4qC,EAAeE,YAAY9qC,EAAI/e,GAGpE,oBCTA,IAMI8pD,EAAkB,GAElBC,EAAgD,mBAAjBC,aAEnC,SAAS7nD,EAAG8nD,EAAKC,GAAO,OAAO,EAAM,EAAMA,EAAM,EAAMD,CAAK,CAC5D,SAAS9mD,EAAG8mD,EAAKC,GAAO,OAAO,EAAMA,EAAM,EAAMD,CAAK,CACtD,SAAS7nD,EAAG6nD,GAAY,OAAO,EAAMA,CAAK,CAG1C,SAASE,EAAYC,EAAIH,EAAKC,GAAO,QAAS/nD,EAAE8nD,EAAKC,GAAOE,EAAKjnD,EAAE8mD,EAAKC,IAAQE,EAAKhoD,EAAE6nD,IAAQG,CAAI,CAGnG,SAASC,EAAUD,EAAIH,EAAKC,GAAO,OAAO,EAAM/nD,EAAE8nD,EAAKC,GAAOE,EAAKA,EAAK,EAAMjnD,EAAE8mD,EAAKC,GAAOE,EAAKhoD,EAAE6nD,EAAM,CA4BzG,SAASK,EAActoD,GACrB,OAAOA,CACT,CAEAkD,EAAOjJ,QAAU,SAAiBsuD,EAAKC,EAAKC,EAAKC,GAC/C,KAAM,GAAKH,GAAOA,GAAO,GAAK,GAAKE,GAAOA,GAAO,GAC/C,MAAM,IAAI/nD,MAAM,2CAGlB,GAAI6nD,IAAQC,GAAOC,IAAQC,EACzB,OAAOJ,EAKT,IADA,IAAIK,EAAeZ,EAAwB,IAAIC,aAvD1B,IAuD2D,IAAIh2C,MAvD/D,IAwDZtW,EAAI,EAAGA,EAxDK,KAwDmBA,EACtCitD,EAAajtD,GAAKysD,EAAWzsD,EAAIosD,EAAiBS,EAAKE,GAGzD,SAASG,EAAUC,GAKjB,IAJA,IAAIC,EAAgB,EAChBC,EAAgB,EACHC,KAEVD,GAAgCJ,EAAaI,IAAkBF,IAAME,EAC1ED,GAAiBhB,IAEjBiB,EAGF,IACIE,EAAYH,GADJD,EAAKF,EAAaI,KAAmBJ,EAAaI,EAAgB,GAAKJ,EAAaI,IACzDjB,EAEnCoB,EAAeb,EAASY,EAAWV,EAAKE,GAC5C,OAAIS,GA/Ee,KAiCvB,SAA+BL,EAAIM,EAASZ,EAAKE,GAChD,IAAK,IAAI/sD,EAAI,EAAGA,EAnCO,IAmCkBA,EAAG,CAC1C,IAAI0tD,EAAef,EAASc,EAASZ,EAAKE,GAC1C,GAAqB,IAAjBW,EACF,OAAOD,EAGTA,IADehB,EAAWgB,EAASZ,EAAKE,GAAOI,GACzBO,CACxB,CACA,OAAOD,CACR,CAqCaE,CAAqBR,EAAII,EAAWV,EAAKE,GACtB,IAAjBS,EACFD,EA/Db,SAA0BJ,EAAIS,EAAIC,EAAIhB,EAAKE,GACzC,IAAIe,EAAUC,EAAU/tD,EAAI,EAC5B,IAEE8tD,EAAWrB,EADXsB,EAAWH,GAAMC,EAAKD,GAAM,EACIf,EAAKE,GAAOI,GAC7B,EACbU,EAAKE,EAELH,EAAKG,QAEAr5C,KAAKwf,IAAI45B,GA5BQ,QA4B+B9tD,EA3B1B,IA4B/B,OAAO+tD,CACT,CAqDaC,CAAgBb,EAAIC,EAAeA,EAAgBhB,EAAiBS,EAAKE,EAEpF,CAEA,OAAO,SAAuBzoD,GAE5B,OAAU,IAANA,EACK,EAEC,IAANA,EACK,EAEFmoD,EAAWS,EAAS5oD,GAAIwoD,EAAKE,EACtC,CACF","sources":["webpack://gatsby-starter-default/./.cache/api-runner-browser.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Button.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/cjs/react-server-dom-webpack.production.min.js","webpack://gatsby-starter-default/./node_modules/invariant/browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/node_modules/escape-string-regexp/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-layout/wrap-page.js","webpack://gatsby-starter-default/./.cache/register-service-worker.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroller.js","webpack://gatsby-starter-default/./.cache/create-content-digest-browser-shim.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/config.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/Transition.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/cancel-events.js","webpack://gatsby-starter-default/./.cache/public-page-renderer-prod.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-layout/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/Helpers.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-events.js","webpack://gatsby-starter-default/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/default-options.js","webpack://gatsby-starter-default/./.cache/slice/context.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/utils/reflow.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://gatsby-starter-default/./.cache/public-page-renderer.js","webpack://gatsby-starter-default/./node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/utils.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/get-forwards.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-hash.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/catch-links.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-catch-links/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Element.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/passive-event-listeners.js","webpack://gatsby-starter-default/./src/utils/index.ts","webpack://gatsby-starter-default/./src/utils/property.ts","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-spy.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://gatsby-starter-default/./node_modules/@builder.io/partytown/integration/index.cjs","webpack://gatsby-starter-default/./node_modules/parallax-controller/dist/parallax-controller.esm.js","webpack://gatsby-starter-default/./node_modules/react-scroll-parallax/dist/react-scroll-parallax.esm.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://gatsby-starter-default/./.cache/slice/server-slice-renderer.js","webpack://gatsby-starter-default/./.cache/slice/server-slice.js","webpack://gatsby-starter-default/./.cache/slice/inline-slice.js","webpack://gatsby-starter-default/./.cache/slice.js","webpack://gatsby-starter-default/./.cache/gatsby-browser-entry.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-link.js","webpack://gatsby-starter-default/./node_modules/gatsby-script/dist/index.modern.mjs","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://gatsby-starter-default/./node_modules/lodash.throttle/index.js","webpack://gatsby-starter-default/./src/utils/arrays.ts","webpack://gatsby-starter-default/./.cache/head/components/fire-callback-in-effect.js","webpack://gatsby-starter-default/./.cache/head/constants.js","webpack://gatsby-starter-default/./.cache/head/utils.js","webpack://gatsby-starter-default/./.cache/head/head-export-handler-for-browser.js","webpack://gatsby-starter-default/./.cache/page-renderer.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://gatsby-starter-default/./src/utils/cart.ts","webpack://gatsby-starter-default/./src/context/Cart/CartReducer.tsx","webpack://gatsby-starter-default/./src/context/Cart/CartState.tsx","webpack://gatsby-starter-default/./gatsby-browser.tsx","webpack://gatsby-starter-default/./src/context/Cart/CartContext.tsx","webpack://gatsby-starter-default/./node_modules/gatsby-page-utils/dist/apply-trailing-slash-option.js","webpack://gatsby-starter-default/./node_modules/@gatsbyjs/reach-router/dist/index.modern.mjs","webpack://gatsby-starter-default/./.cache/redirect-utils.js","webpack://gatsby-starter-default/./.cache/route-announcer-props.js","webpack://gatsby-starter-default/./.cache/navigation.js","webpack://gatsby-starter-default/./node_modules/shallow-compare/es/index.js","webpack://gatsby-starter-default/./.cache/ensure-resources.js","webpack://gatsby-starter-default/./.cache/production-app.js","webpack://gatsby-starter-default/./.cache/prefetch.js","webpack://gatsby-starter-default/./.cache/loader.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/index.js","webpack://gatsby-starter-default/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://gatsby-starter-default/./node_modules/gatsby-react-router-scroll/index.js","webpack://gatsby-starter-default/./node_modules/gatsby-link/dist/index.modern.mjs","webpack://gatsby-starter-default/./.cache/static-query.js","webpack://gatsby-starter-default/./.cache/context-utils.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/TransitionGroupContext.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/animate-scroll.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://gatsby-starter-default/./src/context/Property/PropertyContext.tsx","webpack://gatsby-starter-default/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://gatsby-starter-default/./node_modules/react-server-dom-webpack/index.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/smooth.js","webpack://gatsby-starter-default/./src/context/CaseStudy/CaseStudyContext.tsx","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/utils/ChildMapping.js","webpack://gatsby-starter-default/./node_modules/react-transition-group/esm/TransitionGroup.js","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://gatsby-starter-default/./src/components/Layout/Transition.tsx","webpack://gatsby-starter-default/./src/components/ParallaxRouteUpdate.tsx","webpack://gatsby-starter-default/./src/components/SvgSprite.tsx","webpack://gatsby-starter-default/./src/components/SvgSpriteButtons.tsx","webpack://gatsby-starter-default/./src/layouts/index.tsx","webpack://gatsby-starter-default/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://gatsby-starter-default/./.cache/strip-prefix.js","webpack://gatsby-starter-default/./.cache/normalize-page-path.js","webpack://gatsby-starter-default/./.cache/find-path.js","webpack://gatsby-starter-default/./src/context/Article/ArticleContext.tsx","webpack://gatsby-starter-default/./node_modules/gatsby/dist/internal-plugins/partytown/utils/inject-partytown-snippet.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/components/Link.js","webpack://gatsby-starter-default/./.cache/emitter.js","webpack://gatsby-starter-default/./node_modules/mitt/dist/mitt.es.js","webpack://gatsby-starter-default/./.cache/api-runner-browser-plugins.js","webpack://gatsby-starter-default/./node_modules/react-scroll/modules/mixins/scroll-element.js","webpack://gatsby-starter-default/./src/utils/links.ts","webpack://gatsby-starter-default/./.cache/react-dom-utils.js","webpack://gatsby-starter-default/./node_modules/bezier-easing/src/index.js"],"sourcesContent":["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","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar ButtonElement = function (_React$Component) {\n  _inherits(ButtonElement, _React$Component);\n\n  function ButtonElement() {\n    _classCallCheck(this, ButtonElement);\n\n    return _possibleConstructorReturn(this, (ButtonElement.__proto__ || Object.getPrototypeOf(ButtonElement)).apply(this, arguments));\n  }\n\n  _createClass(ButtonElement, [{\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(\n        'button',\n        this.props,\n        this.props.children\n      );\n    }\n  }]);\n\n  return ButtonElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(ButtonElement);","/**\n * @license React\n * react-server-dom-webpack.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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'use strict';var k=require(\"react\"),l={stream:!0},n=new Map,p=Symbol.for(\"react.element\"),q=Symbol.for(\"react.lazy\"),r=Symbol.for(\"react.default_value\"),t=k.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ContextRegistry;function u(a){t[a]||(t[a]=k.createServerContext(a,r));return t[a]}function v(a,b,c){this._status=a;this._value=b;this._response=c}v.prototype.then=function(a){0===this._status?(null===this._value&&(this._value=[]),this._value.push(a)):a()};\nfunction w(a){switch(a._status){case 3:return a._value;case 1:var b=JSON.parse(a._value,a._response._fromJSON);a._status=3;return a._value=b;case 2:b=a._value;for(var c=b.chunks,d=0;d<c.length;d++){var e=n.get(c[d]);if(null!==e)throw e;}c=__webpack_require__(b.id);b=\"*\"===b.name?c:\"\"===b.name?c.__esModule?c.default:c:c[b.name];a._status=3;return a._value=b;case 0:throw a;default:throw a._value;}}function x(){var a=y(this,0);return w(a)}function z(a,b){return new v(3,b,a)}\nfunction A(a){if(null!==a)for(var b=0;b<a.length;b++)(0,a[b])()}function C(a,b){if(0===a._status){var c=a._value;a._status=4;a._value=b;A(c)}}function D(a,b){a._chunks.forEach(function(a){C(a,b)})}function y(a,b){var c=a._chunks,d=c.get(b);d||(d=new v(0,null,a),c.set(b,d));return d}\nfunction E(a,b,c){switch(c[0]){case \"$\":if(\"$\"===c)return p;if(\"$\"===c[1]||\"@\"===c[1])return c.substring(1);b=parseInt(c.substring(1),16);a=y(a,b);return w(a);case \"@\":return b=parseInt(c.substring(1),16),a=y(a,b),{$$typeof:q,_payload:a,_init:w}}return c}function F(a){D(a,Error(\"Connection closed.\"))}\nfunction G(a,b){if(\"\"!==b){var c=b[0],d=b.indexOf(\":\",1),e=parseInt(b.substring(1,d),16);d=b.substring(d+1);switch(c){case \"J\":b=a._chunks;(c=b.get(e))?0===c._status&&(a=c._value,c._status=1,c._value=d,A(a)):b.set(e,new v(1,d,a));break;case \"M\":b=a._chunks;c=b.get(e);d=JSON.parse(d,a._fromJSON);var f=a._bundlerConfig;d=f?f[d.id][d.name]:d;f=d.chunks;for(var h=0;h<f.length;h++){var g=f[h];if(void 0===n.get(g)){var B=__webpack_chunk_load__(g),m=n.set.bind(n,g,null),J=n.set.bind(n,g);B.then(m,J);n.set(g,\nB)}}c?0===c._status&&(a=c._value,c._status=2,c._value=d,A(a)):b.set(e,new v(2,d,a));break;case \"P\":a._chunks.set(e,z(a,u(d).Provider));break;case \"S\":c=JSON.parse(d);a._chunks.set(e,z(a,Symbol.for(c)));break;case \"E\":b=JSON.parse(d);c=Error(b.message);c.stack=b.stack;b=a._chunks;(d=b.get(e))?C(d,c):b.set(e,new v(4,c,a));break;default:throw Error(\"Error parsing the data. It's probably an error code or network corruption.\");}}}\nfunction H(a){return function(b,c){return\"string\"===typeof c?E(a,this,c):\"object\"===typeof c&&null!==c?(b=c[0]===p?{$$typeof:p,type:c[1],key:c[2],ref:null,props:c[3],_owner:null}:c,b):c}}function I(a){var b=new TextDecoder,c=new Map;a={_bundlerConfig:a,_chunks:c,readRoot:x,_partialRow:\"\",_stringDecoder:b};a._fromJSON=H(a);return a}\nfunction K(a,b){function c(b){var h=b.value;if(b.done)F(a);else{b=h;h=a._stringDecoder;for(var g=b.indexOf(10);-1<g;){var f=a._partialRow;var m=b.subarray(0,g);m=h.decode(m);G(a,f+m);a._partialRow=\"\";b=b.subarray(g+1);g=b.indexOf(10)}a._partialRow+=h.decode(b,l);return e.read().then(c,d)}}function d(b){D(a,b)}var e=b.getReader();e.read().then(c,d)}exports.createFromFetch=function(a,b){var c=I(b&&b.moduleMap?b.moduleMap:null);a.then(function(a){K(c,a.body)},function(a){D(c,a)});return c};\nexports.createFromReadableStream=function(a,b){b=I(b&&b.moduleMap?b.moduleMap:null);K(b,a);return b};\nexports.createFromXHR=function(a,b){function c(){for(var b=a.responseText,c=f,d=b.indexOf(\"\\n\",c);-1<d;)c=e._partialRow+b.substring(c,d),G(e,c),e._partialRow=\"\",c=d+1,d=b.indexOf(\"\\n\",c);e._partialRow+=b.substring(c);f=b.length}function d(){D(e,new TypeError(\"Network error\"))}var e=I(b&&b.moduleMap?b.moduleMap:null),f=0;a.addEventListener(\"progress\",c);a.addEventListener(\"load\",function(){c();F(e)});a.addEventListener(\"error\",d);a.addEventListener(\"abort\",d);a.addEventListener(\"timeout\",d);return e};\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","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","\"use strict\";\n\nvar React = require(\"react\");\nvar preferDefault = function preferDefault(m) {\n  return m && m.default || m;\n};\nvar Layout;\ntry {\n  Layout = preferDefault(require(GATSBY_LAYOUT_COMPONENT_PATH));\n} catch (e) {\n  if (e.toString().indexOf(\"Error: Cannot find module\") !== -1) {\n    throw new Error(\"Couldn't find layout component at \\\"\" + GATSBY_LAYOUT_COMPONENT_PATH + \".\\n\\n\" + \"Please create layout component in that location or specify path to layout component in gatsby-config.js\");\n  } else {\n    // Logging the error for debugging older browsers as there is no way\n    // to wrap the thrown error in a try/catch.\n    console.error(e);\n    throw e;\n  }\n}\n\n// eslint-disable-next-line react/prop-types,react/display-name\nmodule.exports = function (_ref) {\n  var element = _ref.element,\n    props = _ref.props;\n  return /*#__PURE__*/React.createElement(Layout, props, element);\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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _animateScroll = require('./animate-scroll');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar __mapped = {};\nvar __activeLink = void 0;\n\nexports.default = {\n\n  unmount: function unmount() {\n    __mapped = {};\n  },\n\n  register: function register(name, element) {\n    __mapped[name] = element;\n  },\n\n  unregister: function unregister(name) {\n    delete __mapped[name];\n  },\n\n  get: function get(name) {\n    return __mapped[name] || document.getElementById(name) || document.getElementsByName(name)[0] || document.getElementsByClassName(name)[0];\n  },\n\n  setActiveLink: function setActiveLink(link) {\n    return __activeLink = link;\n  },\n\n  getActiveLink: function getActiveLink() {\n    return __activeLink;\n  },\n\n  scrollTo: function scrollTo(to, props) {\n\n    var target = this.get(to);\n\n    if (!target) {\n      console.warn(\"target Element not found\");\n      return;\n    }\n\n    props = _extends({}, props, { absolute: false });\n\n    var containerId = props.containerId;\n    var container = props.container;\n\n    var containerElement = void 0;\n    if (containerId) {\n      containerElement = document.getElementById(containerId);\n    } else if (container && container.nodeType) {\n      containerElement = container;\n    } else {\n      containerElement = document;\n    }\n\n    props.absolute = true;\n\n    var horizontal = props.horizontal;\n    var scrollOffset = _utils2.default.scrollOffset(containerElement, target, horizontal) + (props.offset || 0);\n\n    /*\r\n     * if animate is not provided just scroll into the view\r\n     */\n    if (!props.smooth) {\n      if (_scrollEvents2.default.registered['begin']) {\n        _scrollEvents2.default.registered['begin'](to, target);\n      }\n\n      if (containerElement === document) {\n        if (props.horizontal) {\n          window.scrollTo(scrollOffset, 0);\n        } else {\n          window.scrollTo(0, scrollOffset);\n        }\n      } else {\n        containerElement.scrollTop = scrollOffset;\n      }\n\n      if (_scrollEvents2.default.registered['end']) {\n        _scrollEvents2.default.registered['end'](to, target);\n      }\n\n      return;\n    }\n\n    /*\r\n     * Animate scrolling\r\n     */\n\n    _animateScroll2.default.animateTopScroll(scrollOffset, props, to, target);\n  }\n};","exports.createContentDigest = () => ``\n","export default {\n  disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\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\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar events = ['mousedown', 'wheel', 'touchmove', 'keydown'];\n\nexports.default = {\n  subscribe: function subscribe(cancelEvent) {\n    return typeof document !== 'undefined' && events.forEach(function (event) {\n      return (0, _passiveEventListeners.addPassiveEventListener)(document, event, cancelEvent);\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","\"use strict\";\n\nexports.wrapPageElement = require(\"./wrap-page\");","\"use strict\";\n\n/* DEPRECATED */\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\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\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\nvar utils = require('./utils');\nvar scrollSpy = require('./scroll-spy');\nvar defaultScroller = require('./scroller');\nvar PropTypes = require('prop-types');\nvar scrollHash = require('./scroll-hash');\n\nvar protoTypes = {\n  to: PropTypes.string.isRequired,\n  containerId: PropTypes.string,\n  container: PropTypes.object,\n  activeClass: PropTypes.string,\n  spy: PropTypes.bool,\n  smooth: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  offset: PropTypes.number,\n  delay: PropTypes.number,\n  isDynamic: PropTypes.bool,\n  onClick: PropTypes.func,\n  duration: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),\n  absolute: PropTypes.bool,\n  onSetActive: PropTypes.func,\n  onSetInactive: PropTypes.func,\n  ignoreCancelEvents: PropTypes.bool,\n  hashSpy: PropTypes.bool,\n  spyThrottle: PropTypes.number\n};\n\nvar Helpers = {\n  Scroll: function Scroll(Component, customScroller) {\n\n    console.warn(\"Helpers.Scroll is deprecated since v1.7.0\");\n\n    var scroller = customScroller || defaultScroller;\n\n    var Scroll = function (_React$Component) {\n      _inherits(Scroll, _React$Component);\n\n      function Scroll(props) {\n        _classCallCheck(this, Scroll);\n\n        var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, props));\n\n        _initialiseProps.call(_this);\n\n        _this.state = {\n          active: false\n        };\n        return _this;\n      }\n\n      _createClass(Scroll, [{\n        key: 'getScrollSpyContainer',\n        value: function getScrollSpyContainer() {\n          var containerId = this.props.containerId;\n          var container = this.props.container;\n\n          if (containerId) {\n            return document.getElementById(containerId);\n          }\n\n          if (container && container.nodeType) {\n            return container;\n          }\n\n          return document;\n        }\n      }, {\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n          if (this.props.spy || this.props.hashSpy) {\n            var scrollSpyContainer = this.getScrollSpyContainer();\n\n            if (!scrollSpy.isMounted(scrollSpyContainer)) {\n              scrollSpy.mount(scrollSpyContainer, this.props.spyThrottle);\n            }\n\n            if (this.props.hashSpy) {\n              if (!scrollHash.isMounted()) {\n                scrollHash.mount(scroller);\n              }\n              scrollHash.mapContainer(this.props.to, scrollSpyContainer);\n            }\n\n            if (this.props.spy) {\n              scrollSpy.addStateHandler(this.stateHandler);\n            }\n\n            scrollSpy.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n            this.setState({\n              container: scrollSpyContainer\n            });\n          }\n        }\n      }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n          scrollSpy.unmount(this.stateHandler, this.spyHandler);\n        }\n      }, {\n        key: 'render',\n        value: function render() {\n          var className = \"\";\n\n          if (this.state && this.state.active) {\n            className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n          } else {\n            className = this.props.className;\n          }\n\n          var props = _extends({}, this.props);\n\n          for (var prop in protoTypes) {\n            if (props.hasOwnProperty(prop)) {\n              delete props[prop];\n            }\n          }\n\n          props.className = className;\n          props.onClick = this.handleClick;\n\n          return React.createElement(Component, props);\n        }\n      }]);\n\n      return Scroll;\n    }(React.Component);\n\n    var _initialiseProps = function _initialiseProps() {\n      var _this2 = this;\n\n      this.scrollTo = function (to, props) {\n        scroller.scrollTo(to, _extends({}, _this2.state, props));\n      };\n\n      this.handleClick = function (event) {\n\n        /*\r\n         * give the posibility to override onClick\r\n         */\n\n        if (_this2.props.onClick) {\n          _this2.props.onClick(event);\n        }\n\n        /*\r\n         * dont bubble the navigation\r\n         */\n\n        if (event.stopPropagation) event.stopPropagation();\n        if (event.preventDefault) event.preventDefault();\n\n        /*\r\n         * do the magic!\r\n         */\n        _this2.scrollTo(_this2.props.to, _this2.props);\n      };\n\n      this.stateHandler = function () {\n        if (scroller.getActiveLink() !== _this2.props.to) {\n          if (_this2.state !== null && _this2.state.active && _this2.props.onSetInactive) {\n            _this2.props.onSetInactive();\n          }\n          _this2.setState({ active: false });\n        }\n      };\n\n      this.spyHandler = function (y) {\n\n        var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n        if (scrollHash.isMounted() && !scrollHash.isInitialized()) {\n          return;\n        }\n\n        var to = _this2.props.to;\n        var element = null;\n        var elemTopBound = 0;\n        var elemBottomBound = 0;\n        var containerTop = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerTop = containerCords.top;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var cords = element.getBoundingClientRect();\n          elemTopBound = cords.top - containerTop + y;\n          elemBottomBound = elemTopBound + cords.height;\n        }\n\n        var offsetY = y - _this2.props.offset;\n        var isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n        var isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n        var activeLink = scroller.getActiveLink();\n\n        if (isOutside) {\n          if (to === activeLink) {\n            scroller.setActiveLink(void 0);\n          }\n\n          if (_this2.props.hashSpy && scrollHash.getHash() === to) {\n            scrollHash.changeHash();\n          }\n\n          if (_this2.props.spy && _this2.state.active) {\n            _this2.setState({ active: false });\n            _this2.props.onSetInactive && _this2.props.onSetInactive();\n          }\n\n          return scrollSpy.updateStates();\n        }\n\n        if (isInside && activeLink !== to) {\n          scroller.setActiveLink(to);\n\n          _this2.props.hashSpy && scrollHash.changeHash(to);\n\n          if (_this2.props.spy) {\n            _this2.setState({ active: true });\n            _this2.props.onSetActive && _this2.props.onSetActive(to);\n          }\n          return scrollSpy.updateStates();\n        }\n      };\n    };\n\n    ;\n\n    Scroll.propTypes = protoTypes;\n\n    Scroll.defaultProps = { offset: 0 };\n\n    return Scroll;\n  },\n  Element: function Element(Component) {\n\n    console.warn(\"Helpers.Element is deprecated since v1.7.0\");\n\n    var Element = function (_React$Component2) {\n      _inherits(Element, _React$Component2);\n\n      function Element(props) {\n        _classCallCheck(this, Element);\n\n        var _this3 = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n        _this3.childBindings = {\n          domNode: null\n        };\n        return _this3;\n      }\n\n      _createClass(Element, [{\n        key: 'componentDidMount',\n        value: function componentDidMount() {\n          if (typeof window === 'undefined') {\n            return false;\n          }\n          this.registerElems(this.props.name);\n        }\n      }, {\n        key: 'componentDidUpdate',\n        value: function componentDidUpdate(prevProps) {\n          if (this.props.name !== prevProps.name) {\n            this.registerElems(this.props.name);\n          }\n        }\n      }, {\n        key: 'componentWillUnmount',\n        value: function componentWillUnmount() {\n          if (typeof window === 'undefined') {\n            return false;\n          }\n          defaultScroller.unregister(this.props.name);\n        }\n      }, {\n        key: 'registerElems',\n        value: function registerElems(name) {\n          defaultScroller.register(name, this.childBindings.domNode);\n        }\n      }, {\n        key: 'render',\n        value: function render() {\n          return React.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n        }\n      }]);\n\n      return Element;\n    }(React.Component);\n\n    ;\n\n    Element.propTypes = {\n      name: PropTypes.string,\n      id: PropTypes.string\n    };\n\n    return Element;\n  }\n};\n\nmodule.exports = Helpers;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar Events = {\n\tregistered: {},\n\tscrollEvent: {\n\t\tregister: function register(evtName, callback) {\n\t\t\tEvents.registered[evtName] = callback;\n\t\t},\n\t\tremove: function remove(evtName) {\n\t\t\tEvents.registered[evtName] = null;\n\t\t}\n\t}\n};\n\nexports.default = Events;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _default = {\n  respectDNT: false,\n  productionOnly: true\n};\nexports.default = _default;","import React from \"react\"\n\nconst SlicesResultsContext = React.createContext({})\nconst SlicesContext = React.createContext({})\nconst SlicesMapContext = React.createContext({})\nconst SlicesPropsContext = React.createContext({})\n\nexport {\n  SlicesResultsContext,\n  SlicesContext,\n  SlicesMapContext,\n  SlicesPropsContext,\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.onInitialClientRender = void 0;\nvar _gatsbyScript = require(\"gatsby-script\");\nvar _injectPartytownSnippet = require(\"./utils/inject-partytown-snippet\");\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));\n\n  // Clear scripts after we've used them to avoid leaky behavior\n  _gatsbyScript.collectedScriptsByPage.delete(window.location.pathname);\n};\n\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.\nexports.onInitialClientRender = onInitialClientRender;\n//# sourceMappingURL=gatsby-browser.js.map","export var forceReflow = function forceReflow(node) {\n  return node.scrollTop;\n};","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.onRouteUpdate = onRouteUpdate;\nvar _defaultOptions = _interopRequireDefault(require(\"./default-options\"));\nfunction onRouteUpdate(_ref, pluginOptions) {\n  var location = _ref.location;\n  var _Object$assign = Object.assign({}, _defaultOptions.default, pluginOptions),\n    productionOnly = _Object$assign.productionOnly;\n  if (productionOnly && process.env.NODE_ENV !== 'production' || !Array.isArray(window._hsq)) {\n    return;\n  }\n\n  // wrap inside a timeout to make sure react-helmet is done with it's changes (https://github.com/gatsbyjs/gatsby/issues/9139)\n  // react-helmet is using requestAnimationFrame (https://github.com/nfl/react-helmet/blob/5.2.0/src/HelmetUtils.js#L296-L299)\n  var trackPageView = function trackPageView() {\n    var path = location ? location.pathname + location.search + location.hash : undefined;\n    window._hsq.push(['setPath', path]);\n    window._hsq.push(['trackPageView']);\n  };\n  if (typeof window.requestAnimationFrame === 'function') {\n    window.requestAnimationFrame(function () {\n      window.requestAnimationFrame(trackPageView);\n    });\n  } else {\n    // simulate 2 requestAnimationFrame calls\n    setTimeout(trackPageView, 32);\n  }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar updateHash = function updateHash(hash, historyUpdate) {\n  var hashVal = hash.indexOf(\"#\") === 0 ? hash.substring(1) : hash;\n  var hashToUpdate = hashVal ? \"#\" + hashVal : \"\";\n  var curLoc = window && window.location;\n  var urlToPush = hashToUpdate ? curLoc.pathname + curLoc.search + hashToUpdate : curLoc.pathname + curLoc.search;\n  historyUpdate ? history.pushState(history.state, \"\", urlToPush) : history.replaceState(history.state, \"\", urlToPush);\n};\n\nvar getHash = function getHash() {\n  return window.location.hash.replace(/^#/, \"\");\n};\n\nvar filterElementInContainer = function filterElementInContainer(container) {\n  return function (element) {\n    return container.contains ? container != element && container.contains(element) : !!(container.compareDocumentPosition(element) & 16);\n  };\n};\n\nvar isPositioned = function isPositioned(element) {\n  return getComputedStyle(element).position !== \"static\";\n};\n\nvar getElementOffsetInfoUntil = function getElementOffsetInfoUntil(element, predicate) {\n  var offsetTop = element.offsetTop;\n  var currentOffsetParent = element.offsetParent;\n\n  while (currentOffsetParent && !predicate(currentOffsetParent)) {\n    offsetTop += currentOffsetParent.offsetTop;\n    currentOffsetParent = currentOffsetParent.offsetParent;\n  }\n\n  return { offsetTop: offsetTop, offsetParent: currentOffsetParent };\n};\n\nvar scrollOffset = function scrollOffset(c, t, horizontal) {\n  if (horizontal) {\n    return c === document ? t.getBoundingClientRect().left + (window.scrollX || window.pageXOffset) : getComputedStyle(c).position !== \"static\" ? t.offsetLeft : t.offsetLeft - c.offsetLeft;\n  } else {\n    if (c === document) {\n      return t.getBoundingClientRect().top + (window.scrollY || window.pageYOffset);\n    }\n\n    // The offsetParent of an element, according to MDN, is its nearest positioned\n    // (an element whose position is anything other than static) ancestor. The offsetTop\n    // of an element is taken with respect to its offsetParent which may not neccessarily\n    // be its parentElement except the parent itself is positioned.\n\n    // So if containerElement is positioned, then it must be an offsetParent somewhere\n    // If it happens that targetElement is a descendant of the containerElement, and there\n    // is not intermediate positioned element between the two of them, i.e.\n    // targetElement\"s offsetParent is the same as the containerElement, then the\n    // distance between the two will be the offsetTop of the targetElement.\n    // If, on the other hand, there are intermediate positioned elements between the\n    // two entities, the distance between the targetElement and the containerElement\n    // will be the accumulation of the offsetTop of the element and that of its\n    // subsequent offsetParent until the containerElement is reached, since it\n    // will also be an offsetParent at some point due to the fact that it is positioned.\n\n    // If the containerElement is not positioned, then it can\"t be an offsetParent,\n    // which means that the offsetTop of the targetElement would not be with respect to it.\n    // However, if the two of them happen to have the same offsetParent, then\n    // the distance between them will be the difference between their offsetTop\n    // since they are both taken with respect to the same entity.\n    // The last resort would be to accumulate their offsetTop until a common\n    // offsetParent is reached (usually the document) and taking the difference\n    // between the accumulated offsetTops\n\n    if (isPositioned(c)) {\n      if (t.offsetParent !== c) {\n        var isContainerElementOrDocument = function isContainerElementOrDocument(e) {\n          return e === c || e === document;\n        };\n\n        var _getElementOffsetInfo = getElementOffsetInfoUntil(t, isContainerElementOrDocument),\n            offsetTop = _getElementOffsetInfo.offsetTop,\n            offsetParent = _getElementOffsetInfo.offsetParent;\n\n        if (offsetParent !== c) {\n          throw new Error(\"Seems containerElement is not an ancestor of the Element\");\n        }\n\n        return offsetTop;\n      }\n\n      return t.offsetTop;\n    }\n\n    if (t.offsetParent === c.offsetParent) {\n      return t.offsetTop - c.offsetTop;\n    }\n\n    var isDocument = function isDocument(e) {\n      return e === document;\n    };\n    return getElementOffsetInfoUntil(t, isDocument).offsetTop - getElementOffsetInfoUntil(c, isDocument).offsetTop;\n  }\n};\n\nexports.default = {\n  updateHash: updateHash,\n  getHash: getHash,\n  filterElementInContainer: filterElementInContainer,\n  scrollOffset: scrollOffset\n};","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _sessionStorage = require(\"./session-storage\");\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); }\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; }\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n  (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n  function ScrollHandler() {\n    var _this;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\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    _this.scrollListener = function () {\n      _this._latestKnownScrollY = window.scrollY;\n      if (!_this._isTicking) {\n        _this._isTicking = true;\n        requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n      }\n    };\n    _this.windowScroll = function (position, prevProps) {\n      if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n        window.scrollTo(0, position);\n      }\n    };\n    _this.scrollToHash = function (hash, prevProps) {\n      var node = document.getElementById(hash.substring(1));\n      if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n        node.scrollIntoView();\n      }\n    };\n    _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n      var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n      if (!shouldUpdateScroll) {\n        return true;\n      }\n\n      // Hack to allow accessing this._stateStorage.\n      return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n    };\n    return _this;\n  }\n  var _proto = ScrollHandler.prototype;\n  _proto._saveScroll = function _saveScroll() {\n    var key = this.props.location.key || null;\n    if (key) {\n      this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n    }\n    this._isTicking = false;\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    if (key) {\n      scrollPosition = this._stateStorage.read(this.props.location, key);\n    }\n\n    /** If a hash is present in the browser url as the component mounts (i.e. the user is navigating\n     * from an external website) then scroll to the hash instead of any previously stored scroll\n     * position. */\n    if (hash) {\n      this.scrollToHash(decodeURI(hash), undefined);\n    } else if (scrollPosition) {\n      this.windowScroll(scrollPosition, undefined);\n    }\n  };\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    window.removeEventListener(\"scroll\", this.scrollListener);\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    if (key) {\n      scrollPosition = this._stateStorage.read(this.props.location, key);\n    }\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    if (hash) {\n      this.scrollToHash(decodeURI(hash), prevProps);\n    } else {\n      this.windowScroll(scrollPosition, prevProps);\n    }\n  };\n  _proto.render = function render() {\n    return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n      value: this._stateStorage\n    }, this.props.children);\n  };\n  return ScrollHandler;\n}(React.Component);\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.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}\n//# sourceMappingURL=get-forwards.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nvar _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar scrollHash = {\n  mountFlag: false,\n  initialized: false,\n  scroller: null,\n  containers: {},\n\n  mount: function mount(scroller) {\n    this.scroller = scroller;\n\n    this.handleHashChange = this.handleHashChange.bind(this);\n    window.addEventListener('hashchange', this.handleHashChange);\n\n    this.initStateFromHash();\n    this.mountFlag = true;\n  },\n  mapContainer: function mapContainer(to, container) {\n    this.containers[to] = container;\n  },\n  isMounted: function isMounted() {\n    return this.mountFlag;\n  },\n  isInitialized: function isInitialized() {\n    return this.initialized;\n  },\n  initStateFromHash: function initStateFromHash() {\n    var _this = this;\n\n    var hash = this.getHash();\n    if (hash) {\n      window.setTimeout(function () {\n        _this.scrollTo(hash, true);\n        _this.initialized = true;\n      }, 10);\n    } else {\n      this.initialized = true;\n    }\n  },\n  scrollTo: function scrollTo(to, isInit) {\n    var scroller = this.scroller;\n    var element = scroller.get(to);\n    if (element && (isInit || to !== scroller.getActiveLink())) {\n      var container = this.containers[to] || document;\n      scroller.scrollTo(to, { container: container });\n    }\n  },\n  getHash: function getHash() {\n    return _utils2.default.getHash();\n  },\n  changeHash: function changeHash(to, saveHashHistory) {\n    if (this.isInitialized() && _utils2.default.getHash() !== to) {\n      _utils2.default.updateHash(to, saveHashHistory);\n    }\n  },\n  handleHashChange: function handleHashChange() {\n    this.scrollTo(this.getHash());\n  },\n  unmount: function unmount() {\n    this.scroller = null;\n    this.containers = null;\n    window.removeEventListener('hashchange', this.handleHashChange);\n  }\n};\n\nexports.default = scrollHash;","const listOfMetricsSend = new Set();\nfunction debounce(fn, timeout) {\n  let timer = null;\n  return function (...args) {\n    if (timer) {\n      clearTimeout(timer);\n    }\n    timer = setTimeout(fn, timeout, ...args);\n  };\n}\nfunction sendWebVitals(dataLayerName = `dataLayer`) {\n  const win = window;\n  function sendData(data) {\n    if (listOfMetricsSend.has(data.name)) {\n      return;\n    }\n    listOfMetricsSend.add(data.name);\n    sendToGTM(data, win[dataLayerName]);\n  }\n  return import(`web-vitals/base`).then(({\n    getLCP,\n    getFID,\n    getCLS\n  }) => {\n    const debouncedCLS = debounce(sendData, 3000);\n    // we don't need to debounce FID - we send it when it happens\n    const debouncedFID = sendData;\n    // LCP can occur multiple times so we debounce it\n    const debouncedLCP = debounce(sendData, 3000);\n\n    // With the true flag, we measure all previous occurences too, in case we start listening to late.\n    getCLS(debouncedCLS, true);\n    getFID(debouncedFID, true);\n    getLCP(debouncedLCP, true);\n  });\n}\nfunction sendToGTM({\n  name,\n  value,\n  id\n}, dataLayer) {\n  dataLayer.push({\n    event: `core-web-vitals`,\n    webVitalsMeasurement: {\n      name: name,\n      // The `id` value will be unique to the current page load. When sending\n      // multiple values from the same page (e.g. for CLS), Google Analytics can\n      // compute a total by grouping on this ID (note: requires `eventLabel` to\n      // be a dimension in your report).\n      id,\n      // Google Analytics metrics must be integers, so the value is rounded.\n      // For CLS the value is first multiplied by 1000 for greater precision\n      // (note: increase the multiplier for greater precision if needed).\n      value: Math.round(name === `CLS` ? value * 1000 : value)\n    }\n  });\n}\nexport function onRouteUpdate(_, pluginOptions) {\n  if (process.env.NODE_ENV === `production` || pluginOptions.includeInDevelopment) {\n    // wrap inside a timeout to ensure the title has properly been changed\n    setTimeout(() => {\n      const data = pluginOptions.dataLayerName ? window[pluginOptions.dataLayerName] : window.dataLayer;\n      const eventName = pluginOptions.routeChangeEventName ? pluginOptions.routeChangeEventName : `gatsby-route-change`;\n      data.push({\n        event: eventName\n      });\n    }, 50);\n  }\n}\nexport function onInitialClientRender(_, pluginOptions) {\n  // we only load the polyfill in production so we can't enable it in development\n  if (process.env.NODE_ENV === `production` && pluginOptions.enableWebVitalsTracking) {\n    sendWebVitals(pluginOptions.dataLayerName);\n  }\n}","function _setPrototypeOf(t, e) {\n  return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import escapeStringRegexp from \"escape-string-regexp\";\nimport { withPrefix } from \"gatsby\";\nexport const userIsForcingNavigation = event => event.button !== 0 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n// IE does not include leading slash in anchor.pathname\nexport const slashedPathname = pathname => pathname[0] === `/` ? pathname : `/${pathname}`;\nexport const navigationWasHandledElsewhere = event => event.defaultPrevented;\nexport const findClosestAnchor = node => {\n  for (; node.parentNode; node = node.parentNode) {\n    if (node.nodeName.toLowerCase() === `a`) {\n      return node;\n    }\n  }\n  return null;\n};\nexport const anchorsTargetIsEquivalentToSelf = anchor => /* If target attribute is not present it's treated as _self */\nanchor.hasAttribute(`target`) === false ||\n/**\n * The browser defaults to _self, but, not all browsers set\n * a.target to the string value `_self` by default\n */\n\n/**\n * Assumption: some browsers use null/undefined for default\n * attribute values\n */\nanchor.target == null ||\n/**\n * Some browsers use the empty string to mean _self, check\n * for actual `_self`\n */\n[`_self`, ``].includes(anchor.target) ||\n/**\n * As per https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-target\n */\nanchor.target === `_parent` && (!anchor.ownerDocument.defaultView.parent ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.parent === anchor.ownerDocument.defaultView) || anchor.target === `_top` && (!anchor.ownerDocument.defaultView.top ||\n// Assumption: This can be falsey\nanchor.ownerDocument.defaultView.top === anchor.ownerDocument.defaultView);\nexport const authorIsForcingNavigation = anchor =>\n/**\n * HTML5 attribute that informs the browser to handle the\n * href as a downloadable file; let the browser handle it\n */\nanchor.hasAttribute(`download`) === true ||\n/**\n * Let the browser handle anything that doesn't look like a\n * target=\"_self\" anchor\n */\nanchorsTargetIsEquivalentToSelf(anchor) === false;\n\n// https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\nexport const urlsAreOnSameOrigin = (origin, destination) => origin.protocol === destination.protocol && /* a.host includes both hostname and port in the expected format host:port */\norigin.host === destination.host;\nexport const pathIsNotHandledByApp = (destination, pathStartRegEx) => {\n  const pathFileExtensionRegEx = /^.*\\.((?!htm)[a-z0-9]{1,5})$/i;\n  return (\n    /**\n     * For when pathPrefix is used in an app and there happens to be a link\n     * pointing to the same domain but outside of the app's pathPrefix. For\n     * example, a Gatsby app lives at https://example.com/myapp/, with the\n     * pathPrefix set to `/myapp`. When adding an absolute link to the same\n     * domain but outside of the /myapp path, for example, `<a\n     * href=\"https://example.com/not-my-app\">` the plugin won't catch it and\n     * will navigate to an external link instead of doing a pushState resulting\n     * in `https://example.com/myapp/https://example.com/not-my-app`\n     */\n    pathStartRegEx.test(slashedPathname(destination.pathname)) === false ||\n    /**\n     * Don't catch links pointed at what look like file extensions (other than\n     * .htm/html extensions).\n     */\n    destination.pathname.search(pathFileExtensionRegEx) !== -1\n  );\n};\nexport const hashShouldBeFollowed = (origin, destination) => destination.hash !== `` && (\n/**\n * Dynamically created anchor links (href=\"#my-anchor\") do not always\n * have pathname on IE\n */\ndestination.pathname === `` || /* Don't catch links pointed to the same page but with a hash. */\ndestination.pathname === origin.pathname);\nexport const routeThroughBrowserOrApp = (hrefHandler, pluginOptions) => event => {\n  if (window.___failedResources) return true;\n  if (userIsForcingNavigation(event)) return true;\n  if (navigationWasHandledElsewhere(event)) return true;\n  const clickedAnchor = findClosestAnchor(event.target);\n  if (clickedAnchor == null) return true;\n  if (authorIsForcingNavigation(clickedAnchor)) return true;\n\n  // IE clears the host value if the anchor href changed after creation, e.g.\n  // in React. Creating a new anchor element to ensure host value is present\n  const destination = document.createElement(`a`);\n\n  // https://html.spec.whatwg.org/multipage/links.html#concept-hyperlink-url-set\n  // If clickedAnchor has no href attribute like `<a>example</a>`, the href getter returns empty string.\n  if (clickedAnchor.href !== ``) {\n    destination.href = clickedAnchor.href;\n  }\n  if (`SVGAnimatedString` in window && clickedAnchor.href instanceof SVGAnimatedString) {\n    destination.href = clickedAnchor.href.animVal;\n  }\n\n  // In IE, the default port is included in the anchor host but excluded from\n  // the location host.  This affects the ability to directly compare\n  // location host to anchor host.  For example: http://example.com would\n  // have a location.host of 'example.com' and an destination.host of\n  // 'example.com:80' Creating anchor from the location.href to normalize the\n  // host value.\n  const origin = document.createElement(`a`);\n  origin.href = window.location.href;\n  if (urlsAreOnSameOrigin(origin, destination) === false) return true;\n\n  // Regex to test pathname against pathPrefix\n  const pathStartRegEx = new RegExp(`^${escapeStringRegexp(withPrefix(`/`))}`);\n  if (pathIsNotHandledByApp(destination, pathStartRegEx)) return true;\n  if (hashShouldBeFollowed(origin, destination)) return true;\n  if (pluginOptions.excludePattern) {\n    const excludeRegex = new RegExp(pluginOptions.excludePattern);\n    if (excludeRegex.test(destination.pathname)) {\n      return true;\n    }\n  }\n  event.preventDefault();\n\n  // See issue #8907: destination.pathname already includes pathPrefix added\n  // by gatsby-transformer-remark but gatsby-link.navigate needs href without\n  const destinationPathname = slashedPathname(destination.pathname).replace(pathStartRegEx, `/`);\n  hrefHandler(`${destinationPathname}${destination.search}${destination.hash}`);\n  return false;\n};\nexport default function (root, pluginOptions, cb) {\n  const clickHandler = routeThroughBrowserOrApp(cb, pluginOptions);\n  root.addEventListener(`click`, clickHandler);\n  return () => root.removeEventListener(`click`, clickHandler);\n}","import { navigate } from \"gatsby\";\nimport catchLinks from \"./catch-links\";\nexport const onClientEntry = (_, pluginOptions = {}) => {\n  catchLinks(window, pluginOptions, href => {\n    navigate(href);\n  });\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\nvar _scrollHandler = require(\"./scroll-handler\");\nvar _react = require(\"react\");\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\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}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollElement = require('../mixins/scroll-element');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar ElementWrapper = function (_React$Component) {\n  _inherits(ElementWrapper, _React$Component);\n\n  function ElementWrapper() {\n    _classCallCheck(this, ElementWrapper);\n\n    return _possibleConstructorReturn(this, (ElementWrapper.__proto__ || Object.getPrototypeOf(ElementWrapper)).apply(this, arguments));\n  }\n\n  _createClass(ElementWrapper, [{\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      // Remove `parentBindings` and `name` from props\n      var newProps = _extends({}, this.props);\n      delete newProps.name;\n      if (newProps.parentBindings) {\n        delete newProps.parentBindings;\n      }\n\n      return _react2.default.createElement(\n        'div',\n        _extends({}, newProps, { ref: function ref(el) {\n            _this2.props.parentBindings.domNode = el;\n          } }),\n        this.props.children\n      );\n    }\n  }]);\n\n  return ElementWrapper;\n}(_react2.default.Component);\n\n;\n\nElementWrapper.propTypes = {\n  name: _propTypes2.default.string,\n  id: _propTypes2.default.string\n};\n\nexports.default = (0, _scrollElement2.default)(ElementWrapper);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n/*\r\n * Tell the browser that the event listener won't prevent a scroll.\r\n * Allowing the browser to continue scrolling without having to\r\n * to wait for the listener to return.\r\n */\nvar addPassiveEventListener = exports.addPassiveEventListener = function addPassiveEventListener(target, eventName, listener) {\n  var listenerName = listener.name;\n  if (!listenerName) {\n    listenerName = eventName;\n    console.warn('Listener must be a named function.');\n  }\n\n  if (!attachedListeners.has(eventName)) attachedListeners.set(eventName, new Set());\n  var listeners = attachedListeners.get(eventName);\n  if (listeners.has(listenerName)) return;\n\n  var supportsPassiveOption = function () {\n    var supportsPassiveOption = false;\n    try {\n      var opts = Object.defineProperty({}, 'passive', {\n        get: function get() {\n          supportsPassiveOption = true;\n        }\n      });\n      window.addEventListener('test', null, opts);\n    } catch (e) {}\n    return supportsPassiveOption;\n  }();\n  target.addEventListener(eventName, listener, supportsPassiveOption ? { passive: true } : false);\n  listeners.add(listenerName);\n};\n\nvar removePassiveEventListener = exports.removePassiveEventListener = function removePassiveEventListener(target, eventName, listener) {\n  target.removeEventListener(eventName, listener);\n  attachedListeners.get(eventName).delete(listener.name || eventName);\n};\n\nvar attachedListeners = new Map();","/****************************************************\n\n    Utilities\n\n****************************************************/\nimport { animateScroll as scroll } from \"react-scroll\"\n\n/******************************************************\n    Animate page scroll\n******************************************************/\nexport const scrollToRef = (\n  ref: React.RefObject<HTMLElement>,\n  offset: number = 0,\n  callback: () => void = () => {}\n) => {\n  if (ref?.current) {\n    const top = ref.current.getBoundingClientRect().top - offset\n    scroll.scrollMore(top, {\n      duration: 0,\n      smooth: \"linear\",\n      delay: 0,\n    })\n\n    setTimeout(() => callback(), 300)\n  }\n}\n\nexport const convertObjectToCamelCase = (o: any) => {\n  var newO: any, origKey, newKey, value\n  if (o instanceof Array) {\n    return o.map(function (value) {\n      if (typeof value === \"object\") {\n        value = convertObjectToCamelCase(value)\n      }\n      return value\n    })\n  } else {\n    newO = {}\n    for (origKey in o) {\n      if (o.hasOwnProperty(origKey)) {\n        newKey = (origKey.charAt(0).toLowerCase() + origKey.slice(1) || origKey)\n          .toString()\n          .replace(/_/g, \" \")\n          .replace(/ +/g, \" \")\n          .replace(/ /g, \"\")\n        value = o[origKey]\n        if (\n          value instanceof Array ||\n          (value !== null && value?.constructor === Object)\n        ) {\n          value = convertObjectToCamelCase(value)\n        }\n        newO[newKey] = value\n      }\n    }\n  }\n  return newO\n}\n","/****************************************************\n\n    Utilities - Properties\n\n****************************************************/\nimport { convertObjectToCamelCase } from \".\"\nimport { LatLng } from \"../components/PropertyLocation/PropertyLocation\"\nimport { UnitModel } from \"../models/component\"\nimport { PropertyModel } from \"../models/page\"\nimport { filterBoolean } from \"./arrays\"\n\nconst now = new Date(),\n  month = (\"0\" + (now.getMonth() + 1)).slice(-2),\n  day = (\"0\" + now.getDate()).slice(-2),\n  year = now.getFullYear(),\n  nowDateString = [year, month, day].join(\"/\")\n\n/****************************************************\n    Get property details - Yardi data with overrides\n****************************************************/\nexport const getPropertyDetails = (property?: PropertyModel) => {\n  if (!property) return undefined\n  const data = convertObjectToCamelCase(property.yardiData)\n  // console.log(\"data: \", data)\n\n  const propertyName = property.propertyName || data.propertyName\n  const streetAddress1 = property.streetAddress1 || data.streetAddress1\n  const streetAddress2 = property.streetAddress2 || data.streetAddress2\n  const city = property.city || data.city\n  const state = property.state || data.state\n  const postcode = property.postcode || data.postcode\n  const propertyType = property.propertyType || data.propertyType\n\n  return {\n    propertyName,\n    streetAddress1,\n    streetAddress2,\n    city,\n    state,\n    postcode,\n    propertyType,\n  }\n}\n\n/****************************************************\n    Get unit details - Yardi data with overrides\n****************************************************/\nexport const getUnitDetails = (unit?: UnitModel): UnitModel | undefined => {\n  if (!unit) return undefined\n  const data: UnitModel = convertObjectToCamelCase(unit.yardiData)\n  // console.log(\"data: \", data)\n\n  return {\n    ...unit,\n    id: unit.unitId || data.unitCode || \"\",\n    unitId: unit.unitId || data.unitCode,\n    unitName: unit.unitName || convertName(unit.unitId || data.unitCode),\n    unitType: unit.unitType || convertUnitType(data.unitType),\n    building: unit.building || data.building,\n    floor:\n      unit.floor || convertFloor(data.floor) || convertFloor(data.unitCode),\n    rentalType: unit.rentalType || data.rentalType,\n    area: unit.area || data.area,\n    marketRent: Number(unit.marketRent || data.marketRent).toFixed(2),\n    dateLeased:\n      convertCmsDate(unit.dateLeased) || convertYardiDate(data.dateLeased),\n    availabilityDate:\n      convertCmsDate(unit.availabilityDate) ||\n      convertYardiDate(data.availabilityDate) ||\n      nowDateString,\n  }\n}\n\nconst convertName = (code?: string) => {\n  if (!code) return undefined\n\n  if (code === \"Lower_GR\") return \"Lower Ground\"\n  if (code === \"Upper_GR\") return \"Upper Ground Floor\"\n  if (code === \"Roof\") return \"Rooftop\"\n  if (code === \"WHOLE\") return \"Warehouse\"\n\n  let output = code.trim()\n  if (/^\\d+$/.test(output)) return `Warehouse ${output}`\n\n  return output\n    .replace(\"BLDNG_\", \"Building \")\n    .replace(\"HS_\", \"Hardstand \")\n    .replace(\"OFF_\", \"Unit \")\n    .replace(\"OF_\", \"Unit \")\n    .replace(\"O_\", \"Unit \")\n    .replace(\"RET_\", \"Shop \")\n    .replace(\"WH_\", \"Warehouse \")\n    .replace(/_/, \" \")\n    .replace(/  /, \" \")\n}\n\nconst convertFloor = (floor?: string) => {\n  return convertName(floor)\n}\n\nconst convertUnitType = (unitType?: string) => {\n  if (unitType === \"BASE\") return \"Basement\"\n  if (unitType === \"CAFE\") return \"Cafe\"\n  if (unitType === \"COLD\") return \"Cold Store\"\n  if (unitType === \"COMM\") return \"Commercial\"\n  if (unitType === \"CP\") return \"Parking\"\n  if (unitType === \"HS\") return \"Hardstand\"\n  if (unitType === \"IND\") return \"Industrial\"\n  if (unitType === \"LOBBY\") return \"Lobby\"\n  if (unitType === \"MANUF\") return \"Manufacturing\"\n  if (unitType === \"OFF\") return \"Office\"\n  if (unitType === \"RET\") return \"Retail\"\n  if (unitType === \"SIGN\") return \"Signage\"\n  if (unitType === \"STOR\") return \"Storage\"\n  if (unitType === \"SUNDRY\") return \"Sundry\"\n  if (unitType === \"TELCO\") return \"Telecom\"\n  if (unitType === \"WARE\") return \"Warehouse\"\n  return undefined\n}\n\nconst convertYardiDate = (date?: string) => {\n  if (!date) return undefined\n  if (date.indexOf(\"/\") === 4) return convertDoubleDigitDate(date)\n  const dateParts = date.split(\"/\")\n  return convertDoubleDigitDate(\n    `${dateParts[2]}/${dateParts[1]}/${dateParts[0]}`,\n  )\n}\n\nconst convertCmsDate = (date?: string) => {\n  if (!date) return undefined\n  if (date.indexOf(\"/\") === 4) return convertDoubleDigitDate(date)\n  date = date.split(\"T\")[0] // remove time value if part of date\n  return convertDoubleDigitDate(date.replace(/-/g, \"/\"))\n}\n\nconst convertDoubleDigitDate = (date: string) => {\n  if (date.indexOf(\"/\") === 4) return date\n  return date\n    .split(\"/\")\n    .map(x => (x.length < 2 ? \"0\" + x : x))\n    .join(\"/\")\n}\n\n/******************************************************\n    Get units to display in availability table\n******************************************************/\nexport const getDisplayUnits = (units?: UnitModel[]) => {\n  if (!units) return undefined\n\n  // make sure units have been processed\n  const data = units.map(x => getUnitDetails(x)).filter(filterBoolean)\n\n  // get displayable units\n  const displayUnits = data\n    ?.map(item => {\n      if (!item.showUnit) return null\n      if (!item.area) return null\n      if (!item.availabilityDate) return null\n      return item\n    })\n    .filter(filterBoolean)\n\n  // sort units by availability date\n  const sorted = displayUnits.sort((a, b) => {\n    if (!a.availabilityDate) return -1\n    if (!b.availabilityDate) return 1\n    return a.availabilityDate < b.availabilityDate ? -1 : 1\n  })\n\n  return sorted\n}\n\n/******************************************************\n    Get property name\n******************************************************/\nexport const getPropertyName = (property?: PropertyModel) => {\n  if (!property) return undefined\n  const details = getPropertyDetails(property)\n\n  return (\n    details?.propertyName ||\n    details?.streetAddress2 ||\n    details?.streetAddress1 ||\n    \"\"\n  )\n}\n\n/******************************************************\n    Get property address\n******************************************************/\nexport const getPropertyAddress = (property?: PropertyModel) => {\n  if (!property) return undefined\n  const details = getPropertyDetails(property)\n  // console.log(\"details: \", details)\n  const state = [details?.state, details?.postcode]\n    .filter(filterBoolean)\n    .join(\" \")\n  const address = [\n    details?.streetAddress2 || details?.streetAddress1,\n    details?.city,\n    state,\n  ]\n    .map(x => x?.trim())\n    .filter(filterBoolean)\n  return address.length ? address.join(\", \") : undefined\n}\n\n/******************************************************\n    Get property certification\n******************************************************/\nexport const getPropertyCertifications = (property?: PropertyModel) => {\n  if (!property) return undefined\n\n  const parts = property.certifications || []\n  if (!parts.length) return undefined\n\n  const last = parts.length > 1 ? parts.pop() : undefined\n  return `${parts.join(\", \")} ${last ? ` and ${last}` : \"\"} certified`.replace(\n    / +/,\n    \" \",\n  )\n}\n\n/******************************************************\n    Get property type\n******************************************************/\nexport const getPropertyType = (property?: PropertyModel) => {\n  if (!property) return undefined\n  const details = getPropertyDetails(property)\n\n  if (details?.propertyType) return details.propertyType\n  if (!!property?.units?.length) {\n    return property?.units\n      .map((x: UnitModel) => getUnitDetails(x))\n      .map(x => x?.rentalType)\n      .filter(filterBoolean)\n      .pop()\n  }\n  return undefined\n}\n\n/******************************************************\n    Get property size - using units\n******************************************************/\nexport const getPropertySize = (units: UnitModel[] = []) => {\n  if (!units?.length) return undefined\n  const { min, sum } = getUnitSizeRange(units)\n\n  if (!min || !sum) return undefined\n  if (min === sum) return `${min.toLocaleString()} sqm`\n  return `${min.toLocaleString()} - ${sum.toLocaleString()} sqm`\n}\n\nexport const getUnitSizeRange = (units: UnitModel[] = []) => {\n  if (!units?.length)\n    return {\n      min: undefined,\n      sum: undefined,\n    }\n\n  const sizes = units\n    .filter(x => x.showUnit)\n    .map(x => Math.trunc(getUnitDetails(x)?.area || 0))\n    .filter(filterBoolean)\n    .sort((a, b) => a - b)\n  return {\n    min: sizes.length ? sizes[0] : undefined,\n    sum: sizes.reduce((partialSum, a) => partialSum + a, 0),\n  }\n}\n\n/******************************************************\n    Get property area - using property min/max fields\n******************************************************/\nexport const getPropertyArea = (\n  min: number | undefined,\n  max: number | undefined,\n) => {\n  if (!min && !max) return undefined\n  if (!min) return `${max?.toLocaleString()} sqm`\n  if (!max) return `${min.toLocaleString()} sqm`\n  if (min === max) return `${min.toLocaleString()} sqm`\n  return `${min.toLocaleString()} - ${max.toLocaleString()} sqm`\n}\n\n/******************************************************\n    Maps\n******************************************************/\nexport const isValidLat = (lat?: number) => lat && lat >= -90 && lat <= 90\nexport const isValidLng = (lng?: number) => lng && lng >= -180 && lng <= 180\n\n// haversine formula - easier than including the google.maps.geometry library\nexport const getDistanceInKm = (origin: LatLng, destination: LatLng) => {\n  var R = 6371 // Radius of the earth in km\n  var dLat = deg2rad(destination.lat - origin.lat) // deg2rad below\n  var dLon = deg2rad(destination.lng - origin.lng)\n  var a =\n    Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n    Math.cos(deg2rad(origin.lat)) *\n      Math.cos(deg2rad(destination.lat)) *\n      Math.sin(dLon / 2) *\n      Math.sin(dLon / 2)\n  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a))\n  var d = R * c // Distance in km\n  return d\n}\n\nconst deg2rad = (deg: number) => {\n  return deg * (Math.PI / 180)\n}\n\n/******************************************************\n\n\n    DATES\n\n    \n******************************************************/\n/******************************************************\n    Check if Fully Leased\n******************************************************/\nexport const checkFullyLeased = (property?: PropertyModel) => {\n  return !!property?.fullyLeased\n}\n\n/******************************************************\n    Get property availability\n******************************************************/\nexport const getAllAvailabilityDates = (property: PropertyModel) => {\n  if (!property || checkFullyLeased(property)) return []\n\n  // fully leased\n  if (checkFullyLeased(property)) return []\n\n  // development with label\n  if (property.development && property.availabilityLabel)\n    return [property.availabilityDate].filter(filterBoolean)\n\n  // non-yardi\n  if (property.development || property.nonYardi)\n    return [property.availabilityDate || nowDateString]\n\n  // properties\n  if (!property.units?.length) return []\n  return property.units\n    .filter(x => x.showUnit)\n    .map(x => getUnitDetails(x))\n    .map(unit => unit?.availabilityDate)\n    .filter(filterBoolean)\n    .sort()\n}\n\nexport const currentAvailabilityDate = (property: PropertyModel) => {\n  if (!property) return undefined\n\n  // fully leased\n  if (checkFullyLeased(property)) return undefined\n\n  // development with label\n  if (property.development && property.availabilityLabel)\n    return property.availabilityDate || undefined\n\n  // non-yardi\n  if (property.development || property.nonYardi)\n    return property.availabilityDate || nowDateString\n\n  // properties\n  if (!property.units?.length) return undefined\n  return getUnitDetails(earliestAvailability(property.units))?.availabilityDate\n}\n\nexport const currentAvailability = (property: PropertyModel) => {\n  if (!property) return undefined\n\n  // fully leased\n  if (checkFullyLeased(property))\n    return property.availabilityLabel || \"Fully leased\"\n\n  // development with label\n  if (property.development && property.availabilityLabel)\n    return property.availabilityLabel\n\n  return formatAvailability(currentAvailabilityDate(property))\n}\n\nexport const getUnitAvailability = (unit: UnitModel | undefined) => {\n  if (!unit) return undefined\n\n  const details = getUnitDetails(unit)\n  if (!details?.availabilityDate) return undefined\n\n  return formatAvailability(details?.availabilityDate)\n}\n\nexport const earliestAvailability = (units: UnitModel[] = []) => {\n  if (!units?.length) return undefined\n  const sorted =\n    units\n      .filter(x => x.showUnit)\n      .map(x => getUnitDetails(x))\n      .sort((a, b) =>\n        new Date(a?.availabilityDate || \"\") <\n        new Date(b?.availabilityDate || \"\")\n          ? -1\n          : 1,\n      ) || []\n  return sorted[0]\n}\n\n/******************************************************\n    Is the unit available now\n******************************************************/\n// export const isUnitAvailableNow = (unit: UnitModel) => {\n//   if (!unit || !unit.showUnit) return undefined\n//   const details = getUnitDetails(unit)\n//   if (!details?.availabilityDate) return false\n//   return new Date(details?.availabilityDate) < new Date()\n// }\n\n/******************************************************\n    Get the word version of the unit availability\n******************************************************/\n// export const getUnitAvailabilityTerm = (unit?: UnitModel) => {\n//   if (!unit) return undefined\n\n//   const details = getUnitDetails(unit)\n//   if (!details?.availabilityDate) return \"\"\n\n//   const now = new Date()\n//   const date = new Date(details?.availabilityDate)\n//   const sixMonths = addMonths(now, 6)\n//   const twelveMonths = addMonths(now, 12)\n\n//   if (date < now) return \"Available now\"\n//   if (date < sixMonths) return \"Within 6 months\"\n//   if (date < twelveMonths) return \"Within 6-12 months\"\n//   return \"12 months +\"\n// }\n\nconst getDaysInMonth = (year: number, month: number) =>\n  new Date(year, month, 0).getDate()\n\nexport const addMonths = (input: Date, months: number) => {\n  const date = new Date(input)\n  date.setDate(1)\n  date.setMonth(date.getMonth() + months)\n  date.setDate(\n    Math.min(\n      input.getDate(),\n      getDaysInMonth(date.getFullYear(), date.getMonth() + 1),\n    ),\n  )\n  return date\n}\n\nexport const formatAvailability = (dateString?: string | undefined) => {\n  if (!dateString) return undefined\n\n  const now = new Date()\n  const date = new Date(dateString + \" 0:00:00\")\n\n  if (isNaN(date.getTime())) return undefined\n  if (date <= now) return \"Available now\"\n\n  const month = date.getMonth()\n  const quarter = Math.floor(month / 3) + 1\n  return `Q${quarter} ${date.getFullYear()}`\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _passiveEventListeners = require('./passive-event-listeners');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The eventHandler will execute at a rate of 15fps by default\nvar eventThrottler = function eventThrottler(eventHandler) {\n  var throttleAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 66;\n  return (0, _lodash2.default)(eventHandler, throttleAmount);\n};\n\nvar scrollSpy = {\n\n  spyCallbacks: [],\n  spySetState: [],\n  scrollSpyContainers: [],\n\n  mount: function mount(scrollSpyContainer, throttle) {\n    if (scrollSpyContainer) {\n      var eventHandler = eventThrottler(function (event) {\n        scrollSpy.scrollHandler(scrollSpyContainer);\n      }, throttle);\n      scrollSpy.scrollSpyContainers.push(scrollSpyContainer);\n      (0, _passiveEventListeners.addPassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n      return function () {\n        (0, _passiveEventListeners.removePassiveEventListener)(scrollSpyContainer, 'scroll', eventHandler);\n        scrollSpy.scrollSpyContainers.splice(scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer), 1);\n      };\n    }\n    return function () {};\n  },\n  isMounted: function isMounted(scrollSpyContainer) {\n    return scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer) !== -1;\n  },\n  currentPositionX: function currentPositionX(scrollSpyContainer) {\n    if (scrollSpyContainer === document) {\n      var supportPageOffset = window.scrollY !== undefined;\n      var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n      return supportPageOffset ? window.scrollX : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n    } else {\n      return scrollSpyContainer.scrollLeft;\n    }\n  },\n  currentPositionY: function currentPositionY(scrollSpyContainer) {\n    if (scrollSpyContainer === document) {\n      var supportPageOffset = window.scrollX !== undefined;\n      var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n      return supportPageOffset ? window.scrollY : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n    } else {\n      return scrollSpyContainer.scrollTop;\n    }\n  },\n  scrollHandler: function scrollHandler(scrollSpyContainer) {\n    var callbacks = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)].spyCallbacks || [];\n    callbacks.forEach(function (c) {\n      return c(scrollSpy.currentPositionX(scrollSpyContainer), scrollSpy.currentPositionY(scrollSpyContainer));\n    });\n  },\n  addStateHandler: function addStateHandler(handler) {\n    scrollSpy.spySetState.push(handler);\n  },\n  addSpyHandler: function addSpyHandler(handler, scrollSpyContainer) {\n    var container = scrollSpy.scrollSpyContainers[scrollSpy.scrollSpyContainers.indexOf(scrollSpyContainer)];\n\n    if (!container.spyCallbacks) {\n      container.spyCallbacks = [];\n    }\n\n    container.spyCallbacks.push(handler);\n  },\n  updateStates: function updateStates() {\n    scrollSpy.spySetState.forEach(function (s) {\n      return s();\n    });\n  },\n  unmount: function unmount(stateHandler, spyHandler) {\n    scrollSpy.scrollSpyContainers.forEach(function (c) {\n      return c.spyCallbacks && c.spyCallbacks.length && c.spyCallbacks.indexOf(spyHandler) > -1 && c.spyCallbacks.splice(c.spyCallbacks.indexOf(spyHandler), 1);\n    });\n\n    if (scrollSpy.spySetState && scrollSpy.spySetState.length && scrollSpy.spySetState.indexOf(stateHandler) > -1) {\n      scrollSpy.spySetState.splice(scrollSpy.spySetState.indexOf(stateHandler), 1);\n    }\n\n    document.removeEventListener('scroll', scrollSpy.scrollHandler);\n  },\n\n\n  update: function update() {\n    return scrollSpy.scrollSpyContainers.forEach(function (c) {\n      return scrollSpy.scrollHandler(c);\n    });\n  }\n};\n\nexports.default = scrollSpy;","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\nvar SessionStorage = /*#__PURE__*/function () {\n  function SessionStorage() {}\n  var _proto = SessionStorage.prototype;\n  _proto.read = function read(location, key) {\n    var stateKey = this.getStateKey(location, key);\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      if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n        return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n      }\n      return 0;\n    }\n  };\n  _proto.save = function save(location, key, value) {\n    var stateKey = this.getStateKey(location, key);\n    var storedValue = JSON.stringify(value);\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      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  _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  return SessionStorage;\n}();\nexports.SessionStorage = SessionStorage;","function _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nexport { _arrayLikeToArray as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n  return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n  if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n  if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n  }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\nvar _gatsby = require(\"gatsby\");\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  if (!Array.isArray(localizedManifests)) {\n    return defaultFilename;\n  }\n  const localizedManifest = localizedManifests.find(app => {\n    let startUrl = app.start_url;\n    if (shouldPrependPathPrefix) {\n      startUrl = (0, _gatsby.withPrefix)(startUrl);\n    }\n    return pathname.startsWith(startUrl);\n  });\n  if (!localizedManifest) {\n    return defaultFilename;\n  }\n  return `manifest_${localizedManifest.lang}.webmanifest`;\n};\nexports.default = _default;","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst PartytownSnippet = \"/* Partytown 0.7.6 - 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(f,1e4),e.addEventListener(\\\"pt0\\\",w),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):f())))}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.7.6\\\":\\\"sandbox-sw.html?\\\"+Date.now()),e.body.appendChild(c)}function f(n,r){for(w(),i==t&&(o.forward||[]).map((function(e){delete t[e.split(\\\".\\\")[0]]})),n=0;n<s.length;n++)(r=e.createElement(\\\"script\\\")).innerHTML=s[n].innerHTML,e.head.appendChild(r);c&&c.parentNode.removeChild(c)}function w(){clearTimeout(d)}o=t.partytown||{},i==t&&(o.forward||[]).map((function(e){p=t,e.split(\\\".\\\").map((function(e,n,i){p=p[i[n]]=n+1<i.length?\\\"push\\\"==i[n+1]?[]:p[i[n]]||{}:function(){(t._ptf=t._ptf||[]).push(i,arguments)}}))})),\\\"complete\\\"==e.readyState?u():(t.addEventListener(\\\"DOMContentLoaded\\\",u),t.addEventListener(\\\"load\\\",u))}(window,document,navigator,top,window.crossOriginIsolated);\";\n\nconst createSnippet = (config, snippetCode) => {\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 `<script>` from executing on the main thread.\n * 2. Is used as a selector so the Partytown library can find all scripts to execute in a web worker.\n *\n * @public\n */\nconst SCRIPT_TYPE = `text/partytown`;\n\n/**\n * Function that returns the Partytown snippet as a string, which can be\n * used as the innerHTML of the inlined Partytown script in the head.\n *\n * @public\n */\nconst partytownSnippet = (config) => createSnippet(config, PartytownSnippet);\n\nexports.SCRIPT_TYPE = SCRIPT_TYPE;\nexports.partytownSnippet = partytownSnippet;\n","import bezier from 'bezier-easing';\n\nvar Limits = function Limits(properties) {\n  this.startX = properties.startX;\n  this.startY = properties.startY;\n  this.endX = properties.endX;\n  this.endY = properties.endY; // Used to calculate the progress of the element\n\n  this.totalX = this.endX - this.startX;\n  this.totalY = this.endY - this.startY; // Used to scale translate effects\n\n  this.startMultiplierX = properties.startMultiplierX || 1;\n  this.endMultiplierX = properties.endMultiplierX || 1;\n  this.startMultiplierY = properties.startMultiplierY || 1;\n  this.endMultiplierY = properties.endMultiplierY || 1;\n};\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nvar ValidCSSEffects;\n\n(function (ValidCSSEffects) {\n  ValidCSSEffects[\"speed\"] = \"speed\";\n  ValidCSSEffects[\"translateX\"] = \"translateX\";\n  ValidCSSEffects[\"translateY\"] = \"translateY\";\n  ValidCSSEffects[\"rotate\"] = \"rotate\";\n  ValidCSSEffects[\"rotateX\"] = \"rotateX\";\n  ValidCSSEffects[\"rotateY\"] = \"rotateY\";\n  ValidCSSEffects[\"rotateZ\"] = \"rotateZ\";\n  ValidCSSEffects[\"scale\"] = \"scale\";\n  ValidCSSEffects[\"scaleX\"] = \"scaleX\";\n  ValidCSSEffects[\"scaleY\"] = \"scaleY\";\n  ValidCSSEffects[\"scaleZ\"] = \"scaleZ\";\n  ValidCSSEffects[\"opacity\"] = \"opacity\";\n})(ValidCSSEffects || (ValidCSSEffects = {}));\n\nvar Units;\n\n(function (Units) {\n  Units[\"px\"] = \"px\";\n  Units[\"%\"] = \"%\";\n  Units[\"vh\"] = \"vh\";\n  Units[\"vw\"] = \"vw\";\n})(Units || (Units = {}));\n\nvar RotationUnits;\n\n(function (RotationUnits) {\n  RotationUnits[\"deg\"] = \"deg\";\n  RotationUnits[\"turn\"] = \"turn\";\n  RotationUnits[\"rad\"] = \"rad\";\n})(RotationUnits || (RotationUnits = {}));\n\nvar ScaleUnits;\n\n(function (ScaleUnits) {\n  ScaleUnits[\"\"] = \"\";\n})(ScaleUnits || (ScaleUnits = {}));\n\nvar ScrollAxis;\n\n(function (ScrollAxis) {\n  ScrollAxis[\"vertical\"] = \"vertical\";\n  ScrollAxis[\"horizontal\"] = \"horizontal\";\n})(ScrollAxis || (ScrollAxis = {}));\n\nvar EasingPreset;\n\n(function (EasingPreset) {\n  EasingPreset[\"ease\"] = \"ease\";\n  EasingPreset[\"easeIn\"] = \"easeIn\";\n  EasingPreset[\"easeOut\"] = \"easeOut\";\n  EasingPreset[\"easeInOut\"] = \"easeInOut\";\n  EasingPreset[\"easeInQuad\"] = \"easeInQuad\";\n  EasingPreset[\"easeInCubic\"] = \"easeInCubic\";\n  EasingPreset[\"easeInQuart\"] = \"easeInQuart\";\n  EasingPreset[\"easeInQuint\"] = \"easeInQuint\";\n  EasingPreset[\"easeInSine\"] = \"easeInSine\";\n  EasingPreset[\"easeInExpo\"] = \"easeInExpo\";\n  EasingPreset[\"easeInCirc\"] = \"easeInCirc\";\n  EasingPreset[\"easeOutQuad\"] = \"easeOutQuad\";\n  EasingPreset[\"easeOutCubic\"] = \"easeOutCubic\";\n  EasingPreset[\"easeOutQuart\"] = \"easeOutQuart\";\n  EasingPreset[\"easeOutQuint\"] = \"easeOutQuint\";\n  EasingPreset[\"easeOutSine\"] = \"easeOutSine\";\n  EasingPreset[\"easeOutExpo\"] = \"easeOutExpo\";\n  EasingPreset[\"easeOutCirc\"] = \"easeOutCirc\";\n  EasingPreset[\"easeInOutQuad\"] = \"easeInOutQuad\";\n  EasingPreset[\"easeInOutCubic\"] = \"easeInOutCubic\";\n  EasingPreset[\"easeInOutQuart\"] = \"easeInOutQuart\";\n  EasingPreset[\"easeInOutQuint\"] = \"easeInOutQuint\";\n  EasingPreset[\"easeInOutSine\"] = \"easeInOutSine\";\n  EasingPreset[\"easeInOutExpo\"] = \"easeInOutExpo\";\n  EasingPreset[\"easeInOutCirc\"] = \"easeInOutCirc\";\n  EasingPreset[\"easeInBack\"] = \"easeInBack\";\n  EasingPreset[\"easeOutBack\"] = \"easeOutBack\";\n  EasingPreset[\"easeInOutBack\"] = \"easeInOutBack\";\n})(EasingPreset || (EasingPreset = {}));\n\n/**\r\n * Creates a unique id to distinguish parallax elements.\r\n */\nvar id = 0;\nfunction createId() {\n  ++id;\n  return id;\n}\n\nvar Rect = /*#__PURE__*/function () {\n  function Rect(options) {\n    var rect = options.el.getBoundingClientRect(); // rect is based on viewport -- must adjust for relative scroll container\n\n    if (options.view.scrollContainer) {\n      var scrollRect = options.view.scrollContainer.getBoundingClientRect();\n      rect = _extends({}, rect, {\n        top: rect.top - scrollRect.top,\n        right: rect.right - scrollRect.left,\n        bottom: rect.bottom - scrollRect.top,\n        left: rect.left - scrollRect.left\n      });\n    }\n\n    this.height = options.el.offsetHeight;\n    this.width = options.el.offsetWidth;\n    this.left = rect.left;\n    this.right = rect.right;\n    this.top = rect.top;\n    this.bottom = rect.bottom;\n\n    if (options.rootMargin) {\n      this._setRectWithRootMargin(options.rootMargin);\n    }\n  }\n  /**\r\n   * Apply root margin to all properties\r\n   */\n\n\n  var _proto = Rect.prototype;\n\n  _proto._setRectWithRootMargin = function _setRectWithRootMargin(rootMargin) {\n    var totalRootY = rootMargin.top + rootMargin.bottom;\n    var totalRootX = rootMargin.left + rootMargin.right;\n    this.top -= rootMargin.top;\n    this.right += rootMargin.right;\n    this.bottom += rootMargin.bottom;\n    this.left -= rootMargin.left;\n    this.height += totalRootY;\n    this.width += totalRootX;\n  };\n\n  return Rect;\n}();\n\nvar VALID_UNITS = [ScaleUnits[''], Units.px, Units['%'], Units['vh'], Units['vw'], RotationUnits.deg, RotationUnits.turn, RotationUnits.rad];\n/**\r\n * Determines the unit of a string and parses the value\r\n */\n\nfunction parseValueAndUnit(str, defaultUnit) {\n  if (defaultUnit === void 0) {\n    defaultUnit = Units['%'];\n  }\n\n  var out = {\n    value: 0,\n    unit: defaultUnit\n  };\n  if (typeof str === 'undefined') return out;\n  var isValid = typeof str === 'number' || typeof str === 'string';\n\n  if (!isValid) {\n    throw new Error('Invalid value provided. Must provide a value as a string or number');\n  }\n\n  str = String(str);\n  out.value = parseFloat(str); // @ts-ignore\n\n  out.unit = str.match(/[\\d.\\-+]*\\s*(.*)/)[1] || defaultUnit; // @ts-expect-error\n\n  var isValidUnit = VALID_UNITS.includes(out.unit);\n\n  if (!isValidUnit) {\n    throw new Error('Invalid unit provided.');\n  }\n\n  return out;\n}\n\nvar easingPresets = {\n  ease: [0.25, 0.1, 0.25, 1.0],\n  easeIn: [0.42, 0.0, 1.0, 1.0],\n  easeOut: [0.0, 0.0, 0.58, 1.0],\n  easeInOut: [0.42, 0.0, 0.58, 1.0],\n\n  /* Ease IN curves */\n  easeInQuad: [0.55, 0.085, 0.68, 0.53],\n  easeInCubic: [0.55, 0.055, 0.675, 0.19],\n  easeInQuart: [0.895, 0.03, 0.685, 0.22],\n  easeInQuint: [0.755, 0.05, 0.855, 0.06],\n  easeInSine: [0.47, 0.0, 0.745, 0.715],\n  easeInExpo: [0.95, 0.05, 0.795, 0.035],\n  easeInCirc: [0.6, 0.04, 0.98, 0.335],\n\n  /* Ease Out Curves */\n  easeOutQuad: [0.25, 0.46, 0.45, 0.94],\n  easeOutCubic: [0.215, 0.61, 0.355, 1.0],\n  easeOutQuart: [0.165, 0.84, 0.44, 1.0],\n  easeOutQuint: [0.23, 1.0, 0.32, 1.0],\n  easeOutSine: [0.39, 0.575, 0.565, 1.0],\n  easeOutExpo: [0.19, 1.0, 0.22, 1.0],\n  easeOutCirc: [0.075, 0.82, 0.165, 1.0],\n\n  /* Ease IN Out Curves */\n  easeInOutQuad: [0.455, 0.03, 0.515, 0.955],\n  easeInOutCubic: [0.645, 0.045, 0.355, 1.0],\n  easeInOutQuart: [0.77, 0.0, 0.175, 1.0],\n  easeInOutQuint: [0.86, 0.0, 0.07, 1.0],\n  easeInOutSine: [0.445, 0.05, 0.55, 0.95],\n  easeInOutExpo: [1.0, 0.0, 0.0, 1.0],\n  easeInOutCirc: [0.785, 0.135, 0.15, 0.86],\n\n  /* Ease Bounce Curves */\n  easeInBack: [0.6, -0.28, 0.735, 0.045],\n  easeOutBack: [0.175, 0.885, 0.32, 1.275],\n  easeInOutBack: [0.68, -0.55, 0.265, 1.55]\n};\n\nfunction createEasingFunction(easing) {\n  if (Array.isArray(easing)) {\n    return bezier(easing[0], easing[1], easing[2], easing[3]);\n  }\n\n  if (typeof easing === 'string' && typeof easingPresets[easing] !== 'undefined') {\n    var params = easingPresets[easing];\n    return bezier(params[0], params[1], params[2], params[3]);\n  }\n\n  return;\n}\n\nvar PARALLAX_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects);\nvar MAP_EFFECT_TO_DEFAULT_UNIT = {\n  speed: 'px',\n  translateX: '%',\n  translateY: '%',\n  rotate: 'deg',\n  rotateX: 'deg',\n  rotateY: 'deg',\n  rotateZ: 'deg',\n  scale: '',\n  scaleX: '',\n  scaleY: '',\n  scaleZ: '',\n  opacity: ''\n};\n/**\r\n * Takes a parallax element effects and parses the properties to get the start and end values and units.\r\n */\n\nfunction parseElementTransitionEffects(props, scrollAxis) {\n  var parsedEffects = {};\n  PARALLAX_EFFECTS.forEach(function (key) {\n    var defaultValue = MAP_EFFECT_TO_DEFAULT_UNIT[key]; // If the provided type is a number, this must be the speed prop\n    // in which case we need to construct the proper translate config\n\n    if (typeof (props == null ? void 0 : props[key]) === 'number') {\n      var value = props == null ? void 0 : props[key];\n      var startSpeed = (value || 0) * 10 + \"px\";\n      var endSpeed = (value || 0) * -10 + \"px\";\n      var startParsed = parseValueAndUnit(startSpeed);\n      var endParsed = parseValueAndUnit(endSpeed);\n      var speedConfig = {\n        start: startParsed.value,\n        end: endParsed.value,\n        unit: startParsed.unit\n      }; // Manually set translate y value\n\n      if (scrollAxis === ScrollAxis.vertical) {\n        parsedEffects.translateY = speedConfig;\n      } // Manually set translate y value\n\n\n      if (scrollAxis === ScrollAxis.horizontal) {\n        parsedEffects.translateX = speedConfig;\n      }\n    } // The rest are standard effect being parsed\n\n\n    if (Array.isArray(props == null ? void 0 : props[key])) {\n      var _value = props == null ? void 0 : props[key];\n\n      if (typeof _value[0] !== 'undefined' && typeof _value[1] !== 'undefined') {\n        var _startParsed = parseValueAndUnit(_value == null ? void 0 : _value[0], defaultValue);\n\n        var _endParsed = parseValueAndUnit(_value == null ? void 0 : _value[1], defaultValue);\n\n        var easing = createEasingFunction(_value == null ? void 0 : _value[2]);\n        parsedEffects[key] = {\n          start: _startParsed.value,\n          end: _endParsed.value,\n          unit: _startParsed.unit,\n          easing: easing\n        };\n\n        if (_startParsed.unit !== _endParsed.unit) {\n          throw new Error('Must provide matching units for the min and max offset values of each axis.');\n        }\n      }\n    }\n  });\n  return parsedEffects;\n}\n\n/**\r\n * Returns the percent (0 - 100) moved based on position in the viewport\r\n */\nfunction getProgressAmount(\n/*\r\n * The start value from cache\r\n */\nstart,\n/*\r\n * total dist the element has to move to be 100% complete (view width/height + element width/height)\r\n */\ntotalDist,\n/*\r\n * Current scroll value\r\n */\ncurrentScroll,\n/*\r\n * an optional easing function to apply\r\n */\neasing) {\n  // adjust cached value\n  var startAdjustedScroll = currentScroll - start; // Amount the element has moved based on current and total distance to move\n\n  var amount = startAdjustedScroll / totalDist; // Apply bezier easing if provided\n\n  if (easing) {\n    amount = easing(amount);\n  }\n\n  return amount;\n}\n\n/**\r\n * Takes two values (start, end) and returns whether the current scroll is within range\r\n * @param {number} start - start of scroll (x/y)\r\n * @param {number} end - end of scroll (x/y)\r\n * @param {number} scroll - current scroll (x/y)\r\n * @return {boolean} isInView\r\n */\nfunction isElementInView(start, end, scroll) {\n  var isInView = scroll >= start && scroll <= end;\n  return isInView;\n}\n\n// Scale between AKA normalize\nfunction scaleBetween(value, newMin, newMax, oldMin, oldMax) {\n  return (newMax - newMin) * (value - oldMin) / (oldMax - oldMin) + newMin;\n}\n\n/**\r\n * Scales a start and end value of an effect based on percent moved and easing function\r\n */\n\nfunction scaleEffectByProgress(effect, progress) {\n  var value = scaleBetween(typeof effect.easing === 'function' ? effect.easing(progress) : progress, (effect == null ? void 0 : effect.start) || 0, (effect == null ? void 0 : effect.end) || 0, 0, 1);\n  return {\n    value: value,\n    unit: effect == null ? void 0 : effect.unit\n  };\n}\n\nvar TRANSFORM_EFFECTS = /*#__PURE__*/Object.values(ValidCSSEffects).filter(function (v) {\n  return v !== 'opacity';\n});\nfunction setWillChangeStyles(el, effects) {\n  var keys = Object.keys(effects);\n  var hasOpacity = keys.includes('opacity');\n  var willChange = \"transform\" + (hasOpacity ? ',opacity' : '');\n  el.style.willChange = willChange;\n}\nfunction setElementStyles(effects, progress, el) {\n  if (!el) return;\n  var transform = getTransformStyles(effects, progress);\n  var opacity = getOpacityStyles(effects, progress);\n  el.style.transform = transform;\n  el.style.opacity = opacity;\n}\nfunction getOpacityStyles(effects, progress) {\n  var scaledOpacity = effects['opacity'] && scaleEffectByProgress(effects['opacity'], progress);\n\n  if (typeof scaledOpacity === 'undefined' || typeof scaledOpacity.value === 'undefined' || typeof scaledOpacity.unit === 'undefined') {\n    return '';\n  }\n\n  var styleStr = \"\" + scaledOpacity.value;\n  return styleStr;\n}\nfunction getTransformStyles(effects, progress) {\n  var transform = TRANSFORM_EFFECTS.reduce(function (acc, key) {\n    var scaledEffect = // @ts-expect-error\n    effects[key] && scaleEffectByProgress(effects[key], progress);\n\n    if (typeof scaledEffect === 'undefined' || typeof scaledEffect.value === 'undefined' || typeof scaledEffect.unit === 'undefined') {\n      return acc;\n    }\n\n    var styleStr = key + \"(\" + scaledEffect.value + scaledEffect.unit + \")\";\n    return acc + styleStr;\n  }, '');\n  return transform;\n}\n/**\r\n * Takes a parallax element and removes parallax offset styles.\r\n * @param {object} element\r\n */\n\nfunction resetStyles(element) {\n  var el = element.el;\n  if (!el) return;\n  el.style.transform = '';\n  el.style.opacity = '';\n}\n\nfunction createLimitsForRelativeElements(rect, view, scroll, shouldAlwaysCompleteAnimation) {\n  var startY = rect.top - view.height;\n  var startX = rect.left - view.width;\n  var endY = rect.bottom;\n  var endX = rect.right; // add scroll\n\n  startX += scroll.x;\n  endX += scroll.x;\n  startY += scroll.y;\n  endY += scroll.y;\n\n  if (shouldAlwaysCompleteAnimation) {\n    if (scroll.y + rect.top < view.height) {\n      startY = 0;\n    }\n\n    if (scroll.x + rect.left < view.width) {\n      startX = 0;\n    }\n\n    if (endY > view.scrollHeight - view.height) {\n      endY = view.scrollHeight - view.height;\n    }\n\n    if (endX > view.scrollWidth - view.width) {\n      endX = view.scrollWidth - view.width;\n    }\n  }\n\n  var limits = new Limits({\n    startX: startX,\n    startY: startY,\n    endX: endX,\n    endY: endY\n  });\n  return limits;\n}\n\nfunction getTranslateScalar(startTranslatePx, endTranslatePx, totalDist) {\n  var slow = endTranslatePx > startTranslatePx; // calculating necessary scale to increase translations\n\n  var totalAbsOff = (Math.abs(startTranslatePx) + Math.abs(endTranslatePx)) * (slow ? -1 : 1);\n  var totalDistTrue = totalDist + totalAbsOff; // Determine multiple to scale by, only values greater than 1\n\n  var scale = Math.max(totalDist / totalDistTrue, 1);\n  return scale;\n}\n\n/**\r\n * Return the start and end pixel values for an elements translations\r\n */\nfunction getStartEndValueInPx(translate, elementSize) {\n  var start = translate.start,\n      end = translate.end,\n      unit = translate.unit;\n\n  if (unit === '%') {\n    var scale = elementSize / 100;\n    start = start * scale;\n    end = end * scale;\n  }\n\n  if (unit === 'vw') {\n    var startScale = start / 100;\n    var endScale = end / 100;\n    start = window.innerWidth * startScale;\n    end = window.innerWidth * endScale;\n  }\n\n  if (unit === 'vh') {\n    var _startScale = start / 100;\n\n    var _endScale = end / 100;\n\n    start = window.innerHeight * _startScale;\n    end = window.innerHeight * _endScale;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n\nvar DEFAULT_VALUE = {\n  start: 0,\n  end: 0,\n  unit: ''\n};\nfunction createLimitsWithTranslationsForRelativeElements(rect, view, effects, scroll, scrollAxis, shouldAlwaysCompleteAnimation) {\n  // get start and end accounting for percent effects\n  var translateX = effects.translateX || DEFAULT_VALUE;\n  var translateY = effects.translateY || DEFAULT_VALUE;\n\n  var _getStartEndValueInPx = getStartEndValueInPx(translateX, rect.width),\n      startTranslateXPx = _getStartEndValueInPx.start,\n      endTranslateXPx = _getStartEndValueInPx.end;\n\n  var _getStartEndValueInPx2 = getStartEndValueInPx(translateY, rect.height),\n      startTranslateYPx = _getStartEndValueInPx2.start,\n      endTranslateYPx = _getStartEndValueInPx2.end; // default starting values\n\n\n  var startY = rect.top - view.height;\n  var startX = rect.left - view.width;\n  var endY = rect.bottom;\n  var endX = rect.right;\n  var startMultiplierY = 1;\n  var endMultiplierY = 1;\n\n  if (scrollAxis === ScrollAxis.vertical) {\n    startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, view.height + rect.height);\n    endMultiplierY = startMultiplierY;\n  }\n\n  var startMultiplierX = 1;\n  var endMultiplierX = 1;\n\n  if (scrollAxis === ScrollAxis.horizontal) {\n    startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, view.width + rect.width);\n    endMultiplierX = startMultiplierX;\n  } // Apply the scale to initial values\n\n\n  if (startTranslateYPx < 0) {\n    startY = startY + startTranslateYPx * startMultiplierY;\n  }\n\n  if (endTranslateYPx > 0) {\n    endY = endY + endTranslateYPx * endMultiplierY;\n  }\n\n  if (startTranslateXPx < 0) {\n    startX = startX + startTranslateXPx * startMultiplierX;\n  }\n\n  if (endTranslateXPx > 0) {\n    endX = endX + endTranslateXPx * endMultiplierX;\n  } // add scroll\n\n\n  startX += scroll.x;\n  endX += scroll.x;\n  startY += scroll.y;\n  endY += scroll.y; // NOTE: please refactor and isolate this :(\n\n  if (shouldAlwaysCompleteAnimation) {\n    var topBeginsInView = scroll.y + rect.top < view.height;\n    var leftBeginsInView = scroll.x + rect.left < view.width;\n    var bottomEndsInView = scroll.y + rect.bottom > view.scrollHeight - view.height;\n    var rightEndsInView = scroll.x + rect.right > view.scrollWidth - view.height;\n\n    if (topBeginsInView && bottomEndsInView) {\n      startMultiplierY = 1;\n      endMultiplierY = 1;\n      startY = 0;\n      endY = view.scrollHeight - view.height;\n    }\n\n    if (leftBeginsInView && rightEndsInView) {\n      startMultiplierX = 1;\n      endMultiplierX = 1;\n      startX = 0;\n      endX = view.scrollWidth - view.width;\n    }\n\n    if (!topBeginsInView && bottomEndsInView) {\n      startY = rect.top - view.height + scroll.y;\n      endY = view.scrollHeight - view.height;\n      var totalDist = endY - startY;\n      startMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, totalDist);\n      endMultiplierY = 1;\n\n      if (startTranslateYPx < 0) {\n        startY = startY + startTranslateYPx * startMultiplierY;\n      }\n    }\n\n    if (!leftBeginsInView && rightEndsInView) {\n      startX = rect.left - view.width + scroll.x;\n      endX = view.scrollWidth - view.width;\n\n      var _totalDist = endX - startX;\n\n      startMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist);\n      endMultiplierX = 1;\n\n      if (startTranslateXPx < 0) {\n        startX = startX + startTranslateXPx * startMultiplierX;\n      }\n    }\n\n    if (topBeginsInView && !bottomEndsInView) {\n      startY = 0;\n      endY = rect.bottom + scroll.y;\n\n      var _totalDist2 = endY - startY;\n\n      startMultiplierY = 1;\n      endMultiplierY = getTranslateScalar(startTranslateYPx, endTranslateYPx, _totalDist2);\n\n      if (endTranslateYPx > 0) {\n        endY = endY + endTranslateYPx * endMultiplierY;\n      }\n    }\n\n    if (leftBeginsInView && !rightEndsInView) {\n      startX = 0;\n      endX = rect.right + scroll.x;\n\n      var _totalDist3 = endX - startX;\n\n      startMultiplierX = 1;\n      endMultiplierX = getTranslateScalar(startTranslateXPx, endTranslateXPx, _totalDist3);\n\n      if (endTranslateXPx > 0) {\n        endX = endX + endTranslateXPx * endMultiplierX;\n      }\n    }\n  }\n\n  var limits = new Limits({\n    startX: startX,\n    startY: startY,\n    endX: endX,\n    endY: endY,\n    startMultiplierX: startMultiplierX,\n    endMultiplierX: endMultiplierX,\n    startMultiplierY: startMultiplierY,\n    endMultiplierY: endMultiplierY\n  });\n  return limits;\n}\n\nfunction scaleTranslateEffectsForSlowerScroll(effects, limits) {\n  var effectsCopy = _extends({}, effects);\n\n  if (effectsCopy.translateX) {\n    effectsCopy.translateX = _extends({}, effects.translateX, {\n      start: effectsCopy.translateX.start * limits.startMultiplierX,\n      end: effectsCopy.translateX.end * limits.endMultiplierX\n    });\n  }\n\n  if (effectsCopy.translateY) {\n    effectsCopy.translateY = _extends({}, effects.translateY, {\n      start: effectsCopy.translateY.start * limits.startMultiplierY,\n      end: effectsCopy.translateY.end * limits.endMultiplierY\n    });\n  }\n\n  return effectsCopy;\n}\n\nfunction getShouldScaleTranslateEffects(props, effects, scrollAxis) {\n  if (props.rootMargin || props.targetElement || props.shouldDisableScalingTranslations) {\n    return false;\n  }\n\n  if (!!effects.translateX && scrollAxis === ScrollAxis.horizontal || !!effects.translateY && scrollAxis === ScrollAxis.vertical) {\n    return true;\n  }\n\n  return false;\n}\n\nvar clamp = function clamp(num, min, max) {\n  return Math.min(Math.max(num, min), max);\n};\n\nvar Element = /*#__PURE__*/function () {\n  function Element(options) {\n    this.el = options.el;\n    this.props = options.props;\n    this.scrollAxis = options.scrollAxis;\n    this.disabledParallaxController = options.disabledParallaxController || false;\n    this.id = createId();\n    this.effects = parseElementTransitionEffects(this.props, this.scrollAxis);\n    this.isInView = null;\n    this.progress = 0;\n\n    this._setElementEasing(options.props.easing);\n\n    setWillChangeStyles(options.el, this.effects);\n  }\n\n  var _proto = Element.prototype;\n\n  _proto.updateProps = function updateProps(nextProps) {\n    this.props = _extends({}, this.props, nextProps);\n    this.effects = parseElementTransitionEffects(nextProps, this.scrollAxis);\n\n    this._setElementEasing(nextProps.easing);\n\n    return this;\n  };\n\n  _proto.setCachedAttributes = function setCachedAttributes(view, scroll) {\n    // NOTE: Must reset styles before getting the rect, as it might impact the natural position\n    resetStyles(this);\n    this.rect = new Rect({\n      el: this.props.targetElement || this.el,\n      rootMargin: this.props.rootMargin,\n      view: view\n    });\n    var shouldScaleTranslateEffects = getShouldScaleTranslateEffects(this.props, this.effects, this.scrollAxis);\n\n    if (typeof this.props.startScroll === 'number' && typeof this.props.endScroll === 'number') {\n      this.limits = new Limits({\n        startX: this.props.startScroll,\n        startY: this.props.startScroll,\n        endX: this.props.endScroll,\n        endY: this.props.endScroll\n      }); // Undo the reset -- place it back at current position with styles\n\n      this._setElementStyles();\n\n      return this;\n    }\n\n    if (shouldScaleTranslateEffects) {\n      this.limits = createLimitsWithTranslationsForRelativeElements(this.rect, view, this.effects, scroll, this.scrollAxis, this.props.shouldAlwaysCompleteAnimation);\n      this.scaledEffects = scaleTranslateEffectsForSlowerScroll(this.effects, this.limits);\n    } else {\n      this.limits = createLimitsForRelativeElements(this.rect, view, scroll, this.props.shouldAlwaysCompleteAnimation);\n    } // Undo the reset -- place it back at current position with styles\n\n\n    this._setElementStyles();\n\n    return this;\n  };\n\n  _proto._updateElementIsInView = function _updateElementIsInView(nextIsInView) {\n    // NOTE: Check if this is the first change to make sure onExit isn't called\n    var isFirstChange = this.isInView === null;\n\n    if (nextIsInView !== this.isInView) {\n      if (nextIsInView) {\n        this.props.onEnter && this.props.onEnter(this);\n      } else if (!isFirstChange) {\n        this._setFinalProgress();\n\n        this._setElementStyles();\n\n        this.props.onExit && this.props.onExit(this);\n      }\n    }\n\n    this.isInView = nextIsInView;\n  };\n\n  _proto._setFinalProgress = function _setFinalProgress() {\n    var finalProgress = clamp(Math.round(this.progress), 0, 1);\n\n    this._updateElementProgress(finalProgress);\n  };\n\n  _proto._setElementStyles = function _setElementStyles() {\n    if (this.props.disabled || this.disabledParallaxController) return;\n    var effects = this.scaledEffects || this.effects;\n    setElementStyles(effects, this.progress, this.el);\n  };\n\n  _proto._updateElementProgress = function _updateElementProgress(nextProgress) {\n    this.progress = nextProgress;\n    this.props.onProgressChange && this.props.onProgressChange(this.progress);\n    this.props.onChange && this.props.onChange(this);\n  };\n\n  _proto._setElementEasing = function _setElementEasing(easing) {\n    this.easing = createEasingFunction(easing);\n  };\n\n  _proto.updateElementOptions = function updateElementOptions(options) {\n    this.scrollAxis = options.scrollAxis;\n    this.disabledParallaxController = options.disabledParallaxController || false;\n  };\n\n  _proto.updatePosition = function updatePosition(scroll) {\n    if (!this.limits) return this;\n    var isVertical = this.scrollAxis === ScrollAxis.vertical;\n    var isFirstChange = this.isInView === null; // based on scroll axis\n\n    var start = isVertical ? this.limits.startY : this.limits.startX;\n    var end = isVertical ? this.limits.endY : this.limits.endX;\n    var total = isVertical ? this.limits.totalY : this.limits.totalX;\n    var s = isVertical ? scroll.y : scroll.x; // check if in view\n\n    var nextIsInView = isElementInView(start, end, s);\n\n    this._updateElementIsInView(nextIsInView); // set the progress if in view or this is the first change\n\n\n    if (nextIsInView) {\n      var nextProgress = getProgressAmount(start, total, s, this.easing);\n\n      this._updateElementProgress(nextProgress);\n\n      this._setElementStyles();\n    } else if (isFirstChange) {\n      // NOTE: this._updateElementProgress -- dont use this because it will trigger onChange\n      this.progress = clamp(Math.round(getProgressAmount(start, total, s, this.easing)), 0, 1);\n\n      this._setElementStyles();\n    }\n\n    return this;\n  };\n\n  return Element;\n}();\n\nvar View = /*#__PURE__*/function () {\n  function View(config) {\n    this.scrollContainer = config.scrollContainer;\n    this.width = config.width;\n    this.height = config.height;\n    this.scrollHeight = config.scrollHeight;\n    this.scrollWidth = config.scrollWidth;\n  }\n\n  var _proto = View.prototype;\n\n  _proto.hasChanged = function hasChanged(params) {\n    if (params.width !== this.width || params.height !== this.height || params.scrollWidth !== this.scrollWidth || params.scrollHeight !== this.scrollHeight) {\n      return true;\n    }\n\n    return false;\n  };\n\n  _proto.setSize = function setSize(params) {\n    this.width = params.width;\n    this.height = params.height;\n    this.scrollHeight = params.scrollHeight;\n    this.scrollWidth = params.scrollWidth;\n    return this;\n  };\n\n  return View;\n}();\n\nvar Scroll = /*#__PURE__*/function () {\n  function Scroll(x, y) {\n    this.x = x;\n    this.y = y;\n    this.dx = 0;\n    this.dy = 0;\n  }\n\n  var _proto = Scroll.prototype;\n\n  _proto.setScroll = function setScroll(x, y) {\n    this.dx = x - this.x;\n    this.dy = y - this.y;\n    this.x = x;\n    this.y = y;\n    return this;\n  };\n\n  return Scroll;\n}();\n\nfunction testForPassiveScroll() {\n  var supportsPassiveOption = false;\n\n  try {\n    var opts = Object.defineProperty({}, 'passive', {\n      get: function get() {\n        supportsPassiveOption = true;\n        return true;\n      }\n    }); // @ts-expect-error\n\n    window.addEventListener('test', null, opts); // @ts-expect-error\n\n    window.removeEventListener('test', null, opts);\n  } catch (e) {}\n\n  return supportsPassiveOption;\n}\n\n/**\r\n * -------------------------------------------------------\r\n * Parallax Controller\r\n * -------------------------------------------------------\r\n *\r\n * The global controller for setting up and managing a scroll view of elements.\r\n *\r\n */\n\nvar ParallaxController = /*#__PURE__*/function () {\n  function ParallaxController(_ref) {\n    var _ref$scrollAxis = _ref.scrollAxis,\n        scrollAxis = _ref$scrollAxis === void 0 ? ScrollAxis.vertical : _ref$scrollAxis,\n        scrollContainer = _ref.scrollContainer,\n        _ref$disabled = _ref.disabled,\n        disabled = _ref$disabled === void 0 ? false : _ref$disabled;\n    this.disabled = disabled;\n    this.scrollAxis = scrollAxis; // All parallax elements to be updated\n\n    this.elements = [];\n    this._hasScrollContainer = !!scrollContainer;\n    this.viewEl = scrollContainer != null ? scrollContainer : window; // Scroll and View\n\n    var _this$_getScrollPosit = this._getScrollPosition(),\n        x = _this$_getScrollPosit[0],\n        y = _this$_getScrollPosit[1];\n\n    this.scroll = new Scroll(x, y);\n    this.view = new View({\n      width: 0,\n      height: 0,\n      scrollWidth: 0,\n      scrollHeight: 0,\n      scrollContainer: this._hasScrollContainer ? scrollContainer : undefined\n    }); // Ticking\n\n    this._ticking = false; // Passive support\n\n    this._supportsPassive = testForPassiveScroll(); // Bind methods to class\n\n    this._bindAllMethods(); // If this is initialized disabled, don't do anything below.\n\n\n    if (this.disabled) return;\n\n    this._addListeners(this.viewEl);\n\n    this._addResizeObserver();\n\n    this._setViewSize();\n  }\n  /**\r\n   * Static method to instantiate the ParallaxController.\r\n   * @returns {Class} ParallaxController\r\n   */\n\n\n  ParallaxController.init = function init(options) {\n    var hasWindow = typeof window !== 'undefined';\n\n    if (!hasWindow) {\n      throw new Error('Looks like ParallaxController.init() was called on the server. This method must be called on the client.');\n    }\n\n    return new ParallaxController(options);\n  };\n\n  var _proto = ParallaxController.prototype;\n\n  _proto._bindAllMethods = function _bindAllMethods() {\n    var _this = this;\n\n    ['_addListeners', '_removeListeners', '_getScrollPosition', '_handleScroll', '_handleUpdateCache', '_updateAllElements', '_updateElementPosition', '_setViewSize', '_addResizeObserver', '_checkIfViewHasChanged', '_getViewParams', 'getElements', 'createElement', 'removeElementById', 'resetElementStyles', 'updateElementPropsById', 'update', 'updateScrollContainer', 'destroy'].forEach(function (method) {\n      // @ts-expect-error\n      _this[method] = _this[method].bind(_this);\n    });\n  };\n\n  _proto._addListeners = function _addListeners(el) {\n    el.addEventListener('scroll', this._handleScroll, this._supportsPassive ? {\n      passive: true\n    } : false);\n    window.addEventListener('resize', this._handleUpdateCache, false);\n    window.addEventListener('blur', this._handleUpdateCache, false);\n    window.addEventListener('focus', this._handleUpdateCache, false);\n    window.addEventListener('load', this._handleUpdateCache, false);\n  };\n\n  _proto._removeListeners = function _removeListeners(el) {\n    var _this$_resizeObserver;\n\n    el.removeEventListener('scroll', this._handleScroll, false);\n    window.removeEventListener('resize', this._handleUpdateCache, false);\n    window.removeEventListener('blur', this._handleUpdateCache, false);\n    window.removeEventListener('focus', this._handleUpdateCache, false);\n    window.removeEventListener('load', this._handleUpdateCache, false);\n    (_this$_resizeObserver = this._resizeObserver) == null ? void 0 : _this$_resizeObserver.disconnect();\n  };\n\n  _proto._addResizeObserver = function _addResizeObserver() {\n    var _this2 = this;\n\n    try {\n      var observedEl = this._hasScrollContainer ? this.viewEl : document.documentElement;\n      this._resizeObserver = new ResizeObserver(function () {\n        return _this2.update();\n      });\n\n      this._resizeObserver.observe(observedEl);\n    } catch (e) {\n      console.warn('Failed to create the resize observer in the ParallaxContoller');\n    }\n  };\n\n  _proto._getScrollPosition = function _getScrollPosition() {\n    // Save current scroll\n    // Supports IE 9 and up.\n    var nx = this._hasScrollContainer ? // @ts-expect-error\n    this.viewEl.scrollLeft : window.pageXOffset;\n    var ny = this._hasScrollContainer ? // @ts-expect-error\n    this.viewEl.scrollTop : window.pageYOffset;\n    return [nx, ny];\n  }\n  /**\r\n   * Window scroll handler sets scroll position\r\n   * and then calls '_updateAllElements()'.\r\n   */\n  ;\n\n  _proto._handleScroll = function _handleScroll() {\n    var _this$elements;\n\n    var _this$_getScrollPosit2 = this._getScrollPosition(),\n        nx = _this$_getScrollPosit2[0],\n        ny = _this$_getScrollPosit2[1];\n\n    this.scroll.setScroll(nx, ny); // Only called if the last animation request has been\n    // completed and there are parallax elements to update\n\n    if (!this._ticking && ((_this$elements = this.elements) == null ? void 0 : _this$elements.length) > 0) {\n      this._ticking = true; // @ts-ignore\n\n      window.requestAnimationFrame(this._updateAllElements);\n    }\n  }\n  /**\r\n   * Window resize handler. Sets the new window inner height\r\n   * then updates parallax element attributes and positions.\r\n   */\n  ;\n\n  _proto._handleUpdateCache = function _handleUpdateCache() {\n    this._setViewSize();\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  }\n  /**\r\n   * Update element positions.\r\n   * Determines if the element is in view based on the cached\r\n   * attributes, if so set the elements parallax styles.\r\n   */\n  ;\n\n  _proto._updateAllElements = function _updateAllElements(_temp) {\n    var _this3 = this;\n\n    var _ref2 = _temp === void 0 ? {} : _temp,\n        updateCache = _ref2.updateCache;\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        if (updateCache) {\n          element.setCachedAttributes(_this3.view, _this3.scroll);\n        }\n\n        _this3._updateElementPosition(element);\n      });\n    } // reset ticking so more animations can be called\n\n\n    this._ticking = false;\n  }\n  /**\r\n   * Update element positions.\r\n   * Determines if the element is in view based on the cached\r\n   * attributes, if so set the elements parallax styles.\r\n   */\n  ;\n\n  _proto._updateElementPosition = function _updateElementPosition(element) {\n    if (element.props.disabled || this.disabled) return;\n    element.updatePosition(this.scroll);\n  }\n  /**\r\n   * Gets the params to set in the View from the scroll container or the window\r\n   */\n  ;\n\n  _proto._getViewParams = function _getViewParams() {\n    if (this._hasScrollContainer) {\n      // @ts-expect-error\n      var _width = this.viewEl.offsetWidth; // @ts-expect-error\n\n      var _height = this.viewEl.offsetHeight; // @ts-expect-error\n\n      var _scrollHeight = this.viewEl.scrollHeight; // @ts-expect-error\n\n      var _scrollWidth = this.viewEl.scrollWidth;\n      return this.view.setSize({\n        width: _width,\n        height: _height,\n        scrollHeight: _scrollHeight,\n        scrollWidth: _scrollWidth\n      });\n    }\n\n    var html = document.documentElement;\n    var width = window.innerWidth || html.clientWidth;\n    var height = window.innerHeight || html.clientHeight;\n    var scrollHeight = html.scrollHeight;\n    var scrollWidth = html.scrollWidth;\n    return {\n      width: width,\n      height: height,\n      scrollHeight: scrollHeight,\n      scrollWidth: scrollWidth\n    };\n  }\n  /**\r\n   * Cache the view attributes\r\n   */\n  ;\n\n  _proto._setViewSize = function _setViewSize() {\n    return this.view.setSize(this._getViewParams());\n  }\n  /**\r\n   * Checks if any of the cached attributes of the view have changed.\r\n   * @returns boolean\r\n   */\n  ;\n\n  _proto._checkIfViewHasChanged = function _checkIfViewHasChanged() {\n    return this.view.hasChanged(this._getViewParams());\n  }\n  /**\r\n   * -------------------------------------------------------\r\n   * Public methods\r\n   * -------------------------------------------------------\r\n   */\n\n  /**\r\n   * Returns all the parallax elements in the controller\r\n   */\n  ;\n\n  _proto.getElements = function getElements() {\n    return this.elements;\n  }\n  /**\r\n   * Creates and returns new parallax element with provided options to be managed by the controller.\r\n   */\n  ;\n\n  _proto.createElement = function createElement(options) {\n    var newElement = new Element(_extends({}, options, {\n      scrollAxis: this.scrollAxis,\n      disabledParallaxController: this.disabled\n    }));\n    newElement.setCachedAttributes(this.view, this.scroll);\n    this.elements = this.elements ? [].concat(this.elements, [newElement]) : [newElement];\n\n    this._updateElementPosition(newElement); // NOTE: This checks if the view has changed then update the controller and all elements if it has\n    // This shouldn't always be necessary with a resize observer watching the view element\n    // but there seems to be cases where the resize observer does not catch and update.\n\n\n    if (this._checkIfViewHasChanged()) {\n      this.update();\n    }\n\n    return newElement;\n  }\n  /**\r\n   * Remove an element by id\r\n   */\n  ;\n\n  _proto.removeElementById = function removeElementById(id) {\n    if (!this.elements) return;\n    this.elements = this.elements.filter(function (el) {\n      return el.id !== id;\n    });\n  }\n  /**\r\n   * Updates an existing parallax element object with new options.\r\n   */\n  ;\n\n  _proto.updateElementPropsById = function updateElementPropsById(id, props) {\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        if (el.id === id) {\n          return el.updateProps(props);\n        }\n\n        return el;\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Remove a target elements parallax styles\r\n   */\n  ;\n\n  _proto.resetElementStyles = function resetElementStyles(element) {\n    resetStyles(element);\n  }\n  /**\r\n   * Updates all cached attributes on parallax elements.\r\n   */\n  ;\n\n  _proto.update = function update() {\n    // Save the latest scroll position because window.scroll\n    // may be called and the handle scroll event may not be called.\n    var _this$_getScrollPosit3 = this._getScrollPosition(),\n        nx = _this$_getScrollPosit3[0],\n        ny = _this$_getScrollPosit3[1];\n\n    this.scroll.setScroll(nx, ny);\n\n    this._setViewSize();\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  }\n  /**\r\n   * Updates the scroll container of the parallax controller\r\n   */\n  ;\n\n  _proto.updateScrollContainer = function updateScrollContainer(el) {\n    // remove existing listeners with current el first\n    this._removeListeners(this.viewEl);\n\n    this.viewEl = el;\n    this._hasScrollContainer = !!el;\n    this.view = new View({\n      width: 0,\n      height: 0,\n      scrollWidth: 0,\n      scrollHeight: 0,\n      scrollContainer: el\n    });\n\n    this._setViewSize();\n\n    this._addListeners(this.viewEl);\n\n    this._updateAllElements({\n      updateCache: true\n    });\n  };\n\n  _proto.disableParallaxController = function disableParallaxController() {\n    this.disabled = true; // remove listeners\n\n    this._removeListeners(this.viewEl); // reset all styles\n\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return resetStyles(element);\n      });\n    }\n  };\n\n  _proto.enableParallaxController = function enableParallaxController() {\n    var _this4 = this;\n\n    this.disabled = false;\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return element.updateElementOptions({\n          disabledParallaxController: false,\n          scrollAxis: _this4.scrollAxis\n        });\n      });\n    } // add back listeners\n\n\n    this._addListeners(this.viewEl);\n\n    this._addResizeObserver();\n\n    this._setViewSize();\n  }\n  /**\r\n   * Disable all parallax elements\r\n   */\n  ;\n\n  _proto.disableAllElements = function disableAllElements() {\n    console.warn('deprecated: use disableParallaxController() instead');\n\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        return el.updateProps({\n          disabled: true\n        });\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Enable all parallax elements\r\n   */\n  ;\n\n  _proto.enableAllElements = function enableAllElements() {\n    console.warn('deprecated: use enableParallaxController() instead');\n\n    if (this.elements) {\n      this.elements = this.elements.map(function (el) {\n        return el.updateProps({\n          disabled: false\n        });\n      });\n    }\n\n    this.update();\n  }\n  /**\r\n   * Removes all listeners and resets all styles on managed elements.\r\n   */\n  ;\n\n  _proto.destroy = function destroy() {\n    this._removeListeners(this.viewEl);\n\n    if (this.elements) {\n      this.elements.forEach(function (element) {\n        return resetStyles(element);\n      });\n    } // @ts-expect-error\n\n\n    this.elements = undefined;\n  };\n\n  return ParallaxController;\n}();\n\nexport { EasingPreset, Element, Limits, ParallaxController, Rect, RotationUnits, ScaleUnits, Scroll, ScrollAxis, Units, ValidCSSEffects, View, createId, getProgressAmount, isElementInView, parseElementTransitionEffects, parseValueAndUnit, resetStyles, scaleBetween, scaleEffectByProgress, setElementStyles, testForPassiveScroll };\n//# sourceMappingURL=parallax-controller.esm.js.map\n","import { ParallaxController, parseValueAndUnit, ScrollAxis } from 'parallax-controller';\nexport { EasingPreset } from 'parallax-controller';\nimport React, { useEffect, useContext, useRef, useState } from 'react';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n\n  return target;\n}\n\nfunction removeUndefinedObjectKeys(obj) {\n  Object.keys(obj).forEach(function (key) {\n    return obj[key] === undefined && delete obj[key];\n  });\n  return obj;\n}\n\nvar _excluded = [\"disabled\", \"easing\", \"endScroll\", \"onChange\", \"onEnter\", \"onExit\", \"onProgressChange\", \"opacity\", \"rootMargin\", \"rotate\", \"rotateX\", \"rotateY\", \"rotateZ\", \"scale\", \"scaleX\", \"scaleY\", \"scaleZ\", \"shouldAlwaysCompleteAnimation\", \"shouldDisableScalingTranslations\", \"speed\", \"startScroll\", \"targetElement\", \"translateX\", \"translateY\"];\nfunction getIsolatedParallaxProps(props) {\n  var disabled = props.disabled,\n      easing = props.easing,\n      endScroll = props.endScroll,\n      onChange = props.onChange,\n      onEnter = props.onEnter,\n      onExit = props.onExit,\n      onProgressChange = props.onProgressChange,\n      opacity = props.opacity,\n      rootMargin = props.rootMargin,\n      rotate = props.rotate,\n      rotateX = props.rotateX,\n      rotateY = props.rotateY,\n      rotateZ = props.rotateZ,\n      scale = props.scale,\n      scaleX = props.scaleX,\n      scaleY = props.scaleY,\n      scaleZ = props.scaleZ,\n      shouldAlwaysCompleteAnimation = props.shouldAlwaysCompleteAnimation,\n      shouldDisableScalingTranslations = props.shouldDisableScalingTranslations,\n      speed = props.speed,\n      startScroll = props.startScroll,\n      targetElement = props.targetElement,\n      translateX = props.translateX,\n      translateY = props.translateY,\n      rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var parallaxProps = removeUndefinedObjectKeys({\n    disabled: disabled,\n    easing: easing,\n    endScroll: endScroll,\n    onChange: onChange,\n    onEnter: onEnter,\n    onExit: onExit,\n    onProgressChange: onProgressChange,\n    opacity: opacity,\n    rootMargin: rootMargin,\n    rotate: rotate,\n    rotateX: rotateX,\n    rotateY: rotateY,\n    rotateZ: rotateZ,\n    scale: scale,\n    scaleX: scaleX,\n    scaleY: scaleY,\n    scaleZ: scaleZ,\n    shouldAlwaysCompleteAnimation: shouldAlwaysCompleteAnimation,\n    shouldDisableScalingTranslations: shouldDisableScalingTranslations,\n    speed: speed,\n    startScroll: startScroll,\n    targetElement: targetElement,\n    translateX: translateX,\n    translateY: translateY\n  });\n  return {\n    parallaxProps: parallaxProps,\n    rest: rest\n  };\n}\n\nfunction useVerifyController(controller) {\n  useEffect(function () {\n    var isServer = typeof window === 'undefined'; // Make sure the provided controller is an instance of the Parallax Controller\n\n    var isInstance = controller instanceof ParallaxController; // Throw if neither context or global is available\n\n    if (!isServer && !controller && !isInstance) {\n      throw new Error(\"Must wrap your application's <Parallax /> components in a <ParallaxProvider />.\");\n    }\n  }, [controller]);\n}\n\nvar ParallaxContext = /*#__PURE__*/React.createContext(null);\n\nfunction useParallaxController() {\n  var parallaxController = useContext(ParallaxContext);\n  var isServer = typeof window === 'undefined';\n\n  if (isServer) {\n    return null;\n  }\n\n  if (!parallaxController) {\n    throw new Error('Could not find `react-scroll-parallax` context value. Please ensure the component is wrapped in a <ParallaxProvider>');\n  }\n\n  return parallaxController;\n}\n\nfunction useParallax(props) {\n  var controller = useParallaxController();\n  var ref = useRef(null);\n\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps;\n\n  useVerifyController(controller);\n\n  var _useState = useState(),\n      element = _useState[0],\n      setElement = _useState[1]; // create element\n\n\n  useEffect(function () {\n    var newElement;\n\n    if (ref.current instanceof HTMLElement) {\n      var options = {\n        el: ref.current,\n        props: parallaxProps\n      };\n      newElement = controller == null ? void 0 : controller.createElement(options);\n      setElement(newElement);\n    } else {\n      throw new Error('You must assign the ref returned by the useParallax() hook to an HTML Element.');\n    }\n\n    return function () {\n      if (newElement) {\n        controller == null ? void 0 : controller.removeElementById(newElement.id);\n      }\n    };\n  }, []); // update element\n\n  useEffect(function () {\n    if (element) {\n      if (props.disabled) {\n        controller == null ? void 0 : controller.resetElementStyles(element);\n        controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n      } else {\n        controller == null ? void 0 : controller.updateElementPropsById(element.id, parallaxProps);\n      }\n    }\n  }, [props.disabled, props.easing, props.endScroll, props.onChange, props.onEnter, props.onExit, props.onProgressChange, props.opacity, props.rootMargin, props.rotate, props.rotateX, props.rotateY, props.rotateZ, props.scale, props.scaleX, props.scaleY, props.scaleZ, props.shouldAlwaysCompleteAnimation, props.shouldDisableScalingTranslations, props.speed, props.startScroll, props.targetElement, props.translateX, props.translateY]);\n  return {\n    ref: ref,\n    controller: controller,\n    element: element\n  };\n}\n\nfunction Parallax(props) {\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps,\n      rest = _getIsolatedParallaxP.rest;\n\n  var _useParallax = useParallax(parallaxProps),\n      ref = _useParallax.ref;\n\n  return React.createElement(\"div\", Object.assign({\n    ref: ref\n  }, rest), props.children);\n}\n\nvar FALLBACK_RECT = {\n  height: 0\n};\nfunction getExpandedStyle(layer) {\n  if (Array.isArray(layer.translateY)) {\n    var translateYStart = parseValueAndUnit(layer.translateY[0]);\n    var translateYEnd = parseValueAndUnit(layer.translateY[1]);\n\n    if (translateYStart.unit === 'px' && translateYEnd.unit === 'px') {\n      return {\n        top: Math.abs(translateYEnd.value) * -1 + \"px\",\n        bottom: Math.abs(translateYStart.value) * -1 + \"px\"\n      };\n    }\n\n    if (translateYStart.unit === '%' && translateYEnd.unit === '%') {\n      var _layer$targetElement$, _layer$targetElement;\n\n      var clientRect = (_layer$targetElement$ = (_layer$targetElement = layer.targetElement) == null ? void 0 : _layer$targetElement.getBoundingClientRect()) != null ? _layer$targetElement$ : FALLBACK_RECT;\n      var top = Math.abs(clientRect.height * 0.01 * translateYEnd.value) * -1;\n      var bottom = Math.abs(clientRect.height * 0.01 * translateYStart.value) * -1;\n      return {\n        top: top + \"px\",\n        bottom: bottom + \"px\"\n      };\n    }\n  }\n\n  if (layer.speed) {\n    var speed = layer.speed || 0;\n    var absSpeed = Math.abs(speed) * 10 * -1;\n    return {\n      top: absSpeed + \"px\",\n      bottom: absSpeed + \"px\"\n    };\n  }\n\n  return {};\n}\n\nfunction getImageStyle(layer) {\n  return layer.image ? {\n    backgroundImage: \"url(\" + layer.image + \")\",\n    backgroundPosition: 'center',\n    backgroundSize: 'cover'\n  } : {};\n}\n\nvar _excluded$1 = [\"children\", \"disabled\", \"style\", \"expanded\", \"image\", \"testId\"];\nvar absoluteStyle = {\n  position: 'absolute',\n  top: 0,\n  left: 0,\n  right: 0,\n  bottom: 0\n};\nvar ParallaxBannerLayer = function ParallaxBannerLayer(props) {\n  var _getIsolatedParallaxP = getIsolatedParallaxProps(props),\n      parallaxProps = _getIsolatedParallaxP.parallaxProps,\n      rest = _getIsolatedParallaxP.rest;\n\n  var style = rest.style,\n      _rest$expanded = rest.expanded,\n      expanded = _rest$expanded === void 0 ? true : _rest$expanded,\n      testId = rest.testId,\n      divProps = _objectWithoutPropertiesLoose(rest, _excluded$1);\n\n  var imageStyle = getImageStyle(props);\n  var expandedStyle = expanded ? getExpandedStyle(props) : {};\n  var parallax = useParallax(_extends({\n    targetElement: props.targetElement,\n    shouldDisableScalingTranslations: true\n  }, parallaxProps));\n  return React.createElement(\"div\", Object.assign({\n    \"data-testid\": testId,\n    ref: parallax.ref,\n    style: _extends({}, imageStyle, absoluteStyle, expandedStyle, style)\n  }, divProps), rest.children);\n};\n\nvar _excluded$2 = [\"disabled\", \"style\", \"layers\"];\nvar containerStyle = {\n  position: 'relative',\n  overflow: 'hidden',\n  width: '100%'\n};\nvar ParallaxBanner = function ParallaxBanner(props) {\n  var _useState = useState(null),\n      targetElement = _useState[0],\n      setTargetElement = _useState[1];\n\n  var containerRef = useRef(null);\n  useEffect(function () {\n    setTargetElement(containerRef.current);\n  }, []);\n\n  var rootStyle = props.style,\n      _props$layers = props.layers,\n      layers = _props$layers === void 0 ? [] : _props$layers,\n      rootRest = _objectWithoutPropertiesLoose(props, _excluded$2);\n\n  function renderLayers() {\n    if (targetElement) {\n      var shouldUseLayers = layers && layers.length > 0;\n\n      if (shouldUseLayers) {\n        return layers.map(function (layer, i) {\n          return React.createElement(ParallaxBannerLayer, Object.assign({}, layer, {\n            targetElement: targetElement,\n            key: \"layer-\" + i,\n            testId: \"layer-\" + i\n          }));\n        });\n      }\n    }\n\n    return null;\n  }\n\n  function renderChildren() {\n    if (targetElement) {\n      return React.Children.map(props.children, function (child) {\n        var item = child; // adds the targetElement prop to any ParallaxBannerLayer components\n\n        if ((item == null ? void 0 : item.type) === ParallaxBannerLayer) {\n          var clone = React.cloneElement(item, {\n            targetElement: targetElement\n          });\n          return clone;\n        }\n\n        return child;\n      });\n    }\n\n    return null;\n  }\n\n  return React.createElement(\"div\", Object.assign({\n    ref: containerRef,\n    style: _extends({}, containerStyle, rootStyle)\n  }, rootRest), renderLayers(), renderChildren());\n};\n\nvar createController = function createController(options) {\n  // Don't initialize on the server\n  var isServer = typeof window === 'undefined';\n\n  if (!isServer) {\n    // Must not be the server so kick it off...\n    return ParallaxController.init(options);\n  }\n\n  return null;\n};\n\nfunction ParallaxProvider(props) {\n  var controller = useRef(null);\n\n  if (!controller.current) {\n    controller.current = createController({\n      scrollAxis: props.scrollAxis || ScrollAxis.vertical,\n      scrollContainer: props.scrollContainer,\n      disabled: props.isDisabled\n    });\n  } // update scroll container\n\n\n  useEffect(function () {\n    if (props.scrollContainer && controller.current) {\n      controller.current.updateScrollContainer(props.scrollContainer);\n    }\n  }, [props.scrollContainer, controller.current]); // disable/enable parallax\n\n  useEffect(function () {\n    if (props.isDisabled && controller.current) {\n      controller.current.disableParallaxController();\n    }\n\n    if (!props.isDisabled && controller.current) {\n      controller.current.enableParallaxController();\n    }\n  }, [props.isDisabled, controller.current]); // remove the controller when unmounting\n\n  useEffect(function () {\n    return function () {\n      (controller == null ? void 0 : controller.current) && (controller == null ? void 0 : controller.current.destroy());\n    };\n  }, []);\n  return React.createElement(ParallaxContext.Provider, {\n    value: controller.current\n  }, props.children);\n}\n\nexport { Parallax, ParallaxBanner, ParallaxBannerLayer, ParallaxContext, ParallaxProvider, useParallax, useParallaxController };\n//# sourceMappingURL=react-scroll-parallax.esm.js.map\n","function _getPrototypeOf(t) {\n  return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, _getPrototypeOf(t);\n}\nexport { _getPrototypeOf as default };","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  })();\n}\nexport { _isNativeReflectConstruct as default };","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, _wrapNativeSuper(t);\n}\nexport { _wrapNativeSuper as default };","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nexport { _isNativeFunction as default };","import isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nexport { _construct as default };","import React from \"react\"\n\nexport const ServerSliceRenderer = ({ sliceId, children }) => {\n  const contents = [\n    React.createElement(`slice-start`, {\n      id: `${sliceId}-1`,\n    }),\n    React.createElement(`slice-end`, {\n      id: `${sliceId}-1`,\n    }),\n  ]\n\n  if (children) {\n    // if children exist, we split the slice into a before and after piece\n    // see renderSlices in render-html\n    contents.push(children)\n    contents.push(\n      React.createElement(`slice-start`, {\n        id: `${sliceId}-2`,\n      }),\n      React.createElement(`slice-end`, {\n        id: `${sliceId}-2`,\n      })\n    )\n  }\n\n  return contents\n}\n","import React, { useContext } from \"react\"\nimport { createContentDigest } from \"gatsby-core-utils/create-content-digest\"\nimport { SlicesMapContext, SlicesPropsContext } from \"./context\"\nimport { ServerSliceRenderer } from \"./server-slice-renderer\"\n\nconst getSliceId = (sliceName, sliceProps) => {\n  if (!Object.keys(sliceProps).length) {\n    return sliceName\n  }\n\n  const propsString = createContentDigest(sliceProps)\n  return `${sliceName}-${propsString}`\n}\n\nexport const ServerSlice = ({\n  sliceName,\n  allowEmpty,\n  children,\n  ...sliceProps\n}) => {\n  const slicesMap = useContext(SlicesMapContext)\n  const slicesProps = useContext(SlicesPropsContext)\n  const concreteSliceName = slicesMap[sliceName]\n\n  if (!concreteSliceName) {\n    if (allowEmpty) {\n      return null\n    } else {\n      throw new Error(\n        `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n      )\n    }\n  }\n\n  const sliceId = getSliceId(concreteSliceName, sliceProps)\n\n  // set props on context object for static-entry to return\n  let sliceUsage = slicesProps[sliceId]\n  if (!sliceUsage) {\n    slicesProps[sliceId] = sliceUsage = {\n      props: sliceProps,\n      sliceName: concreteSliceName,\n      hasChildren: !!children,\n    }\n  } else {\n    if (children) {\n      sliceUsage.hasChildren = true\n    }\n  }\n\n  return <ServerSliceRenderer sliceId={sliceId}>{children}</ServerSliceRenderer>\n}\n","import React, { useContext } from \"react\"\nimport { SlicesMapContext, SlicesResultsContext } from \"./context\"\n\nexport const InlineSlice = ({\n  sliceName,\n  allowEmpty,\n  children,\n  ...sliceProps\n}) => {\n  const slicesMap = useContext(SlicesMapContext)\n  const slicesResultsMap = useContext(SlicesResultsContext)\n  const concreteSliceName = slicesMap[sliceName]\n  const slice = slicesResultsMap.get(concreteSliceName)\n\n  if (!slice) {\n    if (allowEmpty) {\n      return null\n    } else {\n      throw new Error(\n        `Slice \"${concreteSliceName}\" for \"${sliceName}\" slot not found`\n      )\n    }\n  }\n\n  return (\n    <slice.component\n      sliceContext={slice.sliceContext}\n      data={slice.data}\n      {...sliceProps}\n    >\n      {children}\n    </slice.component>\n  )\n}\n","\"use client\"\n\nimport React, { useContext } from \"react\"\nimport { ServerSlice } from \"./slice/server-slice\"\nimport { InlineSlice } from \"./slice/inline-slice\"\nimport { SlicesContext } from \"./slice/context\"\n\nexport function Slice(props) {\n  if (process.env.GATSBY_SLICES) {\n    // we use sliceName internally, so remap alias to sliceName\n    const internalProps = {\n      ...props,\n      sliceName: props.alias,\n    }\n    delete internalProps.alias\n    delete internalProps.__renderedByLocation\n\n    const slicesContext = useContext(SlicesContext)\n\n    // validate props\n    const propErrors = validateSliceProps(props)\n    if (Object.keys(propErrors).length) {\n      throw new SlicePropsError(\n        slicesContext.renderEnvironment === `browser`,\n        internalProps.sliceName,\n        propErrors,\n        props.__renderedByLocation\n      )\n    }\n\n    if (slicesContext.renderEnvironment === `server`) {\n      return <ServerSlice {...internalProps} />\n    } else if (slicesContext.renderEnvironment === `browser`) {\n      // in the browser, we'll just render the component as is\n      return <InlineSlice {...internalProps} />\n    } else if (\n      slicesContext.renderEnvironment === `engines` ||\n      slicesContext.renderEnvironment === `dev-ssr`\n    ) {\n      // if we're in SSR, we'll just render the component as is\n      return <InlineSlice {...internalProps} />\n    } else if (slicesContext.renderEnvironment === `slices`) {\n      // we are not yet supporting nested slices\n\n      let additionalContextMessage = ``\n\n      // just in case generating additional contextual information fails, we still want the base message to show\n      // and not show another cryptic error message\n      try {\n        additionalContextMessage = `\\n\\nSlice component \"${slicesContext.sliceRoot.name}\" (${slicesContext.sliceRoot.componentPath}) tried to render <Slice alias=\"${props.alias}\"/>`\n      } catch {\n        // don't need to handle it, we will just skip the additional context message if we fail to generate it\n      }\n\n      throw new Error(\n        `Nested slices are not supported.${additionalContextMessage}\\n\\nSee https://gatsbyjs.com/docs/reference/built-in-components/gatsby-slice#nested-slices`\n      )\n    } else {\n      throw new Error(\n        `Slice context \"${slicesContext.renderEnvironment}\" is not supported.`\n      )\n    }\n  } else {\n    throw new Error(`Slices are disabled.`)\n  }\n}\n\nclass SlicePropsError extends Error {\n  constructor(inBrowser, sliceName, propErrors, renderedByLocation) {\n    const errors = Object.entries(propErrors)\n      .map(\n        ([key, value]) =>\n          `not serializable \"${value}\" type passed to \"${key}\" prop`\n      )\n      .join(`, `)\n\n    const name = `SlicePropsError`\n    let stack = ``\n    let message = ``\n\n    if (inBrowser) {\n      // They're just (kinda) kidding, I promise... You can still work here <3\n      //   https://www.gatsbyjs.com/careers/\n      const fullStack =\n        React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactDebugCurrentFrame.getCurrentStack()\n\n      // remove the first line of the stack trace\n      const stackLines = fullStack.trim().split(`\\n`).slice(1)\n      stackLines[0] = stackLines[0].trim()\n      stack = `\\n` + stackLines.join(`\\n`)\n\n      message = `Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n    } else {\n      // we can't really grab any extra info outside of the browser, so just print what we can\n      message = `${name}: Slice \"${sliceName}\" was passed props that are not serializable (${errors}).`\n      const stackLines = new Error().stack.trim().split(`\\n`).slice(2)\n      stack = `${message}\\n${stackLines.join(`\\n`)}`\n    }\n\n    super(message)\n    this.name = name\n    if (stack) {\n      this.stack = stack\n    } else {\n      Error.captureStackTrace(this, SlicePropsError)\n    }\n\n    if (renderedByLocation) {\n      this.forcedLocation = { ...renderedByLocation, functionName: `Slice` }\n    }\n  }\n}\n\nconst validateSliceProps = (\n  props,\n  errors = {},\n  seenObjects = [],\n  path = null\n) => {\n  // recursively validate all props\n  for (const [name, value] of Object.entries(props)) {\n    if (\n      value === undefined ||\n      value === null ||\n      (!path && name === `children`)\n    ) {\n      continue\n    }\n\n    const propPath = path ? `${path}.${name}` : name\n\n    if (typeof value === `function`) {\n      errors[propPath] = typeof value\n    } else if (typeof value === `object` && seenObjects.indexOf(value) <= 0) {\n      seenObjects.push(value)\n      validateSliceProps(value, errors, seenObjects, propPath)\n    }\n  }\n\n  return errors\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  Link,\n  withPrefix,\n  withAssetPrefix,\n  navigate,\n  parsePath,\n} from \"gatsby-link\"\n\nexport { graphql, prefetchPathname }\nexport { StaticQuery, StaticQueryContext, useStaticQuery } from \"./static-query\"\nexport { Slice } from \"./slice\"\nexport * from \"gatsby-script\"\n","function _interopRequireDefault(e) {\n  return e && e.__esModule ? e : {\n    \"default\": e\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollSpy = require(\"./scroll-spy\");\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _scroller = require(\"./scroller\");\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _scrollHash = require(\"./scroll-hash\");\n\nvar _scrollHash2 = _interopRequireDefault(_scrollHash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar protoTypes = {\n  to: _propTypes2.default.string.isRequired,\n  containerId: _propTypes2.default.string,\n  container: _propTypes2.default.object,\n  activeClass: _propTypes2.default.string,\n  activeStyle: _propTypes2.default.object,\n  spy: _propTypes2.default.bool,\n  horizontal: _propTypes2.default.bool,\n  smooth: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.string]),\n  offset: _propTypes2.default.number,\n  delay: _propTypes2.default.number,\n  isDynamic: _propTypes2.default.bool,\n  onClick: _propTypes2.default.func,\n  duration: _propTypes2.default.oneOfType([_propTypes2.default.number, _propTypes2.default.func]),\n  absolute: _propTypes2.default.bool,\n  onSetActive: _propTypes2.default.func,\n  onSetInactive: _propTypes2.default.func,\n  ignoreCancelEvents: _propTypes2.default.bool,\n  hashSpy: _propTypes2.default.bool,\n  saveHashHistory: _propTypes2.default.bool,\n  spyThrottle: _propTypes2.default.number\n};\n\nexports.default = function (Component, customScroller) {\n  var scroller = customScroller || _scroller2.default;\n\n  var Link = function (_React$PureComponent) {\n    _inherits(Link, _React$PureComponent);\n\n    function Link(props) {\n      _classCallCheck(this, Link);\n\n      var _this = _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).call(this, props));\n\n      _initialiseProps.call(_this);\n\n      _this.state = {\n        active: false\n      };\n      _this.beforeUnmountCallbacks = [];\n      return _this;\n    }\n\n    _createClass(Link, [{\n      key: \"getScrollSpyContainer\",\n      value: function getScrollSpyContainer() {\n        var containerId = this.props.containerId;\n        var container = this.props.container;\n\n        if (containerId && !container) {\n          return document.getElementById(containerId);\n        }\n\n        if (container && container.nodeType) {\n          return container;\n        }\n\n        return document;\n      }\n    }, {\n      key: \"componentDidMount\",\n      value: function componentDidMount() {\n        if (this.props.spy || this.props.hashSpy) {\n          var scrollSpyContainer = this.getScrollSpyContainer();\n\n          if (!_scrollSpy2.default.isMounted(scrollSpyContainer)) {\n            var fn = _scrollSpy2.default.mount(scrollSpyContainer, this.props.spyThrottle);\n            this.beforeUnmountCallbacks.push(fn);\n          }\n\n          if (this.props.hashSpy) {\n            if (!_scrollHash2.default.isMounted()) {\n              _scrollHash2.default.mount(scroller);\n            }\n            _scrollHash2.default.mapContainer(this.props.to, scrollSpyContainer);\n          }\n\n          _scrollSpy2.default.addSpyHandler(this.spyHandler, scrollSpyContainer);\n\n          this.setState({\n            container: scrollSpyContainer\n          });\n        }\n      }\n    }, {\n      key: \"componentWillUnmount\",\n      value: function componentWillUnmount() {\n        _scrollSpy2.default.unmount(this.stateHandler, this.spyHandler);\n        this.beforeUnmountCallbacks.forEach(function (fn) {\n          return fn();\n        });\n      }\n    }, {\n      key: \"render\",\n      value: function render() {\n        var className = \"\";\n\n        if (this.state && this.state.active) {\n          className = ((this.props.className || \"\") + \" \" + (this.props.activeClass || \"active\")).trim();\n        } else {\n          className = this.props.className;\n        }\n\n        var style = {};\n\n        if (this.state && this.state.active) {\n          style = _extends({}, this.props.style, this.props.activeStyle);\n        } else {\n          style = _extends({}, this.props.style);\n        }\n\n        var props = _extends({}, this.props);\n\n        for (var prop in protoTypes) {\n          if (props.hasOwnProperty(prop)) {\n            delete props[prop];\n          }\n        }\n\n        props.className = className;\n        props.style = style;\n        props.onClick = this.handleClick;\n\n        return _react2.default.createElement(Component, props);\n      }\n    }]);\n\n    return Link;\n  }(_react2.default.PureComponent);\n\n  var _initialiseProps = function _initialiseProps() {\n    var _this2 = this;\n\n    this.scrollTo = function (to, props) {\n      scroller.scrollTo(to, _extends({}, _this2.state, props));\n    };\n\n    this.handleClick = function (event) {\n      /*\r\n       * give the posibility to override onClick\r\n       */\n\n      if (_this2.props.onClick) {\n        _this2.props.onClick(event);\n      }\n\n      /*\r\n       * dont bubble the navigation\r\n       */\n\n      if (event.stopPropagation) event.stopPropagation();\n      if (event.preventDefault) event.preventDefault();\n\n      /*\r\n       * do the magic!\r\n       */\n      _this2.scrollTo(_this2.props.to, _this2.props);\n    };\n\n    this.spyHandler = function (x, y) {\n      var scrollSpyContainer = _this2.getScrollSpyContainer();\n\n      if (_scrollHash2.default.isMounted() && !_scrollHash2.default.isInitialized()) {\n        return;\n      }\n\n      var horizontal = _this2.props.horizontal;\n\n      var to = _this2.props.to;\n      var element = null;\n      var isInside = void 0;\n      var isOutside = void 0;\n\n      if (horizontal) {\n        var elemLeftBound = 0;\n        var elemRightBound = 0;\n        var containerLeft = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerLeft = containerCords.left;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var cords = element.getBoundingClientRect();\n          elemLeftBound = cords.left - containerLeft + x;\n          elemRightBound = elemLeftBound + cords.width;\n        }\n\n        var offsetX = x - _this2.props.offset;\n        isInside = offsetX >= Math.floor(elemLeftBound) && offsetX < Math.floor(elemRightBound);\n        isOutside = offsetX < Math.floor(elemLeftBound) || offsetX >= Math.floor(elemRightBound);\n      } else {\n        var elemTopBound = 0;\n        var elemBottomBound = 0;\n        var containerTop = 0;\n\n        if (scrollSpyContainer.getBoundingClientRect) {\n          var _containerCords = scrollSpyContainer.getBoundingClientRect();\n          containerTop = _containerCords.top;\n        }\n\n        if (!element || _this2.props.isDynamic) {\n          element = scroller.get(to);\n          if (!element) {\n            return;\n          }\n\n          var _cords = element.getBoundingClientRect();\n\n          elemTopBound = _cords.top - containerTop + y;\n          elemBottomBound = elemTopBound + _cords.height;\n        }\n\n        var offsetY = y - _this2.props.offset;\n\n        isInside = offsetY >= Math.floor(elemTopBound) && offsetY < Math.floor(elemBottomBound);\n        isOutside = offsetY < Math.floor(elemTopBound) || offsetY >= Math.floor(elemBottomBound);\n      }\n\n      var activeLink = scroller.getActiveLink();\n\n      if (isOutside) {\n        if (to === activeLink) {\n          scroller.setActiveLink(void 0);\n        }\n\n        if (_this2.props.hashSpy && _scrollHash2.default.getHash() === to) {\n          var _props$saveHashHistor = _this2.props.saveHashHistory,\n              saveHashHistory = _props$saveHashHistor === undefined ? false : _props$saveHashHistor;\n\n          _scrollHash2.default.changeHash(\"\", saveHashHistory);\n        }\n\n        if (_this2.props.spy && _this2.state.active) {\n          _this2.setState({ active: false });\n          _this2.props.onSetInactive && _this2.props.onSetInactive(to, element);\n        }\n      }\n\n      if (isInside && (activeLink !== to || _this2.state.active === false)) {\n        scroller.setActiveLink(to);\n\n        var _props$saveHashHistor2 = _this2.props.saveHashHistory,\n            _saveHashHistory = _props$saveHashHistor2 === undefined ? false : _props$saveHashHistor2;\n\n        _this2.props.hashSpy && _scrollHash2.default.changeHash(to, _saveHashHistory);\n\n        if (_this2.props.spy) {\n          _this2.setState({ active: true });\n          _this2.props.onSetActive && _this2.props.onSetActive(to, element);\n        }\n      }\n    };\n  };\n\n  Link.propTypes = protoTypes;\n\n  Link.defaultProps = { offset: 0 };\n\n  return Link;\n};","\"use client\"\nimport t,{useEffect as e}from\"react\";import{Location as n,useLocation as r}from\"@gatsbyjs/reach-router\";function o(){return o=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},o.apply(this,arguments)}const a=new Map,l={get:t=>a.get(t)||[],set(t,e){const n=a.get(t)||[];n.push(e),a.set(t,n)},delete(t){a.delete(t)}},s=\"undefined\"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(t){const e=Date.now();return setTimeout(function(){t({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-e))}})},1)};var c;!function(t){t.postHydrate=\"post-hydrate\",t.idle=\"idle\",t.offMainThread=\"off-main-thread\"}(c||(c={}));const i=new Set([\"src\",\"strategy\",\"dangerouslySetInnerHTML\",\"children\",\"onLoad\",\"onError\"]),u=new Set,d=new Map;function f(e){/*#__PURE__*/return t.createElement(n,null,()=>/*#__PURE__*/t.createElement(p,e))}function p(n){const{src:a,strategy:i=c.postHydrate}=n||{},{pathname:u}=r();if(e(()=>{let t;switch(i){case c.postHydrate:t=y(n);break;case c.idle:s(()=>{t=y(n)});break;case c.offMainThread:{const t=b(n);l.set(u,t)}}return()=>{const{script:e,loadCallback:n,errorCallback:r}=t||{};n&&(null==e||e.removeEventListener(\"load\",n)),r&&(null==e||e.removeEventListener(\"error\",r)),null==e||e.remove()}},[]),i===c.offMainThread){const e=m(n),r=b(n);return\"undefined\"==typeof window&&l.set(u,r),/*#__PURE__*/t.createElement(\"script\",e?o({type:\"text/partytown\",\"data-strategy\":i,crossOrigin:\"anonymous\"},r,{dangerouslySetInnerHTML:{__html:m(n)}}):o({type:\"text/partytown\",src:h(a),\"data-strategy\":i,crossOrigin:\"anonymous\"},r))}return null}function y(t){const{id:e,src:n,strategy:r=c.postHydrate,onLoad:a,onError:l}=t||{},s=e||n,i=[\"load\",\"error\"],f={load:a,error:l};if(s){for(const t of i)if(null!=f&&f[t]){var p;const e=d.get(s)||{},{callbacks:n=[]}=(null==e?void 0:e[t])||{};var y,h;n.push(null==f?void 0:f[t]),null!=e&&null!=(p=e[t])&&p.event?null==f||null==(y=f[t])||y.call(f,null==e||null==(h=e[t])?void 0:h.event):d.set(s,o({},e,{[t]:{callbacks:n}}))}if(u.has(s))return null}const v=m(t),k=b(t),w=document.createElement(\"script\");e&&(w.id=e),w.dataset.strategy=r;for(const[t,e]of Object.entries(k))w.setAttribute(t,e);v&&(w.textContent=v),n&&(w.src=n);const C={};if(s){for(const t of i){const e=e=>g(e,s,t);w.addEventListener(t,e),C[`${t}Callback`]=e}u.add(s)}return document.body.appendChild(w),{script:w,loadCallback:C.loadCallback,errorCallback:C.errorCallback}}function m(t){const{dangerouslySetInnerHTML:e,children:n=\"\"}=t||{},{__html:r=\"\"}=e||{};return r||n}function b(t){const e={};for(const[n,r]of Object.entries(t))i.has(n)||(e[n]=r);return e}function h(t){if(t)return`/__third-party-proxy?url=${encodeURIComponent(t)}`}function g(t,e,n){const r=d.get(e)||{};for(const e of(null==r||null==(o=r[n])?void 0:o.callbacks)||[]){var o;e(t)}d.set(e,{[n]:{event:t}})}export{f as Script,c as ScriptStrategy,l as collectedScriptsByPage,u as scriptCache,d as scriptCallbackCache};\n//# sourceMappingURL=index.modern.mjs.map\n","function _setPrototypeOf(t, e) {\n  return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n *  Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n  var leading = true,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  if (isObject(options)) {\n    leading = 'leading' in options ? !!options.leading : leading;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n  return debounce(func, wait, {\n    'leading': leading,\n    'maxWait': wait,\n    'trailing': trailing\n  });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","/****************************************************\n\n    Utilities - Arrays\n\n****************************************************/\n\n/******************************************************\n    Shuffle and array\n******************************************************/\nexport const shuffleArray = (array: any[]) => {\n  var currentIndex = array.length,\n    randomIndex\n\n  // While there remain elements to shuffle...\n  while (0 !== currentIndex) {\n    // Pick a remaining element...\n    randomIndex = Math.floor(Math.random() * currentIndex)\n    currentIndex--\n\n    // And swap it with the current element.\n    ;[array[currentIndex], array[randomIndex]] = [\n      array[randomIndex],\n      array[currentIndex],\n    ]\n  }\n\n  return array\n}\n\n/******************************************************\n    Intersection of 2 arrays\n******************************************************/\nexport const intersectArrays = (arrA: any[], arrB: any[]) => {\n  return arrA.filter(x => arrB.includes(x))\n}\n\n/******************************************************\n    Difference of 2 arrays\n******************************************************/\nexport const diffArrays = (arrA: any[], arrB: any[]) => {\n  return arrA.filter(x => !arrB.includes(x))\n}\n\n/******************************************************\n    Symmetrical Difference of 2 arrays\n******************************************************/\nexport const symDiffArrays = (arrA: any[], arrB: any[]) => {\n  return arrA\n    .filter(x => !arrB.includes(x))\n    .concat(arrB.filter(x => !arrA.includes(x)))\n}\n\n/******************************************************\n    Union of 2 arrays - no duplicates\n******************************************************/\nexport const unionArrays = (arrA: any[], arrB: any[]) => {\n  return [...new Set([...arrA, ...arrB])]\n}\n\n/******************************************************\n    Remove duplicates from array of strings\n******************************************************/\nexport const removeDuplicates = (arr: string[]) => {\n  return [...new Set(arr)]\n}\n\n/******************************************************\n\tFilter boolean (but for typescript)\n  usage: [].filter(filterBoolean)\n******************************************************/\ntype Truthy<T> = T extends false | \"\" | 0 | null | undefined ? never : T\nexport function filterBoolean<T>(value: T): value is Truthy<T> {\n  return !!value\n}\n\n/******************************************************\n    Get the first item of an array\n******************************************************/\nexport const getFirstArrayItem = (item: any, empty: any = undefined) => {\n  if (Array.isArray(item)) {\n    if (item.length) return item[0]\n    else return empty\n  }\n  return item\n}\n\n/******************************************************\n    Check for an empty array\n******************************************************/\nexport const isEmptyArray = (arr: any) => {\n  if (Array.isArray(arr)) {\n    return arr.length === 0\n  }\n  return true\n}\n\n/******************************************************\n\tFilter an array by CMS Content Types\n******************************************************/\nexport const getConfigRefs = (items: any[], contentTypes: string[] = []) => {\n  if (!items) return []\n  return items.filter((x: any) => contentTypes.indexOf(x.internal?.type) !== -1)\n}\n\n/******************************************************\n\tGet first item in Config Ref array\n******************************************************/\nexport const getFirstConfigRef = (\n  items: any[],\n  contentTypes: string[] = [],\n  empty: any = undefined\n) => {\n  if (!items) return undefined\n  return getFirstArrayItem(getConfigRefs(items, contentTypes), empty)\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  `html`,\n  `body`,\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    serverData: input.serverData,\n    pageContext: input.pageContext,\n  }\n}\n\n/**\n * Throw error if Head export is not a valid function\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 which may have been directly added or introduced by `wrapRootElement`\n * @param {string} tagName\n */\nexport function warnForInvalidTag(tagName) {\n  if (process.env.NODE_ENV !== `production`) {\n    const warning = createWarningForInvalidTag(tagName)\n    warnOnce(warning)\n  }\n}\n\nfunction createWarningForInvalidTag(tagName) {\n  return `<${tagName}> is not a valid head element. Please use one of the following: ${VALID_NODE_NAMES.join(\n    `, `\n  )}.\\n\\nAlso make sure that wrapRootElement in gatsby-ssr/gatsby-browser doesn't contain UI elements: https://gatsby.dev/invalid-head-elements`\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\nexport function getValidHeadNodesAndAttributes(\n  rootNode,\n  htmlAndBodyAttributes = {\n    html: {},\n    body: {},\n  }\n) {\n  const seenIds = new Map()\n  const validHeadNodes = []\n\n  // Filter out non-element nodes before looping since we don't care about them\n  for (const node of rootNode.childNodes) {\n    const nodeName = node.nodeName.toLowerCase()\n    const id = node.attributes?.id?.value\n\n    if (!isElementType(node)) continue\n\n    if (isValidNodeName(nodeName)) {\n      // <html> and <body> tags are treated differently, in that we don't render them, we only extract the attributes and apply them separetely\n      if (nodeName === `html` || nodeName === `body`) {\n        for (const attribute of node.attributes) {\n          const isStyleAttribute = attribute.name === `style`\n\n          // Merge attributes for same nodeName from previous loop iteration\n          htmlAndBodyAttributes[nodeName] = {\n            ...htmlAndBodyAttributes[nodeName],\n          }\n\n          if (!isStyleAttribute) {\n            htmlAndBodyAttributes[nodeName][attribute.name] = attribute.value\n          }\n\n          // If there is already a style attribute, we need to merge them as otherwise the last one will \"win\"\n          if (isStyleAttribute) {\n            htmlAndBodyAttributes[nodeName].style = `${\n              htmlAndBodyAttributes[nodeName]?.style\n                ? htmlAndBodyAttributes[nodeName].style\n                : ``\n            }${attribute.value} `\n          }\n        }\n      } else {\n        let clonedNode = node.cloneNode(true)\n        clonedNode.setAttribute(`data-gatsby-head`, true)\n\n        // // This is hack to make script tags work\n        if (clonedNode.nodeName.toLowerCase() === `script`) {\n          clonedNode = massageScript(clonedNode)\n        }\n        // Duplicate ids are not allowed in the head, so we need to dedupe them\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[\n              indexOfPreviouslyInsertedNode\n            ].parentNode?.removeChild(\n              validHeadNodes[indexOfPreviouslyInsertedNode]\n            )\n            validHeadNodes[indexOfPreviouslyInsertedNode] = clonedNode\n          }\n        } else {\n          validHeadNodes.push(clonedNode)\n        }\n      }\n    } else {\n      warnForInvalidTag(nodeName)\n    }\n\n    if (node.childNodes.length) {\n      validHeadNodes.push(\n        ...getValidHeadNodesAndAttributes(node, htmlAndBodyAttributes)\n          .validHeadNodes\n      )\n    }\n  }\n\n  return { validHeadNodes, htmlAndBodyAttributes }\n}\n\nfunction massageScript(node) {\n  const script = document.createElement(`script`)\n  for (const attr of node.attributes) {\n    script.setAttribute(attr.name, attr.value)\n  }\n  script.innerHTML = node.innerHTML\n\n  return script\n}\n\nexport function isValidNodeName(nodeName) {\n  return VALID_NODE_NAMES.includes(nodeName)\n}\n/*\n * For Head, we only care about element nodes(type = 1), so this util is used to skip over non-element nodes\n * For Node type, see https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n */\nexport function isElementType(node) {\n  return node.nodeType === 1\n}\n\n/**\n * Removes all the head elements that were added by `Head`\n */\nexport function removePrevHeadElements() {\n  const prevHeadNodes = document.querySelectorAll(`[data-gatsby-head]`)\n  for (const node of prevHeadNodes) {\n    node.parentNode.removeChild(node)\n  }\n}\n\nexport function applyHtmlAndBodyAttributes(htmlAndBodyAttributes) {\n  if (!htmlAndBodyAttributes) return\n\n  const { html, body } = htmlAndBodyAttributes\n\n  const htmlElement = document.querySelector(`html`)\n  if (htmlElement) {\n    Object.entries(html).forEach(([attributeName, attributeValue]) => {\n      htmlElement.setAttribute(attributeName, attributeValue)\n    })\n  }\n\n  const bodyElement = document.querySelector(`body`)\n  if (bodyElement) {\n    Object.entries(body).forEach(([attributeName, attributeValue]) => {\n      bodyElement.setAttribute(attributeName, attributeValue)\n    })\n  }\n}\n\nexport function removeHtmlAndBodyAttributes(htmlAndBodyattributeList) {\n  if (!htmlAndBodyattributeList) return\n\n  const { html, body } = htmlAndBodyattributeList\n\n  if (html) {\n    const htmlElement = document.querySelector(`html`)\n    html.forEach(attributeName => {\n      if (htmlElement) {\n        htmlElement.removeAttribute(attributeName)\n      }\n    })\n  }\n\n  if (body) {\n    const bodyElement = document.querySelector(`body`)\n    body.forEach(attributeName => {\n      if (bodyElement) {\n        bodyElement.removeAttribute(attributeName)\n      }\n    })\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 {\n  headExportValidator,\n  filterHeadProps,\n  diffNodes,\n  getValidHeadNodesAndAttributes,\n  removePrevHeadElements,\n  applyHtmlAndBodyAttributes,\n  removeHtmlAndBodyAttributes,\n} from \"./utils\"\nimport { apiRunner } from \"../api-runner-browser\"\n\nconst hiddenRoot = document.createElement(`div`)\nconst keysOfHtmlAndBodyAttributes = {\n  html: [],\n  body: [],\n}\n\nconst onHeadRendered = () => {\n  const { validHeadNodes, htmlAndBodyAttributes } =\n    getValidHeadNodesAndAttributes(hiddenRoot)\n\n  keysOfHtmlAndBodyAttributes.html = Object.keys(htmlAndBodyAttributes.html)\n  keysOfHtmlAndBodyAttributes.body = Object.keys(htmlAndBodyAttributes.body)\n\n  applyHtmlAndBodyAttributes(htmlAndBodyAttributes)\n\n  /**\n   * The rest of the code block below is a diffing mechanism to ensure that\n   * the head elements aren't duplicted on every re-render.\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  // sigh ... <html> and <body> elements are not valid descedents of <div> (our hidden element)\n  // react-dom in dev mode will warn about this. There doesn't seem to be a way to render arbitrary\n  // user Head without hitting this issue (our hidden element could be just \"new Document()\", but\n  // this can only have 1 child, and we don't control what is being rendered so that's not an option)\n  // instead we continue to render to <div>, and just silence warnings for <html> and <body> elements\n  // https://github.com/facebook/react/blob/e2424f33b3ad727321fc12e75c5e94838e84c2b5/packages/react-dom-bindings/src/client/validateDOMNesting.js#L498-L520\n  const originalConsoleError = console.error.bind(console)\n  console.error = (...args) => {\n    if (\n      Array.isArray(args) &&\n      args.length >= 2 &&\n      args[0]?.includes?.(`validateDOMNesting(...): %s cannot appear as`) &&\n      (args[1] === `<html>` || args[1] === `<body>`)\n    ) {\n      return undefined\n    }\n    return originalConsoleError(...args)\n  }\n\n  /* We set up observer to be able to regenerate <head> after react-refresh\n     updates our hidden element.\n  */\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 HeadElement = (\n        <pageComponent.Head {...filterHeadProps(pageComponentProps)} />\n      )\n\n      const WrapHeadElement = apiRunner(\n        `wrapRootElement`,\n        { element: HeadElement },\n        HeadElement,\n        ({ result }) => {\n          return { element: result }\n        }\n      ).pop()\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        <FireCallbackInEffect callback={onHeadRendered}>\n          <StaticQueryContext.Provider value={staticQueryResults}>\n            <LocationProvider>{WrapHeadElement}</LocationProvider>\n          </StaticQueryContext.Provider>\n        </FireCallbackInEffect>,\n        hiddenRoot\n      )\n    }\n\n    return () => {\n      removePrevHeadElements()\n      removeHtmlAndBodyAttributes(keysOfHtmlAndBodyAttributes)\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","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nmodule.exports = _inheritsLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/****************************************************\n\n\tUtilities - Shopping Cart\n\n****************************************************/\nimport { CartItemModel } from \"../models/cart\"\n\n/****************************************************\n\tSession cart\n****************************************************/\nconst cartName = \"shortlist\"\nconst VALIDATION = \"85jyeN+kl9PyRXadftB4xg==\"\n\n/****************************************************\n\tCart actions - Fetch\n****************************************************/\nexport const fetchLocalStorageCart = (): CartItemModel[] => {\n  const storageData = localStorage.getItem(cartName)\n\n  // If the item is expired, delete from storage return an empty cart\n  // const now = new Date()\n  // if (!cart.expiry || now.getTime() > cart.expiry) {\n  //   return []\n  // }\n\n  if (!storageData) return []\n\n  // test for valid cart JSON\n  try {\n    JSON.parse(storageData)\n  } catch (e) {\n    return []\n  }\n\n  // check the validation string and clear if it doesn't match\n  // - allows clearing of all shortlists\n  return JSON.parse(storageData).validation !== VALIDATION\n    ? []\n    : JSON.parse(storageData).cartItems\n}\n\nexport const fetchCart = async () => {\n  const storageCart = fetchLocalStorageCart()\n\n  //   // don't call the API for an empty cart\n  //   if (!storageCart.length) return Promise.resolve([])\n\n  //   // axios would crash if the Contentful API failed so using fetch instead\n  //   return fetch(\"/api/getPropertyData\", {\n  //     method: \"POST\",\n  //     headers: { \"Content-Type\": \"application/json\" },\n  //     body: JSON.stringify({\n  //       items: storageCart.join(\",\"),\n  //       preview: process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n  //     }),\n  //   })\n\n  return Promise.resolve(storageCart)\n}\n\n/****************************************************\n\tCart actions - Save\n****************************************************/\nexport const saveLocalStorageCart = (cartItems: string[]) => {\n  if (cartItems) {\n    // create new cart expiry\n    // const now = new Date()\n    const storageData = {\n      cartItems: cartItems.length > 0 ? cartItems : [],\n      // expiry: now.getTime() + 1000 * 60 * 60 * 24 * 2, // 2 days\n      validation: VALIDATION,\n    }\n\n    // update localStorage\n    localStorage.setItem(cartName, JSON.stringify(storageData))\n  }\n}\n","// import the Action types\nimport { ActionInterface, CartStateModel } from \"../../models/cart\"\nimport { PropertyModel } from \"../../models/page\"\nimport { saveLocalStorageCart } from \"../../utils/cart\"\n\n// calculate the total price of the cart and the total quantity of the cart while saving cart to localStorage\nexport const sumItems = (cartItems: string[] | undefined) => {\n  saveLocalStorageCart(cartItems || [])\n  let itemCount = cartItems?.length || 0\n  return { itemCount }\n}\n\nconst CartReducer = (state: CartStateModel, action: ActionInterface) => {\n  let payload: any\n\n  switch (action.type) {\n    case \"LOAD_CART\":\n      payload = action.payload ? (action.payload as string[]) : undefined\n      return {\n        ...state,\n        cartItems: payload,\n        ...sumItems(payload),\n        loaded: true,\n      }\n\n    case \"ADD_TO_CART\":\n      payload = action.payload as PropertyModel\n      const propertyId = payload.propertyId\n\n      let cartItems = [...(state.cartItems || [])]\n      if (cartItems?.indexOf(propertyId) === -1) cartItems?.push(propertyId)\n      else cartItems = cartItems.filter(x => x !== propertyId)\n\n      return {\n        ...state,\n        cartItems: cartItems || undefined,\n        ...sumItems(cartItems),\n      }\n\n    case \"REMOVE_ITEM\":\n      payload = action.payload as number\n      if (state.cartItems && state.cartItems?.length > payload)\n        state.cartItems?.splice(payload, 1)\n      return {\n        ...state,\n        cartItems: state.cartItems ? [...state.cartItems] : undefined,\n        ...sumItems(state.cartItems),\n      }\n\n    case \"CLEAR\":\n      return {\n        ...state,\n        cartItems: [],\n        ...sumItems([]),\n      }\n\n    // return the state if the action type is not found\n    default:\n      return state\n  }\n}\n\nexport default CartReducer\n","import React, { useEffect, useReducer } from \"react\"\nimport { PropertyModel } from \"../../models/page\"\nimport { fetchCart } from \"../../utils/cart\"\nimport { CartContext, initialCartState } from \"./CartContext\"\nimport CartReducer from \"./CartReducer\"\n\ninterface Props {\n  children?: React.ReactElement\n}\n\nconst CartState = ({ children }: Props) => {\n  const [state, dispatch] = useReducer(CartReducer, initialCartState)\n\n  useEffect(() => {\n    fetchCart()\n      .then(response => {\n        if (Array.isArray(response)) return response\n        return (response as Response)?.json()\n      })\n      .then(data => {\n        if (data.message) {\n          loadCart(undefined)\n          throw data\n        } else {\n          loadCart(data as any as string[])\n        }\n      })\n      .catch(error => {\n        loadCart(undefined)\n        console.log(\"Error: \", error)\n      })\n  }, [])\n\n  const loadCart = (payload: string[] | undefined) => {\n    dispatch({ type: \"LOAD_CART\", payload })\n  }\n\n  const addToCart = (payload: PropertyModel) => {\n    dispatch({ type: \"ADD_TO_CART\", payload })\n  }\n\n  const removeFromCart = (payload: number) => {\n    dispatch({ type: \"REMOVE_ITEM\", payload })\n  }\n\n  const clearCart = () => {\n    dispatch({ type: \"CLEAR\", payload: undefined })\n  }\n\n  return (\n    // Add the functions that have been defined above into the Context provider, and pass on to the children\n    <CartContext.Provider\n      value={{\n        loadCart,\n        addToCart,\n        removeFromCart,\n        clearCart,\n        ...state,\n      }}\n    >\n      {children}\n    </CartContext.Provider>\n  )\n}\n\nexport default CartState\n","import type { GatsbyBrowser } from \"gatsby\"\nimport React from \"react\"\nimport { ParallaxProvider } from \"react-scroll-parallax\"\n\n/****************************************************\n    Site styles\n****************************************************/\nimport \"./src/scss/app.scss\"\n\n/****************************************************\n    Context\n****************************************************/\nimport ArticleProvider from \"./src/context/Article/ArticleContext\"\nimport CartState from \"./src/context/Cart/CartState\"\nimport CaseStudyProvider from \"./src/context/CaseStudy/CaseStudyContext\"\nimport PropertyProvider from \"./src/context/Property/PropertyContext\"\n\n/****************************************************\n    wrap app for global state context\n****************************************************/\nexport const wrapRootElement: GatsbyBrowser[\"wrapRootElement\"] = ({\n  element,\n}) => (\n  <ParallaxProvider>\n    <PropertyProvider>\n      <ArticleProvider>\n        <CaseStudyProvider>\n          <CartState>{element}</CartState>\n        </CaseStudyProvider>\n      </ArticleProvider>\n    </PropertyProvider>\n  </ParallaxProvider>\n)\n\n/****************************************************\n    Page transition \n    - fix scroll jump on page transition\n****************************************************/\nexport const shouldUpdateScroll: GatsbyBrowser[\"shouldUpdateScroll\"] = ({\n  routerProps: { location },\n  prevRouterProps,\n  getSavedScrollPosition,\n}) => {\n  const locationPath = location.pathname\n  const prevLocationPath = prevRouterProps?.location?.pathname\n  const savedPosition = getSavedScrollPosition(location) || [0, 0]\n\n  // only scroll top if the page path has changed - not on query string update\n  if (locationPath !== prevLocationPath) {\n    setTimeout(() => {\n      window.scrollTo({\n        top: savedPosition[1],\n        left: savedPosition[0],\n        // behavior: \"smooth\",\n      })\n    }, 400)\n  }\n  return false\n}\n\n/****************************************************\n    Page change \n****************************************************/\nexport const onRouteUpdate: GatsbyBrowser[\"onRouteUpdate\"] = ({\n  location,\n  prevLocation,\n}) => {}\n","import { createContext, useContext } from \"react\"\nimport { CartStateModel } from \"../../models/cart\"\n\n// initial state of the cart\nexport const initialCartState: CartStateModel = {\n  cartItems: undefined,\n  itemCount: undefined,\n  loaded: false,\n  // expiry: storage.expiry,\n}\n\nexport const CartContext = createContext<CartStateModel>(initialCartState)\nexport const useCart = () => useContext(CartContext)\n","\"use strict\";\n\nexports.__esModule = true;\nexports.applyTrailingSlashOption = void 0;\nconst endsWithSuffixes = (suffixes, input) => {\n  for (const suffix of suffixes) {\n    if (input.endsWith(suffix)) return true;\n  }\n  return false;\n};\nconst suffixes = [`.html`, `.json`, `.js`, `.map`, `.txt`, `.xml`, `.pdf`];\nconst applyTrailingSlashOption = (input, option = `always`) => {\n  if (input === `/`) return input;\n  const hasTrailingSlash = input.endsWith(`/`);\n  if (endsWithSuffixes(suffixes, input)) {\n    return input;\n  }\n  if (option === `always`) {\n    return hasTrailingSlash ? input : `${input}/`;\n  }\n  if (option === `never`) {\n    return hasTrailingSlash ? input.slice(0, -1) : input;\n  }\n  return input;\n};\nexports.applyTrailingSlashOption = applyTrailingSlashOption;","import*as e from\"react\";import t from\"react\";import r from\"prop-types\";import n from\"invariant\";function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(this,arguments)}function a(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)t.indexOf(r=a[n])>=0||(o[r]=e[r]);return o}const s=e=>{const{search:t,hash:r,href:n,origin:o,protocol:a,host:s,hostname:i,port:c}=e.location;let{pathname:l}=e.location;return!l&&n&&u&&(l=new URL(n).pathname),{pathname:encodeURI(decodeURI(l)),search:t,hash:r,href:n,origin:o,protocol:a,host:s,hostname:i,port:c,state:e.history.state,key:e.history.state&&e.history.state.key||\"initial\"}},i=(e,t)=>{let r=[],n=s(e),a=!1,i=()=>{};return{get location(){return n},get transitioning(){return a},_onTransitionComplete(){a=!1,i()},listen(t){r.push(t);const o=()=>{n=s(e),t({location:n,action:\"POP\"})};return e.addEventListener(\"popstate\",o),()=>{e.removeEventListener(\"popstate\",o),r=r.filter(e=>e!==t)}},navigate(t,{state:c,replace:u=!1}={}){if(\"number\"==typeof t)e.history.go(t);else{c=o({},c,{key:Date.now()+\"\"});try{a||u?e.history.replaceState(c,null,t):e.history.pushState(c,null,t)}catch(r){e.location[u?\"replace\":\"assign\"](t)}}n=s(e),a=!0;const l=new Promise(e=>i=e);return r.forEach(e=>e({location:n,action:\"PUSH\"})),l}}},c=(e=\"/\")=>{const t=e.indexOf(\"?\"),r={pathname:t>-1?e.substr(0,t):e,search:t>-1?e.substr(t):\"\"};let n=0;const o=[r],a=[null];return{get location(){return o[n]},addEventListener(e,t){},removeEventListener(e,t){},history:{get entries(){return o},get index(){return n},get state(){return a[n]},pushState(e,t,r){const[s,i=\"\"]=r.split(\"?\");n++,o.push({pathname:s,search:i.length?`?${i}`:i}),a.push(e)},replaceState(e,t,r){const[s,i=\"\"]=r.split(\"?\");o[n]={pathname:s,search:i},a[n]=e},go(e){const t=n+e;t<0||t>a.length-1||(n=t)}}}},u=!(\"undefined\"==typeof window||!window.document||!window.document.createElement),l=i(u?window:c()),{navigate:p}=l;function h(e,r){return t.createServerContext?((e,r=null)=>(globalThis.__SERVER_CONTEXT||(globalThis.__SERVER_CONTEXT={}),globalThis.__SERVER_CONTEXT[e]||(globalThis.__SERVER_CONTEXT[e]=t.createServerContext(e,r)),globalThis.__SERVER_CONTEXT[e]))(e,r):t.createContext(r)}const m=h(\"Base\",{baseuri:\"/\",basepath:\"/\"}),d=h(\"Location\"),f=()=>e.useContext(m),y=()=>e.useContext(d);function E(e){this.uri=e}const g=e=>e instanceof E,v=e=>{throw new E(e)};function b(t){const{to:r,replace:n=!0,state:o,noThrow:a,baseuri:s}=t;e.useEffect(()=>{Promise.resolve().then(()=>{const e=k(r,s);p(P(e,t),{replace:n,state:o})})},[]);const i=k(r,s);return a||v(P(i,t)),null}const R=t=>{const r=y(),{baseuri:n}=f();/*#__PURE__*/return e.createElement(b,o({},r,{baseuri:n},t))};R.propTypes={from:r.string,to:r.string.isRequired};const C=(e,t)=>e.substr(0,t.length)===t,w=(e,t)=>{let r,o;const[a]=t.split(\"?\"),s=N(a),i=\"\"===s[0],c=j(e);for(let e=0,a=c.length;e<a;e++){let a=!1;const u=c[e].route;if(u.default){o={route:u,params:{},uri:t};continue}const l=N(u.path),p={},h=Math.max(s.length,l.length);let m=0;for(;m<h;m++){const e=l[m],t=s[m];if($(e)){p[e.slice(1)||\"*\"]=s.slice(m).map(decodeURIComponent).join(\"/\");break}if(void 0===t){a=!0;break}const r=O.exec(e);if(r&&!i){const e=-1===U.indexOf(r[1]);n(e,`<Router> dynamic segment \"${r[1]}\" is a reserved name. Please use a different name in path \"${u.path}\".`);const o=decodeURIComponent(t);p[r[1]]=o}else if(e!==t){a=!0;break}}if(!a){r={route:u,params:p,uri:\"/\"+s.slice(0,m).join(\"/\")};break}}return r||o||null},x=(e,t)=>w([{path:e}],t),k=(e,t)=>{if(C(e,\"/\"))return e;const[r,n]=e.split(\"?\"),[o]=t.split(\"?\"),a=N(r),s=N(o);if(\"\"===a[0])return L(o,n);if(!C(a[0],\".\")){const e=s.concat(a).join(\"/\");return L((\"/\"===o?\"\":\"/\")+e,n)}const i=s.concat(a),c=[];for(let e=0,t=i.length;e<t;e++){const t=i[e];\"..\"===t?c.pop():\".\"!==t&&c.push(t)}return L(\"/\"+c.join(\"/\"),n)},P=(e,t)=>{const[r,n=\"\"]=e.split(\"?\");let o=\"/\"+N(r).map(e=>{const r=O.exec(e);return r?t[r[1]]:e}).join(\"/\");const{location:{search:a=\"\"}={}}=t,s=a.split(\"?\")[1]||\"\";return o=L(o,n,s),o},T=(e,t)=>{const r=e=>_(e);return N(e).filter(r).sort().join(\"/\")===N(t).filter(r).sort().join(\"/\")},O=/^:(.+)/,_=e=>O.test(e),$=e=>e&&\"*\"===e[0],S=(e,t)=>({route:e,score:e.default?0:N(e.path).reduce((e,t)=>(e+=4,(e=>\"\"===e)(t)?e+=1:_(t)?e+=2:$(t)?e-=5:e+=3,e),0),index:t}),j=e=>e.map(S).sort((e,t)=>e.score<t.score?1:e.score>t.score?-1:e.index-t.index),N=e=>e.replace(/(^\\/+|\\/+$)/g,\"\").split(\"/\"),L=(e,...t)=>e+((t=t.filter(e=>e&&e.length>0))&&t.length>0?`?${t.join(\"&\")}`:\"\"),U=[\"uri\",\"path\"],D=(e,t)=>{const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(r=>t.hasOwnProperty(r)&&e[r]===t[r])},M=e=>e.replace(/(^\\/+|\\/+$)/g,\"\"),I=t=>r=>{if(!r)return null;if(r.type===e.Fragment&&r.props.children)return e.Children.map(r.props.children,I(t));if(n(r.props.path||r.props.default||r.type===R,`<Router>: Children of <Router> must have a \\`path\\` or \\`default\\` prop, or be a \\`<Redirect>\\`. None found on element type \\`${r.type}\\``),n(!!(r.type!==R||r.props.from&&r.props.to),`<Redirect from=\"${r.props.from}\" to=\"${r.props.to}\"/> requires both \"from\" and \"to\" props when inside a <Router>.`),n(!(r.type===R&&!T(r.props.from,r.props.to)),`<Redirect from=\"${r.props.from} to=\"${r.props.to}\"/> has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.`),r.props.default)return{value:r,default:!0};const o=r.type===R?r.props.from:r.props.path,a=\"/\"===o?t:`${M(t)}/${M(o)}`;return{value:r,default:r.props.default,path:r.props.children?`${M(a)}/*`:a}},V=[\"innerRef\"],q=[\"to\",\"state\",\"replace\",\"getProps\"],X=[\"key\"];let{forwardRef:B}=e;void 0===B&&(B=e=>e);const K=()=>{},A=B((t,r)=>{let{innerRef:n}=t,s=a(t,V);const{baseuri:i}=f(),{location:c}=y(),{to:u,state:l,replace:h,getProps:m=K}=s,d=a(s,q),E=k(u,i),g=encodeURI(E),v=c.pathname===g,b=C(c.pathname,g);/*#__PURE__*/return e.createElement(\"a\",o({ref:r||n,\"aria-current\":v?\"page\":void 0},d,m({isCurrent:v,isPartiallyCurrent:b,href:E,location:c}),{href:E,onClick:e=>{if(d.onClick&&d.onClick(e),(e=>!e.defaultPrevented&&0===e.button&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey))(e)){e.preventDefault();let t=h;if(\"boolean\"!=typeof h&&v){const e=a(o({},c.state),X);t=D(o({},l),e)}p(E,{state:l,replace:t})}}}))});A.displayName=\"Link\",A.propTypes={to:r.string.isRequired};class F extends e.Component{constructor(...e){super(...e),this.displayName=\"ReactUseErrorBoundary\"}componentDidCatch(...e){this.setState({}),this.props.onError(...e)}render(){return this.props.children}}const W=e.createContext({componentDidCatch:{current:void 0},error:void 0,setError:()=>!1});function H({children:t}){const[r,n]=e.useState(),o=e.useRef(),a=e.useMemo(()=>({componentDidCatch:o,error:r,setError:n}),[r]);/*#__PURE__*/return e.createElement(W.Provider,{value:a},/*#__PURE__*/e.createElement(F,{error:r,onError:(e,t)=>{n(e),null==o.current||o.current(e,t)}},t))}H.displayName=\"ReactUseErrorBoundaryContext\";const z=function(t){var r,n;function a(r){/*#__PURE__*/return e.createElement(H,null,/*#__PURE__*/e.createElement(t,o({key:\"WrappedComponent\"},r)))}return a.displayName=`WithErrorBoundary(${null!=(r=null!=(n=t.displayName)?n:t.name)?r:\"Component\"})`,a}(({history:t=l,children:r})=>{const{location:n}=t,[o,a]=e.useState({location:n}),[s]=function(t){const r=e.useContext(W);r.componentDidCatch.current=void 0;const n=e.useCallback(()=>{r.setError(void 0)},[]);return[r.error,n]}();if(e.useEffect(()=>{t._onTransitionComplete()},[o.location]),e.useEffect(()=>{let e=!1;const r=t.listen(({location:t})=>{Promise.resolve().then(()=>{requestAnimationFrame(()=>{e||a({location:t})})})});return()=>{e=!0,r()}},[]),s){if(!g(s))throw s;p(s.uri,{replace:!0})}/*#__PURE__*/return e.createElement(d.Provider,{value:o},\"function\"==typeof r?r(o):r||null)}),G=({children:t})=>{const r=y();return r?t(r):/*#__PURE__*/e.createElement(z,null,t)},J=({url:t,children:r})=>{const n=t.indexOf(\"?\");let o,a=\"\";return n>-1?(o=t.substring(0,n),a=t.substring(n)):o=t,/*#__PURE__*/e.createElement(d.Provider,{value:{location:{pathname:o,search:a,hash:\"\"}}},r)},Q=({path:e,children:t})=>{const{baseuri:r}=f(),{location:n}=y(),a=k(e,r),s=x(a,n.pathname);return t({location:n,match:s?o({},s.params,{uri:s.uri,path:e}):null})},Y=[\"uri\",\"location\",\"component\"],Z=[\"children\",\"style\",\"component\",\"uri\",\"location\"],ee=t=>{let{uri:r,location:n,component:s}=t,i=a(t,Y);/*#__PURE__*/return e.createElement(re,o({},i,{component:s,uri:r,location:n}))};let te=0;const re=t=>{let{children:r,style:n,component:s=\"div\",uri:i,location:c}=t,u=a(t,Z);const l=e.useRef(),p=e.useRef(!0),h=e.useRef(i),m=e.useRef(c.pathname),d=e.useRef(!1);e.useEffect(()=>(te++,f(),()=>{te--,0===te&&(p.current=!0)}),[]),e.useEffect(()=>{let e=!1,t=!1;i!==h.current&&(h.current=i,e=!0),c.pathname!==m.current&&(m.current=c.pathname,t=!0),d.current=e||t&&c.pathname===i,d.current&&f()},[i,c]);const f=e.useCallback(()=>{var e;\"test\"!==process.env.NODE_ENV&&(p.current?p.current=!1:(e=l.current,d.current&&e&&e.focus()))},[]);/*#__PURE__*/return e.createElement(s,o({style:o({outline:\"none\"},n),tabIndex:\"-1\",ref:l},u),r)},ne=[\"location\",\"primary\",\"children\",\"basepath\",\"baseuri\",\"component\"],oe=t=>{const r=f(),n=y();/*#__PURE__*/return e.createElement(ae,o({},r,n,t))};function ae(t){const{location:r,primary:n=!0,children:s,basepath:i,component:c=\"div\"}=t,u=a(t,ne),l=e.Children.toArray(s).reduce((e,t)=>{const r=I(i)(t);return e.concat(r)},[]),{pathname:p}=r,h=w(l,p);if(h){const{params:t,uri:a,route:s,route:{value:l}}=h,p=s.default?i:s.path.replace(/\\*$/,\"\"),d=o({},t,{uri:a,location:r}),f=e.cloneElement(l,d,l.props.children?/*#__PURE__*/e.createElement(oe,{location:r,primary:n},l.props.children):void 0),y=n?ee:c,E=n?o({uri:a,location:r,component:c},u):u;/*#__PURE__*/return e.createElement(m.Provider,{value:{baseuri:a,basepath:p}},/*#__PURE__*/e.createElement(y,E,f))}return null}const se=()=>{const e=y();if(!e)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\");return e.location},ie=()=>{throw new Error(\"useNavigate is removed. Use import { navigate } from 'gatsby' instead\")},ce=()=>{const e=f();if(!e)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\");const t=se(),r=x(e.basepath,t.pathname);return r?r.params:null},ue=e=>{if(!e)throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");const t=f();if(!t)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\");const r=se(),n=k(e,t.baseuri),a=x(n,r.pathname);return a?o({},a.params,{uri:a.uri,path:e}):null};export{m as BaseContext,A as Link,G as Location,d as LocationContext,z as LocationProvider,Q as Match,R as Redirect,oe as Router,J as ServerLocation,i as createHistory,c as createMemorySource,l as globalHistory,P as insertParams,g as isRedirect,x as match,p as navigate,w as pick,v as redirectTo,k as resolve,D as shallowCompare,C as startsWith,f as useBaseContext,se as useLocation,y as useLocationContext,ue as useMatch,ie as useNavigate,ce as useParams,T as validateRedirect};\n//# sourceMappingURL=index.modern.mjs.map\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","// 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 {\n  navigate as reachNavigate,\n  globalHistory,\n} from \"@gatsbyjs/reach-router\"\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_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 <div {...RouteAnnouncerProps} ref={this.announcementRef}></div>\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(nextProps) {\n    if (compareLocationProps(this.props.location, nextProps.location)) {\n      onPreRouteUpdate(nextProps.location, this.props.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      <React.Fragment>\n        {this.props.children}\n        <RouteAnnouncer location={location} />\n      </React.Fragment>\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 \"./static-query\"\nimport {\n  SlicesMapContext,\n  SlicesContext,\n  SlicesResultsContext,\n} from \"./slice/context\"\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  getSliceResults,\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    <BaseContext.Provider\n      value={{\n        baseuri: `/`,\n        basepath: `/`,\n      }}\n    >\n      <PageRenderer {...props} />\n    </BaseContext.Provider>\n  )\n\n  const DataContext = React.createContext({})\n\n  const slicesContext = {\n    renderEnvironment: `browser`,\n  }\n\n  class GatsbyRoot extends React.Component {\n    render() {\n      const { children } = this.props\n      return (\n        <Location>\n          {({ location }) => (\n            <EnsureResources location={location}>\n              {({ pageResources, location }) => {\n                const staticQueryResults = getStaticQueryResults()\n                const sliceResults = getSliceResults()\n\n                return (\n                  <StaticQueryContext.Provider value={staticQueryResults}>\n                    <SlicesContext.Provider value={slicesContext}>\n                      <SlicesResultsContext.Provider value={sliceResults}>\n                        <SlicesMapContext.Provider\n                          value={pageResources.page.slicesMap}\n                        >\n                          <DataContext.Provider\n                            value={{ pageResources, location }}\n                          >\n                            {children}\n                          </DataContext.Provider>\n                        </SlicesMapContext.Provider>\n                      </SlicesResultsContext.Provider>\n                    </SlicesContext.Provider>\n                  </StaticQueryContext.Provider>\n                )\n              }}\n            </EnsureResources>\n          )}\n        </Location>\n      )\n    }\n  }\n\n  class LocationHandler extends React.Component {\n    render() {\n      return (\n        <DataContext.Consumer>\n          {({ pageResources, location }) => (\n            <RouteUpdates location={location}>\n              <ScrollContext\n                location={location}\n                shouldUpdateScroll={shouldUpdateScroll}\n              >\n                <Router\n                  basepath={__BASE_PATH__}\n                  location={location}\n                  id=\"gatsby-focus-wrapper\"\n                >\n                  <RouteHandler\n                    path={\n                      pageResources.page.path === `/404.html` ||\n                      pageResources.page.path === `/500.html`\n                        ? stripPrefix(location.pathname, __BASE_PATH__)\n                        : encodeURI(\n                            (\n                              pageResources.page.matchPath ||\n                              pageResources.page.path\n                            ).split(`?`)[0]\n                          )\n                    }\n                    {...this.props}\n                    location={location}\n                    pageResources={pageResources}\n                    {...pageResources.json}\n                  />\n                </Router>\n              </ScrollContext>\n            </RouteUpdates>\n          )}\n        </DataContext.Consumer>\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: <LocationHandler /> },\n      <LocationHandler />,\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 <GatsbyRoot>{SiteRoot}</GatsbyRoot>\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(<App />, 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","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 preferDefault = m => (m && m.default) || m\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\n/**\n * Utility to check the path that goes into doFetch for e.g. potential malicious intentions.\n * It checks for \"//\" because with this you could do a fetch request to a different domain.\n */\nconst shouldAbortFetch = rawPath => rawPath.startsWith(`//`)\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    slicesMap: pageData.slicesMap ?? {},\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.slicesDataDb = new Map()\n    this.sliceInflightDb = new Map()\n    this.slicesDb = 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  loadSliceDataJson(sliceName) {\n    if (this.slicesDataDb.has(sliceName)) {\n      const jsonPayload = this.slicesDataDb.get(sliceName)\n      return Promise.resolve({ sliceName, jsonPayload })\n    }\n\n    const url = `${__PATH_PREFIX__}/slice-data/${sliceName}.json`\n    return doFetch(url, `GET`).then(res => {\n      const jsonPayload = JSON.parse(res.responseText)\n\n      this.slicesDataDb.set(sliceName, jsonPayload)\n      return { sliceName, jsonPayload }\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 Promise.resolve({\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    const loadDataPromises = [\n      this.loadAppData(),\n      this.loadPageDataJson(pagePath),\n    ]\n\n    if (global.hasPartialHydration) {\n      loadDataPromises.push(this.loadPartialHydrationJson(pagePath))\n    }\n\n    const inFlightPromise = Promise.all(loadDataPromises).then(allData => {\n      const [appDataResponse, pageDataResponse, rscDataResponse] = allData\n\n      if (\n        pageDataResponse.status === PageResourceStatus.Error ||\n        rscDataResponse?.status === PageResourceStatus.Error\n      ) {\n        return {\n          status: PageResourceStatus.Error,\n        }\n      }\n\n      let pageData = pageDataResponse.payload\n\n      const {\n        componentChunkName,\n        staticQueryHashes: pageStaticQueryHashes = [],\n        slicesMap = {},\n      } = pageData\n\n      const finalResult = {}\n\n      const dedupedSliceNames = Array.from(new Set(Object.values(slicesMap)))\n\n      const loadSlice = slice => {\n        if (this.slicesDb.has(slice.name)) {\n          return this.slicesDb.get(slice.name)\n        } else if (this.sliceInflightDb.has(slice.name)) {\n          return this.sliceInflightDb.get(slice.name)\n        }\n\n        const inFlight = this.loadComponent(slice.componentChunkName).then(\n          component => {\n            return {\n              component: preferDefault(component),\n              sliceContext: slice.result.sliceContext,\n              data: slice.result.data,\n            }\n          }\n        )\n\n        this.sliceInflightDb.set(slice.name, inFlight)\n        inFlight.then(results => {\n          this.slicesDb.set(slice.name, results)\n          this.sliceInflightDb.delete(slice.name)\n        })\n\n        return inFlight\n      }\n\n      return Promise.all(\n        dedupedSliceNames.map(sliceName => this.loadSliceDataJson(sliceName))\n      ).then(slicesData => {\n        const slices = []\n        const dedupedStaticQueryHashes = [...pageStaticQueryHashes]\n\n        for (const { jsonPayload, sliceName } of Object.values(slicesData)) {\n          slices.push({ name: sliceName, ...jsonPayload })\n          for (const staticQueryHash of jsonPayload.staticQueryHashes) {\n            if (!dedupedStaticQueryHashes.includes(staticQueryHash)) {\n              dedupedStaticQueryHashes.push(staticQueryHash)\n            }\n          }\n        }\n\n        const loadChunkPromises = [\n          Promise.all(slices.map(loadSlice)),\n          this.loadComponent(componentChunkName, `head`),\n        ]\n\n        if (!global.hasPartialHydration) {\n          loadChunkPromises.push(this.loadComponent(componentChunkName))\n        }\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        // get list of components to get\n        const componentChunkPromises = Promise.all(loadChunkPromises).then(\n          components => {\n            const [sliceComponents, headComponent, pageComponent] = components\n\n            finalResult.createdAt = new Date()\n\n            for (const sliceComponent of sliceComponents) {\n              if (!sliceComponent || sliceComponent instanceof Error) {\n                finalResult.status = PageResourceStatus.Error\n                finalResult.error = sliceComponent\n              }\n            }\n\n            if (\n              !global.hasPartialHydration &&\n              (!pageComponent || pageComponent instanceof Error)\n            ) {\n              finalResult.status = PageResourceStatus.Error\n              finalResult.error = pageComponent\n            }\n\n            let pageResources\n\n            if (finalResult.status !== PageResourceStatus.Error) {\n              finalResult.status = PageResourceStatus.Success\n              if (\n                pageDataResponse.notFound === true ||\n                rscDataResponse?.notFound === true\n              ) {\n                finalResult.notFound = true\n              }\n              pageData = Object.assign(pageData, {\n                webpackCompilationHash: appDataResponse\n                  ? appDataResponse.webpackCompilationHash\n                  : ``,\n              })\n\n              if (typeof rscDataResponse?.payload === `string`) {\n                pageResources = toPageResources(pageData, null, headComponent)\n\n                pageResources.partialHydration = rscDataResponse.payload\n\n                const readableStream = new ReadableStream({\n                  start(controller) {\n                    const te = new TextEncoder()\n                    controller.enqueue(te.encode(rscDataResponse.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              } else {\n                pageResources = toPageResources(\n                  pageData,\n                  pageComponent,\n                  headComponent\n                )\n              }\n            }\n\n            // undefined if final result is an error\n            return pageResources\n          }\n        )\n\n        // get list of static queries to get\n        const staticQueryBatchPromise = Promise.all(\n          dedupedStaticQueryHashes.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([componentChunkPromises, 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        if (shouldAbortFetch(rawPath)) {\n          return data\n        }\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        if (shouldAbortFetch(rawPath)) {\n          return data\n        }\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\nexport function getSliceResults() {\n  if (instance) {\n    return instance.slicesDb\n  } else {\n    return {}\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Helpers = exports.ScrollElement = exports.ScrollLink = exports.animateScroll = exports.scrollSpy = exports.Events = exports.scroller = exports.Element = exports.Button = exports.Link = undefined;\n\nvar _Link = require('./components/Link.js');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nvar _Button = require('./components/Button.js');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Element = require('./components/Element.js');\n\nvar _Element2 = _interopRequireDefault(_Element);\n\nvar _scroller = require('./mixins/scroller.js');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _scrollEvents = require('./mixins/scroll-events.js');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nvar _scrollSpy = require('./mixins/scroll-spy.js');\n\nvar _scrollSpy2 = _interopRequireDefault(_scrollSpy);\n\nvar _animateScroll = require('./mixins/animate-scroll.js');\n\nvar _animateScroll2 = _interopRequireDefault(_animateScroll);\n\nvar _scrollLink = require('./mixins/scroll-link.js');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nvar _scrollElement = require('./mixins/scroll-element.js');\n\nvar _scrollElement2 = _interopRequireDefault(_scrollElement);\n\nvar _Helpers = require('./mixins/Helpers.js');\n\nvar _Helpers2 = _interopRequireDefault(_Helpers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Link = _Link2.default;\nexports.Button = _Button2.default;\nexports.Element = _Element2.default;\nexports.scroller = _scroller2.default;\nexports.Events = _scrollEvents2.default;\nexports.scrollSpy = _scrollSpy2.default;\nexports.animateScroll = _animateScroll2.default;\nexports.ScrollLink = _scrollLink2.default;\nexports.ScrollElement = _scrollElement2.default;\nexports.Helpers = _Helpers2.default;\nexports.default = { Link: _Link2.default, Button: _Button2.default, Element: _Element2.default, scroller: _scroller2.default, Events: _scrollEvents2.default, scrollSpy: _scrollSpy2.default, animateScroll: _animateScroll2.default, ScrollLink: _scrollLink2.default, ScrollElement: _scrollElement2.default, Helpers: _Helpers2.default };","exports.components = {\n  \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n  \"component---src-templates-article-article-tsx\": () => import(\"./../../../src/templates/Article/Article.tsx\" /* webpackChunkName: \"component---src-templates-article-article-tsx\" */),\n  \"component---src-templates-case-study-case-study-tsx\": () => import(\"./../../../src/templates/CaseStudy/CaseStudy.tsx\" /* webpackChunkName: \"component---src-templates-case-study-case-study-tsx\" */),\n  \"component---src-templates-content-content-tsx\": () => import(\"./../../../src/templates/Content/Content.tsx\" /* webpackChunkName: \"component---src-templates-content-content-tsx\" */),\n  \"component---src-templates-leasing-leasing-tsx\": () => import(\"./../../../src/templates/Leasing/Leasing.tsx\" /* webpackChunkName: \"component---src-templates-leasing-leasing-tsx\" */),\n  \"component---src-templates-pdf-property-list-pdf-property-list-pdf-tsx\": () => import(\"./../../../src/templates/pdf/PropertyListPdf/PropertyListPdf.tsx\" /* webpackChunkName: \"component---src-templates-pdf-property-list-pdf-property-list-pdf-tsx\" */),\n  \"component---src-templates-pdf-property-pdf-property-pdf-tsx\": () => import(\"./../../../src/templates/pdf/PropertyPdf/PropertyPdf.tsx\" /* webpackChunkName: \"component---src-templates-pdf-property-pdf-property-pdf-tsx\" */),\n  \"component---src-templates-property-property-tsx\": () => import(\"./../../../src/templates/Property/Property.tsx\" /* webpackChunkName: \"component---src-templates-property-property-tsx\" */),\n  \"slice---src-components-layout-footer-footer-tsx\": () => import(\"./../../../src/components/Layout/Footer/Footer.tsx\" /* webpackChunkName: \"slice---src-components-layout-footer-footer-tsx\" */),\n  \"slice---src-components-layout-header-header-tsx\": () => import(\"./../../../src/components/Layout/Header/Header.tsx\" /* webpackChunkName: \"slice---src-components-layout-header-header-tsx\" */)\n}\n\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\nvar _scrollHandler = require(\"./scroll-handler\");\nexports.ScrollContext = _scrollHandler.ScrollHandler;\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use client\"\nimport t from\"prop-types\";import e from\"react\";import{resolve as n,Location as r,Link as o}from\"@gatsbyjs/reach-router\";import{applyTrailingSlashOption as s}from\"gatsby-page-utils/apply-trailing-slash-option\";function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},i.apply(this,arguments)}function a(t){let e=t||\"/\",n=\"\",r=\"\";const o=e.indexOf(\"#\");-1!==o&&(r=e.slice(o),e=e.slice(0,o));const s=e.indexOf(\"?\");return-1!==s&&(n=e.slice(s),e=e.slice(0,s)),{pathname:e,search:\"?\"===n?\"\":n,hash:\"#\"===r?\"\":r}}const c=/^[a-zA-Z][a-zA-Z\\d+\\-.]*?:/,l=t=>{if(\"string\"==typeof t)return!(t=>c.test(t))(t)},p=()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __BASE_PATH__?__BASE_PATH__:void 0:__BASE_PATH__,h=()=>\"production\"!==process.env.NODE_ENV?\"undefined\"!=typeof __PATH_PREFIX__?__PATH_PREFIX__:void 0:__PATH_PREFIX__;function f(t,e=p()){var n;if(!l(t))return t;if(t.startsWith(\"./\")||t.startsWith(\"../\"))return t;const r=null!=(n=null!=e?e:h())?n:\"/\";return`${null!=r&&r.endsWith(\"/\")?r.slice(0,-1):r}${t.startsWith(\"/\")?t:`/${t}`}`}const u=t=>null==t?void 0:t.startsWith(\"/\"),_=()=>\"undefined\"!=typeof __TRAILING_SLASH__?__TRAILING_SLASH__:void 0;function d(t,e){const{pathname:n,search:r,hash:o}=a(t);return`${s(n,e)}${r}${o}`}const m=(t,e)=>\"number\"==typeof t?t:l(t)?u(t)?function(t){const e=f(t),n=_();return\"always\"===n||\"never\"===n?d(e,n):e}(t):function(t,e){if(u(t))return t;const r=_(),o=n(t,e);return\"always\"===r||\"never\"===r?d(o,r):o}(t,e):t,y=[\"to\",\"getProps\",\"onClick\",\"onMouseEnter\",\"activeClassName\",\"activeStyle\",\"innerRef\",\"partiallyActive\",\"state\",\"replace\",\"_location\"];function v(t){return f(t,h())}const b={activeClassName:t.string,activeStyle:t.object,partiallyActive:t.bool};function w(t){/*#__PURE__*/return e.createElement(r,null,({location:n})=>/*#__PURE__*/e.createElement(P,i({},t,{_location:n})))}class P extends e.Component{constructor(t){super(t),this.defaultGetProps=({isPartiallyCurrent:t,isCurrent:e})=>(this.props.partiallyActive?t:e)?{className:[this.props.className,this.props.activeClassName].filter(Boolean).join(\" \"),style:i({},this.props.style,this.props.activeStyle)}:null;let e=!1;\"undefined\"!=typeof window&&window.IntersectionObserver&&(e=!0),this.state={IOSupported:e},this.abortPrefetch=null,this.handleRef=this.handleRef.bind(this)}_prefetch(){let t=window.location.pathname+window.location.search;this.props._location&&this.props._location.pathname&&(t=this.props._location.pathname+this.props._location.search);const e=a(m(this.props.to,t)),n=e.pathname+e.search;if(t!==n)return ___loader.enqueue(n)}componentWillUnmount(){if(!this.io)return;const{instance:t,el:e}=this.io;this.abortPrefetch&&this.abortPrefetch.abort(),t.unobserve(e),t.disconnect()}handleRef(t){this.props.innerRef&&Object.prototype.hasOwnProperty.call(this.props.innerRef,\"current\")?this.props.innerRef.current=t:this.props.innerRef&&this.props.innerRef(t),this.state.IOSupported&&t&&(this.io=((t,e)=>{const n=new window.IntersectionObserver(n=>{n.forEach(n=>{t===n.target&&e(n.isIntersecting||n.intersectionRatio>0)})});return n.observe(t),{instance:n,el:t}})(t,t=>{t?this.abortPrefetch=this._prefetch():this.abortPrefetch&&this.abortPrefetch.abort()}))}render(){const t=this.props,{to:n,getProps:r=this.defaultGetProps,onClick:s,onMouseEnter:c,state:p,replace:h,_location:f}=t,u=function(t,e){if(null==t)return{};var n,r,o={},s=Object.keys(t);for(r=0;r<s.length;r++)e.indexOf(n=s[r])>=0||(o[n]=t[n]);return o}(t,y);\"production\"===process.env.NODE_ENV||l(n)||console.warn(`External link ${n} was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links`);const _=m(n,f.pathname);return l(_)?/*#__PURE__*/e.createElement(o,i({to:_,state:p,getProps:r,innerRef:this.handleRef,onMouseEnter:t=>{c&&c(t);const e=a(_);___loader.hovering(e.pathname+e.search)},onClick:t=>{if(s&&s(t),!(0!==t.button||this.props.target||t.defaultPrevented||t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)){t.preventDefault();let e=h;const n=encodeURI(_)===f.pathname;\"boolean\"!=typeof h&&n&&(e=!0),window.___navigate(_,{state:p,replace:e})}return!0}},u)):/*#__PURE__*/e.createElement(\"a\",i({href:_},u))}}P.propTypes=i({},b,{onClick:t.func,to:t.string.isRequired,replace:t.bool,state:t.object});const E=e.forwardRef((t,n)=>/*#__PURE__*/e.createElement(w,i({innerRef:n},t))),g=(t,e)=>{window.___navigate(m(t,window.location.pathname),e)};export{E as Link,g as navigate,a as parsePath,v as withAssetPrefix,f as withPrefix};\n//# sourceMappingURL=index.modern.mjs.map\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport { createServerOrClientContext } from \"./context-utils\"\n\nconst StaticQueryContext = createServerOrClientContext(`StaticQuery`, {})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n  const finalData = data\n    ? data.data\n    : staticQueryData[query] && staticQueryData[query].data\n\n  return (\n    <React.Fragment>\n      {finalData && render(finalData)}\n      {!finalData && <div>Loading (StaticQuery)</div>}\n    </React.Fragment>\n  )\n}\n\nlet warnedAboutStaticQuery = false\n\n// TODO(v6): Remove completely\nconst StaticQuery = props => {\n  const { data, query, render, children } = props\n\n  if (process.env.NODE_ENV === `development` && !warnedAboutStaticQuery) {\n    console.warn(\n      `The <StaticQuery /> component is deprecated and will be removed in Gatsby v6. Use useStaticQuery instead. Refer to the migration guide for more information: https://gatsby.dev/migrating-4-to-5/#staticquery--is-deprecated`\n    )\n    warnedAboutStaticQuery = true\n  }\n\n  return (\n    <StaticQueryContext.Consumer>\n      {staticQueryData => (\n        <StaticQueryDataRenderer\n          data={data}\n          query={query}\n          render={render || children}\n          staticQueryData={staticQueryData}\n        />\n      )}\n    </StaticQueryContext.Consumer>\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\n  const context = React.useContext(StaticQueryContext)\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 { StaticQuery, StaticQueryContext, useStaticQuery }\n","import React from \"react\"\n\n// Ensure serverContext is not created more than once as React will throw when creating it more than once\n// https://github.com/facebook/react/blob/dd2d6522754f52c70d02c51db25eb7cbd5d1c8eb/packages/react/src/ReactServerContext.js#L101\nconst createServerContext = (name, defaultValue = null) => {\n  /* eslint-disable no-undef */\n  if (!globalThis.__SERVER_CONTEXT) {\n    globalThis.__SERVER_CONTEXT = {}\n  }\n\n  if (!globalThis.__SERVER_CONTEXT[name]) {\n    globalThis.__SERVER_CONTEXT[name] = React.createServerContext(\n      name,\n      defaultValue\n    )\n  }\n\n  return globalThis.__SERVER_CONTEXT[name]\n}\n\nfunction createServerOrClientContext(name, defaultValue) {\n  if (React.createServerContext) {\n    return createServerContext(name, defaultValue)\n  }\n\n  return React.createContext(defaultValue)\n}\n\nexport { createServerOrClientContext }\n","import React from 'react';\nexport default React.createContext(null);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _utils = require('./utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _smooth = require('./smooth');\n\nvar _smooth2 = _interopRequireDefault(_smooth);\n\nvar _cancelEvents = require('./cancel-events');\n\nvar _cancelEvents2 = _interopRequireDefault(_cancelEvents);\n\nvar _scrollEvents = require('./scroll-events');\n\nvar _scrollEvents2 = _interopRequireDefault(_scrollEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\r\n * Gets the easing type from the smooth prop within options.\r\n */\nvar getAnimationType = function getAnimationType(options) {\n  return _smooth2.default[options.smooth] || _smooth2.default.defaultEasing;\n};\n/*\r\n * Function helper\r\n */\nvar functionWrapper = function functionWrapper(value) {\n  return typeof value === 'function' ? value : function () {\n    return value;\n  };\n};\n/*\r\n * Wraps window properties to allow server side rendering\r\n */\nvar currentWindowProperties = function currentWindowProperties() {\n  if (typeof window !== 'undefined') {\n    return window.requestAnimationFrame || window.webkitRequestAnimationFrame;\n  }\n};\n\n/*\r\n * Helper function to never extend 60fps on the webpage.\r\n */\nvar requestAnimationFrameHelper = function () {\n  return currentWindowProperties() || function (callback, element, delay) {\n    window.setTimeout(callback, delay || 1000 / 60, new Date().getTime());\n  };\n}();\n\nvar makeData = function makeData() {\n  return {\n    currentPosition: 0,\n    startPosition: 0,\n    targetPosition: 0,\n    progress: 0,\n    duration: 0,\n    cancel: false,\n\n    target: null,\n    containerElement: null,\n    to: null,\n    start: null,\n    delta: null,\n    percent: null,\n    delayTimeout: null\n  };\n};\n\nvar currentPositionX = function currentPositionX(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollLeft;\n  } else {\n    var supportPageOffset = window.pageXOffset !== undefined;\n    var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n    return supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;\n  }\n};\n\nvar currentPositionY = function currentPositionY(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollTop;\n  } else {\n    var supportPageOffset = window.pageXOffset !== undefined;\n    var isCSS1Compat = (document.compatMode || \"\") === \"CSS1Compat\";\n    return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n  }\n};\n\nvar scrollContainerWidth = function scrollContainerWidth(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollWidth - containerElement.offsetWidth;\n  } else {\n    var body = document.body;\n    var html = document.documentElement;\n\n    return Math.max(body.scrollWidth, body.offsetWidth, html.clientWidth, html.scrollWidth, html.offsetWidth);\n  }\n};\n\nvar scrollContainerHeight = function scrollContainerHeight(options) {\n  var containerElement = options.data.containerElement;\n  if (containerElement && containerElement !== document && containerElement !== document.body) {\n    return containerElement.scrollHeight - containerElement.offsetHeight;\n  } else {\n    var body = document.body;\n    var html = document.documentElement;\n\n    return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n  }\n};\n\nvar animateScroll = function animateScroll(easing, options, timestamp) {\n  var data = options.data;\n\n  // Cancel on specific events\n  if (!options.ignoreCancelEvents && data.cancel) {\n    if (_scrollEvents2.default.registered['end']) {\n      _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPositionY);\n    }\n    return;\n  };\n\n  data.delta = Math.round(data.targetPosition - data.startPosition);\n\n  if (data.start === null) {\n    data.start = timestamp;\n  }\n\n  data.progress = timestamp - data.start;\n\n  data.percent = data.progress >= data.duration ? 1 : easing(data.progress / data.duration);\n\n  data.currentPosition = data.startPosition + Math.ceil(data.delta * data.percent);\n\n  if (data.containerElement && data.containerElement !== document && data.containerElement !== document.body) {\n    if (options.horizontal) {\n      data.containerElement.scrollLeft = data.currentPosition;\n    } else {\n      data.containerElement.scrollTop = data.currentPosition;\n    }\n  } else {\n    if (options.horizontal) {\n      window.scrollTo(data.currentPosition, 0);\n    } else {\n      window.scrollTo(0, data.currentPosition);\n    }\n  }\n\n  if (data.percent < 1) {\n    var easedAnimate = animateScroll.bind(null, easing, options);\n    requestAnimationFrameHelper.call(window, easedAnimate);\n    return;\n  }\n\n  if (_scrollEvents2.default.registered['end']) {\n    _scrollEvents2.default.registered['end'](data.to, data.target, data.currentPosition);\n  }\n};\n\nvar setContainer = function setContainer(options) {\n  options.data.containerElement = !options ? null : options.containerId ? document.getElementById(options.containerId) : options.container && options.container.nodeType ? options.container : document;\n};\n\nvar animateTopScroll = function animateTopScroll(scrollOffset, options, to, target) {\n  options.data = options.data || makeData();\n\n  window.clearTimeout(options.data.delayTimeout);\n\n  var setCancel = function setCancel() {\n    options.data.cancel = true;\n  };\n  _cancelEvents2.default.subscribe(setCancel);\n\n  setContainer(options);\n\n  options.data.start = null;\n  options.data.cancel = false;\n  options.data.startPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n  options.data.targetPosition = options.absolute ? scrollOffset : scrollOffset + options.data.startPosition;\n\n  if (options.data.startPosition === options.data.targetPosition) {\n    if (_scrollEvents2.default.registered['end']) {\n      _scrollEvents2.default.registered['end'](options.data.to, options.data.target, options.data.currentPosition);\n    }\n    return;\n  }\n\n  options.data.delta = Math.round(options.data.targetPosition - options.data.startPosition);\n\n  options.data.duration = functionWrapper(options.duration)(options.data.delta);\n  options.data.duration = isNaN(parseFloat(options.data.duration)) ? 1000 : parseFloat(options.data.duration);\n  options.data.to = to;\n  options.data.target = target;\n\n  var easing = getAnimationType(options);\n  var easedAnimate = animateScroll.bind(null, easing, options);\n\n  if (options && options.delay > 0) {\n    options.data.delayTimeout = window.setTimeout(function () {\n      if (_scrollEvents2.default.registered['begin']) {\n        _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n      }\n      requestAnimationFrameHelper.call(window, easedAnimate);\n    }, options.delay);\n    return;\n  }\n\n  if (_scrollEvents2.default.registered['begin']) {\n    _scrollEvents2.default.registered['begin'](options.data.to, options.data.target);\n  }\n  requestAnimationFrameHelper.call(window, easedAnimate);\n};\n\nvar proceedOptions = function proceedOptions(options) {\n  options = _extends({}, options);\n  options.data = options.data || makeData();\n  options.absolute = true;\n  return options;\n};\n\nvar scrollToTop = function scrollToTop(options) {\n  animateTopScroll(0, proceedOptions(options));\n};\n\nvar scrollTo = function scrollTo(toPosition, options) {\n  animateTopScroll(toPosition, proceedOptions(options));\n};\n\nvar scrollToBottom = function scrollToBottom(options) {\n  options = proceedOptions(options);\n  setContainer(options);\n  animateTopScroll(options.horizontal ? scrollContainerWidth(options) : scrollContainerHeight(options), options);\n};\n\nvar scrollMore = function scrollMore(toPosition, options) {\n  options = proceedOptions(options);\n  setContainer(options);\n  var currentPosition = options.horizontal ? currentPositionX(options) : currentPositionY(options);\n  animateTopScroll(toPosition + currentPosition, options);\n};\n\nexports.default = {\n  animateTopScroll: animateTopScroll,\n  getAnimationType: getAnimationType,\n  scrollToTop: scrollToTop,\n  scrollToBottom: scrollToBottom,\n  scrollTo: scrollTo,\n  scrollMore: scrollMore\n};","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n  t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","import React, {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\"\nimport { UnitModel } from \"../../models/component\"\nimport { PropertyModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\nimport { getUnitDetails } from \"../../utils/property\"\n\ntype ContextModel = {\n  propertyItems: PropertyModel[]\n  loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n  propertyItems: [],\n  loaded: false,\n}\n\nconst initialState = {\n  propertyData: defaultContext,\n  setPropertyData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useProperty = () => useContext(Context)\n\nconst PROPERTY_API_URL = cleanApiURL(\n  process.env.GATSBY_API_DATA + \"/api/getProperties\"\n)\n\nconst UNIT_API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getUnits\")\n\nexport const PropertyProvider = ({\n  children,\n}: {\n  children: React.ReactNode\n}) => {\n  const [propertyData, setPropertyData] = useState(initialState.propertyData)\n  const ContextValue = useMemo(\n    () => ({ propertyData, setPropertyData }),\n    [propertyData]\n  )\n\n  const [properties, setProperties] = useState<PropertyModel[]>()\n  const [units, setUnits] = useState<UnitModel[]>()\n\n  const isPreview =\n    process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\"\n\n  useEffect(() => {\n    // get properties\n    fetch(PROPERTY_API_URL, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify({\n        preview: isPreview,\n      }),\n    })\n      .then(response => response.json())\n      .then(data => setProperties(data))\n      .catch(error => {\n        setProperties([])\n        console.log(\"Error: \", error)\n      })\n\n    // get units\n    fetch(UNIT_API_URL, {\n      method: \"POST\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify({\n        preview: isPreview,\n      }),\n    })\n      .then(response => response.json())\n      .then(data => setUnits(data.map((x: any) => getUnitDetails(x))))\n      .catch(error => {\n        setUnits([])\n        console.log(\"Error: \", error)\n      })\n  }, [])\n\n  // merge data\n  useEffect(() => {\n    if (properties && units) {\n      const result = properties.map(property => {\n        return {\n          ...property,\n          units: units.filter(unit => unit.propertyId === property.propertyId),\n        }\n      })\n\n      setPropertyData({\n        propertyItems: result,\n        loaded: true,\n      })\n    }\n  }, [properties, units])\n\n  return <Context.Provider value={ContextValue}>{children}</Context.Provider>\n}\n\nexport default PropertyProvider\n","/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\nimport { withPrefix } from \"gatsby\";\nimport getManifestForPathname from \"./get-manifest-pathname\";\n\n// when we don't have localisation in our manifest, we tree shake everything away\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    if (manifestEl) {\n      manifestEl.setAttribute(`href`, withPrefix(manifestFilename));\n    }\n  }\n};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-server-dom-webpack.production.min.js');\n} else {\n  module.exports = require('./cjs/react-server-dom-webpack.development.js');\n}\n","function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = {\n  /*\r\n   * https://github.com/oblador/angular-scroll (duScrollDefaultEasing)\r\n   */\n  defaultEasing: function defaultEasing(x) {\n    if (x < 0.5) {\n      return Math.pow(x * 2, 2) / 2;\n    }\n    return 1 - Math.pow((1 - x) * 2, 2) / 2;\n  },\n  /*\r\n   * https://gist.github.com/gre/1650294\r\n   */\n  // no easing, no acceleration\n  linear: function linear(x) {\n    return x;\n  },\n  // accelerating from zero velocity\n  easeInQuad: function easeInQuad(x) {\n    return x * x;\n  },\n  // decelerating to zero velocity\n  easeOutQuad: function easeOutQuad(x) {\n    return x * (2 - x);\n  },\n  // acceleration until halfway, then deceleration\n  easeInOutQuad: function easeInOutQuad(x) {\n    return x < .5 ? 2 * x * x : -1 + (4 - 2 * x) * x;\n  },\n  // accelerating from zero velocity \n  easeInCubic: function easeInCubic(x) {\n    return x * x * x;\n  },\n  // decelerating to zero velocity π\n  easeOutCubic: function easeOutCubic(x) {\n    return --x * x * x + 1;\n  },\n  // acceleration until halfway, then deceleration \n  easeInOutCubic: function easeInOutCubic(x) {\n    return x < .5 ? 4 * x * x * x : (x - 1) * (2 * x - 2) * (2 * x - 2) + 1;\n  },\n  // accelerating from zero velocity \n  easeInQuart: function easeInQuart(x) {\n    return x * x * x * x;\n  },\n  // decelerating to zero velocity \n  easeOutQuart: function easeOutQuart(x) {\n    return 1 - --x * x * x * x;\n  },\n  // acceleration until halfway, then deceleration\n  easeInOutQuart: function easeInOutQuart(x) {\n    return x < .5 ? 8 * x * x * x * x : 1 - 8 * --x * x * x * x;\n  },\n  // accelerating from zero velocity\n  easeInQuint: function easeInQuint(x) {\n    return x * x * x * x * x;\n  },\n  // decelerating to zero velocity\n  easeOutQuint: function easeOutQuint(x) {\n    return 1 + --x * x * x * x * x;\n  },\n  // acceleration until halfway, then deceleration \n  easeInOutQuint: function easeInOutQuint(x) {\n    return x < .5 ? 16 * x * x * x * x * x : 1 + 16 * --x * x * x * x * x;\n  }\n};","import React, {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\"\nimport { CaseStudyModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\n\ntype ContextModel = {\n  caseStudyItems: CaseStudyModel[]\n  loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n  caseStudyItems: [],\n  loaded: false,\n}\n\nconst initialState = {\n  caseStudyData: defaultContext,\n  setCaseStudyData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useCaseStudies = () => useContext(Context)\n\nconst API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getCaseStudies\")\n\nexport const CaseStudyProvider = ({\n  children,\n}: {\n  children: React.ReactNode\n}) => {\n  const [caseStudyData, setCaseStudyData] = useState(initialState.caseStudyData)\n  const ContextValue = useMemo(\n    () => ({ caseStudyData, setCaseStudyData }),\n    [caseStudyData]\n  )\n\n  useEffect(() => {\n    if (API_URL)\n      fetch(API_URL, {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify({\n          preview:\n            process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n        }),\n      })\n        .then(response => response.json())\n        .then(data => {\n          setCaseStudyData({\n            caseStudyItems: data,\n            loaded: true,\n          })\n        })\n        .catch(error => {\n          setCaseStudyData({\n            caseStudyItems: [],\n            loaded: true,\n          })\n          console.log(\"Error: \", error)\n        })\n  }, [])\n\n  return <Context.Provider value={ContextValue}>{children}</Context.Provider>\n}\n\nexport default CaseStudyProvider\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nexport { _assertThisInitialized as default };","import React from \"react\"\n\nimport {\n  Transition as ReactTransition,\n  TransitionGroup,\n} from \"react-transition-group\"\n\n// This variable will be responsible for our animation duration\nconst timeout = 400\n\n// This object contains basic styles for animation, but you can extend them to whatever you like. Be creative!\nconst getTransitionStyles: any = {\n  entering: {\n    position: \"absolute\",\n    opacity: 0,\n  },\n  entered: {\n    transition: `opacity ${timeout}ms ease-in-out`,\n    opacity: 1,\n  },\n  exiting: {\n    transition: `opacity ${timeout}ms ease-in-out`,\n    opacity: 0,\n  },\n}\n\ninterface Props {\n  children: React.ReactNode\n  location: Location\n}\n\nexport const Transition: React.FC<Props> = ({ children, location }) => {\n  return (\n    // Using TransitionGroup and ReactTransition which are both\n    // coming from  'react-transition-group' and are required for transitions to work\n    <TransitionGroup>\n      <ReactTransition\n        // The key is necessary here because our ReactTransition needs to know when pages are entering/exiting the DOM\n        key={location.pathname}\n        // Duration of transition\n        timeout={{\n          enter: timeout,\n          exit: timeout,\n        }}\n      >\n        {\n          // Application of the styles depending on the status of page(entering, exiting, entered) in the DOM\n          status => (\n            <>\n              <div\n                style={{\n                  ...getTransitionStyles[status],\n                }}\n              >\n                {children}\n              </div>\n            </>\n          )\n        }\n      </ReactTransition>\n    </TransitionGroup>\n  )\n}\n\nexport default Transition\n","import React, { useEffect } from \"react\"\nimport { useParallaxController } from \"react-scroll-parallax\"\n\ninterface Props {\n  location: Location\n}\n\nconst ParallaxRouteUpdate: React.FC<Props> = props => {\n  const parallaxController = useParallaxController()\n\n  useEffect(() => {\n    parallaxController?.update()\n  }, [props.location.pathname])\n\n  return null\n}\n\nexport default ParallaxRouteUpdate\n","import React from \"react\"\n\ninterface Props {}\n\nexport const SvgSprite: React.FC<Props> = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className=\"visuallyHidden\"\n    aria-hidden=\"true\"\n  >\n    <symbol id=\"icon-close\" viewBox=\"0 0 24 25\">\n      <path\n        d=\"M17 7.5L7 17.5M7 7.5L17 17.5\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretUp\" viewBox=\"0 0 31 31\">\n      <path\n        d=\"M18 15L12 9L6 15\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretLeft\" viewBox=\"0 0 31 31\">\n      <path\n        d=\"M19.375 7.75L11.625 15.5L19.375 23.25\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretRight\" viewBox=\"0 0 31 31\">\n      <path\n        d=\"M11.625 23.25L19.375 15.5L11.625 7.75\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretDown\" viewBox=\"0 0 31 31\">\n      <path\n        d=\"M8 12.5L16 20.5L24 12.5\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-phone\" viewBox=\"0 0 16 16\">\n      <path\n        d=\"M5.58685 5.90223C6.05085 6.86865 6.68337 7.77441 7.48443 8.57546C8.28548 9.37651 9.19124 10.009 10.1577 10.473C10.2408 10.5129 10.2823 10.5329 10.3349 10.5482C10.5218 10.6027 10.7513 10.5636 10.9096 10.4502C10.9542 10.4183 10.9923 10.3802 11.0685 10.304C11.3016 10.071 11.4181 9.95443 11.5353 9.87824C11.9772 9.59091 12.5469 9.59091 12.9889 9.87824C13.106 9.95443 13.2226 10.071 13.4556 10.304L13.5856 10.4339C13.9398 10.7882 14.117 10.9654 14.2132 11.1556C14.4046 11.534 14.4046 11.9809 14.2132 12.3592C14.117 12.5495 13.9399 12.7266 13.5856 13.0809L13.4805 13.186C13.1274 13.5391 12.9508 13.7156 12.7108 13.8505C12.4445 14.0001 12.0308 14.1077 11.7253 14.1068C11.45 14.1059 11.2619 14.0525 10.8856 13.9457C8.86333 13.3718 6.95509 12.2888 5.36311 10.6968C3.77112 9.10479 2.68814 7.19655 2.11416 5.17429C2.00735 4.79799 1.95395 4.60984 1.95313 4.33455C1.95222 4.02906 2.0598 3.6154 2.20941 3.34907C2.34424 3.10904 2.52078 2.9325 2.87386 2.57942L2.97895 2.47433C3.33325 2.12004 3.5104 1.94289 3.70065 1.84666C4.07903 1.65528 4.52587 1.65528 4.90424 1.84666C5.0945 1.94289 5.27164 2.12004 5.62594 2.47433L5.75585 2.60424C5.98892 2.83732 6.10546 2.95385 6.18165 3.07104C6.46898 3.51296 6.46898 4.08268 6.18165 4.52461C6.10546 4.6418 5.98892 4.75833 5.75585 4.9914C5.67964 5.06761 5.64154 5.10571 5.60965 5.15026C5.4963 5.30854 5.45717 5.53805 5.51165 5.72495C5.52698 5.77754 5.54694 5.81911 5.58685 5.90223Z\"\n        stroke={\"inherit\"}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-mobile\" viewBox=\"0 0 16 16\">\n      <path\n        d=\"M9.99992 1.33398V2.26732C9.99992 2.64069 9.99992 2.82737 9.92726 2.96998C9.86334 3.09542 9.76135 3.19741 9.63591 3.26132C9.49331 3.33398 9.30662 3.33398 8.93325 3.33398H7.06659C6.69322 3.33398 6.50653 3.33398 6.36393 3.26132C6.23848 3.19741 6.1365 3.09542 6.07258 2.96998C5.99992 2.82737 5.99992 2.64069 5.99992 2.26732V1.33398M5.46659 14.6673H10.5333C11.28 14.6673 11.6534 14.6673 11.9386 14.522C12.1895 14.3942 12.3934 14.1902 12.5213 13.9393C12.6666 13.6541 12.6666 13.2807 12.6666 12.534V3.46732C12.6666 2.72058 12.6666 2.34721 12.5213 2.062C12.3934 1.81111 12.1895 1.60714 11.9386 1.47931C11.6534 1.33398 11.28 1.33398 10.5333 1.33398H5.46659C4.71985 1.33398 4.34648 1.33398 4.06126 1.47931C3.81038 1.60714 3.60641 1.81111 3.47858 2.062C3.33325 2.34721 3.33325 2.72058 3.33325 3.46732V12.534C3.33325 13.2807 3.33325 13.6541 3.47858 13.9393C3.60641 14.1902 3.81038 14.3942 4.06126 14.522C4.34648 14.6673 4.71985 14.6673 5.46659 14.6673Z\"\n        stroke={\"inherit\"}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-email\" viewBox=\"0 0 16 16\">\n      <path\n        d=\"M1.33325 4.66602L6.77653 8.47631C7.21731 8.78486 7.4377 8.93913 7.67743 8.99889C7.88918 9.05167 8.11066 9.05167 8.32241 8.99889C8.56213 8.93913 8.78252 8.78486 9.2233 8.47631L14.6666 4.66602M4.53325 13.3327H11.4666C12.5867 13.3327 13.1467 13.3327 13.5746 13.1147C13.9509 12.9229 14.2569 12.617 14.4486 12.2407C14.6666 11.8128 14.6666 11.2528 14.6666 10.1327V5.86602C14.6666 4.74591 14.6666 4.18586 14.4486 3.75803C14.2569 3.38171 13.9509 3.07575 13.5746 2.884C13.1467 2.66602 12.5867 2.66602 11.4666 2.66602H4.53325C3.41315 2.66602 2.85309 2.66602 2.42527 2.884C2.04895 3.07575 1.74299 3.38171 1.55124 3.75803C1.33325 4.18586 1.33325 4.74591 1.33325 5.86602V10.1327C1.33325 11.2528 1.33325 11.8128 1.55124 12.2407C1.74299 12.617 2.04895 12.9229 2.42527 13.1147C2.85309 13.3327 3.41315 13.3327 4.53325 13.3327Z\"\n        stroke={\"inherit\"}\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-floorPlanThin\" viewBox=\"0 0 24 24\">\n      <path\n        d=\"M16 1H23V13M13 5L8 1H1V23H10M10 23H23V13M10 23V13M10 13H13M10 13H7M23 13H19\"\n        stroke={\"inherit\"}\n        strokeLinecap=\"round\"\n      />\n    </symbol>\n\n    {/* <symbol\n      id=\"icon-floorPlan\"\n      viewBox=\"0 0 24 25\"\n      stroke={\"inherit\"}\n      strokeWidth={2}\n      strokeLinecap=\"round\"\n    >\n      <path d=\"M16 1.5H23V13.5M13 5.5L8 1.5H1V23.5H10M10 23.5H23V13.5M10 23.5V13.5M10 13.5H13M10 13.5H7M23 13.5H19\" />\n    </symbol> */}\n\n    <symbol id=\"icon-nabers\" viewBox=\"0 0 24 24\">\n      <path\n        d=\"M14.8789 9.43506L1.44388 22.8701M22.6571 1.65688C23.0106 5.07457 22.9399 12.6877 17.0002 18.6274C11.0605 24.5671 6.04007 22.0451 4.2723 20.0417C2.26884 18.2739 -0.253178 13.2534 5.68652 7.31374C11.6262 1.37404 19.2394 1.30333 22.6571 1.65688Z\"\n        stroke={\"inherit\"}\n        strokeLinecap=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-addShortlist\" viewBox=\"0 0 32 33\">\n      <path\n        d=\"M15.9998 17.5833V9.58333M11.9998 13.5833H19.9998M25.3332 28.25V10.65C25.3332 8.40979 25.3332 7.28969 24.8972 6.43404C24.5137 5.68139 23.9018 5.06947 23.1491 4.68597C22.2935 4.25 21.1734 4.25 18.9332 4.25H13.0665C10.8263 4.25 9.70619 4.25 8.85054 4.68597C8.09789 5.06947 7.48597 5.68139 7.10248 6.43404C6.6665 7.28969 6.6665 8.40979 6.6665 10.65V28.25L15.9998 22.9167L25.3332 28.25Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-removeShortlist\" viewBox=\"0 0 32 32\">\n      <path\n        d=\"M12.0001 13.3333H20.0001M25.3334 28V10.4C25.3334 8.15979 25.3334 7.03969 24.8974 6.18404C24.5139 5.43139 23.902 4.81947 23.1494 4.43597C22.2937 4 21.1736 4 18.9334 4H13.0667C10.8265 4 9.70643 4 8.85079 4.43597C8.09814 4.81947 7.48622 5.43139 7.10272 6.18404C6.66675 7.03969 6.66675 8.15979 6.66675 10.4V28L16.0001 22.6667L25.3334 28Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-map\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M5.5 14.7864C3.64864 15.6031 2.5 16.7412 2.5 18C2.5 20.4853 6.97715 22.5 12.5 22.5C18.0228 22.5 22.5 20.4853 22.5 18C22.5 16.7412 21.3514 15.6031 19.5 14.7864M18.5 8.5C18.5 12.5637 14 14.5 12.5 17.5C11 14.5 6.5 12.5637 6.5 8.5C6.5 5.18629 9.18629 2.5 12.5 2.5C15.8137 2.5 18.5 5.18629 18.5 8.5ZM13.5 8.5C13.5 9.05228 13.0523 9.5 12.5 9.5C11.9477 9.5 11.5 9.05228 11.5 8.5C11.5 7.94772 11.9477 7.5 12.5 7.5C13.0523 7.5 13.5 7.94772 13.5 8.5Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-list\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M21.5 12.5L9.5 12.5M21.5 6.5L9.5 6.5M21.5 18.5L9.5 18.5M5.5 12.5C5.5 13.0523 5.05228 13.5 4.5 13.5C3.94772 13.5 3.5 13.0523 3.5 12.5C3.5 11.9477 3.94772 11.5 4.5 11.5C5.05228 11.5 5.5 11.9477 5.5 12.5ZM5.5 6.5C5.5 7.05228 5.05228 7.5 4.5 7.5C3.94772 7.5 3.5 7.05228 3.5 6.5C3.5 5.94772 3.94772 5.5 4.5 5.5C5.05228 5.5 5.5 5.94772 5.5 6.5ZM5.5 18.5C5.5 19.0523 5.05228 19.5 4.5 19.5C3.94772 19.5 3.5 19.0523 3.5 18.5C3.5 17.9477 3.94772 17.5 4.5 17.5C5.05228 17.5 5.5 17.9477 5.5 18.5Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-search\" viewBox=\"0 0 24 24\">\n      <path\n        d=\"M21 21.5L16.65 17.15M19 11.5C19 15.9183 15.4183 19.5 11 19.5C6.58172 19.5 3 15.9183 3 11.5C3 7.08172 6.58172 3.5 11 3.5C15.4183 3.5 19 7.08172 19 11.5Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    {/* <symbol\n      id=\"icon-document\"\n      viewBox=\"0 0 24 25\"\n      fill={\"inherit\"}\n      stroke={\"none\"}\n    >\n      <path d=\"M14.17 5.5L19 10.33V19.5H5V5.5H14.17ZM14.17 3.5H5C3.9 3.5 3 4.4 3 5.5V19.5C3 20.6 3.9 21.5 5 21.5H19C20.1 21.5 21 20.6 21 19.5V10.33C21 9.8 20.79 9.29 20.41 8.92L15.58 4.09C15.21 3.71 14.7 3.5 14.17 3.5ZM7 15.5H17V17.5H7V15.5ZM7 11.5H17V13.5H7V11.5ZM7 7.5H14V9.5H7V7.5Z\" />\n    </symbol> */}\n\n    <symbol id=\"icon-play\" viewBox=\"0 0 24 25\">\n      <path\n        d=\"M12 22.5C17.5228 22.5 22 18.0228 22 12.5C22 6.97715 17.5228 2.5 12 2.5C6.47715 2.5 2 6.97715 2 12.5C2 18.0228 6.47715 22.5 12 22.5Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M9.5 9.46533C9.5 8.98805 9.5 8.74941 9.59974 8.61618C9.68666 8.50007 9.81971 8.42744 9.96438 8.4171C10.1304 8.40525 10.3311 8.53429 10.7326 8.79239L15.4532 11.8271C15.8016 12.051 15.9758 12.163 16.0359 12.3054C16.0885 12.4298 16.0885 12.5702 16.0359 12.6946C15.9758 12.837 15.8016 12.949 15.4532 13.1729L10.7326 16.2076C10.3311 16.4657 10.1304 16.5948 9.96438 16.5829C9.81971 16.5726 9.68666 16.4999 9.59974 16.3838C9.5 16.2506 9.5 16.012 9.5 15.5347V9.46533Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-image\" viewBox=\"0 0 24 25\">\n      <path\n        d=\"M4.27209 21.2279L10.8686 14.6314C11.2646 14.2354 11.4627 14.0373 11.691 13.9632C11.8918 13.8979 12.1082 13.8979 12.309 13.9632C12.5373 14.0373 12.7354 14.2354 13.1314 14.6314L19.6839 21.1839M14 15.5L16.8686 12.6314C17.2646 12.2354 17.4627 12.0373 17.691 11.9632C17.8918 11.8979 18.1082 11.8979 18.309 11.9632C18.5373 12.0373 18.7354 12.2354 19.1314 12.6314L22 15.5M10 9.5C10 10.6046 9.10457 11.5 8 11.5C6.89543 11.5 6 10.6046 6 9.5C6 8.39543 6.89543 7.5 8 7.5C9.10457 7.5 10 8.39543 10 9.5ZM6.8 21.5H17.2C18.8802 21.5 19.7202 21.5 20.362 21.173C20.9265 20.8854 21.3854 20.4265 21.673 19.862C22 19.2202 22 18.3802 22 16.7V8.3C22 6.61984 22 5.77976 21.673 5.13803C21.3854 4.57354 20.9265 4.1146 20.362 3.82698C19.7202 3.5 18.8802 3.5 17.2 3.5H6.8C5.11984 3.5 4.27976 3.5 3.63803 3.82698C3.07354 4.1146 2.6146 4.57354 2.32698 5.13803C2 5.77976 2 6.61984 2 8.3V16.7C2 18.3802 2 19.2202 2.32698 19.862C2.6146 20.4265 3.07354 20.8854 3.63803 21.173C4.27976 21.5 5.11984 21.5 6.8 21.5Z\"\n        stroke={\"inherit\"}\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n  </svg>\n)\n\nexport default SvgSprite\n","import React from \"react\"\n\ninterface Props {}\n\nexport const SvgSpriteButtons: React.FC<Props> = () => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    className=\"visuallyHidden\"\n    aria-hidden=\"true\"\n  >\n    <symbol id=\"icon-caretDownBtn\" viewBox=\"0 0 32 33\">\n      <path\n        d=\"M8 12.5L16 20.5L24 12.5\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretLeftBtn\" viewBox=\"0 0 31 32\">\n      <g transform=\"rotate(180) translate(-31, -32)\">\n        <path\n          d=\"M11.6245 23.75L19.3745 16L11.6245 8.25\"\n          strokeWidth=\"2\"\n          strokeLinecap=\"square\"\n        />\n      </g>\n    </symbol>\n\n    <symbol id=\"icon-caretRightBtn\" viewBox=\"0 0 31 32\">\n      <path\n        d=\"M11.6245 23.75L19.3745 16L11.6245 8.25\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"square\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-caretUpBtn\" viewBox=\"0 0 32 33\">\n      <g transform=\"rotate(180) translate(-32, -33)\">\n        <path\n          d=\"M8 12.5L16 20.5L24 12.5\"\n          strokeWidth=\"2\"\n          strokeLinecap=\"square\"\n        />\n      </g>\n    </symbol>\n\n    <symbol id=\"icon-documentBtn\" viewBox=\"0 0 25 25\">\n      <path d=\"M14.3702 5.78711L19.2002 10.6171V19.7871H5.2002V5.78711H14.3702ZM14.3702 3.78711H5.2002C4.1002 3.78711 3.2002 4.68711 3.2002 5.78711V19.7871C3.2002 20.8871 4.1002 21.7871 5.2002 21.7871H19.2002C20.3002 21.7871 21.2002 20.8871 21.2002 19.7871V10.6171C21.2002 10.0871 20.9902 9.57711 20.6102 9.20711L15.7802 4.37711C15.4102 3.99711 14.9002 3.78711 14.3702 3.78711ZM7.2002 15.7871H17.2002V17.7871H7.2002V15.7871ZM7.2002 11.7871H17.2002V13.7871H7.2002V11.7871ZM7.2002 7.78711H14.2002V9.78711H7.2002V7.78711Z\" />\n    </symbol>\n\n    <symbol id=\"icon-downloadBtn\" viewBox=\"0 0 30 30\">\n      <path\n        d=\"M25.5752 18.4121V19.8621C25.5752 21.8923 25.5752 22.9074 25.1801 23.6828C24.8326 24.3649 24.278 24.9195 23.5959 25.267C22.8205 25.6621 21.8054 25.6621 19.7752 25.6621H9.62519C7.595 25.6621 6.57991 25.6621 5.80448 25.267C5.12239 24.9195 4.56784 24.3649 4.2203 23.6828C3.8252 22.9074 3.8252 21.8923 3.8252 19.8621V18.4121M20.7419 12.3704L14.7002 18.4121M14.7002 18.4121L8.65853 12.3704M14.7002 18.4121V3.91211\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-exportBtn\" viewBox=\"0 0 24 25\">\n      <path\n        d=\"M3 21.5H21M12 3.5V17.5M12 17.5L19 10.5M12 17.5L5 10.5\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-floorPlanBtn\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M16.2002 1.78711H23.2002V13.7871M13.2002 5.78711L8.2002 1.78711H1.2002V23.7871H10.2002M10.2002 23.7871H23.2002V13.7871M10.2002 23.7871V13.7871M10.2002 13.7871H13.2002M10.2002 13.7871H7.2002M23.2002 13.7871H19.2002\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-imageBtn\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M4.47229 21.515L11.0688 14.9185C11.4648 14.5225 11.6628 14.3245 11.8912 14.2503C12.092 14.185 12.3084 14.185 12.5092 14.2503C12.7375 14.3245 12.9356 14.5225 13.3316 14.9185L19.8841 21.471M14.2002 15.7871L17.0688 12.9185C17.4648 12.5225 17.6628 12.3245 17.8912 12.2503C18.092 12.185 18.3084 12.185 18.5092 12.2503C18.7375 12.3245 18.9355 12.5225 19.3316 12.9185L22.2002 15.7871M10.2002 9.78711C10.2002 10.8917 9.30476 11.7871 8.2002 11.7871C7.09563 11.7871 6.2002 10.8917 6.2002 9.78711C6.2002 8.68254 7.09563 7.78711 8.2002 7.78711C9.30476 7.78711 10.2002 8.68254 10.2002 9.78711ZM7.0002 21.7871H17.4002C19.0804 21.7871 19.9204 21.7871 20.5622 21.4601C21.1267 21.1725 21.5856 20.7136 21.8732 20.1491C22.2002 19.5073 22.2002 18.6673 22.2002 16.9871V8.58711C22.2002 6.90695 22.2002 6.06687 21.8732 5.42514C21.5856 4.86065 21.1267 4.40171 20.5622 4.11409C19.9204 3.78711 19.0804 3.78711 17.4002 3.78711H7.0002C5.32004 3.78711 4.47996 3.78711 3.83822 4.11409C3.27374 4.40171 2.8148 4.86065 2.52718 5.42514C2.2002 6.06687 2.2002 6.90695 2.2002 8.58711V16.9871C2.2002 18.6673 2.2002 19.5073 2.52718 20.1491C2.8148 20.7136 3.27374 21.1725 3.83822 21.4601C4.47996 21.7871 5.32004 21.7871 7.0002 21.7871Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-mapBtn\" viewBox=\"0 0 29 29\">\n      <path\n        d=\"M6.04102 17.2628C3.80395 18.2496 2.41602 19.6248 2.41602 21.1459C2.41602 24.149 7.82591 26.5834 14.4993 26.5834C21.1728 26.5834 26.5827 24.149 26.5827 21.1459C26.5827 19.6248 25.1947 18.2496 22.9577 17.2628M21.7493 9.66675C21.7493 14.5771 16.3118 16.9167 14.4993 20.5418C12.6868 16.9167 7.24935 14.5771 7.24935 9.66675C7.24935 5.66268 10.4953 2.41675 14.4993 2.41675C18.5034 2.41675 21.7493 5.66268 21.7493 9.66675ZM15.7077 9.66675C15.7077 10.3341 15.1667 10.8751 14.4993 10.8751C13.832 10.8751 13.291 10.3341 13.291 9.66675C13.291 8.9994 13.832 8.45842 14.4993 8.45842C15.1667 8.45842 15.7077 8.9994 15.7077 9.66675Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-playBtn\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M12.2002 22.7871C17.723 22.7871 22.2002 18.31 22.2002 12.7871C22.2002 7.26426 17.723 2.78711 12.2002 2.78711C6.67735 2.78711 2.2002 7.26426 2.2002 12.7871C2.2002 18.31 6.67735 22.7871 12.2002 22.7871Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n      <path\n        d=\"M9.7002 9.75244C9.7002 9.27516 9.7002 9.03651 9.79994 8.90329C9.88686 8.78718 10.0199 8.71455 10.1646 8.70421C10.3306 8.69236 10.5313 8.8214 10.9328 9.0795L15.6534 12.1142C16.0018 12.3381 16.176 12.4501 16.2361 12.5925C16.2887 12.7169 16.2887 12.8573 16.2361 12.9817C16.176 13.1241 16.0018 13.2361 15.6534 13.4601L10.9328 16.4947C10.5313 16.7528 10.3306 16.8819 10.1646 16.87C10.0199 16.8597 9.88686 16.787 9.79994 16.6709C9.7002 16.5377 9.7002 16.2991 9.7002 15.8218V9.75244Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-shareBtn\" viewBox=\"0 0 25 25\">\n      <path\n        d=\"M9.09 14.01L15.92 17.99M15.91 7.01L9.09 10.99M21.5 5.5C21.5 7.15685 20.1569 8.5 18.5 8.5C16.8431 8.5 15.5 7.15685 15.5 5.5C15.5 3.84315 16.8431 2.5 18.5 2.5C20.1569 2.5 21.5 3.84315 21.5 5.5ZM9.5 12.5C9.5 14.1569 8.15685 15.5 6.5 15.5C4.84315 15.5 3.5 14.1569 3.5 12.5C3.5 10.8431 4.84315 9.5 6.5 9.5C8.15685 9.5 9.5 10.8431 9.5 12.5ZM21.5 19.5C21.5 21.1569 20.1569 22.5 18.5 22.5C16.8431 22.5 15.5 21.1569 15.5 19.5C15.5 17.8431 16.8431 16.5 18.5 16.5C20.1569 16.5 21.5 17.8431 21.5 19.5Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n\n    <symbol id=\"icon-buildingBtn\" viewBox=\"0 0 29 29\">\n      <path\n        d=\"M6.04167 10.8751V20.5417M11.4792 10.8751V20.5417M17.5208 10.8751V20.5417M22.9583 10.8751V20.5417M3.625 22.4751L3.625 23.4417C3.625 24.1185 3.625 24.4568 3.7567 24.7153C3.87255 24.9427 4.0574 25.1275 4.28476 25.2434C4.54324 25.3751 4.8816 25.3751 5.55833 25.3751H23.4417C24.1184 25.3751 24.4568 25.3751 24.7152 25.2434C24.9426 25.1275 25.1275 24.9427 25.2433 24.7153C25.375 24.4568 25.375 24.1185 25.375 23.4417V22.4751C25.375 21.7983 25.375 21.46 25.2433 21.2015C25.1275 20.9741 24.9426 20.7893 24.7152 20.6734C24.4568 20.5417 24.1184 20.5417 23.4417 20.5417H5.55833C4.8816 20.5417 4.54324 20.5417 4.28476 20.6734C4.0574 20.7893 3.87255 20.9741 3.7567 21.2015C3.625 21.46 3.625 21.7983 3.625 22.4751ZM14.0806 3.71826L5.13893 5.7053C4.59874 5.82535 4.32864 5.88537 4.12702 6.03062C3.94918 6.15874 3.80955 6.33281 3.72306 6.53421C3.625 6.76253 3.625 7.03922 3.625 7.5926L3.625 8.94173C3.625 9.61846 3.625 9.95683 3.7567 10.2153C3.87255 10.4427 4.0574 10.6275 4.28476 10.7434C4.54324 10.8751 4.8816 10.8751 5.55833 10.8751H23.4417C24.1184 10.8751 24.4568 10.8751 24.7152 10.7434C24.9426 10.6275 25.1275 10.4427 25.2433 10.2153C25.375 9.95683 25.375 9.61846 25.375 8.94173V7.5926C25.375 7.03922 25.375 6.76253 25.2769 6.53421C25.1905 6.33281 25.0508 6.15874 24.873 6.03062C24.6714 5.88537 24.4013 5.82535 23.8611 5.7053L14.9194 3.71826C14.7629 3.68348 14.6846 3.66609 14.6056 3.65916C14.5353 3.653 14.4647 3.653 14.3944 3.65916C14.3154 3.66609 14.2371 3.68348 14.0806 3.71826Z\"\n        strokeWidth=\"2\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </symbol>\n  </svg>\n)\n\nexport default SvgSpriteButtons\n","import { Slice } from \"gatsby\"\nimport React from \"react\"\nimport Transition from \"../components/Layout/Transition\"\nimport ParallaxRouteUpdate from \"../components/ParallaxRouteUpdate\"\nimport SvgSprite from \"../components/SvgSprite\"\nimport SvgSpriteButtons from \"../components/SvgSpriteButtons\"\n\ninterface Props {\n  children: React.ReactNode\n  location: Location\n  pageContext?: any\n}\n\nconst Layout = ({ children, location, pageContext }: Props) => {\n  // PDF generation pages - no header or footer\n  if (pageContext.isPDF)\n    return (\n      <>\n        {children}\n        <SvgSprite />\n        <SvgSpriteButtons />\n      </>\n    )\n\n  return (\n    <>\n      <Slice alias=\"header\" locationKey={(location as any)?.key} />\n      <Transition location={location}>{children}</Transition>\n      <Slice alias=\"footer\" />\n      <SvgSprite />\n      <SvgSpriteButtons />\n      <ParallaxRouteUpdate location={location} />\n    </>\n  )\n}\n\nexport default Layout\n","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","/**\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","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\"\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, {\n  createContext,\n  useContext,\n  useEffect,\n  useMemo,\n  useState,\n} from \"react\"\nimport { ArticleModel } from \"../../models/page\"\nimport { cleanApiURL } from \"../../utils/links\"\n\ntype ContextModel = {\n  articleItems: ArticleModel[]\n  loaded?: boolean\n}\n\nconst defaultContext: ContextModel = {\n  articleItems: [],\n  loaded: false,\n}\n\nconst initialState = {\n  articleData: defaultContext,\n  setArticleData: (data: ContextModel) => console.log(data),\n}\nconst Context = createContext(initialState)\nexport const useArticles = () => useContext(Context)\n\nconst API_URL = cleanApiURL(process.env.GATSBY_API_DATA + \"/api/getArticles\")\n\nexport const ArticleProvider = ({\n  children,\n}: {\n  children: React.ReactNode\n}) => {\n  const [articleData, setArticleData] = useState(initialState.articleData)\n  const ContextValue = useMemo(\n    () => ({ articleData, setArticleData }),\n    [articleData]\n  )\n\n  useEffect(() => {\n    if (API_URL)\n      fetch(API_URL, {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\n        body: JSON.stringify({\n          preview:\n            process.env.GATSBY_CONTENTFUL_HOST === \"preview.contentful.com\",\n        }),\n      })\n        .then(response => response.json())\n        .then(data => {\n          setArticleData({\n            articleItems: data,\n            loaded: true,\n          })\n        })\n        .catch(error => {\n          setArticleData({\n            articleItems: [],\n            loaded: true,\n          })\n          console.log(\"Error: \", error)\n        })\n  }, [])\n\n  return <Context.Provider value={ContextValue}>{children}</Context.Provider>\n}\n\nexport default ArticleProvider\n","\"use strict\";\n\nexports.__esModule = true;\nexports.injectPartytownSnippet = injectPartytownSnippet;\nvar _integration = require(\"@builder.io/partytown/integration\");\nvar _getForwards = require(\"./get-forwards\");\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}\n//# sourceMappingURL=inject-partytown-snippet.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _scrollLink = require('../mixins/scroll-link');\n\nvar _scrollLink2 = _interopRequireDefault(_scrollLink);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nvar LinkElement = function (_React$Component) {\n  _inherits(LinkElement, _React$Component);\n\n  function LinkElement() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, LinkElement);\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, (_ref = LinkElement.__proto__ || Object.getPrototypeOf(LinkElement)).call.apply(_ref, [this].concat(args))), _this), _this.render = function () {\n      return _react2.default.createElement(\n        'a',\n        _this.props,\n        _this.props.children\n      );\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  return LinkElement;\n}(_react2.default.Component);\n\n;\n\nexports.default = (0, _scrollLink2.default)(LinkElement);","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","module.exports = [{\n      plugin: require('../node_modules/gatsby-plugin-google-tagmanager/gatsby-browser.js'),\n      options: {\"plugins\":[],\"id\":\"FAKE\",\"includeInDevelopment\":false,\"defaultDataLayer\":null,\"routeChangeEventName\":\"gatsby-route-change\",\"enableWebVitalsTracking\":false,\"selfHostedOrigin\":\"https://www.googletagmanager.com\",\"selfHostedPath\":\"gtm.js\"},\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\",\"display\":\"minimal-ui\",\"icon\":\"src/images/favicon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"9b0a66ba2fda0d107d7c1c33351995d7\"},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-layout/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-gatsby-cloud/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/gatsby-plugin-catch-links/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/@tmttn/gatsby-plugin-hubspot-tracking/gatsby-browser.js'),\n      options: {\"plugins\":[],\"trackingCode\":\"FAKE\",\"respectDNT\":false,\"productionOnly\":true},\n    },{\n      plugin: require('../gatsby-browser.tsx'),\n      options: {\"plugins\":[]},\n    },{\n      plugin: require('../node_modules/gatsby/dist/internal-plugins/partytown/gatsby-browser.js'),\n      options: {\"plugins\":[]},\n    }]\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _scroller = require('./scroller');\n\nvar _scroller2 = _interopRequireDefault(_scroller);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\nexports.default = function (Component) {\n  var Element = function (_React$Component) {\n    _inherits(Element, _React$Component);\n\n    function Element(props) {\n      _classCallCheck(this, Element);\n\n      var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this, props));\n\n      _this.childBindings = {\n        domNode: null\n      };\n      return _this;\n    }\n\n    _createClass(Element, [{\n      key: 'componentDidMount',\n      value: function componentDidMount() {\n        if (typeof window === 'undefined') {\n          return false;\n        }\n        this.registerElems(this.props.name);\n      }\n    }, {\n      key: 'componentDidUpdate',\n      value: function componentDidUpdate(prevProps) {\n        if (this.props.name !== prevProps.name) {\n          this.registerElems(this.props.name);\n        }\n      }\n    }, {\n      key: 'componentWillUnmount',\n      value: function componentWillUnmount() {\n        if (typeof window === 'undefined') {\n          return false;\n        }\n        _scroller2.default.unregister(this.props.name);\n      }\n    }, {\n      key: 'registerElems',\n      value: function registerElems(name) {\n        _scroller2.default.register(name, this.childBindings.domNode);\n      }\n    }, {\n      key: 'render',\n      value: function render() {\n        return _react2.default.createElement(Component, _extends({}, this.props, { parentBindings: this.childBindings }));\n      }\n    }]);\n\n    return Element;\n  }(_react2.default.Component);\n\n  ;\n\n  Element.propTypes = {\n    name: _propTypes2.default.string,\n    id: _propTypes2.default.string\n  };\n\n  return Element;\n};","/******************************************************\n\n    Utilities - Links\n\n******************************************************/\nimport { BreadCrumbModel, CmsAsset } from \"../models/common\"\nimport { PageModels } from \"../models/page\"\n\n/******************************************************\n\tbuild page breadcrumbs from parent pages\n******************************************************/\nexport const buildBreadcrumbs = (\n  page: PageModels | undefined\n): BreadCrumbModel[] => {\n  if (!page) return []\n  if (page?.parentPage)\n    return [\n      ...buildBreadcrumbs(page.parentPage),\n      {\n        id: page.id,\n        url: page.slug,\n        label: page.listingTitle || page.heading,\n        rootUrl: page.rootUrl,\n      },\n    ]\n  return [\n    {\n      id: page.id,\n      url: page.slug,\n      label: page.listingTitle || page.heading,\n      rootUrl: page.rootUrl,\n    },\n  ]\n}\n\n/******************************************************\n\tbuild page path from parent pages\n******************************************************/\nconst buildPagePath = (page: PageModels): string | undefined => {\n  if (page?.parentPage) return buildPagePath(page.parentPage) + \"/\" + page.slug\n  return page.slug\n}\n\n/******************************************************\n\tget content type link prefix\n******************************************************/\nconst getPageSlugWithPrefix = (page: PageModels) => {\n  if (!page || !page.slug) return undefined\n\n  let url\n  switch (page?.internal?.type) {\n    case \"ContentfulPageContent\":\n      url = `/${buildPagePath(page)}`\n      break\n    case \"ContentfulPageArticle\":\n      url = `/news/${page.slug}`\n      break\n    case \"ContentfulPageCaseStudy\":\n      url = `/case-studies/${page.slug}`\n      break\n    case \"ContentfulPageProperty\":\n      url = `/properties/${page.slug}`\n      break\n    default:\n      url = `/${page.slug}`\n  }\n\n  return url\n}\n\n/******************************************************\n\tmake the URL pretty\n\t- add trailing slash (to URL or before query string)\n\t- remove double slashes (but not protocol eg http://)\n\t- replace spaces with hyphens\n\t- remove double hyphens\n\t- make lowercase\n\t- add query string\n******************************************************/\nexport const getPrettyURL = (\n  data: string | PageModels | undefined\n): string | undefined => {\n  if (!data) return undefined\n\n  if (typeof data === \"string\") {\n    // break out any query strings parameters\n    let urlParts = data.split(\"?\")\n    const baseURL = urlParts.shift()?.trim()\n\n    const prettyUrl = (baseURL + \"/\")\n      .replace(/(https?:\\/\\/)|(\\/){2,}/g, \"$1$2\")\n      .replace(/\\ /g, \"-\")\n      .replace(/\\-+/g, \"-\")\n      .toLowerCase()\n\n    if (urlParts.length) return [prettyUrl, urlParts].join(\"?\")\n    return prettyUrl\n  }\n\n  return getPrettyURL(getPageSlugWithPrefix(data))\n}\n\n/******************************************************\n\tget link data (URL / Entry / Asset)\n******************************************************/\ninterface linkData {\n  url?: string | undefined\n  page?: PageModels | undefined\n  asset?: CmsAsset | undefined\n  newWindow?: boolean\n  noIndex?: boolean\n  noFollow?: boolean\n  queryString?: string\n}\n\nexport const getLinkData = ({\n  url,\n  page,\n  asset,\n  newWindow,\n  noIndex,\n  noFollow,\n  queryString,\n}: linkData) => {\n  // asset\n  if (asset) return { url: asset.file?.url, newWindow: true }\n\n  // CMS page\n  if (page) {\n    const query =\n      queryString?.charAt(0) === \"?\" ? queryString.substring(1) : queryString\n\n    return {\n      url: `${getPrettyURL(page)}${queryString ? `?${query}` : \"\"}`,\n      newWindow: newWindow,\n      noIndex: noIndex || false,\n      noFollow: noFollow || false,\n    }\n  }\n\n  // URL\n  if (url) {\n    const isExternal = !/^\\/(?!\\/)/.test(url)\n    return {\n      url: url,\n      newWindow: newWindow || isExternal,\n      noIndex: noIndex || isExternal,\n      noFollow: noFollow || isExternal,\n    }\n  }\n\n  return undefined\n}\n\n/******************************************************\n\tget YouTube video ID\n******************************************************/\n// export const getYtVideoId = (url?: string): string | undefined => {\n//   if (!url) return undefined\n//   else {\n//     const urlParams = new URLSearchParams(url.split(\"?\").pop())\n//     const videoId = urlParams.get(\"v\") || url.split(\"/\").pop()\n//     return videoId\n//   }\n// }\n\n/******************************************************\n\tmake a clean API URL\n\t- remove double slashes (but not protocol eg http://)\n******************************************************/\nexport const cleanApiURL = (data: string): string => {\n  if (!data) return \"\"\n  return data.replace(/(https?:\\/\\/)|(\\/){2,}/g, \"$1$2\")\n}\n","const map = new WeakMap()\n\nexport function reactDOMUtils() {\n  const reactDomClient = require(`react-dom/client`)\n\n  const 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  const hydrate = (Component, el) => reactDomClient.hydrateRoot(el, Component)\n\n  return { render, hydrate }\n}\n","/**\n * https://github.com/gre/bezier-easing\n * BezierEasing - use bezier curve for transition easing function\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n */\n\n// These values are established by empiricism with tests (tradeoff: performance VS precision)\nvar NEWTON_ITERATIONS = 4;\nvar NEWTON_MIN_SLOPE = 0.001;\nvar SUBDIVISION_PRECISION = 0.0000001;\nvar SUBDIVISION_MAX_ITERATIONS = 10;\n\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\nvar float32ArraySupported = typeof Float32Array === 'function';\n\nfunction A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\nfunction B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\nfunction C (aA1)      { return 3.0 * aA1; }\n\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nfunction calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }\n\n// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\nfunction getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }\n\nfunction binarySubdivide (aX, aA, aB, mX1, mX2) {\n  var currentX, currentT, i = 0;\n  do {\n    currentT = aA + (aB - aA) / 2.0;\n    currentX = calcBezier(currentT, mX1, mX2) - aX;\n    if (currentX > 0.0) {\n      aB = currentT;\n    } else {\n      aA = currentT;\n    }\n  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n  return currentT;\n}\n\nfunction newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n   var currentSlope = getSlope(aGuessT, mX1, mX2);\n   if (currentSlope === 0.0) {\n     return aGuessT;\n   }\n   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n   aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\n\nfunction LinearEasing (x) {\n  return x;\n}\n\nmodule.exports = function bezier (mX1, mY1, mX2, mY2) {\n  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {\n    throw new Error('bezier x values must be in [0, 1] range');\n  }\n\n  if (mX1 === mY1 && mX2 === mY2) {\n    return LinearEasing;\n  }\n\n  // Precompute samples table\n  var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n  for (var i = 0; i < kSplineTableSize; ++i) {\n    sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n  }\n\n  function getTForX (aX) {\n    var intervalStart = 0.0;\n    var currentSample = 1;\n    var lastSample = kSplineTableSize - 1;\n\n    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n      intervalStart += kSampleStepSize;\n    }\n    --currentSample;\n\n    // Interpolate to provide an initial guess for t\n    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n    var guessForT = intervalStart + dist * kSampleStepSize;\n\n    var initialSlope = getSlope(guessForT, mX1, mX2);\n    if (initialSlope >= NEWTON_MIN_SLOPE) {\n      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n    } else if (initialSlope === 0.0) {\n      return guessForT;\n    } else {\n      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n    }\n  }\n\n  return function BezierEasing (x) {\n    // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n    if (x === 0) {\n      return 0;\n    }\n    if (x === 1) {\n      return 1;\n    }\n    return calcBezier(getTForX(x), mY1, mY2);\n  };\n};\n"],"names":["plugins","require","getResourceURLsForPathname","loadPage","loadPageSync","exports","api","args","defaultReturn","argTransform","results","map","plugin","result","options","filter","length","reduce","previous","next","then","Promise","resolve","Object","defineProperty","value","_createClass","defineProperties","target","props","i","descriptor","enumerable","configurable","writable","key","Constructor","protoProps","staticProps","prototype","_react2","_interopRequireDefault","_scrollLink2","obj","__esModule","default","ButtonElement","_React$Component","instance","TypeError","_classCallCheck","this","self","call","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","apply","arguments","subClass","superClass","create","constructor","setPrototypeOf","_inherits","createElement","children","Component","k","l","stream","n","Map","p","Symbol","for","q","r","t","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ContextRegistry","v","a","b","c","_status","_value","_response","w","JSON","parse","_fromJSON","chunks","d","e","get","__webpack_require__","id","name","x","y","z","A","C","D","_chunks","forEach","set","F","Error","G","indexOf","parseInt","substring","f","_bundlerConfig","h","g","B","m","bind","J","createServerContext","u","Provider","message","stack","H","$$typeof","_payload","_init","E","type","ref","_owner","I","TextDecoder","readRoot","_partialRow","_stringDecoder","K","getReader","read","done","subarray","decode","push","createFromReadableStream","moduleMap","module","condition","format","error","undefined","argIndex","replace","framesToPop","matchOperatorsRe","str","Layout","React","GATSBY_LAYOUT_COMPONENT_PATH","toString","console","_ref","element","window","location","protocol","hostname","navigator","serviceWorker","register","reg","addEventListener","apiRunner","installingWorker","installing","log","state","controller","___swUpdated","___failedResources","reload","catch","_extends","assign","source","hasOwnProperty","_utils2","_animateScroll2","_scrollEvents2","__mapped","__activeLink","unmount","unregister","document","getElementById","getElementsByName","getElementsByClassName","setActiveLink","link","getActiveLink","scrollTo","to","containerId","absolute","container","containerElement","nodeType","horizontal","scrollOffset","offset","smooth","registered","scrollTop","animateTopScroll","warn","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","context","_this","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","status","nextCallback","getDerivedStateFromProps","prevState","_proto","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","mounting","node","nodeRef","current","performEnter","performExit","setState","_this2","appearing","_ref2","maybeNode","maybeAppearing","timeouts","enterTimeout","config","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","_this4","active","event","handler","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","setTimeout","render","_this$props","childProps","TransitionGroupContext","only","noop","contextType","propTypes","defaultProps","_passiveEventListeners","events","subscribe","cancelEvent","addPassiveEventListener","pageResources","loader","pathname","InternalPageRenderer","json","wrapPageElement","scrollSpy","defaultScroller","PropTypes","scrollHash","protoTypes","string","isRequired","object","activeClass","spy","bool","oneOfType","number","delay","isDynamic","onClick","func","duration","onSetActive","onSetInactive","ignoreCancelEvents","hashSpy","spyThrottle","Helpers","Scroll","customScroller","scroller","_initialiseProps","scrollSpyContainer","getScrollSpyContainer","isMounted","mount","mapContainer","addStateHandler","stateHandler","addSpyHandler","spyHandler","className","trim","prop","handleClick","stopPropagation","preventDefault","isInitialized","elemTopBound","elemBottomBound","containerTop","getBoundingClientRect","top","cords","height","offsetY","isInside","Math","floor","isOutside","activeLink","getHash","changeHash","updateStates","Element","_React$Component2","childBindings","domNode","registerElems","parentBindings","Events","scrollEvent","evtName","remove","respectDNT","productionOnly","SlicesResultsContext","SlicesContext","SlicesMapContext","SlicesPropsContext","onInitialClientRender","forceReflow","onRouteUpdate","pluginOptions","_defaultOptions","Array","isArray","_hsq","trackPageView","path","search","hash","requestAnimationFrame","getElementOffsetInfoUntil","predicate","offsetTop","currentOffsetParent","offsetParent","updateHash","historyUpdate","hashVal","hashToUpdate","curLoc","urlToPush","history","pushState","replaceState","filterElementInContainer","contains","compareDocumentPosition","left","scrollX","pageXOffset","getComputedStyle","position","offsetLeft","scrollY","pageYOffset","_getElementOffsetInfo","isDocument","ScrollHandler","ScrollContext","_assertThisInitialized2","_inheritsLoose2","nodeInterop","cache","_getRequireWildcardCache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","_interopRequireWildcard","_propTypes","_sessionStorage","WeakMap","cacheBabelInterop","cacheNodeInterop","createContext","SessionStorage","displayName","_len","_key","concat","_stateStorage","_isTicking","_latestKnownScrollY","scrollListener","_saveScroll","windowScroll","shouldUpdateScroll","scrollToHash","scrollIntoView","prevRouterProps","routerProps","save","scrollPosition","_this$props$location","decodeURI","removeEventListener","_this$props$location2","getForwards","collectedScripts","flatMap","script","forward","_utils","mountFlag","initialized","containers","handleHashChange","initStateFromHash","isInit","saveHashHistory","listOfMetricsSend","Set","debounce","fn","timer","clearTimeout","sendWebVitals","dataLayerName","win","sendData","data","add","dataLayer","webVitalsMeasurement","round","sendToGTM","getLCP","getFID","getCLS","debouncedCLS","debouncedFID","debouncedLCP","_","eventName","routeChangeEventName","enableWebVitalsTracking","_setPrototypeOf","slashedPathname","routeThroughBrowserOrApp","hrefHandler","button","altKey","ctrlKey","metaKey","shiftKey","userIsForcingNavigation","defaultPrevented","navigationWasHandledElsewhere","clickedAnchor","parentNode","nodeName","toLowerCase","findClosestAnchor","anchor","hasAttribute","includes","ownerDocument","defaultView","parent","anchorsTargetIsEquivalentToSelf","destination","href","SVGAnimatedString","animVal","origin","urlsAreOnSameOrigin","host","pathStartRegEx","RegExp","escapeStringRegexp","withPrefix","pathIsNotHandledByApp","test","hashShouldBeFollowed","excludePattern","destinationPathname","onClientEntry","root","cb","clickHandler","catchLinks","navigate","useScrollRestoration","identifier","_reachRouter","useLocation","_react","useContext","_scrollHandler","useRef","useLayoutEffect","onScroll","_scrollElement2","_propTypes2","ElementWrapper","newProps","el","listener","listenerName","attachedListeners","listeners","supportsPassiveOption","opts","passive","removePassiveEventListener","delete","convertObjectToCamelCase","o","newO","origKey","newKey","charAt","slice","now","Date","month","getMonth","day","getDate","nowDateString","getFullYear","join","getPropertyDetails","property","yardiData","propertyName","streetAddress1","streetAddress2","city","postcode","propertyType","getUnitDetails","unit","unitId","unitCode","unitName","convertName","unitType","convertUnitType","building","convertFloor","rentalType","area","marketRent","Number","toFixed","dateLeased","convertCmsDate","convertYardiDate","availabilityDate","code","output","date","convertDoubleDigitDate","dateParts","split","getDisplayUnits","units","filterBoolean","item","showUnit","sort","getPropertyName","details","getPropertyAddress","address","getPropertyCertifications","parts","certifications","last","pop","getPropertyType","_property$units","getPropertySize","_units","min","sum","getUnitSizeRange","toLocaleString","_units2","sizes","_getUnitDetails","trunc","partialSum","getPropertyArea","max","isValidLat","lat","isValidLng","lng","getDistanceInKm","dLat","deg2rad","dLon","sin","cos","atan2","sqrt","deg","PI","checkFullyLeased","fullyLeased","getAllAvailabilityDates","_property$units2","development","availabilityLabel","nonYardi","currentAvailabilityDate","_property$units3","_getUnitDetails2","earliestAvailability","currentAvailability","formatAvailability","getUnitAvailability","_units3","addMonths","input","months","setDate","setMonth","getDaysInMonth","year","dateString","isNaN","getTime","_lodash","_lodash2","spyCallbacks","spySetState","scrollSpyContainers","throttle","eventHandler","throttleAmount","eventThrottler","scrollHandler","splice","currentPositionX","supportPageOffset","isCSS1Compat","compatMode","documentElement","scrollLeft","body","currentPositionY","s","update","GATSBY_ROUTER_SCROLL_STATE","stateKey","getStateKey","sessionStorage","getItem","storedValue","stringify","setItem","stateKeyBase","_arrayLikeToArray","_toConsumableArray","iterator","from","_gatsby","SCRIPT_TYPE","partytownSnippet","snippetCode","filteredConfig","configStr","String","startsWith","keys","createSnippet","ValidCSSEffects","Units","RotationUnits","ScaleUnits","ScrollAxis","EasingPreset","Limits","properties","startX","startY","endX","endY","totalX","totalY","startMultiplierX","endMultiplierX","startMultiplierY","endMultiplierY","Rect","rect","view","scrollContainer","scrollRect","right","bottom","offsetHeight","width","offsetWidth","rootMargin","_setRectWithRootMargin","totalRootY","totalRootX","VALID_UNITS","px","turn","rad","defaultUnit","out","parseFloat","match","easingPresets","ease","easeIn","easeOut","easeInOut","easeInQuad","easeInCubic","easeInQuart","easeInQuint","easeInSine","easeInExpo","easeInCirc","easeOutQuad","easeOutCubic","easeOutQuart","easeOutQuint","easeOutSine","easeOutExpo","easeOutCirc","easeInOutQuad","easeInOutCubic","easeInOutQuart","easeInOutQuint","easeInOutSine","easeInOutExpo","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","createEasingFunction","easing","params","PARALLAX_EFFECTS","values","MAP_EFFECT_TO_DEFAULT_UNIT","speed","translateX","translateY","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","opacity","parseElementTransitionEffects","scrollAxis","parsedEffects","defaultValue","endSpeed","startParsed","endParsed","speedConfig","start","end","vertical","_startParsed","_endParsed","getProgressAmount","totalDist","currentScroll","amount","scaleEffectByProgress","effect","progress","newMin","newMax","oldMin","oldMax","scaleBetween","TRANSFORM_EFFECTS","setElementStyles","effects","transform","acc","scaledEffect","getTransformStyles","scaledOpacity","getOpacityStyles","style","resetStyles","getTranslateScalar","startTranslatePx","endTranslatePx","slow","totalDistTrue","abs","getStartEndValueInPx","translate","elementSize","startScale","endScale","innerWidth","_startScale","_endScale","innerHeight","DEFAULT_VALUE","clamp","num","willChange","disabledParallaxController","isInView","_setElementEasing","updateProps","nextProps","setCachedAttributes","scroll","targetElement","shouldScaleTranslateEffects","shouldDisableScalingTranslations","startScroll","endScroll","limits","_setElementStyles","shouldAlwaysCompleteAnimation","_getStartEndValueInPx","startTranslateXPx","endTranslateXPx","_getStartEndValueInPx2","startTranslateYPx","endTranslateYPx","topBeginsInView","leftBeginsInView","bottomEndsInView","scrollHeight","rightEndsInView","scrollWidth","createLimitsWithTranslationsForRelativeElements","scaledEffects","effectsCopy","scaleTranslateEffectsForSlowerScroll","createLimitsForRelativeElements","_updateElementIsInView","nextIsInView","isFirstChange","_setFinalProgress","finalProgress","_updateElementProgress","disabled","nextProgress","onProgressChange","onChange","updateElementOptions","updatePosition","isVertical","total","isElementInView","View","hasChanged","setSize","dx","dy","setScroll","ParallaxController","_ref$scrollAxis","_ref$disabled","elements","_hasScrollContainer","viewEl","_this$_getScrollPosit","_getScrollPosition","_ticking","_supportsPassive","testForPassiveScroll","_bindAllMethods","_addListeners","_addResizeObserver","_setViewSize","init","method","_handleScroll","_handleUpdateCache","_removeListeners","_this$_resizeObserver","_resizeObserver","disconnect","observedEl","ResizeObserver","observe","_this$elements","_this$_getScrollPosit2","nx","ny","_updateAllElements","updateCache","_temp","_updateElementPosition","_getViewParams","_width","_height","_scrollHeight","_scrollWidth","html","clientWidth","clientHeight","_checkIfViewHasChanged","getElements","newElement","removeElementById","updateElementPropsById","resetElementStyles","_this$_getScrollPosit3","updateScrollContainer","disableParallaxController","enableParallaxController","disableAllElements","enableAllElements","destroy","_objectWithoutPropertiesLoose","excluded","sourceKeys","_excluded","getIsolatedParallaxProps","rest","parallaxProps","ParallaxContext","useParallaxController","parallaxController","useParallax","useEffect","useVerifyController","_useState","useState","setElement","HTMLElement","createController","ParallaxProvider","isDisabled","_getPrototypeOf","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","_wrapNativeSuper","Function","Wrapper","ServerSliceRenderer","sliceId","contents","ServerSlice","sliceName","allowEmpty","sliceProps","slicesMap","slicesProps","concreteSliceName","getSliceId","createContentDigest","sliceUsage","hasChildren","InlineSlice","slicesResultsMap","component","sliceContext","Slice","internalProps","alias","__renderedByLocation","slicesContext","propErrors","validateSliceProps","SlicePropsError","renderEnvironment","additionalContextMessage","sliceRoot","componentPath","_Error","inBrowser","renderedByLocation","errors","entries","stackLines","ReactDebugCurrentFrame","getCurrentStack","captureStackTrace","forcedLocation","functionName","_inheritsLoose","seenObjects","propPath","prefetchPathname","enqueue","graphql","_scrollSpy2","_scroller2","_scrollHash2","activeStyle","Link","_React$PureComponent","beforeUnmountCallbacks","PureComponent","elemLeftBound","elemRightBound","containerLeft","offsetX","_cords","_props$saveHashHistor","_props$saveHashHistor2","_saveHashHistory","requestIdleCallback","didTimeout","timeRemaining","postHydrate","idle","offMainThread","src","strategy","loadCallback","errorCallback","crossOrigin","dangerouslySetInnerHTML","__html","onLoad","onError","load","callbacks","dataset","setAttribute","textContent","appendChild","encodeURIComponent","FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","leadingEdge","toNumber","isObject","flush","isObjectLike","isSymbol","other","isBinary","intersectArrays","arrA","arrB","symDiffArrays","removeDuplicates","arr","getFirstArrayItem","empty","getConfigRefs","items","contentTypes","_x$internal","internal","getFirstConfigRef","FireCallbackInEffect","VALID_NODE_NAMES","isEqualNode","oldTag","newTag","nonce","getAttribute","cloneTag","cloneNode","getValidHeadNodesAndAttributes","rootNode","htmlAndBodyAttributes","seenIds","validHeadNodes","childNodes","_node$attributes","_node$attributes$id","attributes","isElementType","isValidNodeName","attribute","isStyleAttribute","_htmlAndBodyAttribute","clonedNode","massageScript","_validHeadNodes$index","indexOfPreviouslyInsertedNode","removeChild","attr","innerHTML","hiddenRoot","keysOfHtmlAndBodyAttributes","onHeadRendered","_document$head2","htmlElement","querySelector","attributeName","attributeValue","bodyElement","applyHtmlAndBodyAttributes","existingHeadElements","querySelectorAll","_document$head","head","append","newHeadNodes","oldNodes","newNodes","onStale","onNew","existingHeadElement","indexInNewNodes","findIndex","newNode","diffNodes","headHandlerForBrowser","pageComponent","staticQueryResults","pageComponentProps","Head","headExportValidator","reactDOMUtils","HeadElement","serverData","pageContext","WrapHeadElement","StaticQueryContext","LocationProvider","prevHeadNodes","removePrevHeadElements","htmlAndBodyattributeList","removeAttribute","removeHtmlAndBodyAttributes","PageRenderer","grabMatchParams","__params","pageElement","partialHydration","page","cartName","VALIDATION","fetchCart","async","storageCart","fetchLocalStorageCart","storageData","localStorage","validation","cartItems","sumItems","saveLocalStorageCart","itemCount","CartReducer","action","_cartItems","_cartItems2","_state$cartItems","_state$cartItems2","payload","loaded","propertyId","dispatch","useReducer","initialCartState","response","loadCart","CartContext","addToCart","removeFromCart","clearCart","wrapRootElement","PropertyProvider","ArticleProvider","CaseStudyProvider","CartState","_prevRouterProps$loca","getSavedScrollPosition","locationPath","prevLocationPath","savedPosition","prevLocation","useCart","suffixes","option","hasTrailingSlash","endsWith","suffix","endsWithSuffixes","port","URL","encodeURI","transitioning","_onTransitionComplete","listen","go","substr","index","globalThis","__SERVER_CONTEXT","baseuri","basepath","uri","noThrow","P","R","N","j","route","$","decodeURIComponent","O","exec","U","L","T","S","score","every","M","V","X","forwardRef","innerRef","getProps","isCurrent","isPartiallyCurrent","super","componentDidCatch","W","setError","url","Q","Y","Z","ee","re","te","focus","outline","tabIndex","ne","oe","ae","primary","toArray","se","ie","ce","ue","redirectMap","redirectIgnoreCaseMap","maybeGetBrowserRedirect","redirect","ignoreCase","fromPath","RouteAnnouncerProps","padding","overflow","clip","whiteSpace","border","maybeRedirect","___replace","toPath","nextRoute","reason","onPreRouteUpdate","globalHistory","parsePath","timeoutId","emitter","emit","PageResourceStatus","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","oldPathname","RouteAnnouncer","announcementRef","pageName","title","pageHeadings","newAnnouncement","innerText","compareLocationProps","nextLocation","_prevLocation$state","_nextLocation$state","RouteUpdates","_proto2","shouldComponentUpdate","shallowDiffers","_i","EnsureResources","withErrorDetails","loadResources","rawPath","matchPath","shallowCompare","ProdLoader","asyncRequires","pageData","setLoader","setApiRunner","hydrate","___emitter","___loader","publicLoader","___push","___navigate","reloadStorageKey","apiRunnerAsync","RouteHandler","BaseContext","DataContext","GatsbyRoot","Location","getStaticQueryResults","sliceResults","getSliceResults","LocationHandler","Consumer","Router","__BASE_PATH__","stripPrefix","pagePath","browserLoc","findMatchPath","getSessionStorage","_page$page","removeItem","SiteRoot","_ref4","App","onClientEntryRanRef","performance","mark","focusEl","defaultRenderer","renderer","runRender","rootElement","doc","readyState","doScroll","supportedPrefetchStrategy","feature","fakeLink","relList","supports","err","support","reject","onload","onerror","getElementsByTagName","req","XMLHttpRequest","open","send","preFetched","Success","createPageDataUrl","maybeSearch","shouldAbortFetch","doFetch","onreadystatechange","BOT_REGEX","toPageResources","_pageData$slicesMap","componentChunkName","staticQueryHashes","getServerDataError","waitForResponse","BaseLoader","loadComponent","matchPaths","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","partialHydrationDb","slicesDataDb","sliceInflightDb","slicesDb","isPrefetchQueueRunning","prefetchQueued","prefetchTriggered","prefetchCompleted","setMatchPaths","memoizedGet","inFlightPromise","prefetchDisabled","some","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","notFound","internalServerError","fetchPartialHydrationJson","loadPageDataJson","findPath","loadPartialHydrationJson","loadSliceDataJson","res","loadDataPromises","loadAppData","all","allData","appDataResponse","pageDataResponse","rscDataResponse","pageStaticQueryHashes","finalResult","dedupedSliceNames","loadSlice","inFlight","slicesData","slices","dedupedStaticQueryHashes","staticQueryHash","loadChunkPromises","componentChunkPromises","components","sliceComponents","headComponent","createdAt","sliceComponent","readableStream","ReadableStream","TextEncoder","encode","pull","close","staticQueryBatchPromise","staticQueryResultsMap","_options","shouldPrefetch","doesConnectionSupportPrefetch","connection","effectiveType","saveData","userAgent","prefetch","abort","defer","promise","abortC","AbortController","signal","_processNextPrefetchBatch","toPrefetch","prefetches","dPromise","doPrefetch","pageDataUrl","prefetchHelper","as","hovering","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","_BaseLoader2","chunkName","exportType","componentUrls","_loader","_Link2","_Button2","_Element2","_Helpers2","component---src-pages-404-tsx","component---src-templates-article-article-tsx","component---src-templates-case-study-case-study-tsx","component---src-templates-content-content-tsx","component---src-templates-leasing-leasing-tsx","component---src-templates-pdf-property-list-pdf-property-list-pdf-tsx","component---src-templates-pdf-property-pdf-property-pdf-tsx","component---src-templates-property-property-tsx","slice---src-components-layout-footer-footer-tsx","slice---src-components-layout-header-header-tsx","_useScrollRestoration","activeClassName","partiallyActive","_location","defaultGetProps","IntersectionObserver","IOSupported","abortPrefetch","handleRef","_prefetch","io","unobserve","isIntersecting","intersectionRatio","onMouseEnter","StaticQueryDataRenderer","staticQueryData","query","finalData","StaticQuery","useStaticQuery","_context$query","_smooth2","_cancelEvents2","getAnimationType","defaultEasing","requestAnimationFrameHelper","webkitRequestAnimationFrame","currentWindowProperties","animateScroll","timestamp","delta","targetPosition","startPosition","percent","currentPosition","ceil","easedAnimate","setContainer","delayTimeout","proceedOptions","scrollToTop","scrollToBottom","scrollContainerWidth","scrollContainerHeight","toPosition","scrollMore","initialState","propertyData","propertyItems","setPropertyData","Context","useProperty","PROPERTY_API_URL","cleanApiURL","process","UNIT_API_URL","ContextValue","useMemo","setProperties","setUnits","isPreview","fetch","headers","preview","pow","linear","caseStudyData","caseStudyItems","setCaseStudyData","useCaseStudies","API_URL","getChildMapping","mapFn","Children","child","isValidElement","mapper","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","TransitionGroup","handleExited","_assertThisInitialized","contextValue","firstRender","mounted","currentChildMapping","childFactory","getTransitionStyles","entering","entered","transition","exiting","ReactTransition","SvgSprite","xmlns","viewBox","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SvgSpriteButtons","isPDF","locationKey","ParallaxRouteUpdate","prefix","pathAndSearch","pathCache","trimPathname","rawPathname","newRawPathname","qs","absolutify","trimmedPathname","cleanPath","pickPaths","originalPath","pick","normalizePagePath","foundPath","articleData","articleItems","setArticleData","useArticles","injectPartytownSnippet","existingSnippet","existingSandbox","forwards","_getForwards","snippet","partytown","_integration","LinkElement","on","off","evt","mitt","buildBreadcrumbs","parentPage","slug","label","listingTitle","heading","rootUrl","buildPagePath","getPrettyURL","_urlParts$shift","urlParts","prettyUrl","shift","_page$internal","getPageSlugWithPrefix","getLinkData","_asset$file","asset","newWindow","noIndex","noFollow","queryString","file","isExternal","reactDomClient","createRoot","hydrateRoot","kSampleStepSize","float32ArraySupported","Float32Array","aA1","aA2","calcBezier","aT","getSlope","LinearEasing","mX1","mY1","mX2","mY2","sampleValues","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide"],"sourceRoot":""}